Skip to content

0.28.3.1#1373

Merged
Valkirie merged 530 commits intomainfrom
0.28.3.1
Feb 1, 2026
Merged

0.28.3.1#1373
Valkirie merged 530 commits intomainfrom
0.28.3.1

Conversation

@Valkirie
Copy link
Owner

@Valkirie Valkirie commented Feb 1, 2026

Summary by CodeRabbit

Release Notes

  • New Features

    • Added PowerShell script execution for hotkeys
    • Added HID status toggle command
    • Added absolute mouse positioning capability
    • Added Enhanced Sleep and Go Back to Sleep power management options
    • Added AMD Ryzen curve optimization controls (all-core and GPU)
    • Added Intel MSR undervolting for CPU, GPU, and SoC
    • Added support for new device (SuiPlay0X1)
    • Improved full-screen experience window state awareness
  • Bug Fixes

    • Fixed potential stuck keyboard modifiers issue
    • Improved physical keyboard modifier tracking
  • Improvements

    • Enhanced device support and inheritance structure
    • Updated UI controls for better precision input
    • Refined input handling for improved reliability

✏️ Tip: You can customize this high-level summary in your review settings.

* Implement EADesktop support through GameLib

Using custom repo: https://github.com/Valkirie/GameLib.NET/tree/EAapp

* Fix EADesktop logo missing from LibraryPage
* Reduce CPU usage, phase 1

* misc tweaks
* Optimizing IActions related functions

* Pass delta to IActions to improve timed actions accuracy

* seal a few classes

* Use [MethodImpl(MethodImplOptions.AggressiveInlining)] on States

* Small State tweaks

* further improve States optimization

* build 0.27.0.8

* Reduce MSI Claw 1 rumble logic CPU usage
- Quicktools will remember the last focused item from each page
- Quicktools navigation won't focus AppBarButton first
- Quicktools L1/R1 will automatically enter the page
- MainWindow page flow is more natural when pressing A/B
Valkirie and others added 26 commits December 15, 2025 13:15
Signed-off-by: Pedro Parra Ortega <pedro.parraortega@enreach.com>
* fix: correct shared toggle state and support delayed actions

* Update HandheldCompanion/Actions/MouseActions.cs

ignore suggested actions

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* tentative

* improve code

* misc

* Misc UI tweaks
* feat: correct shift logic and add support for shift combiantions

* fix: add backward compatibility
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 1, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

This release introduces PowerShell command execution, Windows platform-level sleep optimizations with full-screen detection, absolute mouse positioning (MoveTo), Windows modifier key support, and physical keyboard modifier tracking. It includes AMD curve and Intel MSR undervolting refactoring, device class reorganization, platform naming updates, and expanded UI controls for processor tweaking. Settings and resources are updated to support new features.

Changes

Cohort / File(s) Summary
Version Updates
HandheldCompanion.iss, HandheldCompanion.csproj
Bumped version from 0.28.2.3 to 0.28.3.1 and updated package dependencies (Sentry, SDL3-CS, RAMSPDToolkit-NDD, System.* packages).
New PowerShell Command Support
HandheldCompanion/Commands/Functions/Windows/PowerShellCommands.cs, HandheldCompanion/Commands/ICommands.cs, HandheldCompanion/Commands/FunctionCommands.cs
Added PowerShellCommands class for executing inline PowerShell scripts with configurable execution policies, profile/logo options, and RunAs support. Extended CommandType enum and integrated into command registry.
New HID Status Command
HandheldCompanion/Commands/Functions/HC/HIDStatusCommands.cs
Introduced HIDStatusCommands to toggle HID status between Connected/Disconnected states with settings integration.
Windows Platform and Sleep Features
HandheldCompanion/Platforms/Misc/WindowsPlatform.cs, HandheldCompanion/Platforms/Misc/{RTSSPlatform,LibreHardwarePlatform}.cs, HandheldCompanion/Managers/PlatformManager.cs, HandheldCompanion/App.config, HandheldCompanion/Properties/{Settings.*,Resources.Designer.cs}
Added WindowsPlatform with EnhancedSleepPolicy and ModernStandbyResleepMonitor for managing power policies and re-entering sleep after wake. Renamed RTSS and LibreHardware classes for consistency. Added new settings: RyzenAdjCoGfx, MsrUndervoltCore/Gpu/Soc, EnhancedSleep, GoBackToSleep.
Full-Screen Experience Monitor
HandheldCompanion/UI/FullScreenExperienceMonitor.cs, HandheldCompanion/Views/Windows/MainWindow.xaml.cs
Introduced FullScreenExperienceMonitor for detecting full-screen game states via native Windows API. MainWindow now respects FSE state for window management (disabled resizing, maximized behavior).
Action System Enhancements
HandheldCompanion/Actions/{IActions,KeyboardActions,MouseActions}.cs
Added Windows modifier key support and new MoveTo (absolute positioning) action type for mouse. KeyboardActions now executes modifiers and keys properly. MouseActions supports absolute cursor positioning with optional previous position restoration.
Keyboard Input Improvements
HandheldCompanion/Managers/InputsManager.cs
Added physical modifier tracking (PhysicalModifiersDown set) to distinguish physical keyboard events from injected ones. Includes stuck modifier detection/release logic in ReleaseKeyboardBuffer and new helper methods.
Processor and Performance Enhancements
HandheldCompanion/Processors/{AMD/RyzenAdj,AMDProcessor,Intel/KX,IntelProcessor}.cs, HandheldCompanion/Managers/PerformanceManager.cs
Refactored AMD curve adjustment with HasAllCoreCurve, HasPerCoreCurve, HasGpuCurve flags and new SetCoAll/SetCoPer/SetCoGfx methods. Added Intel MSR undervolting support (IntelUndervoltRail enum and set_msr_undervolt). Extended PerformanceManager to handle new settings.
Device Class Reorganization
HandheldCompanion/Devices/{AYANEO/,GPD/,SuiPlay/}*, HandheldCompanion/Devices/IDevice.cs
Renamed GPD device classes (GPDWin4_2023_7840U→GPDWin4_2023, GPDWin4_2024_8840U→GPDWin4_2024, GPDWinMini_7840U→GPDWinMini) and reorganized inheritance hierarchy. Added SuiPlay0X1 device. Updated LED color handling in AYANEODeviceCEc. Removed/consolidated axis configurations across GPD models.
UI/XAML Updates
HandheldCompanion/Views/{Pages/,Windows/,QuickPages/}*.xaml{.cs,}, HandheldCompanion/Views/TemplatesDictionary.xaml
Refactored DevicePage from Slider to NumberBox controls for curve/undervolt settings. Added EnhancedSleep and GoBackToSleep toggles. Extended hotkey UI for PowerShell content editing. Added Hotkey tag and Font Size bindings. Simplified OverlayQuickTools by removing animation logic.
ViewModel and Layout Updates
HandheldCompanion/ViewModels/{*,Layout/Mappings/*}.cs, HandheldCompanion/Misc/Layout.cs
Added OnPropertyChanged virtual override in BaseViewModel. Extended HotkeyViewModel with FontSize and ScriptContent properties for PowerShell support. Added HasModifier, Button2MouseTo*, and dependent properties to ButtonMappingViewModel. Introduced thread-safe Layout synchronization via SyncRoot and _sync lock.
Controller and Device Management
HandheldCompanion/Managers/{ControllerManager,DeviceManager}.cs, HandheldCompanion/UI/UIGamepad.cs
SetTargetController now calls Plug() when controller is already targeted. UIGamepad skips toggling Hotkey ToggleButton (external management). Minor documentation cleanup in DeviceManager.
Resource and Settings Updates
HandheldCompanion/Properties/Resources.{Designer.cs,resx}, HandheldCompanion/Properties/Settings.*, locale-specific .resx files
Expanded resource strings for new UI elements (curve optimizers, undervolting, enhanced sleep, PowerShell hotkeys, HID status). Updated ProfilesPage_AreYouSureDelete1 to include {0} placeholder. Renamed SettingsPage_CurveOptimiser→AllCurveOptimiser and added new settings across all locales (de-DE, es-ES, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, ru-RU, zh-Hans, zh-Hant).
Miscellaneous
HandheldCompanion/{Simulators/MouseSimulator.cs,Managers/{MultimediaManager,OSDManager,ProfileManager,ToastManager}.cs}
Added MouseX/MouseY properties and Sleep method to MouseSimulator. Refactored brightness error handling in MultimediaManager. Added explorer.exe profile art refresh skip and turbo/toggle state fixes in ProfileManager.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant MainWindow as MainWindow
    participant FSE as FullScreenExperienceMonitor
    participant NativeAPI as Windows API<br/>(Gaming Experience)
    
    User->>MainWindow: Application starts
    MainWindow->>FSE: new FullScreenExperienceMonitor()
    FSE->>FSE: Start()
    FSE->>NativeAPI: Load api-ms-win-gaming-experience-l1-1-0
    NativeAPI-->>FSE: API loaded
    FSE->>NativeAPI: RegisterGamingFullScreenExperienceChangeNotification()
    NativeAPI-->>FSE: Register callback handle
    
    User->>NativeAPI: Launch/Enter full-screen game
    NativeAPI->>FSE: OnFseChangedNative callback
    FSE->>FSE: Query IsGamingFullScreenExperienceActive()
    FSE->>MainWindow: FseStateChanged(isActive=true)
    MainWindow->>MainWindow: Disable resize, Force Maximized
    MainWindow->>User: Window is now maximized
    
    User->>NativeAPI: Exit full-screen game
    NativeAPI->>FSE: OnFseChangedNative callback
    FSE->>MainWindow: FseStateChanged(isActive=false)
    MainWindow->>MainWindow: Restore resize buttons, Prior state
    MainWindow->>User: Window restored to prior state
Loading
sequenceDiagram
    participant User
    participant Hotkey as HotkeyViewModel
    participant Command as PowerShellCommands
    participant Executor as Process Executor
    
    User->>Hotkey: Select PowerShell command type
    Hotkey->>Hotkey: CommandTypeIndex = 4 (PowerShell)
    User->>Hotkey: Enter script content
    Hotkey->>Hotkey: ScriptContent = script text
    User->>Hotkey: Trigger hotkey
    Hotkey->>Command: Execute(IsKeyDown=true)
    Command->>Command: BuildPowerShellArgs(encodedCommand)
    Command->>Command: EncodeForPowerShell(ScriptContent)<br/>UTF-16LE encode
    Command->>Executor: Start pwsh.exe or powershell.exe<br/>with -EncodedCommand payload
    Executor-->>User: Script executes silently
Loading
sequenceDiagram
    participant User
    participant InputManager as InputsManager
    participant KeyboardBuffer as KeyboardBuffer
    participant KeyEvent as Physical Keyboard
    
    User->>KeyEvent: Press Ctrl key (physical)
    KeyEvent->>InputManager: KeyDown event (non-injected)
    InputManager->>InputManager: IsModifierKey(Keys.ControlKey) = true
    InputManager->>InputManager: PhysicalModifiersDown.Add(Ctrl)
    
    User->>KeyEvent: Press A key (physical)
    KeyEvent->>InputManager: KeyDown event
    InputManager->>InputManager: Initialize pressed from Modifiers
    InputManager->>KeyboardBuffer: Buffer Ctrl+A sequence
    
    User->>KeyEvent: Release A key
    KeyEvent->>InputManager: KeyUp event
    InputManager->>KeyboardBuffer: Release A from buffer
    
    User->>KeyEvent: Release Ctrl key
    KeyEvent->>InputManager: KeyUp event (non-injected)
    InputManager->>InputManager: PhysicalModifiersDown.Remove(Ctrl)
    
    InputManager->>KeyboardBuffer: ReleaseKeyboardBuffer()
    KeyboardBuffer->>KeyboardBuffer: Check stuck modifiers<br/>Ctrl not in PhysicalModifiersDown
    KeyboardBuffer->>KeyboardBuffer: Release lingering Ctrl
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • 0.28.2.2 #1336 — Both PRs modify AMD processor curve adjustment code (RyzenAdj, AMDProcessor, SetCoAll/SetCoGfx methods) and add/rename related settings (RyzenAdjCoAll, RyzenAdjCoGfx).
  • Build 0.28.1.4 #1320 — Both PRs modify InputsManager and ControllerManager for input/controller handling improvements and state management.
  • 0.28.0.0 #1302 — Both PRs update HandheldCompanion.iss installer version definition (MyAppVersion bump).

Poem

🐰 With PowerShell scripts and sleep so deep,
The Windows dance makes gamers weep,
Cursors jump to absolute grace,
While modifiers find their place,
From AMD curves to Intel's might,
This release shines ever bright!

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 0.28.3.1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Valkirie Valkirie merged commit abcc006 into main Feb 1, 2026
1 of 2 checks passed
@Valkirie Valkirie deleted the 0.28.3.1 branch February 1, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants