cmux NEXT: Jump to latest morphs into pulsing accent dots while the agent works
Leo pointed at Claude desktop's Code tab: its scroll-to-bottom button turns into softly pulsing dots while the model is thinking.
cmux NEXT already had Jump to latest: a glass circle that shows while you're scrolled up, with dots while working. Before this change it swapped glyphs instantly, and the dots were text-colored with an opacity-only blink. Now it matches the reference:
- Morph: the arrow and the dots share one grid cell. While the agent works, the arrow shrinks and fades out as the dots grow in, and the reverse happens when the turn ends. This uses the pane's
--agent-motion-inand--agent-ease-outtokens. - Accent dots: the dots use
var(--agent-accent), with no literal colors. - Pulse: each dot runs a staggered opacity and scale wave. The animation runs only while working, so hidden dots don't keep compositor work going.
- Reduce Motion: every transition and animation stays under
prefers-reduced-motion: no-preference. Reduced motion gets static dots with no morph, the same asdata-status-indicators="static". - No change to the shape: it's still a true circle (32×32, 50%), and the dots are 4×4 circles, so
agent-pane-no-capsulespasses. The tooltip is unchanged: it's an icon-only button and its label is localized in all 21 locales already, so no new strings.
Click behavior is unchanged: it scrolls to the latest row.
Screenshots
Gallery entries jump-latest (arrow) and jump-latest-working (dots): see the gallery-advisory receipt below.
Tests
Local runs, with the agent-pane bundle built: agent-pane-no-capsules, tooltip-rules, theme-colors, agent-pane-styles and agent-pane-follow-live (the browser lane is skipped locally).
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Updates the cmux NEXT Jump to latest button to morph its arrow into pulsing accent dots while the agent works, matching Claude desktop's Code tab. Previously the arrow and dots swapped glyphs instantly and the dots blinked in text color; now both share one grid cell and cross-fade with a scale, and the dots take the theme accent in a staggered opacity and scale wave.
- The dots pulse only while working, so hidden dots don't keep the compositor busy.
- Reduced motion and
data-status-indicators="static"show still dots with no morph. - The working-state test fixture now renders the button with
data-workingso the dot loop is covered. - The button shape, tooltip, and click-to-scroll behavior are unchanged.