MacWrench 1.3.2 — Dashboard polish, Cleaner overhaul, Homebrew uninstall

A polish and stability release. No data changes, no migrations, no new tabs — the existing tabs get sharper, faster, and easier to trust.

1.3.2 sits on top of the 1.3.0 Homebrew redesign and the 1.3.1 maintenance patch. It's the kind of release where most of the work is invisible until you notice the rough edge that used to bother you is gone — the colors are calmer, the cleanup flow is a real screen instead of a dialog, and the things that should never have asked for your password no longer ask.

Dashboard, in one accent

The Dashboard was drifting toward two accents. Cyan was the brand color, but purple had crept onto health-tier badges, recommendation captions, and the occasional tile highlight. 1.3.2 pulls it all back to one: cyan is the only Dashboard accent. Purple is reserved for the Pro and Paywall surfaces where it has identity meaning, and the "Today's Recommendation" caption now stays cyan across every health-tier score. The result is a Dashboard that reads as one surface instead of two competing ones.

The Smart Scan transport bar got the same treatment. Buttons share a single style. The misleading "Fix All" affordance — which only ever navigated you to the Cleaner tab — is gone. While a scan is running, you get a dedicated Cancel state instead of a frozen Run button. When the scan completes, an inline result strip appears right where the controls were ("3 apps · 0 brew · 8.5 GB · 4.3s"), so the outcome is visible without scrolling.

The storage donut, on Apple's pattern

The Dashboard's storage donut is rewritten on Apple's canonical Swift Charts pattern — SectorMark with chartAngleSelection and inner/outer-radius emphasis driving the selection. The chart now hovers and selects the way you'd expect any Apple-native chart to behave, with the inner ring expanding on the focused sector.

The rewrite also closes a recursive-layout race in Charts.framework that surfaced earlier in development when we tried to equalize the height of the hero cards above the donut. The new implementation is structurally idempotent across re-renders, so the hero-card height equalize is stable and the donut never enters the layout loop that used to trigger a SIGTRAP on resize.

Cleanup, as a real screen

The old cleanup flow was a confirmation sheet on top of the Cleaner tab. Useful, but tonally wrong: it implied "are you sure?" — when really you'd already been sure when you tapped Clean Now. 1.3.2 commits to the action.

Clicking Clean Now now swaps the entire Cleaner tab to a dedicated Particle Vacuum view — a SwiftUI Canvas-driven particle field that flows into a pulsing trash icon at the center, surrounded by a cyan radial glow. Hero stats track what's being reclaimed. A live monospaced path strip shows the file or category currently being cleaned. A floating Cancel button stays available the whole time. And the sidebar tabs remain interactive throughout, so you can keep moving around the app while cleanup runs.

The confirmation dialog that comes before it is also fixed: it's now scrollable with a fixed action bar. If you've selected a long list of categories, Cancel and Clean Now no longer slide off the bottom of the screen. The upfront elevation explanation appears only when something in your selection would actually need it.

The admin password prompt is gone

For a long time, MacWrench asked for your administrator password before cleanup ran. The reasoning was historical: a couple of cleanup categories pointed at system paths (/Library/Caches, /Library/Logs) where some entries needed root to delete. So we asked once, used it for the elevated paths, and proceeded.

An audit ahead of 1.3.2 looked at what actually got deleted with that elevation. The answer was: almost nothing. On macOS 14+, the paths inside those system caches that look deletable are almost entirely TCC-protected — Music, HomeKit, CloudKit, Safari Safe Browsing, icon services, and friends. The OS refuses to delete those even for root. The handful of items that are still deletable behind elevation yield about 100 MB at the absolute upper bound — a rounding error against the gigabytes of safe, user-level caches that MacWrench already reclaims without asking for anything.

So the prompt is gone. SafetyValidator now filters known TCC-protected paths upfront, before the deletion pipeline ever sees them, and the "needs elevation" retry prompt (which used to offer to re-prompt for items that could never be cleaned anyway) is gone with it. Less friction, no functional loss, and a fundamentally more honest interaction with the OS.

Homebrew, both ways

1.3.0 made it easy to find Homebrew packages. 1.3.2 makes it just as easy to remove them.

Already-installed packages are now detected across Discover, Search, Popular, and Categories, and every row UI shows an "Installed" pill when it's already on your system. The package detail screen flips its primary action between Install and Uninstall based on inventory state — same button position, same Pro gate, same analytics shape, same error handling.

And Homebrew category coverage expanded substantially. The package tokens powering each category grew from roughly 108 to about 750, so the casks that surface inside Productivity, Developer Tools, Media, and friends are far more representative of what people actually install.

Menu Bar widget, fixed action strip

If the status line said "Updated about an hour ago", it could push the Open and Clean buttons until one of them truncated to "…". 1.3.2 pins the action strip to its natural width and lets the timestamp truncate instead. Open and Clean are always fully tappable now, no matter what the status copy says.

Should you update?

Yes. There are no breaking changes and nothing that requires you to redo state. Sparkle will offer the update within 24 hours, or you can grab it directly from the download page at any time.

Full list of changes is in the changelog.