Commit Graph
100 Commits
Author SHA1 Message Date
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
edde746 47f2afb665 feat: bottom sheet polish 2026-03-02 21:24:53 +01:00
edde746 3b2e278868 fix: hide redundant items in context menu 2026-03-02 20:42:47 +01:00
edde746 8baa84c06f fix: use player.state.track for selected subtitle check 2026-03-02 19:25:13 +01:00
edde746 92b589213f fix(ci): add libcurl4-openssl-dev for Linux builds 2026-03-02 19:21:26 +01:00
edde746 94395feaba feat: implement sub-visibility toggle
Closes #597
2026-03-02 19:07:56 +01:00
edde746 c372920965 fix: resolve out-of-scope settingsService in video player 2026-03-02 18:26:05 +01:00
edde746 5ab6af1b02 feat: respect system 24h time format setting
Closes #605
2026-03-02 18:19:52 +01:00
edde746 34252b9ba7 fix: persist aspect ratio and shader settings
Closes #602, closes #603
2026-03-02 18:19:46 +01:00
edde746 8d3f448fdf feat(macos): add picture-in-picture support 2026-03-02 18:19:36 +01:00
edde746 7ebbfb9ef7 fix(i18n): add missing pip keys 2026-03-02 14:31:40 +01:00
edde746 a008f86ee2 feat(ios): add picture-in-picture support
close #44
2026-03-02 14:06:11 +01:00
edde746 5f1c51ff6c fix: skip specials in playback order
close #601
2026-03-02 07:32:20 +01:00
edde746 229d6b24e1 feat: crash log reporting 2026-03-02 07:29:21 +01:00
edde746 9dc0654225 fix(android): prevent dispatchWindowVisibilityChanged NPE during disposal 2026-03-02 06:10:00 +01:00
edde746 36277076bd fix(android): cap demuxer buffers + sync mpv dispose 2026-03-02 02:30:48 +01:00
edde746 f96ef0740d fix(android): move JSON parsing off main thread 2026-03-02 02:24:08 +01:00
edde746 6bee1a6c38 fix(android): add opensles audio fallback 2026-03-02 02:05:24 +01:00
edde746 0dbba6439d fix: hide hero carousel indicators in dpad mode
close #600
2026-03-02 01:50:51 +01:00
edde746 7ac888cd46 fix(windows): installer norun arg 2026-03-01 20:10:03 +01:00
edde746 938291dbf6 bump mpvkit 2026-03-01 16:55:59 +01:00
edde746 f5715987fc feat: migrate iOS to scene lifecycle 2026-03-01 15:06:45 +01:00
edde746 7c0e86c3cf bump mpvkit 2026-03-01 13:59:44 +01:00
edde746 9c7cb7439f feat: add winget package manager support 2026-03-01 13:11:11 +01:00
edde746 3bf7ff3d48 feat: improve LiveTV guide visual contrast and polish
close #494
2026-03-01 12:24:56 +01:00
edde746 138c8f9fd8 feat: auto picture-in-picture
close #527
2026-03-01 10:52:31 +01:00
edde746 3a5cab956d refactor: extract shared Android utilities from player cores 2026-03-01 10:40:59 +01:00
edde746 796db94896 remove unused sliver_adaptive_media_builder 2026-03-01 10:08:17 +01:00
edde746 d1dacae581 feat: show server name in search results
close #515
2026-03-01 09:24:53 +01:00
edde746 a62a01b9c3 feat: bridge ExoPlayer logs to Dart + device info in logs screen
ExoPlayerCore emitLog() forwards native diagnostics (init, tracks,
tunneling, watchdog, errors, framerate, audio focus) to Dart via the
existing log-message event when debug logging is enabled. URIs are
redacted before forwarding. setLogLevel method channel wires into the
existing debug toggle in video_player_screen.

Logs screen now shows a device info header (app version, OS, model,
TV mode) and includes it in copy/upload output.
2026-03-01 04:59:35 +01:00
edde746 ea9e1a3dc6 fix: bypass IME stage for dpad events 2026-03-01 04:59:35 +01:00
edde746 54ceee18a6 fix: remove alpha 0.999 hack from mpv SurfaceView
No longer needed since Flutter uses RenderMode.texture (TextureView),
which composites above SurfaceView naturally without overlay conflicts.
2026-03-01 04:02:56 +01:00
edde746 d0f2122944 feat: add tunneled playback setting + frame watchdog for HDR black screen
Adds a user-facing toggle for MediaCodec tunneling (Android/ExoPlayer)
and a rendered-frame watchdog that auto-falls back to MPV when ExoPlayer
produces 0 video frames after 8 seconds of audio playback.
2026-03-01 04:02:36 +01:00
edde746 1d739c74ec fix: use universal APK for Amazon Appstore
Amazon Appstore doesn't auto-target by ABI like Google Play,
so split APKs could serve the wrong architecture to devices.
2026-03-01 03:47:46 +01:00
edde746 5dfc5af4c5 fix: only blur episode thumbnails
close #595
2026-03-01 03:01:22 +01:00
edde746 8a5f1ddea9 feat: add audio normalization toggle (MPV loudnorm filter) 2026-03-01 02:49:48 +01:00
edde746 bbfe7cf783 fix: use explicit mediacodec hwdec chain on android 2026-03-01 02:46:50 +01:00
edde746 b78bc3e869 fix: only show timeline thumbnail on direct timeline interaction 2026-02-28 19:48:46 +01:00
edde746 2405cd179b fix: use forked libass-android with font buffering fix 2026-02-28 19:00:55 +01:00
edde746 fa9c5afeb8 fix: force FFmpeg for FLAC audio decoding 2026-02-28 15:24:31 +01:00
edde746 0e84ce9166 fix: desktop context menu overflow 2026-02-28 15:00:59 +01:00
edde746 9f81671603 fix: suppress repeated android log spam from MPV surface and stats polling
- Deduplicate android-surface-size updates with lastSurfaceSize cache
- Short-circuit ensureFlutterOverlayOnTop after initial application
- Remove deprecated cache-used property query
- Skip unavailable MPV properties on Android (display-fps, HDR metadata)
- Gate video-dependent stats queries behind hasVideo check
2026-02-28 15:00:29 +01:00
edde746 15e1f0b9e2 fix: use mediacodec on android
close #593
2026-02-28 12:35:43 +01:00
edde746 014f9456f6 fix: defer view removal to avoid AOSP dispatchWindowVisibilityChanged NPE 2026-02-28 10:23:28 +01:00
edde746 1bb4adfcf1 fix: don't pause playback on duckable audio focus loss
close #592
2026-02-28 09:22:13 +01:00
edde746 08399e5d37 feat: respect server collection mode in library browse
close #580
2026-02-28 07:06:48 +01:00
edde746 48c9dcae1b fix: apply hide spoilers setting to hero section
close #588
2026-02-28 06:18:11 +01:00
edde746 078f6b29d5 fix: recalculate video surface size on orientation change
close #587
2026-02-28 06:16:52 +01:00
edde746 60d1431443 Merge pull request #538 from micahmo/feature/expand-episodes
Allow episode descriptions to be expanded
2026-02-28 05:48:22 +01:00
edde746 a6119414ca Merge branch 'fix-plex-notifications' 2026-02-27 22:20:12 +01:00
edde746 4929e7d42b fix: hardcode app name in connection probe headers 2026-02-27 22:19:24 +01:00
edde746 18614022c0 feat: auto-dismiss skip segment buttons
closes #584
2026-02-27 22:13:03 +01:00
edde746 389a9622c3 fix: prevent OOM crash from infinite focus reclaim loop
Add re-entrancy guard to VideoPlayerScreen._onScreenFocusChanged()
and replace busy-wait spin loop with Completer in MediaDetailScreen.
2026-02-27 21:23:31 +01:00
edde746 4cebff4367 move debug output 2026-02-27 21:19:52 +01:00
edde746 3103cb5ee1 fix: harden offline playback and exoplayer fallback 2026-02-27 21:02:30 +01:00
edde746 7a0a911cd9 fix: prevent ASS subtitle stretching
close #579
2026-02-27 20:33:48 +01:00
edde746 03d62d2e2b fix: handle corrupted download paths missing leading slash 2026-02-27 19:05:05 +01:00
edde746 5ff5441baa fix: map ssa subtitle codec to .ass extension
close #569
2026-02-27 16:51:49 +01:00
edde746 c1e9911841 chore: update MPVKit to 0.41.0 on iOS/macOS 2026-02-27 16:41:27 +01:00
edde746 00667fe8b8 fix: add const constructors and remove unused imports 2026-02-27 15:43:34 +01:00
edde746 ab2f8cf6ff fix: normalize corrupted download paths on startup 2026-02-27 15:43:34 +01:00
edde746 edb285a279 feat: cache BIF file for instant preview thumbnails
close #565
2026-02-27 15:30:29 +01:00
edde746 11377362cb fix: duplicate hero tag error in logs upload dialog 2026-02-27 15:26:49 +01:00
edde746 1cdf1890cf fix: download playback issues (doubled path, audio language, spinner) 2026-02-27 15:26: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 b549432250 ci: exclude generated .g.dart files from sonar 2026-02-27 14:34:06 +01:00
edde746 b100c356fc ci: add flutter pub get to sonar workflow 2026-02-27 14:33:47 +01:00
edde746 045295b4c1 ci: add sonar project properties 2026-02-27 14:29:36 +01:00
edde746 ad9556e484 ci: add SonarQube workflow 2026-02-27 14:27:10 +01:00
edde746 7f03c15779 fix: restore FocusTheme import in libraries screen 2026-02-27 12:53:21 +01:00
edde746 cc30bee83a refactor: extract FocusableActionBar widget for reusable app bar actions
Replace duplicated focusable action button pattern across 8 screens with
a shared FocusableActionBar widget that handles focus nodes, D-pad
navigation, back key, and focus decoration automatically.
2026-02-27 11:55:19 +01:00
edde746 8559037a50 fix: logs screen d-pad navigation 2026-02-27 11:37:11 +01:00
edde746 732c09eec1 fix: cancel status stream subscription on dispose
Closes #571
2026-02-27 09:11:16 +01:00
edde746 602982d426 fix: remove low memory warnings during playback
Closes #576
2026-02-27 08:53:38 +01:00
edde746 7472e3a2f7 fix: broken imports 2026-02-26 14:57:37 +01:00
edde746 4588457319 refactor: consolidate files 2026-02-26 13:41:51 +01:00
edde746 e489a97847 fix: throttle demuxer-cache-time updates 2026-02-26 13:12:25 +01:00
edde746 2b5923d80b feat: square art in hero sections 2026-02-26 13:00:55 +01:00
edde746 5cf5b2f0a0 fix: mpv destroy/create ANR 2026-02-26 12:56:02 +01:00
edde746 a56ef0e3ca fix: throttle cache state parsing 2026-02-26 12:28:42 +01:00
edde746 8eda892b68 feat: themed splash screen with status messages 2026-02-26 11:55:45 +01:00
edde746 4b6c82b071 fix: hide alpha jump bar for small libraries 2026-02-26 11:55:45 +01:00
edde746 79350b8d71 feat: set avfoundation as preferred audio output on macOS 2026-02-26 11:55:45 +01:00
edde746 a5fa8a4c99 fix: don't clear buffer state on playback restart 2026-02-26 11:55:45 +01:00
edde746 a38aac7829 fix: artwork changing not working
- Use PUT instead of POST and singular element path (art/poster) to
  match Plex Web API behavior
- Set content type to application/octet-stream for binary uploads
- Add GestureDetector for mouse/touch tap support in artwork picker
- Always refresh detail screen metadata after returning from edit
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 e25fb4c10f fix: ExoPlayer resume position lost on tunneling change 2026-02-26 04:19:17 +01:00