Commit Graph
2631 Commits
Author SHA1 Message Date
4gray e66ef84df1 feat(stalker): manage authenticated portal sessions in main 2026-07-27 11:29:41 +02:00
4gray 0ed6e67360 test(stalker): add authenticated session replay e2e 2026-07-27 11:28:40 +02:00
4gray 9e312ada2d fix(stalker): keep renderer helpers ES2018 compatible 2026-07-27 11:24:48 +02:00
4gray c042af85db feat(stalker): load matching saved credentials 2026-07-27 11:22:50 +02:00
4gray 0022604c47 feat(stalker): route feature playback through session facade 2026-07-27 11:20:14 +02:00
4gray a6fd436e35 feat(stalker): add route connection recovery flow 2026-07-27 11:19:02 +02:00
4gray 2125e5a907 feat(stalker): recover typed playlist requests 2026-07-27 11:12:02 +02:00
4gray 758c1cb77a feat(stalker): coordinate route session recovery 2026-07-27 11:09:08 +02:00
4gray 7ee6e97ceb fix(stalker): preserve VOD series season shape 2026-07-27 11:04:21 +02:00
4gray 9a69a6d46a feat(stalker): add challenge-driven import flow 2026-07-27 11:01:15 +02:00
4gray 474f4a86cf refactor(stalker): route renderer requests through session leases 2026-07-27 10:58:14 +02:00
4gray 91761f5abe feat(stalker): secure native playback contexts 2026-07-27 10:56:33 +02:00
4gray 57e108b8cb feat(stalker): reflect persisted connections in state 2026-07-27 10:50:01 +02:00
4gray cede2c6bb3 fix(stalker): preserve catalog pagination metadata 2026-07-27 10:48:16 +02:00
4gray 00c85beb70 fix(logging): redact Stalker session references 2026-07-27 10:45:26 +02:00
4gray b76e65c2bf feat(stalker): expose typed session IPC 2026-07-27 10:41:32 +02:00
4gray 854e922c1e feat(stalker): persist verified connections atomically 2026-07-27 10:40:50 +02:00
4gray 580a056035 feat(stalker): bind secret playback contexts in main 2026-07-27 10:37:27 +02:00
4gray d5acb329e0 feat(stalker): map typed portal operations in main 2026-07-27 10:32:14 +02:00
4gray df92bae87e feat(stalker): add safe HAR draft converter 2026-07-27 10:28:47 +02:00
4gray 5b22bee0f4 feat(stalker): add session watchdog scheduler 2026-07-27 10:27:16 +02:00
4gray 97c50071ac feat(stalker): install discovered principals atomically 2026-07-27 10:23:44 +02:00
4gray 79729c4dfc test(stalker): add authentication replay corpus 2026-07-27 10:22:58 +02:00
4gray ffefe48992 feat(stalker): authenticate resolved portal sessions 2026-07-27 10:21:58 +02:00
4gray c12ad52019 feat(stalker): resolve portal endpoints safely 2026-07-27 10:17:21 +02:00
4gray 6726863081 feat(settings): secure playlist backup credentials 2026-07-27 10:15:27 +02:00
4gray 04e9027840 feat(backup): restore redacted portals safely 2026-07-27 10:12:22 +02:00
4gray 581ad6fe8b feat(backup): exclude portal secrets by default 2026-07-27 10:03:40 +02:00
4gray c4974e9b93 feat(stalker): add cookie-aware portal HTTP session 2026-07-27 10:01:55 +02:00
4gray 2646c0c492 feat(stalker): map playlists to session descriptors 2026-07-27 09:56:06 +02:00
4gray a2fd389e74 test(stalker): add fail-closed fixture validation 2026-07-27 09:55:53 +02:00
4gray 375169a69b fix(stalker): harden replay network boundaries 2026-07-27 09:54:30 +02:00
4gray f3acc2ce39 feat(stalker): serialize base identity mutations 2026-07-27 09:52:24 +02:00
4gray 2a88060fae feat(stalker): add one-time challenge registry 2026-07-27 09:49:41 +02:00
4gray 13f05d0a7e feat(stalker): validate portal transport inputs 2026-07-27 09:48:19 +02:00
4gray d0cf96caf8 feat(stalker): add isolated RFC cookie jar 2026-07-27 09:47:32 +02:00
4gray 9166d0f12c feat(stalker): add validated redirect session hooks 2026-07-27 09:35:43 +02:00
4gray 8009233220 refactor(stalker): extract replay fixture schema 2026-07-27 09:28:01 +02:00
4gray af0f210ea5 test(stalker): add replay listeners and control plane 2026-07-27 09:05:40 +02:00
4gray e43d94ded4 fix(stalker): use canonical serial number key 2026-07-27 09:00:56 +02:00
4gray 51d879a734 test(stalker): add replay scenario core 2026-07-27 08:30:33 +02:00
4gray 847d98f035 fix(stalker): prioritize response status semantics 2026-07-27 03:56:27 +02:00
4gray 604d2aca3e fix(stalker): reject ambiguous response failures 2026-07-27 03:52:20 +02:00
4gray 92238ecbbb fix(stalker): tighten session protocol boundaries 2026-07-27 03:37:42 +02:00
4gray f8a544d287 fix(stalker): correlate session operation contracts 2026-07-27 03:16:16 +02:00
4gray 29fa4d0f87 feat(stalker): add pure session protocol contracts 2026-07-27 03:01:52 +02:00
4gray f928e06afb docs(stalker): plan session compatibility implementation 2026-07-27 02:42:04 +02:00
4gray 3502ebe0f9 docs(stalker): design session compatibility foundation 2026-07-27 02:28:19 +02:00
4gray 9ae53e4515 fix(playback): make the "Show subtitles" setting reach the web players (#1269)
The persisted subtitle preference only ever had an owner behind the default-off
shared web-controls flag, so with the shipping controls it did nothing: Video.js
never read it, ArtPlayer declared the input but never used it, and the HTML5
player only ran a one-shot pass after play() resolved — before hls.js had added
its text tracks. No portal host bound the input at all, so it never reached
Xtream or Stalker pages either.

Extract the source-local track controllers into the adapter-free
WebVideoSourceTracks and have WebVideoSourceControlsBridge wrap it, so both
controls modes apply the preference through the same code. The preference-off
players bind it directly (VjsLegacyTracks for Video.js), and
WebPlayerViewComponent reads the preference from SettingsStore instead of an
input so every host inherits it.

The preference means different things depending on who renders the caption UI:
shared controls stay authoritative for the session, while vendor chrome is
source-default — the preference seeds each new source and is released once the
media reports playing, so the engine own caption menu keeps working. Mode
selection is an optional playbackStarted probe passed to the HLS, native and
Shaka helpers; in that mode the HLS helper deselects the track rather than
hiding it, since subtitleDisplay would silently override the vendor menu.

Closes #1155
2026-07-26 09:26:40 +02:00
4gray f147d4fe37 perf(m3u): stop cancelled refresh workers (#1268) 2026-07-26 09:25:51 +02:00