Skip to content

fix: reserve scrollbar gutter to prevent horizontal layout shift#1744

Merged
davidpoblador merged 1 commit into
mainfrom
worktree-shiny-honking-treehouse
May 5, 2026
Merged

fix: reserve scrollbar gutter to prevent horizontal layout shift#1744
davidpoblador merged 1 commit into
mainfrom
worktree-shiny-honking-treehouse

Conversation

@davidpoblador

Copy link
Copy Markdown
Member

Summary

  • Adds html { scrollbar-gutter: stable; } as a CSP-nonced inline style in base/skeleton.html.jinja
  • Stops centered chrome from jiggling by the scrollbar's width when navigating between short and long pages (Windows, Linux, macOS with "Always show scrollbars"); no-op on overlay-scrollbar systems
  • Inline in the skeleton rather than config.css so existing scaffolded projects pick up the fix on a vibetuner upgrade with no CSS rebuild — rendered before bundle.css so a project bundle can still override

Closes #1743.

Test plan

  • New TestScrollbarGutter covers presence, CSP nonce, and pre-bundle.css cascade order
  • uv run python -m pytest tests/unit/ — 797 passed
  • just lint-jinja clean

🤖 Generated with Claude Code

Closes #1743.

Adds `html { scrollbar-gutter: stable; }` as a CSP-nonced inline style
in the framework skeleton. Centered chrome no longer jiggles by the
scrollbar's width when navigating between short and long pages on
platforms with classic scrollbars (Windows, Linux, macOS with
"Always show scrollbars"). On overlay-scrollbar systems it's a no-op.

Inlining in the skeleton (rather than `config.css`) means existing
scaffolded projects pick up the fix on a vibetuner upgrade with no
CSS rebuild needed. Rendered before `bundle.css` so a project's
bundle can still override.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@davidpoblador davidpoblador merged commit 6878bf6 into main May 5, 2026
2 checks passed
@davidpoblador davidpoblador deleted the worktree-shiny-honking-treehouse branch May 5, 2026 17:52
davidpoblador pushed a commit that referenced this pull request May 6, 2026
🤖 I have created a release *beep* *boop*
---


##
[10.8.4](v10.8.3...v10.8.4)
(2026-05-06)


### Bug Fixes

* reserve scrollbar gutter to prevent horizontal layout shift
([#1744](#1744))
([6878bf6](6878bf6))


### Miscellaneous Chores

* **deps:** bump cryptography from 47.0.0 to 48.0.0
([#1751](#1751))
([6768455](6768455))
* **deps:** bump cryptography from 47.0.0 to 48.0.0 in /vibetuner-py
([#1747](#1747))
([d5525d3](d5525d3))
* **deps:** bump resend from 2.29.0 to 2.30.0
([#1750](#1750))
([dfcd20b](dfcd20b))
* **deps:** bump resend from 2.29.0 to 2.30.0 in /vibetuner-py
([#1749](#1749))
([a724ba1](a724ba1))
* **deps:** bump rumdl from 0.1.87 to 0.1.88
([#1752](#1752))
([aa9d738](aa9d738))
* **deps:** bump rumdl from 0.1.87 to 0.1.88 in /vibetuner-py
([#1748](#1748))
([ff2a8cc](ff2a8cc))
* **deps:** drop lint-po git pin in favor of PyPI 0.1.5
([#1745](#1745))
([add3c9b](add3c9b))
* **deps:** update mongo docker tag to v8.3
([#1753](#1753))
([1cb20d0](1cb20d0))
* update deps 2026-05-06
([fb303df](fb303df))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add scrollbar-gutter: stable to prevent layout shift on long pages

1 participant