Back to home
Changelog
What's new in Perf Pulse Pro. All notable changes documented here.
14Releases
68Features Added
7Bugs Fixed
v1.8.0
2026-08-26LatestProvider-selectable deeper analysis
AddedProvider-selectable deeper analysis — Pro users can analyze a process with either Claude Code using Claude Sonnet 5 or Codex using GPT-5.6 Terra, with the selected provider remembered locally.
ChangedDeeper-analysis prompts now include the process's current instance count, aggregate CPU, memory, and status so recommendations reflect the live problem.
ChangedCLI discovery now covers common macOS package-manager and version-manager locations, including NVM installs when Perf Pulse runs through launchd.
FixedCrash Guard deduplicates aggregate-memory alerts against actionable app incidents only, so duplicate alerts are avoided without letting a non-urgent app warning hide critical system-level risk.
TechnicalDeeper-analysis requests use fixed provider and model allowlists, private ephemeral workspaces, Claude Code safe mode, read-only or tool-disabled execution, bounded concurrency, timeouts, output limits, and redacted provider errors.
TechnicalProvider-specific analysis is kept out of the generic process-description cache so a detailed response cannot replace a short knowledge-base description.
v1.7.0
2026-08-26Crash Guard
AddedCrash Guard — Persistent per-user memory and writable-disk protection through a headless launchd LaunchAgent. No root daemon or system extension is required.
AddedDedicated Crash Guard dashboard — A focused live tab for incidents, monitoring controls, alert delivery, always-on status, and identity-checked safe-stop actions, with a compact protection receipt left on Overview.
AddedTunable protection levels — Pro users can choose Early warning, Balanced, or Quiet presets and safely customize memory, disk, and repeat-alert thresholds; basic on/off and notification controls remain available to every tier.
AddedDisk-headroom prediction — Alerts at configurable free-space thresholds and estimates time to a critical threshold when disk capacity is falling rapidly.
AddedRead-only storage diagnostics — Ranks bounded developer hotspots and reports large deleted files still held open by a process. Perf Pulse never deletes files automatically.
AddedIdentity-checked process actions — Pro users can request graceful or forceful termination from the dashboard after PID, name, and start-time validation. Protected macOS services and Perf Pulse itself are blocked.
AddedCrash Guard CLI — perf-pulse guard install, uninstall, status, check, and storage, including JSON output for diagnostics.
AddedMulti-Mac alert context — Aggregate memory-pressure and disk-headroom webhooks include the Mac hostname and timestamp.
ChangedThe dashboard Crash Guard card is always visible and distinguishes login protection from monitoring that lasts only while the dashboard is open.
ChangedCrash Guard notifications now use concise incident-first copy and can automatically open the dedicated Crash Guard tab on the exact live localhost dashboard, with a five-minute tab-spam guard and an all-tier dashboard preference to disable it.
ChangedCrash Guard setting updates are partial, token-protected, validated before persistence, and preserve in-progress dashboard edits during live polling.
ChangedFree-tier process actions are labeled as command-copying; Pro actions accurately distinguish a signal request from confirmed process exit or resource recovery.
TechnicalAlert and Crash Guard configuration files are written with owner-only permissions.
TechnicalThe former Sentinel quit endpoint no longer accepts arbitrary PIDs or force quit; requested PIDs must still belong to an active alert and are routed through the shared process safety checks.
v1.6.0
2026-07-21Developer / AI-workload contention detection
AddedDeveloper / AI-workload contention detection — A new generalizable engine (devworkload.rs) that diagnoses the failure mode of running many concurrent AI coding sessions and heavy builds on a memory-constrained Mac. Every threshold is a fraction of the machine's own RAM or a portable absolute — no hardcoded specs. Five signals:
AddedHeap landmine — a Node.js --max-old-space-size cap larger than half (warning) or 80% (critical) of total RAM, so one tsc/next build job under load can force swap. Suggests lowering the cap or switching tsc to tsgo.
AddedBuild/test herd — two or more heavy builds/tests (tsc, next build, vitest, jest, webpack, esbuild, rollup, turbopack, cargo) actively running at once; recommends serializing them behind a single lock.
AddedWarm agent fleet — three or more idle AI-agent / MCP sessions each holding memory they won't release while idle; recommends trimming the always-on set or idle-eviction. Rolls up each session's process tree by ppid so one session's subprocesses count once, not as multiple agents.
AddedDev memory pressure — fires only under real macOS memory pressure (warn/critical) and only when dev tools genuinely dominate used memory, naming the heaviest dev-tool RSS offenders. Gated on Apple's pressure signal rather than raw swap size, since multi-GiB swap under normal pressure is routine and healthy on macOS.
AddedRemote-bound insight — many AI sessions but a nearly-idle machine (low CPU, healthy RAM/swap): you're bottlenecked on model latency / API limits, not local resources, so more CPU/RAM won't help.
Addedperf-pulse doctor command — The primary human surface for the above. Prints grouped findings + fixes with severity icons, or --json for machine output. Findings also flow into perf-pulse recommend, GET /api/recommendations, and the dashboard.
AddedProcess command line (argv) exposure — ProcessSnapshot now carries a cmd field (populated for free from the existing process refresh), letting detection read heap flags and distinguish node-hosted tools (tsc / next / vitest / claude-code / codex) from each other. Stripped on the Free tier alongside ppid, since argv can contain sensitive paths.
AddedKnowledge-base entries — Added next (Next.js), vitest, tsgo (native TS typechecker), and claude (Claude Code CLI agent) with accurate safe-to-quit guidance.
AddedProactive dev-workload alerts — The background Sentinel loop now also evaluates dev-workload contention and fires a native macOS notification for any critical dev finding, gated by a per-kind cooldown and the existing notify config, reusing the leak-alert delivery path without touching the leak-velocity math.
AddedMemory Leak Sentinel — A new engine that tracks resident memory per application over time (helper/renderer/framework processes roll up to their parent app) and proactively flags a runaway before macOS throws "your system has run out of application memory." Catches two shapes: an app growing fast and sustained (a live leak), and an app already holding a huge amount even while idle/paused (e.g. a suspended agent runtime sitting on 50+ GiB).
AddedApplication-memory (OOM) risk score — A 0-100 score derived from macOS memory pressure + swap growth + available-memory headroom, independent of raw RAM%. This is what actually predicts the OOM dialog; the old memory rule only fired at >80% RAM and missed swap/compressor exhaustion.
AddedProactive delivery — When a critical leak is detected the Sentinel fires a native macOS Notification Center banner (cooldown-gated), and can also fire your configured Slack/Discord/generic webhooks with a per-app leak payload (memory_leak_alert).
AddedOne-tap & auto quit — A "Quit <app>" button in the dashboard banner (Pro), plus opt-in auto-quit of runaway known-leaky apps above a configurable size threshold (off by default, known-leaky-only by default).
AddedDashboard Sentinel banner — A top-of-Overview card showing OOM risk, swap/free headroom, and each leak with its growth rate, projected time-to-exhaustion, and tailored advice. Hidden while the system is calm.
Addedperf-pulse sentinel CLI — Samples memory for a few seconds and prints leak alerts + OOM risk (--json for machine output).
AddedCodex / ChatGPT knowledge — Knowledge-base entries for the ChatGPT desktop app and its bundled Codex agent runtime, flagged as a known unbounded-memory leak with remediation (update, reset local state, quit between agent runs) and links to the tracking issues.
FixedIdle-app recommendation no longer dead in the dashboard — generate_recommendations_from_snapshot hardcoded process age to 1 hour, so the "quit idle app" rule never fired from the web/server path. Process start time is now carried through the snapshot and the real age is used.
FixedSwap/compressor signals now feed recommendations — Added an "application memory is running low" recommendation driven by memory pressure + swap, naming the largest resident process as the likely culprit. These signals were collected but previously ignored by the recommendation engine.
TechnicalNew module sentinel.rs: per-app RSS ring buffers, least-squares leak-velocity, OOM-risk scoring, app-family attribution (generic runtimes like node are tracked per-process so unrelated servers aren't merged into a phantom leak), notification + graceful-quit helpers.
TechnicalNew endpoints: GET /api/sentinel, POST /api/sentinel/quit, POST /api/sentinel/config. New static asset sentinel.js.
TechnicalProcessSnapshot gains a start_time field. alerts.rs gains send_leak_alert.
TechnicalMade score::tests::test_overall_score deterministic — it previously depended on a live iostat reading and failed on a busy machine.
v1.5.0
2026-01-29Inline process descriptions
AddedInline process descriptions — Every process in the table now shows a one-line explanation underneath its name. Descriptions load automatically via a debounced batch API, persist in localStorage, and never fire on the 3-second poll cycle.
AddedExpanded knowledge base — 75+ built-in process explanations covering macOS daemons, dev tools, databases, browsers, and popular apps. Up from 21 in v1.4.
AddedBatch explain API — POST /api/explain-batch accepts a list of process names and returns descriptions from the knowledge base + disk cache in one call. Not Pro-gated.
AddedPersistent explanation cache — Unknown process descriptions are cached to ~/.config/perf-pulse/explanations.json (LRU, 500 entries max). Survives restarts.
AddedClaude Code integration — If claude CLI is in PATH, unknown processes are automatically explained in the background via Haiku (up to 10 at a time, rate-limited to once per 60s). Pro users get an "Ask Claude" button in the process modal for deep analysis.
AddedLearned Insights panel — The Speed Up tab now shows a "Learned Insights" section powered by the pattern detection engine. Surfaces time-of-day slowdowns, frequent bottleneck processes, and memory leak trends.
AddedPatterns API — GET /api/patterns returns detected patterns, predictions, and data stats. Runs every 5 minutes in the background. Pro only.
AddedSmart recommendation caching — Recommendations are generated from the live snapshot (no more System::new() + 250ms sleep). Cache invalidates only when the process landscape hash changes or 5 minutes elapse.
AddedScheduler log rotation — scheduler.log is capped at 500KB. Rotated automatically at server startup and when scheduling is enabled.
ChangedRecommendation polling interval increased from 20s to 60s. Frontend skips re-render when _version is unchanged.
ChangedHealth endpoint now reports has_claude availability.
ChangedKnowledge base uses OnceLock singleton — zero-cost after first access.
TechnicalNew modules: explain_cache.rs, claude_explain.rs.
Technicalrecommend.rs refactored: generate_recommendations_from_snapshot() shares core logic with CLI path via generate_recs_from_proc_data().
Technicalcompute_process_hash() buckets top-20 processes by CPU/memory tier for cache invalidation.
TechnicalPattern-enhanced recommendations: bottleneck escalation, time-based contextual tips, memory leak warnings.
v1.4.3
2026-01-28Release v1.4.3
FixedResolved clippy warnings for CI compliance.
v1.4.2
2026-01-28Dashboard UX overhaul
ChangedDashboard UX overhaul — Jony Ive-inspired design refresh with improved visual hierarchy, spacing, and interaction polish.
v1.4.1
2026-01-28Release v1.4.1
FixedHardened alerts and auto-restore watchdog for Meeting Mode reliability.
v1.4.0
2026-01-28Premium Experience features
AddedPremium Experience features — Performance Score (0-100), Meeting Mode (one-click resource optimizer with auto-restore), and Battery Optimizer with actionable drain analysis.
v1.3.2
2026-01-27Homebrew installation
FixedHomebrew installation — Release binaries are now hosted on perf-pulse.com so brew install and brew upgrade work with the private repository.
FixedAutomated release pipeline — CI now builds both architectures, deploys binaries to perf-pulse.com, and updates the Homebrew formula automatically on every tagged release.
v1.3.1
2026-01-27Free and Pro tiers
AddedFree and Pro tiers — Free tier includes live monitoring, process table, ports, and process stats. Pro unlocks historical analytics, AI insights, speed-up recommendations, and process tree grouping.
AddedIn-dashboard license activation — Activate your Pro license directly from any upgrade prompt without restarting. Enter your key and unlock everything instantly.
AddedUpgrade prompts — Polished upgrade cards appear contextually when you reach a Pro feature, explaining what you'll unlock with a direct link to purchase.
AddedLicense status API — The dashboard checks your license on load and adjusts the UI automatically.
AddedStartup banner shows license tier — See whether you're running Free or Pro right in the terminal when the server starts.
ChangedHistorical time range tabs (1D through 30D) are now visually disabled for Free tier users with clear feedback.
ChangedSpeed Up tab shows an upgrade card instead of empty content on Free tier.
ChangedProcess modal shows a blurred preview of AI insights on Free tier with an upgrade path.
ChangedProcess tree grouping button is hidden on Free tier.
TechnicalAll Pro features are enforced server-side. API endpoints return 403 for gated features regardless of client modifications.
TechnicalProcess parent-child data is stripped from API responses on Free tier to prevent client-side bypass of grouping restrictions.
v1.3.0
2026-01-27Unified process modal
AddedUnified process modal — Click any process to see live stats, AI insights, child processes, and historical charts in a single view.
AddedKill confirmation — Stop and Force Quit actions now require confirmation before copying the command to your clipboard.
AddedProcess tree grouping — Processes are grouped by real parent-child relationships instead of name matching, giving an accurate view of app hierarchies.
AddedAI insight caching — Process explanations are cached for your session. Re-opening a process shows results instantly.
AddedInline memory bars — Each process row shows a mini progress bar for memory usage at a glance.
AddedStatus indicators — Green and gray dots show whether each process is actively running or idle.
AddedClick-anywhere rows — Click any row in the process table, top processes, or rankings to open the process modal.
AddedSmooth value transitions — Metric values animate between updates instead of jumping.
ChangedSeparate explainer and detail modals replaced with the unified process modal.
ChangedKill buttons throughout the dashboard now route through the confirmation modal.
v1.2.0
2026-01-27Historical performance tracking
AddedHistorical performance tracking — View CPU and memory trends over 1 day, 3 days, 7 days, 14 days, or 30 days.
AddedPer-process charts — See how individual apps used CPU and memory over time with color-coded multi-line charts.
AddedCPU and Memory rankings — Searchable leaderboards showing which apps consumed the most resources.
AddedSummary cards — At-a-glance stats including total CPU hours, peak memory, top CPU app, and number of tracked apps.
AddedMode switcher — Header pills let you flip between Live and any historical range. Keyboard shortcuts: L for Live, 1-5 for time ranges.
AddedBackground data collection — Perf Pulse records one-minute aggregate snapshots to disk automatically. Historical data builds up over time with no manual export needed.
AddedAuto-cleanup — History files older than 30 days are removed on startup to keep disk usage minimal.
v1.1.0
2025-05-15Copy kill commands
AddedCopy kill commands — Click to copy kill commands for individual processes or entire groups to your clipboard.
AddedToast notifications — Brief confirmation messages when commands are copied.
v1.0.0
2025-01-27Live process monitor
AddedLive process monitor — Real-time CPU, memory, and status for every process on your Mac.
AddedPort mapper — See which process owns which port, categorized by type (dev, database, system).
AddedAI process explainer — Built-in knowledge base explains what processes do and whether they're safe to quit.
AddedSpeed-up recommendations — Actionable suggestions to free up CPU and memory, with severity ratings and estimated savings.
AddedProcess grouping — Processes grouped by parent PID with expandable child lists.
AddedCLI tools — perf-pulse status, perf-pulse top (terminal UI), perf-pulse analyze (text/JSON/CSV export), perf-pulse explain <process>.
AddedWeb dashboard — Glass-morphism UI at localhost:7575 with dark mode and light mode.
AddedHomebrew install — brew tap hopeatina/perf-pulse && brew install perf-pulse.
AddedBattery and uptime monitoring — Battery percentage, charge status, and system uptime in the dashboard.
AddedMemory pressure detection — Real-time Normal / Warning / Critical memory pressure indicator.