Skip to main content

Changelog · what shipped, when, why

Honest history.

Every entry has a release date, the founder’s voice, and an optional “what we got wrong” note. We don’t edit losses out. G.005 binds us to honest numbers; this page is the long-form version.

  1. P1.3.0172026-05-22

    • launch
    • infra

    Launch retro infrastructure + /blog scaffold

    `pnpm retro:stats` CLI pulls honest numbers straight from local.db / D1 (signups + attribution + library activity + beta cohort + issue SLA attainment). `/blog` index + `/blog/launch-retro` placeholder ready to receive the real post within 14 days of the PH launch.

    Honest note: The retro itself is humans-only — drafted from the runbook template with stats output pasted in. G.005 binds us to publishing the raw numbers, including the losses.

  2. P1.3.0162026-05-22

    • beta
    • infra

    Post-launch SLA tracker (P0 24h · P1 7d)

    `beta_issue` extended with `priority` (P0/P1/P2/P3) + `kind` + auto-computed `sla_due_at`. `lib/issue-sla.ts` 6-state classifier. `/beta/inbox` SLA board with breach/warning/on-track stat cards + pulse on breached. 22/22 round-trip.

    Honest note: The 24h/7d SLA targets only have meaning post-launch; engineering verified now, attainment % accrues Wk 10.

  3. P1.3.0152026-05-22

    • launch
    • infra

    Launch infrastructure

    Signup attribution table (referer + UTM), /api/signup-event, /api/launch-stats (admin), honest /changelog page. PH launch playbook in the runbook.

    Honest note: The PH launch itself is humans-only on Tue/Wed 12:01 AM PT. Engineering verified now; ≥ 1k wk-1 signups accrue then.

  4. P1.3.0142026-05-22

    • beta
    • infra

    Beta iteration tracker (top-5 feedback loop)

    `beta_issue` table with 6-state machine (triaged → in-progress → fixed → confirmed + wont-fix/duplicate). Admin /beta/inbox. Reporter-only confirm flow with denormalised reporter_user_id. 20/20 round-trip.

    Honest note: 5-issues-closed + 4/5-confirmed accrues during Wk 8 once beta has feedback.

  5. P1.3.0132026-05-22

    • beta
    • infra

    Closed beta — invite codes + feedback + activity

    30-invite cohort program (5-cohort split d/t/h/f/p). Soft-gate model — invites mark testers, don't block access. Per-cohort SQL metrics. 21/21 round-trip.

  6. P1.3.0122026-05-22

    • perf

    Performance budget — every route ≤ 200 KB gzipped

    All 8 public routes ship under 200 KB gz first-load. Avg 183 KB, max 190.3 KB (/primitives), max TTFB 93 ms / 500 ms ceiling. Two-tier gate: CI-safe shared-bundle audit + live per-route audit.

    Honest note: LCP/TTI/Lighthouse ≥ 90 need real Chrome — bundle weight + TTFB are the verifiable proxies; PageSpeed runs at deploy time.

  7. P1.3.0112026-05-22

    • a11y

    Accessibility pass — WCAG 2.2 AA

    axe-core 4.11 + jsdom 29 across 8 routes returned 0 critical · 0 serious · 0 moderate · 0 minor. Skip-to-main-content link, agent sidebar dialog ARIA + ESC + focus return, nested <aside> demoted to <div role=note>, 9/9 pages have <main>, 75/75 static a11y assertions in CI.

    Honest note: axe-in-jsdom can't compute color-contrast (no real CSSOM) — 3 'incomplete' per route. NVDA/VoiceOver smoke is humans-only.

  8. P1.3.0102026-05-22

    • polish

    Polish — empty states, animations, easter egg

    Every empty state gets a fruit emoji + warm copy + 2+ CTAs + role='status'. Custom /404 with 3 CTAs. Easter-egg /credits page (Shoulders of giants). Three brand keyframes (fai-fade-in / slide-in-right / pop) gated on prefers-reduced-motion. Global :focus-visible emerald ring.

    Honest note: Tracker said 'dark mode' — studio was dark-by-default since P1.3.002. Building a light theme would've burned the sub-phase; deepened the dark commitment instead.

  9. P1.3.0092026-05-22

    • studio
    • auth

    My Library — save/fork plays & primitives

    Per-user library scoped by UNIQUE(userId, kind, itemId) for idempotent saves. /api/library Node route. <SaveButton> self-contained client component keeps host pages on edge runtime. 26/26 round-trip including persistence-after-sign-out proof.

    Honest note: Anonymous library is per-cookie not per-human — amber banner tells users to link a real provider for portability.

  10. P1.3.0082026-05-22

    • studio

    Agent FAI sidebar — RAG with citations

    Floating chat button → SSE-streamed drawer over 973-doc corpus (101 plays + 847 primitives + 25 knowledge modules). 4-provider LLM abstraction (echo / openai / anthropic / cloudflare-ai). 10/10 canonical Qs. p95 retrieval = 14.26 ms.

  11. P1.3.0072026-05-22

    • studio
    • perf

    Primitive Explorer — search/filter 847 primitives

    p95 = 1.344 ms — 148× under the 200 ms target. Faceted by type/WAF/play-usage, URL-state pagination, case-insensitive search.

  12. P1.3.0062026-05-22

    • studio

    Deploy-to-Azure button

    Canonical portal.azure.com/#create/Microsoft.Template URL builder + ARMVIZ link + honest AWS/GCP graceful-degrade. 81/81 unit tests.

  13. P1.3.0052026-05-22

    • studio

    Play Detail — DevKit/SpecKit/TuneKit/IaC tabs

    Server-rendered ?tab= URL state. JSON-syntax-highlighted reconstructed manifest. 5 IDE deep-links (vscode://, vscode.dev, cursor://, GitHub view, copy clone). 72/72 tests.

  14. P1.3.0042026-05-22

    • studio

    Play Browser — filter, search, paginate

    5-dim faceted filtering + free-text search + URL-state pagination over 101 plays. 20/20 combinatorics tests.

    Honest note: Tracker said '104 plays' — reality is 101. Tracker said '862+ primitives' — reality is 847. Trust data over spec.

  15. P1.3.0032026-05-22

    • auth

    Better Auth — anonymous + GitHub + Entra

    Three sign-in lanes. Anonymous lane verified end-to-end (5/5 round-trip). Drizzle adapter + 4-table schema + dev migrator.

    Honest note: Turbopack can't trace better-auth through pnpm symlinks — switched dev+build to --webpack. Bumped Drizzle peer deps mid-flight.

  16. P1.3.0022026-05-22

    • infra

    Studio scaffold — Next.js 16 + Tailwind 4 + edge

    Hello Studio page renders in 1.33 s. CI workflow (corepack → pnpm → typecheck + lint + build, frozen-lockfile, store cache). 0/0/0 errors.

  17. P1.3.0012026-05-22

    • infra

    ADR-0001 — Studio MVP stack

    9 stack decisions accepted via MADR convention in /decisions. Marginal monthly MVP cost €0 (every choice fits a free tier). G.010 + G.011 explicitly honoured.