Skip to content

cmux NEXT: the New Tab page keeps up with a resize, and animations share one short scale - #23092

Merged
teamleaderleo merged 17 commits into
feat-cmux-nextfrom
cmux/newtab-resize-anim
Oct 21, 2026
Merged

teamleaderleo merged 17 commits into
feat-cmux-nextfrom
cmux/newtab-resize-anim

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

When the window or a pane resizes, the New Tab page now lays itself out in the same frame with CSS alone, and doesn't jump. Every animation duration in the app and its webviews now comes from one short scale in one token file, and nothing runs past 240 ms.

Before / after

Recorded on a fleet mini (debug.window_record, 1400x800, 60 fps, clean app state, New Tab "Threads" template). Each take has a 6 s live resize (1400x800 → 760x420 → back, 1.5 s each way), then a split, a pane close and a popup.

No capture: the native change is animation timing (fade durations and springs), which light and dark stills can't show. The two videos above are the capture: real fleet recordings of the app at base and head.

Live resize Before After
Composer jump 128→72 px in one frame shrinking past ~500 px tall, 72→129 px growing back none; largest step 5 px
Frames recorded during the resize 114 (31 fps) 153 (42 fps)
Holds ≥ 50 ms (ffmpeg freezedetect) 31, longest 0.37 s 3, longest 0.35 s
Frames where the page trails its pane by > 4 px 66% 44%

The jump showed in every take. The fps and hold numbers are rougher: the mini was busier during the before take, and other before takes ran 31–50 fps. The default Cards template has its own 8vh padding and never jumped. Threads and Console use the page's base padding, which did.

Animation (timed from the moving pane edge) Before After
Split (Cmd-D), settled 333 ms (half travel at 99 ms) 283 ms (83 ms)
Pane close, settled 400 ms (half travel at 117 ms) 300 ms (83 ms)

New Tab resize

  • The field sizes itself with CSS. It uses field-sizing: content. Before, a JS fit wrote height: 0, read scrollHeight and wrote it back from a ResizeObserver, forcing two sync layouts on every resize tick. That fit now runs only in an engine without field-sizing. In WebKit, a draft taller than the field's cap stays scrolled where it was, so a draft change with the caret at the end scrolls the caret into view. A resize runs no script.
  • The top padding is one continuous curve in the pane's height. Before, @media (max-height:480px) dropped it from 67 px to 12 px, so the composer jumped 55 px when a resize crossed 480 px tall.
  • listMotion no longer reads rows during a resize. It drives chat cards, open tabs and recently closed. Before, its ResizeObserver read every row's rect and transform on every frame of a resize. Now it marks the places stale and reads them once, after the size has held still for 120 ms. A list change that lands mid-resize takes its places at once. A row arriving resizes the list itself; the observer recognises that size as the one it just measured, so the next change right after still animates.

Motion scale

schemas/motion-scale/motion-scale.json is the one token file. scripts/cmux-next/gen-motion-scale.py writes the Swift MotionScale, the CSS --cmux-motion-* block in desktop.css and the TypeScript MOTION_MS from it. CI ("Motion scale") and the webviews check run the generator with --check.

Step ms For
quick 80 hover and pressed fills, focus rings, anything leaving
micro 120 small things arriving: a fade in, a popup opening, a chip, a tooltip
standard 180 structural changes: a row or card moving, a fold opening, a scrim
large 240 the largest moves, and the ceiling: split, zoom, window close

Anything entering eases out (cubic-bezier(0, 0, 0.58, 1)). Each off-scale duration moved to the nearest step that isn't longer. Every spring now ends visibly, within 0.5% of its travel, by 240 ms. None of these blocks input: they are all transforms and fades on views that already take events.

Spring Response before → after Visibly done before → after
split 0.28 → 0.23 287 → 235 ms
zoom 0.30 → 0.2 354 → 235 ms
window exit 0.24 → 0.2 283 → 235 ms
popover open / close 0.25 / 0.16 → 0.24 / 0.15 248 / 188 → 238 / 177 ms
hover card (panel) 0.18 → 0.165 194 → 177 ms
tab strip scroll, screen switch 0.22 → 0.2 190 → 173 ms
sidebar pin drag 0.351 → 0.215 → 238 ms (about 1.6 pt overshoot on 200 pt)
Fade (Swift MotionTunables.fades, webview MOTION_FADES) Before After
pane focus ring, crossfade / Reduce Motion cap 100 ms 80 ms
pane dim 150 ms 120 ms
theme switch 160 ms 120 ms
New Tab move / leave fallbacks (--agent-motion-move, --agent-motion-out) 190 / 160 ms 180 / 80 ms

About 35 webview files moved their literals onto MOTION_MS or --cmux-motion-*, along with the Swift fades and springs. Two scanners fail on any new off-scale duration: webviews/test/motion-scale.test.ts and MotionScaleTests for Swift. Loops (spinners, breathing), hover-intent delays and hold timers like FOLD_SETTLE_MS aren't transitions. They are exempt by name or a motion-allow: comment.

Tests

  • webviews/test/new-tab-live-resize.test.ts (Chromium) sweeps the New Tab page from 1100x760 to 480x400 and back, one size per frame. It fails on a composer jump, an inline field height, a frame over budget or a ResizeObserver call over budget.
  • webviews/test/new-tab-list-motion-render.test.tsx: a live resize reads no list row on its frames, then reads once when the size settles. The list's own size change from a row arriving leaves the next change animated.
  • MotionScaleTests checks that every spring ends by the ceiling and every fade is a step. PaneCloseMotionTests and SplitSpringMotionTests now use the 0.23 split spring.

Regression (red on base, green on head):

cd webviews && bun test test/new-tab-list-motion-render.test.tsx

At 7b6aebb (the test alone, before the fix): a live resize reads no row on its frames fails, reading every row on every frame ([1,1,1] expected, [32,32,32] received). It passes at the head.

Observed / Not run

  • Observed: the macOS app compiles (cmux-ci compile-check --app) at the head, 579be71. The Swift suites MotionScale, SubtlePaneDim, MotionCategoryPolicy, PopupGrowMotion, BlinkRateCap, SplitSpringMotion, PaneCloseMotion, PaneZoomMotion, AgentCursorGlassDart and AgentCursorIdleHide pass on the fleet at 0110ef5. new-tab-live-resize passes on the fleet. In the base live-resize run, the field had an inline height in 8/8 cases and the card jumped 55.8 px at 480 px; Chromium p95 frame time was 16.7 ms.
  • Observed: the full webview suite on the fleet at 213b8d4 (scripts/ci/run-webviews-tests.sh): 638 files pass, 19 fail. 17 of the 19 fail the same way on the base tree, run the same way. gallery-coverage is red on base CI. coderouter-row-heights is a Chromium test, and that fleet host can't launch Chromium (the base-tree run failed the other Chromium files the same way). Three files that fail on the base tree pass at the head, including new-tab-list-motion-render.
  • Not run: the command palette open/close, which debug.window_record leaves out of its frames on this build. The recording uses the notifications popup, which runs on the same popover springs. Its whole-frame timing (217 → 200 ms close) is too coarse to show the change.
  • Reds also red on base: generated files (actions.md and action-surfaces.json are stale from base's new actions; this diff touches no action source) and the crash-safety rule super.viewDidHide in BrowserToolbarButtonsView.swift. The webview files agent-pane-ctrl-b-background, agent-pane-peer-chat, agent-pane-queue-steer, agent-pane-working-counts, composer-history, composer-location-strip, composer-mention, composer-suggested-prompt, composer-type-scale, quiet-access-chip, gallery-coverage (SubagentPaneFooter) and diff-toolbar-narrow (flaky) fail the same way on base runs 39562296032 and 39562160925.
  • Also red on base at e759ff8: the perf counter gate (the split/close pair's 3 workspace applies and topology sends against a budget of 2, pane_snapshots on relaunch, and the source guard in files this diff doesn't touch; the same 7 failures on unrelated dispatch runs 39583820666, 39583574839 and 39583117238) and agent-pane-scrollbar-full-height's grow-and-shrink tests (the same 20 px on base push run 39587124745). pane-english and home-quote-selection / home-composer-menu failed on base commits that later base commits fixed (webviews: the run board's attach and replay strings come from the pane's string table (base pane-english red) #23301, webviews: the composer's caret plugin keeps its own window, so teardown never throws (base red) #23298). agent-pane-math's first lazy-KaTeX case failed once, and it passed on this PR's earlier heads.
  • Also red on base d5cbf1f at the head: check:browser-lanes flags base's own gallery-agent-pane-entries.test.ts (later base commits move it to galleryFrame), the keyboard shortcuts docs freshness test (this diff touches no shortcut or catalog), and harness-health-notice#dismissed's 0.0019 layout shift. The notice moved Not Now and its words when its phase changed; its restart-after-turn variant fails 3/3 at d5cbf1f with no motion involved, and fix(cmux-next): the agent update notice's Not Now and words hold still #23335 fixed it on base.
  • Also red on base 0b1a93e: defaults-snapshot's menu-row check flags an inline row in FileExplorerSectionView.swift from base's 56d4485; this diff doesn't touch that file.

Follow-ups

  • The color-change setting's own duration is still 200 ms.
  • The focus-move flash (focusFlash, from base) stays at its tested 0.5 s, listed as an ambient fade like the Settings highlight: it is a signal that fades out, and nothing waits on it.
  • The duration tables in plans/cmux-next/motion.md and the split spring's DESIGN.md still show the old values. The scale file is the source.
  • The glideMax debug slider's range still goes past the ceiling.
  • RevealedMarkdown.tsx's comment says --agent-motion-in is 180 ms "at the default speed"; the default speed is fast, which gives 120 ms.
  • The parity dev page falls back to the old literals when the scale CSS is missing.
  • diff-toolbar-narrow is flaky on base.
  • Base's new popup presence (popupSurface.css) scales the enter and leave durations by 1.25 (150 / 100 ms), off the scale; the scanner doesn't read calc().
  • thread-minimap-feel.test.ts's comment still says "46 px of 137 at 200 ms"; with the 180 ms shift it is 51 px.

Changelog

  • Changed: The New Tab page keeps up with a live window or pane resize without jumping, and animations across the app are shorter and consistent.

Agent session: cosmic-gray

🤖 Generated with Claude Code

teamleaderleo and others added 3 commits October 20, 2026 23:48
A live window resize calls the New Tab lists' ResizeObserver every frame,
and listMotion read every row's place there (a forced layout per frame).
This pins that the rows are read once, after the size holds still.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
- The field sizes itself (field-sizing: content); the JS fit and its
  ResizeObserver run only in an engine without field-sizing.
- The top padding is one continuous curve in the pane's height, so the
  composer no longer jumps 55px when a resize crosses 480px tall.
- listMotion's ResizeObserver reads no row on a live resize's frames; the
  places are read once the size holds still for 120ms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
… read

schemas/motion-scale/motion-scale.json holds the scale (quick 80ms, micro
120ms, standard 180ms, large 240ms, ease-out on enter).
scripts/cmux-next/gen-motion-scale.py writes its Swift (MotionScale),
CSS (--cmux-motion-*) and TypeScript (MOTION_MS) copies; CI and the
webviews check run it with --check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by projects-a4 on cosmic-gray · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by projects-a4 on cosmic-gray · session

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 579be71: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr23092 -f ref=cmux/newtab-resize-anim -f platform=macos -f backend_mode=local

Gallery before/after for 579be71: 16 states rendered, 3 images differ, 1414 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 39610267404 -R manaflow-ai/cmux -n gallery-advisory-23092-579be71e66ca490bc8bbbb306c0295aacbdf76d7 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.add-project-panel/environment Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/environment Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/sources Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/sources Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/directory Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/directory Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/closed Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/closed Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/open Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/open Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/toolbar Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/toolbar Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/commit-form Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/commit-form Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/include-new Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/include-new Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/busy Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/busy Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/push-refused Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/push-refused Apple System Colors unchanged 0% own styles.css
agent-pane.changes-options-menu/closed Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-options-menu/closed Apple System Colors unchanged 0% own styles.css
agent-pane.changes-options-menu/open Apple System Colors changed 0% own styles.css
agent-pane.changes-options-menu/open Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-options-menu/keyboard Apple System Colors Light changed 0% own styles.css
agent-pane.changes-options-menu/keyboard Apple System Colors changed 0% own styles.css

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

Yours to fix: docs-shortcuts.test.ts (this PR changes the web test runner (.github/workflows/ci-web.yml)).

CI failed on 579be71e66 (run 39610267801 attempt 1): 1 code, 1 unknown.
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped.

Job Verdict Why
web / diff-sidecar-check unknown no known signature; failed step: Test Rust sidecar
web / Web tests (1/4) code a web test failed

Failures:

  • yours docs-shortcuts.test.ts keyboard shortcuts docs > the web/data copy is fresh against the catalog export and string catalogs: failed (job)
Matched log lines
web / Web tests (1/4): (fail) keyboard shortcuts docs > the web/data copy is fresh against the catalog export and string catalogs [14.95ms]

Not re-run automatically: web / diff-sidecar-check, web / Web tests (1/4) 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.

red: web / Web status; no finished base run on e323f77 to compare; do not merge until green; see lane-rules
red: web / Web tests (1/4); no finished base run on e323f77 to compare; do not merge until green; see lane-rules
red: web / diff-sidecar-check; no finished base run on e323f77 to compare; do not merge until green; see lane-rules

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

Tour of 579be71e66 (run): no media. The tour job failed before the tour ran (build or setup); the run log has the output.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-9gwz9 created for this PR by the cmux coordinator.

@blacksmith-sh

blacksmith-sh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp4n94cgnd/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpe0vk_11y/summary-missing.json (live):/summary-missing.json (live): View Logs

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

Every fade, spring and CSS transition now reads the shared motion scale
(schemas/motion-scale/motion-scale.json) instead of its own literal:
MotionTunables fades and springs on the Swift side, the host CSS tokens,
page literals, Tailwind classes and JS motion constants on the webview side.
Springs are critically damped and at rest within the standard step.
A static scan (webviews/test/motion-scale.test.ts) fails on any new
off-scale duration; MotionScaleTests pins the Swift side.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next crash-class rules / cmux-next crash-class rules is red on 14 of 15 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

teamleaderleo and others added 4 commits October 21, 2026 00:28
Sweeps the New Tab page's iframe from 1100x760 to 480x400 and back, one
size per frame, and fails on a composer jump, an inline field height, a
missed frame budget or ResizeObserver work per frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
At response 0.23 s the close is about 0.41 of its travel at 50 ms (it was
0.32 at 0.28 s), so the early-progress window moves to 0.3..0.55.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
WebKit sizes the field with field-sizing but leaves a draft past the cap
scrolled where it was, so typing at the end hid the caret
(composer-draft-wrap "webkit: the New Tab field ... grows to its cap").
On a draft change with the caret at the end, scroll it into view; a
resize still runs no script.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
…ab-resize-anim

# Conflicts:
#	webviews/src/agent-session/acpmux/conversation/ThoughtRow.tsx
#	webviews/src/agent-session/acpmux/conversation/conversation.css
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

teamleaderleo and others added 5 commits October 21, 2026 00:47
SHIFT_MS moved from 200 to the scale's standard 180ms, so the fastest
frame of the glide is ~40.8px, just over the old 40px bound. 48px still
fails a one-frame jump (~150px).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
…ld timer

check:motion-scale was in webviews' `bun run check` but not in ci-web's
warn-mode loop (test_cmux_next_checks_workflow). foldAnchor's
FOLD_SETTLE_MS (from #23093) is a hold timer after a fold, not a
transition, so the motion-scale scan allows it by name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
- listMotion: a row arriving resizes the list itself; the observer then
  reports the size the effect just read. That no longer marks the places
  stale, so a second change right after (two tabs closed in a row) still
  animates. Test: "the list's own size change from a row arriving leaves
  the next change animated".
- motion-scale test: compare MOTION_MS as entries (TS2769 on the readonly
  literal type in `bun run typecheck`).
- RevealedMarkdown: the fresh span outlives the 180ms default-speed fade
  (standard step), so a reveal's tail no longer pops.
- Reduce Motion crossfade in the webviews follows Swift's (quick, 80ms).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
Base removed the session rail's CSS (the Inspector replaced it); took base's side.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
Keeps base's new focus-move flash at its tested 0.5 s and lists it as an
ambient fade in MotionScaleTests: it is a signal that fades out, nothing
waits on it. ci-web.yml and package.json keep both check:catalog-keys and
check:motion-scale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

…ber] pairs

Object.entries(MOTION_MS) is typed with the literal step values, so toEqual
refused the JSON's plain numbers (TS2769 in the webviews type check).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

From scroll-jitter-2 (the flakes lane, cmux16): base feat-cmux-next has minimap flakes in files this PR touches.

  • thread-minimap-feel: 3 of 16 base runs that ran the webview shards (2026-10-21). The cases: "hovering magnifies at once and opens the card 250 ms after the pointer reaches the rail", "older turns that load above the reader leave the band where it was on screen", and "the band of lit rows follows the scroll on the scroll's own frame".
  • hover-intent-cards: 2 of 16, "the minimap's turn preview waits its delay, then follows the pointer at once until the rail cools".

This PR changes the motion durations and bounds in thread-minimap-feel and thread-minimap-motion, so I won't touch those files while it is open. If you are fixing these flakes here, say so and I'll leave them. Otherwise I'll fix them after this PR lands, in a separate PR that makes the tests wait on the real condition and loosens no bound.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next fast gates / fast gates is red on 12 of 18 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

@newtab-resize-anim, from scroll-jitter-2: one red on this PR (head e0ce09f) looks like this PR's own.

The other reds here are base: the browser-lanes guard on gallery-agent-pane-entries:81/:90 (#23325), agent-pane-scrollbar-full-height (#23257), and the keyboard-shortcuts docs freshness check (stale generated exports, with land-and-ci). Once this PR lands I'll fix the thread-minimap-feel flakes on top of the new 48 px bound.

teamleaderleo and others added 2 commits October 21, 2026 05:54
…ab-resize-anim

# Conflicts:
#	webviews/package.json
…ase's new ratchets

check:fixed-waits (#23365) and check-frame-reads joined the base's web lint after
this branch's tests were written; each wait and the sweep's frame read says why.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d26-7362-7a82-8d75-ed7d25069378&host=cosmic-gray
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next guards / defaults-snapshot is red on 18 of 21 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

…ab-resize-anim

# Conflicts:
#	webviews/src/agent-session/acpmux/newtab/screen.css
#	webviews/test/thread-minimap-feel.test.ts
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent, correctness first): SHIP at 579be71

  • The PR's content was reviewed SHIP at e0ce09f. Each change since then got its own review, and each said SHIP: the base merge a7acd7b, the lint marker commit aabe378 (fixed-wait and raf-read markers for base's new ratchets), and the base merge 579be71 (took base's thread-minimap-feel test from webviews tests: thread-minimap-feel measures the minimap, not the runner's frame rate #23424 and base's removal of .nt-mode).
  • The macOS app compiles at 579be71 (cmux-ci compile-check --app).
  • Every red at this head is also red on base or a flake:
    • The keyboard shortcuts docs freshness test and the release docs sitemap (HTTP 503).
    • defaults-snapshot's menu-row check, which flags FileExplorerSectionView.swift from base's 56d4485.
    • diff-sidecar-check's cancelling_rpc_terminates_its_process_group, in Rust that this diff doesn't touch.
    • gallery health's transcript#codex-turn-run-open waitFor timeout. Base pushes 39624321206 and 39623439088 fail gallery health with the same waitFor timeout on other states; I've requested a rerun.
  • The Mac jobs are still pending.

@teamleaderleo
teamleaderleo merged commit 57021ac into feat-cmux-next Oct 21, 2026
@teamleaderleo
teamleaderleo deleted the cmux/newtab-resize-anim branch October 21, 2026 15:40
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…23529)

#23092 has landed, so the file leaves FRAME_READS_PENDING: its per-frame
sampler runs on window.cmuxAfterPaint and the reduce-motion click reads
after two window.cmuxPaintFrame waits, not in a frame callback.
Green 5/5 in WebKit at the tip before and after.


Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-f5e3-77e3-a3e6-159012f35d5f&host=cmux16

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

teamleaderleo added a commit that referenced this pull request Oct 22, 2026
…22674's squash)

Three-way merge with newtab-minimal's tip (df72676) as the base. Base wins
for the Search | Ask switch's removal (#22816), resize and the shared
animation scale (#23092), liquid glass (#23477) and #23742; the edit mode
sits on top of base's page.

- AgentPageProvider: base's method list plus newTab.editWidgets.
- AppFeature: base's layout category plus appStore.show's init?(argument:).
- NewTabWidgetSettings: the ordered ids without modeSwitch.
- SettingsSchema+AgentPolicy: base's list plus tabs.newTabWidgets.order.
- App.tsx: base's allChats prop plus onEditWidgets.
- NewTabScreen.tsx: base's page (environmentPanel, no data-mode) wrapped in
  the edit-mode ContextMenu, WidgetFrame slots and stageRuns.
- screen.css: base's file plus the edit-mode rules, without .nt-mode-quiet.
- Both Localizable.xcstrings: base's file plus the order and edit-mode keys
  this PR adds (21 locales each).
- Tests and comments no longer name the removed switch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bdd-a3a7-70f3-960d-db7379df3d8d&host=huge-blue

This branch was previously deployed

2 inactive deployments
artifacts — 579be71e Deployed Oct 21, 2026 by teamleaderleo
sentry-dsyms — 579be71e Deployed Oct 21, 2026 by teamleaderleo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant