Skip to content

fix(playground-mini-lynx): give the page element the screen's height, so the app scrolls - #19

Merged
amritk merged 2 commits into
mainfrom
claude/mobile-responsive-playgrounds-hg5n1j
Jul 28, 2026
Merged

fix(playground-mini-lynx): give the page element the screen's height, so the app scrolls#19
amritk merged 2 commits into
mainfrom
claude/mobile-responsive-playgrounds-hg5n1j

Conversation

@amritk

@amritk amritk commented Jul 28, 2026

Copy link
Copy Markdown
Owner

On a device the page element IS the screen — the viewport sizes it, and a tree
taller than it scrolls inside a scroll-view. In a browser it is an ordinary
element that sizes to its content, and the reset's own flex-shrink: 0 kept it
from being squeezed back down: the page grew past the bottom of #app, which
clips, so every scroll-view inside it was unbounded and nothing scrolled
anywhere. The tab bar sat below the fold with no way to reach it.

Hand the height back in the reset, where the rest of the browser-vs-engine
corrections live. Both declarations are needed for the two shapes a host box
takes: height for a block container, the flex pair for a flex one.

📦 Bundle-size delta vs main (55e928b428c6db)

Package Entry main PR Δ
mini core (.) 3,156 B 3,156 B +0 B (+0.0%) ⚪
mini flow 4,083 B 4,083 B +0 B (+0.0%) ⚪
mini router 4,158 B 4,158 B +0 B (+0.0%) ⚪
mini forms 4,259 B 4,259 B +0 B (+0.0%) ⚪
mini query 1,988 B 1,988 B +0 B (+0.0%) ⚪
mini-lynx core (.) 5,459 B 5,459 B +0 B (+0.0%) ⚪
mini-lynx flow 4,850 B 4,850 B +0 B (+0.0%) ⚪
mini-lynx router 5,856 B 5,856 B +0 B (+0.0%) ⚪
mini-lynx forms 5,272 B 5,272 B +0 B (+0.0%) ⚪
mini-lynx query 1,990 B 1,990 B +0 B (+0.0%) ⚪
mini-lynx testing 2,451 B 2,451 B +0 B (+0.0%) ⚪

Gzipped bytes of each bundled entry (esbuild, minified, browser/es2022, optional peer deps external). Bundling is deterministic, so unlike a timed benchmark these numbers carry no noise and every Δ is exact. ⚪ within ±0.5% · 🟢 smaller · 🔴 larger. Each package's core (.) must stay flat as subpath features land — that is the whole charter, and src/core-size-budget.test.ts holds the absolute ceiling.

claude added 2 commits July 28, 2026 08:29
… so the app scrolls

On a device the page element IS the screen — the viewport sizes it, and a tree
taller than it scrolls inside a scroll-view. In a browser it is an ordinary
element that sizes to its content, and the reset's own `flex-shrink: 0` kept it
from being squeezed back down: the page grew past the bottom of `#app`, which
clips, so every scroll-view inside it was unbounded and nothing scrolled
anywhere. The tab bar sat below the fold with no way to reach it.

Hand the height back in the reset, where the rest of the browser-vs-engine
corrections live. Both declarations are needed for the two shapes a host box
takes: `height` for a block container, the flex pair for a flex one.
`playground-mini` was a desktop page with a breakpoint bolted on: nine
multi-word nav labels wrapped into three lines at the top of every page, the
readouts wrapped mid-column and lost the alignment that was the point of them,
and every control was under the size a thumb can hit. It is now written
small-screen first — the sidebar is a drawer behind a top bar below 760px and
the same `<aside>` becomes the sticky sidebar above it, with one signal driving
one class and no second markup path. Readouts scroll rather than wrap, fields
take a 16px font so iOS stops zooming the page on focus, hover styles are
behind `hover: hover` so they do not stick after a tap, and the gutters clear a
notch in landscape. Changing section closes the drawer and returns to the top —
the section, not the path, so the `/router/:owner/:repo` demo can still
navigate within itself.

`playground-mini-lynx` was already phone-shaped, but a row that did not fit ran
off the side of the screen and Lynx clipped it, taking the tap targets with it.
Lynx has no `@media` to fall back on, so `<Row>` wraps by default now and chips,
actions and cards shrink instead of overflowing. The frame also stops above the
home indicator, which `viewport-fit=cover` had it running under.
@amritk
amritk merged commit 0081d00 into main Jul 28, 2026
2 checks passed
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