Scroll the document, and let the chrome scroll with it #110
Reference in New Issue
Block a user
Delete Branch "document-scroll"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The shell was a 100dvh box with overflow hidden, so a page scrolled only if its own wrapper was a flex child with overflow-y auto. A long page in form-page clipped everything past the window, silently, in every engine.
Now .app is min-height 100dvh and nothing bounds the viewport. The sidebar and topbar scroll with the page. The sticky thead on data-table goes with them: a header only sticks to a scrollport that moves, and there is no longer one.
The principle behind that now leads AGENTS.md priority 1, at the owner's direction: a page is a document, it scrolls, and the chrome scrolls with it. Nothing may bound the viewport to hold content still. Overlays are the exception, since the skip link, the off-canvas nav and its scrim sit above the document rather than holding it still.
One bug the change introduced and this PR fixes: with the document now able to scroll behind the open drawer, closing it teleported the reader to the top, because the nav toggle is a focusable checkbox and a browser scrolls a focused element into view. It is position fixed now, so there is nothing to scroll to. Verified by mutation in all three engines.
Breaking, so HOST_API_VERSION goes to 0.4.0 with every apiVersion sample, the release tripwire pin and a CHANGELOG entry whose upgrade steps say what a plugin loses: the bounded content column and the sticky table header, with no opt-out.
Reviewed to APPROVE WITH NITS by stability and through the architecture pass; typecheck, 547 unit tests, 51 visual across Chromium, Firefox and WebKit, and 12 full-flow all green.
WIP: Scroll the document by default; a bounded region is a page's own opt-into Scroll the document by default; a bounded frame is fill:trueScroll the document by default; a bounded frame is fill:trueto Scroll the document, and let the chrome scroll with it25239cd978to58767cb53e