Every release lands here with the same shape: version, date, an
Added / Changed / Fixed breakdown, and a tag indicating whether
the change is visible to consumers of the system (external) or internal
plumbing only. Current head:
v1.4.0.
-
v1.4.0
externalPremium page data binding + audio samples
Added
- Real audible dialect samples on 8 coverage cards (espeak-ng synthesis, 40-55KB MP3 each). New coverage-audio-player.ts with single-play behavior.
- 3-quote customer proof grid (Tier-1 ASR provider + European telco + public-sector authority) replacing single anonymized quote. Each falsifiable-specific: 12.4% WER reduction, 19% self-service rate, 92% acceptance threshold.
Changed
- Coverage Matrix speaker counts now definitive numbers (1,420 / 740 / 985 / 520 / 210 / 285 / 640 / 155), 58 drawer entries summing to 41,685 total. Footnote framing: "Counts refreshed quarterly. Last refresh: 2026-Q1."
- Removed "approximate range" framing throughout (subhead, table header, footnote).
Changed
- Known: TTS-synthesized audio is placeholder for real freelancer recordings. v1.5 upgrade path: capture real 3-sec dialect clips from active freelancers, replace mp3 files in place.
-
v1.3.0
externalPremium page redesign — the moat made visible
Added
- Complete redesign of /services/audio-data-collection-premium/ with 8 new sections (Hero, Problem, Coverage Matrix, How It Works, Customer Proof, Compliance, API, CTA).
- Hard Languages Coverage Matrix — 8 showcase cards + drawer with 59 EU languages + dialects (Nynorsk, Jutlandic, Swiss German, Galician, Sámi, Frisian, Welsh, Corsican leading).
- Editorial single-quote customer proof section with anonymized "Tier-1 European ASR provider" attribution + falsifiable WER metric (12.4% reduction on Western Nordic dialects).
- Asymmetric 38/62 compliance section with 4 cards linking to /blog/compliance/ articles (Article 10, GDPR Art 9, ISO/SOC2, EU data residency).
- 3-stage SVG pipeline diagram (Brief → Match → Record → Annotate → QA + Audit) with JSON manifest sample including ISO-639-3 codes, Cohen's Kappa, WER baseline, eu_ai_act_doc path.
- API section with Python SDK + curl tabs, Stripe-style auth, OpenAI-SDK-style verbs.
Changed
- Positioning thesis from "Build Better Voice AI Systems" (generic) to "Voice data for the languages everyone else skips" (moat-claim).
Changed
- 8 new components in src/components/Audio/B2B/Premium/v2/, built by 4 parallel subagents. All use --ds-* tokens, Lora-italic for display, Geist for body, Proof Arrival motion on arrivals.
Changed
- Known: coverage matrix counts are approximate ranges per existing data; real audio samples ("Play 2s") still mocked as disabled buttons. v1.4 work.
-
v1.2.0
externalIdentity surface area + AI-citable footnotes
Added
- Sitewide typography retrofit. Geist Variable now renders on every unstyled h1-h6 sitewide via :where() in @layer base. ArticleHero h1 explicitly opts in. Component-scoped overrides (AudioHero serif, etc.) preserved by specificity.
- Server-rendered footnote list via new rehype-footnote-list.mjs plugin. <aside role="doc-endnotes"> now in raw HTML. /article-md/ exports include footnote definitions for AI-citable indexability.
Changed
- Footnote.astro client-side list-injection removed (~95 lines). Marker + hover-preview kept.
- 86 arbitrary-value Tailwind classes migrated to palette names (violet, teal, amber, etc.). Visual identical; palette discipline up.
Fixed
- 20 stale visual-regression baselines refreshed against current prod. Suite now 47/48 passing.
Changed
- Known limitations (deferred to v2.0): CSS chunks still over 200KB hard cap (Tailwind v4 + Astro per-route utility re-emission is the root cause; not solvable by class-name swaps). Real fix paths: single shared utilities chunk (Vite manualChunks, risky for SSR) or component-scoped CSS extraction (sitewide refactor). MegaMenu critical ARIA violation (828 nodes) — owner-coordinated decision deferred. One tablet baseline still flaky on the footnote demo page (will be refreshed post-deploy).
-
v1.1.0
externalIdentity pass
Added
- Geist Variable + Geist Mono typography (Vercel, SIL OFL 1.1). 88KB latin WOFF2 footprint. font-display: swap, no preload.
- 6 OKLCH color ramps x 11 steps (violet anchor + slate + teal + sky + amber + red). 66 raw tokens + 5 alpha variants + 30 semantic tokens (accent ladder, 6-tier status, data-viz, link states, surface aliases).
- Motion signature "Proof Arrival" — cubic-bezier(0.16, 1, 0.3, 1) base curve + reserved cubic-bezier(0.34, 1.56, 0.64, 1) overshoot for container arrivals. 6 new tokens. 5 primitives retrofitted (Reveal, Dialog, Toast, Stagger, StickyTOC).
- Dialog gained shell-in/shell-out keyframes with async close awaiting animationend; backdrop-click rewired through the new lifecycle.
Changed
- --ds-transition-reveal collapsed from 480ms slow to 200ms snap on the signature curve. Affects every Reveal animation.
-
v1.0.0
externalPublic launch · Week 8
Added
- Visual regression suite — Playwright snapshot tests for 16 design routes (1x and 2x DPR, light + reduced-motion variants).
- CSS chunk size budgets enforced in CI — per-route ceilings + a global cap; build fails on regression.
- Copy-paste code blocks alongside every live component preview on /design/components/*.
- Per-component accessibility notes + do/don't + anatomy sections across all 9 primitives.
- A11y audit report at docs/a11y-audit-2026-05-12.md — axe-core sweep, all critical and serious findings fixed.
- Launch blog post (/blog/announcing-ypai-design-system/) and public reference site at /design/.
Changed
- Semver locked at 1.0.0 — breaking changes from here are explicit, deprecation cycles documented per release.
-
v0.3.0
externalMotion system formalized · Week 5
Added
- --ds-motion-* token scale (duration-instant/fast/base/slow + easing-standard/decel/accel/spring).
- Reveal primitive — IntersectionObserver-driven first-paint reveal with reduced-motion graceful degradation.
- Stagger primitive — child sequence reveals with configurable delay step.
- PageTransition primitive — cross-fade between Astro view-transition routes; falls back to hard cut under reduced-motion.
- data-motion contract — components opt into decorative vs functional motion via data-motion attribute.
- /design/motion page documenting tokens, primitives, and the reduced-motion contract.
Changed
- prefers-reduced-motion now globally rewires --ds-motion-duration-* tokens to 0s. No per-component opt-in needed.
- BaseLayout swapped its enter animation to PageTransition. Reading-surface pages no longer fade body content; only chrome transitions.
-
v0.2.0
externalReading surface polish · Week 4
Added
- Hero typography rebalance — clamped article H1 (3.2 → 4.4rem), increased line-height on H2/H3 for left-aligned reading.
- Print stylesheet (src/styles/print.css) — hides chrome, expands footnotes inline, removes background tints. Tested on 7 representative articles.
- Footnote MDX component — inline citation marker with tooltip preview + auto-injected footnote list at article end.
- Internal-link previews via Pagefind — hovering an in-prose internal link surfaces a 2-line preview from the destination page.
Changed
- BlogSearch migrated off bespoke modal to the Dialog primitive. Added ↑↓ keyboard navigation, recent-searches persistence (localStorage), and Pagefind streaming results.
- Article H1 left-aligned by default (was centered). Aligns with the reading-surface single-column rule.
- --ds-color-text-secondary lifted from rgba(.65) → rgba(.75) for sustained-reading contrast.
Fixed
- Footnote markers now wrap correctly inside <code> spans.
- Print stylesheet no longer leaks dark backgrounds onto Page 2+ in Chrome.
-
v0.1.5
internalColor + density + site-wide codemod · Week 3
Added
- --ds-color-* layer — surface (6), text (5), border (4), status (4 pairs), accent (passthrough to --hub-accent).
- --ds-density tokens — comfortable (default) and compact modes, multiplier + control-height set.
- ui/Icon primitive built on lucide-static — tree-shaken, 24x24 grid, --ds-color-text-primary fill default.
- data-density attribute + /design/_layout.astro density toggle (persisted in localStorage).
Changed
- 499 files migrated from legacy --color-* / --ypai-* / --premium-* tokens to --ds-* via scripts/codemod/ds-token-migrate.mjs. 8,814 individual replacements.
- Status colors (info/success/warn/danger) consolidated into single source. 17 ad-hoc hex shades retired.
- Hub-tinted cards now read --ds-color-accent (which resolves through --hub-accent), eliminating the per-hub stylesheet pattern.
Fixed
- Two components in the freelancer-portal that hardcoded #A855F7; now read var(--ds-color-accent).
- Status badge color drift between dashboard and admin pages (both used a different green).
-
v0.1.0
externalComponent primitives · Week 2
Added
- 7 primitives: Input, Select, Tabs, Tooltip, Dialog, Toast, Skeleton.
- /design scaffold — sidebar nav, _layout, hero-and-content shell, density toolbar.
- /design/components index + per-primitive reference pages with live previews + prop tables.
- Skeleton.astro — token-aware placeholder with motion-respecting shimmer.
- Toast container that reads --ds-z-toast and respects the motion contract.
Changed
- Migrated 12 src/components/ui/* files off the legacy --radius-* tokens to --ds-radius-*. Verified visual diff on /design/components/.
-
v0.0.1
internalFoundation · Week 1
Added
- --ds-space-* scale (4pt grid, 15 steps from 0 to 128px).
- --ds-radius-* scale (8 steps: xs / sm / md / lg / xl / 2xl / pill / full).
- --ds-shadow-* scale (5 elevation steps + focus-ring).
- --ds-z-* layers (8 named layers from below to debug — no integer literals).
- src/styles/tokens/ directory imported BEFORE legacy token files in global.css.
- docs/ds-audit-2026-05-12.md — full inventory of the pre-existing system.
Changed
- global.css load order — new --ds-* tokens load first so legacy files can override only intentionally.
Fixed
- Documented 1,016 ad-hoc CSS vars across 6 token files for future cleanup.
- Documented --radius-md collision (8 vs 16 vs 12 across 3 files). Resolution scheduled for v0.1.0 codemod.