perf: resize perf paths on by default (cmux-ad m19, no switches)
Summary
cmux-ad m19 (Lawrence, 2026-11-05: "just have all perf enhancements thing on by default ... if there's a horrible regression, then i will just tell u"). The resize perf paths ship on; no switch stays off.
motion.frameOwner.terminals: on (was off). S4 ready-or-keep with fix (A) pinned.terminalDrag.holdSurface: off (was on). Terminals reflow on every drag frame (Ghostty's render-only reflow preview at the pin).browserResize.layerHosting: on (was off). Chromium pages are hosted in the window's layers (API 26 on cef.44).browserResize.syncDeadline,liveResizeDeadline,dragResizeDeadline: 0 (a pane never waits for a page, cmux-ad m18).
Each owner deletes its switch and the old path within 24 h (S4, T-DRAGS, S5).
Tests follow the new defaults (234612b35a9, from the review of 2b43d87f683): DividerDragTerminalSteadyTests (a drag gives each terminal its pane's size in every frame; the PTY still resizes once, at the landing), CEFLayerHostingTests (the wait path keeps coverage with an injected 8 ms deadline; a 0 deadline makes no fork call), CEFDeferredTabShowTests (a drag asks no page or DevTools window to hold a frame). cef-resize-sync-bench.py mode on sets 8 ms itself (with a 0 default it measured the same as on0). schemas/defaults/cmux-next.json is left to the base autofix.
Known visible risk until #35997 lands: a hosted page anchors bottom-left, so a growing pane shows a band above the page until Chromium's frame at the new size arrives. #35997 (top-left anchor, page-color gap) follows at once.
Gates (m19)
Compile, own tests, app launch. Films, A/B benches and P0 journeys run after the merge on the dogfood build and report; a bad regression gets a revert or a fix within 1 h.
Changelog
Changed: resizing panes now redraws terminals at the pane's size in every frame (no held text during a divider drag); browser pages move and clip with their pane in the same frame and never hold the frame. Pages follow the pane's size in each frame only after #35997.
Observed / Not run
- Observed at 2b43d87f683: fleet compile 6bfb5109 green (CmuxNext, app, cmux-tui); fleet build 9147ee56 green; launch smoke macOS 15.7.7 PASS, macOS 14.8.7 FAIL with a launch crash: the known base red fixed by #36290 (merged 08:47Z, after this branch's base); 234612b35a9 merges feat with that fix.
- Observed at 234612b35a9:
prepush-gate.pyno new violations;test_bench_terminal_resize.py28 tests OK. Fleet compile 91986277fd534a2a0cb18a60 green; build 551689584b8a664821cbb669 green; launch smoke macOS 14.8.7 PASS and 15.7.7 PASS (0 crashes); display run step 9cc133a0576a15976aa7f0f5 exit 0 over the 30 suites that read these defaults (list in the receipt comment). - Not run here: films, benches and the Cmd-N A/B (after merge, per m19; the Cmd-N A/B is asked of the INSTANT OWNER, builds 9147ee56 against f5798695).
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Ships the resize performance paths on by default (cmux-ad m19): motion.frameOwner.terminals and browserResize.layerHosting turn on, terminalDrag.holdSurface turns off, and the syncDeadline, liveResizeDeadline, and dragResizeDeadline drop to 0. Resizing panes now redraws terminals and browser pages at the pane's size in every frame, with no held text, and a pane never waits for a page. The switches and their old paths are deleted within 24 hours; tests and the resize benches follow the new defaults, with the wait path keeping coverage through an injected deadline.