From 00833ac763734f37de00be9afdbb11c6272deb12 Mon Sep 17 00:00:00 2001 From: Vibe Nuage Agent Date: Tue, 27 Oct 2026 12:59:16 +0000 Subject: [PATCH 1/2] Native-feel CSS pass: lock chrome selection, thin scrollbars, no rubber-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 --- src/styles.css | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/styles.css b/src/styles.css index 2d1cdb1..c3fc2e1 100644 --- a/src/styles.css +++ b/src/styles.css @@ -323,10 +323,51 @@ box-sizing: border-box; } +*, +*::before, +*::after { + user-select: none; + -webkit-user-select: none; + -webkit-user-drag: none; +} + +input, +textarea, +[contenteditable="true"], +.entry-editor, +#as-datadir { + user-select: text; + -webkit-user-select: text; +} + +img { + -webkit-user-drag: none; +} + html, body { margin: 0; height: 100%; + overflow: hidden; + overscroll-behavior: none; +} + +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: transparent; +} + +::-webkit-scrollbar-thumb { + background: rgba(128, 128, 128, 0.25); + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: rgba(128, 128, 128, 0.45); } body { From 49d2f676954a4178b92ee40645b4d9d2d1f44a31 Mon Sep 17 00:00:00 2001 From: Vibe Nuage Agent Date: Tue, 27 Oct 2026 13:03:33 +0000 Subject: [PATCH 2/2] Review sweep fixes: editor-internal selection/drag restore; reveal window 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 --- src/main.ts | 8 +++++--- src/styles.css | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main.ts b/src/main.ts index 6a46eb4..058d5e2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -584,9 +584,11 @@ async function revealWindow(): Promise { window.addEventListener("DOMContentLoaded", () => { applyTheme(currentThemeId, currentMode); refreshToolbar = createToolbar(toolbarEl, () => editor); - void boot().then(() => { - requestAnimationFrame(() => void revealWindow().catch(() => {})); - }); + void boot() + .catch((err) => console.error("boot failed", err)) + .then(() => { + requestAnimationFrame(() => void revealWindow().catch(() => {})); + }); }); window.addEventListener("beforeunload", () => { diff --git a/src/styles.css b/src/styles.css index c3fc2e1..736f87c 100644 --- a/src/styles.css +++ b/src/styles.css @@ -334,10 +334,12 @@ input, textarea, [contenteditable="true"], -.entry-editor, +[contenteditable="true"] *, +.entry-editor *, #as-datadir { user-select: text; -webkit-user-select: text; + -webkit-user-drag: auto; } img {