edde746
0539c1d869
fix: overlay sheet position, scroll-to-selected in bottom sheets
2026-03-21 11:49:08 +01:00
edde746
7ebbf75cb9
fix: handle background isolate shutdown on iOS
2026-03-21 01:43:34 +01:00
edde746
630755cf7b
refactor: remove dead utility methods
...
Remove filterOutMusic, watchUserProfile, and watchHiddenLibraries
2026-03-15 22:55:18 +01:00
edde746
551be5bbef
feat: dynamic library tabs and shared library navigation
...
- Replace hardcoded 4-tab system with data-driven visible tab list
- Shared libraries show only Browse + Playlists tabs
- Fix dpad navigation for shared libraries (no hidden tab targets)
- Switch to TickerProviderStateMixin to support tab controller recreation
- Navigate to library screen when tapping shared library sections
- Persist tab selection by name instead of index
2026-03-15 21:36:17 +01:00
edde746
79888168ae
fix: add timeout diagnostics
2026-03-15 05:06:16 +01:00
edde746
9a296b3da8
fix: guard scrollListToIndex against multiple scroll positions
2026-03-14 22:11:48 +01:00
edde746
4f736c555b
fix: make PlexMetadata type/key/title nullable for folder items
...
Plex API returns Directory entries without type field, causing
TypeError crash in fromJson. Made fields nullable and migrated
callers to use mediaType enum and displayTitle getter instead
of raw string access.
2026-03-14 05:40:14 +01:00
edde746
c062dd944e
feat: inline season tabs and d-pad focus improvements
2026-03-12 00:57:51 +01:00
edde746
5538e0627b
refactor: remove SeasonDetailScreen, unify into MediaDetailScreen
...
Extract EpisodeCard to its own widget file. MediaDetailScreen now handles
isSeason by showing episodes directly, with proper watch state tracking,
deletion handling, and D-pad focus navigation. Hide empty overview sections.
2026-03-11 23:08:39 +01:00
edde746
3c491be690
fix: handle mpv end-file errors with global snackbar
2026-03-11 09:29:16 +01:00
edde746
73fe9e054f
fix: guard unsafe .first/.last calls to prevent StateError
2026-03-10 03:50:12 +01:00
edde746
0fc64cdf81
fix: catch seek PlatformException at source, remove coordinator
...
Catch COMMAND_FAILED/NOT_INITIALIZED in PlayerNative.seek() and
PlayerAndroid.seek() directly, preventing unhandled PlatformException
crashes on macOS app resume. Remove the ~200-line
_PendingSeekCoordinator system and revert all callsites to direct
player.seek(clampSeekPosition(...)). Keep seekable property/stream
and media controls gating. Add ExoPlayer seekable emission.
2026-03-09 07:21:36 +01:00
edde746
16676bca49
perf: watch together CPU overhead
2026-03-08 16:57:15 +01:00
edde746
beff4f9ca0
feat: add watch together playback rejoin flow
...
close #639
2026-03-06 20:42:18 +01:00
edde746
c1e2bc36ea
refactor: share Apple MPV core and media helpers
2026-03-06 10:16:33 +01:00
edde746
5877673755
fix: reduce UI padding between media items
...
close #629
2026-03-04 18:36:12 +01:00
edde746
13b5d7bae8
feat: secondary subtitle tracks
...
close #625
2026-03-04 09:35:36 +01:00
edde746
cd2ab9d9cd
refactor: deduplicate shared patterns, replace hardcoded colors
2026-03-03 22:43:00 +01:00
edde746
e60b8d13b9
fix: improve error reporting data sanitization
2026-03-03 19:16:33 +01:00
edde746
01e61c590a
fix: tighten startup connection timeouts for dead servers
2026-03-02 23:09:09 +01:00
edde746
5ab6af1b02
feat: respect system 24h time format setting
...
Closes #605
2026-03-02 18:19:52 +01:00
edde746
796db94896
remove unused sliver_adaptive_media_builder
2026-03-01 10:08:17 +01:00
edde746
48c9dcae1b
fix: apply hide spoilers setting to hero section
...
close #588
2026-02-28 06:18:11 +01:00
edde746
5ff5441baa
fix: map ssa subtitle codec to .ass extension
...
close #569
2026-02-27 16:51:49 +01:00
edde746
9e0c3e7b68
fix: improve delete-from-server button safety
...
Rename "Delete" to "Delete from server" with distinct icon and
always-red styling to prevent accidental server deletions.
Closes #568
2026-02-27 14:49:47 +01:00
edde746
8eda892b68
feat: themed splash screen with status messages
2026-02-26 11:55:45 +01:00
edde746
414e5804eb
feat: add hide spoilers setting for unwatched episodes
2026-02-26 11:55:45 +01:00
edde746
a32422bb5e
chore: remove unused formatRelativeTime
2026-02-26 04:30:48 +01:00
edde746
e23f472d78
refactor: centralize globalKey construction via buildGlobalKey()
2026-02-23 17:53:20 +01:00
edde746
778ac50116
perf: fast offline startup
...
close #511
2026-02-23 14:09:13 +01:00
edde746
8f50da4a75
fix: resolve all dart analyze warnings
...
- Migrate RadioListTile to RadioGroup API (Flutter 3.32+)
- Guard BuildContext usage across async gaps
- Use const BorderRadius.all / EdgeInsets.all constructors
- Extract nested ternaries into helpers
- Prefer .first over [0], ??= over if-null assignment
- Prefix unused FocusNode params with _
- Add library directive for dangling doc comments
2026-02-23 13:50:56 +01:00
edde746
4095cc27e1
perf: reduce redundant metadata API requests
2026-02-23 11:43:42 +01:00
edde746
4eb55885f7
feat: metadata editing
...
close #338
2026-02-22 17:56:13 +01:00
edde746
7f8d4c7946
fix: dpad focus for dialogs and buttons
2026-02-22 14:50:59 +01:00
edde746
23c4c400f0
feat: focus navigation for movie detail sections
...
close #464
2026-02-16 02:17:10 +01:00
edde746
53c94b14cc
feat: add back button exit confirmation on Android TV
...
close #467
2026-02-16 01:22:48 +01:00
edde746
90a40d034f
refactor: reuse MediaCard for extras
2026-02-15 22:59:43 +01:00
edde746
04438c8e45
refactor: code quality & format
2026-02-15 04:07:09 +01:00
edde746
9184bb8d40
Merge branch 'live-tv'
...
# Conflicts:
# lib/i18n/strings.g.dart
# lib/i18n/strings_de.g.dart
# lib/i18n/strings_en.g.dart
# lib/i18n/strings_es.g.dart
# lib/i18n/strings_fr.g.dart
# lib/i18n/strings_it.g.dart
# lib/i18n/strings_ko.g.dart
# lib/i18n/strings_nl.g.dart
# lib/i18n/strings_sv.g.dart
# lib/i18n/strings_zh.g.dart
# lib/screens/main_screen.dart
# lib/services/plex_client.dart
# lib/widgets/video_controls/desktop_video_controls.dart
2026-02-14 22:29:16 +01:00
edde746
4fc98426ff
feat: connection recovery on mobile resume and endpoint exhaustion
2026-02-14 22:11:00 +01:00
edde746
6f027f1015
fix: notify season screen when download is deleted
2026-02-14 18:37:28 +01:00
edde746
86a989a2f2
fix: open downloaded videos in external player on Android
2026-02-14 18:26:05 +01:00
Micah Morrison
336da4c110
Fix the colors of the delete buttons
2026-02-13 20:07:07 -05:00
edde746
fd53acbb92
fix(tv): use channel key for tuning and EPG matching
2026-02-13 17:23:02 +01:00
edde746
ca90600764
refactor(tv): tune live channel inside player screen
2026-02-12 17:47:51 +01:00
edde746
ac1dae25b8
feat(tv): add What's On tab with API-driven hubs and show schedule
2026-02-12 16:46:15 +01:00
edde746
2ae6385913
fix(tv): playback stopping
2026-02-12 11:21:00 +01:00
edde746
403b1f6776
feat: live tv
2026-02-11 16:27:49 +01:00
edde746
5d40468dc2
feat: apply library density to hub rows and reduce grid sizes
...
close #433
2026-02-11 15:22:07 +01:00
edde746
03907db6c4
feat: external player support
...
close #388
2026-02-11 14:59:52 +01:00