May 19, 2026

v0.7.0 Ships, Then the Morning-After Fixes

Shipped v0.7.0 and immediately caught three regressions in the brain UI redesign before they reached anyone.

v0.7.0 went out today. The instinct after a release is to move straight to the next feature — the harder discipline is to sit with what you just shipped and check it actually behaves. That’s what today was: cutting the release, then immediately hunting down what the redesign underneath it broke.

The redesign in question was the brain settings rework from a few days back — a real UI overhaul of how providers, models, and platform tabs are configured. Big visual changes are exactly where quiet regressions hide, because the thing that used to happen automatically stops happening and nobody notices until they try to use it cold. Today’s audit found three. First: the providers-only lock — the guardrail that’s supposed to trap a user on the providers screen when no LLM provider is configured yet, so they can’t wander into a broken chat with nothing behind it — had come loose. It’s back: the sidebar greys out, the command palette disables, hash navigation redirects back to providers, and a warning banner explains why. The lock lifts itself the instant a provider saves successfully, so it never outstays its purpose.

Second, model lists had stopped auto-loading. Before the redesign, opening the provider modal, switching platform tabs, or editing a host/API key field would quietly refetch the available models in the background. After the redesign, that only fired on explicit edit — meaning a first-time setup showed an empty model list until you knew to do something else first. That’s a bad first five minutes for a new user, so the fetch triggers were restored across modal-open, tab-switch, and debounced field input, matching how it worked before anyone touched the layout. Third, and smallest but still wrong: the sidebar logo had been demoted from a link to a plain div somewhere in the rewrite, so clicking it to get back to chat did nothing. It’s an anchor again.

None of these were exotic bugs — they’re the kind of thing you only catch by actually clicking through the product the way a new user would, right after a big visual change lands. That’s the value of treating a release as the start of a verification pass, not the end of one. The rest of the day went to sweeping CI clean: a couple of genuine lint violations in the chat dispatcher and intent service, and a batch of stale unused imports across the test suite that had been quietly failing checks. None of it is visible in the product, but a red CI pipeline is a tax on every commit that comes after it, and it doesn’t pay itself down.

Shipping and cleaning up after yourself in the same day isn’t glamorous, but it’s the difference between a release that holds and one that needs a hotfix a week later. Next up: keep building on a green pipeline and a brain UI that actually does what it looks like it does.

  • Shipped v0.7.0.

  • Restored the providers-only lock — no provider configured means no wandering into a broken chat, with an automatic unlock on first successful save.

  • Fixed model lists to auto-load on modal open, platform-tab switch, and field edits, matching pre-redesign behavior.

  • Fixed the sidebar logo to link back to chat instead of doing nothing.

  • Cleaned up lint violations and stale test imports that were failing CI.