Skip to content

feat(settings): redesign settings panel as a tabbed/sidebar layout#181

Merged
oratis merged 2 commits into
mainfrom
claude/strange-tharp-5cdf2b
Jun 18, 2026
Merged

feat(settings): redesign settings panel as a tabbed/sidebar layout#181
oratis merged 2 commits into
mainfrom
claude/strange-tharp-5cdf2b

Conversation

@oratis

@oratis oratis commented Jun 18, 2026

Copy link
Copy Markdown
Owner

What & why

The Settings dialog was a single, ungrouped column that overflowed the viewport — the title and the Restore defaults / Done footer were clipped on shorter screens (visible in the original screenshot). This reworks it into a macOS-style tabbed / sidebar dialog.

Changes

  • Fix overflow/clippingflex column with a sticky header, a scrollable content pane, and a sticky footer, capped at max-h-[88vh].
  • Categories — the 12 settings are grouped into a left nav: Appearance (font size, prose width, language, export theme), Editor (spell check, line wrap, line numbers), Files (autosave delay, save on blur, trim trailing whitespace, image paste folder), Keyboard shortcuts, Advanced (custom CSS).
  • Toggle switches — raw checkboxes + redundant "On/Off" text are replaced with accessible switches (role="switch", aria-checked); each hint moves to a description subtitle under the label.
  • Design tokens — the panel is wired through new .mk-settings-* / .mk-toggle classes using --mk-* variables, so it now tracks light / dark / sepia (the previous dark: utilities never fired under html.theme-sepia). Primary Done is now an accent-filled button.
  • ShortcutsEditor refit to live inside its own tab (dropped its standalone title + top border, token-styled the filter, gave the list more height).
  • Added catAppearance / catEditor / catFiles / catAdvanced / close i18n keys to en + zh.

Inactive tabs stay mounted (hidden), so drafted state survives tab switches and existing cross-category tests keep passing. Behavior is otherwise unchanged: live-apply on change, backdrop-click / Done to close, Restore defaults.

Testing

  • pnpm test1005/1005 unit tests pass (incl. SettingsDialog + ShortcutsEditor suites)
  • tsc -b → clean
  • biome check → clean
  • No e2e test depends on the dialog's structure.

Note: the Tauri vault flow can't reach the real dialog in a plain browser, so this was verified via the unit tests + a token-accurate visual mockup rather than a live screenshot.

🤖 Generated with Claude Code

oratis and others added 2 commits June 18, 2026 22:17
Restructure the single overflowing column into a macOS-style dialog with a
left category nav (Appearance / Editor / Files / Shortcuts / Advanced) and a
scrollable content pane.

- Fix the dialog overflowing the viewport: sticky header + scrollable body +
  sticky footer, capped at max-h-[88vh].
- Group the 12 settings into five labelled categories.
- Replace raw checkboxes + "On/Off" text with accessible toggle switches
  (role="switch"); move each hint to a description subtitle under the label.
- Wire the panel through new .mk-settings-* / .mk-toggle classes using --mk-*
  tokens so it tracks light/dark/sepia (the old dark: utilities silently
  missed sepia). Primary "Done" is now an accent button.
- Refit ShortcutsEditor to live inside its own tab (drop standalone title and
  top border, token-style the filter, give the list more height).
- Add catAppearance/catEditor/catFiles/catAdvanced/close i18n keys (en + zh).

Inactive tabs stay mounted (hidden) so drafted state and existing tests hold.
1005/1005 unit tests pass; tsc -b and biome clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@oratis oratis merged commit bab6d4c into main Jun 18, 2026
4 checks passed
@oratis oratis deleted the claude/strange-tharp-5cdf2b branch June 18, 2026 14:27
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.

1 participant