Three merges in one evening. Two cleaned up Super Notch. The third forked it into a new app.
A complexity-41 function became small private steps
VoiceboxToolLoop.run had a cyclomatic complexity of 41. super-notch #193 split it into private steps.
Behavior didn't change. Same order, same error paths, and the same approval, timeout, cancellation and status events. The public signature is unchanged, and the old complexity waiver is gone.
The panel tests on main went green
Main had four failing panel-height Swift tests. super-notch #194 fixed them.
The panel drawer now reaches its target height when it opens and when it resizes for quota. An interrupted panel open now finishes instead of stopping partway.
Grok Bot Notch started as a copy of Super Notch
grokbot-notch #1 turned a copy of Super Notch into Grok Bot Notch, a macOS notch for a Grok Bot crew with Firstmate as the default bot.
It has its own bundle id, ai.grokbot.notch, so it installs beside Super Notch. Sends go out as https-only webhooks. Each bot gets its own bearer in Keychain, and redirects are refused.
The cut was big: 770 files, including 248 Swift sources. Out went the other chat brains, the Kat persona, the storefront, Stripe, licensing and the appcast.
The fork didn't build on the first try
It hit Swift 6.3 build errors on the Mac. A follow-up fixed them.
On the Clue-accepted head, cfe25a18, swift test on the Mac ran 306 tests: 2 skipped, 0 failed (306 − 2 = 304 passed).
Clean up first, then fork
Forking is easiest right after a cleanup. Smaller functions and green tests made the cut safer.
Built with Cursor cloud agents, Swift 6.3, and lizard for the complexity checks.