- Shipped
- September 6, 2026 at 6:47 AM UTC
- Author
- Kamo
- Commit
- e2363c8
Every tab and sub-tab change in the Interaction Center slides the incoming pane in from x: 12 (the panel's tabs) or x: 10 (the Terminals workbench's). A transform counts toward an element's scrollable overflow, so for the ~160ms of that slide the pane really is a dozen pixels wider than the box holding it. That box was a horizontal scroll container, which nobody wrote: CSS computes overflow-x: visible to auto the moment the other axis is not visible, so `overflowY: 'auto'` on its own quietly asks for both bars. The dozen pixels were measured as scrollable width and a full-width bar was painted along the bottom of the list for the length of the animation, then taken away again. These panes are lists — there is nothing to the right of them to scroll to on any of the four tabs — so each scroller now names both axes. hidden also takes the container out of the overlay's reach entirely (it draws only for auto, scroll and overlay), which covers the other ways a child overflows sideways: a member row's hover actions park at translateX(6px), and popLayout absolutely positions exiting sections at their pre-reflow width. Verified in a real browser against a probe of the panel's shape: before, a tab switch measured 12px of scrollable width and drew a bar on the pane scroller; after, the 12px is still there and no bar is drawn. jsdom has no scrollbars and does no layout, so the guard beside oneScrollbar.test.ts is source-level, like its sibling.