Releases: TechPvnk/OverseerHardwareMonitor
Release list
OverseerHMPortable V0.2
Summary of work completed in this session 8/4/2026:
###(features + behavior)
CPU
• Added physical core / logical thread reporting.
• Added cache reporting (L1/L2/L3) from WMI where available.
• Added TDP field: attempts WMI ThermalDesignPower; if missing shows runtime CPU package power (LibreHardwareMonitor) as “TDP (current)”.
###GPU**
• Added GPU RAM detection using native DXGI COM interop (DxgiNative) with WMI fallback.
• Added GPU clock read from LibreHardwareMonitor sensors (best-effort).
• Added GPU bus detection:
• Best-effort via Win32_PnPEntity (PNPDeviceID / Name), robust fallbacks and managed matching to avoid WQL escaping issues.
• If only PNPDeviceID suggests PCI, shows “PCIe”.
• Added separate GPU memory fields: total, used, free (sourced from LibreHardwareMonitor SmallData / D3D sensors when available).
• Included runtime VRAM QueryVideoMemoryInfo support in the DXGI helper.
###RAM**
• Show total RAM and memory clock.
• Read per-DIMM details and display module list (manufacturer/part, capacity, clock) using WMI + LibreHardwareMonitor.
• Implemented robust deduplication and multiplicity-preserving logic so identical modules are shown correctly and duplicates removed or indexed.
• Removed redundant UI lines and cleaned formatting.
###Motherboard**
• Show motherboard name and added SubHardware list (from LibreHardwareMonitor). Added WMI / PnP fallbacks when LHM doesn’t report subhardware.
###Battery**
• Added battery section with robust detection:
• Primary: GetSystemPowerStatus (P/Invoke) for AC/charge presence.
• Fallback: Win32_Battery WMI (formatted) if needed.
• Attempted WinRT path earlier but used P/Invoke/WMI fallback to avoid dependency issues.
• Display charge %, AC status, and best-effort life/full life values (unknown when not available).
• Diagnostics & robustness
• Added DxgiNative.cs — native DXGI COM interop (P/Invoke) to enumerate adapters and QueryVideoMemoryInfo.
• Added WriteDebugSensorSnapshot enhancements:
• Dumps LibreHardwareMonitor nodes and DXGI adapter details to Debug output for QA.
• Implemented WMI escaping fix (double backslashes and single quote handling) and improved Query(...) to:
• Cache failing non-core WMI scopes to avoid repeated noisy exceptions.
• Skip caching for core scopes (root\CIMV2, root\WMI) to avoid hiding data.
• Emit detailed debug when WMI queries fail.
• Added an in-app View->Debug->“Log WMI queries” toggle bound to the ViewModel to emit exact WMI queries to Debug output.
• Added many defensive fallbacks (DXGI / WMI / LHM sensor order) to make data best-effort and avoid crashes.
###Files added / changed (high level)
• Added: WpfApp1/Models/DxgiNative.cs (DXGI native helper)
• Modified (major):
• WpfApp1/Models/WindowsSystemInfo.cs (many WMI reads, GPU/RAM/battery helpers, escaping, logging)
• WpfApp1/Models/HardwareMonitorEngine.cs (snapshot fields, sensor parsing, DXGI integration, debug dump, RAM/GPU fields)
• WpfApp1/ViewModels/MainViewModel.cs (new properties, collections, binding updates)
• WpfApp1/Views/MainWindow.xaml (UI: System Info additions, debug menu toggle)
• WpfApp1/Overseer.csproj (earlier trial edits; final state removed Vortice dependency)
• Multiple other small edits to support new fields and fix build issues.
###Build / test status
• Project built successfully after fixes. I ran iterative builds while addressing compile errors (missing usings, signature mismatches).
• I added runtime fallbacks so the app runs on both desktop and laptop scenarios; some values remain “Unknown” when hardware/driver does not expose them.
###Known limitations & notes
• TDP: WMI rarely exposes spec TDP reliably; showing runtime package power is a practical approximation but not the CPU TDP spec.
• L1 cache: often not exposed via WMI on many systems — “Unknown” is expected on some machines.
• Battery life/time: GetSystemPowerStatus returns BatteryLifeTime = unknown on many machines; WinRT BatteryReport is more detailed but requires WinRT availability and may need small SDK handling. I used safe fallbacks to avoid compile issues.
• GPU bus detection: relying on PNPDeviceID/Name works in most cases; a fully robust solution would use SetupAPI / DEVPROP (native) — I can add that later.
• Some WMI queries/providers differ between OEM laptops and desktops; the code now contains multiple fallbacks and a debug toggle to diagnose remaining edge cases.
OverseerHMPortable V0.1
First release.
Please remember you have to run as admin and install PawnIO to get readings.