Skip to content

fix(overview): mobile-responsive baseline for the slide-deck microsite#586

Merged
HenryLach merged 2 commits into
mainfrom
fix/mobile-baseline-responsive
May 18, 2026
Merged

fix(overview): mobile-responsive baseline for the slide-deck microsite#586
HenryLach merged 2 commits into
mainfrom
fix/mobile-baseline-responsive

Conversation

@HenryLach
Copy link
Copy Markdown
Owner

Makes the Taskplane Overview microsite genuinely responsive on portrait phones (~375px) and tablets. Sage-reviewed plan — consolidated into one PR rather than two so the viewport change doesn't ship without the high-risk grid collapses.

Background

The deck was originally authored as 16:9 video frames at 1820px max-width with a global --scale: 1.5 knob. After the GitHub Pages migration, the absence of <meta name="viewport"> meant mobile browsers fell back to shrink-fitting a 980px virtual viewport — making the deck look responsive when it actually wasn't (everything was being pinch-zoomed to ~38% scale on a 375px iPhone).

What changes

Foundational

  1. Viewport meta tag injected into every page (<meta name="viewport" content="width=device-width, initial-scale=1">).
  2. shared.css responsive block:
    • Global media safety: img, svg { max-width: 100%; height: auto; }
    • @media (max-width: 900px)--scale drops to 1.1, page padding tightens to 20px / 24px
    • @media (max-width: 700px)--scale drops to 0.95 (floored, per Sage — anything smaller makes dense card text microscopic), padding shrinks to 14px / 18px, h1 caps at 26px * var(--scale), and the eyebrow grid restructures so the wordmark logo sits on its own row above the title + nav row.

Per-page (the three high-risk pages with fixed-pixel grid tracks)

  • Page 07 (mailbox protocol).topology (200px / 1fr / 200px) stacks vertically; .props 4-col collapses to 2-col at 900px and 1-col at 700px; .lane label column tightens on phone.
  • Page 09 (branching lifecycle).branch-labels (380px / 1fr) stacks; .steps 5-col collapses to 2-col at 900px and 1-col at 700px; SVG .git-graph removes preserveAspectRatio="none" (which was distorting the diagram non-uniformly at any width ≠ 1500×360) and now scales proportionally via aspect-ratio: 1500 / 360. On phone the graph-card scrolls horizontally with a 760px min-width SVG so swim lanes stay readable instead of being crushed to a ~90px-tall strip.
  • Page 12 (dashboard visibility).layout 2-col (1fr / 320px) stacks vertically at 900px; dashboard screenshot lands above the side panels.

What's deferred to Phase 2

The remaining repeat(N, 1fr) grids (pages 01, 03, 04, 06, 10, 11, 13-17, index). Those render acceptably at narrow widths thanks to the --scale + padding response in this PR, but will benefit from cleaner stacking via auto-fit minmax() or explicit media queries.

Sage review summary

Sage pushed back on the original 2-PR plan: shipping viewport meta + token tweaks without collapsing the worst grids in the same release would trade 'tiny but laid-out' for 'actual overflow and distortion'. This PR follows Sage's consolidated baseline + 3 high-risk pages recommendation, with the breakpoint values and --scale floor adjusted per Sage's feedback (700px instead of 600px, 0.95 floor instead of 0.85).

Validation suggested before merge

  • 390px width (iPhone-class) in DevTools or on-device
  • 430px width (iPhone Plus / Max)
  • 768px width (iPad portrait)

Why no release

Docs/microsite-only change. No runtime, CLI, config, or schema touched.

HenryLach added 2 commits May 18, 2026 16:56
The deck was originally authored as 16:9 video frames at 1820px max-width
with a global --scale: 1.5 knob. After the GitHub Pages migration, the
absence of <meta name='viewport'> meant mobile browsers fell back to
shrink-fitting a 980px virtual viewport, masking the fact that none of
the layouts collapsed below desktop widths. This change makes the site
genuinely responsive for portrait phones (~375px) and tablets.

What landed (one PR per Sage's recommendation, not two):

1. Viewport meta tag injected into every page so mobile browsers stop
   the shrink-fit fallback and honor the actual device width.

2. shared.css responsive block:
   - Global media safety: img, svg { max-width: 100%; height: auto; }
   - @media (max-width: 900px): --scale drops to 1.1, page padding tightens
     to 20px / 24px.
   - @media (max-width: 700px): --scale drops to 0.95 (floored — anything
     smaller makes dense card text microscopic on phones), padding shrinks
     to 14px / 18px, h1 caps at 26px * --scale, and the eyebrow grid
     restructures so the wordmark logo sits on its own row above the
     title + nav row (otherwise the three-cell 1fr/auto/1fr layout
     overflows below ~340px).

3. Three pages with fixed-pixel grid tracks were collapsed in this PR
   instead of being deferred — otherwise the viewport change would
   regress them from 'tiny but laid-out' to 'horizontally scrolling':

   - Page 07 (mailbox protocol): .topology grid 200px/1fr/200px stacks
     vertically; .props 4-col collapses to 2-col at 900px and 1-col at
     700px; .lane label column tightens on phone.
   - Page 09 (branching lifecycle): .branch-labels 380px/1fr stacks;
     .steps 5-col collapses to 2-col at 900px and 1-col at 700px;
     SVG.git-graph removes preserveAspectRatio='none' (which was
     distorting the diagram non-uniformly at any width != 1500x360)
     and now scales proportionally via aspect-ratio: 1500/360. On
     phone the graph-card scrolls horizontally with a 760px min-width
     SVG so swim lanes stay readable instead of being crushed to a
     ~90px-tall strip.
   - Page 12 (dashboard visibility): .layout grid 1fr/320px stacks
     vertically at 900px, dashboard screenshot above side panels.

Phase 2 (a follow-up PR) will sweep the remaining repeat(N, 1fr) grids
(pages 01, 03, 04, 06, 10, 11, 13-17, index) for either auto-fit
collapse or explicit media queries. Those pages render acceptably at
narrow widths thanks to the --scale + padding response in this PR,
but will benefit from cleaner stacking.
Phase 2 of the mobile responsive work, consolidated into the same PR
as the baseline so the site doesn't ship in an intermediate state.

Each affected page now collapses its content grids on phone-portrait
viewports (<=700px) and an interim 2-column grid at tablet sizes
(<=900px) where the original was 3+ columns:

  01 (origin timeline)   .timeline 4-col   -> 2 -> 1
  02 (factory vs dark)   .split 2-col      -> 1 at 700
  03 (agent quartet)     .grid 4-col       -> 2 -> 1
  04 (task packet)       .split + .callouts -> 1 at 700, callouts 2 at 900
  05 (determinism)       .split + .items   -> 1 at 700
  06 (cross-model)       .flow stacks, .arrow-col hidden, .verdicts 4 -> 2 -> 1
  08 (waves/lanes)       waves scroll horizontally within their cards
                          (.lanes min-width 540px); .rules 3 -> 2 -> 1
  10 (semantic merge)    .split + .merger-grid 5 -> 2 -> 1
  11 (polyrepo)          .repos + .rules 3 -> 2 -> 1;
                          .dag flex stacks vertically and arrows rotate 90deg
  13 (why pi)            .reasons 3 -> 1 at 700
  14 (pi caps)           .capabilities 6 -> 2 -> 1
  15 (get started)       .steps 9 -> 2 -> 1
  16 (real work)         .steps 6 -> 2 -> 1
  17 (sage)              .cards 3 -> 2 -> 1; .flagship-inner 2-col stacks at 700
  index                  .grid 17 cards -> 2 -> 1

Pages 02 and the index were not on the user's explicit fix list but
share the same pattern; included for consistency.

Page 06's arrow column (worker -> reviewer direction indicator) is
hidden on phone because the vertical reading order makes the
directionality implicit and the horizontal arrow would not render
sensibly between stacked actor boxes.

Page 08 keeps each wave's 3 lane cards horizontal but lets the wave
card scroll internally (lane affinity reads better laterally); only
the bottom rule summary cards collapse.

Page 11's segment-DAG arrows rotate 90deg so the polyrepo flow
reads top-to-bottom on phone.
@HenryLach HenryLach merged commit 34c9383 into main May 18, 2026
1 check passed
@HenryLach HenryLach deleted the fix/mobile-baseline-responsive branch May 18, 2026 21:46
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