Say what the comment is for, not what the bug was
CI / full-gate (push) Successful in 2m47s

This commit is contained in:
2026-09-09 16:05:20 +02:00
parent 8128ec2f42
commit 25239cd978
2 changed files with 3 additions and 6 deletions
+2 -2
View File
@@ -289,8 +289,8 @@ Revisit only if the stated reason stops holding.
the two in step. the two in step.
- **One scroller, the document** (priority 1). `.app` is `min-height: 100dvh`. `.nav`'s - **One scroller, the document** (priority 1). `.app` is `min-height: 100dvh`. `.nav`'s
`overflow-y: auto` and `.side-footer`'s `flex: 0 0 auto` are not leftovers of a bounded frame: `overflow-y: auto` and `.side-footer`'s `flex: 0 0 auto` are not leftovers of a bounded frame:
they are what makes the off-canvas panel usable with a long tree. `#nav-toggle` is `position: fixed` they are what makes the off-canvas panel usable with a long tree. `#nav-toggle` is `position: fixed`
for the same reason — a label click focuses it, and a browser scrolls a focused element into view. a label click focuses it, and a browser scrolls a focused element into view.
- **`ICON_NAMES` (`src/ui/icons.ts`) is a host-owned registry, not a frozen plugin contract**, so it - **`ICON_NAMES` (`src/ui/icons.ts`) is a host-owned registry, not a frozen plugin contract**, so it
is deliberately not re-exported from `@plainpages/plugin-api`. The palette may narrow when the last reference is deliberately not re-exported from `@plainpages/plugin-api`. The palette may narrow when the last reference
to an id goes, and a plugin needing one gets it re-registered in the same change. Accepted cost: an to an id goes, and a plugin needing one gets it re-registered in the same change. Accepted cost: an
+1 -4
View File
@@ -47,10 +47,7 @@ for (const [name, path, tail] of [
} }
} }
// The drawer is an overlay, so the document keeps scrolling behind it. Closing it must then leave // Green only while #nav-toggle is position: fixed — a label tap focuses it, and focus scrolls into view.
// the reader where they were: the toggle is focusable and its label is what a tap hits, and a
// browser scrolls a focused element into view — from the top of the document that meant jumping
// there. `#nav-toggle` is `position: fixed` so there is nothing to scroll to.
test("closing the mobile drawer leaves the reader where the scrim found them", async ({ page }) => { test("closing the mobile drawer leaves the reader where the scrim found them", async ({ page }) => {
await page.setViewportSize({ width: 390, height: 200 }); await page.setViewportSize({ width: 390, height: 200 });
await page.goto("/dashboard"); await page.goto("/dashboard");