AI Builds Ghostty's Unobtrusive macOS Update Notice

Mitchell Hashimoto used 16 AI-driven coding sessions to prototype SwiftUI, integrate Sparkle, and pivot to a bottom-right overlay for non-modal macOS update notices. It cost about $16 and eight hours to ship.

Custom cover image

TL;DR

  • Unobtrusive macOS update notice: surfaces Sparkle-driven update states inside the terminal window using titlebar accessory controllers; bottom-right overlay fallback for problematic titlebar styles
  • SwiftUI prototypes generated by agents used to iterate visual design and behavior; manual cleanup and refactors resolved layout conflicts
  • Planning-first approach with small, focused sessions; manual restructuring improved subsequent agent assistance
  • 16 agentic sessions total, plus simulation of edge cases before final Sparkle hookup
  • Cost and time: ~$15.98 token spend and ~8 hours wall-clock; merged and available to nightly “tip” users now, slated for Ghostty 1.3 tagged releases

Introduction

Mitchell Hashimoto, creator of Ghostty, recounts how an AI-assisted workflow helped ship a practical UI feature: an unobtrusive macOS update notification that reports Sparkle-driven update states without stealing focus or spawning modal dialogs. The write-up blends a concise pre-AI plan, a sequence of agentic coding sessions, and a frank account of where manual intervention was essential. It’s a useful look at how small, iterative AI sessions can sit inside a developer’s normal workflow.

What was built

The feature surfaces update status inside the terminal window rather than interrupting the presenter with a modal prompt. Mitchell started from a manual plan—consulting Sparkle’s custom UI protocols and macOS titlebar accessory controllers—then used SwiftUI prototypes produced by agents to iterate on the visual design and behavior. After several cycles of cleanup, refactor, and a few failed attempts to resolve titlebar layout conflicts, a pragmatic pivot added an overlay mode that displays the notice in the bottom-right of the window for problematic titlebar styles.

The AI-driven workflow (high level)

  • Planning first: an explicit planning stage guided agent output and reduced wasted work.
  • Small, focused sessions: 16 separate agentic coding sessions were used rather than one large run.
  • Iteration and cleanup: manual restructuring of the view model and targeted refactors improved downstream AI assistance.
  • Simulation and polish: generated scenarios exercised edge cases before final hookup to Sparkle’s protocols.

Several practical tips are sprinkled through the post—scaffolding function stubs, adding documentation so future agents reason about code better, and keeping final manual review mandatory.

Cost, time, and availability

Mitchell reports roughly $15.98 in token spend across the sessions and about 8 hours of wall-clock time. The change is merged and available to nightly “tip” users now, and will ship in Ghostty 1.3 for tagged releases.

Read the full account, including all agentic sessions and the author’s step-by-step notes: https://mitchellh.com/writing/non-trivial-vibing?

Continue the conversation on Slack

Did this article spark your interest? Join our community of experts and enthusiasts to dive deeper, ask questions, and share your ideas.

Join our community