Home
Changelog
What shipped
The highlights of every Krizaka release, newest first — read from the releases themselves, not written for the page. This site runs v0.1.0 on Krizaka UI 3.26.0.
@krizaka/ui
- NewNavigation standard (NAV-STD). #336
@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
@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
@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
- FixedSecurity · ChangelogPage 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
@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
@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
@krizaka/tailwind
- FixedFocus rings only for the keyboard. #308
@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
@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
@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
@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
@krizaka/charts
- NewPlatform parity — web · native · desktop. #283
@krizaka/i18n
- FixedLinear-time trimming of trailing slashes (defaultAvatarUrl) and of array indices (findUnused): CodeQL polynomial-ReDoS findings. #274
@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
@krizaka/ui
- Fixedfix(sites): Yasakia is in development, not coming soon. #243
@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
@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
@krizaka/ui
- NewDataTable: responsive by itself (#222). #229
@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
@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
@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
@krizaka/tokens
- NewKachizaka (predictions among friends, points only) and Akinaza (the shop OS for Québec): their brands, marks and mascots. #202
@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
@krizaka/ui
- NewYomizaka, the fifth product (documents read, classified and checked by Orazaka): its brand and its mark. #196
@krizaka/tokens
- NewYomizaka, the fifth product (documents read, classified and checked by Orazaka): its brand and its mark. #196
@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
@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
@krizaka/ui
- NewOne navigation for the whole Krizaka family (NAV-SYS). #181
@krizaka/ui
- 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
@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
@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
@krizaka/ui
- FixedShortFeed sizes its slides to the feed (h-full) instead of the screen, so a feed in a box shows one video at a time; the "AI-generated" pill of VerticalVideo stays on one line. #173
@krizaka/ui
- NewProduct-branded waits (web and React Native). #165
- NewVerticalVideo and ShortFeed (@krizaka/ui/vertical-video, native @krizaka/ui/native/vertical-video on expo-video): a 9:16 short video with the action rail of a short-video feed on the right — the creator's avatar with… #171
- FixedThe examples show the Krizaka UI cast (Camille, Noor, Tomás, Ada — fictional portraits generated by Orazaka, on the Krizaka CDN) in ProfileCard, PersonCard/SwipeDeck, Avatar and the native profile screen, in place of… #161
@krizaka/ui
- NewDeprecation is a status of the registry: a component marked deprecated carries { since, removedIn, use, reason } (checked by the registry test) and krizaka.com/docs/ui flags it. #160
- Newengines is node >=22 for every package: Node 20 reached end of life, and the products already run on Node 22. #157
- NewMore varied templates, each with its intent and its reason: a case study (longform-page/case-study), a FAQ (docs-article-page/faq), a tip checkout (detail-layout/checkout), an empty page (empty-state/library), planned… #163
- Newfix(native): PersonCard draws one photo — the scrim under the name is sized in points from the overlay's own layout, so the photo is no longer cut in two (a dark band over the face and none under the name) on iOS. #162
- NewNew SkipLink (@krizaka/ui/skip-link): the standalone "skip to content" link for app shells that keep their own layout (WCAG 2.4.1). #164
- NewTemplates are grouped by intent. #156
- FixedDialog, Sheet and AlertDialog give focus back to the element that opened them when there is no Dialog.Trigger (a controlled open opened by a plain button): on Escape focus no longer falls to <body> (WCAG 2.4.3). #158
- FixedMarker (the map) no longer breaks hydration: its host element was created in a useState initializer that differed between the server (nothing) and the browser (an element portalled into), so React threw away the server… #166
@krizaka/tokens
- Newengines is node >=22 for every package: Node 20 reached end of life, and the products already run on Node 22. #157
@krizaka/tailwind
- Newengines is node >=22 for every package: Node 20 reached end of life, and the products already run on Node 22. #157
@krizaka/ui
- NewA people kit, web and React Native: Chat (conversation item, message bubble with its status, composer, typing indicator), SwipeDeck with PersonCard, MatchDialog, TagSelector, StepProgress, VerifiedBadge, PhotoGrid; on… #150
@krizaka/icons
- FixedThe documentation moved to https://ui.krizaka.com, built from this repository (apps/site) at every change: the #179
@krizaka/icons
- Newengines is node >=22 for every package: Node 20 reached end of life, and the products already run on Node 22. #157
@krizaka/charts
- FixedThe documentation moved to https://ui.krizaka.com, built from this repository (apps/site) at every change: the #179
@krizaka/charts
- Newengines is node >=22 for every package: Node 20 reached end of life, and the products already run on Node 22. #157
@krizaka/i18n
- FixedThe documentation moved to https://ui.krizaka.com, built from this repository (apps/site) at every change: the #179
@krizaka/i18n
- Newengines is node >=22 for every package: Node 20 reached end of life, and the products already run on Node 22. #157
@krizaka/ui
- NewData display, from the apps' screens: List (./list: records dense or comfortable, selectable, actions beside each #149
- NewMaps, open source and free (DS5): @krizaka/ui/map — Map on MapLibre GL JS over Protomaps PMTiles hosted on the #144
- NewReact Native gets the feedback Orazaka's Jobs tab waits for, with the web's props: Loader (+ LoaderGlyph, #145
- NewReact Native lists and inputs: SwipeableRow (actions under a swipe, a full swipe runs the outermost, the same actions #153
- NewReact Native navigation: TabBar (the app's main sections, badges said in words, a tick, reselect), Header (a large #146
- NewReact Native overlays and screens: ActionSheet (a short list of actions from the bottom edge, the destructive one in #147
- FixedPackage homepage points to the documentation on krizaka.com (the page the npm listing links to is the one that explains the package). #143
@krizaka/tokens
- FixedPackage homepage points to the documentation on krizaka.com (the page the npm listing links to is the one that explains the package). #143
@krizaka/tailwind
- FixedPackage homepage points to the documentation on krizaka.com (the page the npm listing links to is the one that explains the package). #143
@krizaka/ui
- NewThe controls, crafted (DS5). #139
@krizaka/ui
- NewDates and times, redesigned (DS5). #135
@krizaka/ui
- New@krizaka/ui/form and @krizaka/ui/native/form — forms on TanStack Form v1 behind the facade (PS3): createKrizakaForm({ schema, defaultValues, i18n }) on a zod 4 (Standard Schema) schema shared with the server; typed… #127
- NewNative form fields in @krizaka/ui/native (#122): TextField (label, hint, error, every TextInput prop, multiline, an end adornment), Checkbox (a 44-pt row, words as a node with links, its error) and DateField (a… #127
@krizaka/icons
- FixedPackage homepage points to the documentation on krizaka.com (the page the npm listing links to is the one that explains the package). #143
@krizaka/charts
- FixedPackage homepage points to the documentation on krizaka.com (the page the npm listing links to is the one that explains the package). #143
@krizaka/i18n
- FixedPackage homepage points to the documentation on krizaka.com (the page the npm listing links to is the one that explains the package). #143
@krizaka/ui
- ChangedBreaking · @krizaka/ui/data-table v2 — on TanStack Table v9, the API redone (no v1 compatibility). #118
@krizaka/tokens
- NewYororis brand: mark, theme, mascot, icons. #105
@krizaka/ui
- NewLayouts and templates (W4 of #49): the shells of the products' screens, in a new layouts category of #94
- NewA finer Yazakia mark: two voices — two solid speech bubbles, mirrored, that overlap, the left a shade deeper; #95
- NewThe storytelling kit, generalised from krizaka.com/story: ScrollStage + Scene (chapters played once as they scroll #106