Commit Graph

  • 987de239ee docs: add "Creating a Service" guide imSp4rky 2026-06-30 14:43:33 -06:00
  • 140c2a4b2f docs(readme): link Docs to docs.unshackle.dev, remove Wiki imSp4rky 2026-06-30 10:54:49 -06:00
  • 2f92ffe1a2 ci(docs): serve site from docs.unshackle.dev custom domain imSp4rky 2026-06-30 10:40:43 -06:00
  • ecbcdff314 docs: add MkDocs Material documentation site imSp4rky 2026-06-30 10:28:48 -06:00
  • 03bcfc0c45 perf(hls): rename single decrypted range instead of re-copying imSp4rky 2026-06-29 09:55:08 -06:00
  • efb560f887 fix(hls): stream segment merges to avoid OOM on large tracks imSp4rky 2026-06-29 09:31:38 -06:00
  • 39f5bc2a9e feat(proxies): add ProtonVPN TV login, drop cookie refresh imSp4rky 2026-06-28 18:42:11 -06:00
  • f9ab349e9c perf(tracks): skip redundant DV/VUI bitstream passes imSp4rky 2026-06-28 15:40:19 -06:00
  • b6fe0ae4b8 fix(dl): apply per-service decryption tool override imSp4rky 2026-06-28 14:48:16 -06:00
  • a0feb51d5a fix(console): pause active live contexts during terminal input (#127) CodeName393 2026-06-27 01:01:18 +09:00
  • 2ed243aae4 fix(output): treat / and \ as folder separators on any OS sp4rk.y 2026-06-25 16:03:27 -06:00
  • 4539f63106 fix(env): only resolve Path items in directory lists sp4rk.y 2026-06-25 14:00:48 -06:00
  • 5d4a27b8ca style: apply pre-commit auto-fixes (isort, whitespace, eof) imSp4rky 2026-06-25 11:06:55 -06:00
  • 06e0593da3 fix(drm): don't switch to a mismatched CDM type during licensing imSp4rky 2026-06-25 11:05:18 -06:00
  • e96e9be143 feat(output): support nested directories in folder templates imSp4rky 2026-06-25 10:40:49 -06:00
  • 14c96371b9 feat(proxies): add Proton VPN proxy provider imSp4rky 2026-06-24 22:11:51 -06:00
  • 66638ead6b feat(services): load service plugins from git repos imSp4rky 2026-06-24 08:59:03 -06:00
  • 6294566823 fix(config): match per-service cdm keys case-insensitively imSp4rky 2026-06-22 16:50:59 -06:00
  • ce69e8a028 docs(config): make docs/ canonical, slim unshackle-example.yaml to a starter imSp4rky 2026-06-21 21:23:03 -06:00
  • 605c0e65cb feat(docs): add per-vault network timeout configuration for remote vaults imSp4rky 2026-06-21 20:57:17 -06:00
  • ecf0bf41ab feat(vaults): add configurable network timeout for remote vaults imSp4rky 2026-06-21 20:39:37 -06:00
  • 3f5b5e0fe1 refactor(api): drop dead error codes, lock error contract harness imSp4rky 2026-06-21 14:13:44 -06:00
  • 2f86d782bf fix(api): annotate routes.py to pass strict mypy imSp4rky 2026-06-21 13:58:23 -06:00
  • d4b0c81c63 refactor(api): collapse route registration into single ROUTES table imSp4rky 2026-06-21 13:47:23 -06:00
  • 9cb20693e0 refactor(api): use Event.wait and a shared to_enum helper imSp4rky 2026-06-21 13:31:08 -06:00
  • fb90cd87b0 refactor(api): dedup handler serializers, validation, and service setup imSp4rky 2026-06-21 13:23:22 -06:00
  • 8a9a1e1bdc refactor(api): remove dead code paths in serve/remote layer imSp4rky 2026-06-21 13:07:45 -06:00
  • 40eafce17b feat(api): expose active-track segment counts and transfer speed in job progress (#124) AviDev 2026-06-21 21:40:16 +03:00
  • 733cb02391 feat(api): expose title description, date and cover_url in serialize_title (#119) AviDev 2026-06-21 21:38:27 +03:00
  • 5b724b48f8 feat: add automatic Firefox cookie and localstorage extraction (#112) sk8ordi3 2026-06-21 20:26:17 +02:00
  • a2f670b140 feat: support Python 3.14 and widen range to 3.11-3.14 imSp4rky 2026-06-20 15:25:42 -06:00
  • a9c677c349 feat: Native ExpressVPN HTTPS Proxy Provider (#126) 2026-06-17 18:51:33 -04:00
  • ba69bc7d61 feat(dl): add --merge-video to merge video language variants imSp4rky 2026-06-17 13:31:21 -06:00
  • 2e1ffebec0 docs: rename to match other docs. imSp4rky 2026-06-15 20:55:27 -06:00
  • 1b27b10746 chore(release): bump version to 5.2.0 5.2.0 imSp4rky 2026-06-15 20:52:22 -06:00
  • b29ad6bc0d ci: remove release automation workflows imSp4rky 2026-06-15 20:46:56 -06:00
  • 78a6a97fcf feat(music): native music core - shared helpers, album folder template, display cleanup (#125) sp4rk.yandMrMovies-Dev 2026-06-15 13:34:34 -06:00
  • 680f5059b5 fix(subtitle): drive SubtitleEdit 4.x with legacy /convert syntax imSp4rky 2026-06-11 19:09:06 -06:00
  • e207116d30 fix(ism): derive video colour range from CodecPrivateData SPS VUI imSp4rky 2026-06-11 18:28:35 -06:00
  • 39034f2bb5 fix(ism): rebuild moov init segment for Smooth Streaming decrypt imSp4rky 2026-06-11 13:41:58 -06:00
  • 466bf610cc feat(drm): add native DASH ClearKey (org.w3.clearkey) support imSp4rky 2026-06-11 12:26:57 -06:00
  • dd1633e603 test(export): pin DRM-free export round-trip through ImportService imSp4rky 2026-06-11 10:28:57 -06:00
  • 57a5d4269a fix(dl): export DRM-free, ClearKey, MonaLisa and server-CDM tracks imSp4rky 2026-06-11 09:36:58 -06:00
  • 0ebe33869b ci(release): add daily automated version bump and changelog workflow imSp4rky 2026-06-10 18:48:37 +00:00
  • 5337639035 feat(logging): add debug_requests flag and aggregate subtitle-conversion logs imSp4rky 2026-06-09 22:26:35 -06:00
  • 394ed67e28 feat(logging): expand debug-logging coverage, add primitives, redaction & tests imSp4rky 2026-06-09 22:12:05 -06:00
  • 7064d261c2 fix(security): sanitize logs, redact secrets, harden XML parsing imSp4rky 2026-06-09 19:08:41 -06:00
  • 2d43c2601e chore(deps): bump subby to 0.3.30 and pycaption to 2.2.22 imSp4rky 2026-06-09 18:49:16 -06:00
  • 246ff528f5 fix(dl): apply per-service dl config overrides for all options imSp4rky 2026-06-09 18:17:29 -06:00
  • 2f35a4d468 feat(api): aggregate REST download progress with weighting, track labels and mux stage imSp4rky 2026-06-08 15:37:40 -06:00
  • 1a3cd09fc8 fix(api): repair REST API downloads, add /services flags & live progress (#113) AviDevandAvi Cohen 2026-06-08 20:38:08 +03:00
  • 79b884fb6b feat(subtitle): support 'original' sub_format to keep source format imSp4rky 2026-06-07 22:35:49 -06:00
  • 29232925d5 feat(subtitle): data-driven conversion registry + SubtitleEdit 5 support imSp4rky 2026-06-07 22:21:25 -06:00
  • e6613e8ed8 Merge branch 'dev' of https://github.com/unshackle-dl/unshackle into dev imSp4rky 2026-06-07 16:00:43 -06:00
  • ce0d9d8355 feat(vault): add VAULT_TAG to share key vault across services imSp4rky 2026-06-07 15:59:59 -06:00
  • 27c8fcdae1 Merge pull request #116 from avi-dev-user/subtitle-nonfatal sp4rk.y 2026-06-07 12:56:48 -06:00
  • d109fe63eb fix(dl): mux hybrid ingredients standalone only when range explicitly requested imSp4rky 2026-06-06 16:01:54 -06:00
  • 4a543c59e6 fix(dl): mux hybrid ingredients standalone only when range explicitly requested imSp4rky 2026-06-06 16:01:54 -06:00
  • 4fdffc9435 refactor(dl): type the two-pass download helper + pin skipped_subtitles shape Avi Cohen 2026-06-06 09:27:21 +03:00
  • 51fbc33979 Merge pull request #115 from avi-dev-user/clearkey-aes128 sp4rk.y 2026-06-05 16:26:09 -06:00
  • c03ff01c32 fix(core): replace deprecated ast.Num visitor in FPS parser imSp4rky 2026-06-05 15:21:39 -06:00
  • 23cc8c9ec9 refactor(cli): replace deprecated click.MultiCommand with click.Group imSp4rky 2026-06-05 15:17:55 -06:00
  • 6ae0fc2c81 Merge pull request #114 from unshackle-dl/dependabot/uv/aiohttp-3.14.0 sp4rk.y 2026-06-05 15:06:12 -06:00
  • 73d2cbccf8 style: use plain hyphens instead of em-dashes in comments Avi Cohen 2026-06-05 18:25:14 +03:00
  • 6a9b9238ba style: use plain hyphens instead of em-dashes in comments Avi Cohen 2026-06-05 18:25:14 +03:00
  • 41fef5d33a fix(dl): make a failed subtitle non-fatal under --skip-subtitle-errors Avi Cohen 2026-06-04 07:55:03 +03:00
  • 9590c54c33 fix(hls): decrypt AES-128 (ClearKey) media-playlist keys + per-segment sequence IV Avi Cohen 2026-06-04 04:22:01 +03:00
  • a79cf2b5ee chore(deps): bump aiohttp from 3.13.5 to 3.14.0 dependabot[bot] 2026-06-04 00:21:47 +00:00
  • 3dcc584b2f chore(changelog): update changelog and cleanup readme 5.1.0 imSp4rky 2026-06-03 11:11:23 -06:00
  • 538deac63e fix(session): proxy auth on http targets and string params support imSp4rky 2026-05-30 18:13:55 +00:00
  • 0561623825 docs: simplify README with demo and requirements imSp4rky 2026-05-29 19:01:57 -06:00
  • 4ce0dd5bb9 chore(changelog): update version date and add new features and fixes for 5.1.0 imSp4rky 2026-05-29 18:27:31 -06:00
  • 191c4f47e0 refactor: remove dead aria2c and n_m3u8dl_re downloader code imSp4rky 2026-05-29 18:25:56 -06:00
  • accfe9cee1 refactor(dl): declare hybrid_base_only flag and extract standalone mux helper imSp4rky 2026-05-29 17:13:29 -06:00
  • 5899c1eec8 refactor(example): showcase full unshackle feature surface imSp4rky 2026-05-29 12:54:37 -06:00
  • 6bc601db39 fix(dl): mux all requested ranges and select highest DV alongside hybrid imSp4rky 2026-05-28 21:25:30 -06:00
  • fb8dc0bd9d refactor(ip_info): simplify lookup and trim cache imSp4rky 2026-05-27 22:48:39 -06:00
  • 40104be738 fix(dash): inherit SegmentTemplate attributes across AdaptationSet/Representation imSp4rky 2026-05-27 12:12:42 -06:00
  • 96fd971af0 feat(import): include cover-art attachments in --export/--import imSp4rky 2026-05-26 17:37:44 -06:00
  • 1cb0e4b766 feat(naming): per-service title_map remapping (#106) imSp4rky 2026-05-26 14:08:52 -06:00
  • f4544b4a70 fix(hls): resolve per-rendition KID in no-EXT-X-KEY fallback imSp4rky 2026-05-26 14:04:06 -06:00
  • f1febe7e43 chore(release): bump version to 5.1.0 imSp4rky 2026-05-26 10:54:14 -06:00
  • b3a6db915b fix(cli): report broken command/service loads once and cleanly imSp4rky 2026-05-25 19:50:11 -06:00
  • 5e3ffdeaa1 fix(hybrid): correct static L6 source and reset stale L5 active area imSp4rky 2026-05-25 17:04:50 -06:00
  • 7017bd0460 feat(import): reconstruct downloads from an --export sidecar imSp4rky 2026-05-24 21:17:31 -06:00
  • 13f924f825 feat(dl): add real bitrate probing (-rvb/-rab) imSp4rky 2026-05-24 17:30:40 -06:00
  • 7654e91ebc feat(dl): gate s_lang/a_lang miss behind --best-available imSp4rky 2026-05-22 13:52:35 -06:00
  • b0ae88812c fix(vaults): enable WAL on SQLite vault to fix concurrent locks imSp4rky 2026-05-21 23:00:39 +00:00
  • 746b573711 test(remote): add unit + e2e suite for remote-services subsystem imSp4rky 2026-05-21 10:45:25 -06:00
  • 9c905ef7a3 fix(api): load real CDM for service init in list/session/download flows imSp4rky 2026-05-21 10:31:52 -06:00
  • c19a5ebdd2 fix(api): propagate Click default=None through service instantiation imSp4rky 2026-05-21 08:49:16 -06:00
  • d2380cff97 feat(dl): live countdown for --slow delay imSp4rky 2026-05-18 13:33:46 -06:00
  • 684e56eb97 feat(tracks): configurable audio codec priority for tie-breaking imSp4rky 2026-05-18 11:08:55 -06:00
  • 900ad1fde1 fix(titles): normalize odd resolutions in filename quality token imSp4rky 2026-05-17 19:06:53 -06:00
  • 64da561534 feat(vaults): tolerate vault failures during key get/add imSp4rkyandCodeName393 2026-05-17 12:18:32 -06:00
  • 13dcd7aa1a Merge pull request #109 from JohnVeness/seasons sp4rk.y 2026-05-17 12:03:54 -06:00
  • 61fe16e8d7 feat(api): sync /api/download with dl CLI flags and add serve.* defaults imSp4rky 2026-05-17 11:54:02 -06:00
  • e5a287bc14 episode.py: season/seasons pluralization John Veness 2026-05-17 15:06:55 +01:00
  • 34a6e2d8e2 fix(service): render request_input prompt via rich console imSp4rky 2026-05-16 16:43:47 -06:00
  • f26f9bcbe2 feat(video): normalize SPS VUI to match manifest-derived range imSp4rky 2026-05-16 13:55:05 -06:00