Skip to content

0.7.0

Choose a tag to compare

@github-actions github-actions released this 29 May 07:14
· 16 commits to main since this release

v0.7.0 — Editor v2, Per-Device Controls, Looping, and a Pile of Fixes

Auto-update from v0.6.x. All settings preserved.

The biggest release since launch — the editor finally has its own monitor, every device class got the same depth of controls, and a community-reported multi-axis bug is fixed. Plus loop, autoplay, and a stack of reliability work surfaced from your feedback.


✏️ Editor v2 — pop out, stack axes, OFS parity

Editor opens in a separate window for second-monitor users; main window collapses to just the video. Pop-out canvas is fully editable, every editor hotkey works, drag-streams collapse to one undo step.

  • Stacked multi-axis lane view — toggle "show all axes at once." Inactive axes render as read-only previews above the main editing canvas, locked to the main timeline. Click any preview to swap which axis is active. Community ask from an SR6 owner.
  • OFS-parity hotkey pack — numpad lands on 0/10/20/.../90 (not 0/11/22), E equalize, End move-to-playhead, Q alternating insert, Home repeat-last-stroke, Shift+B/Ctrl+B bookmark nav, [/] speed step, Ctrl+Alt+Left/Right select before/after playhead. Simplify dialog with live "will remove N of M" preview. Export Heatmap PNG.
  • Multi-band waveform (Shift+W) — three stacked traces (low / mid / high) tinted per band. Voice fundamentals show in mid, slap transients in high. Pure DSP, no ML.
  • Voice-activity overlay (V) — thin "VOICE" strip showing speech segments.

🎮 Device controls — parity across every device class

Community ask from a ScriptPlayer user. Range setting for every device, not just Handy.

  • Per-device range for Buttplug devices (Lovense, Solace, Keon, Intiface-connected anything) — dual slider in the device row, applies to linear / vibrate / e-stim / rotate.
  • Per-axis invert for TCode (OSR2/SR6) — checkbox per axis, fixes physically reversed mount orientation without rewriting the script.
  • Range Extender — new "Stretch limited-range scripts" toggle in Playback settings. When a script's stroke positions stay in a narrow band (e.g. 30–70), stretches them to use the device's full range. Works for every device class (per-tick for Buttplug/TCode/Handy-HDSP, upload-time for Handy-HSSP and Autoblow).
  • Integrated multi-axis funscripts now work — combined-format files (HereSphere additional_axes, OFS raw, sibling-key, inline TCode) auto-detect and drive all axes. Previously only the piston (L0) fired. Reported by an OSR2 owner on the thread.

🔁 Looping & autoplay

  • Loop videoShift+L or menu. Session-scoped (resets on new video). Status chip in the badge cluster when on.
  • Loop playlist — per-playlist toggle next to "Play All" in the playlist view. Each playlist remembers its own setting.
  • Auto-play next video — new tickbox in Playback settings. When on, after a video ends the next one loads, syncs the funscript, and plays automatically (instead of pausing). Default off — opt in.

🎥 VR projections — spherical formats

VR Format panel now supports equirect-180 and fisheye-180 projections via WebGL, alongside the existing planar formats.

  • Drag-to-pan, FOV slider (60°–120°), double-click recenter, Shift+Arrow keyboard pan.
  • Per-video override; "Apply to all in folder" for fast bulk setup.
  • Performance: zero-copy texture upload on hardware-decoded sources. 8K HEVC remains GPU-bound (no change — same ceiling as native playback).

⚡ Quality of life

  • Playback speed control in the player overflow menu + a speed chip in the badge cluster. < / > keyboard shortcuts.
  • Up Next on Play All now correctly shows the next item (was showing "no more videos" on every item — bug fix).
  • Cloud-upload gate extended to Autoblow (was Handy-only) — devices stop firing on advance until the new script is uploaded. No more device-silent windows on script change for Autoblow users.
  • VR Format menu item in the player for VR videos.
  • Backup-restore no longer leaves an orphan backend racing the relaunched instance.

🐛 Notable fixes (from community reports)

  • Buttplug auto-reconnect now actually retries (was single-shot — would silently stop after one attempt).
  • TCode smoothing setting (PCHIP / Makima) now actually applies (was Handy-only despite the UI implying TCode worked).
  • Variant axis-switch race — switching axes mid-playback could land on the wrong axis. Fixed via load-token guard.
  • Web Remote phone-connect fired twice — Handy got two uploads per connect. Fixed with a 2s dedup window.
  • VR Flatten on half-SBS/TB videos was double-letterboxing one eye. Fixed.
  • Spherical VR projections were hiding the playback controls under the canvas. Fixed with a z-index trap removal.
  • Buttplug status showed Connection failed: [object Event] when Intiface wasn't running. Now shows a useful hint.
  • Web Remote modal rendered translation keys (webRemote.title etc.) instead of translated text — duplicate key in en.json. Fixed across all 8 locales + parity test hardened to catch this class of bug going forward.

⚠️ Heads up

  • Windows Defender false-positive on the backend is much less likely in v0.7.0 — disabled UPX compression on the bundled Python backend, which was the dominant trigger. Backend exe is ~30MB larger as a result. If Defender still flags it, see the wiki troubleshooting page.
  • Code signing still in progress — first install will show a SmartScreen warning. "More info" → "Run anyway."
  • 8K HEVC on Pascal-and-older NVDEC is still hardware-bound. The new VR projection panel doesn't change that ceiling.

📊 Numbers

  • 2423 tests pass across 104 test files (was ~1544 at v0.4.0)
  • 8 languages: English, 中文, 日本語, 한국어, Deutsch, Español, Français, Русский — every key in lockstep, validated by parity tests every commit
  • Windows installer + Linux AppImage, both auto-built by CI on tag push

🙏 Thanks

A huge thanks to everyone who's been on the thread reporting bugs, suggesting features, and testing the rough edges on hardware I don't own. Most of the device-side work in this release came directly from your reports — multi-axis, range, invert, autoplay, looping, all of it. Keep it coming.