Skip to content

MpvRx v1.5.0-preview.2

Choose a tag to compare

@github-actions github-actions released this 07 Jul 06:30

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.Default for the playFile() call — keeps the UI thread free and the player starts faster
  • Leaner startup sync: The MPV directory sync no longer blanket-copies shaders/ and fonts/ on every launch — only config files, scripts, and script-opts/ are synced upfront. Shaders referenced in mpv.conf are pulled on demand via syncReferencedShaders(), 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) and CompactSpeedIndicator are gone. Hold-speed is now shown as a simple, clean text pill (e.g. "2x"). The showDynamicSpeedOverlay preference 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, %wT now 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 as HH:MM:SS.mmm), %p (position as HH:MM:SS)
    • %f now 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 using Int.toHexString() which produced wrong values for some colors

🛠️ Lua Script Improvements

  • Lua require() support: Custom Lua scripts using require() can now find modules in script-modules/ subdirectories. The app recursively syncs helper folders from scripts/ to internal storage, so Lua's C-level fopen() 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.so files 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

Full Changelog: v1.4.1-final...v1.5.0-preview.2