Repository navigation
feat(settings): fold each page's rarely changed rows under More settings and Experimental - #3096
Conversation
…ngs and Experimental Each Settings page shows first what people change and folds the rest under More settings and Experimental (SettingsFold, a native details) at its end; the folded line counts the settings in it this device changed. Settings' search shows folded rows as if unfolded, and a link or the palette naming a group inside opens the fold (new groups typography-more, composer-more, file-viewer-more, chat-experimental, ...). The first view is 40 rows across the pages, Shortcuts aside, down from 88. Nothing is removed. Open files and Web links stack on a phone.
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 19 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
…ge in sight Review of #3096: the Also send to group stays in the Alerts page's first view, where its last failed post is said, and the bridge switch's refusal is drawn beside the switch in its fold (and in a search).
Review (omo + Codex Terra xhigh) and resolutionsomo: CLEAR at 09ebeb0. Codex: no HIGH; two MEDIUM and two LOW, traced in code (not run).
CodeRabbit did not review this head (review limits). Validation after the fix and merging main: |
|
Local merge gate (owner-approved): |
…s in the font-swap script (#3105) ## What it changes Two browser scripts were red on `main` in the CI runner image (`herdr-ci-runner:local`). Both now follow the app as it is today, and each still asserts what it asserted before. - **`scripts/ui-regression.ts`** (CI's required "Browser regression (ui-regression)" job): #3096 moved the Suggestion chip switch into the Composer's "More settings" fold, so `?settings=chat§ion=composer` no longer showed it, and `setChecked` timed out after 30 s waiting for the switch. The script now opens `section=composer-more`, the link #3096 added, which opens that fold. The steps and assertions after it are unchanged. - **`scripts/font-swap-demo-regression.ts`** (manual script; it is not in CI's browser list): it stripped `local()` sources from the built stylesheet and asserted that it had found at least one. #2272 removed the last `local()` face (JetBrains Mono is always the bundled file), so this assertion has failed since #2272. The point of that step, that a font request the script holds is the only way to a face, now holds by construction, so the script asserts that no built stylesheet names a `local()` face, instead of stripping them. If one comes back, the script fails and says so. No product code changes. ## Validation - In `herdr-ci-runner:local` (CI env, a fresh copy of the branch, `bun install --frozen-lockfile`, `bun run build`): - on `origin/main` 3904098: `font-swap-demo-regression` FAIL ("the built stylesheet names an installed face..."), `ui-regression` FAIL (`waiting for getByRole('switch', { name: 'Suggestion chip' })`), `interface-font-demo-regression` PASS. - on this branch: `font-swap-demo-regression` PASS (all 5 cases), `ui-regression` exit 0. - `bun run check fast`: green. A first run had one `scripts/plugin.test.ts` failure (ENOENT on the stand-in's output while the PC was under heavy load). That test passes alone, and a second full run had 12525 pass and 0 fail. - Skipped: the integration suite and the other browser scripts (only these two scripts changed).
## What Settings keeps a few more rarely changed rows out of the first view, under each page's **More settings** fold (the `SettingsFold` from #3096). Nothing is removed, no default changes, and no stored value moves. | Page | Row | Now | |---|---|---| | Alerts | Needs input, Needs permission, Finished | More settings, in a new **Alert me when** group (`alert-kinds`) with Stopped on an error | | Chat | Dictation language | More settings, at the top of the voice group (`voice-more`) | | Chat | Wrap long lines | More settings, File viewer (`file-viewer-more`) | | Chat | Quick replies list | shown only while **Show above the message box** is on | | Devices and PCs | Keep screen on | More settings, new **Phone** group (`phone-more`) | | Appearance | Name tabs from the first message | More settings, Sidebar (`sidebar-more`) | - The fold's "n changed" count now also counts `alertInput`, `alertDone`, `voiceLanguage`, `wrapCode`, `keepScreenOn` and `autoTabNames`, so a moved value is never hidden without a trace. - Settings search shows folded rows as if unfolded, and a link naming a group inside a fold opens it. Both behave as before (#3096). - One new string, "Alert me when" (ko/ja/zh added). A changelog fragment and the DESIGN.md Settings entry are updated. - First view: Alerts goes from 6 rows to 3, Chat from 11 to 9 (plus the 5-field list, which is now hidden while off), Devices and PCs from 5 to 4, and Appearance from 9 to 8. Design: same rule as #3096. Rows few people change go into the fold, the way herdr-app keeps its Settings short. ## Validation - `bun run check fast` on 4aa8523: green (typecheck, build, unit 12617 pass / 0 fail). DESIGN.md commit: conventions tests 59 pass. - Browser regressions in the self-hosted CI runner image (`herdr-ci-runner:local`, isolated herdr), all PASS: `settings-pages-demo`, `wake-lock`, `push-settings`, `alert-webhook-demo`, `droplet-demo`, `droplet`, `pane-mute-demo`, `split-view`, `file-viewer`, `ui-regression`. - `alert-sound-regression` fails at setup ("the status subscription includes the new panes"). It fails the same way on origin/main 74976f2 in the same image, so this PR did not cause it. - Screenshots before/after at 1280 and 390, light and dark (Alerts, Chat, Devices and PCs, Appearance), from the demo build. Shared with the maintainer.
What
Each Settings page now shows the settings people change first, and folds the rest under one quiet line at its end: More settings, plus Experimental for what is still being shaped. Nothing is removed and no value changes.
typography-more,sidebar-more,chat-more,composer-more,file-viewer-more,chat-experimental,terminal-more,alerts-more,voice-moreandremote-more. The palette gets entries for the moved Composer and Typography rows, and for the Experimental chip.SettingsFoldis a nativedetails, so the browser's find-in-page opens it too.Design: herdr-app keeps its Settings to about a dozen rows and leaves the rest to its settings file. Ovis keeps every row reachable, but out of the first view. DESIGN.md → Settings dialog has the entry.
Validation
bun run check faston the pushed head: all green (typecheck, build, unit tests).paletteSettings(the new entries; the matrix's Send queued / Suggestion chip rows now land oncomposer-more),i18n,conventionsandsettingsall pass.settings-pages-demo-regression.ts, including the newfoldedGroupsstep at 1440 and 390. The step checks that a fold is closed on opening, shows "1 changed", opens on click, opens when a link names a group inside it (the group is focused), and that search finds a folded row.agent-groups,agent-helpers-fold,agent-lock,alert-webhook,chat-request-details,chat-size,composer-fit,files-documents,files-panel,file-text-size,follow-focus,interface-font,markdown-outline,omp-codex-image,pc-load,pending-pane-switch,portal,security-summary,settings-tabs,sidebar-agent-tree,sidebar-background-workspaces,sidebar-context-ring,sidebar-declutter,sidebar-filter,sidebar-peek,sidebar-split-access,sidebar-split,terminal-ghostty,terminal-images,terminal-keyboard,terminal-release-no-watch,text-file-editandvirtual-source.openSettingsPagedoes it, andopenSettingsFoldsor a link to the group's own section does it elsewhere.heldGroupLandingruns at 390×480, so the OpenAI key's group still starts below the fold.text-file-edit-regression.tstimed out once on the file editor's text box while six scripts ran at once; alone it passes (all 1280 and 390 steps).font-swap-demo-regression.tsandui-regression.ts, run on a clean origin/main checkout with the same results.bun run check fulland the rest of the browser lane (CI runs them).Screenshots (demo build)