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
edde746
c10cf55f2d
feat: transcoding
2026-04-22 21:07:12 +02:00
edde746
ee020d81bd
refactor: trakt/download hardening and cleanup sweep
2026-04-21 13:57:03 +02:00
edde746
fd898e0567
fix: json parse safety, stop mutating input maps
2026-04-21 12:03:32 +02:00
edde746
5937e5c721
refactor: extract shared mixins and helpers to dedupe
2026-04-20 21:25:50 +02:00
edde746
1fd415ae31
feat(android): display switch delay
...
close #894
2026-04-20 17:34:54 +02:00
edde746
ff2928b18f
feat: trakt integration
...
close #617
2026-04-19 11:31:27 +02:00
edde746
3da51f9d64
chore: pre-commit ci hook, dart format
2026-04-18 12:40:35 +02:00