Changelog
All notable changes to aichat-studio (shell + convert) are documented here.
Format: keepachangelog.com · Semver: semver.org
[Unreleased]
Added
- Brand kernel sync — emerald token migration + product register anchors (PR #169) — 4 mg-* tokens swapped from indigo (
#4F46E5/#EEF2FF/#3730A3) to canonical emerald (#047857/#ECFDF5/#065F46) peraichathub/BRAND.md§2. New tokens:--accent-hover/--accent-line+ 5--mg-*aliases.--ink-4restored to canonical slate-500#64748B. Added PRODUCT.md + DESIGN.md at root for the frontend-design-reviewer agent. - Impeccable-distilled antipattern detector (PR #168) —
scripts/audit-design-tells.mjsships 7 regex rules (color cream / hero ceiling / tracking floor / all-caps body / z-index scale / motion bounce / copy buzzwords) vendored frompbakaus/impeccableApache 2.0. New scripts:audit:design:tells,audit:design:tells:strict,audit:design:all. - Husky pre-push + CI strict gate (PR #171) —
.husky/pre-pushrunspnpm audit:design:tells:strict(~500ms) before remote push. Pre-push now the sole verification gate after GHA disabled (see Changed). - a11y followup — restore LH a11y 100 on 3 surfaces (PR #170) — shell
/93→100, sandbox/sandbox/auth/96→100,/sandbox/billing/97→100. Droppedopacity-[0.72]from ProductGrid coming-soon cards (used dashed border for visual distinction); added<main>landmark wrappers to shell BaseLayout + 3 sandbox pages. - Hub↔studio linkage P1-P4 (PR #237-#241) — emerald accent across studio,
<AttributionChip>cross-link badge, hub-redirect allow-list widened toaichathub.ukfamily, anon-lock surface coupling. Token-sync recon doc (P1). - Typography role tokens —
--mg-fs-*+--mg-space-*(PR #239 + P2.5a-e sweep #243, #245-#249, #251, #243) — raw-px font-size literals migrated to role tokens across shell + convert (~155 sites in 5 batches). Adds--mg-fs-detail-h1for pricing hero,--mg-fs-statfor wallet/dashboard anchors. - Single-stepper convert UX (PR #253, #254, #257, #258, #259) — Phase 1 folds dual step-system into one workbench accordion; Phase 2 adds Edit internals + Step02 readiness meter; Phase 3 retires
UserCardContext+ bridge to single store + tears down HiW subsystem entirely (PR-2 #258); orphaned HiW CSS/i18n/components purged in #259. - Compliance pack L0-L8 + Footer F1-F3 + SEO S1-S3 (PR #260-#275) — 8 legal pages (ToS / Privacy / Refund / AUP / Sub-processors / DPA / Cookies / Contact) +
<LegalLayout>+/legal/index; shared<Footer>(4-column legal + version stamp) mounted in shell + convert BaseLayouts; checkout T&C consent attest under<BuyCreditsButton>; Open Graph + Twitter meta baseline in both BaseLayouts;sitemap.xml+robots.txtcovering legal pack + cross-link; JSON-LD Organization structured data. - Publish hardening — placeholder check + OG default + deploy gate (PR #278, #279, #280) —
pnpm legal:check-placeholdersscript catches stray[TAG-TBD]markers across legal pack; 3 LEGAL-DRAFT decisions ratified (acceptable-use §2 SFW-only, terms §13 USD-100 cap / 12mo look-back, terms §15 court-of-§1 jurisdiction); registration-address footprint collapsed to one canonical site (terms.astro:12§1); 1200×630 OG default PNG (emerald-700 ground, "aichat-studio" + subtitle) shipped to both shell + convert;pnpm deploy:pagesgate()now invokeslegal:check-placeholdersbefore any production upload (emergency bypass:--allow-placeholders).
Changed
- Renamed
studio→aichat-studio(L2 scope, PR #167) — npm root + 7 workspace packages (@studio/*→@aichat-studio/*), GitHub repo (zmuleyu/studio→zmuleyu/aichat-studio), shell-group manifest entry. Cloudflare Pages project, D1 databases, Worker, production domainstudio.aichathub.uk, and OAuth/Creem callbacks all KEPT unchanged. - GitHub Actions disabled — Bucket-A mode adoption (PR #246) — repo switched to pre-push-only verification per
docs/specs/2026-06-12-disable-gha-cleanup.md..husky/pre-push5-step gate (audit:tells:strict / typecheck / unit tests / functions tests / scripts tests, ~60s total) replaces every prior CI workflow. - HiW (HowItWorks) subsystem retired (PR #258, #259) — accordion-based step system superseded by single-stepper workbench.
UserCardContext+ state-bridge + orphanedhiw.*i18n/CSS/components removed. Step01 honest parse-state idea preserved as followup for future single-stepper port. - Footer column headings
h3→h2(PR #280) — semantic correctness within<footer>landmark; eliminates h1 → h3 heading skip on legal pages whose body has no body h2. Sharedpackages/ui/src/Footer.astroso the baseline lifts across every shell + convert page.
Fixed
- Creem test-mode product wiring drift (PR #233) — recreated Starter / Maker / Workshop in workspace
aiworkertest mode after B1 wet-run surfaced Starter charging $9 (test-E2E webhook product) and Maker/Workshop 500-ing (IDs not in current workspace). Newprod_*IDs wired in code +CREEM_PRODUCT_CREDITSsecret updated; redeployb88632a2baked the change; prod-verified at $2/$8/$28.
Security
- 2026-06-14 deps audit triage (PR #280) —
pnpm audit --audit-level=lowsurfaced 28 unique advisories (1 critical / 6 high / 14 moderate / 7 low). 6 prod-runtime CVEs in Astro 4.16.19 require 4→5 major upgrade (auth bypass / XSS / X-Forwarded-Host reflection). 1 critical Vitest UI server CVE requires 2→3 upgrade (test-only). undici transitive bumps (4 CVEs) gated on@cloudflare/workers-typesorwranglerparent. Wrangler 3.114.17 OS Command Injection (GHSA-36p8-mvp6-cv38) verified unaffected: direct wrangler 4.98 is out of vuln range; transitive 3.100.0 (via@cloudflare/vitest-pool-workers) reaches the vulnerable code path only viawrangler pages deployCLI which is never invoked from test code. Migration backlog tracked indocs/specs/2026-06-14-deps-audit-triage.md.
Docs
- Next-phase roadmap consolidated (this commit) — added ROADMAP.md at root tracking R1 (M1/M2/M3 authed UATs), R2 (F-A/F-E/#155 ship), R3 (infra parallel: cross-app token drift / sandbox SEO / focus-ring), R4 (S3 GA gate + ai-image-studio integration sketch).
- 2026-06-08 prod Convert UAT (6 HARD findings) — 5 design specs added under
docs/specs/2026-06-09-*covering triage, source-slugs unification (#155 root), widget↔editor state bridge (F-E), widget→editor scroll affordance (F-A). 3 authed-UAT design+plan packs (M1/M2/M3) ready once fresh auth captured. - ROADMAP refresh — 2026-06-14 snapshot (PR #280) — S3 row updated with concrete shipped milestones (single-stepper Phase 1-3 GA, HiW retire #258, compliance-pack #274-#278, publish hardening #278-#280); §7 PR queue example refreshed from stale #170/#171 to live 2026-06-14 batch.
[1.0.0] - 2026-06-02
Added
- Convert fork mode (milestone C) — character cards can be "forked" into tone-rewritten variants instead of platform-converted. Word-level DiffView surfaces what changed per field, segmented Convert/Fork tablist provides a11y-clean mode toggle, lineage hint toast pins the source card name with per-card-id dismiss persistence. Backend SSE batch path holds N×200 credits and single-debits on success (CreditDO unchanged). Fields capped at 3 per batch to bound worst-case waste before D7 client-disconnect ships in v1.0.1.
- Shell ProductGrid hub (milestone B) —
apps/shell/src/pages/index.astronow composes<ProductGrid />driven byapps/shell/src/data/products.tsregistry. Grid scalesgrid-cols-1 / md:grid-cols-2 / lg:grid-cols-3and handles ready (<a>) vs coming-soon (<div role=group>) variants automatically. Cross-device Playwright smoke covers sm 375 / md 768 / lg 1280 viewports.
Notes
Closes the 1.0 roadmap (docs/specs/2026-06-02-studio-convert-1.0-roadmap-design.md). Carry-overs explicitly deferred: D7 client-disconnect handling, impl-review M/S items, orphan-holds reconciliation cron — all tracked for v1.0.1 / v1.1.
[0.0.1] - 2026-06-02
Added
- Initial
CHANGELOG.md(single L2 source of truth for shell + convert) - Top-nav
✦ v0.0.1version chip rendering on both apps /whats-newand/convert/whats-newroutes rendering this changelogparseChangelogToputility in@aichat-studio/ui(pure TS, build-time parse)
This is milestone A of the 1.0 roadmap — version surfaces only. Convert fork mode (C) and shell product grid (B) ship later.