Added
- Claude Fable 5 support. The Anthropic provider now defaults to
claude-fable-5, Anthropic's newest model. Override withANTHROPIC_TEXT_MODELas before. Bundled price snapshot updated ($10/M in, $50/M out). scripts/optimize-hero-images.sh— recompresses existing AI hero PNGs in R2 to WebP (~97% smaller; a 10-post /blog page drops from ~14 MB of images to under 600 KB) and repointsblog_postsautomatically.- Proper 404s. A branded
404.htmlreplaces the SPA fallback that returned the homepage with HTTP 200 for unknown URLs (soft-404 fix). - Marketing site redesign. Editorial press-sheet look: serif display headlines, highlighter-yellow accents, provider ticker, folio numerals, full-bleed nav, dark mode.
Changed
- Hero images store their real format. The image step sniffs the provider's bytes (JPEG/WebP/PNG) and writes the matching extension + content-type instead of assuming PNG.
- All public pages self-host fonts from
/_fonts/— no more Google Fonts round-trip on blog, posts, programmatic pages, or docs. - Blog index LCP: first card loads eagerly with
fetchpriority=high+ preload; page 1 shipsog:imageandtwitter:card=summary_large_image.
Security
- Constant-time admin-token comparison (bearer / X-Admin-Token).
- Baseline security headers:
X-Content-Type-Options: nosniff+Referrer-Policyon all pages;X-Frame-Options: DENY+Cache-Control: no-storeon the admin SPA and sign-in page.
Upgrading
Re-run the installer with your existing slug (idempotent), or use the admin Updates tab. To shrink existing hero images, run bash scripts/optimize-hero-images.sh once after updating.