feat(settings): grouped cards, short subtexts and Find a setting, with the shared rows in the core (#134) - #135
Merged
Conversation
…h the shared rows in the core (#134) The core gains the settings layout (frame with rail and Find a setting, sections, rows, blocks, icons, search, flash) and the terminal sections built on it, additively: the old components stay exported and draw as before, and the option lists keep their order, so Prism's bump stays green. Prism Terminal's page moves onto it: Appearance, Terminal, Agents, Dictation, About. No storage key changes. Core 0.25.0, app 0.31.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
… controls named by label (#134) The find field wore data-owns-escape always. Prism's App yields its Escape to any element wearing it, so once Prism mounts the frame (PR 2) Escape would stop working there for good; spec 1.3 says only an empty field lets Escape through, so the mark is now worn only while the field holds text. A segmented control's buttons were named only by their options ("Dynamic"), so a screen reader never heard which setting they set (spec 1.3). A row's control slot is now a group named by the row's label. settingsSearch asserts both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
github-actions Bot
pushed a commit
that referenced
this pull request
Oct 5, 2026
…h the shared rows in the core (#134) (#135) * feat(settings): grouped cards, short subtexts and Find a setting, with the shared rows in the core (#134) The core gains the settings layout (frame with rail and Find a setting, sections, rows, blocks, icons, search, flash) and the terminal sections built on it, additively: the old components stay exported and draw as before, and the option lists keep their order, so Prism's bump stays green. Prism Terminal's page moves onto it: Appearance, Terminal, Agents, Dictation, About. No storage key changes. Core 0.25.0, app 0.31.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t * fix(settings): find field claims Escape only while it holds text; row controls named by label (#134) The find field wore data-owns-escape always. Prism's App yields its Escape to any element wearing it, so once Prism mounts the frame (PR 2) Escape would stop working there for good; spec 1.3 says only an empty field lets Escape through, so the mark is now worn only while the field holds text. A segmented control's buttons were named only by their options ("Dynamic"), so a screen reader never heard which setting they set (spec 1.3). A row's control slot is now a group named by the row's label. settingsSearch asserts both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #134. PR 1 of the approved plan (
docs/superpowers/specs/2026-10-05-settings-redesign-design.md, section 3.1). Owner: "can you mock up some new settings pages ... grouped cards ... both apps"; approved 2026-10-05 with Q1 to Q6 as recommended and the PT mockup with "build it".What changed
Prism Terminal's Settings, on grouped cards. Rail with Find a setting; pages Appearance, Terminal, Agents, Dictation, and About at the bottom. Every row is an icon tile, a label and ONE short subtext (at most eight plain words), the control at the right; rows sit in sectioned panels.
--p-hover-hifill, never the accent. Focus in the new rows is a fill and a lighter edge (Prism #272, Q1). Dropdown menus in rows blur and cast no shadow. Below 760px of the frame the rail is icons and the field opens over the pane.shown/hiddenvalues. No storage key changed (snapshot tests on both the core lists andappOptions.ts).The core change is ADDITIVE (spec 3.0 and 3.2), so the automatic Prism bump stays green:
core/renderer/settings/layout/(SettingsFrame, SettingsSection, SettingRow, SettingBlock, icons, pure search, flash),sections/(Shell, Text, Theme, Tab marks, Claude Code, Mark colours, Command help, Dictation page),coreIndex.ts,sectionIds.ts.theme/ThemeWall.tsx,theme/useTermSetup.ts,theme/palette.ts,dictation/useDictationState.ts,dictation/parts.tsx,dictation/items.ts.Pref,ThemeHead,ROWS,TerminalAppearanceSettings,AgentIndicatorSetting,AttentionSettings,ShellSetting,HelpSetting,DictationSettings(removed in PR 3 once Prism has moved).section,icon,sub,keywordsfields and the new labels; their ORDER is unchanged; no entry holds a brace (Prism's gate reads them as text; a core test holds it).settingsCopy.ts:subTooLong,labelProblem,settingsListCopyadded BESIDEcopyProblemandsettingsDescriptions, which are unchanged.Prism bump check (spec 3.2)
Prism
origin/main47ece4e (0.87.0, pinned to core-v0.24.0), cloned to the session scratchpad,prism-term-corepointed at this branch'score/(file:),npm install:npm run typecheck: 0 errorsvitest run: 154 files passed, 1 skipped; 1928 tests passed, 2 skippedPrism's e2e was not run.
Gates
npm run typecheck: cleannpm run lint: 0 errors, 12 warnings (the same pre-existing react-refresh warnings as main, infields.tsxandTerminalPanel.tsx)npm test: 90 files, 1350 tests passednpm run e2e: 49 scenarios, 865 checks, 1 fail:quitManyShells(exit 0xC0000005, known flaky, Quit with many shells: rare access violation (0xC0000005) under load #133); it passed on its own rerun (9/9). An earlier full run hadupdateWindowfail only because the version was bumped mid-run against an older build (passes after rebuild), andcolourPickerfail on a real gap (the theme editor step needed Appearance), fixed.settingsLook(contrast on Pitch, Paper and acrylic, grey rail, Save the only accent button, 900 and 1600px, the narrow rail),settingsSearch(every indexed row found by its label and opened, keyboard only, Escape, No results),settingsKeys.optionsrewritten: the three core lists shown, order per section, one panel per section, own rows a closed list fromappOptions.ts, layout measured (58px rows, 32px tiles, panel radius, 60px hairline, no overlapping controls). 24 scenarios reach rows throughgotoPref.Screenshots (looked at beside the mockup)
.e2e-shots/settings-{appearance,terminal,agents,dictation,about}-{dark,light}.png,settings-appearance-dirty.png,settings-appearance-acrylic.png,settings-narrow.png,settings-narrow-search.png,settings-search.png,settings-search-empty.png,theme-wall.png.Deviations from the mockup
light-dark()): the mockup's colours read 3.9:1 and 4.0:1 on Paper's panel, under the spec's 4.5:1.[data-mic-meter]) still appears only during a test.[data-follow-theme](as briefed); the colour editor and picker are unchanged.Not done here
PrismTerminalprocesses, which this run may not close. Hands-on list in spec 3.5.🤖 Generated with Claude Code
https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t