edde746
965d9540fa
fix: double sparkle update check
2026-03-09 00:29:58 +01:00
edde746
65bb7bd44e
fix: catch wakelock exceptions on Linux
2026-03-08 21:20:51 +01:00
edde746
a5ade78cd6
fix: remove unused variable warning
2026-03-08 19:40:11 +01:00
edde746
57420e51cf
fix: lazy client fetch in context menu
2026-03-08 19:03:03 +01:00
edde746
bec8b593be
fix: bump auto_updater
2026-03-08 18:50:19 +01:00
edde746
c62e406749
refactor: gate sentry behind build flag
2026-03-08 18:15:19 +01:00
edde746
16676bca49
perf: watch together CPU overhead
2026-03-08 16:57:15 +01:00
edde746
9e2e1f72ce
refactor: remove debug token i18n strings
2026-03-08 15:13:19 +01:00
edde746
f85afbe576
fix: gamepad ANR on Android
2026-03-08 14:15:32 +01:00
edde746
6fa6b34b59
fix: player stuck after show ends with no next episode
...
close #650
2026-03-08 13:51:25 +01:00
edde746
7a1f677c75
fix: content strip lint warnings
2026-03-07 22:10:45 +01:00
edde746
de28691481
fix: track selection persistence with stale cache
2026-03-07 22:07:29 +01:00
edde746
686a61ac74
fix: hero section bottom fade only applies to image
2026-03-07 20:52:28 +01:00
edde746
0b1f64ef8a
refactor: simplify mobile player controls
...
close #641
2026-03-07 20:48:17 +01:00
edde746
5b910fd3d7
fix: mpv config TextField dpad/back key navigation
...
Add PopScope to handle Android TV platform-level back, add down arrow
exit on last line, and fix back key trap when save preset is disabled.
2026-03-07 20:32:02 +01:00
edde746
c56e73eefe
feat: add content strip for dpad navigation
2026-03-07 20:17:28 +01:00
edde746
7cfa18e1e9
fix: remove redundant thumbnail popup during dpad timeline seeking
2026-03-07 18:29:52 +01:00
edde746
06034bb8e7
feat: scale queue items for tablet screens
...
close #644
2026-03-07 17:06:13 +01:00
edde746
7b20543fa1
fix: support non-1x playback speed in audio position bypass
...
Scale raw AudioTrack position by playback speed to convert from real
time to media time. Captures reference points on speed changes for
correct mid-playback transitions.
2026-03-07 16:40:48 +01:00
edde746
d207185130
fix: bypass DefaultAudioSink position clamp for large audio frames
...
Fixes video stutter on files with 120ms Opus audio frames (e.g. Amlogic
S905X4). DefaultAudioSink clamps getCurrentPositionUs to writtenDuration
which lags between bursts, creating a sawtooth pattern that drops video
frames. PositionFixAudioSink bypasses the clamp using the raw AudioTrack
position when the delegate falls behind.
2026-03-07 16:27:29 +01:00
edde746
66628e1bca
feat: add pt, ja, ru, pl, da, nb translations
2026-03-06 22:34:45 +01:00
edde746
beff4f9ca0
feat: add watch together playback rejoin flow
...
close #639
2026-03-06 20:42:18 +01:00
edde746
1318c54c0c
feat: improve performance overlay layout and add decoder details
2026-03-06 19:25:41 +01:00
edde746
b05d69b10f
fix: filter hub detail view by library section
...
close #638
2026-03-06 18:36:45 +01:00
edde746
7825490b0f
fix: filter Windows file-lock cache manager errors from Sentry
2026-03-06 18:30:47 +01:00
edde746
c06b0efedc
fix: correct linux package license metadata
2026-03-06 15:07:48 +01:00
edde746
43f4736936
fix: reopen ExoPlayer when tunneling mode changes
2026-03-06 13:49:03 +01:00
edde746
cf8f1849aa
fix: harden watch together teardown sync
2026-03-06 12:52:28 +01:00
edde746
c9a1bc97c4
fix: remove dead state paths and restore track hotkeys
2026-03-06 11:50:45 +01:00
edde746
581f665f58
fix: restore iOS inline player after PiP closes
2026-03-06 11:35:25 +01:00
edde746
7b3a8ad642
fix: guard missing client in season detail screen
2026-03-06 11:09:42 +01:00
edde746
c1e2bc36ea
refactor: share Apple MPV core and media helpers
2026-03-06 10:16:33 +01:00
edde746
72aed76a1c
fix: remove unused _applyFilterWithFallback
2026-03-06 07:55:59 +01:00
edde746
7ae293631a
fix: trust server-computed subtitle selection flags
...
The Plex server already applies all preference levels (account,
show/season, per-item) into stream `selected` flags. Remove redundant
client-side subtitleMode/account prefs logic and show/season metadata
fetching (2 fewer API calls per episode).
2026-03-06 04:25:47 +01:00
edde746
f3d24866b7
fix: trust Plex stream selection for subtitle defaults
2026-03-06 03:43:10 +01:00
edde746
985ba5d2c7
fix: toggle PiP button closes PiP when already active
2026-03-06 03:08:28 +01:00
edde746
f7ca80de77
Merge pull request #637 from micahmo/fix/setting-episode-artwork
...
Fix an issue setting episode artwork
2026-03-06 03:08:20 +01:00
edde746
9730ffd541
fix: coerce subtitleMode string from Plex API to num
2026-03-05 21:53:52 +01:00
edde746
232f018ae7
fix: report JSON deserialization errors
2026-03-05 21:00:52 +01:00
edde746
8571ee74c4
fix: use addedAt for unwatched on-deck sort fallback
...
close #636
2026-03-05 19:57:36 +01:00
edde746
9566e0b897
perf: parallelize show/season metadata fetches
2026-03-05 18:56:52 +01:00
edde746
863f90f65d
fix: respect series-level subtitle mode for episodes
2026-03-05 18:55:44 +01:00
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
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
edde746
c8e6cac00c
bump mpv windows to 20260303
2026-03-03 17:18:57 +01: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
edde746
013bcfbece
fix: library continue watching hidden
...
close #615
2026-03-03 12:17:37 +01:00
edde746
ebf2d1e516
fix: shorten nav labels
...
close #612
2026-03-03 12:13:43 +01:00
edde746
4bce668df6
fix: asymmetric divider in track sheet on landscape
2026-03-03 12:04:03 +01:00
edde746
c64c7defc3
fix: disable session tracking
2026-03-03 11:05:54 +01:00
edde746
1629801074
feat: add swipe-up content strip for mobile video controls
2026-03-03 11:03:31 +01:00
edde746
cd36e3acb0
feat: switch crash reporting from BugSink to Rustrak
2026-03-03 09:19:25 +01:00
edde746
7001032e51
feat: combine audio & subtitle track sheets into one
2026-03-03 07:16:45 +01:00
edde746
3a0bac4446
docs: add winget install option to readme
2026-03-03 06:35:15 +01:00
edde746
1c31f0effa
fix: request audio focus before player init guard
2026-03-02 23:12:00 +01:00
edde746
01e61c590a
fix: tighten startup connection timeouts for dead servers
2026-03-02 23:09:09 +01:00
edde746
a00e2b78d6
feat: replace mpv config UI with raw text editor
2026-03-02 23:06:05 +01:00
edde746
b5904bc477
fix: auto-retry large downloads after native retries exhausted
...
Increase native retries 3→5 and add app-level auto-retry (3 rounds,
30s delay) so large downloads that fail with "unexpected end of stream"
recover automatically. 404s fail immediately without retry.
2026-03-02 21:43:01 +01:00