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
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 |