Skip to content

fix(cmux-next): stabilize new-tab motion (current base) - #21620

Closed
teamleaderleo wants to merge 1 commit into
manaflow-ai:feat-cmux-nextfrom
teamleaderleo:codex/newtab-motion-focused-20261018-v5
Closed

teamleaderleo wants to merge 1 commit into
manaflow-ai:feat-cmux-nextfrom
teamleaderleo:codex/newtab-motion-focused-20261018-v5

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

Focused new-tab motion fix on current feat-cmux-next base.

Validation: focused new-tab tests 10 passed, 31 assertions; diff-check clean.


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


Summary by cubic

Stabilizes the new-tab list motion so it no longer remeasures row geometry or replays animations when the owner rerenders with the same row keys. The motion hook now keys off a string signature, a stable list root, and the row selector, and it re-observes a replaced root.

  • Removed the explicit data-agent-motion="off" check; reduced-motion behavior now depends only on CSS variable overrides.
  • Rerenders with identical row sets now skip all geometry reads for both normal and reduced-motion paths.

Written for commit 5a07094. Summary will update on new commits.

View guided diff

@coderabbitai

coderabbitai Bot commented Oct 18, 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: 92a07227-bd1a-4e09-888d-14a90f9848cc

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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-4790z created for this PR by the cmux coordinator.

@github-actions

Copy link
Copy Markdown
Contributor

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

CI failed on 5a07094f21 (run 39128708076 attempt 1): 2 unknown.

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

Not re-run automatically: web / react-apps-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.

@github-actions

Copy link
Copy Markdown
Contributor

CI fast guards failed on 5a07094f21 (https://github.com/manaflow-ai/cmux/actions/runs/39128708076). 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

Copy link
Copy Markdown
Collaborator Author

Holding this one: it doesn't fix the workspace-switch replay Leo sees in the nightly, and it reverts hardening from merged #21476 and #21501:

  • cancelRunning / trackAnimation are gone, so finished animations are never pruned from running and nothing cancels them on unmount.
  • Both motion-off checks (isAgentMotionOff() and dataset.agentMotion === "off") are removed, so New Tab list motion ignores the host's motion-off setting.
  • The layout effect now runs on every render, with no dependency list.

The one new idea, re-checking list.current when React swaps the root node under the same keys, could land on its own on top of the current listMotion.ts. Please don't open a v6 that rebases this diff over base again.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Closing: base already skips remeasuring when the row keys are unchanged and survives the Strict Mode effect replay. This diff would also undo two base fixes: #21476 (cancelling running animations) and #21501 (releasing finished ones), plus the motion-off check. #21781 is the current listMotion change.

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