What is it?
FunSync Player is a free local desktop video player built for funscript playback. Everything in one
app — player, editor, library, device sync, and EroScripts integration.
v0.4.0 Update — VR, Web Remote, and Linux
New release is live. Existing installs: you’ll be prompted to update on next launch — click
Download, then Restart Now when you’re ready. The updater no longer installs silently on quit —
you control the timing.
VR support (the big one)
Two modes, both plug into your existing FunSync setup:
- Quest standalone — FunSync serves your full library to HereSphere on your headset.
Thumbnails, funscripts, chapter markers, and filters all work. Pick a video in the headset → devices
on the PC sync automatically. Bluetooth toys drive from the PC’s Buttplug.io stack, the Quest never
touches Bluetooth. - PCVR companion — HereSphere running on PC (SteamVR, Virtual Desktop, etc.) — FunSync
reads their timestamp API and routes to every connected device.
Set-up takes one URL copy-paste on the Quest side.
Web Remote
Control FunSync from your phone on the same WiFi: http://<PC-IP>:5123/remote/. Browse your
library, pick a video, devices on the PC follow along. Works for Handy, Buttplug, TCode, Autoblow.
Installable as a PWA from the phone’s home screen for a native-feeling launcher. No app store, no
account.
Shares the desktop’s library, collections, playlists, categories, search, and folder browse.
View-only for groupings (create/edit on the desktop).
VR ↔ Web Remote mutex
Last-wins handover. If you’re driving from the phone and start a VR session, the phone bridge tears
down cleanly and the VR session takes over — toast tells you what just happened. Devices stay bound
to one source, no silent stepping on each other.
A small status card docks bottom-right whenever an external source is driving playback, showing
what’s connected, what’s playing, and which devices are live. 50-entry session history with a clear
button.
Library — folder-tree browse + source management
- Folder mode alongside grid and list. Folder cards show thumbnail mosaics of their contents.
Breadcrumb nav, collapse per source. - Pin folder as collection — right-click any folder to make it a selectable collection that
auto-tracks new videos you drop in. - Source management — drag sources to reorder, per-source enable/disable toggle (keep offline
drives in the list without scanning), overlap detection at add-time, rename/delete. - Search overhaul — type the exact filename, the matching video is now always first. Token
matching, diacritic folding (caféfindscafe), path + collection + category search, all shared
between desktop and phone.
Linux support
.AppImage build now ships alongside the Windows installer. Built and tested on Ubuntu; should work
on Fedora / SteamOS. Mark it executable, run, done.
Device fixes
- Handy WiFi/BT ghost fixed — the app now polls the handyfeeling cloud every 10s. When you
switch the device to BT mode, the stale WiFi indicator clears within ~10 seconds instead of
lingering forever. Big quality-of-life fix if you use the same device via both paths. - Buttplug per-device state cleanup on removal — no more inherited axis/mode settings when a new
device takes a recycled Intiface index. - Custom routing — index-first matching — routes now survive Intiface restarts by tracking
stable device indices + names; reassign themselves automatically if Intiface reshuffles. - TCode — full 10-axis UI (L0/L1/L2/R0/R1/R2/V0/V1/V2/A0) with per-axis enable + min/max range.
- Offset / sync panel — the Handy offset on the Handy tab and Sync tab now stay in sync live.
When VR is driving, each device row shows the total effective offset (device + VR pipeline added
together) so you can see the stacking and don’t double-compensate.
Small stuff that matters
- Auto-updater: you choose when to install. No silent install on quit.
- Search “Sorted by relevance” pill on the library header while a query is active.
- Unmatched tab: speed sort options correctly disabled (nothing to sort on).
- Kebab menu auto-closes cleanly on scroll/tab/filter change (no ghost menus).
- List-view subtitle + funscript badges + category dots now render correctly (previously threw
silently in list view). - Rapid-seek (J/L spam) no longer leaves the Handy briefly silent after a flurry.
- Playlists + categories: auto-detected funscripts like
Foo (Part B).funscriptnow found when
playing from those views, not just manually associated ones. 1544JS tests +172Python tests, matrix-built on Windows and Ubuntu.
Full changelog: Release v0.4.0 ·
DaveMakesWaves/funsync-player
v0.3.0 Update — Device Expansion + Custom Routing
New release is live. If you already have FunSync installed, you’ll be prompted to update on next
launch.
New device support (experimental):
- E-stim devices (DG-LAB Coyote, MK-312BT, ET-312) via Buttplug.io — with safety cap and ramp-up
- Rotation devices (Vorze A10 Cyclone) via Buttplug.io
- TCode serial (OSR2 / SR6) — direct USB connection, multi-axis
- Autoblow Ultra / VacuGlide 2 — cloud API sync
These are built to spec and tested in simulation but not verified on physical hardware yet. If you
own any of these devices, I’d love your feedback.
Custom Routing — multi-device script assignment:
- Assign different funscript files to different devices per video
- Set up in the Associate Funscript modal → Custom Routing tab
- Saved per-video, persists across sessions
- Works with any combination of Handy, Buttplug, TCode, Autoblow
Library improvements:
- Filters, search, sort, and view mode now preserved when navigating back from player
- No more full re-scan every time you return to library
- Loading spinner during scan
- External drive hot-plug detection — toast on disconnect/reconnect, auto-refresh
- Fuzzy auto-matching catches near-identical filenames that exact matching missed
Other fixes:
- Controls auto-hide properly after mouse stops moving
- Devices stop immediately on back button (no delay)
- Variant selector shows correct name when switching back to Default
- Script variations naming modal — pick from suggestions or type custom name
Full changelog: Release 0.3.0 · DaveMakesWaves/funsync-player · GitHub
Release 0.3.0 · DaveMakesWaves/funsync-player · GitHub |
Post this as a reply to your existing thread, or edit the original post to add it at the top with a
horizontal rule separating it from the original content.
Early Release — This is a fresh v0.3.0 launch. It works well but there will be
bugs. If anything seems broken or behaves unexpectedly, drop a comment below or open an issue on
GitHub and I’ll patch it. Active
development.
Why another player?
FunSync is a single install — open it, point it at your video folder, and go.
What you get:
- Video player with heatmap seek bar, thumbnail preview, subtitles, A-B loop
- Library with thumbnail grid, search, playlists, categories, hover video preview
- Built-in script editor edit and play without switching apps
- The Handy + Buttplug.io with auto-connect on startup
- Multi-axis support route vib scripts to Buttplug.io vibrate devices
EroScripts Integration
Search and download scripts without leaving the player. Log in once, search by video name, one click
to download. Scripts auto-rename to match your video and load immediately.
Load a video without a script? The app searches EroScripts automatically and notifies you if a match
exists.
Gap Auto-Skip
Scripts with long idle sections? The app detects gaps and either shows a Netflix-style skip button
or auto-skips with a countdown. Configurable threshold from 5-60 seconds. Press G to skip manually
anytime.
Script Variants
Got multiple versions of a script (soft, intense, half-speed)? FunSync detects them automatically
from filenames. Switch mid-playback with the V key — heatmap updates instantly, device re-syncs.
Script Smoothing
PCHIP interpolation for Buttplug.io devices — the same algorithm MultiFunPlayer uses. Smooths out
jerky direction changes without overshoot. Configurable in Settings alongside a speed limiter.
Device Support
- The Handy — HSSP cloud sync, auto-connect, drift detection, re-sync
- Buttplug.io / Intiface Central — auto-connect on startup, auto-scan, multi-device
- Multi-axis — dedicated .vib.funscript routed to Buttplug.io vibrate devices while Handy
handles stroke - No device? No problem — it’s also just a solid video player on its own
Built-in Script Editor
OFS-style action graph built into the player. Numpad placement, beat detection, waveform display,
pattern generator, gap filler, modifiers (half/double speed, reverse, remap range). Edit a script
and immediately play it back with your device — no export/import cycle.
Heads up
- Windows only for now Linux version is available but untested
- Script editor and multi-axis are usable but still being refined
- No code signing yet — you’ll get a SmartScreen warning on first install. Click “More info” → “Run
anyway” - This is a passion project, not a company
Feedback welcome
What’s missing? What’s broken? What would make you switch from your current setup? I’m actively
developing this and want to build what the community actually needs.

