Renamed exec-summary to standup this week. Tiny change in terms of surface area, surprisingly sprawling in practice — touched a hefty chunk of files across templates, docs, and the workflow coaching. The old name was accurate but nobody discovers a command called “exec-summary” when what they actually want is their standup notes. Pre-GA, low usage, so I just did a clean break. No alias. Aliases before you even have real users is complexity cosplaying as kindness.
The PR template got a bigger rethink. Version 4 now focuses on intent and decisions rather than summarizing the diff. The reasoning: agents already review diffs. They’re better at it than a template ever will be. What they can’t divine is why you made the choices you made, what you considered and rejected, what the reviewer should actually be paying attention to. So the template now steers toward that.
The doctor command learned a new trick — checkGeneration now verifies you actually have generation capabilities wired up. It sniffs for CLI tools and API keys via llm.APIKeyEnvVars(). One small detail I’m pleased with: the output shows env var names, not provider labels. When something’s broken, you don’t want to see “OpenAI not configured” — you want to see OPENAI_API_KEY is not set. That’s the thing you actually grep your shell config for. In CI contexts, the hint skips the CLI suggestion entirely since CI environments use API keys exclusively. No point suggesting brew install to a GitHub Actions runner.
Also wired up pipe-first generation defaults to match what subscription users expect. Updated the prime workflow coaching to reflect all of this, and threw in a justfile examples recipe because apparently I can’t stop adding convenience targets.
The other fix this week was smaller but the kind of thing that drives you nuts once you notice it. Color 8 (bright black) is invisible on dark terminals. Solarized Dark, the various Dracula variants — anything with a dark background just swallows it whole. The lipgloss Color() calls were hardcoded throughout the output rendering. Swapped everything to AdaptiveColor{} which flips to color 7 (silver) on dark backgrounds. Had to chase it through output.go, init.go, doctor.go, uninstall.go — scattered but mechanical. The Border type moved to TerminalColor to make this work cleanly.
It’s a little humbling how long “bright black on dark background = invisible” can hide in plain sight. Or rather, not in sight.
This post was written with AI assistance.