Skip to content

Releases: DrogaBox/SMCAMDProcessor-personal

v3.34.0

Choose a tag to compare

@DrogaBox DrogaBox released this 27 Jul 16:39

v3.34.0

See CHANGELOG.md for details.

v3.32.0

Choose a tag to compare

@DrogaBox DrogaBox released this 16 Jul 22:37

v3.32.0 - TBD

Added

  • temperatureOffset49 flag to ZenCpuFeatureMap for per-profile temperature control

Changed

  • Removed dead code from ResizableChart (cleanChartName, setHeight)

v3.31.0 - Native NSMenu + Kext Cleanup + Zen Family Profiles

Choose a tag to compare

@DrogaBox DrogaBox released this 16 Jul 21:53

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 CPUProfile selector (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

Choose a tag to compare

@github-actions github-actions released this 16 Jul 19:36

v3.30.0 Kext Idle Strategy, KASLR Anchor, SMU Barrier & Weak Self Fix

Kext (AMDRyzenCPUPowerManagement)

  • Runtime Idle Strategy: Replaced compile-time #ifdef idle strategy (PMRYZEN_IDLE_SIMPLE/MWAIT) with runtime selection via pmRyzen_idle_strategy global + switch. Zen 4/5 (Family 19h ≥60h, Family 1Ah) automatically use MONITOR/MWAIT for lower idle power draw; Zen 3- continue with safe sti;hlt. No more #error guards or rebuilds needed when CPU family changes.
  • KASLR Slide Dual-Anchor: Added _mh_execute_header as the primary KASLR slide anchor (stable Mach-O header symbol), with &version as fallback. Both validated against canonical kernel range >= 0xFFFFFF8000000000. The old single-anchor approach relied only on &version which could be removed from the kernel export set.
  • SMU Mailbox Memory Barrier: Inserted __asm__ volatile("mfence" ::: "memory") between smnWrite32(msgReg, cmd) and the response poll loop in smuSendCmd. 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 self to all 3 remaining Task { @MainActor } closures in TelemetryModel.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

Choose a tag to compare

@DrogaBox DrogaBox released this 15 Jul 02:57

v3.29.0 Code Quality & Formatting Refactor

App (AMD Power Gadget)

  • Format Function Extraction: Extracted formatBytes() to ChartHelpers.swift, removing 4 duplicated formatSpeed() 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

Choose a tag to compare

@DrogaBox DrogaBox released this 15 Jul 02:35

v3.28.0 Fan Model Refactor & Sensor Enum

App (AMD Power Gadget)

  • Fan Model Extraction: Extracted fan models into dedicated files, added FanSensor enum for type-safe sensor handling.
  • processSampleData() Refactor: Refactored the main sampling pipeline helpers for better separation of concerns.

v3.27.0

Choose a tag to compare

@github-actions github-actions released this 15 Jul 07:11

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.

v3.26.0

Choose a tag to compare

@DrogaBox DrogaBox released this 15 Jul 01:05

v3.26.0 Popover Loading Indicator

App (AMD Power Gadget)

  • Loading State UX: Added loading indicator to popover views for better user feedback during data sampling.
  • Version Bump: Incremented version to track popover UI improvements.

v3.25.0

Choose a tag to compare

@DrogaBox DrogaBox released this 15 Jul 14:41

v3.25.0

See CHANGELOG.md for details.

v3.24.0

Choose a tag to compare

@DrogaBox DrogaBox released this 15 Jul 14:41

v3.24.0

See CHANGELOG.md for details.