cmux-next settings: the Motion switches get a home on the Appearance page (Settings base reds)
Summary
The Motion switches (ui.animations.enabled and the ten per-area switches, group settings.group.motion) never showed on the Settings page: SettingsPageLayout never placed their group, so the page dropped all eleven rows. They now sit in Appearance, right after Density and Motion. @lawrencecchen, this is your Motion feature; please check the placement.
That missing group, plus the rows the last schema regeneration exported, turned four web / react-apps-check tests red on the base (push 3cc9733dfc, run 39503278983):
categories.test.ts"every page row has exactly one home": the 11 Motion rows had no home. Fixed by the layout change.editors.test.tsx"every schema row renders the editor for its kind": the density card drawsappearance.densityand the custom density keys itself (SectionView hides those rows), andbrowser.siteEnginesis astring_map, which the page has no editor for, so it drew a title with no control. SectionView and search now leavestring_maprows out, as they already did forappearance.themeEdits, and the test knows about the density card.settings-scroll.test.ts(WebKit, Appearance top to bottom): WebKit moves about 110px per 120px wheel step and 80 steps stopped short of the longer page. The cap is now 200; the loop still stops at the end.settings-open-frames.test.ts(cold open): see Testing.
The page-layout and webview commits are Leo's from #22543 (d1973b0886, 013985639a, 86081a806b), cherry-picked on their own because #22543 also carries workflow and guard changes and conflicts with the base.
A new Swift test, SettingsPageLayoutHomeTests, fails when a row the page shows has no home or two in SettingsPageLayout, so this is caught where the schema changes instead of only in the web check after the Mac export.
The settings exports (schemas/settings/settings-schema.json, its source stamp, docs/mdm) are regenerated on a Mac by the PR autofix, the established path for them.
Testing
Run from webviews/:
bun test src/pages/settings/categories.test.ts: red on the base (every page row has exactly one home), green on the head with the Motion group in the exported page layout (simulated locally until the autofix regenerates the export).bun test src/pages/settings/editors.test.tsx: red on the base, 20/20 on the head.CMUX_BROWSER_TESTS=1 bun test test/settings-scroll.test.ts: red on the base (WebKit "Expected: 9461, Received: 9275").
Observed / Not run
- Observed: the two
bun testresults above, and settings-scroll red on the base. - Not run locally:
settings-scrollandsettings-open-frameson the head. This Linux host's bun is 1.3.14 (CI pins 1.4.2), andwarmDevServertimes out here before either test starts. They run in this PR'sweb / react-apps-check. - Not run:
SettingsPageLayoutHomeTests. The fleet suite step failed before the tests ran (the cmux-tui build stopped on aCargo.lock --lockederror, then the step was cancelled). The PR's Swift lanes run it.
Changelog
Fixed: Settings > Appearance shows the Motion switches (motion on or off, and each area's animations)
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Fixes the Motion switches never appearing on the Settings page: SettingsPageLayout never placed settings.group.motion, so all eleven rows were dropped. They now sit in Appearance after the Density & Motion group, and a new Swift test catches any future row without a home at schema time.
SectionViewand search leavestring_maprows out (likebrowser.siteEngines, edited incmux.json), matching howappearance.themeEditswas already handled.- Bumps the WebKit scroll test cap from 80 to 200 steps so Appearance's now longer page is reached; the loop still stops at the end.
- A cold Settings open now draws its first category whole instead of 24 rows first, so the page no longer grows after the first frame.