Skip to content

feat(settings): grouped cards, short subtexts and Find a setting (#292) - #293

Merged
Maxaubert merged 5 commits into
mainfrom
feat/292-settings-grouped-cards
Oct 5, 2026
Merged

Maxaubert merged 5 commits into
mainfrom
feat/292-settings-grouped-cards

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #292. Prism side of the settings redesign; the Prism Terminal side (the core's frame, sections and rows, released as core-v0.25.0 and pinned here since #291) is Maxaubert/PrismTerminal#135.

Owner, 2026-10-05: approved v1 "Grouped cards" with no accent bar on the chosen rail item, and every recommendation Q1 to Q6 of the spec and plan (research/prism/2026-10-05-settings-no-subtext/2026-10-05-settings-redesign-spec-and-plan.md, section 3.3; copied into PrismTerminal as docs/superpowers/specs/2026-10-05-settings-redesign-design.md).

What changed

  • Settings is rebuilt on prism-term-core's frame (SettingsFrame, SettingsSection, SettingRow, SettingBlock, the core's Switch / Segmented / Select / SaveButton / ROW_BUTTON / RESET_LINK). Prism's own copies of every control are gone. components/Settings.tsx (1769 lines) is now components/settings/, one file per page plus appOptions.ts, settingsIndex.ts, icons.ts and the card, swatch and transport-preview parts.
  • Every row: an icon tile, the label, ONE subtext of at most 8 words that also carries live state (Win+E status, the Explorer menu check, a chosen folder, the band opacity), the control at the right. Labels follow renames.md as v1 uses them.
  • The chosen rail page is a grey fill (--p-hover-hi), never the accent; --p-sel-solid went with it.
  • Find a setting at the top of the rail searches every row drawn on this PC (no command help; the GPU row only with an NVIDIA card); a result opens its page (and Media's half), scrolls, flashes and focuses the row. Escape in the field clears it; only an empty field lets Escape close Settings.
  • Media merges Visualizer and Progress bar behind a header switch; About gets Version beside Setup guide.
  • No storage key changes: appOptions.ts lists every row's keys, frozen by a snapshot test. Show title bar is now a switch over the same shown / hidden store.
  • App gives Settings its plain keys (Up and Down walk the rail, they no longer also page the folder behind).
  • colorScheme on the Settings overlay follows the style's mode: :root says dark, and the core's warning ink is light-dark() (spec risk, checked: the amber reads 6.0:1 on Paper).
  • Minor bump: 0.88.0 to 0.89.0.

The new menu

Find a setting
Appearance  Theme (Colour mode, App theme + style wall) | Colours of <style> (6) | Text (App font, Interface text size) | Window (Show title bar, Tab width, Panel edges, Corner roundness)
Explorer    Layout (3) | Opening things (3) | When Prism starts (2) | Windows (Win+E, Explorer menu, Default apps)
Terminal    Shell | Text | Theme   (core sections)
Agents      Tab marks | Claude Code | Mark colours   (core sections)
Dictation   core page
Media       [Visualizer | Progress bar]  style cards, colour + Glow/Cycle/Move; Behind the controls
About       Prism, Version, Setup guide

Two stopgaps for the core (each goes when the core fixes it)

  1. The core's package.json exports maps ./renderer/settings/* to .tsx only, so coreIndex, sectionIds and layout/icons (plain .ts) cannot be imported by package path. They are resolved by exact specifier in electron.vite.config.ts (CORE_TS), vitest.config.ts and tsconfig.web.json.
  2. The frame's compact classes lose to its own base classes in the cascade (w-14 before w-[244px], MEASURED: the rail stayed 244px), so index.css gives [data-settings-compact] the rail width. The under-760px narrow mode is unaffected (variants win).

Screenshots

settingsLook writes every page in a dark (Aurora) and a light (Paper) style to .e2e/shots/settings-<page>-<scheme>.png, plus Onyx, Ruby, Large text, narrow search and the compact rail; looked at against the v1 mockup shots.

Gates

  • npm run typecheck: clean (node and web).
  • npm run lint: 0 errors, 7 warnings, all in files this PR does not touch beyond App.tsx's two existing ones.
  • npm test: 155 files passed, 1 skipped; 1927 tests passed, 2 skipped. New: settings/appOptions.test.ts (ids, icons, keys snapshot, every row drawn, index order and placement), settingsCopy.test.ts (8-word subtexts, plain labels, whole folder), settingsControls.test.ts (no local controls, accent only on marks).
  • npm run e2e:terminal: 17 scenarios, 533 checks, all green, settingsLook included (runner-safe).
  • Full npm run e2e: 96 scenarios, 94 green. columnHeaders and panelsAlign failed because the two new settings scenarios left the window at 1600x1000 in the shared profile; fixed in c439835 (they put the size back), and settingsLook, settingsSearch, columnHeaders, panelsAlign rerun in order: all green.
  • terminal failed twice in targeted runs on shell steps unrelated to Settings (scrollback after a second session; a prompt wait), then passed three times, the gate and the full run included.
  • Updated scenarios: terminal, termOptions (rows across Terminal and Agents, order checked per section, one panel per section), noCommandHelp (Find a setting knows no help), termColourPicker ("Pick Agent working colour", popover "Agent working colour", on Agents), dictation, dictationPage, iconScheme, tabs, titleBar, moreMenu, folderArg, markTint (grey rail), accentOpacity, styleColours, rememberFolders, explorerSize and the pickStyleSegment users.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

Maxaubert and others added 5 commits October 5, 2026 20:45
Rebuild Settings on prism-term-core's grouped cards frame (core-v0.25.0):
Appearance, Explorer, Terminal, Agents, Dictation, Media, About, with
Find a setting. Prism's own rows are a closed list (appOptions.ts) with
one short subtext each and unchanged storage keys; the core's sections
draw the terminal, agent and dictation rows. The chosen rail page is a
grey fill. New settingsLook (in e2e:terminal) and settingsSearch e2e.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
The window's size is saved in the shared profile, and columnHeaders and
panelsAlign, which ran after them, started at 1600x1000.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
…ind, one Win+E toggle

- The compact rail (title bar's toggle) drew each page as an 18px sliver:
  the item column is centred, so the core's w-full was the icon's width.
  Each page is a 40px tile now, as in the narrow layout; settingsLook
  measures it.
- With text in Find a setting and the keyboard elsewhere (the rail, the
  pane), Escape did nothing at all. It now takes the keyboard back to the
  field, and the next Escape clears it; settingsSearch holds both steps.
- Win+E's label names its switch by id and the row also flips on a press,
  so one press could reach toggle() twice before a render disabled it. A
  ref makes it one change per press.
- e2e: fullscreenBlack left the shared profile's window maximized, so the
  narrow-window checks of columnHeaders and panelsAlign (which run later)
  measured a full screen. It unmaximizes on the way out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
Owner, 2026-10-06: "call this setting font size and the app font, just
call it font". Interface text size is Font size; App font is Font.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
The owner's pick of five mockups (2026-10-06, "E. Explorer this is the
style to go with"): each style card draws a breadcrumb, folders in the
style's folder colour, files in their kind tints, one row marked in the
style's selection tint and a progress line in the accent, on the style's
own ground (frosted for a see-through style). Every colour comes from
derive() and folderIconOf(), so the live card follows an edit. The shared
red-to-blue square is gone. Card size, name, chosen ring and hover are
unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
@Maxaubert
Maxaubert merged commit 7b0d688 into main Oct 5, 2026
3 checks passed
@Maxaubert
Maxaubert deleted the feat/292-settings-grouped-cards branch October 5, 2026 21:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Settings: grouped cards, short subtexts and Find a setting

1 participant