edde746
22a733280a
fix: respect view mode in detail screens, disable scale in list mode
...
close #631
2026-03-05 17:38:38 +01:00
edde746
a4008d3d6b
fix: move mpv operations off UI thread
2026-03-05 16:55:44 +01:00
edde746
819d7b0f8f
fix: scope library display settings per user profile
...
close #630
2026-03-05 16:42:13 +01:00
edde746
c785ce1f88
fix: queue sheet image loading priority with itemExtent
2026-03-05 16:11:14 +01:00
edde746
0c3588210a
fix: pause hero auto-scroll on desktop background transition
2026-03-05 15:36:35 +01:00
edde746
db57fa73ce
feat: add option to hide bottom navigation bar labels
2026-03-05 15:05:48 +01:00
edde746
0269825179
fix: windows single instance mutex
2026-03-05 14:59:40 +01:00
edde746
588b413223
fix: browse tab scrolling after alpha jump libraries
2026-03-05 14:41:21 +01:00
edde746
a2cd3397c9
fix: desktop context menu position and bottom sheet sizing
2026-03-05 14:25:23 +01:00
edde746
268f293704
refactor: deduplicate Dolby Vision conversion code
...
- Extract shared processNal() for NAL classification/conversion logic
- Share DoviExtractorOutputWrapper between MKV and MP4 paths
- Deduplicate DV profile codec queries via deviceSupportsDvProfile()
- Collapse repeated doviTrackOutput access chain in stats
2026-03-05 12:02:33 +01:00
edde746
317d5dbdd9
feat: DV Profile 7→8.1 RPU conversion via libdovi
...
Convert Dolby Vision Profile 7 RPU NALUs to Profile 8.1 using libdovi
native bridge, preserving dynamic tone mapping on devices with DV8
decoders. Falls back to HEVC stripping when no DV8 decoder is present.
- Add JNI bridge (dovi_bridge.cpp) wrapping libdovi's RPU converter
- Download prebuilt libdovi from edde746/libdovi-builds releases
- DoviConvertingTrackOutput: DV81 mode converts RPUs, HEVC_STRIP strips
- Retry logic: if native DV7 decoding fails, auto-retry with conversion
- Performance overlay shows active DV conversion mode
2026-03-05 11:11:57 +01:00
edde746
7f2d548d32
fix: item 0 steals focus after sidenav return
2026-03-04 18:39:49 +01:00
edde746
5877673755
fix: reduce UI padding between media items
...
close #629
2026-03-04 18:36:12 +01:00
edde746
3b351d7634
fix: iOS OOM during PiP playback cycles
...
Cancel leaked stream subscriptions in video player dispose and flush
sample buffer layer on PiP teardown/cleanup to release video frames.
2026-03-04 17:34:30 +01:00
edde746
e6ee83d9c2
fix: preserve home screen scroll position on back navigation
2026-03-04 16:34:36 +01:00
edde746
8b57e810ab
feat: detail screen context menu button
2026-03-04 15:11:46 +01:00
edde746
4121d568c8
fix: sanitize mpv event channel strings for valid UTF-8
2026-03-04 14:59:11 +01:00
edde746
551bd83ffe
fix: player disposed race condition
2026-03-04 14:37:51 +01:00
edde746
5f4e4bfdd3
fix: ExoPlayer fallback for unsupported DV formats
...
- Detect decoder hangs via AnalyticsListener (onVideoDecoderInitialized
→ onRenderedFirstFrame gap, confirmed by DecoderCounters)
- Detect deselected video tracks and trigger immediate MPV fallback
- Use reinhard tone-mapping on GPUs without compute shaders
2026-03-04 13:18:40 +01:00
edde746
8cd48f3af5
fix: firstClient null check race
2026-03-04 10:01:40 +01:00
edde746
13b5d7bae8
feat: secondary subtitle tracks
...
close #625
2026-03-04 09:35:36 +01:00
edde746
3a76754af9
feat: custom GLSL shader import
...
close #624
2026-03-04 08:47:40 +01:00
edde746
73eeac35a8
fix: disable async codec queueing
2026-03-04 07:53:13 +01:00
edde746
18abcef8a2
fix: offload large UTF-8 decoding to background isolate
...
Prevents ANR when Dio's responseDecoder synchronously decodes large API
responses on the main thread. Responses >50KB use compute(). Also caches
MediaCodecList query results in ExoPlayerCore companion object.
2026-03-04 07:42:26 +01:00
edde746
85800abf9f
fix: disable tunneling for video codecs without tunneling support
2026-03-04 07:27:02 +01:00
edde746
2b72327013
fix: hide metal layer when window is occluded
2026-03-04 05:06:25 +01:00
edde746
cc86afb31d
fix: sparkle update detection and startup hang
2026-03-04 01:09:35 +01:00
edde746
efac1a9f28
fix: watch together stream use after close
2026-03-04 00:20:48 +01:00
edde746
a9e4091500
fix: disable http breadcrumbs for sentry
2026-03-04 00:02:51 +01:00
edde746
891c4f8c32
fix: reduce currently-airing program contrast
...
close #622
2026-03-03 23:40:07 +01:00
edde746
96f7bd431c
fix: ExoPlayer logs never reaching Dart log output
...
setLogLevel silently no-oped because initialized was false at call time.
emitLog gated all levels behind debugLoggingEnabled which was never set.
2026-03-03 23:23:06 +01:00
edde746
cd2ab9d9cd
refactor: deduplicate shared patterns, replace hardcoded colors
2026-03-03 22:43:00 +01:00
edde746
8f3d52142d
fix: watch together sync bugs and code quality
...
- Reset _firstPlayCompleted on detach so episode switches wait for peers
- Remove duplicate host join announcement from sync manager
- Use dedicated isPlaying field in sessionConfig with legacy fallback
- Replace Future.delayed with cancellable Timer to prevent sync indicator flicker
- Make Participant fields final and constructor const
2026-03-03 21:41:32 +01:00
edde746
cb7de47aed
fix: guard ScrollController.position access in HorizontalScrollWithArrows
...
Prevents "Too many elements" StateError on Android TV when the controller
temporarily has multiple positions during widget rebuilds.
2026-03-03 20:45:38 +01:00
edde746
174c78bf67
fix: handle connectivity_plus PlatformException on Windows
2026-03-03 20:13:17 +01:00
edde746
19c36ca340
fix: normalize Sentry release version across platforms
2026-03-03 20:02:07 +01:00
github-actions[bot]
b0432ece86
chore: update cask to 1.24.1
2026-03-03 18:39:39 +00:00
github-actions[bot]
a009c6db93
chore: bump version to 1.24.1
2026-03-03 18:18:29 +00:00
edde746
e60b8d13b9
fix: improve error reporting data sanitization
2026-03-03 19:16:33 +01:00
edde746
1b673743b2
fix: handle int end-file reason from mpv on Windows/Linux
2026-03-03 19:00:32 +01:00
edde746
34e8c179fe
fix: guard PiP calls on unsupported platforms
2026-03-03 19:00:32 +01:00
edde746
33d5760930
fix: uncommend play store release
2026-03-03 19:00:32 +01:00
github-actions[bot]
77ec4cc5c8
chore: update cask to 1.24.0
2026-03-03 17:02:12 +00:00
edde746
c8e6cac00c
bump mpv windows to 20260303
2026-03-03 17:18:57 +01:00
github-actions[bot]
35fc0334bc
chore: bump version to 1.24.0
2026-03-03 16:08:36 +00:00
edde746
c6ace690cb
refactor: clean up download code duplication
2026-03-03 16:31:02 +01:00
edde746
7a979bed2f
fix: harden download callbacks against stale status events
...
Guard _onDownloadFailed, _onDownloadPermanentlyFailed, and cancel
handler against overwriting completed downloads. Add
resumeFromBackground() for iOS background transitions.
2026-03-03 15:20:13 +01:00
edde746
e46bd71fa7
fix: prevent completed downloads from restarting on app launch
...
Race condition between trackTasks() completion callbacks and the orphan
scan caused completed items to be re-queued on every app restart (#616 ).
2026-03-03 15:02:40 +01:00
edde746
c98010234f
fix: warnings
2026-03-03 14:30:59 +01:00
edde746
02e175e4d3
feat: replace rustrak with glitchtip
2026-03-03 14:27:11 +01:00