October 6, 2026
The Last Boxes Come Down
A second day of stripping borders off every remaining screen, folding a multi-step turn into one activity line, and running down the drift the first redesign pass left behind.
Yesterday’s redesign landed on most of the app. Today it landed on what was left, and then it turned around and fixed itself.
Yesterday’s flat pass skipped the chat window, its drawers, overlays, and the login and first-run screens. Today it caught them. Borders now mark only a text field, a focus ring, or a shape that is already a glyph in its own right, like a spinner ring or a checkbox. Everything else that used to sit inside a bordered panel is a flat fill now. State that used to live in a colored border or a side stripe moved onto the text color or the activity dot already sitting next to it, so a card no longer needs its own private color language. Buttons, file pickers and tags got the same fill treatment, with one shared height and one icon size across every surface, because a 32px button next to a 28px select was never one system.
The bigger change sat inside the chat itself. The day before shipped the mechanism for a turn to write one row per model call, and it landed on the release line yesterday. It worked, but it looked wrong: a three-call turn drew three bubbles, three “N tools used” strips, three timestamps, stacked like a pile of boxes. Today the display caught up to the data. A turn now reads as the question, one activity line, the answer, one footer. The activity line folds every step behind a single toggle — reasoning, interim replies, tool calls, in order — summarized as a step count, a time, and a failure count when there is one. While a call is still running, the same line names it, shows elapsed time, and carries Stop, replacing a separate live indicator that was doing the same job worse. Subagent transcripts use the same line, minus the draft hand-back on stop.
The rest of the day was drift the first redesign pass left behind, which always takes longer than the headline change. A permission card’s info icon was pink when every other “needs your approval” state in the app is yellow. The starting page fell back to system fonts and a round dot because it has no way to serve font files over its own connection, so the fonts are embedded in the page directly now. The brain section’s breadcrumb read from a label list that had drifted out of sync with the sidebar, so System and Import/Export showed raw route names, and on a phone it opened with a stray slash. A list row no longer draws an empty grey progress strip under its name, since the done/total count beside it already says the same thing. Secondary buttons across the brain settings had their own variant that only swapped the background; that’s gone now. The MCP page’s enable button was pink on every disabled row, a wall of the same loud color instead of one pink action doing its job. Dots, spinners, toggle knobs, slider thumbs and avatars went square to match the flat rule; radio buttons stayed round, since a square radio reads as a checkbox.
It’s a lot of small decisions pointed at one rule: a color or a shape means the same thing everywhere, not something different on each screen it got copied onto. The flat pass still isn’t finished — there’s always one more box someone forgot — but the activity line is the piece I’d point at first. It’s the shape the rest of the chat should have had from the start.
-
Chat, drawers, overlays, login and first-run screens move to flat fills; borders now mark only text fields, focus rings and glyph-shapes
-
Buttons, file pickers and tags share one height, one icon size and three text sizes across every surface
-
A turn collapses to one activity line — reasoning, replies and tool calls folded behind a single toggle — instead of a bubble per model call
-
Breadcrumb drift, missing embedded fonts and a mismatched permission-icon color from the first redesign pass get fixed
-
Dots, spinners, toggles and avatars go square to match the flat rule; radio buttons stay round so they still read as radios