v3.31.0 - Native NSMenu + Kext Cleanup + Zen Family Profiles
v3.31.0
Fix: Context Menu Flickering (Size submenu)
Replaced SwiftUI's .contextMenu() with native AppKit NSMenu via NSViewRepresentable. The Size submenu no longer flickers or closes when the chart re-renders on telemetry ticks.
Fix: Size changes not applying
UserDefaults key in setHeight() was mismatched with ResizableChart.init() read key for memory and cores charts -- fixed by using "chart_h_" + chartId directly.
Core Grid: Size disabled
Core Grid chart has a fixed layout -- Size submenu is now disabled (grayed out).
Kext Cleanup -- What We Removed and Why
Every cleanup has the same punchline: Intel code living in an AMD driver.
| Removed | Why |
|---|---|
| MWAIT idle strategy | AMD CPUs don't use MWAIT for C-states -- it is a no-op. Only sti;hlt works on Zen. Like a cupholder on a motorcycle. |
IO_CSTATE (pmRyzen_exit_idle()) |
Dead code since Zen 2. Compiled but did nothing -- like a meeting that should have been an email. |
cppcReadAllowed / cppcWriteAllowed |
Every CPU profile set both to false. Vestigial since Vermeer. Like a spare key for a car sold years ago. |
telemetryAllowed renamed to cppcReadInInit |
Controlled CPPC register reads, not telemetry. Old name was like calling your refrigerator "the warm closet." |
Redundant cpuArchName block |
Set cpuArchName twice in start() -- profile always overwrote it. First vote counted, then thrown out. |
| CPUID MWait leaf log | We removed MWAIT. Logging its CPUID leaf after that is like checking the temperature of an unplugged stove. |
CPU Family Profiles
- Explicit profiles for all 8 Zen generations (Zen 1 through Zen 5)
- New
CPUProfileselector (26) exposed to userspace via IOKit - Dashboard badge showing active profile (Telemetry-only / Full PM Dispatch)
- Profile-aware IOLog on boot and NSLog on app launch
Documentation
- Added "What We Removed and Why (v3.31.0)" section to README -- technical rationale with humor
- Updated supported processors table with all 8 profiles and feature flags
- Updated user manual (EN + ES) with v3.31.0 features
- Removed stale PDF versions of manuals (markdown is authoritative)
Other
- Version bumped to 3.31.0