Mobile: site header overflows the viewport on every page (nav + tray push past 390px; page scrolls horizontally) #273
Labels
No labels
actions
bug
cli
duplicate
enhancement
fork
forum
git storage
help wanted
insights
invalid
issues
moderation
oidc
ownership transfer
packages
pr/merge protection rules
projects
pull requests
question
releases
sponsorships
tags
webhooks
wiki
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub#273
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What's wrong
At a phone viewport (390×844, mobile emulation), every page of the app horizontally overflows:
document.documentElement.scrollWidth= 439px vs 390px client width (measured on/,/explore,/new,/import,/setup). The header's right cluster extends past the right edge — the theme-toggle button's right edge lands at x=439, and the notification bell is clipped at the screen edge. The whole page can be panned sideways, which on mobile feels broken.Measured evidence (Playwright, 390×844, is_mobile, DPR 2)
Root cause (code evidence)
flex … items-center gap-6 px-4 py-2.5with no wrapping or scroll container (web/src/App.jsx:47), andflex-wrap: nowrapconfirmed computed. Content: brand +site-nav(5 links, ~208px) + theml-autoright cluster. At 390px the fixedgap-6(24px × 2) plus nav + right cluster exceeds the viewport; nothing yields, so the row (and the page) grows..traypanel (384px — measured) that opens right-aligned from a clipped trigger, compounding the overflow when opened.Fix direction
site-navscroll horizontally within itself (overflow-x: auto, no wrap) while the right cluster stays pinned — the common git-host pattern; or (b) collapse nav links into a hamburger below a breakpoint; or (c) reduce gaps/padding atsm:and allow wrap. (a) is the smallest change and keeps everything reachable..traytomin(384px, calc(100vw - 16px))so the open popover never exceeds the viewport.scrollWidth === clientWidthat 390px on/,/explore,/new,/import,/setup; bell + theme toggle fully visible and tappable; tray popover fits when opened.Fix ready for review: PR #296 (fix/issue-273) — header pins brand + right cluster and lets site-nav scroll internally at narrow widths; node --test 564/564 green, vite build clean, no new deps. Browser verification left open (shared daemon blocks loopback).
Review of PR #296 (fix/issue-273, site header narrow widths) — verified in scratch worktree /tmp/pr296 (removed afterward); main worktree untouched. No browser used (node tests + flex-math reasoning + vite build, per task instructions).
Findings (all checks passed, no fixes needed):
Tests: full node suite 564/564 pass (incl. 7 new header-narrow + 3 nav-api-right); vite build:ui exit 0 (~2s, only pre-existing >500kB chunk warning); compiled CSS confirmed to contain scrollbar-width:none + site-nav rules.
MERGE RECOMMENDATION: ready to merge (not merging per instructions).
Fixed by PR #296 (review: flex math + keyboard scroll verified; 564/564), merged. Closing.