Joshua Shay Kricheli NeuroSymbolic AI
v2 v1

Release · v2.13.16

Load weather in step with the grid and gate the…

Load weather in step with the grid and gate the progress bar on its fade-in

chore v2.13.16 June 21, 2026 Claude 521f4fe

Details

Previously the seasonal + GPU-snow layers deferred their start until the
window 'load' event (plus a requestIdleCallback), so the weather only
appeared after the page had fully loaded — out of step with the
gravitational mesh grid, which paints immediately.
Now the weather:
- starts on the next animation frame, concurrently with the mesh grid, so
  it fades in *while* the page is loading; and
- joins the shared loading pipeline (the top-of-page progress bar): the
  seasonal layer holds a reference via dbProgressStart() and releases it
  once the fade-in completes, so the bar reaches 100% only after the
  weather has loaded and faded in. The GPU snow layer also starts promptly
  so it fades in alongside.
Reduced-motion users get the static frame with no loop and no pipeline
gating. Verified offline: fade-in begins ~130ms into load, the bar stays
active until the weather is fully faded in (~970ms), and completes only
after that (~1180ms); the always-on mesh layer is unaffected.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pn8V4h9YWbjYzdSrDiLiVL

Files changed (2)

frontend/client/ts/effects/seasonal-background.ts +29 −18
frontend/client/ts/effects/snow-gl.ts +3 −12