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
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
e0bf66eea8
fix(runtime): harden application service boundaries
2026-07-24 03:46:46 +02:00
edde746
e32fcc2190
feat(explore): add AniList, Simkl, and Plex catalogs
2026-07-20 10:28:31 +02:00
edde746
7ecadffdb1
refactor(features): consolidate shared feature primitives
2026-07-12 17:31:13 +02:00
edde746
c81a1f9a97
fix(plex): tolerate malformed activity rows
2026-07-12 08:42:25 +02:00
edde746
f08fceaee0
refactor(json): share scalar adapters
2026-07-12 08:42:21 +02:00
edde746
8a8b4f3a61
refactor: remove unused convenience APIs
2026-07-12 08:42:20 +02:00
edde746
9c6fcbc841
fix(plex): tolerate scalar schema drift
2026-07-12 08:42:18 +02:00
edde746
1261852514
fix(ci): regenerate Trakt catalog model
2026-07-10 07:32:02 +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
4e6ea5b4c5
feat(trakt): catalog API and shared catalog core (watchlist, discover, recommendations)
2026-07-10 07:06:21 +02:00
edde746
632d2ec16b
feat(livetv): let user pick and remember the recording target library
...
close #1513
2026-07-10 06:41:15 +02:00
edde746
fff559da06
feat(music): add music data layer for plex and jellyfin
...
Backend-neutral fetchArtistAlbums/fetchAlbumTracks/fetchInstantMix/
fetchLyrics, lyrics model + LRC parser, audio quality presets, music
transcode (plex /music universal, jellyfin audio PlaybackInfo profile),
station/InstantMix radio, music search, playlist type derivation, and
audio download resolution.
2026-07-05 15:55:52 +02:00
edde746
31e8c2e1e0
fix(plex): coerce PlexHomeUser fields against account-API drift
...
Same clients.plex.tv surface that broke in #1488 : /home/users powers
first sign-in and profile setup, so a drifted scalar shape would kill
the whole fetch. Coerce strings, bools, and ints tolerantly instead of
hard-casting.
2026-07-05 06:23:41 +02:00
edde746
96510f8aac
fix(plex): tolerate account-API schema drift in profile and switch parsing
...
Around July 3 plex.tv started returning the profile language-list fields
(defaultAudioLanguages, defaultSubtitleLanguages, mediaReviewsLanguages)
as comma-separated strings instead of arrays. The generated cast threw on
the successful 201 /switch response, dropping the freshly minted Home
user token: every rebind failed, the binder retried a /switch mint every
1-2s, and the app sat permanently in offline mode even after re-signing
in. Accounts without language prefs set were unaffected, which is why
the breakage looked sporadic.
Parse the language lists with a CSV-aware coercion, and make
UserSwitchResponse.fromJson strict only about authToken: decorative
fields now coerce tolerantly and a broken profile blob falls back to
defaults, so account-API drift can never brick token minting again.
close #1488
2026-07-05 06:23:34 +02:00
edde746
d80a1ed15a
feat: report real device identity to media servers
...
Resolve platform, hardware model, and friendly device name once via a
shared DeviceIdentityService and send them to both backends: Plex gets
a real X-Plex-Platform plus X-Plex-Device/X-Plex-Device-Name (shown as
Player in dashboards/Tautulli), Jellyfin gets the device name in the
MediaBrowser auth header. Transcode and live-TV decision requests keep
their pinned platform names, which Plex validates server-side.
close #1270
2026-07-05 01:22:20 +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
cceba28d0a
fix(i18n): request localized Plex labels
...
close #1311
2026-06-12 07:59:35 +02:00
edde746
38afdab2e4
fix: support mx player variants
...
close #1304
2026-06-11 08:35:19 +02:00
edde746
4c4b18e2cd
fix(i18n): localize hardcoded UI strings
...
close #1257
2026-06-06 11:45:34 +02:00
edde746
74b8dc4561
refactor: type server identifiers
2026-06-01 11:06:03 +02:00
edde746
9825ce3c7c
fix: select first playable Plex Part instead of always Part[0]
...
close #1201
2026-05-30 21:37:01 +02:00
edde746
56cfb95af5
fix(playback): apply default quality to jellyfin
...
close #1150
2026-05-27 00:02:23 +02:00
edde746
29e0654d47
fix(windows): launch VLC from default install path
...
close #1085
2026-05-20 20:16:34 +02:00
edde746
87db591792
feat(livetv): group guide by source
2026-05-17 06:41:47 +02:00
edde746
3798a0c332
fix(ci): update generated tracker mapping
2026-05-16 21:55:18 +02:00
edde746
3e74937386
feat(trackers): sync anime watch state by episode
2026-05-16 20:54:39 +02:00
edde746
8f9947a874
fix(trackers): use catalog totals for anime completion
...
close #1025
2026-05-13 15:07:19 +02:00
edde746
126e6b9349
fix(trackers): sync scoped anime progress
2026-05-13 14:10:01 +02:00
edde746
0e296f8659
fix(livetv): show guide without favorites
2026-05-13 09:22:17 +02:00
edde746
d0bd919ff4
refactor: migrate models to freezed + json_serializable
2026-05-11 12:54:26 +02:00
edde746
f9615491b3
refactor(media): migrate media item to freezed
2026-05-11 07:01:46 +02:00
edde746
91c23786f2
refactor: reduce model and focus boilerplate
2026-05-06 00:26:44 +02:00
edde746
ed4be7b96d
refactor: strip obvious comments
2026-05-04 22:40:18 +02:00
edde746
720d0d2604
feat(livetv): add DVR and recording support
2026-05-04 09:31:53 +02:00
edde746
9bd5732f2b
chore: clean up redundant comments
2026-05-01 05:02:26 +02:00
edde746
31d2d9dc98
feat: jellyfin
2026-05-01 01:20:36 +02:00
edde746
19a0128363
feat(playback): add ArtCNN shader presets
...
close #924
2026-04-26 20:29:38 +02:00
edde746
8c8fc13baf
fix(playback): skip deleted/inaccessible Plex media versions before play
...
close #919
2026-04-26 18:12:30 +02:00
edde746
87696d77d1
refactor(models): json_serializable for 9 manual fromJson models
2026-04-25 12:52:43 +02:00
edde746
0dbcda25e7
refactor(models): json_serializable for plex_filter
2026-04-25 12:45:54 +02:00
edde746
feba5b6f74
lint: enforce unawaited_futures, prefer_final_locals, etc.
2026-04-25 12:27:28 +02:00
edde746
e4e8299981
refactor: showLoadingDialog helper, json_serializable for plex_home
2026-04-25 03:25:09 +02:00
edde746
2b59de91c7
chore: dart format
2026-04-24 14:19:07 +02:00
edde746
bf2584d90f
feat: per-tracker library whitelist/blacklist
...
close #917
2026-04-24 10:30:16 +02:00
edde746
1582fdbd5b
feat: mal/anilist/simkl progress sync
...
close #914
2026-04-24 08:29:49 +02:00
edde746
431c20f817
feat: match/unmatch metadata
2026-04-23 19:02:14 +02:00