Historical archive
This page records a dated plan, audit, or research context, not a current product contract. Project status distinguishes current source behavior, published releases, and unfinished acceptance gates.
macctl and Summon on a real Mac: results (2026-10-18)¶
Plan: plans/2026-10-18-readme-plugin-home-mac-test.md, section 3. Mac: macOS 26.6.2 (25G83), Swift 6.4,
Xcode selected. Branch test/macctl-on-mac.
0. Backup¶
defaults export of com.apple.dock, com.apple.finder, NSGlobalDomain, com.apple.screencapture
and both trackpad domains, plus dark mode (Dark) and the wallpaper path, saved to
~/macctl-backup-20261018-093639/.
1. Build¶
- macctl: release build and
swift test, 82 tests pass. Installed to~/.local/bin/macctl. - Summon: release build,
swift test39 tests pass,scripts/bundle.sh+scripts/install.shinstall~/Applications/Summon.appand 9 themes.
2. Smoke test: pass¶
doctor: Automation of System Events granted, snapshots folder writable.list --json: 19 settings (the plan said 18;desktop.wallpaperwas added since), every field present.describeandgetexit 0 for all 19 ids.- Exit codes:
unknown_setting1,invalid_value1, usage error 64,snapshot_not_found1.
3. Every setting: 19 of 19 pass¶
Per setting: get, --dry-run (1 change, nothing written), set, read back with defaults read /
System Events, undo, read back again. All 19 wrote the right native value and undo restored it.
A key that was unset before is deleted again on undo, as designed.
Not done: the human look at the screen per setting, the logout for keyboard settings, and the ⌘⇧4
check for the screenshot folder. verifiedOn stays empty until Rohi does that look.
Bug found and fixed (865dff3): the previous wallpaper pointed at a file that no longer existed (an
image from a removed Raycast extension). undo failed with invalid_value, and because it always picks
the newest snapshot, every later undo failed too, so a full-profile undo would have been stuck. Undo now
skips a value that can no longer be written, says so in notes, and still records the undo. set and
apply warn up front: "Undo cannot restore the current desktop.wallpaper (no such file)."
4. End to end: pass¶
diff profiles/default.json: 6 changes.apply --dry-run, thenapply: 6 changes, logout note for the two keyboard settings.diffagain: empty. Secondapply: 0 changes, no snapshot.undo: 6 changes restored, thenno_snapshots.- Compared with the backup: every key matches except
com.apple.dock tilesize, which came back as the integer52instead of the real52.0the Dock had written (macctl writes-int). Harmless; reset to the original withdefaults write com.apple.dock tilesize -float 52.
5. Themes and wallpapers: pass¶
summon theme set summon-dawn: light mode and the Dawn wallpaper through macctl, Ghostty, borders and Claude Code theme files written.summon undo-sessionrestored dark mode and the previous wallpaper.summon theme set summon-nightandundo-session: same, pass.- Known gap:
~/.configis not a git repo, soundo-sessionleaves the generated theme files andsummon theme currentstill says the last theme set.
6. Dogfood: pass, with skill fixes¶
Seven plain-language asks to a fresh headless Claude Code session in this repo, one resumed session.
| Ask | What the agent did |
|---|---|
| hide my Dock | macctl set dock.autohide true, reported the snapshot. No --dry-run first; confirmed with defaults read; told the user macctl undo dock.autohide (wrong: undo takes a snapshot id). |
| show file extensions | Read the current value, said it was already on, changed nothing. |
| set my wallpaper to Tokyo Night | Did not find Summon's installed tokyo-night theme; downloaded an Omarchy image from GitHub with curl, then macctl set desktop.wallpaper. Warned up front that undo could not restore the old picture. |
| turn on dark mode | Already on, changed nothing. |
| make my key repeat as fast as possible | macctl apply of a two-setting profile (1 and 10, the catalog minimums), no diff first; mentioned the logout. |
| turn on night shift | Said plainly macctl has no such setting and did not run a raw command. |
| undo that wallpaper change | macctl undo <snapshot id>; reported honestly that the old file is gone, and corrected its earlier undo hint. |
Never bypassed macctl for a write, always reported snapshot ids, mentioned the logout. Misses fixed in
the MacSetup skill: always --dry-run first, confirm with macctl get, undo takes a snapshot id, and use
summon theme for theme wallpapers instead of downloading.
The old wallpaper path came back between tests: a Raycast extension sets Loupe.heic and later deletes
the file, so macctl snapshots a path that soon disappears. Undo's skip-with-note handles it.
7. README demos¶
tools/record-demos.sh recorded every transcript empty: the redact step took its Python source from a
heredoc on stdin, so the piped output never reached it. Fixed (099f520), recorded real output
(9557704); the home folder now shows as ~. No GIF: vhs is not installed.
Other notes¶
summon checkpointids are UTC while macctl snapshot ids are local time.summon pathbeforeinstall.shprints~/.local/bin(the binary's folder), which has no themes.