This update mainly focuses on External Player Mode, Handy synchronization improvements, Multi-axis script handling, Stroke Range UI improvements, Gap Fill / Auto Skip stability, FunOSR compatibility based on real hardware testing, and overall performance improvements.
Starting with this version, ScriptPlayer+ is no longer limited to playing videos inside the app. You can now open videos in an external player while ScriptPlayer+ handles script synchronization and device control.
It’s still more of an experimental feature than a finished one, but it’s especially useful if you’re using a player for uncensored playback.
This update also includes a large number of bug fixes and performance optimizations. I went through as many remaining issues as possible, so the overall experience should be much smoother than before.
External Player Mode
Added a new External Player Mode.
Currently supported:
-
JAVPlayer
-
JAVPlayerEZ
-
mpv
-
PotPlayer
-
VLC
-
Custom executable
Each player can have its own executable path saved, and this feature is only used for video files.
mpv and VLC support basic playback control and synchronization.
JAVPlayer, JAVPlayerEZ, and PotPlayer currently don’t expose a stable remote control interface, so they’re mainly supported through “Open Externally.”
If your preferred player isn’t on the list, you can still use it through the Custom executable option. I also tested this with IINA on macOS.
Handy Wi-Fi Compatibility Mode
Added a compatibility mode for older Handy devices, especially Handy 1.
Some complex scripts could fail with HSSP setup timed out because of hardware limitations combined with server response delays.
When enabled, this option gives Handy more time to prepare the script and automatically retries a few times if setup fails.
If your network connection is actually unstable, synchronization may simply take a little longer.
Even on newer Handy models, if you occasionally encounter the same timeout error due to server-side issues, this option can often help complete synchronization successfully.
Handy Upload & Synchronization Improvements
Improved the overall Handy upload and synchronization workflow.
-
Reduced issues when files changed during upload/synchronization
-
Improved cases where Sync HSSP could get stuck with Auto Play enabled
-
Improved HSSP setup timeout handling
-
Fixed upload/connection status messages remaining on screen
Previously there was a bug where replaying the same file after HSSP synchronization could completely fail to synchronize again. That issue has now been fixed.
Multi-axis Script Improvements
Improved multi-axis script handling and per-axis funscript detection.
-
Fixed single-axis scripts always being detected as L0
-
Improved per-axis funscript detection
-
Improved bundled multi-axis script detection
-
Improved Script Variant panel behavior
-
Reduced unnecessary duplicate script parsing
This should greatly reduce cases where non-L0 axis scripts weren’t detected correctly or axis files were matched incorrectly.
Stroke Range UI Improvements
The Stroke Range settings UI has been redesigned to make it easier to understand.
Instead of only displaying minimum and maximum values, the slider now clearly shows the actual movement range.
This makes adjusting scripts with movement that’s too weak or too aggressive much easier.
Gap Fill / Auto Skip Improvements
Improved both Fill Script Gaps and Auto Skip.
-
Fixed gaps in the middle of scripts not being filled correctly
-
Prevented random fill movement from interfering with intentional large movements
-
Added Jump Delay to Auto Skip
-
Reduced false positives from black screens and codec warnings
Previously, start/end gaps worked correctly while gaps in the middle sometimes remained empty. In other cases, intentional slow movements could accidentally receive random fill actions.
The detection logic is now much more conservative.
Serial / FunOSR / OSR Improvements
Until recently I didn’t own any real OSR hardware, so support mainly relied on community feedback.
Thanks to FunOSR, I now have an SR1 2.0 Twist available for development and testing.
Going forward, new releases will be tested directly on real FunOSR hardware before they’re released whenever possible.
I still don’t have direct access to multi-axis devices like the SR6, but I’m continuing to maintain compatibility as much as possible.
Changes include:
-
Improved wired OSR/FunOSR pause, stop, and home handling
-
Restored idle keepalive behavior
-
Fixed crashes caused by serial callbacks during application shutdown
-
Added and updated CraftyHandy SR6 serial profiles
-
Improved FunOSR reboot and connection persistence
Audio Improvements
Some improvements were also made to audio playback.
-
Reduced heavy work during playback startup
-
Improved album art and subtitle detection
-
Improved parent-folder artwork searching
Since this still depends heavily on individual file structures, some media collections may still behave differently.
Miscellaneous
-
Improved fullscreen and Script Variant panel behavior
-
Improved pause/stop handling
-
Fixed several shutdown crashes
-
Fixed launching macOS .app external players
-
Improved internal script scanning performance
-
Fixed various bugs reported by users
Downloads
There is a critical bug affecting normal use, so a hotfix has been released. If you have already updated, please wait a moment and then download and reinstall the latest version of the player.
11:45 PM: A hotfix for the Gap Fill feature has been re-released. If you already updated earlier, reinstalling is recommended.
Around 1:00 AM: We discovered a bug affecting the “Sort by Modified Date” feature. Another hotfix will be re-released shortly. Sorry for the inconvenience. ![]()
GitHub
https://github.com/sioaeko/scriptplayer-plus
Release
https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.2.8
Feedback
https://sioaeko.github.io/scriptplayer-plus-feedback/index.html


