Releases: Valkirie/HandheldCompanion
Release list
0.32.4.0 - (Pre)summer release
Handheld Companion – Release Notes
0.32.4.0 - (Pre)summer release
What's Changed
- Fix Intel MCHBAR address construction by @gsxdsm in #1455
- Hide RSR controls on non-AMD GPUs by @gsxdsm in #1456
- Preserve dead-key keyboard labels by @gsxdsm in #1457
- Fix XG Mobile hotkey toggle and capability detection by @moni11811 in #1449
- Block MSI Claw firmware Win+G on the Right OEM Button without disabling PS/2 Service by @NightHammer1000 in #1459
- Add configurable trackpad haptic feedback by @LavX in #1461
- Fixed AltGr modifier release handling
- Included left and right touchpad X/Y axes in AxisState.TrueAxis so touchpad inputs are treated as true axes alongside sticks and triggers
New Contributors
- @gsxdsm made their first contribution in #1455
- @moni11811 made their first contribution in #1449
- @NightHammer1000 made their first contribution in #1459
- @LavX made their first contribution in #1461
Full Changelog: 0.32.3.2...0.32.4.0
0.32.3.2 - LibVIIPER fixes
Handheld Companion – Release Notes
0.32.3.2 - LibVIIPER fixes
What Changed
Device support
- Steam Deck: Added firmware 0x1100 support. (9fde8c3).
Fixes
- Fixed an issue with abnormally high CPU usage coming from libVIIPER implementation. (#1435).
- Fixed an issue with virtual controller initialization sequence.
Full Changelog: 0.32.3.0...0.32.3.2
0.32.3.0 - Device support improvement
Handheld Companion – Release Notes
0.32.3.0 - Device support improvement
What Changed
Device Support
- Add MSI Claw PS/2 service toggle, to disable the i8042prt (PS/2) Windows service, which mutes the MSI keyboard inputs used to open Game Bar. Includes a UI toggle on the Device page and persists the preference via the settings manager (#1444).
Fixes
- Fixed broken Steam controller mode (hybrid, exclusive) logic (#1446).
- Fixed an issue with abnormally high CPU usage coming from libVIIPER implementation. (#1435).
Full Changelog: 0.32.2.1...0.32.3.0
0.32.2.1 - CPU usage hotfix
Handheld Companion – Release Notes
0.32.2.1 - CPU usage hotfix
This hotfix release fixes an issue with abnormally high CPU usage coming from libVIIPER implementation.
Full Changelog: 0.32.2.0...0.32.2.1
0.32.2.0 - Joystick Response Curves, MSI Claw 8 EX AI+ Support & Stability Improvements
Handheld Companion – Release Notes
0.32.2.0 - Joystick Response Curves, MSI Claw 8 EX AI+ Support & Stability Improvements
This release focuses on three major areas: performance, stability, and device support, while also introducing one of the most requested features: configurable joystick response curves. In addition to numerous fixes throughout the application, this update significantly reduces CPU overhead, improves reliability during sleep and resume, expands hardware support with the MSI Claw 8 EX AI+, and resolves a regression affecting custom HID communication on several handhelds.
Highlights
- Configurable Joystick & Axis Response Curves: Handheld Companion now supports customizable response curves for analog sticks and trigger/axis inputs. Adjust how physical input is translated across the full movement range to create more gradual, linear or aggressive response characteristics depending on your personal preference or the type of game you're playing.
- MSI Claw 8 EX AI+ Support: Added initial support for the MSI Claw 8 EX AI+ (CG3EM), including: Fan control, RGB lighting, TDP management, Back button support. Gyroscope support is still under development and will be introduced in a future release.
- Lower CPU Usage & Better Responsiveness: A broad optimization pass reduces CPU usage and garbage collection pressure across the application. IMU processing has been reworked, several race conditions have been eliminated, and numerous initialization paths have been optimized for smoother operation.
- Custom HID Regression Fixed: Resolved a regression introduced in the previous release that affected custom HID communication on several handhelds, including: ASUS ROG Ally family, GPD Win 5, MSI Claw, ONEXPLAYER X1, Zotac Gaming Zone.
- Improved Reliability: Large portions of the application's event subscription, disposal and resource management logic have been refactored. These changes reduce duplicated events, stale handlers, resource leaks and improve long-term stability, particularly during sleep, resume and device transitions.
What Changed
New Features
- Added configurable joystick and axis response curves.
- Added support for Flyout UI elements in gamepad navigation.
- Added the ability to disable virtual controllers directly from profiles.
Device Support
- Implemented support for MSI Claw 8 EX AI+ (CG3EM) with: Fan control, RGB lighting, TDP management, Back button support
- Legion Go (1 & 2): Fixed detachable controller settings not restoring correctly at startup.
- AYANEO Flip DS: Fixed looping second-screen summon button inputs.
- ASUS ROG Ally family: Fixed default MainWindow summon hotkey bindings.
- Steam Deck: Fixed controller mode (Hybrid/Exclusive) persistence and default button mappings.
- OneXPlayer APEX: Tentatively fixed gyroscope axis handling.
Performance
- Reduced CPU usage and garbage collection pressure.
- Reworked IMU sensor matrix processing.
- Improved platform logo caching and initialization.
- Various performance optimizations and cleanup.
UI / UX
- Improved Profile and Layout pages with layout names and descriptions.
- Improved profile notifications and toast messages.
- Improved Welcome Window workflow and OEM software handling.
- Improved Hotkey Settings experience.
- Improved narrow-width QuickTools layouts.
- Updated LED colors immediately when values change.
- Fixed GoBackToSleep checkbox behavior.
- Various UI performance improvements and bug fixes.
Improvements
- Improved static manager event subscription and disposal routines.
- Improved non-static manager event subscription and disposal routines.
- Improved IDevice event subscription and disposal handling.
- Updated SDL3 to 3.4.12.
Fixes
- Fixed retrieval of available display refresh rates.
- Fixed DevicePage subscribing twice to Controller Manager events.
- Fixed phantom touchpad inputs generated by virtual controllers.
- Fixed phantom controller inputs and rumble persisting after sleep and resume.
- Fixed endless AltGr keyboard injection loop.
- Fixed virtual gyro updates flooding input reports and waking devices from sleep.
- Fixed foreground profile detection after QuickTools page unloads.
- Fixed custom TDP profile values visually affecting other profiles.
- Fixed layout update logic.
- Fixed screen resolution changes occasionally not applying from QuickTools.
- Fixed Intel Graphics Software Service detection.
- Fixed startup race condition causing duplicate system routine checks.
- Fixed HotkeysManager first-start detection.
- Fixed platform detection for processes already running when HC starts.
- Fixed installer deployments preserving obsolete files from previous installations.
- Fixed Welcome Window reappearing after restart.
- Fixed OEM stack disabling not applying on first use.
- Fixed LibreHardwareMonitor cleanup during shutdown.
- Fixed UI race condition that could occasionally cause hangs.
- Fixed KX.exe incorrectly returning -1 on successful operations.
- Fixed crash when loading Layout Templates under specific SmartApp and Steam-HID conditions.
- Fixed update notifications stacking on the Settings page.
- Fixed LED settings not applying until restart.
Full Changelog: 0.31.3.1...0.32.2.0
0.31.3.1 - First Impressions: New Welcome Flow and UI Polish
Handheld Companion – Release Notes
0.31.3.1 - First Impressions: New Welcome Flow and UI Polish
Version 0.31.3.1 might look modest on paper, but it's one of the more foundational builds we've shipped in a while. The headline is a brand new Welcome Window that walks new users through device detection, OEM software considerations, and initial setup defaults, something inspired by Winhanced software, that's been missing for a long time and should make that critical first impression much smoother.
Alongside it, this build delivers a major UI/UX overhaul focused on visual consistency, higher-resolution device visuals, easier library navigation and faster artwork rendering. And while we're always sad to see anyone go, we've implemented a proper OEM software and controller driver stack restoration process for anyone who decides to uninstall HC.
Highlights
- New Welcome Window First-time users are now guided through a short setup flow: detecting their device and hardware capabilities, reviewing OEM software that might conflict with HC, and confirming sensible defaults for startup behavior, sleep handling, notifications, and telemetry. Everything shown can still be changed later from Settings, but this gives new users a much clearer starting point than being dropped straight into the app.
- Major UI/UX overhaul This build brings sweeping visual consistency improvements — uniform font sizes, spacing, and colors across the app — along with all device visuals reworked into high definition, a reworked hotkey display, background emulated controller artwork on the controller and layout pages, and faster-loading profile artworks.
- Clean uninstall: OEM and driver stack restoration HC now properly restores any OEM software and controller driver stacks it modified when it's uninstalled, leaving your system back the way it was before HC was installed.
- Library collections for easier navigation The Library now supports custom collections, letting you group games however makes sense to you, by genre, platform, mood, whatever. Collections sit alongside the existing platform-based categories (Microsoft, Steam, Ubisoft, GOG, BattleNet, EA, etc).
What Changed
Fixes
- Fixed external display detection occasionally failing for plug behavior.
- Fixed high-resolution artworks not downloading for newly added library games.
- Fixed profile manager handling of platform-specific profiles with no path and no launch string.
- Fixed non-focusable UI elements retaining visual focus after a mouse click.
- Fixed inverted DoNothing and AlwaysConnect behavior for controller plug behavior.
- Fixed a regression in Steam Deck lizard mode checking over time.
UI/UX
- Improved profile artwork loading logic for faster rendering.
- Major UI overhaul with uniform font sizes, styles, spacing, and colors.
- Reworked hotkey display logic.
- Reworked all device visuals into high definition.
- Added background emulated controller artwork to the controller and layout pages.
- Added a controller mode combobox to the profile application toast.
New features
- Implemented Welcome Window for first-time setup and onboarding.
- Implemented OEM software and controller driver stack restoration on uninstall.
- Implemented Library collections for custom game grouping and navigation.
Other improvements
- Updated SDL3 to 3.4.10 (pre Steam Controller V2 support).
- Improved manager boot sequence.
- Improved GoBackToSleep with customizable triggers (power button, fingerprint read, gamepad input, charger connection).
Full Changelog: 0.30.1.0...0.31.3.1
Build 0.30.1.0
Handheld Companion – Release Notes
0.30.0.1 - Controller Overhaul, Fan Override and Docking Awareness
Version 0.30.0.1 is a significant release. The biggest change under the hood is the replacement of ViGEm with VIIPER for virtual controller emulation, a move that resolves a whole class of resume, slot, and input loss issues that have been difficult to fully eliminate until now. Beyond that, Legion Go 2 owners finally get complete fan speed control thanks to remarkable work from Undervoltologist and Rodpad, experimental HID support lands for ONEXPLAYER X1 and APEX thanks to srsholmes efforts.
With Microsoft rolling out docking improvements to handheld devices, we've mimicked two new features that give HC users direct control over display switching and controller connection behavior when docking. Finally, this build ships one of the largest single-build fix lists.
Highlights
- ViGEm replaced by VIIPER The deprecated ViGEm library has been replaced with VIIPER for virtual controller emulation. In addition to broader controller type support: Xbox 360, DualShock 4, DualSense, Steam Controller, and Steam Deck. VIIPER eliminates the need to suspend and resume the virtual controller on system sleep, prevents the redundant power-cycling that was causing XInput slot 0 recovery issues, and should put an end to the input loss problems some users were experiencing with running games after resume.
- Legion Go 2: full fan control Fan speed control is now fully overridable on the Legion Go 2 through direct EC access, even when an OEM power profile would otherwise override it. If the Legion Go 2's fan behavior has been frustrating you, this is the fix.
- Experimental ONEXPLAYER X1 and APEX support A HID driver backport adds initial device support for the ONEXPLAYER X1 and APEX. This is experimental — feedback from owners of these devices is especially welcome.
- Docking and controller connection behavior gives you direct control over two related behaviors. DockedDisplayBehavior lets you define what happens to your main screen when docking: do nothing, switch to the external display, or switch only when on power. PlugBehavior lets you define whether a newly plugged external controller should be hooked automatically, always prompt you, or do nothing.
What Changed
Device support
- Legion Go 2: Backported total control over fan speed through EC, even on OEM power profiles from https://github.com/Rodpad/LeGo2-Fan-Control/.
- ONEXPLAYER X1 and APEX: Backported HID driver from srsholmes/onexplayer-apex-bazzite-fixes#8 (experimental).
New features
- Replaced deprecated ViGEm with VIIPER for controller emulation: bringing support over virtual XBOX360, DualShock4, DualSense, Steam Controller, Steam Deck while removing the need for the virtual controller to suspend/resume with system, preventing redundant controller power-cycling to recover XInput slot 0 and inputs loss issue with running games/softwares.
- Implemented a new setting DockedDisplayBehavior (#534): Define whether the main screen should switch to the external display when docking: Do nothing, switch to external display, switch to external display when plugged to power.
- Implemented a new setting PlugBehavior: Define whether the recently plugged external controller should be hooked: Do nothing, always ask, always connect.
- Implemented gamecontrollerdb update management (notification/download/install) from the settings page.
- Implemented button to axis mapping on layout page to allow traditional controllers to mimic Steam controller and Steam deck controller touchpads and touchpad-based dpad behaviors.
- Implemented controller-based update rate to accommodate virtual controllers without timestamps (Steam controller and Steam deck controller requiring a static 250Hz rate).
UI/UX
- Simplified sensor selection UI elements.
- Overlay page to use MVVM and SettingsCard(s).
- Reduce CPU/UI pressure from power profile fan graph.
- Improve Layout items clarity with toggle/repeat and shift logic visible from layout page.
- Removed hacky WM_PAINT hook logic in favor of ShadowAssist.UseBitmapCache.
- Previous button and axis mappings will no-longer be removed when unsupported by newly targeted controller and will instead appear disabled on layout page.
Fixes
- Fixed an issue preventing the application from locating/restoring any currently running instance when trying to start HC.
- Fixed an issue preventing KeyboardActions and MouseActions from using both Turbo and Toggle at the same time.
- Fixed several issues with installer script when reading dependencies versions causing uninstall/reinstall loops on disconnected (no internet) systems.
- Fixed an issue causing a crash when trying to read some UWP processes "ProductName".
- Fixed an issue with gyro related settings when manipulated from the quick profile page.
- Fixed a couple of issues when displaying foreground process/profile on quick profile page.
- Fixed an issue when pulling MicrosoftStore/App logo from Manifest file.
- Fixed an issue with layout Trigger shift logic.
- Fixed a rare crash scenario when closing a process.
- Fixed an issue causing incorrect UI focus when a ContentDialog is closed.
- Fixed an issue preventing controller update rate settings from being applied while app is running.
- Fixed an issue that would cause GPU Manager to still interact with AMD settings when GPU management is turned off.
Miscellaneous
- Defaulted gamepad mode to Auto instead of Gamepad.
- Misc performance improvements to layout UI render logic with artwork load/unload and bitmapscalingmode (LowQuality).
- Misc UI tweaks related to gamepad mode hotkey.
- Updated process filter (restricted) list to exclude: pickerhost.exe, gamingservicesui.exe.
- Updated SDL3 to 3.4.8.
- Added a new Layout template for SteamController (DPAD to left touchpad, right stick to right touchpad).
- Keep controller routing active at Windows login but gate keyboard input capture on session lock state, and defer HC main window display until the interactive desktop is available.
Full Changelog: 0.29.3.0...0.30.1.0
Build 0.29.3.1 - Hotfix
Handheld Companion – Release Notes
0.29.3.1
What Changed
Fixes
- Fixed an issue with Trigger shift logic (Thanks to Koladonia)
0.28.6.14 - Hotfix
Hotfixes
- Fixed an issue with the input shifting logic on layout manager.
Full Changelog: 0.28.6.13...0.28.6.14
0.28.6.13 - Hotfix
Hotfixes
- Fixed an issue with the input shifting logic on layout manager.
Full Changelog: 0.28.6.12...0.28.6.13