Blog can now pull live gaming data and surface a curated gamer profile.
- DB: integrations config table (single JSON row, holds secrets, excluded
from export), integration_cache table (lazy TTL cache), posts.links column
- Platform fetchers: Steam (official Web API), PSN (NPSSO->token->trophies),
Xbox (OpenXBL). All degrade gracefully; cache keeps last-good payload on
fetch failure so pages never blank
- Admin /integrations: profile/bio, social links, consoles, favorites,
per-platform creds (blank keeps stored secret), cache TTL, live status table
with refresh
- Public /bio page: avatar, bio, recent games, achievements, favorites,
consoles. Gated behind hasIntegrations() so a vanilla blog stays clean
- About page bio teaser, Shell "now playing" tray widget + Bio nav link
- Per-post "shared on" social links (editable in PostForm, shown on post page)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>