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>
Rework console theme stylesheets and add opt-in .rb-bg cube field
(used by PS2 BIOS bobbing-cube background) wired through Shell.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Brings the catalog to nine. Each is a single scoped [data-theme="..."]
CSS file plus a registry entry — no markup changes.
- ps1: charcoal BIOS, gray panels, uppercase letterspacing
- ps3: animated XMB sky gradient + drifting wave, black glass
- wii: white channels, rounded pills, soft blue glow
- nds: silver shell with content framed as the touch screen
- dreamcast: cream BIOS, conic-gradient orange swirl, lowercase blue
- jv2002: dense boxy portal, Verdana 11px, red masthead, blue nav tabs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Brings the catalog to nine. Each is a single scoped [data-theme="..."]
CSS file plus a registry entry — no markup changes.
- ps1: charcoal BIOS, gray panels, uppercase letterspacing
- ps3: animated XMB sky gradient + drifting wave, black glass
- wii: white channels, rounded pills, soft blue glow
- nds: silver shell with content framed as the touch screen
- dreamcast: cream BIOS, conic-gradient orange swirl, lowercase blue
- jv2002: dense boxy portal, Verdana 11px, red masthead, blue nav tabs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Next.js 16 (App Router, TS) + SQLite (better-sqlite3) + marked.
Core: a shared semantic HTML skeleton (rb- classes in Shell.tsx) that
each theme reskins via a scoped [data-theme="..."] CSS file. Theme is
persisted in a cookie, resolved server-side in the root layout, and
swapped live by the client switcher (no reload, no FOUC).
- DB auto-migrates and seeds posts on first run (data/blog.db, gitignored)
- Pages: post list, post detail (markdown), about
- Themes shipped: Windows XP (Luna), Windows 9x, PlayStation 2
- Adding a skin = registry entry + one scoped CSS file
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>