mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-24 12:42:38 +00:00
762fef4e24
Crawlers and LLM fetchers run no JS and saw only the skeleton of the stats band. app/page.tsx now awaits one read of the public stats blob during next build (lib/platformStats.ts: manifest, then the versioned file it names) and renders the numbers into the export. StatsBand starts from that snapshot and replaces it with the live numbers; a failed live read keeps the baked numbers instead of hiding the band. The read is awaited at page level, not under Suspense: React moves a resolved boundary of a page this size into a hidden div at the end of the body. It uses no-store (route force-static), so Next's fetch cache cannot hand a later build the previous numbers. Fail-soft: without a snapshot the page ships the skeleton and loads live as before, and deploy-web.yml warns. The browser now revalidates both files (no-cache instead of force-cache): the backend rewrites the per-day file every 2 hours under immutable, so a copy cached earlier that day would have made the numbers drop after load. The page body moved to components/landing/LandingPage.tsx, which the marketing guards render synchronously; StatsBand left the .json() ratchet baseline; the sitemap lastmod of / includes the body. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4ddfosgdeCwXo7NvB9xd2