1.5.0-preview.2 — Preview Release
📦 MpvLib Update
- Updated mpv library and its dependencies
⚡ Performance & Startup
- Faster video open: Opening a video file now uses
Dispatchers.Defaultfor theplayFile()call — keeps the UI thread free and the player starts faster - Leaner startup sync: The MPV directory sync no longer blanket-copies
shaders/andfonts/on every launch — only config files, scripts, andscript-opts/are synced upfront. Shaders referenced inmpv.confare pulled on demand viasyncReferencedShaders(), and fonts are handled by the font manager. This cuts down startup time noticeably, especially for users with large shader packs - Removed Dynamic Speed Overlay: The old
SpeedControlSlider(a full-size overlay with a dot-track slider) andCompactSpeedIndicatorare gone. Hold-speed is now shown as a simple, clean text pill (e.g. "2x"). TheshowDynamicSpeedOverlaypreference has been removed too — no more toggles, no more clutter - Snap-to-preset hold speed: The hold-speed gesture now snaps to fixed presets (0.5x → 1x → 1.5x → 2x → 2.5x → 3x → 3.5x → 4x) instead of a free-form slider. The settings slider also snaps to these values, so what you see is what you get
- Hold speed range capped: Boost speed is now capped at 0.5x–4x range (previously went up to 6x)
📱 Tablet Dual-Pane Layouts
- Folder view dual pane: On tablets (600dp+ smallest screen width), you can now see your folder list on the left and a video list on the right — tap a folder, see its contents immediately beside it. A new "Dual Pane View" toggle in Appearance Settings lets you turn this on/off
- Settings dual pane: The Settings screen also gets a two-panel layout on tablets — the section list stays on the left, and the selected settings page opens on the right. The currently active section is highlighted with a subtle background
- Back navigation in dual pane: Pressing back in dual-pane mode deselects the folder/settings page instead of closing the screen
🎥 Player & Subtitles
- Invert swipe subtitle direction: New "Invert swipe subtitles direction" setting in Gesture Preferences. When enabled, swiping left-to-right seeks backward and right-to-left seeks forward — useful if you prefer the mirrored behaviour
- Screenshot overhaul: Screenshot filename templates got a proper rework:
%wH,%wM,%wS,%wTnow use the video playback position (not the wall clock time) — so screenshot filenames actually match the video timestamp- New template placeholders:
%F(filename without extension),%P(position asHH:MM:SS.mmm),%p(position asHH:MM:SS) %fnow resolves from the actual filename first, falling back to media-title — more reliable naming
- Korean Jamo subtitle fix: Downloaded subtitles that use Korean Jamo (composite characters) now go through NFC Unicode normalization. No more broken/corrupted Korean glyphs in subtitles
- Subtitle search keyboard fix: Added
android:windowSoftInputMode="adjustResize"to PlayerActivity — the subtitle search dialog no longer gets hidden behind the on-screen keyboard - Subtitle persistence fix: External subtitles and subtitle settings now survive across playback sessions more reliably. Added
addSubtitleSuspend()(suspend version) for better coroutine handling during subtitle loading - Cache indicator fix: The buffered range on the seekbar no longer double-counts the played portion — it now shows the correct remaining buffer ahead of the playhead
- Color hex fix:
toColorHexString()now manually extracts ARGB components instead of usingInt.toHexString()which produced wrong values for some colors
🛠️ Lua Script Improvements
- Lua
require()support: Custom Lua scripts usingrequire()can now find modules inscript-modules/subdirectories. The app recursively syncs helper folders fromscripts/to internal storage, so Lua's C-levelfopen()can actually read them. Modules are also cleaned up when scripts are disabled in settings
🧹 Cleanup
- Removed libpython binaries: Deleted ~50 MB of unused
libpython_bin.sofiles from all 4 architectures — they were never loaded by the app - Simplified MPV version display: Removed the
cleanBundledMpvVersion()hack in CrashActivity — MPV version now shows cleanly without needing string patching - Fonts folder no longer auto-set: When changing the base storage root, the fonts folder preference is no longer blindly overwritten — it's only cleared if it was pointing at the old root. This prevents accidental font-folder resets
Checksums
| Variant | SHA-256 |
|---|---|
| arm64-v8a | 3ce4c3a5f27f1ea6f43473f4b717f34c1246a1357e858dc80eb11f28bfa4e034 |
| armeabi-v7a | f3c42e702ebd8025d2beee00e9d128c4f424cac40bf645db25ce1fe8b1276f17 |
| Universal | fdfab4473f3571b3992600d891cfa799aab7214758388bb4fdfab26d0d32421f |
| x86 | dcd837baef29c67591a136d5f5cbfcfadb44ad59635c4ba4a21ea1f3bdebb91e |
| x86_64 | 38068d2702c5159786fc6ead673fcde29175654603c427a8646b43cad5983d55 |
What's Changed
- Refactored Search Functionality by @hamzamusht550 in #154
- ui: center player controls, fix subtitle hitbox under zoom/pan, and lower min subtitle scale limit by @Arnab11 in #159
- perf(startup): defer cold-start work to cut first-frame time by @jonymonejony in #160
- feat(settings): add option to invert swipe subtitles gesture direction by @Arnab11 in #171
- feat(ui): implement tablet dual-pane layouts for folder view and settings by @Arnab11 in #188
New Contributors
- @hamzamusht550 made their first contribution in #154
Full Changelog: v1.4.1-final...v1.5.0-preview.2