Skip to content

refactor(settings): refresh controls with Primer - #3496

Merged
setchy merged 4 commits into
mainfrom
refactor/settings-controls-primer
Oct 25, 2026
Merged

setchy merged 4 commits into
mainfrom
refactor/settings-controls-primer

Conversation

@setchy

@setchy setchy commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

Base PR

This is the first PR in the stack and now targets main.

This PR intentionally contains only the settings that exist on main; the native notification style, actions, keep-visible, and click controls are added by #3491.

OpenSpec change: 06-refresh-settings-controls-with-primer.

Summary

Before After
Screen.Recording.2026-10-24.at.10.27.47.PM.mov
Screen.Recording.2026-10-24.at.10.30.31.PM.mov

  • Add reusable settings controls: SettingsToggle, SettingsChoice, SettingsRow, SettingsList, and SettingsReveal.
  • Use a dense single-row layout: label left, control right, thin dividers, small toggles with the default On / Off label.
  • Use tooltips for detailed help instead of a second visible description. Visible copy remains for warnings and disabled reasons.
  • Group Inbox controls as Fetch, List, and GitHub, with proper-case, icon-led subheadings.
  • Restore missing help, including the List controls, notification volume, and shortcut rules.
  • Move the shortcut rules tooltip onto the recorder row; rename it Global shortcut and the toggle Enable global shortcut.
  • Animate dependent controls:
    • detailed notifications → metrics
    • play sound → notification volume
    • global shortcut → recorder
  • Replace scope/unsupported warnings with Banner.
  • Remove the settings-only custom RadioGroup; keep Checkbox for filter multi-select.
  • Fix the settings footer scroll bug:
    • min-h-0 on the contents scroll pane
    • document-level overflow hidden so only the content pane scrolls

Verification

  • pnpm test: 201 files, 1,974 tests passed
  • pnpm exec vp check --no-fmt: 464 files passed
  • scripts/visual.sh settings: 9 baselines passed
  • SonarQube Quality Gate: passing (0 issues)
  • Electron smoke test: keyboard toggle, segmented choice, restart persistence, footer-safe scrolling

Scope notes

  • No main-process, IPC, package, or persisted-setting changes.
  • The min-h-0/overflow fix is a shared layout fix, exposed by the taller settings content.

@setchy
setchy marked this pull request as ready for review October 25, 2026 02:27
@setchy
setchy requested a review from afonsojramos as a code owner October 25, 2026 02:27
Add settings control wrappers for compact toggles, segmented choices, selects, custom rows, dividers, and animated dependent reveals.

Migrate Appearance, Inbox, Alerts, Tray, and System to the wrappers; restore detailed secondary tooltips; remove the settings-only custom RadioGroup; and keep Checkbox for filter multi-select.

Fix the settings footer scroll issue by constraining the contents pane and document overflow. Update snapshots and visual baselines.
@setchy
setchy force-pushed the refactor/settings-controls-primer branch from e5c89aa to f3884ae Compare October 25, 2026 02:33
@setchy
setchy changed the base branch from feat/actionable-native-alerts to main October 25, 2026 02:33
@github-actions github-actions Bot added the refactor Refactoring of existing feature label Oct 25, 2026
Keep label-click behavior with native label buttons that are hidden from assistive technology and removed from the tab order, while the switch or control remains the accessible target.

Use a fieldset for settings rows with grouped controls and align the Fetch subheading spacing with the List and GitHub groups. Update tests and visual baselines.
Make segmented choice labels advance to the next option, keep select labels opening the picker, and remove label-click behavior from stepper rows where it does not add value.

Normalize label typography across toggles, choices, and rows, and balance the Fetch subheading spacing. Update tests and visual baselines.
Primer's unlayered stylesheet resets fieldset padding and borders, which stripped the divider and vertical padding from stepper rows. Move the settings list rhythm into unlayered CSS and mark the button label typography important so it matches the rows.

Drop the subheading divider so the last row of every group, main section or subgroup, is followed by spacing instead of a line. Keep the GNOME extension note outside the row list so it no longer adds a divider after the last Linux setting.
@setchy
setchy merged commit 6797023 into main Oct 25, 2026
15 checks passed
@setchy
setchy deleted the refactor/settings-controls-primer branch October 25, 2026 03:33
@github-actions github-actions Bot added this to the Release 7.11.0 milestone Oct 25, 2026
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactor Refactoring of existing feature

Development

Successfully merging this pull request may close these issues.

1 participant