edde746
04d8070fd4
refactor: pin the look-alike code paths that must not be merged
...
Several pairs of near-identical code paths differ in one load-bearing
line. Each site now carries a comment naming the invariant that forces it
apart, backed by a characterization test so a future deduplication fails
loudly instead of silently changing behaviour.
Pinned: focusable wrapper vs. chip D-pad activation policy, profile
connection cleanup's raw-id vs. ServerId-typed server projections, live TV
tab loaders, video player display matching and playback service wiring,
track selection container ordering, tracker HTTP client status ladder, and
the MediaServerHttpClient shutdown/cancellation contract versus
ManagedHttpClient's closing guard.
New tests:
test/focus/dpad_activation_policy_test.dart
test/services/track_selection_container_ordinal_test.dart
test/services/trackers/tracker_status_ladder_test.dart
test/utils/media_server_http_client_shutdown_test.dart
2026-07-26 06:09:47 +02:00
edde746
4307c49cd2
refactor: remove unreachable code paths and unused members
...
Drops dead code across services, models, utils and widgets, including the
connection auth service, which had no implementer, and the Live TV DVR
provisioning models, which had no caller.
Tests that only covered deleted behaviour are removed or trimmed. No
behaviour change.
2026-07-26 06:09:47 +02:00
edde746
9a6f48a4cb
fix(android): use Skia on 32-bit TCL TVs
2026-07-25 08:33:06 +02:00
edde746
fb27621c75
perf(tv): cut semantics work during card navigation
2026-07-25 08:13:09 +02:00
edde746
2b3853a882
fix(player): preserve transcoded subtitles at high speed
...
close #1622
2026-07-25 04:21:37 +02:00
edde746
0643787fbe
fix(android): prevent ghost playback after autoplay failures
...
close #1673
2026-07-25 04:12:54 +02:00
edde746
b7d5922b0a
fix(ci): repair Windows native checks
2026-07-25 00:22:23 +02:00
edde746
c7b9eec087
fix(player): preserve subtitles across episode changes
...
close #1635
2026-07-24 21:40:22 +02:00
edde746
db7bc17c49
chore(website): remove tests and update SvelteKit
2026-07-24 20:30:45 +02:00
edde746
d1cec00b51
fix(ci): repair native and Maestro checks
2026-07-24 20:30:45 +02:00
edde746
102ef46d00
feat(jellyfin): lazily page recently added hubs
...
close #1611
2026-07-24 20:29:21 +02:00
edde746
d6b24c3e07
fix(android): prevent Dolby Vision seek crashes
2026-07-24 19:10:38 +02:00
edde746
4cc9a35b2e
fix(android): use OpenGLES on 32-bit TCL TVs
2026-07-24 12:22:58 +02:00
edde746
40833e65ec
fix(ci): align toolchains and isolate platform tests
2026-07-24 10:06:50 +02:00
edde746
6c03094ef1
fix(settings): label image-only cache clearing accurately
2026-07-24 08:09:14 +02:00
edde746
269bb7a322
fix(playback): recover episode navigation without Plex queues
2026-07-24 08:08:10 +02:00
edde746
54273ab09c
fix(downloads): recover from full storage
...
close #1655
2026-07-24 07:48:42 +02:00
ad7ef112fc
feat(i18n): add Hungarian and Traditional Chinese locales
...
Complete and revise every shipped locale against the current English source, preserve locale-specific plurals, and map script-specific Chinese locales through device, Intl, duration, and Plex boundaries.
Co-authored-by: emgeje <mgj@mgj.hu >
Co-authored-by: junyou1998 <junyou1998@gmail.com >
2026-07-24 07:30:43 +02:00
edde746
0c6dab01b3
build(deps): upgrade Flutter package dependencies
2026-07-24 03:56:40 +02:00
edde746
3c2a353d32
build(android): upgrade Gradle and Kotlin toolchain
2026-07-24 03:56:40 +02:00
edde746
54a002f9b7
fix(android): consolidate native media decoders
2026-07-24 03:56:40 +02:00
edde746
fb45ff44f3
fix(android): persist startup and runtime exit diagnostics
2026-07-24 03:56:40 +02:00
edde746
9f2e050797
fix(native): bound cross-platform lifecycle ownership
2026-07-24 03:56:40 +02:00
edde746
09656fa4d3
fix(supply-chain): verify CI and production inputs
...
Pin external actions, images, toolchains, native archives, and tvOS engine artifacts; enforce fail-closed CI checks and keep website privacy disclosures aligned with shipped behavior.
2026-07-24 03:56:40 +02:00
edde746
b41fb4fe75
fix(ui): harden settings focus and semantics
2026-07-24 03:46:50 +02:00
edde746
f8bfecf57d
fix(media): serialize browsing and metadata mutations
2026-07-24 03:46:50 +02:00
edde746
43a8fe020d
fix(relay): secure reconnect and room ownership
2026-07-24 03:46:50 +02:00
edde746
e0bf66eea8
fix(runtime): harden application service boundaries
2026-07-24 03:46:46 +02:00
edde746
658da37b48
build: make toolchain inputs reproducible
2026-07-24 03:40:06 +02:00
edde746
1d1c301f61
test: stabilize deterministic integration coverage
2026-07-24 03:40:06 +02:00
edde746
d98e85614a
fix(settings): match services-page compact row style on desktop
2026-07-20 10:49:44 +02:00
edde746
5fb167898e
fix(tv): play episodes from detail rails
...
close #1608
2026-07-20 10:28:31 +02:00
edde746
0283c3bfff
fix(plex): skip malformed subtitle streams
...
close #1589
2026-07-20 10:28:31 +02:00
edde746
e32fcc2190
feat(explore): add AniList, Simkl, and Plex catalogs
2026-07-20 10:28:31 +02:00
edde746
0707d4d9b1
fix(live-tv): stabilize HLS playback
2026-07-18 20:04:09 +02:00
edde746
46dfc7f992
feat(detail): show episode file sizes
2026-07-18 13:32:40 +02:00
edde746
a1b6a89714
fix(player): load subtitle sidecars with media
...
close #1583
2026-07-17 23:09:07 +02:00
edde746
70cd7e8c67
fix(music): keep now playing state current
...
close #1600
2026-07-17 16:30:10 +02:00
edde746
5b90c4bca0
fix(images): decode cast cards at the square grid-cell budget
...
close #1591
2026-07-17 09:04:01 +02:00
edde746
6df8aba097
fix(nav): preserve HTPC escape behavior
...
Use Flutter's supported desktop application-exit API so the second root Back press closes Plezy on Windows. Preserve fullscreen when video player navigation is enabled while keeping fullscreen-first Escape behavior for normal desktop use.
close #1582
2026-07-16 20:43:10 +02:00
edde746
a244d249bd
fix(detail): stop cropping the hero backdrop on wide windows
...
close #1588
2026-07-16 16:00:30 +02:00
edde746
ac9a5914a2
fix(plex): handle malformed lyrics XML
2026-07-16 14:36:48 +02:00
edde746
b7cd4e5e9c
fix(music): preserve Jellyfin collection posters
2026-07-16 14:36:48 +02:00
edde746
ff602f1456
fix(plex): load local lyrics
...
Closing #1585
2026-07-16 12:56:16 +02:00
edde746
517c3f57ce
fix(music): keep collection and playlist artwork square
2026-07-16 12:37:02 +02:00
edde746
d253450e9d
fix(plex): show all artist releases
...
close #1577
2026-07-15 08:49:06 +02:00
edde746
fa901be328
fix(e2e): run emulator suites through Python
2026-07-15 08:25:55 +02:00
edde746
74cae73844
fix(ci): restore Dart formatting gate
2026-07-15 08:25:42 +02:00
edde746
0bcd00bcb6
ci: harden privileged workflow trust boundaries
2026-07-15 07:57:42 +02:00
edde746
54a4b8e414
refactor(mpv): move common code to shared
2026-07-15 07:57:02 +02:00
edde746
87c0547090
ci: harden pull request workflows
2026-07-15 07:15:34 +02:00
edde746
9471e30585
ci(test): consolidate Maestro workflow setup
2026-07-15 06:58:22 +02:00
edde746
ea4bd21977
fix(tv): refresh retained spotlight metadata
2026-07-15 06:40:59 +02:00
edde746
3168f6327f
fix(tv): make select activation one-shot
2026-07-15 06:40:47 +02:00
edde746
139cf83507
feat(test): add Maestro end-to-end coverage
2026-07-15 06:40:35 +02:00
edde746
ddb7520ce8
fix(jellyfin): promote redirected server URLs
2026-07-14 23:05:57 +02:00
edde746
abf1027b77
feat(plex): migrate video transcoding to HLS
2026-07-14 18:11:04 +02:00
edde746
9d812fa3cc
fix(plex): match legacy agent GUIDs
...
closing #1566
2026-07-14 18:11:04 +02:00
edde746
8c88385977
feat(jellyfin): cycle media backdrops
...
close #1568
2026-07-14 07:24:11 +02:00
edde746
30c978719b
fix(ci): update actions for Node 24
2026-07-14 07:23:16 +02:00
edde746
12eb9b71b6
fix(ci): disable crashing analyzer plugin
2026-07-14 07:23:16 +02:00
edde746
0cb19a4e30
feat(website): adopt expressive material design
2026-07-14 07:19:46 +02:00
edde746
991aee6c90
fix(ci): resolve analyzer and settings test failures
2026-07-14 01:21:38 +02:00
edde746
cbb0a01c5f
fix(release): create untagged build drafts
2026-07-14 00:33:12 +02:00
edde746
d86e820a16
fix(android): trust user-installed CAs
2026-07-14 00:24:54 +02:00
edde746
1bdd76d95a
fix(plex): wait for shared server resource tokens
2026-07-14 00:15:46 +02:00
edde746
0a3e9d9e89
build(apple): bump MPVKit to 1.0.13
2026-07-13 23:37:30 +02:00
edde746
a0013323f2
chore(ui): enforce icon consistency
2026-07-13 23:13:53 +02:00
edde746
d5f3e581df
fix: eliminate cross-app consistency drift
2026-07-13 23:13:53 +02:00
edde746
ec249d2ed4
fix(jellyfin): repair music library browsing
...
Fixes #1557
2026-07-13 22:58:12 +02:00
edde746
d6ad6a9506
fix(settings): align mobile option typography
2026-07-13 22:14:27 +02:00
edde746
7400a10c59
fix(release): prevent published asset replacement
2026-07-13 21:48:44 +02:00
edde746
dfeffad044
fix(windows): forward touch input over video
2026-07-13 18:48:58 +02:00
edde746
40792e2779
fix: restore focus and interaction behavior
2026-07-13 17:00:50 +02:00
edde746
822657972d
fix(android): enforce minSdk compatibility
2026-07-13 17:00:50 +02:00
edde746
ae71b7bc64
fix(android): guard API 29 codec query
...
close #1553
2026-07-13 17:00:49 +02:00
edde746
e15bbed554
test(servers): cover exhaustion reconnection and offline retry loop
...
Adds a production-wired exhaustion trigger hook, documents the
no-throw invariant behind the fire-and-forget verification probe, and
covers the confirmed-offline reconnect and debounce-driven recovery.
2026-07-13 12:05:23 +02:00
edde746
65e63c206e
fix(jellyfin): slim music hub row fields
...
close #1552
Latest Albums returns MusicAlbum folder dtos, where the browse count/user-data
fields each cost a recursive per-album COUNT query; request it with the slim
album fields + EnableUserData=false under a dedicated latestalbums identifier,
and drop the folder fields and Overview from the played-track rows.
2026-07-13 12:05:23 +02:00
edde746
f104b5ffae
fix(jellyfin): prevent false offline loops
2026-07-13 11:30:17 +02:00
edde746
e4db04fa62
fix: align UI focus and sheet behavior
2026-07-13 11:28:32 +02:00
edde746
e6e7d8cdfd
test: remove redundant coverage and shorten timers
2026-07-13 02:15:03 +02:00
edde746
8210b23d31
fix(ci): set explicit release tag
2026-07-13 01:42:41 +02:00
edde746
e03edad824
fix: prevent async state and platform regressions
2026-07-13 00:03:52 +02:00
edde746
26d14f7cb0
fix(seerr): align request button focus
2026-07-12 22:19:42 +02:00
edde746
b9f828ae88
refactor(livetv): reuse standard hub cards
2026-07-12 22:11:30 +02:00
edde746
098a472670
fix(catalog): restore TV focus navigation
2026-07-12 21:42:27 +02:00
edde746
780a1ea180
fix(ci): restore analyzer and unit checks
2026-07-12 19:55:24 +02:00
edde746
917f6a2839
fix: guard lifecycle-bound state updates
2026-07-12 19:00:28 +02:00
edde746
2101f1d7f0
perf: isolate focus and media rebuilds
2026-07-12 19:00:11 +02:00
edde746
a561777456
perf: reduce state notification fan-out
2026-07-12 18:59:58 +02:00
edde746
b4575c9780
fix: preserve live TV state across refreshes
2026-07-12 18:59:42 +02:00
edde746
0ef1e773bb
fix: scope navigation callbacks to active owners
2026-07-12 18:59:27 +02:00
edde746
cd88f73f05
fix: serialize async state transitions
2026-07-12 18:59:14 +02:00
edde746
d1c4ae83eb
fix(review): resolve post-consolidation regressions
2026-07-12 17:31:16 +02:00
edde746
858952929b
fix(deps): refresh and document native dependencies
2026-07-12 17:31:16 +02:00
edde746
b676ef6c56
refactor(android): harden and share player integration
2026-07-12 17:31:15 +02:00
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