History detail · first lightbox prototype
Full-screen lightbox design for clicking into a history tile — prompt, details, references, public toggle, and fullscreen preview. Prototype lives in /loom; React port lands next.
Studio composer upgrade
Dashboard gained a 4-slot reference grid, a model dropdown, per-severity error banners, an expandable history strip, and a cancel button during generation. Tile actions (download, add-to-workspace) appear on hover.
Credits ledger and ULID hardening
Debit is now a single atomic D1 batch (balance update + ledger insert), redeem rolls back fully on any downstream failure, and ULIDs now carry the full 80 bits of randomness instead of 50.
Language switch preserves page
Clicking 中文 / English on any page now keeps you on that page in the other locale instead of bouncing to the landing.
Auth modal + email signup
Sign-in and sign-up moved into a modal dialog that opens via ?auth=signin. Email + password signup ships with PBKDF2-SHA-512 hashing and a Resend-powered verification email.
Dashboard, history, and public gallery
Three product pages went from stubs to real: /dashboard runs generations end-to-end, /history shows every image you've made with a public toggle, /gallery lists everyone's opt-in public work.