edde746
8f862d1ca0
fix(jellyfin): sort series episodes
...
close #1329
2026-06-13 17:12:48 +02:00
edde746
b56608f94f
fix(media): show source rating badges on TV
...
close #1327
2026-06-13 15:58:36 +02:00
edde746
2876e1bf78
fix(media): catch menu client and refresh failures
2026-06-13 13:25:48 +02:00
edde746
ebd850b0d5
fix(profiles): guard pin dialog route pops
2026-06-13 13:25:41 +02:00
edde746
f3f962a7c9
fix(database): swallow legacy documents lookup failures
2026-06-13 13:25:34 +02:00
edde746
49ae1fdc34
fix(cache): use app-private image cache
2026-06-13 13:25:26 +02:00
edde746
dc769bda41
fix(android): fall back when cronet init fails
2026-06-13 13:23:41 +02:00
edde746
75ba6b0627
fix(player): isolate dispose teardown races
2026-06-13 13:23:29 +02:00
edde746
1e40d21bd8
fix(discovery): handle udp datagram socket errors
2026-06-13 13:23:22 +02:00
edde746
3c43874342
fix(tvos): update mpvkit audio passthrough
2026-06-13 10:24:15 +02:00
edde746
4f422f1485
fix(plex): persist transcode audio stream switches
...
close #1326
2026-06-13 10:15:08 +02:00
edde746
85d9b6ebab
fix(tvos): hide unsupported playback options
2026-06-13 10:13:02 +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
24980aff95
feat(subs): render resolution setting for the avfoundation VO
2026-06-12 21:05:28 +02:00
edde746
804261605b
docs(player): note live session and progress tracker client pinning
2026-06-12 17:12:25 +02:00
edde746
8a65c78999
fix(plex): retry related hubs and skip unchanged threshold mirror
2026-06-12 17:12:25 +02:00
edde746
979db254d1
perf(providers): delta-fetch newly-online servers instead of full refetch
...
Discover and libraries now fetch only the servers that came online since
the last pass and merge the results; already-loaded servers are not
refetched. Both providers also own their online-servers listener
(registered in the constructor, removed in dispose), so profile switches
no longer leak listeners that kept disposed providers refetching.
2026-06-12 17:12:18 +02:00
edde746
18ebe77806
fix(jellyfin): page show/season folder children incrementally
2026-06-12 17:12:09 +02:00
edde746
0de856e929
fix(settings): refuse overlapping runAsync at runtime
2026-06-12 17:12:03 +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
acfb79c857
refactor(livetv): tune protocol methods go private behind the session
2026-06-12 16:18:09 +02:00
edde746
dcfe0f8308
refactor(player): live playback drives LiveTvPlaybackSession
2026-06-12 16:15:20 +02:00
edde746
23a423fe85
refactor(livetv): playback session lifecycle behind LiveTvSupport
2026-06-12 16:06:12 +02:00
edde746
b2cb874b73
fix(discover): refresh content when a server comes online mid-session
2026-06-12 15:56:09 +02:00
edde746
f671f367ea
refactor(discover): DiscoverProvider owns hubs and continue-watching
2026-06-12 15:53:26 +02:00
edde746
665603b314
fix(jellyfin): bounded transient retry on hub surfaces
2026-06-12 15:33:58 +02:00
edde746
0d7dd093c4
fix(jellyfin): flip server status when all endpoints are exhausted
2026-06-12 15:26:39 +02:00
edde746
c849a213f0
refactor(net): shared FailoverHttpClient for both backends
2026-06-12 15:22:52 +02:00
edde746
49ff0854c0
refactor(profiles): profile-scoped provider subtree keyed by active profile
2026-06-12 14:44:10 +02:00
edde746
5047057521
test(cache): cover per-backend applyWatchState mutations
2026-06-12 14:35:50 +02:00
edde746
e28e2b9371
refactor(media): folder browsing via MediaServerClient interface
2026-06-12 14:33:38 +02:00
edde746
bb92b6083b
refactor(player): clarify requested vs session-effective media source id
2026-06-12 14:21:12 +02:00
edde746
acdae74587
refactor(offline): single connectivity subscription in OfflineModeProvider
2026-06-12 14:18:49 +02:00
edde746
5e4449247b
fix(downloads): inject visibility-aware client resolver
2026-06-12 14:16:24 +02:00
edde746
c2fe142293
refactor(watch): WatchActions owns mark-watched orchestration and events
2026-06-12 14:09:21 +02:00
edde746
431b0f9b0c
refactor(ui): shared watched indicator overlay
2026-06-12 13:56:47 +02:00
edde746
959e6e9398
refactor(watch): single watched-progress predicate
2026-06-12 13:49:46 +02:00
edde746
18e47d2327
refactor(ui): share android keyboard-mode system-back guard
2026-06-12 13:48:06 +02:00
edde746
b2e5e02204
refactor(library): reuse grid column formula in fetch-size estimate
2026-06-12 13:48:06 +02:00
edde746
e6a488a4e2
fix(settings): resolve tv-dependent defaults at read time
2026-06-12 13:45:37 +02:00
edde746
75d0164a8b
fix(offline): persist plex watched threshold for offline use
2026-06-12 13:43:29 +02:00
edde746
05251edaf3
fix(tv): close virtual keyboard when its text field unmounts
...
The keyboard is a navigator route, so a screen swapping out its form
left it floating over the new content. showTvVirtualKeyboard now
returns a route handle and the field host closes it on dispose.
2026-06-12 13:36:01 +02:00
edde746
892dfee381
fix(tv): keyboard no longer opens over jellyfin quick connect screen
...
Auto-starting quick connect from inside the probe's runAsync let the
probe's finally clear busy mid-initiate; the re-enabled form then took
focus fallback on the URL field, auto-opening the TV keyboard. Sequence
the two busy scopes and debug-assert against overlapping runAsync.
2026-06-12 13:35:55 +02:00
edde746
7f1eb3a818
fix(focus): back over a dialog no longer pops the underlying screen
2026-06-12 13:19:29 +02:00
edde746
bd0a0c5d6b
feat(android): loudness normalization for exoplayer via audiofx
...
close #1289
2026-06-12 12:38:57 +02:00
edde746
71b05fd4b2
fix(ui): unwatched count badge grows as pill, caps at 999+
...
close #1310
2026-06-12 09:11:56 +02:00
edde746
587609d7f6
fix(tv): hug poster with focus border and add focus glow toggle
...
close #1278
2026-06-12 08:50:29 +02:00
edde746
cceba28d0a
fix(i18n): request localized Plex labels
...
close #1311
2026-06-12 07:59:35 +02:00
edde746
03c623e8c7
perf(grids): rebuild media grids on width change, not every scroll tick
2026-06-12 07:18:34 +02:00
edde746
2b34f4a9d7
perf(tv): reduced visual-effects tier for low-end devices
2026-06-12 06:30:38 +02:00