Skip to content

VIIPER RC1 - Release Candidate

Pre-release
Pre-release

Choose a tag to compare

@hbashton hbashton released this 24 Jul 23:28
· 615 commits to main since this release

DS4Windows VIIPER release-candidate summary

Scope: v4.0.2.3 to f1e4b32 (188 non-merge commits)

Generated: 2026-07-24

Release-candidate highlights

  • DS4 Bluetooth audio and haptic transport was stabilized end-to-end, including report-rate pacing, queue ordering, credit/handle behavior, and fallback behavior to remove dropouts and stutter.
  • DualSense and DualShock 4 audio/mic/haptics routing were hardened across physical + emulated output combinations.
  • Audio Haptics and Trigger Lab features were implemented/improved with profile-level persistence and richer trigger controls.
  • Profile UX was modernized (overview, profiles, editor, remapper, controller selection/status, and live filtering/search).
  • VIIPER output support was expanded/cleaned (virtual backends, installers, lifecycle, driver handling, diagnostics).
  • Game Bar compatibility and visibility handling were improved, including temporary companion and profile priority behavior.
  • Updater and installer flows were tightened to prefer stable/preview intent correctly and better guide users through dependencies.
  • Multiple regressions were reverted and reintroduced intentionally through transport hardening before landing on the final 0x12 transport tuning.

Focus-by-feature

1) DS4 Bluetooth audio transport and reliability

  • Finalized transport behavior for reliable low-latency DualShock 4 Bluetooth speaker output and stable completion timing.
  • Corrected HID report timing coupling with input cadence and removed short-report/queue instability artifacts.
  • Added stronger in-order and availability checks to protect audio and input from race conditions.

2) DualSense/PlayStation audio, haptics, and mixed-routing compatibility

  • Added and stabilized native DualSense speaker/mic pathways and synchronization with advanced haptics.
  • Improved compatibility across emulation variants and preserved advanced output during emulated output transitions.
  • Added safeguards for Bluetooth audio routes and route-matrix consistency in controller emulation modes.

3) Audio Haptics and Trigger Lab

  • Introduced or updated audio-haptics capture/app routing and per-profile controls.
  • Added trigger-specific lab controls (including full-pull/action routing and linked/split behavior).
  • Added stronger profile persistence and editor integration for special effects data.

4) UI/UX and profile workflow

  • Reworked profile editing path and overview controller workspace behavior.
  • Added controller-aware remapping overlays, layout polish, and search-driven list filtering.
  • Reduced editor and profile transitions stalls and made switching behavior more deterministic.

5) Compatibility and devices

  • Added support and handling improvements for virtual/compatibility paths including Moonlight and companion flows.
  • Preserved VIIPER lifecycle/race handling and fixed HidHide/session stability around service transitions.
  • Added/cleaned installer, uninstall, and setup flows for VIIPER and virtual DualSense driver stack.

Full commit log (non-merge, oldest → newest)

  • 0fd92d1 2026-06-11 Add experimental virtual DualSense output
  • 9185e23 2026-06-11 Add virtual DualSense VHF backend
  • f17395e 2026-06-11 Add virtual DualSense follow-up notes
  • 9d37c2c 2026-06-11 Wire virtual DualSense output report passthrough
  • 94f7271 2026-06-11 Harden virtual DualSense backend lifecycle
  • 71e39dd 2026-06-11 Fix virtual DualSense touch clamp compile error
  • e0cf746 2026-06-11 Improve virtual DualSense driver install path
  • f615d1c 2026-06-11 Add Bluetooth-shaped virtual DualSense driver mode
  • ed04795 2026-06-11 Use WDK-capable Windows runner for driver build
  • 194013e 2026-06-11 Install WDK in CI for virtual DualSense driver
  • 84c8e19 2026-06-11 Use WDK NuGet packages for virtual DualSense driver
  • 9ab8ce6 2026-06-11 Resolve WDK NuGet tool paths for driver build
  • 3a7ea0b 2026-06-11 Fix virtual DualSense driver CI compile path
  • b073220 2026-06-11 Restrict virtual DualSense INF to DIRID 13 capable Windows builds
  • edbe5de 2026-06-11 Fix VHF HID packet compile conflict
  • ec54cec 2026-06-11 Set SHA256 digest for virtual DualSense driver signing
  • e8b70a5 2026-06-11 Package virtual DualSense sys for catalog generation
  • 958630e 2026-06-11 Add virtual DualSense driver uninstall script
  • f267897 2026-06-11 Fix virtual DualSense root device installer ID
  • 25fed9c 2026-06-11 Make virtual DualSense installer helper rerunnable
  • 1bc97bf 2026-06-11 Fix virtual DualSense driver control path
  • a849716 2026-06-11 Fix virtual DualSense installer reflection args
  • e852043 2026-06-11 Route virtual DualSense IOCTLs through control device
  • 2d02370 2026-06-11 Add experimental VIIPER output backend
  • 481c5eb 2026-06-11 Add VIIPER setup prompt and controller UI polish
  • 17d7ccb 2026-06-12 Fix VIIPER installer zip asset handling
  • 3cf5d47 2026-06-12 Add VIIPER backend debugger
  • 56cab86 2026-06-12 Remove custom virtual DualSense backend
  • 41eb689 2026-06-12 Harden VIIPER backend lifecycle races
  • af442ab 2026-06-12 Persist VIIPER output controller profile types
  • 3809b66 2026-06-12 Fix VIIPER DualSense motion neutral state
  • ad64480 2026-06-12 Add VIIPER DualSense mute toggle passthrough
  • 9ae0904 2026-06-12 Smooth VIIPER DualSense motion rest state
  • 7c44d6c 2026-06-12 Pass VIIPER DualSense trigger feedback to physical pads
  • 1af2e85 2026-06-12 Prefer extended VIIPER DualSense feedback
  • 377a97d 2026-06-12 Fix VIIPER feedback length compile error
  • 4866092 2026-06-12 Stabilize VIIPER output and HidHide sessions
  • e49e36b 2026-06-12 Add DualSense mute profile controls
  • 91827db 2026-06-12 Require visible Game Bar before profile priority
  • 6dabaee 2026-06-12 Keep HidHide sessions across service restart
  • 41d2c6a 2026-06-13 Reset adaptive trigger debugger effects
  • 476929c 2026-06-13 Fix VIIPER debugger build import
  • e24d9e6 2026-06-13 Move VIIPER state writes off input thread
  • 4968947 2026-06-13 Add VIIPER writer guardrails
  • 504eb4c 2026-06-13 Recover VIIPER stream after server loss
  • 9429fe5 2026-06-13 Keep VIIPER feedback streams alive when idle
  • 01e8ff3 2026-06-13 Fix VIIPER timeout constant scope
  • 29f68de 2026-06-13 Clean up stale VIIPER usbip controllers
  • a1abc55 2026-06-13 Fix VIIPER usbip cleanup log signature
  • 76ad6ec 2026-06-13 Reconcile stale VIIPER usbip ports on every create
  • bf96819 2026-06-13 Send DualSense touch tracking through VIIPER
  • abddc1a 2026-06-13 Align VIIPER DualSense motion axes with DS4 output
  • d448d09 2026-06-13 Use available VIIPER release assets
  • d992c47 2026-06-13 Avoid zero-gravity DualSense motion reports
  • 42855e5 2026-06-13 Fix VIIPER DualSense gyro and feedback bridging
  • 3b6d5ad 2026-06-13 Clarify VIIPER DualSense feedback size
  • 2e38792 2026-06-13 Contain physical pads for virtual outputs
  • 2aa31c4 2026-06-13 Add VIIPER DualSense traffic capture UI
  • 7ebc899 2026-06-13 Forward VIIPER DualSense native output reports
  • 30488d5 2026-06-14 Fix profile output transition replug state
  • 3e10eb1 2026-06-14 Export VIIPER DualSense traffic captures
  • 7554a77 2026-06-14 Forward VIIPER DualSense haptics reports
  • dbb42ec 2026-06-14 Add DualSense haptics tone debugger
  • fd61aaa 2026-06-14 Fix VIIPER DualSense feedback helper scope
  • 637f26a 2026-06-14 Let games control DualSense lightbar through VIIPER
  • 76367f9 2026-06-14 Report DualSense haptics tone write failures
  • 9725cf8 2026-06-14 Fix VIIPER DualSense gyro axis order
  • ffad55c 2026-06-14 Explain DualSense haptics tone failures
  • 74f797b 2026-06-14 Fix VIIPER DS4 gyro axis order
  • c4c3cf1 2026-06-14 Clean up stale VIIPER usbip imports
  • d4ec763 2026-06-14 Tidy DualSense VIIPER profile UI
  • c63f6a2 2026-06-14 Mark VIIPER branch as DualSense beta
  • f4a4b73 2026-06-14 Fix VIIPER motion fallback build
  • e995e25 2026-06-14 Harden VIIPER HidHide containment
  • 3f5be95 2026-06-14 Detect Moonlight virtual DS4 v2 controllers
  • 62f418c 2026-06-20 Add DualSense Bluetooth speaker and haptics bridge
  • 18874dc 2026-07-01 Harden Game Bar visibility diagnostics
  • a7ef763 2026-07-13 Reduce DualSense game audio latency
  • 6649147 2026-07-13 Fix low-latency speaker capture dispose type
  • 4bf5d2c 2026-07-16 Restore DualSense advanced haptics with game audio
  • dd1da50 2026-06-22 Unify DualSense Bluetooth haptics and audio output
  • 9db939e 2026-07-16 Remove DualSense speaker boundary alert tones
  • ac5caa0 2026-07-16 Stabilize combined DualSense Bluetooth streaming
  • c08bc24 2026-07-16 Keep combined DualSense stream continuous
  • c4358a1 2026-07-16 Stabilize DualSense speaker capture buffering
  • 6dadc75 2026-07-16 Restore DualSense speaker buffer depth
  • c085101 2026-07-16 Synchronize DualSense haptics with speaker frames
  • e64f1f7 2026-07-16 Fix DualSense speaker volume scaling
  • fdcd183 2026-07-16 Keep DualSense speaker writes on audio clock
  • 3c7c6ee 2026-07-16 Prevent rare DualSense speaker scheduling gaps
  • e9d164a 2026-07-17 Rebuild VIIPER DualSense microphone passthrough
  • 8856c0e 2026-07-17 Rebind recreated DualSense audio endpoints
  • 5423b64 2026-07-17 Fix DualSense Bluetooth microphone activation
  • 636b6f3 2026-07-17 Gate DualSense mic on active capture interface
  • 473ab39 2026-07-17 Center VIIPER virtual pad reset state
  • 8b71621 2026-07-17 Clean up DualSense microphone audio
  • d18308b 2026-07-17 Add DualSense mute button microphone mode
  • bd19369 2026-07-17 Modernize DS4Windows frontend
  • 7302af6 2026-07-17 Improve UI rendering performance
  • 386b8ed 2026-07-17 Rewrite installation and project documentation
  • b452e36 2026-07-17 Rewrite installation and project documentation
  • 263d0a3 2026-07-17 Polish profile selection and auto profiles
  • 2c63a0f 2026-07-17 Fix controller detection after service restart
  • 79c9d6e 2026-07-17 Add controller artwork to device cards
  • 9d8f30e 2026-07-17 Release HidHide devices while service is stopped
  • 8605f06 2026-07-17 Add DualSense profile remapping artwork
  • 6444be1 2026-07-17 Fix DualSense remapping overlays
  • 83a1ee1 2026-07-17 Add DualSense Bluetooth speaker processing
  • eeb7f20 2026-07-17 Default DualSense profiles to balanced speaker audio
  • 85e5c05 2026-07-17 Use exact DualSense highlight masks
  • 3508af2 2026-07-17 Align DualSense remapper lightbar
  • 2653803 2026-07-17 Create dedicated profile editing workspace
  • eb9edef 2026-07-17 Add controller-aware overview workspace
  • af77e84 2026-07-17 Clarify virtual controller names
  • c4e0700 2026-07-17 Keep VIIPER input responsive during microphone capture
  • f871f8c 2026-07-18 Add DualShock 4 Bluetooth audio
  • 6bd0b3d 2026-07-18 Polish overview controls and editor loading
  • 6f93c88 2026-07-18 Route Sony audio across emulated controllers
  • 0c33655 2026-07-18 Add Game Bar DualSense compatibility
  • 6f5c2cc 2026-07-18 Redesign profiles and remapping layouts
  • af57bca 2026-07-19 Fix Sony Bluetooth audio and VIIPER routing
  • 8d3a4b9 2026-07-20 Harden Sony audio and profile UI
  • ab83aa6 2026-07-20 Polish controller remapping and eliminate editor stalls
  • f33a79c 2026-07-20 Add profile audio haptics and Trigger Lab
  • 2176459 2026-07-20 Use generic virtual controller names
  • 9843226 2026-07-20 Finish Trigger Lab and cut DualSense feedback latency
  • 23b4ecb 2026-07-20 Keep native DualSense haptics continuous
  • 77e2aba 2026-07-20 Synchronize DualSense speaker and native haptics
  • 5e4d60f 2026-07-21 Isolate Sony audio routes and restore microphone level
  • e516e12 2026-07-21 Stabilize Bluetooth audio and haptics routing
  • 7a1f42b 2026-07-21 Make Trigger Lab link modes explicit and reliable
  • 28a6e2e 2026-07-21 Polish README grammar and clarity
  • 88051ac 2026-07-21 Refresh README interface tour
  • 04c23cb 2026-07-21 Move full-pull actions into Trigger Lab
  • ed1820a 2026-07-21 Fix Sony Bluetooth audio route stability
  • ee525b4 2026-07-21 Stabilize DualSense Bluetooth duplex transport
  • 2648167 2026-07-21 Checkpoint experimental low-latency split transport
  • 6d15600 2026-07-21 Revert "Checkpoint experimental low-latency split transport"
  • 8bd8900 2026-07-21 Revert "Stabilize DualSense Bluetooth duplex transport"
  • 89fc02f 2026-07-21 Bound DualSense 0x36 Bluetooth write concurrency
  • b050365 2026-07-21 Fix Game Bar companion routing and visibility latch
  • 277c40f 2026-07-21 Finish live controller UI and audio routing
  • 64caa5b 2026-07-21 Tighten controller remapper hit targets
  • 6b43418 2026-07-22 Restore precise controller remapper geometry
  • d1e191b 2026-07-22 Perfect raster-aligned controller remapping
  • a8b6596 2026-07-22 Stabilize DualShock 4 Bluetooth audio transport
  • deb301e 2026-07-22 Checkpoint traced DualShock 4 audio transport
  • 8b80314 2026-07-22 Checkpoint DS4 Bluetooth credit-safe 0x17 transport
  • 925c94f 2026-07-22 Keep DS4 0x14 reports as real stream tails
  • 10f927e 2026-07-22 Pace DS4 PadForge audio on the report clock
  • dc52e7f 2026-07-23 Trace DS4 Bluetooth HID completion depth
  • 7ff7c8e 2026-07-23 Preserve DS4 Bluetooth interval during audio
  • d9e0512 2026-07-23 Keep DS4 HID enabled in speaker reports
  • c48e9f4 2026-07-23 Revert "Keep DS4 HID enabled in speaker reports"
  • 5fe2eb3 2026-07-23 Restore source-driven DS4 audio transport probe
  • 9c11dcb 2026-07-23 Probe PadForge DS4 speaker audio mode
  • fa7d3fa 2026-07-23 Phase-lock DS4 audio to physical input reports
  • 4d3f6c9 2026-07-23 Match PadForge DS4 Bluetooth speaker transport
  • 2411da9 2026-07-23 Eliminate DS4 short-report traffic
  • 0b1b49e 2026-07-23 Match measured PadForge DS4 presentation cadence
  • bc7060c 2026-07-23 Match PadForge DS4 audio feed rate
  • 926856b 2026-07-23 Revert "Match PadForge DS4 audio feed rate"
  • d951f3b 2026-07-23 Serialize DS4 audio on the primary HID handle
  • 87736f2 2026-07-23 Drive DS4 audio from source availability
  • b19b742 2026-07-23 Revert "Drive DS4 audio from source availability"
  • 17a9f64 2026-07-23 Revert "Serialize DS4 audio on the primary HID handle"
  • 46852e8 2026-07-23 Complete DS4 audio writes in order
  • b8860b2 2026-07-23 Fix in-order DS4 queue guard
  • 16ec5db 2026-07-23 Revert "Fix in-order DS4 queue guard"
  • ae0da15 2026-07-23 Revert "Complete DS4 audio writes in order"
  • 083a753 2026-07-23 Probe native SBC on the DS4 audio path
  • 2f9c321 2026-07-23 Revert "Probe native SBC on the DS4 audio path"
  • e04d199 2026-07-23 Checkpoint DS4 shared audio trace lane
  • c3c6379 2026-07-23 Present DS4 speaker frames at a uniform 16 ms cadence
  • e5de4b9 2026-07-23 Probe shared-handle async DS4 audio credits
  • 38f992b 2026-07-23 Fix fresh-config theme startup
  • d3db9fc 2026-07-23 Follow prerelease update channels
  • 3fb22a1 2026-07-23 Make realtime DS4 0x12 audio transport explicit
  • a011182 2026-07-23 Keep PlayStation features on Xbox and Switch outputs
  • ccaa357 2026-07-23 Add automatic game audio detection
  • 5eb0ddf 2026-07-24 Keep DS4 realtime audio at max input rate
  • 0317760 2026-07-24 Restore verified DS4 HID input queue depth
  • f1e4b32 2026-07-24 Stabilize DS4 realtime Bluetooth audio