edde746
f04691d321
feat: add "Include Specials" toggle to the show download dialog
...
The aired-order rework can sweep correctly-placed Specials into "download
next N"; this toggle lets users opt out. Shown only for whole shows
(reusing FocusableSwitchListTile via an optional toggle on the shared
option-picker dialog), remembered across opens via a BoolPref
(default on = unchanged behavior). Filters Specials at the single
collect choke point (_collectPlayable), with a guard so explicitly
downloading the Specials season still queues its episodes.
2026-06-25 23:41:31 +02:00
edde746
dbe804f8db
fix: order episodes by air date for offline, Jellyfin, and downloads
...
Extends the Plex play-queue fix (#1416 ) to the shared episode comparator
so Specials interleave by air date everywhere, not just Plex streaming:
offline next/prev, the Jellyfin online queue, offline OnDeck, and the
download/sync "next N" selection. Undated episodes fall back to
Specials-last, preserving the #1414 "never front-load the Specials
folder" guarantee. Jellyfin queue now requests PremiereDate.
2026-06-25 23:05:16 +02:00
edde746
37e4153602
fix(plex): interleave Specials in show play queue
...
close #1416
2026-06-25 19:45:58 +02:00
edde746
b0b14bcd18
fix: hide episode spoilers until marked watched
...
close #1397
2026-06-25 11:13:57 +02:00
edde746
791433bceb
fix: download and queue episodes in watch order, Specials last
...
close #1414
2026-06-25 10:47:13 +02:00
edde746
e90835c234
fix(ci): restore sanity checks
2026-06-25 07:21:16 +02:00
edde746
8affbb7af6
fix(tvos): align embedded framework minimum os
2026-06-25 06:19:29 +02:00
edde746
21c4ab430e
feat(android): tune frame rate and subtitle rendering
2026-06-24 01:34:03 +02:00
edde746
c9dc15b1d8
fix(android): improve libass frame timing
2026-06-24 01:26:46 +02:00
edde746
b4967ca075
fix: expose offline settings
2026-06-23 05:11:39 +02:00
edde746
cd1978ee1c
fix: scope hidden libraries to profiles
...
close #1388
2026-06-23 00:21:01 +02:00
edde746
a5e422d284
fix(trackers): parse new Fribb imdb_id/themoviedb_id shapes
...
close #1402
2026-06-22 23:58:17 +02:00
edde746
5a1d378b42
fix(player): stop writing show-wide track defaults
2026-06-21 16:23:54 +02:00
edde746
0d78020fbf
fix(images): reduce artwork decode pressure
2026-06-18 18:00:23 +02:00
edde746
7e1d5ad4c4
fix: add Jellyfin episode-added sort
...
close #1274
2026-06-18 16:22:01 +02:00
edde746
94f2daa22e
feat: add episode action setting
...
close #1351
2026-06-18 11:16:38 +02:00
edde746
075e4aeb32
fix(player): restore OSD auto-hide
...
close #1360
2026-06-18 10:18:57 +02:00
edde746
52d70dd97d
fix(libraries): add Plex TV date added sort
...
close #1369
2026-06-18 09:05:09 +02:00
edde746
d9b03160f0
fix(video-controls): activate skip marker on select when controls hidden
...
close #1374
2026-06-18 07:59:26 +02:00
edde746
b11c63f557
fix: restore sidebar focus visibility
2026-06-18 04:29:34 +02:00
edde746
a75cf5fd35
fix(player): dismiss prompts on back
...
close #1373
2026-06-18 03:25:30 +02:00
edde746
6f39a286d3
fix(profiles): remount profile session
...
close #1371
2026-06-18 00:53:48 +02:00
edde746
66b80a33ba
fix(libraries): preserve Jellyfin alpha focus
...
close #1367
2026-06-17 20:55:26 +02:00
edde746
84b9eac09b
fix(ci): restore sanity checks
2026-06-16 22:43:56 +02:00
edde746
39788ab64a
fix(android): guard missing HDR capabilities
2026-06-16 22:00:19 +02:00
edde746
4cd289b4b8
fix(profiles): forget removed Jellyfin connections
...
close #1355
2026-06-16 20:08:47 +02:00
edde746
d49bd20fa0
fix(libraries): restore top-row focus escape
...
close #1354
2026-06-16 16:03:18 +02:00
edde746
618251b8eb
fix(player): attach external subtitles during open
2026-06-15 17:21:08 +02:00
edde746
9437956b83
fix(livetv): keep timeline heartbeat on active endpoint
2026-06-15 14:59:06 +02:00
edde746
f602925896
fix(trakt): persist refreshed auth sessions
...
close #1347
2026-06-15 14:42:24 +02:00
edde746
1aecb9d2d2
fix(trakt): publish refreshed sessions
2026-06-15 14:42:18 +02:00
edde746
4a5731976a
refactor(platform): centralize Apple TV detection
2026-06-15 13:32:54 +02:00
edde746
8198ea9522
fix(android): wire ExoPlayer passthrough control
2026-06-15 13:31:42 +02:00
edde746
e069d30555
fix(android): block direct audio without passthrough
2026-06-15 13:28:54 +02:00
edde746
1aa06ffe90
fix(tv): restore passthrough setting visibility
2026-06-15 13:28:38 +02:00
edde746
1b29cb3ef7
fix(player): apply stored passthrough setting
2026-06-15 13:28:23 +02:00
edde746
ba22dca9e5
fix(platform): gate audio passthrough support
2026-06-15 13:28:10 +02:00
edde746
b5a9f09f12
fix(player): wait for autoplay subtitle tracks
...
close #1348
2026-06-15 13:09:09 +02:00
edde746
8bf5dbb379
fix(player): resume mpv startup frame after subtitles
2026-06-15 12:06:04 +02:00
edde746
5fc599439e
fix(player): wire playback streams before open
2026-06-15 12:05:48 +02:00
edde746
27723e6f29
fix(video): sync first-frame background state
2026-06-15 12:05:29 +02:00
edde746
a4c444435f
fix(player): avoid overlapping performance stat fetches
2026-06-15 12:05:15 +02:00
edde746
6292685b5d
fix(player): fetch Android mpv stats off main thread
2026-06-15 12:04:58 +02:00
edde746
7195702242
fix(player): repair Plex transcode seeking
...
close #1341
2026-06-14 23:39:05 +02:00
edde746
01a5d11ef5
fix(jellyfin): use season episode endpoint
2026-06-14 18:34:12 +02:00
edde746
5e2bd4efa8
fix(video): release scrub chrome hold
...
close #1340
2026-06-14 18:34:12 +02:00
edde746
d6487e24c9
fix(tv): keep sidebar transparent
2026-06-14 14:53:56 +02:00
edde746
c404589382
style(native): fix formatting
2026-06-14 14:04:52 +02:00
edde746
f1689a7794
fix(tvos): keep audio passthrough opt-in
2026-06-14 13:49:57 +02:00
edde746
a861a4110f
feat(player): add mobile edge adjustments
2026-06-14 13:40:16 +02:00
edde746
e7809b3160
fix(player): harden pinch zoom activation
2026-06-14 11:08:14 +02:00
edde746
edd0618e64
fix: harden playback and discover state
2026-06-14 09:44:04 +02:00
edde746
849e62df7e
fix(jellyfin): honor continue watching action
...
close #1334
2026-06-14 07:25:40 +02:00
edde746
e1c0df3bd7
fix(ci): resolve sanity check failures
2026-06-14 06:55:58 +02:00
edde746
349b5b0513
fix(tv): stop playback behind menu
2026-06-14 06:27:00 +02:00
edde746
3ad049cb28
fix(player): clear stale mpv fallback switch
2026-06-14 00:27:41 +02:00
edde746
656cf1158b
fix(libraries): restore tvOS empty tab focus
...
close #1330
2026-06-14 00:05:44 +02:00
edde746
f3cb508649
fix(player): wait for mpv subtitles after load
...
close #1331
2026-06-13 23:52:19 +02:00
edde746
c39b5a5cf1
feat(player): show cache limit in perf overlay
2026-06-13 21:21:15 +02:00
edde746
9ff3099a9d
fix(player): update MPVKit and stream buffering
2026-06-13 20:51:14 +02:00
edde746
c24a2aade0
fix(images): preserve media image filter quality
2026-06-13 18:19:23 +02:00
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