Fixes
- macOS sensors completely empty (#109):
read_all()bootstrap, computed I/O rates,mem_availablemapping, CPU percent cold start - macOS Apple Silicon GPU metrics: GPU active residency, clock, power from powermetrics. Multi-fan support. Per-core CPU freq.
- Idle sensors hidden in CLI/preview: Display filter now uses
_populatedset instead of!= 0.0— idle 0% CPU/GPU shows correctly - Metric values not matching C# app: Int-truncated at read boundary (temps, percentages, RPM, MHz, watts)
Refactors
- SensorEnumeratorBase: Shared sensor logic extracted — 656 lines eliminated across 4 platform enumerators
- Sensor test DI refactor: Tests through public API with
MockIOfixtures — 827 lines cut, resilient to internal renames