Skip to content

Release v1.27.1 — iPad layout fixes#402

Merged
MBombeck merged 5 commits into
mainfrom
release/v1.27.1
Jul 4, 2026
Merged

Release v1.27.1 — iPad layout fixes#402
MBombeck merged 5 commits into
mainfrom
release/v1.27.1

Conversation

@MBombeck

@MBombeck MBombeck commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Summary

Fixes the squeezed layout on tablet-width screens reported from an iPad. A viewport sweep across 43 routes at three iPad widths (768/834 portrait, 1024 landscape) found two root causes; both are fixed and now guarded by an e2e spec.

What lands

  • Sidebar starts on the icon rail at tablet widths. A 256 px expanded sidebar next to a 768 px viewport left the content a 512 px column — every page rendered squeezed. With no stored preference, md–lg widths now default to the collapsed rail; the content column grows from 512 px to 704 px on a 768 px viewport. A manual toggle persists and wins on every later visit, unchanged.
  • min-w-0 on the shell's content column. The measurements table's intrinsic min width widened <main> past the viewport and put the whole page on a horizontal scrollbar at 768 px. The column can now shrink; wide children scroll inside their own overflow-x-auto containers.
  • Regression guard. e2e/ipad-viewport.spec.ts asserts no horizontal overflow and a ≥690 px content column at 768×1024 on three representative routes.

Verification

Sweep re-run after the fixes: 0 overflows across all 43 routes × 3 viewports; main column 704 px (768 portrait), 770 px (834 portrait), 768 px (1024 landscape, unchanged). pnpm typecheck clean · pnpm lint clean · TZ=UTC pnpm test (12,692 passing) · pnpm build clean · prettier clean.

MBombeck added 5 commits July 4, 2026 15:51
A 256 px expanded sidebar next to a 768 px viewport leaves the content
a 512 px column — an iPad held upright rendered every page squeezed.
With no stored preference, md–lg widths now start collapsed to the
icon rail; a manual toggle persists and wins on every later visit.
…idth

Without min-w-0 the shell's flex column adopted the measurements
table's intrinsic min width, widening main past the viewport and
putting the whole page on a horizontal scrollbar at tablet widths.
Wide children scroll inside their own overflow-x-auto containers.
Reading matchMedia (or localStorage) inside the initial render branches
the hydration render away from the SSR markup — the sidebar is only
CSS-hidden below md and still hydrates its DOM there, so the phone
viewport tripped React #418 in the dashboard console guard. The
collapsed state now gates on the mounted probe like the module filter
above it: SSR and hydration paint the expanded shell, the stored pref
or tablet default applies right after. useIsMobile learns the lg cut
for the tablet probe.
@MBombeck MBombeck merged commit 6360ba1 into main Jul 4, 2026
13 checks passed
@MBombeck MBombeck deleted the release/v1.27.1 branch July 4, 2026 14:38
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