edde746
a9493f4f0e
fix(relay): harden lifecycle and protocol handling
2026-07-12 17:31:15 +02:00
edde746
fe8d405a56
fix(i18n): enforce complete localized coverage
2026-07-12 17:31:14 +02:00
edde746
754c54761a
refactor(downloads): consolidate task and metadata flows
2026-07-12 17:31:13 +02:00
edde746
7ecadffdb1
refactor(features): consolidate shared feature primitives
2026-07-12 17:31:13 +02:00
edde746
6506f36843
refactor(app): share client and presentation scaffolds
2026-07-12 17:31:12 +02:00
edde746
97f7508067
refactor(core): consolidate shared app foundations
2026-07-12 17:31:12 +02:00
edde746
a481fc1000
refactor(dialogs): unify text input contract
2026-07-12 08:42:26 +02:00
edde746
b7078448ea
refactor(mpv): unify property decoding
2026-07-12 08:42:26 +02:00
edde746
359a6bf02a
refactor(live-tv): split optional DVR support
2026-07-12 08:42:25 +02:00
edde746
a5449a1430
refactor(ci): matrix architecture builds
2026-07-12 08:42:25 +02:00
edde746
6182c34448
perf(playlists): bound card inflation
2026-07-12 08:42:25 +02:00
edde746
699e73bcd5
fix(downloads): propagate hierarchical watch state
2026-07-12 08:42:25 +02:00
edde746
352aa04d3e
refactor(settings): share preference binding lifecycle
2026-07-12 08:42:25 +02:00
edde746
c81a1f9a97
fix(plex): tolerate malformed activity rows
2026-07-12 08:42:25 +02:00
edde746
34be331024
refactor(media): centralize HDR classification
2026-07-12 08:42:25 +02:00
edde746
ceae98b75f
refactor(paging): share continuation loading
2026-07-12 08:42:25 +02:00
edde746
5328865639
refactor(input): share gamepad key simulation
2026-07-12 08:42:24 +02:00
edde746
f78089edf8
refactor(input): share D-pad long press state
2026-07-12 08:42:24 +02:00
edde746
c0d8951677
fix(release): centralize pubspec version parsing
2026-07-12 08:42:24 +02:00
edde746
2e830d3f97
refactor(database): share watch action queries
2026-07-12 08:42:24 +02:00
edde746
649eaa4cce
refactor(watch-together): share relay setup
2026-07-12 08:42:24 +02:00
edde746
80344a630f
feat(playlists): add picker filtering and TV focus
2026-07-12 08:42:24 +02:00
edde746
2a128777f1
refactor(profiles): centralize Plex token policy
2026-07-12 08:42:24 +02:00
edde746
baf3c41a44
refactor(providers): share coalesced load scheduling
2026-07-12 08:42:24 +02:00
edde746
f7f4e3a992
fix(windows): support structured mpv observations
2026-07-12 08:42:24 +02:00
edde746
6890cd8690
refactor(settings): remove dead shortcut preferences
2026-07-12 08:42:23 +02:00
edde746
c84b8b4792
refactor(downloads): unify deletion and scoped cache handling
2026-07-12 08:42:23 +02:00
edde746
3d36ecf094
fix(mpv): harden native initialization and logging
2026-07-12 08:42:23 +02:00
edde746
eaa60cc2b5
fix(release): resolve package tags once
2026-07-12 08:42:23 +02:00
edde746
de5234b59f
refactor(trackers): share username enrichment
2026-07-12 08:42:23 +02:00
edde746
69cf5fb8a1
fix(live-tv): contain retry failures
2026-07-12 08:42:23 +02:00
edde746
a0f153e5ab
refactor(symbols): share upload flow
2026-07-12 08:42:23 +02:00
edde746
0135318ded
fix(android): include mpv end-file diagnostics
2026-07-12 08:42:22 +02:00
edde746
f4ec6ccf20
fix(settings): guard Atmos diagnostics stop
2026-07-12 08:42:22 +02:00
edde746
5f8d263d63
fix(ci): fail closed on analyzer errors
2026-07-12 08:42:22 +02:00
edde746
242cc8616c
feat(settings): expose music quality preset
2026-07-12 08:42:22 +02:00
edde746
2ebc1e250d
fix(providers): stop loads after disposal
2026-07-12 08:42:22 +02:00
edde746
5876a602c3
fix(android): surface mpv command failures
2026-07-12 08:42:22 +02:00
edde746
79dabaf125
refactor(watch-together): share host peer IDs
2026-07-12 08:42:22 +02:00
edde746
65d3d8e471
refactor(jellyfin): share auth and time handling
2026-07-12 08:42:22 +02:00
edde746
aa230983d5
refactor(navigation): centralize sidebar focus
2026-07-12 08:42:22 +02:00
edde746
1b9ef3b3b6
fix(discover): avoid progress refresh fanout
2026-07-12 08:42:21 +02:00
edde746
7ed342b345
refactor(watch-together): centralize participant lookup
2026-07-12 08:42:21 +02:00
edde746
29c029f04a
refactor(watch-together): share core primitives
2026-07-12 08:42:21 +02:00
edde746
777780926c
refactor(paging): share unknown-total sentinel
2026-07-12 08:42:21 +02:00
edde746
f08fceaee0
refactor(json): share scalar adapters
2026-07-12 08:42:21 +02:00
edde746
0ddd0a6c25
refactor(mpv): remove unused seek events
2026-07-12 08:42:21 +02:00
edde746
8a8b4f3a61
refactor: remove unused convenience APIs
2026-07-12 08:42:20 +02:00
edde746
cdec9d1514
refactor(player): centralize chapter traversal
2026-07-12 08:42:20 +02:00
edde746
9da047de70
refactor(cache): centralize non-fatal writes
2026-07-12 08:42:20 +02:00
edde746
18835d92dd
refactor(navigation): reuse library icon mapping
2026-07-12 08:42:20 +02:00
edde746
967c25b11d
refactor(player): share queue item labels
2026-07-12 08:42:20 +02:00
edde746
877e8880cf
refactor(profiles): centralize Plex Home cache codec
2026-07-12 08:42:20 +02:00
edde746
ac9c236b6b
refactor(providers): harden server listener state
2026-07-12 08:42:20 +02:00
edde746
df7fa08e40
refactor(focus): centralize focus node ownership
2026-07-12 08:42:20 +02:00
edde746
c58013b818
refactor(downloads): centralize sidecar cleanup
2026-07-12 08:42:20 +02:00
edde746
b925705173
fix(downloads): discard stale profile refreshes
2026-07-12 08:42:19 +02:00
edde746
7a0e838017
fix(profiles): remint empty Plex resource tokens
2026-07-12 08:42:19 +02:00
edde746
bc55aea701
refactor: remove superseded code paths
2026-07-12 08:42:19 +02:00
edde746
dca51a752a
refactor(downloads): centralize metadata merging
2026-07-12 08:42:19 +02:00
edde746
0db6eb6f2e
fix(downloads): normalize Windows sidecar paths
2026-07-12 08:42:19 +02:00
edde746
d1a67828b6
fix(ci): detect silent tool failures
2026-07-12 08:42:19 +02:00
edde746
048fb77c8c
fix(windows): move mpv teardown off platform thread
2026-07-12 08:42:19 +02:00
edde746
a63369c247
fix: close async lifecycle races
2026-07-12 08:42:19 +02:00
edde746
6d94880c2f
fix(input): reset long press state safely
2026-07-12 08:42:19 +02:00
edde746
9c6fcbc841
fix(plex): tolerate scalar schema drift
2026-07-12 08:42:18 +02:00
edde746
a809cbbcef
fix(plex): surface server failures
2026-07-12 08:42:18 +02:00
edde746
e4b0680158
fix(ci): enforce automation checks
2026-07-12 08:42:18 +02:00
edde746
64db84c3e2
feat(library): default clip libraries to folder grouping
...
close #966
2026-07-12 03:38:23 +02:00
edde746
4a81246986
build(libass): bump fork to 0.18.3
2026-07-12 00:44:08 +02:00
edde746
a23c7f215c
fix(player): tighten staged back navigation
2026-07-11 23:11:25 +02:00
edde746 and moduvoice
5af3a926d7
i18n: complete locale translations
...
close #1537
Co-authored-by: moduvoice <moduvoicr77@gmail.com >
2026-07-11 22:53:33 +02:00
edde746
2679745941
fix: stop Jellyfin live TV sessions
...
close #1533
2026-07-11 22:00:05 +02:00
edde746
4443b76145
fix(player): respect visible chrome on back
2026-07-11 17:38:22 +02:00
edde746
3a982c2a7a
fix(player): prevent duplicate back actions
2026-07-11 12:59:57 +02:00
edde746
e07172ade4
fix(tvos): enable native EAC3 JOC playback
2026-07-11 12:59:57 +02:00
edde746
d86e328169
fix(player): unify back navigation
...
close #1525
2026-07-11 03:23:40 +02:00
edde746
02a032d287
fix(android): reconnect Flutter texture after TV standby
2026-07-11 01:01:08 +02:00
edde746
03651d6c73
fix(exoplayer): unwrap AAC-LATM (LOAS) audio in MKV direct streams
...
close #1521
2026-07-10 23:23:44 +02:00
edde746
9b6c12d086
style: format playback_open
2026-07-10 21:26:25 +02:00
edde746
c5c7dd614f
i18n: translate stream-interrupted snackbar to all locales
2026-07-10 20:27:52 +02:00
edde746
f87d6e5a52
fix(player): keep paused server sessions alive
...
Report the paused timeline every tick (~10s, matching official clients)
instead of every ~60s, and ping the Plex transcoder keepalive endpoint
alongside it while transcoding — PMS reaps idle transcode sessions that
timeline reports alone historically have not kept alive. Prevents the
transcode-variant of the #1520 stream death; the reporter's direct-play
case is covered by EOF classification and reconnect.
2026-07-10 19:12:36 +02:00
edde746
c885c0c6bc
fix(player): intercept spurious mid-file EOF and recover in place
...
close #1520
Classify player EOF signals against the best-known duration: a mid-file
EOF means the stream died (transcode reaped or idle connection closed
during a long pause), not that the media ended — it must never mark the
item watched, prompt Play Next, or exit a movie. Recover with a bounded
in-place reload at the parked position; if the server is still refusing,
park on the old frame and rebuild the stream on user play/seek or when
the server-status monitor sees it come back online.
2026-07-10 19:11:18 +02:00
edde746
3bf72d7237
fix(player): auto-reconnect network streams on transient HTTP 503
...
ffmpeg's reconnect gave up on the first HTTP-error response, so a PMS
answering 503 (startup maintenance) after an idle-pause disconnect
surfaced as a clean mid-file EOF instead of riding through the outage.
2026-07-10 19:07:29 +02:00
edde746
d07d849fe4
refactor(player): return an outcome enum from _reloadMediaInPlace
...
The old bool meant "attempt was current and handled", so callers could
not distinguish a real pre-open failure (old stream still loaded) from
success — the distinction the #1520 recovery needs.
2026-07-10 19:06:51 +02:00
edde746
e6ffc54c56
style: format image_cache_service
2026-07-10 19:06:51 +02:00
edde746
b5d8ff5332
fix(metadata-edit): use 16:9 poster picker for episodes
...
close #1519
2026-07-10 12:45:35 +02:00
edde746
7509077d63
perf(tv): reduce animated semantics work
2026-07-10 12:07:19 +02:00
edde746
cbabdf2151
fix(images): prevent artwork limiter permit leaks
2026-07-10 12:07:19 +02:00
edde746
1acc83572e
perf(tv): reduce navigation rebuilds and artwork fan-out
2026-07-10 12:07:19 +02:00
edde746 and l3gitpanda
b46107cb58
fix(tv): dismiss on-screen keyboard on companion-remote search submit
...
close #1514
A query submitted from the companion remote now behaves like a submit
instead of focus-to-type: TvKeyboardController closes an already-open
OSK and lands focus on the input without reopening it, then the shared
handleSearchSubmit path runs the search and focuses the first result.
Also guard DebouncedMediaSearch against selection-only controller
notifications re-arming the debounce into a duplicate fetch.
Co-authored-by: l3gitpanda <12003346+l3gitpanda@users.noreply.github.com >
2026-07-10 08:48:38 +02:00
edde746
1261852514
fix(ci): regenerate Trakt catalog model
2026-07-10 07:32:02 +02:00
edde746
04daf89a20
feat(explore): Explore tab with catalog detail, search, and Seerr requests
2026-07-10 07:10:15 +02:00
edde746
f94b8c6586
feat(settings): Services hub, Seerr sign-in, and all-locale strings
2026-07-10 07:09:29 +02:00
edde746
b4943f8c50
feat(seerr): Seerr API, account provider, and Explore catalog source
2026-07-10 07:08:42 +02:00
edde746
2aa084287d
feat(explore): MyAnimeList catalog source
2026-07-10 07:07:54 +02:00
edde746
dcdbbc8483
feat(explore): match catalog items to library content via reverse external-id lookup
2026-07-10 07:07:07 +02:00
edde746
4e6ea5b4c5
feat(trakt): catalog API and shared catalog core (watchlist, discover, recommendations)
2026-07-10 07:06:21 +02:00
edde746
ede80d225f
refactor: shared coalescer, profile-scoped prefs key, and form-error helper
2026-07-10 07:05:35 +02:00
edde746
397de2698d
feat(livetv): flat M3E card redesign for guide, recordings, and details
2026-07-10 06:41:15 +02:00