Fixed
mini-cartandnotification-centercould push a 320px page sideways. Both panels arew-80— exactly 320px — so on the narrowest phones they were wider than the viewport once positioned, and the whole page scrolled horizontally. Capped atcalc(100vw - 1rem).
Found by a new test layer rather than by a user, which is the point of it.
Testing
Two suites added on top of the five that already drive every component in a real Chromium at every breakpoint:
- layout — invariants that need no baseline: the page must not scroll sideways, no component may be squashed to a zero dimension, nothing may be stranded off-screen, no text may spill its box. 6,864 checks. Four components still size themselves from their content and overflow a 320px viewport (
tabs,navigation-menu,dock,data-table), as upstream shadcn/ui does — they are listed in the suite and printed on every run rather than hidden, and enforced normally from 375px up. - visual — a 256-bit perceptual fingerprint of every example block, per component, per width, against a committed baseline of 5,929 entries (518 KB of hashes, not thousands of PNGs). Catches a padding that collapsed, a colour that inverted, a grid that reflowed. The threshold is measured: two runs of the same page differ by 0 bits, the noisiest real case by 5, a 4px padding change by 14.
23,508 checks across seven suites and eleven widths, verified to reproduce bit-for-bit between a laptop and a CI runner.
Full Changelog: v1.24.1...v1.24.2