Releases: ruffsl/CtrlAssist
v0.3.0
Announcing the release of CtrlAssist v0.3.0, which introduces significant new features and usability improvements.
Major Features
System Tray Interface
This release introduces a graphical system tray application that provides desktop integration for managing controller multiplexing. Users can now:
- Configure primary and assist controller assignments via dropdown menus
- Start and stop the mux without using the command line
- Adjust settings through a context menu interface
- Receive desktop notifications for status changes
- Persist configuration across sessions
The tray interface supports live reconfiguration of device-invariant settings (mux mode and rumble target) while the mux is running.
Multiple Hiding Strategies
Controller hiding now supports three distinct strategies:
- None: No hiding, manual configuration required
- Steam: Automatically manages Steam's controller blacklist via config.vdf modification
- System: Restricts device permissions system-wide (requires root access)
The Steam hiding strategy enables proper functionality in sandboxed environments without requiring elevated privileges, addressing a key limitation for Flatpak users.
Live Runtime Updates
The mux runtime now supports dynamic reconfiguration without restart for:
- Mux mode changes (Priority, Average, Toggle)
- Rumble target adjustments (Primary, Assist, Both, None)
This functionality is available through both the system tray and programmatic (D-BUS) interfaces, allowing users to adapt behavior during gameplay sessions.
Flatpak Distribution
CtrlAssist is now packaged as a Flatpak application with:
- Automated GitHub Actions workflow for release builds
- Desktop entry and metainfo for application catalogs
- Proper sandbox permissions for device access
- Support for Steam configuration modifications within the sandbox
Flatpak bundles are automatically built and attached to GitHub releases.
Additional Improvements
- Configuration persistence to
$XDG_CONFIG_HOME/ctrlassist/config.toml - Controller selection by name with best-effort matching across sessions
- Enhanced documentation with installation instructions for both Cargo and Flatpak
- New pixel art banner and application icon (via Aseprite)
- Improved force feedback device recovery after disconnection
- Better error handling and user feedback throughout the application
Installation
CtrlAssist v0.3.0 can be installed via:
- Cargo:
cargo install ctrlassist --force - Flatpak: Download the bundle from the releases page and install with
flatpak install
Full installation instructions are available in the README.
Breaking Changes
The --hide flag now requires an enum value (none, steam, system) instead of being a boolean flag. Users upgrading from v0.2.x should update their scripts accordingly:
- Previous:
ctrlassist mux --hide - Current:
ctrlassist mux --hide system
What's Changed
- feat: package CtrlAssist for Flatpak by @ruffsl in #25
- feat: Add Multiple Hide Strategies with Steam Blacklist Support by @ruffsl in #26
- feat: add System tray app by @ruffsl in #27
- feat: update banner to pixel art by @ruffsl in #28
- feat: polish for flatpak submission by @ruffsl in #29
- feat: update version to 0.3.0 in Cargo files and README by @ruffsl in #30
- fix: improve flatpack manifest and support multi instance while sandboxed by @ruffsl in #31
- feat: add Flatpak release workflow for GitHub Releases by @ruffsl in #32
- fix: flatpak release workflow by @ruffsl in #33 #34 #35 #36 #37 #38 #39 #40
- feat: enable live updates for mux mode and rumble settings by @ruffsl in #41
- docs: improve clarity and consistency in README documentation by @ruffsl in #42
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- docs: add badges for CI and Crates.io by @ruffsl in #16
- feat: Add Force Feedback (Rumble) Forwarding from Virtual to Physical Controllers by @ruffsl in #20
- fix: correct upstream button mappings for virtual gamepad by @ruffsl in #21
- fix: correctly resolve gamepad devices by @ruffsl in #22
- fix: sync input between active and primary transitions by @ruffsl in #23
- chore: bump version to v0.2.0 by @ruffsl in #24
Full Changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
- Initial working MVP and project outline for CtrlAssist by @ruffsl in #1
- Fix and include web banner for README by @ruffsl in #2
- Refactor mux modes into separate modules by @ruffsl in #3
- docs: cleanup and reformat README by @ruffsl in #11
- chore: cleanup for initial release by @ruffsl in #12
Full Changelog: https://github.com/ruffsl/CtrlAssist/commits/v0.1.0