0.2.0
Release notes for 0.2.0.
Released: 2026-06-09
First stable release of the 0.2.0 line. It promotes the 0.2.0-next.1 → 0.2.0-next.9 prerelease series to stable and moves the latest npm dist-tag from 0.1.0 to 0.2.0, so a plain npm install / pnpm dlx create-zudo-doc now resolves the 0.2.0 line. @takazudo/zudo-doc, @takazudo/zudo-doc-history-server, and create-zudo-doc are released together in lockstep. The sections below aggregate the headline changes from the prerelease line; see the individual 0.2.0-next.N notes for full detail.
Breaking Changes
Removed the deprecated
colorTweakPanelsettings alias. Projects must usedesignTokenPanelinsrc/; configs still settingconfig/ settings. ts colorTweakPanelno longer have any effect (#1862).Removed three unused public-surface vestiges from
@takazudo/zudo-doc(#1866): theDesignTokenTweakPaneltheme stub (the panel UI lives in@takazudo/zdtp), the no-opdisableInlineVisibilityStyleprop onVersionSwitcherProps, and theTocItemtype alias (useHeadingItem).Removed the deprecated
ai-chat-workerpackage. The AI chat API is served by the SSR/endpoint; the standalone Cloudflare Worker package has been dropped.api/ ai- chat
Features
@takazudo/subpath export. A shared icon module ships as a dedicated subpath export adopted across the framework; generated projects importzudo- doc/ icons @takazudo/directly from npm (#1906).zudo- doc/ icons Category metadata via
index.mdxfrontmatter. The claude-resources generator emitsindex.mdxwithcategory_no_page/sidebar_positionfrontmatter instead of_category_.jsonsidecars, eliminating theunsupported data-file extensionbuild warning for consumers of the published package (#1980, #1978, #1985).Package-generated CSS safelist.
@takazudo/zudo-docgeneratesdist/at build and exposes it via asafelist. css .export, so Tailwind v4 builds in downstream projects keep dynamic classes (#1993, #1994)./ safelist. css Canonical root docs URL
/. The root documentation page serves at a canonicaldocs/ /via an optional-catchall route; search, llms.txt, and doc-history all canonicalize the bare root consistently (#1891).docs/ Generic versioned + locale routing. Versioned non-default-locale pages route through
/instead of a hardcodedv/ {version}/ {locale}/ docs/ . . . japath.Hierarchical TOC heading IDs. Adopted zfb's hierarchical heading-ID strategy and slugify so TOC anchors match rendered headings; TOC depth is configurable (#1943, #1946).
noUncheckedIndexedAccessenabled across the board — root tsconfig,packages/zudo-doc, the standalone packages, and thecreate-zudo-doctemplates, so fresh scaffolds inherit the stricter guards.Hardened AI-chat API for non-demo deployments. Added an origin allowlist, a global daily request limit, and prompt caching on the system corpus block so the endpoint is safe and cheaper to deploy beyond the demo (#1889).
OGP meta tags.
HeadWithDefaultsemitsog:type,og:url, andog:site_name(#1975).b4push / CI parity meta-check. A guard detects silent drift between local
b4pushand CI gates; fixture-drift, tags-audit, and design-token-lint are wired intopr-checks.yml(#1967, #1982).
Bug Fixes
HTML Preview now hydrates into the correct vertical-stack layout. Fixed an island double-wrap (an Astro→zfb migration regression) so host, template, and existing downstream scaffolds hydrate into the title-bar / preview / code stack with no call-site change (#1925).
CategoryNav no longer emits dead links for no-page categories. In
categories=mode,category_no_pagecards now link to the category's first routed descendant (or are skipped); CI'scheck:linksis strict (--strict-broken) to matchb4push(#1985).doc-history correctness. Git commands run with the repo root as CWD; CI passes a clean repo-root-relative
--content-dir; thegeneratecommand fails loud (non-zero) on partial git failures; and a generator semaphore deadlock was fixed (#1907, #1913).Versioned-docs link & display correctness on
/routes, including localized nav on versioned-locale pages and history/cross-link resolution (#1916, #1909).v/ doc-history postBuild made opt-in (
GEN_DOC_HISTORY=1), so a plainpnpm buildno longer risks exceeding zfb's postBuild budget on large corpora; CI and dev are unaffected (#1986).nav-source-cache memoization now registers legitimately
undefinedresults as cache hits (sub.has(key)), and AI-chat audit-log keys usecrypto.randomUUID()to avoid same-millisecond collisions.Scaffold-template parity fixes across sidebar-toggle / theme-toggle templates,
@sourcefor thezudo-docdist + inlined safelist, a real client-router bootstrap, and newvsp-3xs/shadow-lgtokens (#1991, #1990).
Performance
doc-history. Collapsed N+1 git spawns into batched calls and parallelized git-history walks via a new async path, cutting build time on large doc sets (#1875, #1930).
Navigation cache. Identity-memoized the nav source and nav tree to cut redundant recomputation (#1902).
Security
Resolved all 31
pnpm auditadvisories (31 → 0). Audit-driven cleanup of dev/build tooling transitives viapnpm.overridesand direct bumps, includingvitest3 → ^4.1.0(the critical advisory has no 3.x patch). Verified green on typecheck, the full unit/package suites, and the production build (a5010712).
Changes
New release pipeline + lockstep versioning. The three publishable packages move together and a freshly scaffolded project pins the matching
@takazudo/zudo-doc/@takazudo/zudo-doc-history-serverrelease; prereleases publish undernext, stable underlatest.Migrated design-token-lint from the vendored
file:dependency to the published@takazudo/npm package; thezudo- design- token- lint@^1. 0. 0 design-token-lintbin name is unchanged (#1863).Bumped zfb across the host and generator pins through the prerelease line to
0.1.0-next.35(CSS-pipeline, islands-scanner, and bare in-content#anchorresolution fixes).Documentation-drift sweep & dead-code removal across configs, docs, and orphaned Astro→zfb host files, plus added type-safety refactors and behavioral tests for the versioned routes and async doc-history path.