Releases: hakaru/MacSlowCooker
v1.0.3 — Auto-recovery after powermetrics crash
Bug fix
PowerMetricsRunner: permanent give-up after 3 crashes
When powermetrics crashed 3 times the runner stopped retrying forever. The HelperTool kept running under launchd (so no automatic restart occurred), but without a powermetrics child process GPU metrics were stuck until a manual kickstart.
Fix: instead of giving up, switch to a 60-second backoff after the third failure and keep retrying indefinitely — the same resilience model launchd itself uses. Additionally, a successful sample parse now resets the failure counter, so transient crashes across days no longer accumulate toward the give-up threshold.
Symptoms this fixes:
- GPU% / temperature / power / fan stuck after leaving the Mac idle overnight
- Required
sudo launchctl kickstart -k system/com.macslowcooker.helperto restore metrics
Recovery without update: sudo launchctl kickstart -k system/com.macslowcooker.helper
v1.0.2 — HelperTool CPU busy-loop fix
Bug fix
HelperTool: CPU 100% busy-loop when powermetrics crashes (#31)
When powermetrics crashed 3 times and gave up, the closed pipe's file descriptor became permanently readable, causing `readabilityHandler` to fire in a tight loop indefinitely. This kept the HelperTool pegged at ~100% CPU and prevented GPU% from updating.
Fix: cancel the dispatch source immediately on EOF (`handle.readabilityHandler = nil`), and clear the previous pipe's handler at the start of each restart to prevent handler accumulation.
Symptoms this fixes:
- HelperTool consuming ~100% CPU continuously
- GPU% stuck at 0% despite actual GPU activity
Recovery without update: `sudo launchctl kickstart -k system/com.macslowcooker.helper`
v1.0.1 — Permalink fix
Fix: correct Gumroad product permalink (fzlfrw).
v1.0.0 — License Verification
What's New
- License key input and verification in Preferences (Gumroad)
- Keychain-backed storage (kSecAttrAccessibleWhenUnlockedThisDeviceOnly)
- License key field masked with SecureField
- Prometheus exporter and PNG export (opt-in)