Commit Graph
36 Commits
Author SHA1 Message Date
JMR-dev f9edc1dc64 Fixes applied (14 of 15 findings — see note on R5)
Concurrency crashes
  - H1 HardwareMonitorService.RebuildTree now builds the tree under _updateLock, so it can't enumerate a hardware's _active HashSet while the update loop mutates it.
  - A1 AppSettings now guards every dictionary read/write (and snapshots in Save) with a lock — safe under concurrent access from the parallel discovery threads.
  - R2 Plumbed that same lock (HardwareMonitorService.SensorReadLock) into RemoteWebServer and wrapped the Prometheus sensor.Values enumeration with it.
  - L1 Computer — refactored Add into AddCore, which performs the cancellation/enabled re-check and the _groups insertion atomically under _lock. A deferred task can
  no longer add (and leak) a group after Close() drained the list; if it loses the race it closes the group instead.
  - M1 UpdateTimer_Tick now bails before/after the await when _isShuttingDown is set in MainWindow_Closed, so an in-flight tick won't touch the disposed
  view-model/Computer.

  Broken behavior
  - T1 Tray callback now decodes NOTIFYICON_VERSION_4 correctly (message = LOWORD(lParam), icon id = HIWORD(lParam)) — right-click menu and double-click work again.
  - M2 A transient update exception no longer calls _timer.Stop(); the loop keeps running.
  - H2 Newly discovered (deferred) storage devices get the current ForceDriveWakeup setting applied in HardwareChanged.
  - V2 Sensor items carry a parent reference; toggling IsVisible recomputes the parent group's visibility, so no empty group headers. (Strengthened the existing test
  that had skipped this assertion.)
  - H3 Tree-rebuild coalescing now uses a dirty flag with a re-check, so a change arriving during a rebuild isn't lost.
  - R4 Web routing matches endpoints exactly on the query-stripped path (Url.AbsolutePath), so static assets like metrics.html aren't hijacked.
  - L8 IntelCpu.Update skips the bus/core-clock math while TimeStampCounterFrequency is still 0 (deferred-TSC window), so clocks keep their prior value instead of
  reporting 0 MHz.
  - V1 Existing plot series keep their assigned color; only an explicit user pen color updates them (no per-tick color shifting).
  - M3 Runtime errors write to a dedicated runtime.log (once), instead of overwriting the shared startup.log.
  - T2 CreateSensorIcon returns IntPtr.Zero on DIB failure instead of the shared main-icon handle (which callers DestroyIcon).

  I also set _isOpen = false in HardwareMonitorService.Dispose so the rebuild guard actually holds during shutdown (the latent after-close-rebuild issue adjacent to
  H3
2026-05-30 22:56:25 -05:00
JMR-dev 5f88f71e61 added unit tests 2026-05-30 22:07:19 -05:00
JMR-dev a1cffce9fd MVP port complete 2026-05-30 19:47:04 -05:00
JMR-dev c50757868f WIP - optimizing start times 2026-05-30 18:37:39 -05:00
JMR-dev 2c176e5dd7 WIP - optimizing start times 2026-05-30 17:45:37 -05:00
JMR-dev b744f70b0b WIP - optimizing start times 2026-05-30 15:11:32 -05:00
Blacktempel 273b47b462 Fix build for Linux (#2257)
* Fix build for Linux.

* Fix Linux runtime issues.

* PR review + fix for Windows.
2026-03-05 14:09:21 +01:00
Blacktempel e2e0d1c9ad Updates for TG WVP2 (#2215)
* Implement Fan control for TG WVP2.
Calculate approximate fan speed.

Catch two exceptions.
Remove leftover close in ReadConfig.

* Support for multi device detection

* Add more data to report

* Add group for power monitors and remove from GenericGpu.

* Move files.
Add option for Power Monitor in Computer + UI.
2026-02-13 18:15:24 +01:00
Blacktempel 9af84004a5 Add MSI controller for AIOs. (#2207)
* Add MSI controller for AIOs.
Fan RPM read, thermal sensor & fan control.

* PR comments & rename controller.

* PR review

* PR review

* PR review
2026-02-11 12:39:29 +01:00
Rémi Mercierandaureopvh ab9551ca2d Feature/arctic fan controller (#2152)
* Port Artic Fan Controller code

* Fixed misspelling and added improvements
- Fixed thread not starting (added _thread.Start())
- Added control sensor activation
- Added PWM initialization from device
- Improved PWM value reading for fast updates

* Slight refactor

Extract message response

* Create README.MD

* Code review

* Add license header
* Make readonly fields
* Remove redundant const
* format
* Remove redundant index check in Update()
* add missing control lock in close()
* add missing hid lock in update loop for array access
* join thread (wait for exit) on cose()

* Proper Hardware type

* File scoped namespaces

* Update ArcticFanController.cs

---------

Co-authored-by: aureopvh <aureoserrano@hotmail.com>
2026-01-13 19:04:55 +01:00
PhyxionNL eef7cceee5 Fixes #1956 2025-10-14 18:33:44 +02:00
demorfi bcc197f265 Added base support Asus ROG Crosshair X670E Hero and PSU MSI MEG Ai1300P (#1575)
* Added base support matherboard Asus ROG Crosshair X670E Hero

* Added base support PSU MSI MEG Ai1300P

* Refactoring MSI PSU lib
2025-09-30 19:03:13 +02:00
namazsoandPhyxionNL eb5e1a20be Swap WinRing0 to PawnIO (#1857)
* Replace WinRing0 with PawnIO

* Update RAMSPDToolkit

* Add install check + cleanup

* Move folder + formatting

* Add back missing TryLoadDll

* Update PawnIo.cs

* Add third party notices file

* Remove the how to apply section

* Drop silent

* Don't crash if PawnIO isn't installed

* Formatting

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2025-09-16 11:58:31 +02:00
coldaysandPhyxionNL e94018d7d5 Add option to disable Ring0 driver installation (#1777)
* Add option to disable Ring0 driver installation

* Update Computer.cs

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2025-07-09 23:24:57 +02:00
wlkmanist fe36178f6f Add support for Razer PWM PC Fan Controller (#1090) 2023-06-15 17:26:09 +02:00
PhyxionNL c0f2740ed3 Move mutexes out of Ring0 2023-06-14 11:58:26 +02:00
PhyxionNL cd77cec0b5 Unify CPU namespace with folder (#1023) 2023-03-21 18:11:40 +01:00
PhyxionNL 58cef111a1 Use file-scoped namespaces (#842) 2022-10-09 13:22:57 +02:00
PhyxionNL 3ac329f247 Fix some code analysis issues (#841) 2022-10-09 13:16:31 +02:00
PhyxionNL 38b97e10d0 Update editorconfig + changes (#771) 2022-06-29 19:38:57 +02:00
Bjarni Ivarsson 627f0a56ce Add Intel integrated GPU (#671)
Thanks to @bjarniivarsson.
2022-02-26 10:14:09 +01:00
EMN-CSharp 5152b435fc Add support for battery monitoring (#612)
Thanks to @EMN-CSharp.
2022-02-07 17:05:36 +01:00
Pomian 3cf5fe92fd [Feature] Update library documentation (#580)
* Minor IHardware doc fixes

* Add XML with documentation to NuGet and output

* Update Software namespace docs

* Update some internal classes

* Update main Computer class docs

* Update interfaces docs

* Update Computer class documentation

* Update motherboard docs

* Update hardware docs

* Fix code formatting

* Update SensorVisitor handler doc
2021-10-18 13:23:43 +02:00
PomianandPhyxionNL 2d12fc2ece [Bugfix] Allow GET access to Computer SMBios table (#579)
* Allow GET access to Computer SMBios table

* Update Computer.cs

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
2021-10-17 11:14:07 +02:00
Eugene Shalygin e5a852457f Add support for Corsair PSUs (#458)
Thanks to @zeule
2021-06-22 10:13:54 +02:00
PhyxionNL a10c33ec0a WinRing0 revert (#478) 2021-06-21 18:30:21 +02:00
Pomian 694b5db58c Initial internal documentation (#391)
Thanks to @Pomianowski
2021-06-01 13:31:55 +02:00
sebastian-dev a4b931f984 Hardware Changed Notification (#379)
Thanks to @sebastian-dev
2021-02-08 15:04:35 +01:00
Phyxion 9454fab553 Fixes #266 2020-07-21 16:10:44 +02:00
Phyxion 5d7f476711 Fixes #266
Groups must be locked during reset, otherwise the collection can be modified while enumerating.
2020-07-17 09:48:35 +02:00
NeoAcheron 1ebc639e74 Added support for NZXT Kraken X3 devices. (#248)
Thanks to @NeoAcheron
2020-06-02 13:14:55 +02:00
Phyxion 738752b899 Add PowerModeChanged event handler to reset the hardware tree when resuming from sleep
Based on the work of @moellerm
2020-05-25 12:09:05 +02:00
anmo 157e75bf93 Aero cool p7 h1 (#227)
Thanks to @hunbernd
2020-04-23 22:56:02 +02:00
Phyxion 5bd108167d Restore OHM in copyright statement 2020-02-28 11:39:25 +01:00
Phyxion 6309cbe5a5 Apply code style 2020-02-17 13:12:24 +01:00
Phyxion 73378f7c7b Code style #130 (#132)
This closes #99.
2019-09-23 19:29:10 +02:00