Skip to content

Transcript: a background update with nothing to open has no chevron, and draws no line once it ends - #32798

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/background-update-rows
Nov 3, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/background-update-rows

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Leo (2026-11-03): "these background updates don't really expand out to anything? idk what those are even for"

What these rows are

acpmux brackets each turn the agent runs without a prompt (a background task finished, a scheduled wakeup, anything else such as a hook or late work after a restart) with background_turn records. A quiet one draws as one muted line ("Background task finished", "Scheduled check", "Background update") that opens to the rows the turn made (#30205).

Some of these turns make no rows of their own. Their events only update rows that belong to something else, such as a call an earlier turn started or a subagent's tool calls while the main agent is idle. Those draw a "Background update" line whose chevron opens to nothing. In the session logs I checked, every empty line was a system trigger, which reads as "Background update".

Change

  • direct.ts (OrderedRows) records on the line (background.hasRows) when a row of the turn's own draws something. That covers a row tagged live, a row tagged when an older page brings the started record, and the line keeps the mark when its ended record arrives.
  • backgroundTurns.ts drawsBackgroundLine: a quiet turn that ended with no rows of its own draws no line. It has nothing to show and nothing to say. Its rows (if any, all visibly empty) stay folded as before.
  • BackgroundTurnLine.tsx: a running turn with no rows yet is a plain spinner line, with no chevron, no button and no aria-expanded. Once its first row comes, it opens to that row.
  • TranscriptActivityRow.tsx: a chevron prop (default true, so other rows are unchanged). Chevron placement is untouched.
  • Gallery: transcript / background-turns-nothing-to-open, with a play that asserts the ended line is absent and the running line is neither a button nor has a chevron. Existing gallery lines carry hasRows: true.

No new strings. Turns that do have rows keep their trigger labels and open as before.

Observed / Not run

  • Observed: red/green. test/agent-pane-background-turns.test.ts was committed first (2aedebf). On base code it fails 2 tests: the ended empty line is drawn, and the running empty line is a <button> with cv-agent-activity__chevron. On head: 20/20 pass across it and backgroundTurns.test.tsx.
  • Observed: replaying real acpmux session logs through the reducer. One session with 4 quiet system lines that had no rows now draws 0 of them. A session with 24 quiet lines, all with rows, still draws all 24.
  • Observed: web-lint.sh and prepush-gate.py pass. On a fleet box, the background, activity-row, step-row and spacing tests pass 37/0 (run 41561316728). bun run check there is red only on two no-implied-eval warnings in test/native-session-info-toggle.test.tsx, a file this PR does not touch. That is a base red, already fixed on base by base red: the old-host close-script test runs the script with node:vm, not new Function (tip web-lint red from 419a87a14791) #32760.
  • Not run: the new gallery play in a browser, and a DEV build.

Changelog

  • Agent chat: a "Background update" line with nothing to open no longer shows. One still running has no chevron until it has something to show.

Agent session: agent session

🤖 Generated with Claude Code

@teamleaderleo teamleaderleo added risk:low Risk tier (docs/ci/risk-tiers.md) leo-named-fix An obvious fix to something Leo named: lands on push, review runs in parallel labels Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 835e635: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr32798 -f ref=lane/background-update-rows -f platform=macos -f backend_mode=local

Gallery before/after for 835e635: 16 states rendered, 13 images differ, 3069 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41567041478 -R manaflow-ai/cmux -n gallery-advisory-32798-835e635a572b00f2886a627028c75e75d2ca3fcb (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.live-chat-watch/choice-alone Apple System Colors Light unchanged 0% own direct.ts
agent-pane.live-chat-watch/choice-alone Apple System Colors unchanged 0% own direct.ts
agent-pane.live-chat-watch/view-only Apple System Colors Light unchanged 0% own direct.ts
agent-pane.live-chat-watch/view-only Apple System Colors unchanged 0% own direct.ts
agent-pane.live-chat-watch/take-over-refused Apple System Colors Light unchanged 0% own direct.ts
agent-pane.live-chat-watch/take-over-refused Apple System Colors unchanged 0% own direct.ts
agent-pane.prompt-after-tool-rows/centered Apple System Colors Light changed 0.114% own model.ts
agent-pane.prompt-after-tool-rows/centered Apple System Colors unchanged 0% own model.ts
agent-pane.transcript/background-turns-nothing-to-open Apple System Colors Light new 0% own transcript.gallery.ts
agent-pane.transcript/background-turns-nothing-to-open Apple System Colors new 0% own transcript.gallery.ts
agent-pane.transcript/grid-rhythm Apple System Colors Light unchanged 0% own transcript.gallery.ts
agent-pane.transcript/grid-rhythm Apple System Colors unchanged 0% own transcript.gallery.ts
agent-pane.transcript/grid-waiting Apple System Colors changed 0.0169% own transcript.gallery.ts
agent-pane.transcript/grid-waiting Apple System Colors Light unchanged 0% own transcript.gallery.ts
agent-pane.transcript/codex-turn-headers Apple System Colors Light unchanged 0% own transcript.gallery.ts
agent-pane.transcript/codex-turn-headers Apple System Colors unchanged 0% own transcript.gallery.ts
agent-pane.transcript/grid-settled Apple System Colors Light unchanged 0% own transcript.gallery.ts
agent-pane.transcript/grid-settled Apple System Colors unchanged 0% own transcript.gallery.ts
agent-pane.transcript/grid-rhythm-hover Apple System Colors Light changed 0.0911% own transcript.gallery.ts
agent-pane.transcript/grid-rhythm-hover Apple System Colors unchanged 0% own transcript.gallery.ts
agent-pane.transcript/activity-tone-secondary Apple System Colors Light unchanged 0% own transcript.gallery.ts
agent-pane.transcript/activity-tone-secondary Apple System Colors unchanged 0% own transcript.gallery.ts
agent-pane.transcript/activity-tone-tertiary Apple System Colors Light unchanged 0% own transcript.gallery.ts
agent-pane.transcript/activity-tone-tertiary Apple System Colors unchanged 0% own transcript.gallery.ts
agent-pane.transcript-system-rows/leo-capture Apple System Colors Light changed 0.0285% own BackgroundTurnLine.tsx
agent-pane.transcript-system-rows/leo-capture Apple System Colors changed 0.0272% own BackgroundTurnLine.tsx
agent-pane.transcript-chevron-after-label/chatgpt Apple System Colors Light changed 1.6% names TranscriptActivityRow.tsx
agent-pane.transcript-chevron-after-label/chatgpt Apple System Colors changed 1.6% names TranscriptActivityRow.tsx
agent-pane.transcript-chevron-after-label/tight Apple System Colors Light changed 1.6% names TranscriptActivityRow.tsx
agent-pane.transcript-chevron-after-label/tight Apple System Colors changed 1.6% names TranscriptActivityRow.tsx
agent-pane.transcript-chevron-after-label/spaced Apple System Colors Light changed 1.6% names TranscriptActivityRow.tsx
agent-pane.transcript-chevron-after-label/spaced Apple System Colors changed 1.6% names TranscriptActivityRow.tsx

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

Shipped in:

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 487d8b5

Visual verdict: I opened no screenshots. The new background-turns-nothing-to-open gallery play checks that the ended line draws nothing and the running line has no chevron and is not a button. Lines that have rows draw as before.

I checked the code only. The nested set from markBackgroundRows is safe: the line row is BACKGROUND_TURN, so it is not re-tagged and does not recurse. It is a known row, so keepOrdered updates it in its slot, and the snapshot is invalidated. openBackground computes hasRows for the older-page path, and the existing-line early return only happens on a duplicate started record. The ended record carries hasRows forward. The version bump keeps the BackgroundTurnRow memo and the shapedTurn source-identity cache correct. Find and turnFoldFor can only reach the rows of a hidden line when every one of them is visibly empty, so no reveal target is lost.

Follow-ups:

  • [follow-up] isVisiblyEmptyMessage returns false for every row kind except assistant and user, so any activity, plan or similar row marks hasRows. That includes rows the view may still leave out, such as a thought-only activity. Such a line can still open to nothing. Consider a "draws in this view" predicate.
  • [follow-up] keepSame's plainSame skips nested objects, so a rebuild that gives the line the same version with a different background.hasRows would keep the old object. This is not reachable with in-order replay today, and the pattern was already there.

@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Nov 3, 2026
teamleaderleo and others added 2 commits November 3, 2026 02:34
…d one that ended with nothing draws no line

A background turn whose events only update rows that are not its own (a
call an earlier turn started, a subagent's work) used to draw a closed
"Background update" line whose chevron opened to nothing. The pane now
notes when a row of the turn's own draws something (hasRows). Without
one, an ended quiet turn draws no line, and a running one is a plain
spinner line with no chevron and no button until a row comes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-81baa1463f6190d4c5dc
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 835e635

Visual verdict: unchanged by the rebase; #32867's chevron placement (right after the label, rotor class on the svg) is kept as-is, only wrapped in {chevron && ...} so a background line with nothing to open (chevron={opens}) draws none.

Checked the range-diff against the earlier SHIP at 487d8b5: the only deltas are the two conflict resolutions. In OrderedRows.set, base's artifactUpdates.note(...) still runs for the member row right after super.set, then markBackgroundRows updates the line row (a BACKGROUND_TURN row, so its own nested set takes no turn and does not recurse).

Follow-ups: none.

@teamleaderleo
teamleaderleo merged commit 5a0804a into feat-cmux-next Nov 3, 2026
157 checks passed
@teamleaderleo
teamleaderleo deleted the lane/background-update-rows branch November 3, 2026 02:42
teamleaderleo added a commit that referenced this pull request Nov 3, 2026
It opens nothing. Leo, 2026-11-03, on rows like it: "these background
updates don't really expand out to anything? idk what those are even for".
Same rule as #32798: a row shows a chevron only with something to show.

test/transcript-running-live-line.test.tsx: the new test fails on base
(1 fail), 10/10 pass here.


Agent-Session: https://cmux.com/deeplink/agent?id=aid-81baa1463f6190d4c5dc

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 3, 2026
…32726 began; lines with nothing to open (#32798) stay out of runs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 835e635a Deployed Nov 3, 2026 by teamleaderleo via wait for same-key tree publisher #103555
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

leo-named-fix An obvious fix to something Leo named: lands on push, review runs in parallel risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant