mpvRex v4.4.0 is here! This release introduces a beautiful new Glass Theme player UI, customizable circular seek animations, embedded cover art thumbnails, advanced zoom controls, a redesigned MoreSheet, significant playback performance improvements, and dozens of stability and localization fixes.
🔥 Glass Theme Player UI
The entire player interface has been reimagined with a sleek glass-morphism design language:
- Glass Controls & Seekbar: Player controls, buttons, title bar, sliders, OSD, and slide-to-unlock all render with translucent glass backgrounds.
- Glass Seekbar Container: Seekbar and timestamps are wrapped in a unified glass container row with refined capsule paddings.
- Glass Speed Indicator: A compact glass-themed speed indicator with animated speed button transitions.
- Glass Shorts Controls: Shorts player controls now use the glass style with a toggleable back button and outlined tab icons.
- White Progress Bar: Added a toggle for a clean white video progress bar on the player screen.
✨ New Features
- Mark As New: Introducing a new "Mark As New" media state — manually mark any video as New and it renders a forced NEW badge, even on older files. Watched state is cleared on last played, with active batch-based global last played highlighting for media and folders and per-folder watched/active highlight resolution.
- Circular Double-Tap Seek: Implemented a fully customizable circular double-tap seek overlay with configurable summary, default-on for new users, and smooth transition animations.
- Embedded Cover Art Thumbnails: Support for extracting embedded cover art and sibling external artwork as local video thumbnails (closes #158, closes #190).
- Advanced Zoom Controls: Independent video scaling and black bar removal controls. (Thanks @jhaiian!)
- MoreSheet Tabs: Added Aesthetics, Gestures, and Controls tabs to the MoreSheet bottom sheet with preference-style orientation selector.
- Bottom Controls Layout: Added bottom controls below seekbar and "Show controls on play start" toggle to ControlsTab.
- Add to Playlist in Library: Enabled "Add to Playlist" action in Media Library view mode.
- Playlist Grid Columns: Playlist grid now respects folder column settings with center-aligned folder titles.
- Updated mpv-lib: Bumped mpv-lib to v0.0.7 and replaced local AAR with remote dependency from GitHub Pages.
- Spanish Translation: Updated Spanish translation and fixed typos in GPU error messages (#214). (Thanks @FFSA47!)
- Arabic Translation: Continued Arabic localization with new strings, pluralization fixes, and hardcoded string extraction (#196, #201, #219). (Thanks @AhmedRX20!)
- i18n Hardcoded Strings: Extracted hardcoded strings in player controls, Advanced settings, PlaylistSheet, About, ConfigEditor, Appearance, and Gesture screens (#192, #202, #204, #208, #211). (Thanks @AhmedRX20!)
⚡ Performance & Optimizations
- Per-Instance MPV Observers: Observe all UI-consumed properties (time-pos, duration, tracks) per-instance to survive background resume and prevent frozen UI.
- Gesture JNI Elimination: Eliminated per-event JNI reads during pan and zoom gestures for smoother interaction.
- Reactive StateFlow: Replaced volatile polling loop with reactive StateFlow in MainScreen and consolidated playback state observers into debounced flows.
- Coroutine Sub-Seek: Replaced handler delay with coroutines for mpv sub-seek position diff calculation.
- Theme Palette Update: Updated default theme palette to match app logo color #3B82F6.
- Grid/List Styling: Left-aligned grid view card elements, aligned font weight with list view, and made scrollbars conditional and fixed size.
- Default Preferences: Pan/zoom disabled by default for new installs; seekbar style defaults to Standard; showSeekBarWhenSeeking disabled by default.
🐛 Stability & Bug Fixes
- Native Teardown Crash: Synchronized libmpv native teardown and surface detachment to prevent crashes (Fixes #216).
- ANR Prevention: Added bounded timeout to
runBlockinginonDestroyto prevent UI thread ANRs. - Frame Flash Fix: Suppressed first frame flash during video switching and on video resume using paused load.
- Subtitle Deletion Bug: Prevented local subtitle file deletion on track remove and wrapped download response in
useblock. - Playback State Lookups: Prioritized file path matching over display name in playback state lookups.
- Slot-Table Corruption: Hoisted conditional
rememberandLaunchedEffectcalls to prevent slot-table corruption in file browser and Shorts player. - Browser Selection: Persisted selection manager across reloads, fixed hard refresh on resume, and aligned card/list selection outlines.
- Seek Layout Clipping: Eliminated circular seek layout bounds clipping during transitions and fixed chevron glitch.
- Navigation Bar Padding: Conditionally applied bottom navigation bar padding to player controls.
- Subtitle Source Fix: Selecting "All" subtitle sources now correctly checks all sources (#198). (Thanks @sharifmdathar!)
- Pluralization Fix: Fixed Arabic/Spanish plural handling for horizontal video duration string (#217). (Thanks @AhmedRX20!)
Checksums
| Variant | SHA-256 |
|---|---|
| arm64-v8a | c46f0c6d8f0992e42687bde91522deb6de5fa8cf53ac8c754af793f369874320 |
| armeabi-v7a | 11fe03908ecef30c03f75c98e26b343e16f32a3e241632b5dc5f8c28b86b83c7 |
| Universal | 3c84411ebdad1031691d844178345e4e50ad19b6977c608c6c2d801e5ffe418c |
| x86 | cb3b3e7ff119d69e6603462305e8712ea1d16598f8dd0a636fbcac0dee5ca5e0 |
| x86_64 | 01cea482110978fa1c79035611685933aff97c159b5cb950605406b2dae79434 |