edde746
c68ffe9ed0
refactor: share the toolbar scrim and dedupe playback and download paths
...
Extracts the repeated toolbar fade into a single ToolbarScrim widget, folds
duplicated request/retry handling in the media server HTTP client, and
collapses the parallel playback-source, download-manager and live TV helper
paths into shared implementations.
2026-07-26 06:09:49 +02:00
edde746
83f4e2a263
refactor: fold single-use helpers into their call sites
...
Collapses indirection layers and one-caller abstractions across the video
player, shortcut dispatch, shader loading and context-menu code, including
the VideoPIPManager pass-through over PipService.
2026-07-26 06:09:49 +02:00
edde746
0643787fbe
fix(android): prevent ghost playback after autoplay failures
...
close #1673
2026-07-25 04:12:54 +02:00
edde746
e0bf66eea8
fix(runtime): harden application service boundaries
2026-07-24 03:46:46 +02:00
edde746
a1b6a89714
fix(player): load subtitle sidecars with media
...
close #1583
2026-07-17 23:09:07 +02:00
edde746
abf1027b77
feat(plex): migrate video transcoding to HLS
2026-07-14 18:11:04 +02:00
edde746
21c4ab430e
feat(android): tune frame rate and subtitle rendering
2026-06-24 01:34:03 +02:00
edde746
618251b8eb
fix(player): attach external subtitles during open
2026-06-15 17:21:08 +02:00
edde746
8bf5dbb379
fix(player): resume mpv startup frame after subtitles
2026-06-15 12:06:04 +02:00
edde746
f3cb508649
fix(player): wait for mpv subtitles after load
...
close #1331
2026-06-13 23:52:19 +02:00
edde746
90662e2173
fix(player): scale mpv stream ring buffer for poorly interleaved mp4/mov
2026-06-12 22:21:17 +02:00
edde746
a6d82b4637
fix(livetv): stop abandoned sessions when a tune is superseded or unmounts
2026-06-12 17:11:58 +02:00
edde746
dcfe0f8308
refactor(player): live playback drives LiveTvPlaybackSession
2026-06-12 16:15:20 +02:00
edde746
bb92b6083b
refactor(player): clarify requested vs session-effective media source id
2026-06-12 14:21:12 +02:00
edde746
a5c7d5b52a
refactor(watch-together): host-authoritative declarative sync protocol
...
Replaces the imperative play/pause/seek/positionSync message soup with a
single host-authored PlaybackState (seq-ordered, anchor-extrapolated,
phase machine: loading/waitingForPeers/paused/playing) that doubles as
the heartbeat, plus guest status reports and host-applied control
requests. Fixes the guest seek-back loop while the host loads (readiness
was keyed on a pre-load !buffering snapshot and heartbeats broadcast
frozen positions), adds real group buffering coordination (stall grace,
scheduled simultaneous resumes, 15s safety timeout), rate-nudge drift
correction with passthrough-aware seek fallback, session-scoped message
handling (no lost messages during episode-switch detach gaps), and an
expected-state ledger replacing the racy remote-action flag.
2026-06-11 09:42:38 +02:00
edde746
cd9498abb8
refactor(player): centralize playback opening
...
close #1280
2026-06-10 02:26:26 +02:00
edde746
74b8dc4561
refactor: type server identifiers
2026-06-01 11:06:03 +02:00
edde746
5671f6e5d1
fix(plex): send playback session stream header
2026-05-31 06:30:51 +02:00
edde746
9a740b91c1
fix(plex): select available playback version
2026-05-31 02:21:15 +02:00
edde746
63ab80fa82
fix(player): switch refresh rate before ExoPlayer open
2026-05-31 00:28:54 +02:00
edde746
d93ea9813f
fix(playback): harden offline source reporting
2026-05-29 19:55:01 +02:00
edde746
7501f461b9
fix(playback): sync downloaded watch progress
...
close #1171 , close #1183
2026-05-29 19:55:01 +02:00
edde746
3747a74cb3
fix(pip): guard callbacks after dispose
2026-05-28 01:14:38 +02:00
edde746
4c43d6fdec
fix(jellyfin): prefer direct playback by default
2026-05-23 18:38:38 +02:00
edde746
2b45557743
fix(android): preserve mpv frame-rate startup position
2026-05-21 09:58:13 +02:00
edde746
b547f8a47f
fix(android): gate mpv startup refresh on display switch
2026-05-21 02:59:11 +02:00
edde746
c93a266722
fix(plex): support no-burn transcode subtitles
2026-05-20 17:21:31 +02:00
edde746
0383a77b56
fix(jellyfin): pin version playback source
2026-05-19 20:12:19 +02:00
edde746
324d145292
fix(jellyfin): support external audio playback
2026-05-18 13:43:58 +02:00
edde746
5df3ec0c12
fix(playback): use display criteria for matching
2026-05-15 19:46:04 +02:00
edde746
12b006ee0c
fix(tvos): prime display criteria from metadata
2026-05-14 19:51:33 +02:00
edde746
9af6f32157
fix(player): harden initialization lifecycle
2026-05-13 06:28:09 +02:00
edde746
89f256138d
fix(player): flush mpv buffers on frame-rate startup
2026-05-11 10:50:11 +02:00
edde746
3e6ebcdb6a
fix(player): refresh Android MPV decoder on startup
2026-05-09 05:10:51 +02:00
edde746
1e6bd01987
fix(player): harden Apple PiP handling
2026-05-08 07:40:41 +02:00
edde746
65b42bca3f
fix(android): stabilize mpv frame-rate startup
2026-05-08 06:12:04 +02:00
edde746
07d25f5d5f
fix(android): stop forcing mpv display sync
2026-05-06 06:19:18 +02:00
edde746
8fabf56337
refactor: split playback and media hotspots
2026-05-02 06:33:05 +02:00