Releases: DrogaBox/SMCAMDProcessor-personal
Releases · DrogaBox/SMCAMDProcessor-personal
Release list
v3.34.0
v3.32.0
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
v3.30.0
v3.30.0 Kext Idle Strategy, KASLR Anchor, SMU Barrier & Weak Self Fix
Kext (AMDRyzenCPUPowerManagement)
- Runtime Idle Strategy: Replaced compile-time
#ifdefidle strategy (PMRYZEN_IDLE_SIMPLE/MWAIT) with runtime selection viapmRyzen_idle_strategyglobal +switch. Zen 4/5 (Family 19h ≥60h, Family 1Ah) automatically useMONITOR/MWAITfor lower idle power draw; Zen 3- continue with safesti;hlt. No more#errorguards or rebuilds needed when CPU family changes. - KASLR Slide Dual-Anchor: Added
_mh_execute_headeras the primary KASLR slide anchor (stable Mach-O header symbol), with&versionas fallback. Both validated against canonical kernel range>= 0xFFFFFF8000000000. The old single-anchor approach relied only on&versionwhich could be removed from the kernel export set. - SMU Mailbox Memory Barrier: Inserted
__asm__ volatile("mfence" ::: "memory")betweensmnWrite32(msgReg, cmd)and the response poll loop insmuSendCmd. Prevents write-combining buffers on the SMN bus from delaying command delivery, which could cause spurious timeouts in the poll path.
App (AMD Power Gadget)
- Weak Self in Task Closures: Added
[weak self]+guard let selfto all 3 remainingTask { @MainActor }closures inTelemetryModel.swift(init(),sample(),commitPendingChanges()). Prevents the tasks from prolonging the TelemetryModel singleton lifetime when they outlive the object.
Chart Tooltips (Interactive Hover)
- Clean tooltip display: Removed debug x/y coordinates and raw data index from chart hover tooltips. Replaced custom DateFormatter with SwiftUI's built-in
Text(timestamp, style: .time). Eliminated leftover cursor-line rectangles that were inadvertently left from interactive tooltip development.
v3.29.0
v3.29.0 Code Quality & Formatting Refactor
App (AMD Power Gadget)
- Format Function Extraction: Extracted
formatBytes()toChartHelpers.swift, removing 4 duplicatedformatSpeed()implementations across the codebase. Centralized formatting logic for maintainability. - Bug Fixes: Resolved popover graph misalignment by removing ZStack wrapper in popover views.
v3.28.0
v3.28.0 Fan Model Refactor & Sensor Enum
App (AMD Power Gadget)
- Fan Model Extraction: Extracted fan models into dedicated files, added
FanSensorenum for type-safe sensor handling. - processSampleData() Refactor: Refactored the main sampling pipeline helpers for better separation of concerns.
v3.27.0
v3.27.0 Popover Graph Alignment Fix
App (AMD Power Gadget)
- Graph Alignment Fix: Fixed popover graph misalignment by removing the ZStack wrapper that was causing layout offset.
- Loading Overlay Removal: Removed popover loading overlay that was interfering with proper graph rendering.