Here is the full changelog so far
Version 6.9.0
FEATURE: New SPS/OGB live-touch trigger - VRChat SPS/OGB contact parameters now drive your devices in real time based on where and how much you are being touched.
FEATURE: SPS continuous mode drives EVERY enabled integration at once (Intiface OSC PiShock OwO), all scaled to the live touch level.
FEATURE: SPS threshold mode fires the entire chain (OSC PiShock OwO Intiface) once when the touch crosses a level you set, then re-arms when released.
FEATURE: Per-zone SPS filtering - include or exclude specific contact zones and choose which contact types (TouchOthers, PenOthers, Depth, etc.) count toward the touch level.
FEATURE: OSC parameters can be driven live by touch - numeric params follow the touch 0 to 1, bool and forced-int params hold while touched, and every param resets on release.
FEATURE: PiShock can be driven live by touch - vibrates proportionally to how much you are touched (throttled, and ALWAYS vibrate, never shock, for safety).
FEATURE: The OwO haptic vest now plays continuously for as long as the touch is held (re-queued back-to-back) instead of firing a single burst.
FEATURE: Full Buttplug command support - vibrate, oscillate, constrict, and inflate, plus linear depth/position (strokers such as the Lovense Solace Pro) and rotation, all routed by actuator kind.
FEATURE: New Intiface device modes - Stroke (oscillates depth between two points) and Rotate (directional spin with optional alternating direction).
FEATURE: Multi-actuator drive - multi-motor toys (for example constrict vibrate) are now driven together from a single chain.
FEATURE: Per-device Intiface configuration in the chain editor - each selected device gets its own mode, intensity, and duration, with a live battery readout and on-demand rescan.
FEATURE: Buttplug v4 protocol support with automatic fallback to v3 for older Intiface servers.
FEATURE: Added known-device profiles (including the Lovense Solace Pro) so depth and rotation capabilities are recognized out of the box; live capabilities still come from Intiface at runtime.
FEATURE: Configurable routing - OSC / Intiface / TikFinity / webhook /
Streamer.bot endpoints are now editable in saved/config/routing/endpoints.json.
IMPROVEMENT: OSCQuery detection improved with live endpoint discovery and idempotent service advertising for a more reliable VRChat connection.
IMPROVEMENT: Live avatar changes now run the full avatar load (OSC bridge, controls, chains, re-grid, and persistence) instead of a partial refresh, fixing inconsistent state after switching avatars.
IMPROVEMENT: Continuous SPS drive for Intiface and OSC is level-gated (re-sends only when the touch level changes) so it stays smooth and never floods VRChat or your devices.
IMPROVEMENT: PiShock live-drive uses overlapping hold windows so the buzz tracks the touch without gaps.
IMPROVEMENT: OwO continuous playback never blocks live touch processing and winds down within one cycle after release - the vest is never force-disconnected.
IMPROVEMENT: OSC sending unified through a lazy OSC bridge with a raw-client fallback (for when no avatar is loaded or a param is not yet in the OSCQuery cache) and a single always-fire auto-reset.
BUGFIX: Fixed the Windows taskbar showing the default Python/interpreter icon instead of the Stream Connector logo - the app now sets an explicit AppUserModelID before the window is shown.
BUGFIX: Fixed the window/taskbar icon failing to load on 64-bit Windows (the icon handle was being truncated); the logo now loads reliably in both the installed build and source runs.
BUGFIX: Fixed Intiface under-counting devices (for example showing 2 of 3 connected toys) - devices are now merged individually as they connect, with automatic post-connect rescans.
BUGFIX: Fixed a device-registry race that could send commands to the wrong device or crash with a dictionary-changed-size error during avatar or chain activity.
BUGFIX: Fixed actuator routing being clobbered when an SPS, random, or manual-control drive overlapped a running chain.
BUGFIX: Fixed invalid OSC value types being sent to VRChat - unknown values now coerce to float and real booleans are sent as booleans.
BUGFIX: Fixed v4 LinearCmd / RotateCmd capability detection so strokers and rotators are recognized correctly.
PERFORMANCE: Logging migrated from text .log files to SQLite (one table per module, separate debug and production databases, and configurable verbosity) for faster, cleaner diagnostics.
DEV: SPS continuous fan-out is built from dedicated per-output drivers (Intiface / OSC / PiShock / OwO) with unified release handling (stop Intiface, reset OSC to 0/False, clear the PiShock throttle).
DEV: OwO live-fire is fully non-blocking - the synchronous pattern player runs on a daemon thread with its busy window marked up front; template mode uses the queue-backed sender. Re-fire is gated on the vest busy window to avoid unbounded queue growth.
DEV: OSC live step parsing classifies each step as numeric / bool / forced-int, detecting bool BEFORE normalization so bool params send a real boolean instead of a scaled float.
DEV: Source housekeeping - relocated ~1,900 inline code comments out of the main source file into the canonical developer_info.md (organized by class / function); behavior, string literals, and docstrings untouched.
DEV: Application version metadata bumped to 6.9.0 across the executable manifest and version info for clean Windows Explorer display.