Repository navigation
Agent pane: a line joining the running tray enters like a transcript row - #29092
Conversation
…ript row Leo, 2026-10-27: "plus the bottom running situation still not animating correctly". The tray card already entered on cv-enter (#25719), but a line joining its open list still rose on the popup ui-enter (8px on --ui-enter-duration/--ui-enter-ease) through its data-enter. It now runs cv-enter on --agent-motion-in and --agent-ease-out (cv-enter-fade under Reduce Motion), and the gallery's other arms carry a matching line entrance. A browser-lane test reads all three from the real stylesheets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Shipped in:
|
|
Found 3 test failures on Blacksmith runners: Failures
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, on the running tray above the composer:
What was still different
#25719 put the tray card on a live transcript row's entrance:
cv-enter, a fade and a 4px rise on--agent-motion-inand--agent-ease-out. #27355 eased its exit out. A line that joins the open list (a second or third subagent or command starting) still rose on the popup'sui-enter, through itsdata-enter="bottom"(ui/popupSurface.css). That is a different motion: 8px of travel, 1.25x the duration (150ms instead of 120ms) and its own curve,cubic-bezier(0.2, 0, 0, 1). So in one tray the card arrived one way and its lines another. Design foundations §6 lists this as an open violation, "Running tray matches the rest".What changed
subagents/subagents.css: a line arriving in the list now runs the card's own entrance, through a new--acpmux-tray-line-entertoken:cv-enteron--agent-motion-inand--agent-ease-out. Under Reduce Motion it usescv-enter-fade, as a transcript row does. Thedata-enterattribute stays, becauseSubagentTray.tsxlistens for the line'sanimationendthrough it and the leaving copy intrayMotion.tsxholds it where it is drawn.gallery/fixtures/trayMotionArms.css: the gallery's other two arms (tight fade, slight spring) now give the line the same entrance as their card. All three arms stay comparable in Compare arms. The shipped arm is stillmessage, the transcript's own.SubagentTrayMotion.gallery.tsx: a newline-joinsvariant. Two subagents run with the list open, a third starts, and its line rises in. That makes four variants:enter-exit,start-empty,line-joinsandtwo-running.test/subagent-tray-line-motion.test.ts(browser lane, Chromium, real stylesheets) checks three things:animation-name, duration and timing function;ui-enter;cv-enter-fade.Not changed, deliberately: the tray's running lines keep the shared running wave on their icon, and a live command keeps the spinner. On 2026-10-28 Leo said of this tray: "I NEVER SAID TO PUT THE SPINNER HERE". The agent working-state rule covers the sidebar, tab and status mark only, and nobody named the wave. #27672's flush card, the tray layout PRs (#28133, #28533, #28587) and the fold default (#27930) are not touched.
Spec: leo-workspace
design/foundations.md§1 (OPEN motion) and §6 ("Running tray matches the rest") get updated in their own leo-workspace PR, linked below.Evidence
cmux-ci(Linux, Blacksmith 32 vCPU):bun test test/subagent-tray-line-motion.test.ts test/subagent-tray-motion.test.tsx test/calm-motion.test.ts test/subagent-tray.test.tsxgave 54 pass, 0 fail, including the 3 new tests (run).tsc --noEmitreports onlytest/latency/probe.ts(115,60) interactionId. That file isn't touched here, and the error is on base too.Review
Independent review (Codex gpt-6-astra, high, through router-review): SHIP at b1f9249, no follow-ups.
Risk
Low. This is a CSS-only motion change to one element: an arriving tray line. Its timing goes from 150ms to 120ms and its travel from 8px to 4px. No new timer, observer or animation loop. Arrivals are still marked only when motion is allowed (
SubagentTray.tsx), and the leaving copy still stops every animation inside it.Before / after
Gallery
agent-pane.subagent-tray-motion/two-running: press Start subagent, then freeze the third line ("Review the diff") 40ms into its entrance. Rendered in Linux Chromium with synthetic data; the CSS is base's for before and this head's for after.0acabeca)What the arriving line computes, read live in that gallery:
ui-entercubic-bezier(0.2, 0, 0, 1)cv-enter(a transcript row's)cubic-bezier(0, 0, 0.58, 1)Settled, the tray looks the same as before: this changes how a line arrives, not where anything sits. I viewed the after images (dark and light). The line is still mid-entrance at 40ms, the spinner and wave are as before, and the rows, columns, chevrons and header are unchanged.
Gallery: agent-pane.subagent-tray-motion/line-joins, agent-pane.subagent-tray-motion/two-running, agent-pane.subagent-tray-motion/enter-exit
Agent session: agent session