Skip to content

Mobile reading-page scroll edges

Request and evidence

Follow-up to the mobile motion release (bb7598686). The supplied iPhone screenshots show a solid status strip, a rectangular header surface, a faint bottom band, and dark space below a focused Community reply. The user explicitly chose to keep search and account controls visible while scrolling.

Code inspection found a fixed wallpaper that can stop at Safari's browser viewport and two simultaneous bottom safe-area reservations (shell and main). The previous header blurred a separate uniformly tinted pseudo-element. These are client paint/layout issues; there is no evidence here of a CDN fault.

Changes

  • Keep the mobile Community/Discover toolbar sticky. Blur its own surface and dissolve its lower edge into the content; replace the uniform rectangular backing. Preserve control hit targets and body-portalled menus.
  • Dim the blurred backdrop for contrast over white Community cards; give the search field a thin dark fill, readable placeholder, and subtle highlights. Brighten the neutral free-plan balance within this mobile toolbar.
  • Paint the actual document background and make its wrappers transparent. Use repeating tiles with softly matching ends, sized independently of feed length. Preserve wallpaper preferences, including portrait custom images. Loading an old image after leaving a route cannot change the new route.
  • Remove duplicate shell safe-area padding. While an editor is focused, remove the remaining bottom inset and suppress elastic document overscroll.
  • Keep native keyboard/scroll handling from the preceding release. This adds no viewport resize listeners, delayed scroll corrections, or animated shell dimensions. Other contained pages retain their wallpaper renderer.
  • Respect reduced transparency with a solid fading surface and no blur; use the same readable surface on older browsers where blur is disabled/absent.

Primary references

Verification

  • pnpm build: pass (5/5 tasks).
  • pnpm typecheck: pass (8/8 tasks).
  • Canvas, viewport, page scrolling, and history restoration tests: 34/34 pass. New tests first failed against the missing canvas support and document-sized background, then passed after implementation.
  • Full app suite: 738 tests, 735 pass; the same three existing drawer geometry failures documented in the previous release. No new failures.
  • Local Vite HTTP checks: Community, Discover, canvas helper, AppShell, and global stylesheet all return 200. Development server stopped after checking.
  • Independent review identified root wallpaper resizing with feed growth; corrected with stable tiles and reviewed again without blocking findings.

No local browser was opened, per AGENTS.md. iPhone keyboard scrolling and final Safari status/address-bar glass still require physical-device observation. The webpage cannot force native Liquid Glass appearance across OS versions/settings.

Rollout

Push this change to main using the existing Railway auto-deployment. Verify Railway status, /health, both reading-page URLs, and deployed JS/CSS containing the new reading-canvas variables and header styles. No schema or service changes.