Skip to content

feat: move search to sidebar top and fix settings scroll - #199

Merged
h4yfans merged 6 commits into
mainfrom
feat/sidebar-search-top
Apr 11, 2026
Merged

feat: move search to sidebar top and fix settings scroll#199
h4yfans merged 6 commits into
mainfrom
feat/sidebar-search-top

Conversation

@h4yfans

@h4yfans h4yfans commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

What

Two related sidebar/settings improvements bundled together:

  1. Move search and new-note actions to the top of the sidebar for faster access
  2. Restore scrolling inside the Settings modal so long sections (Shortcuts, Account, etc.) are fully reachable when the window is short

Why

  • Sidebar reorder: search and new-note are the two most frequently-used actions — placing them at the top of the sidebar cuts scanning time and reduces hand travel to reach them.
  • Settings scroll: long-standing bug where opening Settings → Shortcuts or Settings → Account with a short window would clip the bottom of the page with no scrollbar. The content was simply unreachable.

How

Sidebar reorder (app-sidebar.tsx):

  • Reorganized action order so search and new-note appear first in the sidebar action list.

Settings scroll fix — root cause was that Radix DialogContent renders as display: grid with implicit auto rows. When the sole grid item (SettingsPage) is h-full, the row track is auto, which can't give the child a definite height — nested overflow-hidden + ScrollArea never trigger a scroll boundary, so long sections silently overflow the dialog.

Scoped fix (avoids touching the base Dialog primitive which other dialogs rely on):

  • settings-modal.tsx: added flex flex-col to the settings DialogContent override, breaking the grid at this usage site
  • settings.tsx:
    • Root <div>: h-full flexflex-1 min-h-0 flex so it fills the flex-column parent with a definite height
    • Nav sidebar: added overflow-y-auto min-h-0 so the nav becomes independently scrollable when the window is very short
    • Right content pane: added min-h-0 so overflow-hidden actually clips and the nested ScrollArea computes bounded viewport height
  • Total diff: 4 insertions, 4 deletions across 2 files

IPC bindings regen: folded in as a separate chore: commit — the bindings were already stale on main (blocking pnpm typecheck's pretypecheck hook), so this unblocks pnpm ipc:check as a side benefit.

Type

  • feat — new feature (sidebar reorder)
  • fix — bug fix (settings scroll)
  • chore — tooling, deps, config (IPC regen)

Test plan

  • Unit tests added/updated — existing 5557 tests all pass (pnpm test)
  • Integration tests added/updated — N/A (CSS class changes)
  • Manual testing:
    • Open Settings modal (⌘, or gear icon) → click Shortcuts → verify thin scrollbar appears on the right pane and the full content is reachable
    • Same with Account section
    • Shrink the window to ~500px tall → verify the left nav sidebar becomes independently scrollable while the right content pane stays pinned
    • Verify search and new-note actions now sit at the top of the left app sidebar

Checklist

  • Self-reviewed the diff
  • No hardcoded secrets or credentials
  • Files stay under ~500 LOC
  • Follows immutable data patterns

h4yfans added 6 commits April 11, 2026 22:50
The previous regeneration commit (218c818) captured a working-tree state
that didn't reflect the committed contracts. Running the generator fresh
against this branch's contracts produces the inverse diff. This commit
restores the bindings to the correct generator output so ipc:check passes.
toSyncDomain switch was missing the folder_config branch, so tsc
flagged a missing return and CI typecheck failed on both PRs #198
and #199. Add folders domain and matching case to restore
exhaustiveness over SyncItemType.
@h4yfans
h4yfans merged commit 82708a2 into main Apr 11, 2026
3 checks passed
h4yfans added a commit that referenced this pull request May 6, 2026
toSyncDomain switch was missing the folder_config branch, so tsc
flagged a missing return and CI typecheck failed on both PRs #198
and #199. Add folders domain and matching case to restore
exhaustiveness over SyncItemType.
@h4yfans
h4yfans deleted the feat/sidebar-search-top branch May 6, 2026 16:36
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