Repository navigation
macOS parity: every Windows page on the Mac, plus signing, iCloud and native menus - #1
Merged
Merged
Conversation
…menus Mac counterparts of every Windows page (Hardware, Login items, Apps, Broken items), the menu bar icon and notifications, FSEvents quick rescans, the macOS cleaner and suggestions, and the macOS follow-up list: Developer ID signing and notarization (off until the Apple secrets are set), iCloud Remove download, leftovers of deleted apps, native menus and Settings. See CHANGELOG.md and docs/testing-macos.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GitHub's Ubuntu runners make /usr/share writable for everyone, so root_may_remove rightly refuses it there. Check the folders' owner and mode before expecting it to allow a path under them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gjnail
approved these changes
Oct 1, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every page Heft has on Windows now has a Mac counterpart, and this PR adds the 21-item macOS follow-up list on top: signing, iCloud, leftovers of deleted apps, native menus, Settings and more. It's large (91 files, about +20.9k / −0.7k lines, 15.5k of them in new files), so there's a suggested reading order below.
Before the next release: the code builds and the tests pass, but the hand tests in
docs/testing-macos.mdhaven't been run yet. Merging doesn't ship anything by itself, and signing stays off until the Apple secrets are set. See "What's left before a release".What's in it
New Mac pages (the counterparts of the Windows tools)
heft --sensorsworks, and--reportdumps raw SMC/HID data for Macs that haven't been testedsrc/sensors/mac/launchctl disable), removed with a backup, and who signed each one. Show all background items lists whatsfltool dumpbtmreportssrc/mac/startup.rs,src/app/tools/startup_mac.rsmas; Sparkle feeds are only checked when turned on in Settingssrc/mac/apps.rs,src/mac/apps/{brew,updaters,orphans}.rs,src/app/tools/programs_mac.rssrc/mac/broken.rs,src/app/tools/broken_mac.rsMac integration
heft --traystarts hidden. Seesrc/mac/menubar.rsandsrc/mac/notify.rs.src/mac/appmenu.rsandsrc/app/settings_view.rs.src/scan/fsevents.rsandsrc/scan/walk/update.rs.trashcrate or Finder, so it no longer needs Finder automation permission. Finder's Put Back is available as a Settings option, and the Removed tab restores items either way.src/mac/icloud.rsandsrc/app/icloud_view.rs.src/compress.rs.Cleaner and suggestions
src/clean/mac.rsplus new rules: temporary files, Quick Look thumbnails, Metal shader caches, iPhone/iPad updates, system logs (administrator), Docker build cache, and privacy rules (recent items, clipboard, DNS cache). Safari's rules only appear with Full Disk Access. Caches for Teams, Epic, Java, Adobe, NuGet, Deno and Composer are also covered, and weekly cleaning runs through a launch agent.pkexecon Linux, the administrator prompt on macOS).On every platform
src/app/theme_toggle.rs).Libraryfolder was flagged as the Mac's Library folder.Release and packaging
release.yml: Developer ID signing and notarization. Both stay off until theAPPLE_TEAM_IDvariable and the related secrets are set. The release notes now describe Windows and macOS signing separately.packaging/macos/heft.entitlements(hardened runtime plus Apple Events), andbundle-macos.shacceptsHEFT_SIGN_IDENTITY.scripts/homebrew-cask.shwritesheft.rb, which is uploaded as thehomebrew-caskartifact.Docs
README, CONTRIBUTING and CHANGELOG (Unreleased) are updated.
docs/releasing.mdcovers setting up signing and Homebrew, and the newdocs/testing-macos.mdis the hand-test checklist. The website guides are updated, with a newsite/guides/mac-tools.html.What's left before a release
docs/testing-macos.mdhas been ticked yet. The automated tests cover parsing and planning, but not anything behind the administrator prompt or anything that changes login items, the Dock, Finder, iCloud, notifications or launch agents. The checklist only uses throwaway items.docs/releasing.md› Signing and notarizing for macOS. SettingAPPLE_TEAM_IDturns it on.gjnail/homebrew-heftusing the cask from the release run.heft --sensors --reportis there to help fix them.Suggested reading order
src/mac/mod.rs: shared helpers (property lists, launchd, the administrator prompt, backups) that the other Mac modules build on.src/platform/unix.rs: the Trash, the drive list and purgeable space.src/sensors/mac/, then FSEvents (scan/fsevents.rsandscan/walk/update.rstogether), then the cleaner (clean/mac.rs,clean/rules_unix.rs).Testing
cargo teston macOS (Apple silicon): 186 passed, 5 ignored. The ignored ones change real system state; run them withcargo test -- --ignored.cargo check --all-targetspasses for Windows and Linux.🤖 Generated with Claude Code