Anchor it to the first cell, and stop the scrollbar collapsing it

Fixkamo-internal
Shipped
September 6, 2026 at 9:04 PM UTC
Author
Kamo
Commit
72f8f84

Three things, and two of them are the same mistake: asking a question about a portalled element as though it were a child. THE SCROLLBAR COLLAPSED THE PANE. ScrollbarOverlay portals the bar to the body and paints it, fixed, over the scroller's last 32px — inside the pane's rectangle, outside its subtree. So reaching for it fired pointerout with a relatedTarget that was not a descendant, and onPointerLeave closed the pane document-level pointermove against the pane's rect, which covers every other overlay painted over it too. THE SCROLLBAR ALSO DREW OVER THE ADMIN DROPDOWNS. Those are zIndex 40 and the open pane was 40, but a bar is painted at its scroller's nearest z-indexed ancestor PLUS ONE — so the shelf's bar sat at 41, above a dropdown with every right to be in front of it. The pane is 12 now: above the panes it covers, whose chrome tops out at 4, and below the top nav at 20 and the dropdowns at 40. Measured in a browser: pane 12, bar 13, dropdown 40, and the dropdown wins the hit test where they overlap. THE SHELF NO LONGER MOVES. It is anchored to the first cell of the grid — first row, first column — and kept out of the member's ordering entirely rather than pinned to the front of it. That is the difference between a rule and a rule enforced: an id inside the ordering can be dropped in front of, and policing that on every drag hides the correctness where a bug is invisible. Outside it, the grid puts the pane first because it is the first child. lib/homeFirstRow and its clamp are gone with the requirement that needed them; the member keeps the resize, because anchored is about where a pane is, not how big.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing