Repository navigation
cmux-next: right-side panels slide in without lag or overflow; directional enter and exit in the agent pane - #22795
Conversation
…ame layout, no page past the screen, directional presence) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd2-9ef6-7eb1-a944-4d97704685c6&host=cosmic-gray
… and a Chromium page stays inside its screen Leo 2026-10-20: opening the chat's Browser, its Summary or a New Tab column animated slowly, lagged and drew the panel past the window's right edge. - PaneHostView holds its content at the larger of its size when the spring started and its size at rest, pinned to the edge nearer its rest, and lays it out once when the spring lands: the chat keeps its width under the opening panel, and the panel lays out at its final size and slides in with its right edge. Debug toggle motion.pane.holdContent (on). - CEFClipShape adds the square region the screen, the pane clip and the window leave visible when a page reaches past it, so a Chromium page (a child window) is cut at the screen's edge instead of drawing past the window. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd2-9ef6-7eb1-a944-4d97704685c6&host=cosmic-gray
… side panels, the bottom stack, top bars and drawers Leo 2026-10-20: things that appear come in from where they belong and leave the way they came; the Summary panel lagged and misbehaved on toggle. - ui/presence.ts: usePresence(shown, edge) keeps a closing surface mounted until its exit plays and marks it data-enter / data-presence; ui/popupSurface.css draws the motion on transitions (a reopen mid-exit reverses in place, a second open changes nothing), timed from the host's --agent-motion-in/-out, so the motion switches and ui.animationSpeed govern it. Reduce Motion keeps the fade; motion off removes it at once. - Summary card slides in from the pane's right edge and back out (inline column its own width, the chat lays out once; popover a few points). Session rail, side preview, Changes and the inspector enter from the right; quick open and the find pill drop from the top; the narrow sidebar drawer comes from the left; questions, notices, the PR dock, the agents pill and queued prompts rise out of the composer. Popups travel a few points out of their trigger by side. - Gallery: agent-pane.summary-motion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd2-9ef6-7eb1-a944-4d97704685c6&host=cosmic-gray
|
Bead |
|
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)
Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base 2e38ac1; does not block
Agents: Tour of |
…ths, Reduce Motion exempts only presence panels Review of #22795: - PaneClipView no longer autoresizes the content: layoutClip places it, and the autoresize resized held content on every spring frame before it was set back. - The new tests compare frame widths to typed CGFloat constants (an Int literal difference fails #expect even when equal). - The global Reduce Motion rule exempts [data-presence] panels only, not every [data-enter] surface and its own unrelated transitions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd2-9ef6-7eb1-a944-4d97704685c6&host=cosmic-gray
|
Found 7 test failures on Blacksmith runners: Failures
|
This comment has been minimized.
This comment has been minimized.
|
|
|
owner: 01a15c78-6428-7081-b456-fe0fcbc491fc |
|
|
|
Owned by directional-motion-78 on huge-blue · session |
…ectional-motion # Conflicts: # webviews/src/ui/popupSurface.css
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cc2-04ea-7352-837a-21905d44c199&host=huge-blue
…r test measures after the menu's entrance A queued row travelling 4 px measured as cut while the queue scrolled its focused row and Show less into whole-row view (agent-pane-queue-collapse). The folder picker's field was measured mid-entrance, 1 px off its rest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cc2-04ea-7352-837a-21905d44c199&host=huge-blue
…ectional-motion # Conflicts: # webviews/src/agent-session/acpmux/summary/SessionRail.tsx # webviews/src/agent-session/acpmux/summary/summary.css
|
codex-review: SHIP at b318d91
|
styles.css conflict: base only restyled a removed sidebar rule; kept the removal, and dropped the sidebar enter rule #22795 added (nothing renders .acpmux-sidebar). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c2b-c6e5-7540-ad96-0eb60604230e&host=huge-blue
…ts own gallery entries; the pane motion help names the content hold (#23357) suggestion-lists-float opened /gallery/frame.html without entryPath and waited in EVERY_ENTRY_PENDING for #22795, which changed it; it now loads and warms only agent-pane.composer and agent-pane.new-tab. The motion.pane.variant help said content keeps its final size; since #22795 it keeps the larger of its starting and final size until the spring lands. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cc2-04ea-7352-837a-21905d44c199&host=huge-blue Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Shipped in:
|
Leo (2026-10-20): opening anything on the right side of a chat pane (the Summary from the list icon, the in-chat Browser from the globe, a New Tab column) animated slowly, lagged and drew the panel past the window's right edge. Things that appear should come in from where they belong and leave the way they came.
What changes
Native: right-side panels
CEFClipShapeonly handed the fork rounded clips and the strip mask, so a page that a layout spring carried past the screen's edge drew past the window. That is the band beside the Summary in Leo's screenshot. Square-clipping ancestors (the screen, the pane clip) and the window now form a visible region, which is added as a clip when the page reaches past it. At rest it adds nothing.PaneHostViewholds its content at the larger of its size when the spring started and its size at rest. The content is pinned to the edge nearer its rest and laid out once when the spring lands. The chat keeps its width under an opening panel instead of reflowing on every frame, and the panel lays out at its final size and slides in with its right edge. Terminals already held their grid; now pages do too. Debug togglemotion.pane.holdContent(on).Webview: directional enter and exit
ui/presence.tsaddsusePresence(shown, edge). It keeps a closing surface mounted until its exit plays and marks it withdata-enteranddata-presence.ui/popupSurface.cssdraws the motion with transitions:--agent-motion-in/-out, so the Motion switches (cmux-next settings: the Motion switches get a home on the Appearance page (Settings base reds) #22628) andui.animationSpeedgovern it.usePresenceand plays an exit; the others animate in and close at once):agent-pane.summary-motion(open, and open then close).Popover anchoring and layout stay with the summary-panel lane; this PR only adds motion and the native clip.
Changelog
Tests
Red-then-green tests are in the first commit:
Tests/CmuxNextAppTests/PaneMotionContentHoldTests.swift: a page past the screen's edge is cut there; a shrinking pane keeps its content width until the spring lands; a pane opening on the right lays out at its rest size and rides its right edge.webviews/test/presence.test.tsx: enter, exit on transitionend, reopen mid-exit reverses the same node, motion off unmounts at once.Observed / Not run
bun test test/presence.test.tsxpasses (3 tests).test/summary-card-geometry.test.ts, gallery coverage and manifest tests, and the 44 webview test files about summary, popups, motion, rail, find, bottom stack and inspector all pass. Oxfmt and Oxlint pass on the changed files, and tsc shows no errors in them. The fullbun run checkfails only on Oxfmt in four settings files this PR does not touch (base).cmux-ci compile-check --app) passes. CI'scmux-next swift testbuilt the package and tests; its one red test,AgentPaneImageActionsTests.swift:72followed by an index-out-of-range crash, fails the same way on the unrelated cmux-next: a clicked link's tab takes the focus; closing it gives the focus back #22990 (base). Webview shards: after one rerun, the reds are only the base ones (composer+glyph, gallery coverage, Oxfmt inApp.tsx);agent-pane-stream-jitter,thread-minimap-feelandbare-pr-refspassed on the rerun.cmux-next checks: only base reds (Tier routing onCmuxNextHomeEngineTests); "Pushed commits add no violations". Capture:media-tour.Agent session: cosmic-gray
🤖 Generated with Claude Code