Skip to content

Add an option to enable desktop profile on application start#457

Merged
Valkirie merged 3 commits intoValkirie:mainfrom
Havner:desktop
Apr 11, 2023
Merged

Add an option to enable desktop profile on application start#457
Valkirie merged 3 commits intoValkirie:mainfrom
Havner:desktop

Conversation

@Havner
Copy link
Collaborator

@Havner Havner commented Apr 9, 2023

By default it's true and has a nice side effect of making the mouse/keyboard work automatically on first HC start after it's installed.

@Havner
Copy link
Collaborator Author

Havner commented Apr 9, 2023

It's just a proposal/RFC. I mean the code is ready and working but not sure you actually want something like that. But hear me out please.

We've discussed today two main ways people can use HC:

  1. Desktop mode is the main profile for the desktop and the Default profile is a profile for most games with specific games getting their own profile. This requires hitting a hotkey when starting/leaving the game. This is what probably most people use.

  2. Default mode is the main profile for the desktop. All games need their own profile but the profiles switch automatically on game start/stop. No hotkey required. This is what I use and for what I reported many bugreports. To have this mode working flawlessly (and it does now).

Now Benjamin mentioned today that he likes the 2 so much now that it would consider making it the de facto default. I've talked with Casper later about that and he told me that for several people this might be off-putting cause it requires creating profiles for all games. I honestly get that argument.

And probably no rework/change of paradigm will happen any time soon (not that it needs to) and the current state of HC actually supports both approaches. I just feel there is one option missing to improve it. Hence this PR.

Adding such an option will be helpful for people using 1. Actually one user even asked for this to happen automatically (enabled Desktop profile on start). And before someone does that I created an option for that because for people using 2 this is not what they want.

This option and its default value being true has one more effect, that actually benefits people using 1 and 2. When you start HC for the first time ever you have the Desktop profile automatically enabled and mouse/basic keyboard working out of the box. And then you can choose what to do and which way to go.

@CasperH2O
Copy link
Collaborator

CasperH2O commented Apr 10, 2023

Perhaps slightly late as you already went through the effort, but instead of having a setting for this, why not fix the bug that if you have Desktop layout active when closing HC, it's not active again when you open HC, currently it's always disabled when opening HC regardless?

@CasperH2O
Copy link
Collaborator

CasperH2O commented Apr 10, 2023

In response to your proposal, I'm personally a big fan of number 2 but want to caution restrain for (new) users. Perhaps we can:

  • Add Desktop mode pinned to QuickTools by default
  • Enable Desktop mode by default
  • Fix Desktop mode enable/disable state through HC restarts

The drawback here is that when people start playing games, they need to learn how to disable Desktop mode... Which I really don't like. 🙁

@Havner
Copy link
Collaborator Author

Havner commented Apr 10, 2023

Perhaps slightly late as you already went through the effort, but instead of having a setting for this, why not fix the bug that if you have Desktop layout active when closing HC, it's not active again when you open HC, currently it's always disabled when opening HC regardless?

It's not a bug from what I can see from the code. The Desktop profile setting is marked as temporary and has been from the start. And I personally don't like it to be restored. In my mind it really is the temporary setting. I might close the HC in various states but it doesn't change the paradigm in which I use HC. And I want it to be in a known state when I start it.

@Havner
Copy link
Collaborator Author

Havner commented Apr 10, 2023

* Add Desktop mode pinned to QuickTools by default

Sure

* Enable Desktop mode by default

My code makes it enabled by default on first HC start. But you can disable that later on if you choose to.

* Fix Desktop mode enable/disable state through HC restarts

This is exactly what I don't want. If you really want that then make it configurable, like:

Enable desktop mode on application start (OPTION): [yes|no|restore previous state]

But don't force it. The same way I wouldn't force auto Desktop enable on everyone. Hence the option I implemented.

The drawback here is that when people start playing games, they need to learn how to disable Desktop mode... Which I really don't like. 🙁

From what I understand you earlier people are using 1 anyway. So they actually do that. I'm confused now.

In any case, IMO non of that changes what my code achieves here. It can always be expanded upon later on (e.g. with that option I described above).

@Havner
Copy link
Collaborator Author

Havner commented Apr 10, 2023

The drawback here is that when people start playing games, they need to learn how to disable Desktop mode... Which I really don't like. 🙁

From what I understand you earlier people are using 1 anyway. So they actually do that. I'm confused now.

Anyway, both approaches have drawbacks (either you have to disable/enable the Desktop mode or create a profile per game). Not sure this can be solved in any way. What I am trying to do here is to make sure that both those solutions can work well and let people choose which one they want. I wouldn't want to force any settings on people that can hinder one or another.

@Valkirie
Copy link
Owner

I'm fine with that pull request, as is. I'm just going to implement a few pre-pinned hotkeys (including Desktop layout) and a physical toggle on main controller page to make sure people understand when the option is turned on.

@CasperH2O
Copy link
Collaborator

Enable desktop mode on application start (OPTION): [yes|no|restore previous state]

I find it odd to make a setting for having it enabled on boot yes or no. Instead I propose we make the Desktop layout being on or off a setting and have it on by default.

@Havner
Copy link
Collaborator Author

Havner commented Apr 10, 2023

I find it odd to make a setting for having it enabled on boot yes or no. Instead I propose we make the Desktop layout being on or off a setting and have it on by default.

Please elaborate, I don't understand what you mean here.

Havner and others added 3 commits April 11, 2023 15:52
By default it's true and has a nice side effect of making the mouse/keyboard
work automatically on first HC start after it's installed.
shortcutKeyboard, shortcutDesktop, shortcutControlCenter, shortcutMainwindow, shortcutDesktopLayout
@Havner
Copy link
Collaborator Author

Havner commented Apr 11, 2023

Just a rebase

@Valkirie Valkirie merged commit ef13328 into Valkirie:main Apr 11, 2023
@Havner Havner deleted the desktop branch April 11, 2023 14:22
Havner added a commit to Havner/HandheldCompanion that referenced this pull request Apr 13, 2023
…e#457)

* Add an option to enable desktop profile on application start

By default it's true and has a nice side effect of making the mouse/keyboard
work automatically on first HC start after it's installed.

* move settings

* implement default pinned hotkey support

shortcutKeyboard, shortcutDesktop, shortcutControlCenter, shortcutMainwindow, shortcutDesktopLayout

---------

Co-authored-by: Lesueur Benjamin <benjamin.lesueur@live.com>
Valkirie added a commit that referenced this pull request Aug 31, 2025
- Support both IGDB and SteamGrid researches in parallel.
- Todo: Add checkboxes
Valkirie added a commit that referenced this pull request Aug 31, 2025
* misc

* WIP

* more work

* Fixed audio slider rounding logic

* Disable joystick UI navigation (buttons and dpad only)

* more work

* chore(i18n): Improve translate

* chore(i18n): Improve translate

* feat(Managers): Handle unsupported GPU

* fix(OSD): Some settings never load.

* chore(i18n): Improve translate

* fix(Managers): An error message will never be logged.

* Update README.md

* more work

* More work

* more work

* more work

Fix SDL_GamepadAdded and SDL_GamepadRemoved

* Fix PickTargetController()

* Fix PnPDetails retrieval logic on SDL controllers

* Fix PickTargetController()

* more work

* misc

* more work

* rollback

* More work

- Implement gamecontrollerdb
- Restored DInput

* more work

* Fix StylusLogic error

* net9.0

* More work on devices

* more work

* more work

* AYANEO Kun : Update KeyboardChords from new EC

* add MuteConsole setting

* Add Core Isolation setting during installation

* more work

* Disable Steam Controller and Steam Deck support from SDL3 until implementation is better

* add PresentationCore

* Improve SDL controller management

- Support Scan logic
- Prevent HID events from capturing SDL controllers

* Fixed a crash caused by parallel collection modification

* Fixed a crash caused by an empty window name from GamepadFocusManager GotFocus

* Fixed known UI issues

- Display controller page rescan loading bar
- Fixed QuickProfiles subprofile combobox MaxWidth

* Improve Hotkey page

* Implement GuideCommands

* Dispose and restore MasterTimer on suspend/resume

* Fixed an issue causing a crash when trying to Marshal an XInputController into a SDLController

* code cleanup

* Update ClawA1M so we peak the nearest firmware not the exact one

* state if firmware is supported or not

* Add ClawA1M Firmware support: 0x167

* prevent infinite controller management loop

* Improve DeviceManager robustness

- DeviceRemoved events should never be raised before DeviceAdded

* Improve ControllerManager logic

* Update IGCL to v247

* misc

* Update libs

* Fix ControllerManagement

* prevent crash on cast error

* Fix notifications page stackpanel orientation to Vertical

* Implement new setting GPUManagerMonitor (default: off)

* Remove ugly SpinWait.SpinUntil

* MSI Claw : set_long_limit to 35W (WMI)

* Feature: Add Intel Endurance Gaming to Power profile options

Give the user the option to control and configure Intel's Endurance Gaming in both Profile and Quick Menu.

By default "Super Batter Saver" turns on Endurance Gaming with "Efficiency, which reduces the frame rate to 30 fps.

This gives the user granular control the power saving of Inte's tuning based on FPS.

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Fix build errors due to ambiguous SystemInformation

LibreHardwareMonitor have the same class name as Windows Forms

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Only show Intel Endurance Gaming options to MSI Claw

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Simplify EnduranceGaming Profile properties

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Few fixes from code Rabbit

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Visual improvements

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Fixes and clean up

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Implement IGCL with EnduranceGaming support (WIP)

* Move endurance gaming to GPUManager

* remove debug/tests

* Add missing events management

* Implement IntelGPU UpdateTimer_Elapsed

* no icon on settingscard within settingsexpander

* Intel GPU: Wait until IntelGraphicsSoftwareService is ready

* Fix merge error

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Simplify Power mode UI (WIP)

* more work

* simplify logic

* Misc UI improvement

Controller page progressbar

* Misc UI improvement

Fixed an issue where clicking on a control within SettingsCard (when IsClickable) would trigger the SettingsCard click.

* Misc UI improvement

Fix MainWindow Glyph ForegroundProperty

* Update IGCL_Wrapper.dll

* update SDL3-CS lib

* Increase maximum overlay timer to 2000ms

The bigger the interval, the lower the CPU usage.

* Make "No localization for enum" LogDebug

* Fix Enum following our transition to SDL for a few controllers

- DualSense
- DualShock4
- Nintendo Switch Pro
- MSI Claw (DInput)

* Implement new controller setting: ConnectOnPlug

* Better ConnectOnPlug logic

* PowerProfileManager: profiles is now ConcurrentDictionary

* Fixed an issue causing a crash when trying to read dummy controller

* MSI Claw: Misc timing edits

* Update for new LGO firmware

* misc

* more work

* improve hid detection

leverage usage and usagepage as listed by hhd (https://github.com/hhd-dev/hhd/blob/master/src/hhd/device/claw/base.py)

* more work

* misc

* misc

* more work

* fallback implementation to Legion Go S

* Update SDL to 3.2.18

- Fixed replacing existing gamepad mappings at runtime
- Improved thumbstick range for Nintendo Switch Pro Controllers
- Fixed loading user calibration for Nintendo Switch Pro Controllers
- Added support for the ZEROPLUS P4 Wired Gamepad
- Fixed input from the MayFlash GameCube adapter with version 7 firmware

* remove lock logic

* remove dumb check

* Update PromptFont and use proper controller glyph on controller page

* (tentative) get rid of Sapientia wherever we can

* more work

* misc

* misc

* Force enable GPUManagerMonitor and temporarily disable the setting until we figure out a proper implementation

* misc

* tentative to hide the LGO DInput devices

* misc

* Recursively scroll through IController child devices to hide or unhide them

This should be useful for controllers that are both XInput and DInput

* build 0.26.0.0

* Fix ClawA1M DInput usagePage value

* Update SecretKeys.cs

* Add support over Claw A8 BZ2EM

* code cleanup

* Improve IController GetLocalizedName()

* Add missing enums (Enum_Xbox360Controller_XXX)

* Implement fPPT (Claw A8)

iDataBlockIndex: 82

* misc

* Update Claw devices nTDP and cTDP values

* build 0.26.0.2

* Implement proper Legion Go S support (tentative)

* more work

* more work

* more work

* more work

* more work

* clean up

* misc fix

* misc

* misc

* fix back button idx ?

* fix accelero/gyro range

* misc

* Early work

* misc

* Fixed an issue preventing silenced key chords from being caught during hotkey listening

* more work

* more work

* add illustration

* Fix byte position

* more work

* oups

* Fixed Legion Go S support

* misc

* more work

* more work

Migrated wheel logic to controller and added extra buttons and glyphs

* Implement Zotac Gaming Zone Fan control

* Implement WMI methods

* WIP implement SetVRamSize

* add proper physicalInstalledRamGB reading

* more work

* Bounds SetLedBrightness() to BrightnessID

* More work

* revert hidhide foreach in IDevice

* more work

* more work

* more work

* misc fix

* Fix LED logic (both position and RGB decoding)

* why not

* improve RGB logic

* Fix settings

* Implement ZotacLauncherWatcher()

* Sorted gyro/accel axis

* (tentative) improve wheel filtering

* Remove most of the hardcoded logic

* misc

* misc fixes

* Add GamingZone default power profiles

* Update libraries

* code cleanup

* Fix UI navigation

* build 0.26.1.0

* Misc PR (#455)

New Features

Added support for Zotac Gaming Zone devices, including a new VRAM configuration option in device settings.
Introduced controller swap functionality for Lenovo Legion Go devices, with corresponding UI controls and localization.
Added a property to indicate manufacturer platform support in device settings.
Improvements

Refined device settings UI to display panels specific to MSI Claw, Lenovo Legion Go, and Zotac Gaming Zone.
Enhanced splash screen with an animated progress indicator.
Updated controller input handling for improved consistency and mapping support.
Localization

Added new resource strings and placeholders for controller swap and VRAM settings in multiple languages.
Bug Fixes

Improved handling of device-specific settings and toggles to ensure correct UI behavior and device interaction.

* Add missing setting: LegionControllerSwap

* build 0.26.2.0

* Fixed an issue with UIGamepad focus logic when HC is starting

* Improve LibraryPage tiles layout

* misc cleanup

* Improve executable startup

- Implemented DelegateCommand with parameter(s)
- Allow user to pick Run/RunAs to start executable from profile page

* Improve IManager AddStatus and RemoveStatus

* misc

* Don't create process if you can't listen for events

* Async inputs updated (#456)

* Improve ControllerManagement event logic

I was dumb and thought RaisingAnEvent?.Invoke() would simultaneously raise event across all listeners and have their tasks to run in parallel. I was wrong...

* better

* Improve LibraryManager (#457)

- Support both IGDB and SteamGrid researches in parallel.
- Todo: Add checkboxes

* Async layout updated (#458)

* Implement async LayoutUpdated event

* Implement EventHelper.RaiseAsync()

* misc improvement to controller management

* Implement GameLib (#460)

* Make PlatformManager async and start implementing GameLib

* prevent useless power profile updates

* misc

* misc

* implement more platforms

* more work

* Add LaunchString support over StartProcessCommand

* more work

* Add profile page field: LaunchString

* improve ProfileViewModel navigation

* misc

* filter a few executables

* Update SDL3 to 3.2.20

https://github.com/libsdl-org/SDL/releases/tag/release-3.2.20

* Update LibreHardwareMonitorLib

* Update gamecontrollerdb.txt

* Implement Quick Profiles button (Edit layout)

* Implement Quicktools position: BottomCenter

* UI work

* misc

* Improve Scan Library UI with DropDownButton

* Fix process detection on QuickApplicationPage

* Improve overall QuickProfiles UI experience

Add two new buttons: Button_OpenProfilePage, Button_OpenProfileLayout

* Misc UI improvements

* Fix QT Margins

* Improve FanProfile logic

* More work on fan (both UI and backoffice)

* Improve page loading logic

* Improve Quicktools Width under several scenarios

* Misc

* Add QT animation logic

* Fix Icons

* Add FanTable restore logic to LegionGo

* Restore PL1/PL2 logic and fix values for Lunar-Lake based devices

* Update PowerProfileManager.cs

* Proper Intel MicroArchitecture detection

* hacky fix for MSI Claw gamepad

* build 0.27.0.0

* Fix: Default Power profile reset when device restart

* Fix PL1/PL2 errors

- PL2 shouldn't be inferior to PL1
- PL2 should be equal or PL1+1 (Lunar Lake)

* Fix: Open layout page in Quicktool not going to the game page (go to default profile page)

* Fix: Blank spaces on QuickHome hotkeys

* more work

* Fix: QuickToolsSlideAnimation

* more work

* prevent critical processes from being listed on Quick applications

* Filter games related executables with error in filename

* Improve MSI Claw Fan Mapping

* build 0.27.0.1

* Update README.md

* Misc UI Fix

* Fix Claw A2VM Performance PL2

* Improve profile management (#461)

* Improve profile management

* Fix: Crash on corrupted user.config

* Improve MSI Claw controller robustness

* Cleanup

* delete previous profile file on profile name changes

* build 0.27.0.2

* You can now pass initial directory to CommonFileDialog()

* Fix race condition

* Filter library apps on: uninst

* improve profile management (store path)

* Fix Quicktools style

* Add new QT settings: Apply noise to window's background

* build 0.27.0.3

* Refactor Overlay rendering logic to strategy design pattern (#1281)

* Refactor Overlay rendering logic to strategy design pattern

* Fix ai comments

* Add widget system with factory

* Fix some AI comments

* Add level selection for overlay widgets.
Refactor strategies (use widgets.

* Fix level for cpu widget in full overlay strategy

* cleanup

* Fixed: crash when managing corrupted profiles

* Improve profile sanitizer

* Fix RTSS status check

* Fixed: Incorrect IsMapped boolean check on ControllerManager Tick()

* build 0.27.0.4

* Improve process detection within StartProcessCommand

* Dramatically cuts GC pressure and CPU (#462)

* Dramatically cuts GC pressure and CPU

* Fix TriggerActions shiftSlot logic

* build 0.27.0.5

* Misc fix

* Add missing dynamic lighting capacities to MSI Claw

* build 0.27.0.6

---------

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>
Co-authored-by: Sanheiii <35133371+Sanheiii@users.noreply.github.com>
Co-authored-by: Bassem Mohsen <bassem.nomany@gmail.com>
Co-authored-by: Kvintilyanov Aleksandr <mops1k@users.noreply.github.com>
Valkirie added a commit that referenced this pull request Oct 7, 2025
* Visual improvements

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Fixes and clean up

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Implement IGCL with EnduranceGaming support (WIP)

* Move endurance gaming to GPUManager

* remove debug/tests

* Add missing events management

* Implement IntelGPU UpdateTimer_Elapsed

* no icon on settingscard within settingsexpander

* Intel GPU: Wait until IntelGraphicsSoftwareService is ready

* Fix merge error

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>

* Simplify Power mode UI (WIP)

* more work

* simplify logic

* Misc UI improvement

Controller page progressbar

* Misc UI improvement

Fixed an issue where clicking on a control within SettingsCard (when IsClickable) would trigger the SettingsCard click.

* Misc UI improvement

Fix MainWindow Glyph ForegroundProperty

* Update IGCL_Wrapper.dll

* update SDL3-CS lib

* Increase maximum overlay timer to 2000ms

The bigger the interval, the lower the CPU usage.

* Make "No localization for enum" LogDebug

* Fix Enum following our transition to SDL for a few controllers

- DualSense
- DualShock4
- Nintendo Switch Pro
- MSI Claw (DInput)

* Implement new controller setting: ConnectOnPlug

* Better ConnectOnPlug logic

* PowerProfileManager: profiles is now ConcurrentDictionary

* Fixed an issue causing a crash when trying to read dummy controller

* MSI Claw: Misc timing edits

* Update for new LGO firmware

* misc

* more work

* improve hid detection

leverage usage and usagepage as listed by hhd (https://github.com/hhd-dev/hhd/blob/master/src/hhd/device/claw/base.py)

* more work

* misc

* misc

* more work

* fallback implementation to Legion Go S

* Update SDL to 3.2.18

- Fixed replacing existing gamepad mappings at runtime
- Improved thumbstick range for Nintendo Switch Pro Controllers
- Fixed loading user calibration for Nintendo Switch Pro Controllers
- Added support for the ZEROPLUS P4 Wired Gamepad
- Fixed input from the MayFlash GameCube adapter with version 7 firmware

* remove lock logic

* remove dumb check

* Update PromptFont and use proper controller glyph on controller page

* (tentative) get rid of Sapientia wherever we can

* more work

* misc

* misc

* Force enable GPUManagerMonitor and temporarily disable the setting until we figure out a proper implementation

* misc

* tentative to hide the LGO DInput devices

* misc

* Recursively scroll through IController child devices to hide or unhide them

This should be useful for controllers that are both XInput and DInput

* build 0.26.0.0

* Fix ClawA1M DInput usagePage value

* Update SecretKeys.cs

* Add support over Claw A8 BZ2EM

* code cleanup

* Improve IController GetLocalizedName()

* Add missing enums (Enum_Xbox360Controller_XXX)

* Implement fPPT (Claw A8)

iDataBlockIndex: 82

* misc

* Update Claw devices nTDP and cTDP values

* build 0.26.0.2

* Implement proper Legion Go S support (tentative)

* more work

* more work

* more work

* more work

* more work

* clean up

* misc fix

* misc

* misc

* fix back button idx ?

* fix accelero/gyro range

* misc

* Early work

* misc

* Fixed an issue preventing silenced key chords from being caught during hotkey listening

* more work

* more work

* add illustration

* Fix byte position

* more work

* oups

* Fixed Legion Go S support

* misc

* more work

* more work

Migrated wheel logic to controller and added extra buttons and glyphs

* Implement Zotac Gaming Zone Fan control

* Implement WMI methods

* WIP implement SetVRamSize

* add proper physicalInstalledRamGB reading

* more work

* Bounds SetLedBrightness() to BrightnessID

* More work

* revert hidhide foreach in IDevice

* more work

* more work

* more work

* misc fix

* Fix LED logic (both position and RGB decoding)

* why not

* improve RGB logic

* Fix settings

* Implement ZotacLauncherWatcher()

* Sorted gyro/accel axis

* (tentative) improve wheel filtering

* Remove most of the hardcoded logic

* misc

* misc fixes

* Add GamingZone default power profiles

* Update libraries

* code cleanup

* Fix UI navigation

* build 0.26.1.0

* Misc PR (#455)

New Features

Added support for Zotac Gaming Zone devices, including a new VRAM configuration option in device settings.
Introduced controller swap functionality for Lenovo Legion Go devices, with corresponding UI controls and localization.
Added a property to indicate manufacturer platform support in device settings.
Improvements

Refined device settings UI to display panels specific to MSI Claw, Lenovo Legion Go, and Zotac Gaming Zone.
Enhanced splash screen with an animated progress indicator.
Updated controller input handling for improved consistency and mapping support.
Localization

Added new resource strings and placeholders for controller swap and VRAM settings in multiple languages.
Bug Fixes

Improved handling of device-specific settings and toggles to ensure correct UI behavior and device interaction.

* Add missing setting: LegionControllerSwap

* build 0.26.2.0

* Fixed an issue with UIGamepad focus logic when HC is starting

* Improve LibraryPage tiles layout

* misc cleanup

* Improve executable startup

- Implemented DelegateCommand with parameter(s)
- Allow user to pick Run/RunAs to start executable from profile page

* Improve IManager AddStatus and RemoveStatus

* misc

* Don't create process if you can't listen for events

* Async inputs updated (#456)

* Improve ControllerManagement event logic

I was dumb and thought RaisingAnEvent?.Invoke() would simultaneously raise event across all listeners and have their tasks to run in parallel. I was wrong...

* better

* Improve LibraryManager (#457)

- Support both IGDB and SteamGrid researches in parallel.
- Todo: Add checkboxes

* Async layout updated (#458)

* Implement async LayoutUpdated event

* Implement EventHelper.RaiseAsync()

* misc improvement to controller management

* Implement GameLib (#460)

* Make PlatformManager async and start implementing GameLib

* prevent useless power profile updates

* misc

* misc

* implement more platforms

* more work

* Add LaunchString support over StartProcessCommand

* more work

* Add profile page field: LaunchString

* improve ProfileViewModel navigation

* misc

* filter a few executables

* Update SDL3 to 3.2.20

https://github.com/libsdl-org/SDL/releases/tag/release-3.2.20

* Update LibreHardwareMonitorLib

* Update gamecontrollerdb.txt

* Implement Quick Profiles button (Edit layout)

* Implement Quicktools position: BottomCenter

* UI work

* misc

* Improve Scan Library UI with DropDownButton

* Fix process detection on QuickApplicationPage

* Improve overall QuickProfiles UI experience

Add two new buttons: Button_OpenProfilePage, Button_OpenProfileLayout

* Misc UI improvements

* Fix QT Margins

* Improve FanProfile logic

* More work on fan (both UI and backoffice)

* Improve page loading logic

* Improve Quicktools Width under several scenarios

* Misc

* Add QT animation logic

* Fix Icons

* Add FanTable restore logic to LegionGo

* Restore PL1/PL2 logic and fix values for Lunar-Lake based devices

* Update PowerProfileManager.cs

* Proper Intel MicroArchitecture detection

* hacky fix for MSI Claw gamepad

* build 0.27.0.0

* Fix: Default Power profile reset when device restart

* Fix PL1/PL2 errors

- PL2 shouldn't be inferior to PL1
- PL2 should be equal or PL1+1 (Lunar Lake)

* Fix: Open layout page in Quicktool not going to the game page (go to default profile page)

* Fix: Blank spaces on QuickHome hotkeys

* more work

* Fix: QuickToolsSlideAnimation

* more work

* prevent critical processes from being listed on Quick applications

* Filter games related executables with error in filename

* Improve MSI Claw Fan Mapping

* build 0.27.0.1

* Update README.md

* Misc UI Fix

* Fix Claw A2VM Performance PL2

* Improve profile management (#461)

* Improve profile management

* Fix: Crash on corrupted user.config

* Improve MSI Claw controller robustness

* Cleanup

* delete previous profile file on profile name changes

* build 0.27.0.2

* You can now pass initial directory to CommonFileDialog()

* Fix race condition

* Filter library apps on: uninst

* improve profile management (store path)

* Fix Quicktools style

* Add new QT settings: Apply noise to window's background

* build 0.27.0.3

* Refactor Overlay rendering logic to strategy design pattern (#1281)

* Refactor Overlay rendering logic to strategy design pattern

* Fix ai comments

* Add widget system with factory

* Fix some AI comments

* Add level selection for overlay widgets.
Refactor strategies (use widgets.

* Fix level for cpu widget in full overlay strategy

* cleanup

* Fixed: crash when managing corrupted profiles

* Improve profile sanitizer

* Fix RTSS status check

* Fixed: Incorrect IsMapped boolean check on ControllerManager Tick()

* build 0.27.0.4

* Improve process detection within StartProcessCommand

* Dramatically cuts GC pressure and CPU (#462)

* Dramatically cuts GC pressure and CPU

* Fix TriggerActions shiftSlot logic

* build 0.27.0.5

* Misc fix

* Add missing dynamic lighting capacities to MSI Claw

* build 0.27.0.6

* Implement EADesktop support through GameLib (#463)

* Implement EADesktop support through GameLib

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

* Fix EADesktop logo missing from LibraryPage

* Ambilight: Reduce CPU consumption (#464)

* Reduce CPU usage, phase 1

* misc tweaks

* build 0.27.0.7

* Extended expected delay before profile related executable is ready

* Improve library manager SteamGrid lookup with cleaned string

* Optimizing IActions related functions (#465)

* 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

* Improved: Set device OEM buttons as Inherit on new profiles

* Improved: UI Navigation

- 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

* Implement controller page related support section

* Fixed: version checking from profiles manager on older profile

* Fixed: GameBarCommands and DesktopCommands

* Improved: ROG Ally PerformanceMode and AsusFan.Mid

* Hacky: Fixed: Phantom controller filtering

* build 0.27.0.9

* Add Inherits for AllButtons and AllAxisLayoutFlags

* Update Quicktools Home and Applications UI

* Force (re)apply Quicktools transparency when changing postion

* Update libs

* oups

* Fixed: Issue when discovering non-Steam games with multiple executables

* Fixed: SDL XInput controller ignored

* Fixed: Issues when trying to trigger hotkeys

* Fixed: UI Issue when navigating into a page without IsEnabled controls

* Improved: QuickHome, QuickApplications UI

* build 0.27.0.10

* States fixes

* Improved: Removed hacky controller manager await in benefits of more robust device manager arrival logic

* Improved: Device management has new queuing logic

* Improved: Quicktools L1/R1 will now circle within menu items

* Filter SDL Events

* Fixed: Restore default fan profile when fan mode is set to Hardware

* Migrate some platform logic to PlatformManager

We should move the PlatformToProfile logic to LibraryManager or PlatformManager

* Fix Claw FanSpeed array

* Implemented: new commands ButtonCommands replacing GuideCommands

* Improve Action Type UI experience

* Fixed: Button to TriggerActions

* Improved: ButtonMapping and AxisMapping migrated to SettingsExpander and SettingsCard

* Improved: GyroMapping and TriggerMapping migrated to SettingsExpander and SettingsCard

* Improved: MouseAction Acceleration is now relying on action delta (ms) to compute velocity memory

* Misc UI tweaks

* build 0.27.0.11

* Misc UI improvements

* Fixed: OEM buttons will now properly inherit default behavior

* misc

* misc

* Fixed: Input/Hotkey injection on dummy controllers

* Revert: Improved: Device management has new queuing logic

* Fixed: Rog Ally Xbox Adaptive Controller support

* Improved: Allow users to edit default power profiles

* Edit a few default settings

* build 0.27.0.12

* Improve overall fan management and ROG Ally TDP (#466)

* (Tentative) Fix TDP/Fan issues

* Misc: migrate powerProfile management to IDevice

* update lib

* Improved: Controller management

* Implemented: Per-device hotkeys (#467)

* Improved: Controller management

* Improved: Per-device hotkeys

* build 0.27.0.13

* Fixed: Profile update when resolution or refresh rate is changed

* Misc (#468)

* Tentative fix buttons RGB control

* Fixed: Hotkey deserialization with old ButtonFlags

* code cleanup

* Fixed: missing library: YamlDotNet

* Fixed: hotkey duplication

* Updated LibreHardwareMonitorLib

* Fixed: Zotac Gaming Zone VRAM control

* Fixed: LegionR/LegionL inverted buttons on Legion Go S

* build 0.27.0.14

* Improve session and device management (#469)

* Improved: HC won't wait until session is ready anymore, except for keyboard input management

* Fixed: Device management asynchronous refresh

* Fixed: Device management asynchronous refresh

* oups

* Revert "Fixed: Profile update when resolution or refresh rate is changed"

This reverts commit 0fa4512.

* only update if necessary

* Update SDL3.dll

* Device support: Add ONEXPLAYER X1 AMD (weird ProductName: ONEXPLAYER X1z)

* Improved: Installation script to add WinRing0x64.sys and HandheldCompanion.sys to defender exclusion list

* build 0.28.0.0

* Update libraries

* Force refresh platform catalog when scanning

* Update LibreHardwareMonitorLib

---------

Signed-off-by: Bassem Mohsen <bassem.nomany@gmail.com>
Co-authored-by: Bassem Mohsen <bassem.nomany@gmail.com>
Co-authored-by: Kvintilyanov Aleksandr <mops1k@users.noreply.github.com>
Valkirie added a commit that referenced this pull request Oct 27, 2025
* Implement fPPT (Claw A8)

iDataBlockIndex: 82

* misc

* Update Claw devices nTDP and cTDP values

* build 0.26.0.2

* Implement proper Legion Go S support (tentative)

* more work

* more work

* more work

* more work

* more work

* clean up

* misc fix

* misc

* misc

* fix back button idx ?

* fix accelero/gyro range

* misc

* Early work

* misc

* Fixed an issue preventing silenced key chords from being caught during hotkey listening

* more work

* more work

* add illustration

* Fix byte position

* more work

* oups

* Fixed Legion Go S support

* misc

* more work

* more work

Migrated wheel logic to controller and added extra buttons and glyphs

* Implement Zotac Gaming Zone Fan control

* Implement WMI methods

* WIP implement SetVRamSize

* add proper physicalInstalledRamGB reading

* more work

* Bounds SetLedBrightness() to BrightnessID

* More work

* revert hidhide foreach in IDevice

* more work

* more work

* more work

* misc fix

* Fix LED logic (both position and RGB decoding)

* why not

* improve RGB logic

* Fix settings

* Implement ZotacLauncherWatcher()

* Sorted gyro/accel axis

* (tentative) improve wheel filtering

* Remove most of the hardcoded logic

* misc

* misc fixes

* Add GamingZone default power profiles

* Update libraries

* code cleanup

* Fix UI navigation

* build 0.26.1.0

* Misc PR (#455)

New Features

Added support for Zotac Gaming Zone devices, including a new VRAM configuration option in device settings.
Introduced controller swap functionality for Lenovo Legion Go devices, with corresponding UI controls and localization.
Added a property to indicate manufacturer platform support in device settings.
Improvements

Refined device settings UI to display panels specific to MSI Claw, Lenovo Legion Go, and Zotac Gaming Zone.
Enhanced splash screen with an animated progress indicator.
Updated controller input handling for improved consistency and mapping support.
Localization

Added new resource strings and placeholders for controller swap and VRAM settings in multiple languages.
Bug Fixes

Improved handling of device-specific settings and toggles to ensure correct UI behavior and device interaction.

* Add missing setting: LegionControllerSwap

* build 0.26.2.0

* Fixed an issue with UIGamepad focus logic when HC is starting

* Improve LibraryPage tiles layout

* misc cleanup

* Improve executable startup

- Implemented DelegateCommand with parameter(s)
- Allow user to pick Run/RunAs to start executable from profile page

* Improve IManager AddStatus and RemoveStatus

* misc

* Don't create process if you can't listen for events

* Async inputs updated (#456)

* Improve ControllerManagement event logic

I was dumb and thought RaisingAnEvent?.Invoke() would simultaneously raise event across all listeners and have their tasks to run in parallel. I was wrong...

* better

* Improve LibraryManager (#457)

- Support both IGDB and SteamGrid researches in parallel.
- Todo: Add checkboxes

* Async layout updated (#458)

* Implement async LayoutUpdated event

* Implement EventHelper.RaiseAsync()

* misc improvement to controller management

* Implement GameLib (#460)

* Make PlatformManager async and start implementing GameLib

* prevent useless power profile updates

* misc

* misc

* implement more platforms

* more work

* Add LaunchString support over StartProcessCommand

* more work

* Add profile page field: LaunchString

* improve ProfileViewModel navigation

* misc

* filter a few executables

* Update SDL3 to 3.2.20

https://github.com/libsdl-org/SDL/releases/tag/release-3.2.20

* Update LibreHardwareMonitorLib

* Update gamecontrollerdb.txt

* Implement Quick Profiles button (Edit layout)

* Implement Quicktools position: BottomCenter

* UI work

* misc

* Improve Scan Library UI with DropDownButton

* Fix process detection on QuickApplicationPage

* Improve overall QuickProfiles UI experience

Add two new buttons: Button_OpenProfilePage, Button_OpenProfileLayout

* Misc UI improvements

* Fix QT Margins

* Improve FanProfile logic

* More work on fan (both UI and backoffice)

* Improve page loading logic

* Improve Quicktools Width under several scenarios

* Misc

* Add QT animation logic

* Fix Icons

* Add FanTable restore logic to LegionGo

* Restore PL1/PL2 logic and fix values for Lunar-Lake based devices

* Update PowerProfileManager.cs

* Proper Intel MicroArchitecture detection

* hacky fix for MSI Claw gamepad

* build 0.27.0.0

* Fix: Default Power profile reset when device restart

* Fix PL1/PL2 errors

- PL2 shouldn't be inferior to PL1
- PL2 should be equal or PL1+1 (Lunar Lake)

* Fix: Open layout page in Quicktool not going to the game page (go to default profile page)

* Fix: Blank spaces on QuickHome hotkeys

* more work

* Fix: QuickToolsSlideAnimation

* more work

* prevent critical processes from being listed on Quick applications

* Filter games related executables with error in filename

* Improve MSI Claw Fan Mapping

* build 0.27.0.1

* Update README.md

* Misc UI Fix

* Fix Claw A2VM Performance PL2

* Improve profile management (#461)

* Improve profile management

* Fix: Crash on corrupted user.config

* Improve MSI Claw controller robustness

* Cleanup

* delete previous profile file on profile name changes

* build 0.27.0.2

* You can now pass initial directory to CommonFileDialog()

* Fix race condition

* Filter library apps on: uninst

* improve profile management (store path)

* Fix Quicktools style

* Add new QT settings: Apply noise to window's background

* build 0.27.0.3

* Refactor Overlay rendering logic to strategy design pattern (#1281)

* Refactor Overlay rendering logic to strategy design pattern

* Fix ai comments

* Add widget system with factory

* Fix some AI comments

* Add level selection for overlay widgets.
Refactor strategies (use widgets.

* Fix level for cpu widget in full overlay strategy

* cleanup

* Fixed: crash when managing corrupted profiles

* Improve profile sanitizer

* Fix RTSS status check

* Fixed: Incorrect IsMapped boolean check on ControllerManager Tick()

* build 0.27.0.4

* Improve process detection within StartProcessCommand

* Dramatically cuts GC pressure and CPU (#462)

* Dramatically cuts GC pressure and CPU

* Fix TriggerActions shiftSlot logic

* build 0.27.0.5

* Misc fix

* Add missing dynamic lighting capacities to MSI Claw

* build 0.27.0.6

* Implement EADesktop support through GameLib (#463)

* Implement EADesktop support through GameLib

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

* Fix EADesktop logo missing from LibraryPage

* Ambilight: Reduce CPU consumption (#464)

* Reduce CPU usage, phase 1

* misc tweaks

* build 0.27.0.7

* Extended expected delay before profile related executable is ready

* Improve library manager SteamGrid lookup with cleaned string

* Optimizing IActions related functions (#465)

* 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

* Improved: Set device OEM buttons as Inherit on new profiles

* Improved: UI Navigation

- 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

* Implement controller page related support section

* Fixed: version checking from profiles manager on older profile

* Fixed: GameBarCommands and DesktopCommands

* Improved: ROG Ally PerformanceMode and AsusFan.Mid

* Hacky: Fixed: Phantom controller filtering

* build 0.27.0.9

* Add Inherits for AllButtons and AllAxisLayoutFlags

* Update Quicktools Home and Applications UI

* Force (re)apply Quicktools transparency when changing postion

* Update libs

* oups

* Fixed: Issue when discovering non-Steam games with multiple executables

* Fixed: SDL XInput controller ignored

* Fixed: Issues when trying to trigger hotkeys

* Fixed: UI Issue when navigating into a page without IsEnabled controls

* Improved: QuickHome, QuickApplications UI

* build 0.27.0.10

* States fixes

* Improved: Removed hacky controller manager await in benefits of more robust device manager arrival logic

* Improved: Device management has new queuing logic

* Improved: Quicktools L1/R1 will now circle within menu items

* Filter SDL Events

* Fixed: Restore default fan profile when fan mode is set to Hardware

* Migrate some platform logic to PlatformManager

We should move the PlatformToProfile logic to LibraryManager or PlatformManager

* Fix Claw FanSpeed array

* Implemented: new commands ButtonCommands replacing GuideCommands

* Improve Action Type UI experience

* Fixed: Button to TriggerActions

* Improved: ButtonMapping and AxisMapping migrated to SettingsExpander and SettingsCard

* Improved: GyroMapping and TriggerMapping migrated to SettingsExpander and SettingsCard

* Improved: MouseAction Acceleration is now relying on action delta (ms) to compute velocity memory

* Misc UI tweaks

* build 0.27.0.11

* Misc UI improvements

* Fixed: OEM buttons will now properly inherit default behavior

* misc

* misc

* Fixed: Input/Hotkey injection on dummy controllers

* Revert: Improved: Device management has new queuing logic

* Fixed: Rog Ally Xbox Adaptive Controller support

* Improved: Allow users to edit default power profiles

* Edit a few default settings

* build 0.27.0.12

* Improve overall fan management and ROG Ally TDP (#466)

* (Tentative) Fix TDP/Fan issues

* Misc: migrate powerProfile management to IDevice

* update lib

* Improved: Controller management

* Implemented: Per-device hotkeys (#467)

* Improved: Controller management

* Improved: Per-device hotkeys

* build 0.27.0.13

* Fixed: Profile update when resolution or refresh rate is changed

* Misc (#468)

* Tentative fix buttons RGB control

* Fixed: Hotkey deserialization with old ButtonFlags

* code cleanup

* Fixed: missing library: YamlDotNet

* Fixed: hotkey duplication

* Updated LibreHardwareMonitorLib

* Fixed: Zotac Gaming Zone VRAM control

* Fixed: LegionR/LegionL inverted buttons on Legion Go S

* build 0.27.0.14

* Improve session and device management (#469)

* Improved: HC won't wait until session is ready anymore, except for keyboard input management

* Fixed: Device management asynchronous refresh

* Fixed: Device management asynchronous refresh

* oups

* Revert "Fixed: Profile update when resolution or refresh rate is changed"

This reverts commit 0fa4512.

* only update if necessary

* Update SDL3.dll

* Device support: Add ONEXPLAYER X1 AMD (weird ProductName: ONEXPLAYER X1z)

* Improved: Installation script to add WinRing0x64.sys and HandheldCompanion.sys to defender exclusion list

* build 0.28.0.0

* Update libraries

* Force refresh platform catalog when scanning

* Update LibreHardwareMonitorLib

* RyzenAdj 0.18.0

- Update for ryzen_smu 0.1.7
- Support: Strix Point
- Support: Dragon Range
- Support: Fire Range
- Support: HX370 (Pro)
- Support: Krackan Point

* Fixed: UI not rendering after GPU acceleration is toggled on/off

not perfect..

* DClawController to use GenericController instead of raw HidDevice

* build 0.28.0.1

* Reduce CPU usage (#470)

* Reduce cpu usage on DInputController

* Reduce CPU usage from HidLibrary

* Reduce CPU usage a pressure on ThreadPool with RaiseInputsUpdatedAsync

* Reduce CPU usage from RadioMonitor

* Update OverlayModel.xaml

* build 0.28.0.2

* Update Resources.fr-FR.resx

Traduction par: Moi952

* Improved: UI freeze workaround

* build 0.28.0.3

* Update libs

* Improve controller management

- Properly unhide (with power cycling) if HIDuncloakonclose is set
- Wait until any rumble is complete before power cycling

* ForceRecompose windows on system resume

* Add PawnIO support for LibreHardware 0.9.5

- Fixes CPU power/temperature reading

* build 0.28.0.4

* Fixed: Keyboard chord hotkey trigger on SDL-based controllers

* Improved: CPU usage on LibreHardwareLibrary

* Fixed: Setting a profile favorite subprofile

* Improved: ProfilesPage shows saved windows settings alongside live

* Revert "Fixed: Keyboard chord hotkey trigger on SDL-based controllers"

This reverts commit d0a9483.

* Improved: SDL controllers will use Tick() logic rather than inputs pumping

* Fixed: MainWindow visibility on Task View when minimized

* Updated: LibreHardwareMonitorLib

* build 0.28.0.5

* Misc

* Improved: Window State/Visibility logic

* Misc

* Improved: UIGamepad navigation with HyperlinkButton

* Implemented: New controller setting: HIDuncloakondisconnect

* Fixed: MSI Claw 10F BIOS support

* Resolve startup crash and refactor joystick input (#472)

* fix(app): Crash caused by Logger not being loaded in the App constructor.

* chore(i18n): Improve translate

* refactor(Input): Implement angle-based logic for joystick directions

* refactor(Input): Rename MotionDirection to DeflectionDirection

* Implement faster/better resume from sleep (#473)

* Tentative: speed up resume

* build 0.28.0.6

* Migrate settings to ProgramData

* Improve task manager to speed startup

* Revert "Improve task manager to speed startup"

This reverts commit c5b93cf5d36eea4ee243b729fe0a1385a0558a19.

* misc

* build 0.28.0.7

* Use LocalApplicationData

* improve resume

* Fix KeyboardChord.GetChord

* (tentative) force recompose on system resume

* misc

* wait for user to reply on settings before going further, also use Windows 11 theme

* Misc UI improvements

* misc

* misc

* More work on settings migration

* Update HotkeysManager.cs

* Update App.xaml.cs

* misc fix

* misc

* misc

* Fix AsusACPI on system resume

* Tentative: Fix stalled UI on system resume

* (tentative) fix UI not rendering on resume

* (tentative) fix UI not rendering on resume

* build 0.28.0.8

* Prevent bottom buttons from getting focus

* Implemented: New options for Layout Mapping : Trigger to Button

- Turbo, Interruptable, Toggle

* (tentative) figure detect S3/S4 sleep states resume

* restore arbitrary sleep/resume delay from long sleep

* Fix IActions variable naming and usage (HasXXX)

* Fixed: Device illustration on about page

* Fix

* Fixed: SDL trigger to L/RSoft L/RFull

* Misc fixes

* Device Support: Legion Go 2 (#459)

* WIP

* Misc

* More work

* Fixed: Controller picking logic on plug/unplug

* Fixed: Translation causing notify icon (task tray) buttons to fail when translated

* Improved: Legion Go (1, 2) performance mode TDP (25W)

* Fixed: Legion Go 2, internal gyro/accelero angles reading

* Fixed: Controller picker

* Fixed: Crash on ProcessRenderMode

* Update SDL3: 3.2.24

https://github.com/libsdl-org/SDL/releases/tag/release-3.2.24

* Fixed: AYANEO FLIP DS 1S CEcControl_SetSecDispBrightness()

* Misc

- Migrate dump crashes to {localappdata}\CrashDumps
- Create zip backup when migrating {mydocuments}\HandheldCompanion

* Prevent the application from starting while we wait for user input

* Fixed: Misc crash/exceptions

* Fixed: Support over legacy IActions

* Fixed: AYANEO Flip DS 2nd screen ON/OFF toggle

* Improved: MultimediaManager GetDisplayFriendlyName()

* build 0.28.1.0

* Device support: AYANEOFlip1SDS

* build 0.28.1.1

* Misc fixes

* Remove WinRing0 (#475)

* Remove WinRing0

* Fixed: Issue with IGDB background download

* Misc

* build 0.28.2.0

* Use LpcIO instead of LpcPort

* Update OpenLibSys.cs

* tentative

* tentative

* tentative

* tentative

Use LpcIO instead of LpcPort

Update OpenLibSys.cs

tentative

tentative

* Revert "tentative"

This reverts commit 3ce974aa7fb369b851cfbc3f9dfbdc98c226c635.

* tentative

* misc

* more work

* tentative

* more work

* Fixes

* oups

* oups

* Fix iss

* Update LibreHardwareMonitorLib.dll

* build 0.28.1.2 (#476)

- Restored WinRing0 for TDP manipulation (until we find an alternative based on PawnIO)

* Restore missing WinRing0 force unload

* Fixed: Toast hanging

* Fixed: UI hanging on startup (WHY !?)

* Fixed: Prevent GPUmanger from holding onto DeviceManager while waiting for MultimediaManager to be ready

* Improved: Offset non-UI tasks away from UI thread

* build 0.28.1.3

* Fixed: UIHelper default DispatcherPriority

* Fixed: Add missing WinRing0x64.dll

* Fixed: Prevent failed processor initialization from crippling HC startup sequence

* build 0.28.1.4

---------

Co-authored-by: Kvintilyanov Aleksandr <mops1k@users.noreply.github.com>
Co-authored-by: Sanheiii <35133371+Sanheiii@users.noreply.github.com>
Valkirie added a commit that referenced this pull request Dec 8, 2025
* code cleanup

* Fix UI navigation

* build 0.26.1.0

* Misc PR (#455)

New Features

Added support for Zotac Gaming Zone devices, including a new VRAM configuration option in device settings.
Introduced controller swap functionality for Lenovo Legion Go devices, with corresponding UI controls and localization.
Added a property to indicate manufacturer platform support in device settings.
Improvements

Refined device settings UI to display panels specific to MSI Claw, Lenovo Legion Go, and Zotac Gaming Zone.
Enhanced splash screen with an animated progress indicator.
Updated controller input handling for improved consistency and mapping support.
Localization

Added new resource strings and placeholders for controller swap and VRAM settings in multiple languages.
Bug Fixes

Improved handling of device-specific settings and toggles to ensure correct UI behavior and device interaction.

* Add missing setting: LegionControllerSwap

* build 0.26.2.0

* Fixed an issue with UIGamepad focus logic when HC is starting

* Improve LibraryPage tiles layout

* misc cleanup

* Improve executable startup

- Implemented DelegateCommand with parameter(s)
- Allow user to pick Run/RunAs to start executable from profile page

* Improve IManager AddStatus and RemoveStatus

* misc

* Don't create process if you can't listen for events

* Async inputs updated (#456)

* Improve ControllerManagement event logic

I was dumb and thought RaisingAnEvent?.Invoke() would simultaneously raise event across all listeners and have their tasks to run in parallel. I was wrong...

* better

* Improve LibraryManager (#457)

- Support both IGDB and SteamGrid researches in parallel.
- Todo: Add checkboxes

* Async layout updated (#458)

* Implement async LayoutUpdated event

* Implement EventHelper.RaiseAsync()

* misc improvement to controller management

* Implement GameLib (#460)

* Make PlatformManager async and start implementing GameLib

* prevent useless power profile updates

* misc

* misc

* implement more platforms

* more work

* Add LaunchString support over StartProcessCommand

* more work

* Add profile page field: LaunchString

* improve ProfileViewModel navigation

* misc

* filter a few executables

* Update SDL3 to 3.2.20

https://github.com/libsdl-org/SDL/releases/tag/release-3.2.20

* Update LibreHardwareMonitorLib

* Update gamecontrollerdb.txt

* Implement Quick Profiles button (Edit layout)

* Implement Quicktools position: BottomCenter

* UI work

* misc

* Improve Scan Library UI with DropDownButton

* Fix process detection on QuickApplicationPage

* Improve overall QuickProfiles UI experience

Add two new buttons: Button_OpenProfilePage, Button_OpenProfileLayout

* Misc UI improvements

* Fix QT Margins

* Improve FanProfile logic

* More work on fan (both UI and backoffice)

* Improve page loading logic

* Improve Quicktools Width under several scenarios

* Misc

* Add QT animation logic

* Fix Icons

* Add FanTable restore logic to LegionGo

* Restore PL1/PL2 logic and fix values for Lunar-Lake based devices

* Update PowerProfileManager.cs

* Proper Intel MicroArchitecture detection

* hacky fix for MSI Claw gamepad

* build 0.27.0.0

* Fix: Default Power profile reset when device restart

* Fix PL1/PL2 errors

- PL2 shouldn't be inferior to PL1
- PL2 should be equal or PL1+1 (Lunar Lake)

* Fix: Open layout page in Quicktool not going to the game page (go to default profile page)

* Fix: Blank spaces on QuickHome hotkeys

* more work

* Fix: QuickToolsSlideAnimation

* more work

* prevent critical processes from being listed on Quick applications

* Filter games related executables with error in filename

* Improve MSI Claw Fan Mapping

* build 0.27.0.1

* Update README.md

* Misc UI Fix

* Fix Claw A2VM Performance PL2

* Improve profile management (#461)

* Improve profile management

* Fix: Crash on corrupted user.config

* Improve MSI Claw controller robustness

* Cleanup

* delete previous profile file on profile name changes

* build 0.27.0.2

* You can now pass initial directory to CommonFileDialog()

* Fix race condition

* Filter library apps on: uninst

* improve profile management (store path)

* Fix Quicktools style

* Add new QT settings: Apply noise to window's background

* build 0.27.0.3

* Refactor Overlay rendering logic to strategy design pattern (#1281)

* Refactor Overlay rendering logic to strategy design pattern

* Fix ai comments

* Add widget system with factory

* Fix some AI comments

* Add level selection for overlay widgets.
Refactor strategies (use widgets.

* Fix level for cpu widget in full overlay strategy

* cleanup

* Fixed: crash when managing corrupted profiles

* Improve profile sanitizer

* Fix RTSS status check

* Fixed: Incorrect IsMapped boolean check on ControllerManager Tick()

* build 0.27.0.4

* Improve process detection within StartProcessCommand

* Dramatically cuts GC pressure and CPU (#462)

* Dramatically cuts GC pressure and CPU

* Fix TriggerActions shiftSlot logic

* build 0.27.0.5

* Misc fix

* Add missing dynamic lighting capacities to MSI Claw

* build 0.27.0.6

* Implement EADesktop support through GameLib (#463)

* Implement EADesktop support through GameLib

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

* Fix EADesktop logo missing from LibraryPage

* Ambilight: Reduce CPU consumption (#464)

* Reduce CPU usage, phase 1

* misc tweaks

* build 0.27.0.7

* Extended expected delay before profile related executable is ready

* Improve library manager SteamGrid lookup with cleaned string

* Optimizing IActions related functions (#465)

* 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

* Improved: Set device OEM buttons as Inherit on new profiles

* Improved: UI Navigation

- 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

* Implement controller page related support section

* Fixed: version checking from profiles manager on older profile

* Fixed: GameBarCommands and DesktopCommands

* Improved: ROG Ally PerformanceMode and AsusFan.Mid

* Hacky: Fixed: Phantom controller filtering

* build 0.27.0.9

* Add Inherits for AllButtons and AllAxisLayoutFlags

* Update Quicktools Home and Applications UI

* Force (re)apply Quicktools transparency when changing postion

* Update libs

* oups

* Fixed: Issue when discovering non-Steam games with multiple executables

* Fixed: SDL XInput controller ignored

* Fixed: Issues when trying to trigger hotkeys

* Fixed: UI Issue when navigating into a page without IsEnabled controls

* Improved: QuickHome, QuickApplications UI

* build 0.27.0.10

* States fixes

* Improved: Removed hacky controller manager await in benefits of more robust device manager arrival logic

* Improved: Device management has new queuing logic

* Improved: Quicktools L1/R1 will now circle within menu items

* Filter SDL Events

* Fixed: Restore default fan profile when fan mode is set to Hardware

* Migrate some platform logic to PlatformManager

We should move the PlatformToProfile logic to LibraryManager or PlatformManager

* Fix Claw FanSpeed array

* Implemented: new commands ButtonCommands replacing GuideCommands

* Improve Action Type UI experience

* Fixed: Button to TriggerActions

* Improved: ButtonMapping and AxisMapping migrated to SettingsExpander and SettingsCard

* Improved: GyroMapping and TriggerMapping migrated to SettingsExpander and SettingsCard

* Improved: MouseAction Acceleration is now relying on action delta (ms) to compute velocity memory

* Misc UI tweaks

* build 0.27.0.11

* Misc UI improvements

* Fixed: OEM buttons will now properly inherit default behavior

* misc

* misc

* Fixed: Input/Hotkey injection on dummy controllers

* Revert: Improved: Device management has new queuing logic

* Fixed: Rog Ally Xbox Adaptive Controller support

* Improved: Allow users to edit default power profiles

* Edit a few default settings

* build 0.27.0.12

* Improve overall fan management and ROG Ally TDP (#466)

* (Tentative) Fix TDP/Fan issues

* Misc: migrate powerProfile management to IDevice

* update lib

* Improved: Controller management

* Implemented: Per-device hotkeys (#467)

* Improved: Controller management

* Improved: Per-device hotkeys

* build 0.27.0.13

* Fixed: Profile update when resolution or refresh rate is changed

* Misc (#468)

* Tentative fix buttons RGB control

* Fixed: Hotkey deserialization with old ButtonFlags

* code cleanup

* Fixed: missing library: YamlDotNet

* Fixed: hotkey duplication

* Updated LibreHardwareMonitorLib

* Fixed: Zotac Gaming Zone VRAM control

* Fixed: LegionR/LegionL inverted buttons on Legion Go S

* build 0.27.0.14

* Improve session and device management (#469)

* Improved: HC won't wait until session is ready anymore, except for keyboard input management

* Fixed: Device management asynchronous refresh

* Fixed: Device management asynchronous refresh

* oups

* Revert "Fixed: Profile update when resolution or refresh rate is changed"

This reverts commit 0fa4512.

* only update if necessary

* Update SDL3.dll

* Device support: Add ONEXPLAYER X1 AMD (weird ProductName: ONEXPLAYER X1z)

* Improved: Installation script to add WinRing0x64.sys and HandheldCompanion.sys to defender exclusion list

* build 0.28.0.0

* Update libraries

* Force refresh platform catalog when scanning

* Update LibreHardwareMonitorLib

* RyzenAdj 0.18.0

- Update for ryzen_smu 0.1.7
- Support: Strix Point
- Support: Dragon Range
- Support: Fire Range
- Support: HX370 (Pro)
- Support: Krackan Point

* Fixed: UI not rendering after GPU acceleration is toggled on/off

not perfect..

* DClawController to use GenericController instead of raw HidDevice

* build 0.28.0.1

* Reduce CPU usage (#470)

* Reduce cpu usage on DInputController

* Reduce CPU usage from HidLibrary

* Reduce CPU usage a pressure on ThreadPool with RaiseInputsUpdatedAsync

* Reduce CPU usage from RadioMonitor

* Update OverlayModel.xaml

* build 0.28.0.2

* Update Resources.fr-FR.resx

Traduction par: Moi952

* Improved: UI freeze workaround

* build 0.28.0.3

* Update libs

* Improve controller management

- Properly unhide (with power cycling) if HIDuncloakonclose is set
- Wait until any rumble is complete before power cycling

* ForceRecompose windows on system resume

* Add PawnIO support for LibreHardware 0.9.5

- Fixes CPU power/temperature reading

* build 0.28.0.4

* Fixed: Keyboard chord hotkey trigger on SDL-based controllers

* Improved: CPU usage on LibreHardwareLibrary

* Fixed: Setting a profile favorite subprofile

* Improved: ProfilesPage shows saved windows settings alongside live

* Revert "Fixed: Keyboard chord hotkey trigger on SDL-based controllers"

This reverts commit d0a9483.

* Improved: SDL controllers will use Tick() logic rather than inputs pumping

* Fixed: MainWindow visibility on Task View when minimized

* Updated: LibreHardwareMonitorLib

* build 0.28.0.5

* Misc

* Improved: Window State/Visibility logic

* Misc

* Improved: UIGamepad navigation with HyperlinkButton

* Implemented: New controller setting: HIDuncloakondisconnect

* Fixed: MSI Claw 10F BIOS support

* Resolve startup crash and refactor joystick input (#472)

* fix(app): Crash caused by Logger not being loaded in the App constructor.

* chore(i18n): Improve translate

* refactor(Input): Implement angle-based logic for joystick directions

* refactor(Input): Rename MotionDirection to DeflectionDirection

* Implement faster/better resume from sleep (#473)

* Tentative: speed up resume

* build 0.28.0.6

* Migrate settings to ProgramData

* Improve task manager to speed startup

* Revert "Improve task manager to speed startup"

This reverts commit c5b93cf5d36eea4ee243b729fe0a1385a0558a19.

* misc

* build 0.28.0.7

* Use LocalApplicationData

* improve resume

* Fix KeyboardChord.GetChord

* (tentative) force recompose on system resume

* misc

* wait for user to reply on settings before going further, also use Windows 11 theme

* Misc UI improvements

* misc

* misc

* More work on settings migration

* Update HotkeysManager.cs

* Update App.xaml.cs

* misc fix

* misc

* misc

* Fix AsusACPI on system resume

* Tentative: Fix stalled UI on system resume

* (tentative) fix UI not rendering on resume

* (tentative) fix UI not rendering on resume

* build 0.28.0.8

* Prevent bottom buttons from getting focus

* Implemented: New options for Layout Mapping : Trigger to Button

- Turbo, Interruptable, Toggle

* (tentative) figure detect S3/S4 sleep states resume

* restore arbitrary sleep/resume delay from long sleep

* Fix IActions variable naming and usage (HasXXX)

* Fixed: Device illustration on about page

* Fix

* Fixed: SDL trigger to L/RSoft L/RFull

* Misc fixes

* Device Support: Legion Go 2 (#459)

* WIP

* Misc

* More work

* Fixed: Controller picking logic on plug/unplug

* Fixed: Translation causing notify icon (task tray) buttons to fail when translated

* Improved: Legion Go (1, 2) performance mode TDP (25W)

* Fixed: Legion Go 2, internal gyro/accelero angles reading

* Fixed: Controller picker

* Fixed: Crash on ProcessRenderMode

* Update SDL3: 3.2.24

https://github.com/libsdl-org/SDL/releases/tag/release-3.2.24

* Fixed: AYANEO FLIP DS 1S CEcControl_SetSecDispBrightness()

* Misc

- Migrate dump crashes to {localappdata}\CrashDumps
- Create zip backup when migrating {mydocuments}\HandheldCompanion

* Prevent the application from starting while we wait for user input

* Fixed: Misc crash/exceptions

* Fixed: Support over legacy IActions

* Fixed: AYANEO Flip DS 2nd screen ON/OFF toggle

* Improved: MultimediaManager GetDisplayFriendlyName()

* build 0.28.1.0

* Device support: AYANEOFlip1SDS

* build 0.28.1.1

* Misc fixes

* Remove WinRing0 (#475)

* Remove WinRing0

* Fixed: Issue with IGDB background download

* Misc

* build 0.28.2.0

* Use LpcIO instead of LpcPort

* Update OpenLibSys.cs

* tentative

* tentative

* tentative

* tentative

Use LpcIO instead of LpcPort

Update OpenLibSys.cs

tentative

tentative

* Revert "tentative"

This reverts commit 3ce974aa7fb369b851cfbc3f9dfbdc98c226c635.

* tentative

* misc

* more work

* tentative

* more work

* Fixes

* oups

* oups

* Fix iss

* Update LibreHardwareMonitorLib.dll

* build 0.28.1.2 (#476)

- Restored WinRing0 for TDP manipulation (until we find an alternative based on PawnIO)

* Restore missing WinRing0 force unload

* Fixed: Toast hanging

* Fixed: UI hanging on startup (WHY !?)

* Fixed: Prevent GPUmanger from holding onto DeviceManager while waiting for MultimediaManager to be ready

* Improved: Offset non-UI tasks away from UI thread

* build 0.28.1.3

* Fixed: UIHelper default DispatcherPriority

* Fixed: Add missing WinRing0x64.dll

* Fixed: Prevent failed processor initialization from crippling HC startup sequence

* build 0.28.1.4

* Improved: Library UI with with Favorites profiles

* Fixed: Wrong profile name on overwrite warning (profiles page)

* Implement Msiapcfg (#477)

* Tentatively add msiapcfg support

* Misc fixes

* build 0.28.1.5

* Improved UI: SteamGrid Logo parsing and LibraryFamily checkboxes

* Update libraries (build 0.28.1.6)

* Implemented: Support over Xbox Rog Ally (X/NonX) (#478)

* Implemented: Xbox Rog Ally support (WIP)

* Fixed: Deploy default power profiles with default profile

Should have been done LONG AGO !!

* Fixed: MSI Claw (all models) max fan speed (150%)

* Update XboxROGAlly.cs

* Implemented: Add support over Xbox ROG Ally X/NonX

* Change battery overlay widget to better logic and display (#1306)

* Refactor Overlay rendering logic to strategy design pattern

* Fix ai comments

* Add widget system with factory

* Fix some AI comments

* Add level selection for overlay widgets.
Refactor strategies (use widgets.

* Fix level for cpu widget in full overlay strategy

* - change battery left to hours and minutes format

* - add format for hours

* - fix after merge from `main`

* - little refactoring

* - add hours format

* - add return if null time left

* good to go

---------

Co-authored-by: Lesueur Benjamin <benjamin.lesueur@live.com>
(cherry picked from commit 283187b)

* Fixed: Battery reading without LibreHardwareMonitor (while we wait for a fix)

* build 0.28.1.7

* Fixed: Add missing UseOpenLib declarations

* Implemented: Task view function

* Improved: Task manager commands

* build 0.28.1.8

* Fixed: AYANEO Flip 1S DS/KB compatibility

* Move to Windows 11 SDK

Windows 10 is EOL as of October 14 2025

* Add default AYANEO power profiles (Extreme, Balanced, Saving power)

* Updated: Several libraries

* Fixed: Error on null processEx

* oups

* Fixed: Incorrect overwrite message displayed when creating a new profile

* Fixed: A crash occuring on OneXPlayerMini and OneXPlayerOneXFly devices

* Fixed: A rare crash happening on InputsManager

* Update LibreHardwareMonitorLib.dll

* UI: Improve LibraryPage image sizes

* Fixed: CPU usage from LibreHardware ADLX implementation (rely on ours instead)

* Library: Update SDL to 3.3.2

* build 0.28.1.9

* Revert "Library: Update SDL to 3.3.2"

This reverts commit 6353143.

* UI: Misc improvements

* Library: Updated SDL to 3.3.2

* UI: Added Power dropdown button to Quicktools (Lock, Sleep, Shutdown, Restart)

* Compatibility: Add Moonlight virtual controller detection and support

* Misc

* build 0.28.1.10

* Fixed: Prevent empty executable paths from being added to profile

* UI: SplashScreen no longer is AlwaysOnTop

* Library: Update HidHide, Sentry and LibreHardwareMonitor

* Fixed: Touchpad support on Legion Go (1/2)

* Fixed: OneX/AOKZOE OEM button support

* Implemented: New commands Copilot Voice

* Fixed: Joystick to button/keyboard/mouse click (axis threshold range)

* Library: Updated WindowsAPICodePack

* build 0.28.1.11

* Fixed: Crash caused by a race condition from VirtualManager when waking-up system

* UI: Improve toast manager (now has ability to generate clickable toasts)

* Improvements: CopilotVoiceCommands now also resize the Copilot window

* Fixed: CPU leak when HidDevice is torn off

* Fixed: Rare crash on null Controller

* Misc

* build 0.28.1.12

* Fixed: AYANEO Flip DS missing Close() override

* Misc

* Controller: Fixed Neptune Controller IsReady, IsConnected checks

* Implement .NET10 (#479)

* (WIP) implement NET10 support

* Update install script

* Implement RyzenAdj set_coall()

* Fixed: Steam Deck GPU reading

* Update libraries to NET10: LibreHardware, ViGEm.Client

* Update Nefarius.ViGEm.Client.dll

* Device support: GPD Win 5 (WIP)

* Improved: Process manager will now ignore Taskbar and Shellhost

* Updated: Libraries

* build 0.28.2.1

* Improved: Process manager

ForegroundStaging and XamlExplorerHostIslandWindow are now Restricted

* Improved: Process manager

ApplicationManager_DesktopShellWindow is now Restricted

* build 0.28.2.2

* Library: Update iNKORE.UI.WPF.Modern

* Device support: Improve overall AOKZOE and ONEX compatibility (fixes OEM button usage and improve FAN/LED management) (#480)

* Tentative: Fix OneX button lock

* Fixed: Several issues with OneX devices and IsOpen, IsReady checks as well ad HidDevice pickup on OneXFly

* Device support: OneXPlayer G1

* Improved overall ONEX/AOKZOE device support

backported some logic from HHD

---------

Co-authored-by: Kvintilyanov Aleksandr <mops1k@users.noreply.github.com>
Co-authored-by: Sanheiii <35133371+Sanheiii@users.noreply.github.com>
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.

3 participants