mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
`/insights` landed at the wrong vertical position when the user returned from a sub-page, and vertical swipes that began on the sticky `<InsightsTabStrip>` were eaten by the strip's `overflow-x-auto` scroll container so the page "felt stuck" mid-gesture. Two roots, two fixes: 1. Move the horizontal pill scroll from the outer `<nav>` onto the inner pill-row `<div>` (the inner row already declared `overflow-x-auto`; the outer one is redundant once it's gone). Add `touch-action: pan-y` to the outer `<nav>` so vertical swipes pass through. 2. Defer the `<SubPageShell>` scroll-reset to the next animation frame so the sub-page's first paint settles before the scroll lands. Mirror the same deferred reset on the `/insights` mother page so a back-navigation lands cleanly at the top instead of inheriting the sub-page's vertical position through cached scroll state. A Playwright spec at `e2e/insights-scroll-restoration.spec.ts` locks both regressions: (a) /insights → /insights/<sub-page> → back lands within 50 px of the top, (b) the outer `<nav>` declares `touch-action: pan-y` and no longer owns the horizontal scroll. iOS contract: none — both surfaces are web-only.