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