cmux NEXT Home: while the Chief works, show its steps, its thought and the step now
While the Chief works, Home showed one line over the typing dots, such as "Using optchat: control · 6m 3s", for minutes at a time. You couldn't tell what the Chief had done or was thinking. Now the line above the dots is a small column of up to three caption rows, in the same place and style:
- What it did: the turn's finished steps folded into one row, using the agent chat's words: "Ran 3 commands · Read 2 files · Telling a31 ›". A kind with two or more steps folds. A single other step shows its own line, and several show as "N steps". Clicking the row still opens the existing list of every step with its duration.
- What it's thinking: the Chief's newest thought, shown as its headline (the last
**bold**heading, the way Claude and Codex title reasoning summaries) or else its last sentence, cut to 72 characters. While the Chief is thinking, that headline replaces "Thinking" in the running row. - What it's doing now: the running step and its time, as before.
The first step of a turn reads exactly as before. Replies still arrive as whole messages (HomeReplyDisplay.wholeMessages); this changes only the status line.
Debug Settings > Home > Chief running indicator switches between three looks: steps, thought and step now (default), steps and step now, or the old single line. It's read on every tick, so a switch shows within a second.
The control calls also say what they do now. optchat-chief's run.activity line for control(action, id) reads "Checking on a31", "Answering a7's prompt", "Steering a2", "Restarting a31" and so on, and peers and escalate_auth get plain lines too. Before this, all of them fell through to "Using optchat: control".
How
HomeLiveBookkeeps each run's newest thought text, even after its step's final frame drops the step.HomeLiveRun.thoughtexposes it. This is client state only, with no protocol change.HomeTurnProgress(new, pure) builds the rows fromHomeTurnSteps, the current activity, the thought and the clock. The kind of a step comes from the verb optchat-chief puts at the start of its line ("Running …", "Reading …", "Editing …", "Searching"). "Reading the chat history" and the other Chief tools count as other steps.- The status line stays one
.noticerow. Its text has one line per row.HomeNoticeRowsgives it 16 pt plus 15 pt per extra line, draws each line cut with "…" to the column, and draws the upper rows quieter. These are two small vendored edits (Layout.swift,RowDrawing.swift), markedcmux:, with their patches regenerated against the pin. - Strings: six new
CmuxHomekeys in all 21 languages. The four fold labels reuse the agent chat's translations (tools.ran,tools.read.other,tools.edited.files,tools.searched); "N steps" and "N more steps" are machine-translated and markedneeds_review.
A follow-up could make the fold exact: an additive kind on run.activity frames. The daemon's frame decoder has deny_unknown_fields, so that needs a capability and a protocol bump. I left it out.
Changelog
Changed: While the Chief works, Home shows the steps it finished, its current thought and the step running now, instead of one "Using …" line.
Test
HomeTurnProgressTests(MessagesLabHomeTests) covers:- the first step reads as before
- commands fold into "Ran 3 commands ›"
- kinds fold in the order the turn did them
- other steps count as "N steps" or "N more steps"
- Thinking and Writing aren't steps
- the Chief's "Reading the …" tools aren't file reads
- the narration row in each style, and the thought replacing "Thinking"
- headlines are plain and short
- the notice row grows one row per line
- a new thought re-renders without waiting for the clock
- through
HomeStorein the chat rig, a thought survives its final frame and reaches the status line
optchat-chief/tests/activity_labels.rs,the_chiefs_control_calls_say_what_they_do_to_which_agent.- Red commit 47fce13bd77 adds the tests before the code exists, so it doesn't compile there. Green is the head.
Observed / Not run
- Observed:
scripts/cmux-next/prepush-gate.pypasses (one crash-ratchet hit fixed in 54dfee91). - Not run yet: MessagesLabHome tests, the CmuxNext compile and the optchat-chief Rust test on the fleet or CI (pending; nothing is built on the Mac). I'll update this section with the results.
- Not run: a tagged build or a
cmux-next mediacapture of the new rows, so there are no before/after screenshots.
Agent session: cosmic-gray
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
While the Chief works, Home's status line above the typing dots now shows up to three caption rows instead of one static line: the turn's finished steps folded into one row ("Ran 3 commands · Telling a31 ›", using the agent chat's words), the Chief's newest thought as narration, and the step running now with its time. optchat-chief's control calls read as what they do ("Checking on a31", "Answering a7's prompt") instead of "Using optchat: control".
Behavior
- Debug Settings > Home > Chief running indicator switches between the narrated style (default), steps only, and the old single line.
- The thought row uses the newest thought's headline and survives the thought step's final frame as client state; while the Chief is thinking, the headline is the running row.
- Clicking the folded steps row opens the existing list of all steps with durations; replies still arrive as whole messages.
- No protocol change; only the status line changes.