Skip to content

Calm motion batch 4: sidebar edges, group chips, Page Info, icon picker, transcript fades - #20003

Merged
teamleaderleo merged 7 commits into
feat-cmux-nextfrom
fix/polish-motion-batch4
Oct 12, 2026
Merged

teamleaderleo merged 7 commits into
feat-cmux-nextfrom
fix/polish-motion-batch4

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

POLISH motion audit, batch 4 (cx-2grmt). The rule is "No bouncy or weird transforms", and Reduce Motion keeps fades (motion.md rule 7).

  • Sidebar spaces: a mouse wheel past the first or last space bounced the list out and back (a 0.3 s keyframe). The list now stays still there. Trackpad paging still follows the fingers.
  • Group chips: a new group's chip grew from 0.86. It now arrives with its row's fade only.
  • Page Info bubble and icon picker: both appeared and left in one frame. They now open and close like every native popup, through a new shared PopupFade (openPopup / closePopup).
    • A reopen during the close keeps the popup.
    • A close ends even when its owner is gone.
    • A closing popup stops taking clicks and hands key status back to the window under it as soon as the fade starts, like SidebarGroupEditor.dismiss.
    • Page Info counts a fading bubble as closed, so the omnibar button reopens it.
  • Transcript under Reduce Motion: live rows, newly streamed text and a highlighted code card appeared in one frame. They keep their opacity fade (no rise), and the pages' blanket Reduce Motion rule exempts them. The streamed-text fade uses the motion token instead of a literal 160 ms.
  • Settings and transcript scales: the settings Reset button, notes and badges, and the Jump to Latest pill, grew from 0.8 / 0.92. They now fade (the pill still rises 6 px).

These stay on the bead:

  • PaneContentView+PaintHold's blank pane after a 500 ms hold. It isn't a motion transform.
  • Four base check-motion hits: WindowMaterialView, AgentCursorLayer, HoverCardPanel, and the space slide's tokenized spring. This PR removes the four group-chip and bounce hits (12 → 8).

Testing

Red proof tmp/polish4-red-proof at 14ff310 (base plus only the test files). Green at 993d6ae. Fleet run-swift-testing-suites.sh, both on display hosts.

Red on aws-m4pro-8:

  • aWheelPastTheLastSpaceLeavesTheListStill: the list bounced.
  • aNewGroupsChipFadesInWithoutGrowing: transform.scale on the chip.
  • theBubbleOpensAndClosesWithMotion and thePickerOpensAndClosesWithMotion: no open animation, gone at once on close, and (review) still taking clicks while closing.
  • aReopenDuringTheCloseKeepsTheBubble passes there too: an instant close had nothing to race.

Green on aws-m4pro-9: all of these pass; 213 passed, 0 failed. The display-gated tests skip on display-less minis (aws-m4pro-1, -3, -4, -6), where a window with no screen applies its changes at once.

Web: test/calm-motion.test.ts (browser) loads the real stylesheets in Chromium.

  • Red: transcript fades were none under Reduce Motion; the pill and settings scales were 0.92 and 0.8.
  • Green: 3 of 3.
  • bun run check passes.

Release compile on 83ee9cd: BUILD SUCCEEDED. Only test files changed after it. Concurrency, crash-ratchet, motion, scrollbar and god-file checks show only base hits. SidebarListView is over its god-type budget on base (1022 lines); this PR shrinks it by one line.

CI react-apps-check: only agent-pane-peer-chat fails. It is a timing flake: the page took 25 s to load on the runner, so the running-turn timer read 30 s against a limit under 30 s. This PR doesn't touch the agent pane's timers.

Review subagent: one medium (a fading popup kept keys and clicks) and two lows (Page Info's key-elsewhere watcher; two fades still cut under Reduce Motion). All are fixed with red tests above.

Changelog

Changed: Page Info and the icon picker fade open and closed, sidebar space paging no longer bounces at the ends, and under Reduce Motion new transcript content fades in instead of popping.

Proof

Motion changes, recorded by the red and green tests above.

🤖 Generated with Claude Code

teamleaderleo and others added 5 commits October 12, 2026 13:49
…picker

Red for cx-2grmt batch 4: a wheel past the last space bounces the list,
a new group's chip grows from 0.86, and the Page Info bubble and the
icon picker appear and leave in one frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ot grow

Red for cx-2grmt batch 4: a live transcript row appears in one frame
under Reduce Motion, the Jump to Latest pill grows from 0.92, and the
settings Reset button, notes and badges grow from 0.8 / 0.92.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
POLISH audit batch 4 (cx-2grmt): no bouncy or weird transforms, and
Reduce Motion keeps fades.

- A mouse wheel past the first or last space leaves the list still
  (no keyframe bounce).
- A new group's chip arrives with its row's fade (no growth from 0.86).
- The Page Info bubble and the icon picker open and close like every
  native popup, through a shared PopupFade (a reopen during the close
  keeps the popup; a close ends even when its owner is gone).
- Live transcript rows fade without the rise under Reduce Motion, and
  the streaming text fade uses the motion token.
- The settings Reset button, notes and badges and the Jump to Latest
  pill fade without growing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…xt fades under Reduce Motion

Red for the review of cx-2grmt batch 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t fades under Reduce Motion

Review of cx-2grmt batch 4: PopupFade.close stops taking clicks and
hands key status back to the window under the popup when the fade
starts (like SidebarGroupEditor.dismiss), and Page Info drops its
key-elsewhere watcher on close. New streamed text and a highlighted
code card keep their opacity fade under Reduce Motion.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 7c56ae72-5377-4fdb-9bc6-e4dae188e04a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

CmuxNextDaemon also declares SidebarSection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 12, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

Without a screen Motion snaps the opening rows, so the chip's old
scale-up never showed and the test could not go red.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@blacksmith-sh

blacksmith-sh Bot commented Oct 12, 2026

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
test/agent-pane-peer-chat.test.ts/agent-pane-peer-chat.test View Logs
test/agent-pane-peer-chat.test.ts/agent-pane-peer-chat.test View Logs

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

@github-actions

Copy link
Copy Markdown
Contributor

Unclear: web / react-apps-check failed: no known signature; failed step: Test webviews.

CI failed on 993d6ae0ee (run 38308886327 attempt 1): 1 unknown.
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped.

Job Verdict Why
web / react-apps-check unknown no known signature; failed step: Test webviews

Not re-run automatically: web / react-apps-check is not a machine failure.

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.

@github-actions

Copy link
Copy Markdown
Contributor

CI fast guards failed on 993d6ae0ee (https://github.com/manaflow-ai/cmux/actions/runs/38308886327). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally. This comment is updated in place on each push.

@teamleaderleo
teamleaderleo merged commit a29fabf into feat-cmux-next Oct 12, 2026
109 of 111 checks passed
@teamleaderleo
teamleaderleo deleted the fix/polish-motion-batch4 branch October 12, 2026 21:29
@github-actions

Copy link
Copy Markdown
Contributor

Gallery

Review in feed

212 states changed: agent-pane.transcript/long-code, agent-pane.transcript/copy-last-code-block, agent-pane.edited-files-settings/defaults, agent-pane.artifact-panel/versions, agent-pane.transcript/shell-grouped-commands, ... · 2 new states · 14 broken states · 102 play checks failed

Diff page and renders (the run's gallery-pr artifact)

State Before · after
agent-pane.transcript/long-code (Apple System Colors Light, webkit)
agent-pane.transcript/copy-last-code-block (Apple System Colors Light, webkit)
agent-pane.edited-files-settings/defaults (Apple System Colors, webkit)
agent-pane.artifact-panel/versions (Apple System Colors Light, webkit)
agent-pane.transcript/shell-grouped-commands (Apple System Colors, chromium)
agent-pane.artifact-panel/closed (Apple System Colors, chromium)

206 more on the diff page.

Live preview (follows this branch; start it with scripts/gallery-live.sh up <branch> from an hq checkout):

  • agent-pane.transcript/long-code: /wt/fix-polish-motion-batch4/?entry=agent-pane.transcript#/agent-pane.transcript/long-code
  • agent-pane.transcript/copy-last-code-block: /wt/fix-polish-motion-batch4/?entry=agent-pane.transcript#/agent-pane.transcript/copy-last-code-block
  • agent-pane.edited-files-settings/defaults: /wt/fix-polish-motion-batch4/?entry=agent-pane.edited-files-settings#/agent-pane.edited-files-settings/defaults
  • agent-pane.artifact-panel/versions: /wt/fix-polish-motion-batch4/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/versions
  • agent-pane.transcript/shell-grouped-commands: /wt/fix-polish-motion-batch4/?entry=agent-pane.transcript#/agent-pane.transcript/shell-grouped-commands
  • agent-pane.artifact-panel/closed: /wt/fix-polish-motion-batch4/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/closed
  • 112 more on the diff page

Play checks failed (0 px anchor movement, 0 layout shift, no frame over 33 ms unless the entry gives a reason):

  • agent-pane.artifact-panel/versions (Apple System Colors Light, webkit): play: waitFor did not hold within 5000 ms
  • pages.home-channels/hover (Apple System Colors Light, chromium): play: waitFor did not hold within 5000 ms
  • agent-pane.dictation/hide (Apple System Colors, chromium): play: no element for menuitem "Hide Dictation Button"
  • agent-pane.diff-panel/review-file (Apple System Colors, webkit): play: waitFor did not hold within 5000 ms
  • agent-pane.dictation/hide (Apple System Colors Light, webkit): play: no element for menuitem "Hide Dictation Button"
  • agent-pane.composer/queued-long (Apple System Colors, webkit): play: waitFor did not hold within 5000 ms
  • 477 more on the diff page

495 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes.

4193 unchanged · base 0e33e31 · head 993d6ae

lawrencecchen added a commit that referenced this pull request Oct 28, 2026
…rue end

With the chat font's fractional line heights (#26523) the transcript's end is
fractional. WebKit floors a fractional scrollTop but rounds scrollHeight, so
the end as written rested 1px short (agent-pane-jump-latest-motion webkit:
fromEnd 1 after Jump to latest). settleFollowBottom now writes the end rounded
up, which the browser clamps to its own end, and skips the write once the
scroller is already there.

test(webviews): the jump test reads the last row where it lays out. A row that
arrives live rises 4px into place (cv-enter's translate, #20003). That is drawn
only and never moves layout, and the turn footer arriving as the glide lands
read as a row under the card.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant