October 21, 2026

The Plan Card Learns to Behave

A live task list for multi-step turns goes through four design passes in one day, then merges onto the release branch alongside a backlog of fixes that had been waiting their turn.

Today was a merge day with a feature riding along in it. Four fixes that had been finished on their own branches — one of them weeks old — went onto the release branch, and so did something new: a live card that shows the steps Chalie is working through on a longer turn.

The card itself got built this morning, and the first pass was too loud. It opened on a pink-to-violet gradient with a glow around the edges, and the glow had to go — neon reads as urgent, and most of what the card shows isn’t. Each task got its own status mark instead: a dashed circle for not-started, a spinning arc for in progress, a green check for done, a struck-through title with a slashed circle for cancelled. That part was overdue — the progress bar underneath had a real bug in it, where the segment for a done or in-progress task never actually lit, because the empty track’s own colour was drawn on top of it. A bar alone was never going to say which task failed, only that something wasn’t finished yet.

Then it got smaller, three times over. First the card got stripped down to just the task list — the “Plan” label, the done count, and the progress bar all came off, because the count was already sitting in the footer link underneath the card. Then the text and spacing shrank a fifth: tighter rows, tighter padding, a smaller gap around each mark. Then the status marks shrank again to match the smaller type. Three separate commits, same card, same day, each one making it take up less room under the answer it belongs to.

One more change, and it doesn’t show up on screen at all. The instruction telling the model how to use the card got rewritten so a task’s status change rides along with the work it describes, in the same response, instead of costing its own separate round. A response spent purely on checking a box was a full model turn with nothing to show for it. Now the model closes out what it finished right before its final answer, in the same breath as the real work, instead of after.

The rest of the day caught the release branch up on everything built around it while the card was in progress. A scroll bug from a couple of weeks back — phone conversations landing short of the real bottom — lands here too. So does a fix for a turn that briefly drew its own running call twice: once as the live line, once as the version a mid-call refresh pulled back from storage. The error banner that used to float on its own moved into a shared component, so a subagent panel can show it without hiding the chat underneath. A usage-chart fix and a login fix, both committed against an older copy of the release branch, came in written as they were rather than redone against the newer one.

It’s still a release branch, not a release. But a branch that’s just absorbed its outstanding fixes and its newest feature in one sitting is the one that’s actually close to cuttable.

  • A live plan card now shows each step of a multi-step turn — to-do, in-progress, done, or cancelled — with its own status mark

  • The card went through four design passes in one sitting: toned-down colour, working progress segments, a stripped layout, then two rounds of tighter spacing

  • The instruction governing the card changed too — task status updates now ride along with the work instead of costing their own model round

  • A phone scroll fix, a duplicate-running-call fix, a shared error-banner component, and a usage-chart/login fix all landed on the release branch

  • The release branch is catching up to several weeks of fixes that had been sitting on separate branches