refactor(tabs): delete motion.frameOwner.tabStrip; the strip always follows its pane in a key resize (FRAME OWNER S1)
Summary
FRAME OWNER REFACTOR stage S1, the switch deletion. S1 (#33874, squash 4f9f9599cf47) landed behind the Debug switch motion.frameOwner.tabStrip, default on, after its OFF/ON films (GREEN), typing-load-l6 (PASS), the GUI proof and the off/on bench. The rule for a stage: when its films pass and the first FEAT DOGFOOD BUILD with it passes its gate, the switch and the old path go. Gate: JUDGED 78d37f8b (feat 441ea22515e0, contains 4f9f9599cf47): 10/10 P0 journeys pass, failing: none (STATUS 10029).
This PR changes no behavior with the default on.
Removed:
DesignTunables.frameOwnerTabStrip(Debug Settingsmotion.frameOwner.tabStrip) and its entry inframeOwnerTunables. The film fixturemotion.frameOwner.tabOutlinestays (DEBUG and bench builds) while the refactor's films run.PaneHostView: a key-resize hold always takes the content'sPaneMotionHoldingarea. The whole-view hold incontentFrame(in:)stays: content with no such area, a browser in its band and a chat whose tools share the tab row still use it (S5/S6 own that exception).TabStripView.layout: a viewport change always lays the tabs out at once (relayout(animated: false, keepsClosing: true)); the branch that started aTabStripMovefor a width change while a close was in flight is gone.- The stale comment that named "the strip's move start" as a reader (that reader went before the S1 merge).
Tests:
- Deleted the OFF pins:
PaneContentAreaHoldTests.withTheSwitchOffTheWholePaneContentHoldsand thefalsecase ofKeyboardResizeOneGridReportTests.aCloseDuringASecondPressSendsEachTerminalOnlyItsFinalGrid(one case now: the area hold). TabStripFollowsPaneTickTests.withFrameOwnerSwitchis gone. Its callers (TabStripFollowsPaneTickTests,PaneContentAreaHoldTests,PaneTabRowHoldLatchTests) run with no switch setup, so they prove the S1 path is the only path.TabStripFollowsPaneTickBenchkeeps an on-only run (keyResizeFrameTime); the off/on numbers stay in its doc (step321ba04adf2ae8d6f0a0ddd9).- No new test: nothing changes with the default on.
schemas/defaults/cmux-next.json is not edited by hand: the base autofix regenerates it. The defaults guard flags the removed default; it needs the review receipt on the head.
Coordination: #34170 (S3, frame-owner-s3b) reads the switch through LayoutViewContext.followsTabStrip. Whoever lands second deletes that reader (STATUS 9978, 10046).
Testing
Green at the head 868c541c0aa994933f4de38ddd7a3fe6d22ede5a:
cmux-ci run --class light --script scripts/ci/package-test-lane.sh --arg=suite --arg=Packages/macOS/CmuxNext --arg=TabStripFollowsPaneTickTests,PaneContentAreaHoldTests,PaneTabRowHoldLatchTests,KeyboardResizeOneGridReportTests,PaneHeldContentLandingTests,KeyboardResizeContentHoldTests,KeyboardResizeHoldLifetimeTests,TabSelectionKeepsTabWidthsTests --env CMUX_CI_XCODE_APP=/Applications/Xcode_26.6.app --ref 868c541c0aa994933f4de38ddd7a3fe6d22ede5a
- step
55b80b6b1e8222f606085382(aws-m4pro-1): 8 of 8 suites passed. - GUI step at the head (
--display --label gui-session-v1, display worker cmux8s-Mac-mini): stepfab9fb840fd77a302adfebd4passed 7 of 7 (TabStripFollowsPaneTickTests, PaneContentAreaHoldTests, TabCloseWidthChangeTests, KeyboardResizeContentHoldTests, KeyboardResizeHoldLifetimeTests, KeyboardResizeOneGridReportTests, PaneTabRowHoldLatchTests).
Review: Codex (gpt-6.1-sol, no tools, code pack): Review (codex): SHIP at 868c541c0aa994933f4de38ddd7a3fe6d22ede5a (comment 6613899619). Non-green checks are base findings (comment 6614627945).
Observed / Not run
- Observed: the fleet steps above;
scripts/cmux-next/check-motion.sh: ok;prepush-gate.py: no new violations, no architecture count rises. - Not run: no new film. The deleted path is the OFF path, which the default never runs; the films and the P0 gate ran the ON path, which this PR keeps unchanged.
Changelog
none
Proof
No capture: no visual change (the switch and its default-off path go; the default-on path is unchanged).