Commit Graph
2695 Commits
Author SHA1 Message Date
4gray 2e243cc4af docs(downloads): plan offline detail views 2026-08-01 16:29:50 +02:00
4gray 8c643d04ba docs(downloads): design offline detail views 2026-08-01 16:29:50 +02:00
4gray 51d80c5c0c feat(downloads): finish missing-file recovery 2026-08-01 16:29:50 +02:00
4gray 5808511658 test(downloads): cover missing-file and series journeys 2026-08-01 16:29:50 +02:00
4gray 63b87da5f3 refactor(downloads): simplify ready cards 2026-08-01 16:29:50 +02:00
4gray 8a5b29ea4d feat(downloads): surface missing files for recovery 2026-08-01 16:29:50 +02:00
4gray 596f5a8d4d feat(downloads): separate missing files from ready media 2026-08-01 16:29:50 +02:00
4gray 2899091b74 feat(downloads): refresh missing local files 2026-08-01 16:29:50 +02:00
4gray 8a685ebf20 feat(downloads): recover missing completed files 2026-08-01 16:29:50 +02:00
4gray bd61426d8e feat(downloads): derive completed file availability 2026-08-01 16:29:50 +02:00
4gray 263f0f3d52 docs(downloads): plan missing-file recovery 2026-08-01 16:29:50 +02:00
4gray 830f50dfcd docs(downloads): design missing-file recovery 2026-08-01 16:29:50 +02:00
4gray 55a009c1fe docs(downloads): clarify provider playback availability 2026-08-01 16:29:50 +02:00
4gray 26b20658e3 fix(downloads): keep offline Xtream playback available 2026-08-01 16:29:50 +02:00
4gray 5511d66651 fix(xtream): ignore stale VOD positions 2026-08-01 16:29:50 +02:00
4gray 1d996b85f0 fix(xtream): isolate reused detail identities 2026-08-01 16:29:50 +02:00
4gray 6500807701 docs(downloads): clarify Stalker navigation fallback 2026-08-01 16:29:50 +02:00
4gray 3eda25ac3c fix(downloads): open Stalker items in provider details 2026-08-01 16:29:50 +02:00
4gray 4e7ed33d05 docs(downloads): format detail navigation plan 2026-08-01 16:29:49 +02:00
4gray 823d38bac0 docs(downloads): document offline detail behavior 2026-08-01 16:29:49 +02:00
4gray efbee7cc48 test(downloads): cover offline detail journey 2026-08-01 16:29:49 +02:00
4gray 89e708c591 fix(downloads): prefer local playback in Xtream details 2026-08-01 16:29:49 +02:00
4gray 0313dd7a9b fix(downloads): preserve external launch priority 2026-08-01 16:29:49 +02:00
4gray 95aa73058b fix(downloads): prefer local playback in shared details 2026-08-01 16:29:49 +02:00
4gray 34fa69e6f5 fix(downloads): honor the global cover size 2026-08-01 16:29:49 +02:00
4gray 727ea58bd7 test(downloads): cover pending series navigation 2026-08-01 16:29:49 +02:00
4gray 4f3567e1d0 fix(downloads): open completed movies in details 2026-08-01 16:29:49 +02:00
4gray 5ef5d6713f docs(downloads): plan detail navigation follow-up 2026-08-01 16:29:49 +02:00
4gray 211000a8e3 docs(downloads): clarify detail-first offline behavior 2026-08-01 16:29:49 +02:00
4gray bcc2e36a05 feat(downloads): finish manager MVP 2026-08-01 16:29:49 +02:00
4gray eb55c17a05 feat(downloads): add active download queue 2026-08-01 16:29:49 +02:00
4gray 8e1af010a9 feat(downloads): add ready-to-watch library 2026-08-01 16:29:49 +02:00
4gray 28770aad09 fix(downloads): report library navigation failures 2026-08-01 16:29:49 +02:00
4gray ce251e5f9b refactor(downloads): isolate library navigation 2026-08-01 16:29:49 +02:00
4gray bff9ca1491 fix(downloads): stabilize malformed view model data 2026-08-01 16:29:49 +02:00
4gray aae5450f4c test(downloads): close view model coverage gaps 2026-08-01 16:29:49 +02:00
4gray d6e1ee5d0c feat(downloads): derive queue and library view model 2026-08-01 16:29:49 +02:00
4gray bc29f24eb2 fix(downloads): make active count accessible 2026-08-01 16:29:49 +02:00
4gray 117bd75f01 fix(downloads): keep renderer download state global 2026-08-01 16:29:49 +02:00
4gray 505face7e4 docs(downloads): tighten manager validation plan 2026-08-01 16:29:49 +02:00
4gray 6995b5765a docs(downloads): plan manager MVP implementation 2026-08-01 16:29:49 +02:00
4gray b7f02c51b4 docs(downloads): specify manager MVP redesign 2026-08-01 16:29:49 +02:00
4grayandClaude Fable 5 9bb1811984 fix(playback): escape commas in mpv header fields on the TS paths (#1323)
* fix(playback): escape commas in mpv header fields on the TS paths

PR #1321 fixed the comma truncation of --http-header-fields inside the
native embedded-mpv addon, but the same OPT_STRINGLIST parsing bites
three TypeScript call sites that join header fields with ',':

- external MPV CLI launch (--http-header-fields=...)
- external MPV instance reuse (set_property http-header-fields)
- embedded MPV frame-copy loadfile options (opt.http-header-fields);
  the helper's %len% quoting protects only the option-list level, mpv
  still stringlist-parses the value afterwards

The Stalker MAG user agent contains "(KHTML, like Gecko)", so strict
portals received a truncated X-User-Agent and rejected live streams
with HTTP 400 (#910). Escape backslashes and commas per field with the
same scheme as the native fix, via a shared util.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test(playback): cover the reused-instance IPC header escaping

Review follow-up (Greptile on #1323): the regression coverage only
exercised the CLI spawn path. Capture the JSON IPC traffic of a second,
reused mpv launch and assert the escaped MAG user agent survives the
set_property http-header-fields transport, so later serialization
changes cannot silently reintroduce truncated headers. net is mocked
with a passthrough default because the VLC specs bind a real ephemeral
port via createServer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 16:19:38 +02:00
wretchwatson 814161274b fix(playback): escape commas in mpv http header fields (#1321) 2026-08-01 15:17:48 +02:00
4gray b14ce2452b fix(packaging): add verified source mirror fallback (#1325) 2026-08-01 15:15:09 +02:00
4gray 9f4e11d6de fix(playback): structure Shaka diagnostics (#1318)
* docs(playback): design structured Shaka diagnostics

* fix(playback): structure Shaka diagnostics

* docs(playback): document Shaka evidence boundary

* docs(playback): fix Shaka validation commands

* fix(playback): preserve Shaka fallback evidence

* fix(playback): preserve Shaka text error evidence
2026-07-31 21:25:06 +02:00
4gray 9a50e7385b fix(playback): structure Video.js diagnostics (#1317) 2026-07-31 09:15:49 +02:00
4gray 46c7713841 fix(ui): preserve EPG in narrow channel rows (#1312)
Preserve current-program context and enabled actions in narrow channel rows while aligning loaded rows, skeletons, and virtual-scroll geometry across M3U, Xtream, Stalker, Favorites, and Recent views.
2026-07-31 08:27:36 +02:00
4gray 2ac0de752f fix(skills): align repository guidance with implementation (#1315)
* docs(skills): design implementation synchronization

* docs(skills): plan implementation synchronization

* fix(release): filter internal notes from public body

* docs(release): synchronize release workflow guidance

* fix(stalker): normalize catalog series flags

* fix(stalker): preserve progress with scoped episode IDs

* fix(playback): expose strict position persistence

* docs(stalker): record series position compatibility

* test(skills): validate repository skill contracts

* fix(database): keep SQL trace values private

* docs(skills): refresh Nx and SQLite ownership

* docs(skills): align provider and UI guidance

* docs(skills): tighten validated guidance

* docs(release): require exact release pushes

* style(electron): remove trailing blank line

* fix(ci): classify repository skills coverage
2026-07-31 08:00:59 +02:00
4gray 99d167993d fix(playback): structure HLS diagnostics (#1316)
* docs(playback): design structured HLS diagnostics

* docs(playback): plan structured HLS diagnostics

* fix(playback): structure HLS diagnostics

* docs(playback): document structured HLS evidence

* fix(playback): keep HLS startup logs private
2026-07-31 07:33:05 +02:00