CI green-up + chunk-load auto-recover. Closes the three pre-existing red checks that had been failing on every push since v1.4.38 landed, plus a small client-side fix for the stale-shell post-deploy paper-cut.
Added
- Automatic recovery from stale-shell
ChunkLoadError. After a deploy the cached SPA shell still references the old chunk filenames; Next.js fetches them, the new server 404s, and the user lands on the generic error surface.AppErrornow detects the chunk-load error family and triggers a singlewindow.location.reload()to fetch the fresh shell.sessionStoragegates the auto-reload to once per session so an unrecoverable error cannot loop. Browsers in strict-privacy mode fall through to the error UI cleanly.
Fixed
- TODO marker on the correlations
degradedsentinel removed. TheNo TODO markersworkflow had been failing on every main / develop / PR build since v1.4.38; the keyword has been rewritten into prose without changing the documented intent. - Rollup integration test no longer races the read path. The v1.4.37.1 fire-and-forget on
ensureUserRollupsFreshleft the cold-testcontainer integration test assertingdailyByTypebefore the rollup writes had landed. The test now callsrecomputeUserRollupsexplicitly so the rollup-driven branch is exercised deterministically — matches the production warm-cache contract. - Doctor-report e2e specs target the v1.4.37 hero-card testids. v1.4.37 lifted the doctor-report card out of the export-tile grid and renamed
export-card-doctor-report/export-action-doctor-reporttoexport-hero-doctor-report/export-hero-doctor-report-action. The Playwright suite still targeted the old ids and timed out on every run. measurement-flowe2e mock returns a completeMeasurementshape. The list-page expectsunitandsourceon every row; the mock omitted both, so the list render crashed before painting the row and the test'sexpect.poll(...)for "78.4" timed out.- Dashboard "View all" achievement link reaches the 44 px tap-target floor. The link was 46×16 px; mobile-viewport e2e rejected it.
inline-flex min-h-11 items-centerkeeps the visual styling identical while satisfying the floor.
Operator notes
- No new migration. No env-var change. No public API change.
- Coolify auto-deploys main on tag push.