Skip to content

CANON-041: replace 100vh with 100dvh in studio-hub sidebar#38

Open
VaultSparkStudios wants to merge 1 commit into
mainfrom
routine/canon-041-dvh-mobile-sidebar
Open

CANON-041: replace 100vh with 100dvh in studio-hub sidebar#38
VaultSparkStudios wants to merge 1 commit into
mainfrom
routine/canon-041-dvh-mobile-sidebar

Conversation

@VaultSparkStudios

Copy link
Copy Markdown
Owner

What

Replace all 100vh usages in studio-hub/src/styles/hub.css with 100dvh.

Files changed: studio-hub/src/styles/hub.css (5 lines, body / #app / .shell / .sidebar desktop / .sidebar mobile drawer)

Why (CANON-041)

On iOS and Android, 100vh is the static (large) viewport height — it includes the browser chrome (address bar, bottom toolbar). When the browser chrome is visible, 100vh is taller than the actual visible area, clipping the bottom of fixed or sticky containers behind the toolbar. 100dvh tracks the dynamic visible viewport and shrinks with the browser chrome, keeping content fully reachable.

The mobile sidebar drawer (position: fixed; height: 100vh inside .shell.mobile-nav-open) is the direct CANON-041 violation: an open mobile nav taller than the screen with content hidden behind the iOS bottom bar. The 100dvh fix ensures the drawer always fits within the visible viewport and its internal overflow-y: auto scroll works correctly.

The desktop sticky sidebar and layout containers (body, #app, .shell) are fixed at the same time — same root cause, same one-line fix.

How to verify on mobile

  1. Open vaultsparkstudios.com/studio-hub/ on an iPhone (Safari) or Android (Chrome).
  2. Tap the hamburger / mobile nav toggle to open the sidebar drawer.
  3. Before: the bottom of the sidebar is clipped behind the browser's address/toolbar; scrolling to the bottom nav items is broken.
  4. After: the sidebar fills exactly the visible screen height; all nav items are reachable and the drawer scrolls correctly within itself.
  5. Rotate to landscape — the drawer should still fit the shorter landscape viewport.

Do NOT merge — open for founder device-verify before landing.


Generated by Claude Code

On iOS/Android, 100vh is the larger (static) viewport height and clips
the bottom of fixed/sticky containers behind the browser's dynamic chrome
(address bar, bottom toolbar). 100dvh tracks the actual visible viewport,
so the mobile nav drawer and sticky desktop sidebar are always fully
reachable without scrolling past hidden content.

Fixes body, #app, .shell (min-height) and .sidebar height in both the
sticky desktop position and the fixed mobile-nav-open overlay.
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.

2 participants