Skip to content

Running tray: the header's counts change in place, with no fade, in tabular digits - #32151

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/tray-counts-in-place
Nov 2, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/tray-counts-in-place

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Leo, 2026-10-31: "I hate how this keeps jolting every time there's a new subagent or command, it looks terrible."

Leo-ask: ask-063dff8f1d

The running tray's header ("Running in background · 9 subagents · 13 commands") crossfaded its whole title on every count change (Tick), and its digits were proportional, so each new subagent or command flickered the words and nudged the elapsed time after them.

  • Tick gains steadyCounts: a change in the numbers alone swaps in place with no fade; a change in the words (between turns and in a turn) still ticks. Only the tray header opts in; the other Tick users are unchanged.
  • The header title's digits are tabular, so a count ticking over moves nothing after it unless it gains a digit.

Already landed since the ask, on the same complaint: the tray starts folded so new lines don't rise in (#29794/#29885), calmer arrivals (#29792), opening the tray moves no transcript row (#30141), the header keeps the lines' text column with no 3/4 ring (#31424), and the newest row rests 56px over the composer stack (#30297).

Test: webviews/test/subagent-tray-motion.test.tsx "steady counts: a count ticking over swaps in place; new words still tick".

Agent session: agent session

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Stops the running tray's header from jolting when a subagent or command count ticks over. The title previously crossfaded on every count change and its proportional digits nudged the elapsed time; now a change in only the numbers swaps in place with no fade, while a change in the wording still ticks.

  • Tick gains a steadyCounts option that skips the fade for number-only changes; only the tray header opts in, other Tick users are unchanged.
  • The header title now uses tabular-nums, so a count gaining a digit is the only thing that moves anything after it.
  • Adds a test covering a count ticking over in place and a wording change still ticking.

Written for commit 5497cc5. Summary will update on new commits.

View guided diff Turn on auto-fix

…abular digits

Leo, 2026-10-31: "I hate how this keeps jolting every time there's a new
subagent or command". The header's title ("Running in background · 9
subagents · 13 commands") crossfaded as a whole on every count change, and its
digits were proportional, so each new subagent or command flickered the words
and nudged the elapsed time after them. A change in the numbers alone now
swaps in place (Tick steadyCounts); new words still tick. The title's digits
are tabular.

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

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 5497cc5: 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=pr32151 -f ref=lane/tray-counts-in-place -f platform=macos -f backend_mode=local

Gallery before/after for 5497cc5: 16 states rendered, 5 images differ, 1233 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 41431727265 -R manaflow-ai/cmux -n gallery-advisory-32151-5497cc512ce1d8a7bb32e7cccaf8cfd804040d08 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.background-activity/duration-columns Apple System Colors Light changed 0.404% own subagents.css
agent-pane.background-activity/duration-columns Apple System Colors changed 0.403% own subagents.css
agent-pane.background-activity/pinned-live-tail-light Apple System Colors Light unchanged 0% own subagents.css
agent-pane.background-activity/pinned-live-tail-light Apple System Colors unchanged 0% own subagents.css
agent-pane.background-activity/pinned-live-tail-dark Apple System Colors Light unchanged 0% own subagents.css
agent-pane.background-activity/pinned-live-tail-dark Apple System Colors unchanged 0% own subagents.css
agent-pane.background-activity/after-latest-message-light Apple System Colors Light unchanged 0% own subagents.css
agent-pane.background-activity/after-latest-message-light Apple System Colors unchanged 0% own subagents.css
agent-pane.background-activity/after-latest-message-dark Apple System Colors Light unchanged 0% own subagents.css
agent-pane.background-activity/after-latest-message-dark Apple System Colors unchanged 0% own subagents.css
agent-pane.background-activity/compact-pill-light Apple System Colors Light unchanged 0% own subagents.css
agent-pane.background-activity/compact-pill-light Apple System Colors unchanged 0% own subagents.css
agent-pane.background-activity/compact-pill-dark Apple System Colors Light unchanged 0% own subagents.css
agent-pane.background-activity/compact-pill-dark Apple System Colors unchanged 0% own subagents.css
agent-pane.background-activity/side-panel-light Apple System Colors Light unchanged 0% own subagents.css
agent-pane.background-activity/side-panel-light Apple System Colors unchanged 0% own subagents.css
agent-pane.subagent-retry/before Apple System Colors Light unchanged 0% own subagents.css
agent-pane.subagent-retry/before Apple System Colors unchanged 0% own subagents.css
agent-pane.subagent-retry/failed-capacity Apple System Colors Light unchanged 0% own subagents.css
agent-pane.subagent-retry/failed-capacity Apple System Colors unchanged 0% own subagents.css
agent-pane.subagent-retry/failed-link Apple System Colors Light unchanged 0% own subagents.css
agent-pane.subagent-retry/failed-link Apple System Colors unchanged 0% own subagents.css
agent-pane.subagent-retry/failed-menu-only Apple System Colors changed 0% own subagents.css
agent-pane.subagent-retry/failed-menu-only Apple System Colors Light unchanged 0% own subagents.css
agent-pane.subagent-retry/menu-open Apple System Colors Light unchanged 0% own subagents.css
agent-pane.subagent-retry/menu-open Apple System Colors unchanged 0% own subagents.css
agent-pane.subagent-retry/retrying Apple System Colors Light changed 0.0146% own subagents.css
agent-pane.subagent-retry/retrying Apple System Colors changed 0.0065% own subagents.css
agent-pane.subagent-retry/retried-out Apple System Colors Light unchanged 0% own subagents.css
agent-pane.subagent-retry/retried-out Apple System Colors unchanged 0% own subagents.css
agent-pane.subagent-retry/task-ask-parent Apple System Colors Light unchanged 0% own subagents.css
agent-pane.subagent-retry/task-ask-parent Apple System Colors unchanged 0% own subagents.css

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

Probably yours: session-info-overlay-toggle.test.ts, session-info-overlay-toggle.test.ts, session-info-overlay-toggle.test.ts and 5 more fails here but not on main's latest full suite. This PR merged before its CI finished: fix forward on main.

CI failed on 5497cc512c (run 41431727784 attempt 1): 1 code, 1 unknown.

Job Verdict Why
web / react-apps-base-check (2) code a web test failed
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • new in this PR session-info-overlay-toggle.test.ts chromium, header: the toggle is above the open overlay and a click on it closes Session Info: failed (job)
  • new in this PR session-info-overlay-toggle.test.ts chromium, tab row: the toggle is above the open overlay and a click on it closes Session Info: failed (job)
  • new in this PR session-info-overlay-toggle.test.ts webkit, header: the toggle is above the open overlay and a click on it closes Session Info: failed (job)
  • new in this PR session-info-overlay-toggle.test.ts webkit, tab row: the toggle is above the open overlay and a click on it closes Session Info: failed (job)
  • new in this PR session-info-overlay-toggle.test.ts chromium, header: Push always keeps every header tool in the native reserved strip: failed (job)
  • new in this PR session-info-overlay-toggle.test.ts chromium, tab row: Push always keeps every header tool in the native reserved strip: failed (job)
  • new in this PR session-info-overlay-toggle.test.ts webkit, header: Push always keeps every header tool in the native reserved strip: failed (job)
  • new in this PR session-info-overlay-toggle.test.ts webkit, tab row: Push always keeps every header tool in the native reserved strip: failed (job)
Matched log lines
web / react-apps-base-check (2): (fail) chromium, header: the toggle is above the open overlay and a click on it closes Session Info [11112.74ms]

Not re-run automatically: web / react-apps-base-check (2), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 18de50c to compare; do not merge until green; see lane-rules
red: web / Web status; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules
red: web / react-apps-base-check (2); it named no new red test (setup or base replay failed; see its log); do not merge until green; see lane-rules
red: web / react-apps-check; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules

Shipped in:

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 2, 2026
@blacksmith-sh

blacksmith-sh Bot commented Nov 2, 2026

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp9rl38rgw/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmpzh56on65/summary-fail.json (live):/summary-fail.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent opus-5.5 medium): SHIP at 5497cc5
Checked: the in-render setState settles (text stored, turn kept, so in-flight tick animations still settle); other Tick users don't opt in; test valid. Fast checks at the head: subagent-tray-motion + subagent-tray 54 pass, 0 fail.

@teamleaderleo
teamleaderleo merged commit 2e8ebff into feat-cmux-next Nov 2, 2026
179 of 192 checks passed
@teamleaderleo
teamleaderleo deleted the lane/tray-counts-in-place branch November 2, 2026 10:59

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 5497cc51 Deployed Nov 2, 2026 by teamleaderleo via cmux-tui tree preflight #100763
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant