Skip to content

fix(shell): only the nav list scrolls, so the rail footer stays pinned - #37

Merged
omercelikdev merged 1 commit into
mainfrom
fix/rail-footer-pinned
Aug 10, 2026
Merged

fix(shell): only the nav list scrolls, so the rail footer stays pinned#37
omercelikdev merged 1 commit into
mainfrom
fix/rail-footer-pinned

Conversation

@omercelikdev

Copy link
Copy Markdown
Contributor

The whole rail was one scroller. A console whose nav outgrows the viewport therefore pushes its footer below the fold — and the footer is where the tenant/service switcher lives, the control that scopes everything else on screen.

"Scroll the sidebar to change tenant" is not a thing anybody should have to discover.

Measured, not guessed

Adopting the shell in a console with twelve nav items across four groups (qorpe/mockifyr#323):

viewport 720px · rail scrollHeight 832px · switcher starts at y=707

The change

The scroller moves one element in: the nav list scrolls, the head and footer are pinned around it. Same guarantee that a long nav is never clipped.

The existing "the RAIL scrolls on its own once many capabilities are composed" test is restated rather than deleted — its intent survives, its target moves.

Gates

190 tests · coverage 97.66/92.37/94.59/97.66 · docs · pin · typecheck all clean. Visual baselines moved by a few pixels of vertical spacing; the rendering is otherwise identical, which is what a structural change with no design intent should look like.

The whole rail was one scroller, so a console whose nav outgrew the viewport
pushed its footer below the fold. The footer is where the tenant/service
switcher lives — the control that scopes everything else on screen — and
"scroll the sidebar to change tenant" is not a thing anybody should have to
discover.

Found adopting the shell in a console with twelve nav items across four groups:
at a 720px viewport the rail measured 832px and the switcher started at y=707.

The existing "the RAIL scrolls on its own" test is restated rather than deleted:
the guarantee it protects — a long nav is not clipped — still holds, one element
in. Baselines moved by a few pixels of vertical spacing; the rendering is
otherwise identical.

Refs qorpe/mockifyr#323.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@omercelikdev
omercelikdev merged commit b138578 into main Aug 10, 2026
2 checks passed
@omercelikdev
omercelikdev deleted the fix/rail-footer-pinned branch August 10, 2026 06:34
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.

1 participant