Dock popup windows beside the page scrollbar, not on top of it

Fixkamo-internal
Shipped
August 14, 2026 at 10:30 PM UTC
Author
kamo
Commit
6349802

Tool windows are fixed to the viewport and dock right-to-left from its edge, and the layout was told about exactly one thing occupying that edge: the interaction center. With the center closed the right-most window was placed 5px from window.innerWidth — which counts the page's own scrollbar as usable width, because that bar belongs to a scroll container inside the page and not to the document. So the window landed on top of the bar. The dock now measures the edge instead of assuming it is clear: the widest vertical scrollbar among the page scroll containers actually flush against the right edge, or the interaction center's width when it is open. The center wins outright rather than adding, since it is itself fixed to that edge and covers the scrollbar — counting both would open a scrollbar-wide gap between the panel and the first window. A scroller that is inset from the edge (the settings card, with or without its help drawer) is discarded, so its bar does not push the dock around from the middle of the screen. Measuring once at open time is only right until the page grows past the fold under an open window, so a ResizeObserver on those scrollers relayouts when a bar arrives or leaves. It watches the content box, not the border box — a scrollbar appearing takes nothing off the border box, so a border-box observer would never fire. The arithmetic is in app/lib/toolDockGeometry.ts with the DOM reads left behind in the context, so the rule about which edge occupant wins is testable without a browser.

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