Repository navigation
v0.1.15
Universal CPU temperature mapping
Per-core CPU temperatures now work on all Apple Silicon chips β M1 through M5, including Pro, Max, and Ultra variants. The previous hardcoded key matching (Tex*/Tp1*/Tp2*) is replaced with a universal bank-based algorithm that automatically detects die layout and sensor grouping.
What's new:
- docs: Mention installation with pixi by @pavelzw in #7
- Universal sensor mapping β SMC temperature keys are parsed using the
T{type}{bank}{suffix}encoding rule with base-62 suffix alphabet. Bank character encodesdie * 5 + cluster_offset, supporting single-die chips (M1βM5 Pro/Max) and dual-die Ultra chips automatically. - M3 Ultra dual-die support β E-core temps from
Te0/Te5banks, P-core temps fromTp1+Tp2/Tp6+Tp7banks. Direct bank selection instead of fragile exact-count matching. - M5 Max primary bank support β chips with no
Te*keys (all temps inTp0) are handled via primary bank fallback with automatic E/P split. - Stale value caching β when an SMC sensor temporarily reads 0 or fails, the last known good value is shown with a
~prefix (e.g.~37Β°C). Eliminates temperature flickering on M3 Ultra and similar chips where sensors intermittently return invalid readings. - Partial results β if some sensors are unavailable, remaining cores still show temperatures instead of the entire die going blank.
Other changes
- README legend β all UI symbols explained (
β,β€,~,βΈ, power colors,pendingβ¦,[dead]) - Contributing section β pre-commit checklist and diagnostic collection instructions
- pixi installation β documented as an alternative package manager (#7, thanks @pavelzw)
Test coverage
11 unit tests for temperature mapping: single-die, dual-die Ultra, M5 Max primary bank, partial sensor loss, stale flag propagation, legacy fallback, placeholder detection, base-62 continuity.
New Contributors
Full Changelog: v0.1.14...v0.1.15