Changelog

Changelog

Versioned release history of the YPAI Design System. Semver, dated, with internal/external impact tags.

Section: Foundations

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.

  1. v1.4.0

    external

    Premium 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.
  2. v1.3.0

    external

    Premium 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.
  3. v1.2.0

    external

    Identity 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).
  4. v1.1.0

    external

    Identity 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.
  5. v1.0.0

    external

    Public 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.
  6. v0.3.0

    external

    Motion 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.
  7. v0.2.0

    external

    Reading 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.
  8. v0.1.5

    internal

    Color + 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).
  9. v0.1.0

    external

    Component 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/.
  10. v0.0.1

    internal

    Foundation · 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.