Commit Graph
100 Commits
Author SHA1 Message Date
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