Krizaka UI
Krizaka UI
Krizaka UI

Changelog

What shipped

Every release of every Krizaka UI package, newest first — read from the packages' own changelogs.

  1. 3.63.1

    @krizaka/tailwind

    • FixedRelease bump: 3.63.0 was already on npm when the analysis report, the stat strip, the usage blocks, the margin layout and the button fix were versioned. #736
  2. 3.63.1

    @krizaka/tokens

    • FixedRelease bump: 3.63.0 was already on npm when the analysis report, the stat strip, the usage blocks, the margin layout and the button fix were versioned. #736
  3. 3.63.1

    @krizaka/ui

    • FixedRelease bump: 3.63.0 was already on npm when the analysis report, the stat strip, the usage blocks, the margin layout and the button fix were versioned. #736
  4. 3.63.0

    @krizaka/tokens

    • NewPage and Section take two more papers, paper="dot-grid" (a dot every 24 px) and paper="kraft" (brown paper, its ink at 7:1 or more on the darkest point of its grain, in light and in « carnet de nuit »). #733
  5. 3.63.0

    @krizaka/ui

    • New@krizaka/ui/analysis-report (web) and AnalysisReport in @krizaka/ui/native: the result of an AI analysis — a header with the studio, one sentence, the overall status and counts; findings grouped by status (the most… #730
    • New@krizaka/ui/embed-facade: EmbedFacade, a click-to-load facade for a TikTok, YouTube Shorts or Instagram video (Law 25: nothing is requested from a platform before the visitor asks). #733
    • NewPage and Section take two more papers, paper="dot-grid" (a dot every 24 px) and paper="kraft" (brown paper, its ink at 7:1 or more on the darkest point of its grain, in light and in « carnet de nuit »). #733
    • New@krizaka/ui/reviews: ReviewSummary (the score as a Stamp — "4,8 / 5" —, the verified count, five Meters for the distribution and its text equivalent; renders nothing under the host's minCount) and ReviewCard (first name… #733
    • NewSeparator variant="hand" with shape="stroke" | "wave" | "dash": an inline SVG path stretched to the width (vector-effect: non-scaling-stroke), 6 px tall, the hue at 60 % or the ink (tone), decorative unless… #733
    • NewServiceCard variant="index": a stamped index card (Cahier) — ruled with one Seyès line under the name, a punched hole, straight, the duration and the price as Stamps (tabular figures), what is included, the action as a… #733
    • NewStamp takes the tones ink (the page's ink) and hue (--kz-hue-text), an icon slot (a decorative glyph), size sm | md and straightText: the border keeps its askew, the text is straight (the default for size="sm"). #733
    • NewStickyAction hideWhileVisible="#hero-book": the phone's bar is hidden while the page's own action is on screen (an IntersectionObserver), so a storefront never shows two « Réserver » at once. #733
    • NewThe wall's addendum (krizaka-ui#604). #733
    • New@krizaka/ui/environment-notice (web) and EnvironmentNotice in @krizaka/ui/native: the « development version » band — a thin region above the app bar, in the page frame, with the title, the line and an optional link as… #715
    • NewMarginLayout and MarginItem (@krizaka/ui/margin-layout): numbered items with margin notes for product reading pages. #731
    • NewStatGrid variant="strip": two to four figures in one row (a dl), each with its label (truncated, the full text as its title), value, trend in words and a 64 × 18 Sparkline slot, plus a period slot for the switch. #732
    • New@krizaka/ui/usage: the blocks of a « Credits & usage » page, extracted from Orazaka's. #734
    • Fixedfix(button): a button never overflows a narrow container (GlowCard plans): it is capped to its container and its label wraps instead of bleeding past the border (#259). #729
    • FixedThe native form is documented on the root entry (createKrizakaForm and its fields live on @krizaka/ui/native/form, as the field names match the primitives), and a regression test guards the entry's exports, its subpath… #727
  6. 3.62.0

    @krizaka/tailwind

    • NewPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  7. 3.62.0

    @krizaka/tokens

    • NewPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  8. 3.62.0

    @krizaka/ui

    • NewEngineFlow: a calm level for small frames (calm) and conduits anchored the same way (#658). #721
    • NewPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  9. 3.61.0

    @krizaka/ui

    • NewSiteFooter takes org (the organisation's public facts from @krizaka/org): its signature line is org.footer.line (« Une entreprise de Technologies Krizaka · Fait à Montréal ») and, without legal, the legal links are… #720
  10. 0.9.1

    @krizaka/icons

    • FixedPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  11. 0.7.0

    @krizaka/charts

    • NewPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  12. 0.5.2

    @krizaka/fonts

    • FixedPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  13. 0.4.1

    @krizaka/intl

    • FixedPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  14. 0.1.2

    @krizaka/email

    • FixedPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  15. 0.1.1

    @krizaka/discovery

    • FixedPaused products (2026-10-25): Orochia, Yasakia, Yororis and Kachizaka leave the family. #714
  16. 3.60.0

    @krizaka/ui

    • NewAdd the read-only Wall block with token-based brick, zellige, ridge and plaster textures, plus Polaroid, PinnedNote and ShopSign items. #540
  17. 3.59.0

    @krizaka/ui

    • Newslot-picker moves through weeks (#672, ADR-006 §6 — Akinaza's public booking, akinaza#315), no new entry. #701
    • NewTemplates for Akinaza's, Yomizaka's and Orazaka's screens (#653, ADR-006 §6), no new entry and no fiscal or receipt logic. #704
  18. 3.55.0

    @krizaka/tailwind

    • NewFocus: the ring is the keyboard's. #687
    • NewPlus Jakarta Sans is back, for the products' titles only (ADR-006 §2, krizaka-ui#670). #684
    • NewNavBar.Session: the bar's « who is here » island for every product, over one contract — GET /api/me answers 200 { signedIn, signupOpen, account? #687
    • NewThe product register, 2027 (ADR-006 §3, krizaka-ui#669). #681
  19. 3.55.0

    @krizaka/tokens

    • NewPlus Jakarta Sans is back, for the products' titles only (ADR-006 §2, krizaka-ui#670). #684
    • NewNavBar.Session: the bar's « who is here » island for every product, over one contract — GET /api/me answers 200 { signedIn, signupOpen, account? #687
    • NewThe product register, 2027 (ADR-006 §3, krizaka-ui#669). #681
  20. 3.55.0

    @krizaka/ui

    • NewAppHeader becomes the family's top bar (#640), extracted from Orochia's: the slots search, language, messages, notifications, primary and account beside actions, drawn in a fixed order (search · language · actions ·… #687
    • NewDataTable phone="list" (#636): on a phone (under 36 rem, or always with layout="cards") each row draws as a list row instead of a card in a box — the selection's checkbox first, the title column with its priority: 2… #687
    • NewDataTable routeKey: the sort, the filters and the page live in the address (?clients.sort=visits.descending&clients.q.client=lea&clients.page=2), so back and forward, a reload and a shared link land on the same table. #687
    • NewDropOverlay gains a controlled form: active shows it (DOM listeners off, onFiles optional), for a desktop app's native drops. #687
    • NewFocus: the ring is the keyboard's. #687
    • NewPlus Jakarta Sans is back, for the products' titles only (ADR-006 §2, krizaka-ui#670). #684
    • NewNavBar.Session: the bar's « who is here » island for every product, over one contract — GET /api/me answers 200 { signedIn, signupOpen, account? #687
    • Security@krizaka/ui/notification-preferences: NotificationPreferences, categories by channels with a switch at each crossing, presets that set the whole matrix, a locked row for security. #687
    • NewThe product register, 2027 (ADR-006 §3, krizaka-ui#669). #681
    • New@krizaka/ui/quota-meter: QuotaMeter, space or time used against a plan: the figure in words, a Meter amber from 80 % and red from 95 %, the sentence for the level (a status when it matters), notices, small figures and… #687
    • NewRailNav (#647): shortcuts with shortcutsLabel adds the product's quick ways in (a saved view, a frequent client, « New invoice ») as a named group above the footer and the expand toggle, on desktop only. #689
    • NewReduction, batch 1 (ADR-006 §7, krizaka-ui#674): 28 entries with no user and no filed need are deprecated in 3.55 and removed in 4.0; nothing is removed in this minor. #687
    • New@krizaka/ui/stuck, @krizaka/ui/doodle, @krizaka/ui/signature: cards stuck into the notebook (krizaka-ui#554). #687
    • NewTabs variant="binder" (#648): binder dividers (intercalaires) to organise collections, tags and statuses. #686
    • NewAdd a configurable separator to BirdPlate captions, defaulting to a middle dot. #687
    • NewAdd RetroTv, a vertical video player presented in cabinet and portable television frames. #687
    • NewMake Markdown references readable on small screens: keyboard-scrollable table regions with token-based edge shadows, unbroken cell identifiers, overflow-safe prose and code, and an optional host-labelled generated chip… #687
    • FixedDataTable: on a phone, a card never scrolls sideways — values wrap (min-width: 0, overflow-wrap: anywhere) instead of being cut at the frame's edge, even with untyped columns. #687
    • FixedDependencies: radix-ui 1.8, TanStack Table 9.3 / Virtual 3.14.21 / Query 5.104.5 and zod 4.6.7 (the monthly grouped update). #687
    • FixedOne router context for the whole package: ChoiceGrid, the account settings and the code block (built apart from @krizaka/ui/router) bundled their own copy of it, so their routeKey ignored the adapter given to… #687
    • FixedThe product nav-bar example uses ProductBarActions: using the app is the primary action, no « Talk to us » button in the bar (Contact is in the footer). #687
    • FixedThe family names ts.krizaka.com « Krizaka TypeScript », never « Krizaka TS », in the bar, the switcher and every footer. #687
  21. 0.5.1

    @krizaka/fonts

    • FixedThe tests that import the package's own dist now depend on its build in turbo (the release pipeline ran them before the build). #702
  22. 0.5.0

    @krizaka/fonts

    • NewPlus Jakarta Sans is back, for the products' titles only (ADR-006 §2, krizaka-ui#670). #684
  23. 0.4.0

    @krizaka/intl

    • NewPrevent crashes when Intl.PluralRules or Intl.RelativeTimeFormat is absent (Android Hermes) with cached dependency-free en/fr fallbacks. #687
  24. 0.2.2

    @krizaka/payments

    • FixedErrors keep their cause: the « did not answer in time » TypeError of @krizaka/app-client carries the abort it comes from, and the AggregateError of @krizaka/payments (handler and give-back both failed) carries the… #666
  25. 0.2.2

    @krizaka/query

    • FixedDependencies: radix-ui 1.8, TanStack Table 9.3 / Virtual 3.14.21 / Query 5.104.5 and zod 4.6.7 (the monthly grouped update). #687
  26. 0.2.1

    @krizaka/app-client

    • FixedErrors keep their cause: the « did not answer in time » TypeError of @krizaka/app-client carries the abort it comes from, and the AggregateError of @krizaka/payments (handler and give-back both failed) carries the… #666
  27. 3.54.0

    @krizaka/ui

    • NewChapterIndex variant="album" (#621): each chapter's cover as a TapedPhoto beside its title, one short line (detail) and its period — the rows alternate left and right, the prints face each other, each keeps its own… #624
  28. 3.53.0

    @krizaka/ui

    • New@krizaka/ui/chapter (#617): ChapterIndex, ChapterHead and ChapterFoot — the chapters of a story on the Cahier's ruled lines, never boxes. #618
  29. 3.52.0

    @krizaka/ui

    • New@krizaka/ui/text-style: TextStylePicker, StyledText and the value they share. #564
    • NewAdd explained KPI, ranked next-action and glossary blocks for web pages. #563
  30. 0.8.0

    @krizaka/config

    • Newkrizaka/page-template (in krizakaStack, counted by krizaka-ratchet as pageTemplate): every App Router page declares the Krizaka UI template it composes (// @template: app-settings) or says why it composes none (custom:… #687
  31. 0.3.0

    @krizaka/intl

    • NewAdd localDay(instant, timeZone): the calendar day (yyyy-mm-dd) an instant falls on in a time zone, so a rule dated by a local day is not judged by the UTC day. #610
  32. 3.51.0

    @krizaka/ui

    • New@krizaka/ui/taped-photo: TapedPhoto, a Cahier block. #542
  33. 3.50.0

    @krizaka/ui

    • NewPageTransition takes routeKey (the router's pathname): only a change of page animates, an update on the same page — a #531
  34. 3.49.0

    @krizaka/ui

    • NewThe family knows Krizaka TS (ts.krizaka.com, the TypeScript backend building blocks on npm): SiteId gains "ts", so its bar and footer say « You are here », and the other open-source sites list it in the switcher and the… #529
    • NewSettingsLayout: the sections can be in titled groups (nav as SettingsNavGroup[]), carry a count or status (badge), and past five a phone gets one menu (a disclosure, no script) instead of a strip of chips. #520
  35. 0.2.1

    @krizaka/payments

    • FixedFix: a webhook event whose handler failed was recorded as applied and never applied again. #570
  36. 0.2.0

    @krizaka/app-client

    • New@krizaka/app-client/react: createAuth(session, { signIn, signOut }) (the AuthProvider and useAuth every Expo and Mac #571
  37. 0.1.0

    @krizaka/app-desktop

    • NewFirst release: the typed page side of tauri-plugin-krizaka (krizaka-tauri-kit 0.2): folder grants and watches, dropped #556
  38. 3.48.0

    @krizaka/ui

    • New@krizaka/ui/agenda: Agenda, one day's appointments in time order (tabular times, client, service, status chip, a quiet action outside the row's link) with a « now » line between the ones past and the ones to come. #516
    • New@krizaka/ui/drop-overlay: DropOverlay — the whole window is the drop target (accept, rejected files handed back, motion from the tokens, instant under reduced motion). #512
  39. 3.46.0

    @krizaka/ui

    • NewProductBarActions and productBarActions (@krizaka/ui/nav-bar): the one definition of a product bar's right side — using the app is the primary action (« Sign in » while sign-up is closed, « Try » once it opens), « Sign… #506
  40. 3.45.0

    @krizaka/ui

    • NewPageTransition in @krizaka/ui/motion: wrap the root layout's children once and a navigation cross-fades and rises (React's ViewTransition where the runtime has it, plain children otherwise), from the --kz-motion-*… #499
    • FixedWeb and native share their logic: form/core now holds FormField, FieldArray and Watch; meter/model the Meter's ratio, tone, words and ring arcs; vertical-video/model the labels and the shared props. #501
  41. 3.44.0

    @krizaka/ui

    • NewThe URL is the state, made impossible to forget (Oussama, 2026-10-22: « changer les tabs doit changer les routes »). #488
    • NewTabs as routes: Tabs.Nav + Tabs.NavLink. #488
  42. 3.43.1

    @krizaka/ui

    • FixedProducts wear plain Krizaka UI: under data-surface="product" on the root (an app themed at :root: set it on <html>) or a product brand (.brand-orazaka, -orochia, -yasakia, -yororis, -yomizaka, -kachizaka, -akinaza) the… #492
  43. 3.43.0

    @krizaka/tailwind

    • Newfeat: Krizaka Cahier, our own pen — derived from Caveat (SIL OFL 1.1, renamed, FONTLOG shipped), weight 500, tabular lining figures, a 1.25 em line box, French alphabet and § — as the cahier role: --kz-font-cahier… #474
  44. 3.43.0

    @krizaka/tokens

    • Newfeat: Krizaka Cahier, our own pen — derived from Caveat (SIL OFL 1.1, renamed, FONTLOG shipped), weight 500, tabular lining figures, a 1.25 em line box, French alphabet and § — as the cahier role: --kz-font-cahier… #474
  45. 3.43.0

    @krizaka/ui

    • Newfeat: Elephant (@krizaka/ui/elephant) — the small flying-elephant mark of the neighbour joke (« the elephant with those ears can fly »), standing or flying, sage and sand, flat, in the Krizaka line (krizaka-ui#469). #474
    • NewDialog, Sheet, Popover and Tabs enter and leave with motion. #476
    • New@krizaka/ui/motion gains the page-transition helpers: runViewTransition, transitionPage, crossFallback, canViewTransition and sharedElementStyle. #475
    • NewNo more family switcher: krizaka.com is the only way back between the Krizaka sites (Oussama, 2026-10-22). #486
    • FixedAppShell and RailNav: collapsing the sidebar no longer lets the brand name or the footer text spill over the content. #484
  46. 3.42.0

    @krizaka/ui

    • NewFlock scenes: each bird does a short scene true to its promise — the owl reads a book and turns a leaf, the flamingo and the lovebird talk with a speech mark and their neighbour answers, the crane steps out and bows,… #466
    • NewSiteFooter: one band, for real. #463
  47. 0.9.0

    @krizaka/icons

    • Newfeat: the neighbourhood café — EspressoIcon, PlantIcon, WindowIcon, StoopIcon, ChairIcon, web and React Native, in the signature grammar (24 grid, 1.5 stroke, square caps, cut corners, one node) (krizaka-ui#472). #474
  48. 0.8.0

    @krizaka/icons

    • NewNine new signature icons: star, bolt, wave, flame, crown, leaf, mountain (a new « Emblems » group, to build marks and badges from) and medal, podium (ranks and standings). #465
  49. 0.7.0

    @krizaka/config

    • NewPeer range eslint: ^9 || ^10 (and @eslint/js likewise). #496
  50. 0.6.0

    @krizaka/config

    • NewThe URL is the state, made impossible to forget (Oussama, 2026-10-22: « changer les tabs doit changer les routes »). #488
  51. 0.5.0

    @krizaka/config

    • NewNo more family switcher: krizaka.com is the only way back between the Krizaka sites (Oussama, 2026-10-22). #486
  52. 0.4.2

    @krizaka/config

    • FixedVercel is retired: its platform variable names are no longer allowed by the env-name rule (a VERCEL_ variable is refused like any vendor name). #467
  53. 0.4.0

    @krizaka/fonts

    • Newfeat: Krizaka Cahier, our own pen — derived from Caveat (SIL OFL 1.1, renamed, FONTLOG shipped), weight 500, tabular lining figures, a 1.25 em line box, French alphabet and § — as the cahier role: --kz-font-cahier… #474
  54. 0.2.0

    @krizaka/payments

    • NewFirst release: the payments port, the Stripe adapter (Checkout, portal, price by lookup key, verified webhook), idempotent event application, a locale-aware price formatter and a catalogue setup from data. #481
  55. 0.1.0

    @krizaka/app-client

    • NewFirst release: the bearer session over a storage port, the discovery client with a product's address and build inputs, and the API client, extracted from the Expo apps (krizaka/.github#178). #507
  56. 3.41.1

    @krizaka/ui

    • Fixed@krizaka/ui/sites: the products' public addresses are https://www.<product>.com (the real app, sign-up closed; the apex answers 308 with www). #454
  57. 3.41.0

    @krizaka/ui

    • Newfeat(flock): active (the bird the page points at looks up and jumps), greet (every bird jumps once as the flock first comes into view) and tempo (more frequent glances and deliveries) — the flock can be tied to the page… #448
  58. 3.40.0

    @krizaka/ui

    • Newfeat: Flock (@krizaka/ui/flock) and Mascot life — the birds at ease in character (the falcon watches, the owl reads, the duck builds, the flamingo answers, the pigeon delivers), two neighbours glancing at each other,… #441
    • Fixedfix(examples): the examples of the registry point at repositories and pages that exist (krizaka-build for Krizaka Java, the Discussions of krizaka-ui) — found by the documentation crawler. #439
  59. 3.39.0

    @krizaka/tailwind

    • NewLining figures (ADR-004, krizaka-ui#417): Young Serif draws old-style digits by default, so a statistic's « 4 514 » and « 39 » sat on uneven heights. #435
  60. 3.39.0

    @krizaka/tokens

    • NewLining figures (ADR-004, krizaka-ui#417): Young Serif draws old-style digits by default, so a statistic's « 4 514 » and « 39 » sat on uneven heights. #435
  61. 3.39.0

    @krizaka/ui

    • NewSiteFooter is one calm band (krizaka-ui#434, peer review: « too much, a double footer »): the site's own columns beside the family's — Products · Open source (GitHub closes it) · Krizaka (our story, the blog, contact,… #438
    • NewLining figures (ADR-004, krizaka-ui#417): Young Serif draws old-style digits by default, so a statistic's « 4 514 » and « 39 » sat on uneven heights. #435
    • FixedCahier, the last pills (#417): ChipLink, the kanban's count, the video trimmer's « kept » label, the photo grid's « main » tag, the location picker's chip and button, the step showcase's pause button and the slider's… #433
  62. 3.38.0

    @krizaka/ui

    • NewCahier, the blocks' own corners and shadows (ADR-004, #417): every card corner of 10 px or more in blocks.css and motion.css is square paper, and every blurred shadow (the templates' coloured stage glow included) is… #431
  63. 3.37.0

    @krizaka/ui

    • NewCahier, the chrome (ADR-004, #417): the bar is square paper — the floating bar, its items, its icon buttons and menus lose the pill (2 px); badges, chips, tabs, the language switch, toasts, progress and meter tracks,… #428
  64. 0.2.0

    @krizaka/app-config

    • NewNew package @krizaka/discovery (0.1.0): service discovery for the mobile apps. #451
  65. 0.1.0

    @krizaka/discovery

    • NewNew package @krizaka/discovery (0.1.0): service discovery for the mobile apps. #451
  66. 3.36.0

    @krizaka/tailwind

    • NewCahier — the flock's field notebook (ADR-004, #417), the foundations. #423
  67. 3.36.0

    @krizaka/tokens

    • NewCahier — the flock's field notebook (ADR-004, #417), the foundations. #423
  68. 3.36.0

    @krizaka/ui

    • NewCahier — the flock's field notebook (ADR-004, #417), the foundations. #423
  69. 3.35.0

    @krizaka/ui

    • Newsites: Krizaka Motion (the motion lab, krizaka.github.io/krizaka-motion) joins the family's open-source group — every family switcher (NavBar.Family) and family footer (SiteFooter) lists it after a bump, in English and… #412
  70. 3.34.0

    @krizaka/ui

    • NewRoute joins the motion vocabulary: easing (ease-out, linear, ease-in-out) shapes the drawing and the trips, and paused holds both where they are (on top of the off-screen pause). #414
    • NewTerminalReplay joins the motion vocabulary: speed, a multiplier on every delay (typing, lines, between commands) — 2 plays twice as fast, 0.5 half as fast. #415
    • NewNumberTicker joins the motion vocabulary: duration now drives the digit roll (trigger="change") as well as the climb, and the new easing (ease-out, linear, ease-in-out or any CSS easing) shapes both, through… #413
    • FixedButton: the « Sizes » example wraps on a narrow phone (360 px) instead of running 2 px past its frame. #408
    • FixedDayStrip: bringing the chosen day into view scrolls the strip only, never the page. #411
  71. 3.33.1

    @krizaka/ui

    • Fixed.kz-grow really grows a chart: it wipes the whole SVG in from the left (kz-grow-wipe) instead of drawing each path's stroke, which never matched the charts' markup (classes, not stroke attributes).
  72. 3.33.0

    @krizaka/ui

    • Newmotion.css: arrival and growth, moved out of the Krizaka Motion lab. #401
    • FixedMap follows the page's theme even when it flips before the engine has loaded: the map was created with the scheme of its first render and never corrected (a light page showed the dark basemap). #400
  73. 3.32.0

    @krizaka/tailwind

    • NewA steel blue, one button shape, a quiet hover (krizaka-ui#393, ADR-003). #396
  74. 3.32.0

    @krizaka/tokens

    • NewA steel blue, one button shape, a quiet hover (krizaka-ui#393, ADR-003). #396
  75. 3.32.0

    @krizaka/ui

    • NewA steel blue, one button shape, a quiet hover (krizaka-ui#393, ADR-003). #396
  76. 3.31.0

    @krizaka/ui

    • NewEngineFlow config, the first of Krizaka Motion's shared vocabulary: density (sparse · normal · dense: photons per conduit), trigger (always · hover · active: when they travel), easing (linear, ease-in-out or any CSS… #395
    • New@krizaka/ui/map motion: Route (a line that draws itself once when the map is on screen, and a courier that makes a trip — one, or repeatAfter while visible; finite frames, nothing runs afterwards), Pulse (a heat pulse… #395
    • Fixedexport-brand: the favicon's PNG sizes (favicon-32.png, apple-touch-icon.png 180, icon-192.png, icon-512.png) are exported next to favicon.svg for every brand, so a site's tab, home-screen and manifest icons come from… #375
    • FixedEngineFlow: the photons travel again and the engine breathes. #394
    • Fixedsites: Kachizaka and Akinaza now have their dev sites (dev.kachizaka.com, dev.akinaza.com), Yasakia's line says what it is (real people, introductions and photos checked before you see them) and Orazaka's is… #375
  77. 3.30.0

    @krizaka/ui

    • New@krizaka/ui/native chat: MessageBubble takes children (a Markdown answer in the same bubble shape), MessageComposer takes a meta line and ComposerMeta draws the model chip and a status line with a shield… #373
    • NewNavBar.Menu: the inline links of a short section (3 or fewer) now stand in the bar from lg up (inlineFrom, "md" | "lg" | "xl", default lg); between the phone panel and that breakpoint the section is the dropdown, so… #376
    • FixedRe-publish of 3.29.0: npm accepted @krizaka/ui@3.29.0 into staging but never released it (409 « previously staged », no staged version listed), while tokens and tailwind 3.29.0 are live and require @krizaka/ui ^3.29.0.
  78. 3.29.0

    @krizaka/ui

    • NewDocsHubPage: linksLayout="stack" puts one quick link per line in every collection (default wrap unchanged), so the first link of each card starts at the same height (krizaka-ui#212). #372
    • New@krizaka/ui/engine-flow: EngineFlow — an engine at the hub and the apps it serves around it, with photons travelling each conduit in (requests), out (results) or both, in the app's brand going in and the hub's coming… #371
  79. 3.28.0

    @krizaka/ui

    • New@krizaka/ui/chip-row: ChipRow and ChipRow.Item — a row of chip links that scrolls sideways with scroll-snap on a phone (fading edge, no scrollbar) and wraps from md; 44 px targets, aria-current, a badge (« Soon »),… #361
    • New@krizaka/ui/native: SettingsGroup and SettingsRow — a titled card of hairline-divided rows (icon tile, label, help, value or control, a chevron when the row opens something; a button named by its visible words). #367
  80. 3.27.0

    @krizaka/ui

    • New@krizaka/ui/language-switch/server: languagesFor, languageHref and languageNames without the "use client" banner, so a Server Component can call them (the language-switch entry stays client and re-exports them for… #347
    • NewNavBar.Menu: a section of three links or fewer is not a dropdown any more — its links stand in the bar as plain links, the current one marked (inlineUpTo, 3 by default; 0 keeps a dropdown, above the limit it is a… #346
    • FixedImageCropper (web): a picture that was already loaded before React attached (cache, server render) is measured on mount, so a portrait source covers the frame at any zoom; the box's percentages are rounded so float… #360
    • FixedlocateQuote (DocumentViewer): a quote starting in the middle of a text item is boxed from where its glyphs start (shared by sans-serif advance widths) instead of an even share of the item, so highlights no longer begin… #359
    • FixedlanguageHref: the path split no longer uses a backtracking regular expression (CodeQL polynomial ReDoS); a regression test guards a very long path. #357
    • FixedWuSamaMark shares Krizaka's contour: the hexagonal shield, the open vertex with a lit blue node and the centre W in Krizaka blue. #350
  81. 0.7.0

    @krizaka/icons

    • NewA pen stroke (Cahier, ADR-004, #417): the icons draw with a 1.5 stroke, square caps and mitred joins — a nib, not lucide's rounded marker. #423
  82. 0.3.0

    @krizaka/fonts

    • NewCahier (ADR-004, #417): the Krizaka faces are Young Serif (display, one weight), Atkinson Hyperlegible Next (text) and Courier Prime (mono: tags, captions, footnotes, code) — all SIL OFL 1.1, self-hosted, latin and… #423
  83. 0.2.3

    @krizaka/i18n

    • FixedThe TypeScript peer is >=5, not ^5: an app on TypeScript 6 (orochia-mobile) installs it without an override. #332
  84. 0.1.1

    @krizaka/email

    • FixedA steel blue, one button shape, a quiet hover (krizaka-ui#393, ADR-003). #396
  85. 3.26.0

    @krizaka/ui

    • NewNavigation standard (NAV-STD). #336
  86. 3.25.0

    @krizaka/ui

    • NewNew @krizaka/ui/account-menu — AccountMenu, the menu under a signed-in person's avatar: identity first (picture from defaultAvatar or src, name, e-mail), profile and settings links, the language as a compact submenu… #333
    • New@krizaka/ui/changelog-page adds releasesFromPulls: for a repository that publishes no releases (a product in development), its merged pull requests become one changelog entry per week — conventional titles in plain… #338
    • NewSix blocks for a shop's storefront (Akinaza): ServiceCard (@krizaka/ui/service-card) — a service as a card with icon or photo, duration, capacity, price (« from » when it varies), inclusions, a « Popular » tag and one… #343
  87. 3.24.0

    @krizaka/ui

    • NewWuSamaMark: the founder's byline mark (Oussama's nickname, Wu-sama) — a gold W of five straight legs inside the Krizaka hexagon, split at its top and bottom vertices, ink and one amber, code-drawn SVG, still, cropped to… #339
  88. 3.23.0

    @krizaka/tokens

    • Fixed--kz-text-muted now reaches WCAG AA (4.5:1) for small text on every surface, in both themes and under every brand (it was 4.11:1 on dark and 3.91:1 on light, between 3.05 and 4.17 across the surfaces). #320
  89. 3.23.0

    @krizaka/ui

    • NewNew marks for Yomizaka, Kachizaka, Akinaza, Yororis and Yasakia (web and native, same geometry), chosen from three directions per brand: Yomizaka "the watch" (the owl, two lenses under a calm brow), Kachizaka "the… #296
    • Newcaptcha: new Captcha and CaptchaDisclosure (@krizaka/ui/captcha) — Cloudflare Turnstile that stays hidden unless a challenge is needed (managed mode, appearance: "interaction-only"), a framed box on the tokens when it… #300
    • SecurityChangelogPage gains the security and breaking kinds (words and colour, both themes), and @krizaka/ui/changelog-page ships its data adapter: parseChangesets (a changesets CHANGELOG.md), parseReleaseBody (a GitHub… #323
    • NewDesktop (ADR-002: desktop is the web components in the Orazaka Mac app's Tauri window). #292
    • NewDocsNav (@krizaka/ui/docs-nav) — the pages of a documentation in quiet groups for the sidebar of DocsLayout / DocsArticlePage: each group folds, the group of the current page is open, only the current page is marked;… #310
    • NewMediaGrid can head its grid like its shelf (grid={{ label: "Videos" }}, the same heading style as “Shorts”), and both headings take a hint: a small “i” that opens the section's one-line definition and a link to the… #310
    • NewSiteFooter: variant — site (the full footer, unchanged), docs (compact: the site's columns in a row on the documentation's width, no site block, never the family) and app (one slim line for a signed-in product:… #281
    • NewCards get a quiet hover. #306
    • NewNew RailNav (@krizaka/ui/rail-nav) and AppHeader (@krizaka/ui/app-header): the compact navigation of an application. #324
    • Newsettings-layout: a calm, flat settings screen. #327
    • NewNew Waveform (@krizaka/ui/waveform, and Waveform on @krizaka/ui/native): the bars of a sound drawn on their own, for a card or a banner. #318
    • Fixed--kz-text-muted now reaches WCAG AA (4.5:1) for small text on every surface, in both themes and under every brand (it was 4.11:1 on dark and 3.91:1 on light, between 3.05 and 4.17 across the surfaces). #320
    • FixedGenUi: a line that closes one brace too many keeps its first complete object (measured on Orazaka dev: a model's updateComponents line ended with }}}) — only stray } / ] may follow, the object is validated as any other;… #317
    • FixedNavBar test: let the hover-intent timer finish before Escape, so it cannot reopen the menu (red on every PR run on a slow runner). #331
    • FixedNavBar test: the Escape assertion waits for Radix's close instead of racing it (flaky on loaded CI runners, red on main). #328
    • FixedSiteFooter: a SiteFooter.Column with no link (empty, null or false children) now renders nothing instead of a heading over an empty list, the site's own columns share the row with an auto-fit grid (it was a fixed… #281
    • FixedTabs: add missing data-[state=inactive]:hidden to TabsContent to prevent ghost rendering and vertical stacking under forceMount (fixes #213). #244
  90. 3.22.0

    @krizaka/tailwind

    • FixedFocus rings only for the keyboard. #308
  91. 3.22.0

    @krizaka/ui

    • NewTwo blocks for product landing pages. #293
    • NewData-driven UI (ADR-082, krizaka/orazaka#207): @krizaka/ui/genui draws the interface a model describes in A2UI v0.9 — GenUiStream (a model's answer, its prose and its a2ui fence, growing as it streams), GenUiSurface,… #314
    • NewNew MetaRow (@krizaka/ui/meta-row, web and @krizaka/ui/native): one quiet line of dot-separated facts ("HD 720p · 9:16 · 0:05 · 24 fps · Oct 16, 2026") with optional status chips at its end (a Badge). #309
    • NewNavBar: compact menus and one item lit. #291
    • FixedFocus rings only for the keyboard. #308
  92. 3.21.0

    @krizaka/ui

    • NewUpdatePrompt (the soft invitation to update), ForceUpdateScreen (the blocking screen after a 426 or updateMode: force) and MaintenanceScreen (the service is down on purpose) — web and /native, for the app-version… #297
    • FixedTabs (pills) and the other sideways-scrolling rows (settings nav, shorts shelf, date-picker presets, day strip, table of contents) no longer draw a vertical scrollbar. #295
  93. 3.20.0

    @krizaka/ui

    • NewVerticalVideo takes fit="fill": in a box that has its own size (a bento tile, a grid cell) the clip covers it edge to edge instead of drawing a small 9:16 frame inside it; the caption's name line wraps and stays clear… #272
    • NewPlatform parity — web · native · desktop. #283
    • Newmedia-grid: the whole VideoCard opens the video (the title's stretched link now covers the picture too; badges and duration let the click through), the animated preview is requested only after the pointer or focus rests… #285
    • FixedLinear-time trimming of trailing slashes (defaultAvatarUrl) and of array indices (findUnused): CodeQL polynomial-ReDoS findings. #274
  94. 0.6.0

    @krizaka/charts

    • NewData-driven UI (ADR-082, krizaka/orazaka#207): @krizaka/ui/genui draws the interface a model describes in A2UI v0.9 — GenUiStream (a model's answer, its prose and its a2ui fence, growing as it streams), GenUiSurface,… #314
  95. 0.6.0

    @krizaka/icons

    • NewFour icons for a league of friends: SoccerIcon, HockeyIcon, BasketballIcon (the three games a multi-sport league follows) and TrophyIcon (the season's cup). #334
  96. 0.5.0

    @krizaka/charts

    • NewPlatform parity — web · native · desktop. #283
  97. 0.2.2

    @krizaka/i18n

    • FixedLinear-time trimming of trailing slashes (defaultAvatarUrl) and of array indices (findUnused): CodeQL polynomial-ReDoS findings. #274
  98. 0.1.0

    @krizaka/app-config

    • NewNew package: the app-version contract shared by every Krizaka backend and client — GET /api/v1/app-config, 426 Upgrade Required below the minimum, N-1 contracts with Deprecation/Sunset, soft/force/maintenance decisions,… #297
  99. 0.1.0

    @krizaka/email

    • NewNew package @krizaka/email — one branded, bilingual email system for every Krizaka app. #301
  100. 3.19.0

    @krizaka/ui

    • NewCardGrid takes a foundation: one wide card that the others stand on (an engine, a platform), a hairline stem joining it to a frame around the cards, an optional foundationLabel on the frame and foundationPosition (start… #254
    • Newfeat(chat): MessageComposer variant="pill" — one rounded field with leading (mode chip, attach) inside on the left, a round send inside on the right, a reserved status line under it; busy holds the send without moving… #250
  101. 0.4.0

    @krizaka/charts

    • NewA next-generation visual language for charts (#253). #269
    • Fixed@krizaka/ui is a peer on the workspace protocol (^3), so the packed-package check installs it with the package on a release pull request. #271
  102. 3.18.2

    @krizaka/ui

    • Fixedfix(sites): Yasakia is in development, not coming soon. #243
  103. 3.18.1

    @krizaka/ui

    • FixedVideoCard: on a 9:16 card the count and the quick action move to a second line, so the creator's name is no longer cut to an initial on a shelf. #233
  104. 3.18.0

    @krizaka/ui

    • NewMedia grid (#228), web: @krizaka/ui/media-grid — MediaGrid for feeds of mixed orientations (split: the 9:16 clips on a ShortsShelf, the others in a uniform 16:9 grid; uniform: one frame, a clip of the other shape drawn… #231
  105. 3.17.0

    @krizaka/ui

    • NewDataTable: responsive by itself (#222). #229
  106. 3.16.1

    @krizaka/ui

    • Fixed@krizaka/ui/sites: Yomizaka is "In development" (its repository is public and it has a dev site), not "Coming soon" — the same honest status as krizaka.com's product list, in the family switcher and every footer. #219
  107. 3.16.0

    @krizaka/ui

    • New@krizaka/ui/document-viewer — DocumentViewer: a PDF drawn page by page with pdf.js (an optional peer the app loads with loadPdfjs={() => import("pdfjs-dist")}), and the passages of a report lit where they sit. #205
  108. 3.15.0

    @krizaka/tokens

    • NewKachizaka (predictions among friends, points only) and Akinaza (the shop OS for Québec): their brands, marks and mascots. #202
  109. 3.15.0

    @krizaka/ui

    • NewKachizaka (predictions among friends, points only) and Akinaza (the shop OS for Québec): their brands, marks and mascots. #202
    • FixedNew server-safe entry @krizaka/ui/avatar/defaults (defaultAvatarUrl, defaultAvatarSvg, …): the pure helpers of the default avatars can be called in a Server Component. #203
  110. 3.14.0

    @krizaka/ui

    • NewSiteFooter gets a product mode: family={false} drops the family columns — a deployed product is independent, so its footer holds only its own columns, the legal links, the version and one publisher line (“A Krizaka… #193
  111. 3.13.0

    @krizaka/tokens

    • NewYomizaka, the fifth product (documents read, classified and checked by Orazaka): its brand and its mark. #196
  112. 3.13.0

    @krizaka/ui

    • NewYomizaka, the fifth product (documents read, classified and checked by Orazaka): its brand and its mark. #196
  113. 3.12.0

    @krizaka/ui

    • NewAvatar: default profile pictures. #192
    • FixedShowcase: the slides' column is minmax(0, 1fr) — a slide holding a wide code block (a <pre>) no longer widens the slideshow past a phone's width. #190
    • FixedSiteFooter never makes a phone page scroll sideways: its frame and columns shrink to the screen (minmax(0, 1fr), #191
  114. 3.11.0

    @krizaka/ui

    • NewLinkCard pins its foot (the facts in extra, then the way in cta) to the bottom of the card, so in a CardGrid row whose sentences have different lengths the status chips and the links sit on one line and the card bottoms… #187
    • NewShowcase (@krizaka/ui/showcase, native in @krizaka/ui/native): a slideshow that advances by itself and shows it. #184
  115. 3.10.0

    @krizaka/ui

    • NewOne navigation for the whole Krizaka family (NAV-SYS). #181
  116. 3.9.0

    @krizaka/tailwind

    • NewThe next bricks of the stack (decisions S5, S8, S10). #178
    • FixedThe documentation moved to https://ui.krizaka.com, built from this repository (apps/site) at every change: the #179
  117. 3.9.0

    @krizaka/tokens

    • NewThe next bricks of the stack (decisions S5, S8, S10). #178
    • FixedThe documentation moved to https://ui.krizaka.com, built from this repository (apps/site) at every change: the #179
  118. 3.9.0

    @krizaka/ui

    • NewThe next bricks of the stack (decisions S5, S8, S10). #178
    • FixedThe documentation moved to https://ui.krizaka.com, built from this repository (apps/site) at every change: the #179
  119. 3.8.0

    @krizaka/tailwind

    • NewYazakia is renamed Yasakia: YasakiaLogo / YasakiaMark, ProductLogo / ProductMark id yasakia, @krizaka/tokens/brands/yasakia.css and .brand-yasakia in brands/scoped.css, brands.yasakia / marks.yasakia. #176
  120. 3.8.0

    @krizaka/tokens

    • NewYazakia is renamed Yasakia: YasakiaLogo / YasakiaMark, ProductLogo / ProductMark id yasakia, @krizaka/tokens/brands/yasakia.css and .brand-yasakia in brands/scoped.css, brands.yasakia / marks.yasakia. #176