Skip to content

Native-feel CSS polish: lock chrome selection, thin scrollbars, no rubber-banding - #52

Merged
setzor merged 2 commits into
mainfrom
vibe/native-feel-css-polish-3d935b
Oct 27, 2026
Merged

setzor merged 2 commits into
mainfrom
vibe/native-feel-css-polish-3d935b

Conversation

@setzor

@setzor setzor commented Oct 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Native-feel CSS polish: lock accidental text selection/drag outside the editor and style thin scrollbars #28: global user-select: none + -webkit-user-drag: none lock over all UI chrome, with explicit user-select: text re-enable for input, textarea, [contenteditable="true"], the entry editor, and the app-settings data-dir path — so dragging in the sidebar/toolbar/calendar no longer highlights text, and images no longer drag like web content, while the editor, cover title, and settings fields keep normal selection.
  • html, body get overflow: hidden + overscroll-behavior: none so only the inner panes scroll (no whole-window rubber-banding).
  • Thin 6px overlay-style ::-webkit-scrollbar styling with subtle translucent thumbs (very visible on WebKitGTK/Linux).

Verification

  • pnpm test — 20 files, 93 tests passed (context-menu Copy/Select-all and editor selection tests unaffected).
  • pnpm build passes; inner panes confirmed to scroll independently (overflow-y: auto blocks remain in sidebar/note/shelf panes).
  • Issue Bug: deleting a table's header row corrupts the table on save/reload #15 (header-row table corruption) was re-verified obsolete on current main — entries persist as TipTap JSON since commit 2812539 and a round-trip test of a header-deleted table passes; it is being closed with evidence rather than fixed.

Closes #28

mistral-vibe and others added 2 commits October 27, 2026 12:59
…er-banding

- Global user-select/user-drag lock with explicit re-enable for inputs,
  contenteditable, the entry editor and the data-dir path (#28).
- html/body overflow hidden + overscroll-behavior none so only inner
  panes scroll.
- Thin 6px overlay-style webkit scrollbars with subtle thumbs (#28).

Co-authored-by: setzor <setzor@users.noreply.github.com>
…ndow even if boot fails

- The global user-select/user-drag lock also hit editor descendants;
  re-enable text selection and native drag inside [contenteditable] and
  .entry-editor so table cells, paragraphs and canvas-block dragging
  (draggable: true) keep working.
- revealWindow now runs even when boot() rejects, otherwise a startup
  failure would leave the invisible window (visible: false) looking
  like a dead app.

Co-authored-by: setzor <setzor@users.noreply.github.com>

setzor commented Oct 27, 2026

Copy link
Copy Markdown
Owner Author

Full-session review sweep (PRs #47–#52) found and fixed two defects in 49d2f67:

  1. Native-feel CSS polish: lock accidental text selection/drag outside the editor and style thin scrollbars #28 CSS lock was too broad (this PR): the global user-select: none / -webkit-user-drag: none reset also hit elements inside the editor — table cells, paragraphs — and would have broken the canvas block's native HTML dragging (draggable: true). The re-enable now covers [contenteditable="true"] * and .entry-editor * and restores -webkit-user-drag: auto there.
  2. Startup white flash: show the window only after the WebView has painted the initial UI #29 boot-failure deadlock (PR Show window after first paint; remember window geometry across launches #51's change): revealWindow() only ran on boot() success; a startup IPC failure would leave the window hidden forever (visible: false) — app looks dead. Reveal now runs after boot().catch(...) too.

Verified non-issues: flushNow return-guard at boot (undefined === false → proceeds); shouldSkipShortcut arrow-on-button rule ('t' still allowed on buttons, arrows pass to focus movement); applyNotebookMeta shared-object mutation safe with the shelf flow; toolbar update-on-editor-swap watch (WeakMap) still registers fresh editors; OVERLAY_IDS cover all four modals; window-state plugin restores apply before reveal (no resize flicker).

@setzor
setzor marked this pull request as ready for review October 27, 2026 13:05
@setzor
setzor merged commit eee7259 into main Oct 27, 2026
2 checks passed
@setzor
setzor deleted the vibe/native-feel-css-polish-3d935b branch October 27, 2026 13:05
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.

Native-feel CSS polish: lock accidental text selection/drag outside the editor and style thin scrollbars

2 participants