From d07f8bb8e1d03bc41cbfaae566e1abc62cf0b288 Mon Sep 17 00:00:00 2001 From: Claude Fable 5 Date: Sun, 19 Jul 2026 21:31:53 +0200 Subject: [PATCH 1/2] =?UTF-8?q?#137=20Feinjustierung:=20Checkbox=20im=20No?= =?UTF-8?q?deView=203px=20h=C3=B6her=20(Text=20relativ=203px=20tiefer)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stefans Feedback nach dem Nachfahren-Selektor-Fix: „noch 3px weiter runter". Die Zeilenmetrik des Editor-/Auth-NodeViews (label-Wrapper) setzt die Checkbox ~3px tiefer als im öffentlichen docToHtml-Markup — daher NUR für den label-Pfad `margin-top: calc(0.25em - 3px)`; die öffentliche Ansicht (bare input, war korrekt) bleibt bei 0.25em. Live per Injektion auf Test vermessen: Versatz −9 → −6px, Checkbox mittig auf der Textzeile (Zoom-Screenshot). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0155v2aT8AG1kZDQEZiCLBWC --- apps/web/src/styles/base.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/web/src/styles/base.css b/apps/web/src/styles/base.css index d217318..44ad026 100644 --- a/apps/web/src/styles/base.css +++ b/apps/web/src/styles/base.css @@ -1638,6 +1638,13 @@ ul[data-type='task_list'] li > label { margin-top: 0.25em; } +/* Editor/auth NodeView only (the bare-input shape has no label): its line + metrics sit the checkbox ~3px lower than in the public view, so pull the + label up by that much — tuned to Stefan's eye on the live stage (#137). */ +ul[data-type='task_list'] li > label { + margin-top: calc(0.25em - 3px); +} + ul[data-type='task_list'] li p:first-of-type { margin-top: 0; } -- 2.45.2 From 60be198e512130d70938f3ed01319f3eab0825b8 Mon Sep 17 00:00:00 2001 From: Claude Fable 5 Date: Sun, 19 Jul 2026 21:31:53 +0200 Subject: [PATCH 2/2] =?UTF-8?q?search.spec:=20Fehl-Klick=20entfernt=20?= =?UTF-8?q?=E2=80=94=20Reload=20IST=20der=20Weg=20zur=C3=BCck=20in=20den?= =?UTF-8?q?=20Lesemodus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Spec klickte nach page.reload() den Mode-Toggle „um den Edit-Modus zu verlassen" — nach dem Reload ist die Seite aber schon im Lesemodus (React- State resettet), der Klick wechselte also HINEIN. Das passierte jahrelang folgenlos, weil der Fokus auf dem Toggle-Button blieb und „/" die Suche öffnete. Seit dem Editor-Auto-Fokus (PR #140) landet der Fokus im Editor und „/" wird dort zu Text — je nach Ausgang des Rennens gegen den rAF- verzögerten Fokus mal grün (Läufe 381/385), mal rot (383/387/389/390). Fix: den Klick streichen; „/" läuft im Lesemodus als globaler Shortcut. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0155v2aT8AG1kZDQEZiCLBWC --- apps/web/e2e/search.spec.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/web/e2e/search.spec.ts b/apps/web/e2e/search.spec.ts index 0a48f38..a5c89b5 100644 --- a/apps/web/e2e/search.spec.ts +++ b/apps/web/e2e/search.spec.ts @@ -39,8 +39,13 @@ test('search finds page content, highlights it, and is keyboard-operable', async await page.keyboard.type(`the unique ${word} lives in this body`); await page.reload(); await expect(page.locator('.editor-content')).toContainText(word); - // Leave edit mode so "/" is a shortcut, not editor input. - await page.locator('.editor-page__mode-toggle').click(); + // The reload already landed back in read mode (the mode state resets), so + // "/" acts as the global shortcut here. This spec used to click the mode + // toggle again "to leave edit mode" — which actually RE-ENTERED it; that + // passed only while entering edit mode left focus on the toggle button. + // Since the editor grabs focus on entering edit mode (PR #140), "/" would + // become ordinary editor input there, racing the deferred focus — the + // intermittent-then-persistent failure of this pack. // Open search with the "/" shortcut. await page.keyboard.press('/'); -- 2.45.2