Releases: Takazudo/zudo-front-builder
Release list
v2.1.0
Released: 2026-08-03
The basic-blog scaffold template is redesigned. zfb new now produces a starter that demonstrates
the markdown pipeline and idiomatic Tailwind — a zfb.config.ts with a collection schema and the
enabled markdown features, mdx-components.tsx wiring the five alert components, a
markdown-showcase.md post with one live example per enabled feature, and a README covering both
enabled and available-but-off features. The pagination and tag routes are gone; the README links
their docs instead. Existing projects are unaffected — this only changes what a new scaffold
contains.
Features
Bug Fixes
- fix(templates): visual-pass fixes for the basic-blog starter (1db0ece)
Other Changes
- docs: stop a JA link-validation.mdx paragraph from parsing as a heading (464c936)
- docs: stop a JA islands.mdx paragraph from parsing as a heading (35160fd)
- docs: correct Tailwind v4 enablement framing in concepts/styling.mdx (dbe0803)
- chore: refresh stale basic-blog references in comments (#2271) (04bab02)
- docs: update getting-started and concepts pages for the redesigned starter (#2271) (e64132f)
- test: update basic-blog e2e for the redesigned template (#2270) (f15f613)
- docs(templates): clarify the basic-blog README's not-enabled feature table (6a393b7)
v2.0.0
Released: 2026-08-03
The githubAutolinks markdown feature has been removed, and the config loader rejects unknown
keys — so any site config still carrying githubAutolinks will fail at config load after upgrading.
That is the whole of the breaking surface; everything else in this release is additive or a fix.
Alongside it, this release lands the JSX-nested content passes (links, images, anchors, footnotes
inside MDX JSX and container directives now behave like their plain-markdown counterparts), spread
attribute validation, shadow-session lifecycle management for the build's staging directory, and a
real SWC parse behind the MDX content-bridge gate.
Breaking Changes
- Remove the GithubAutolinks markdown feature entirely (a0b1103) — the
githubAutolinksconfig key
is gone and is now an unknown-key error. Delete it from your config (and from any preset that
emits it) before upgrading. Host-specific issue/PR/SHA autolinking intogithub.com/{repo}does
not belong in a general SSG.
Features
- feat(zfb-build,zfb): shadow session lock/teardown/reap/keep-flag (#2257) (a10012e)
- feat(zfb-md-extras): implement JsxNestedImageDimensions (#2248) (86ccfb5)
- feat(zfb-content): treat JSX-nested external links with target/rel (#2249) (facba95)
- feat(zfb-md-ast,zfb-md-extras,zfb-content): shared mdast-phase wiring for JSX-nested mutation passes (#2247) (a61ba77)
- feat(zfb-content): register JSX-nested anchors and footnote occurrence ids (#2246) (e51e6df)
- feat(build): add opt-in strictContentBridge flag for MDX fallback (#2220) (80465a1)
Bug Fixes
- fix(zfb-content): preserve nested-image alt text in heading extraction (codex review, #2248) (83375b9)
- fix(zfb-content): keep heading text/anchor when a nested external link is treated (#2249 review) (2bcc591)
- fix(zfb-content): exclude footnote-definition bodies from JSX anchor collection (58cf99c)
- fix(zfb-content): make the spread trailing-token check comment/whitespace-aware (#2242) (1798edb)
- fix(zfb-content): reject a trailing comma / extra tokens after a spread operand (64565f9)
- fix(zfb-content): validate + drop-and-warn invalid spread attributes (#2241) (a1bf1ac)
- fix(md-extras): reset in_jsx at FootnoteDefinition boundaries in the JSX-nested link collector (#2222 review) (89b2240)
- fix(md-extras): skip FootnoteDefinition subtrees in the JSX-nested link collector (#2225 review) (5b38ac4)
- fix(md-extras): validate links nested in MDX JSX and container directives (#2184) (d09ba58)
- fix(bundler): replace the content-bridge byte-scanner gate with a real SWC parse (#2219) (1d43d43)
- fix(zfb-server): emit non-empty {} sentinel on page/css SSE frames (bebf80a)
- fix(zfb-test-utils): preserve verbatim SSE field values in next_sse_frame (92dd85b)
- fix(docs): remove unused tailwindcss + @tailwindcss/vite from docs/package.json (f290537)
Other Changes
- refactor(zfb-build): extract run_drain_loop and inject synthetic Change events in pre-tick-hook live-loop tests (f3d815a)
- diag(bundler): instrument the content-bridge gate scanner (#2217) (6b305c7)
- diag(bundler): keep the gate's production path allocation-free (#2217) (956fa44)
- test(zfb-content): live repro of the four JSX-nested anchor classes (#2244) (983d9e5)
- test(md-extras): characterize the link-validation MDX-JSX/directive blind spot (#2223) (4d518da)
- test(md-extras): flip the 4 pending-feature descent tests green (#2184, #2225) (f4871df)
- test(md-extras,zfb): Wave 4 confirm pass for JSX-nested link validation (#2226) (449a88e)
- test(bundler): strengthen the #2186 reproducer confirm pass with positive content + real-call-site assertions (#2221) (8e6dd50)
- test(zfb): confirm SSE frames carry data: after a content edit (#2239) (81371f3)
- test(zfb-md-wasm): re-pin frozen parity corpus to 13 after autolinks fixture removal (dd7b668)
- docs(zfb-build): document the Windows lock-liveness risk as untested, not unsupported (#2258) (24fbba2)
- docs(zfb-build): record #2257 codex-review accepted-risk rationale in code (e33c45d)
- docs(zfb-content): explain why run()/run_with_context() skip the JSX-nested stubs (codex-review) (638371f)
- docs(styling): state the embedded-Tailwind contract (EN + JA) (01bebc1)
- docs(styling): scope the virtual-import claim to the exact tailwindcss specifier (e67ad13)
- docs(content): name the current gate fn in the LaTeX-escape test comment (d930c9e)
- docs(changelog): de-link removed github-autolinks page in historical entry (14f6e07)
- docs: re-derive the Node floor from html-validate after the vite removal (fffbfec)
v1.1.1
Released: 2026-08-02
A release-tooling and documentation patch. No crate or npm package source changed since v1.1.0 —
the published binaries and JS are functionally identical. The two fixes below repair the release
pipeline itself, which only a real release cycle exercises.
Bug Fixes
- fix(release): macos-13 is retired — the mac-x64 fallback was dead (9514520)
- fix(release): point the tap default at the canonical checkout (c554c62)
Other Changes
v1.1.0
Released: 2026-08-01
Promotes the 1.1.0-next.1 prerelease to stable. The list below covers everything since v1.0.0 —
the full set of changes a latest user crosses when upgrading from 1.0.0.
Features
- feat(zfb-content): surface directive diagnostics through the pipeline markdown-diagnostics channel (#2206) (654facc)
- feat(content): highlight fenced code nested in MDX JSX bodies and directives (b86b582)
- feat(build): extend stage-escape remediation text for repo-root loose files (5a1c5d9)
Bug Fixes
- fix(zfb-content): stop the buried-opener sibling scan at buried sibling openers (fc15bad)
- fix(zfb-content): warn on unclosed container opener buried behind a prose first line (5f713c5)
- fix(zfb-content): emit unclosed diagnostic for openers leaked before a glued directive run (06824b8)
- fix(zfb-content): preserve hard breaks and nested-newline phrasing in directive bodies (#2206 review) (9c6ec3c)
- fix(zfb-content): container directives — multi-block bodies, backtick titles, bounded closer search (#2206) (235f56e)
- fix(content): sync nested-code chain on manual feature registration + share the code-block hast constructor (52deb41)
- fix(build): stage root-workspace loose files reached via the broad alias (5eb8702)
- fix(build): state the root package.json name requirement in the remediation text (e53dc19)
- fix(ci): point the drift net at the
latestchannel, not justnext(9ea8d97) - fix(release): ensure homebrew tap checkout before formula write (0a3e00e)
- fix(test): scope composition-test boundary checks to each Note's own span (ed0f1c9)
- fix(test): make the homebrew tap test POSIX sh, not bash (308bcd2)
Other Changes
- chore(release): bump to v1.1.0-next.1 (fcad49f)
- test(zfb-content): cover the hard-break-separated buried opener pre-filter arm (4832878)
- test(content): pin multi-block directive + JSX Note nested-fence composition (#2209) (a69b62b)
- test(build): pin nested-fence class-mode highlight at the bundler layer (626f65c)
- docs(content): de-link private NestedCodeChainSpec from pub getter doc (6080eb7)
- docs(skill): make /l-make-release stable-by-default, ask only on a major (ca309f6)
- docs(skill): update /l-make-release after first stable release (v1.0.0) (3a6ce75)
- chore(ci): wire the root-workspace loose-file env-gate into health.yml (b9f0437)
v1.1.0-next.1
Released: 2026-08-01
Features
- feat(zfb-content): surface directive diagnostics through the pipeline markdown-diagnostics channel (#2206) (654facc)
- feat(content): highlight fenced code nested in MDX JSX bodies and directives (b86b582)
- feat(build): extend stage-escape remediation text for repo-root loose files (5a1c5d9)
Bug Fixes
- fix(zfb-content): stop the buried-opener sibling scan at buried sibling openers (fc15bad)
- fix(zfb-content): warn on unclosed container opener buried behind a prose first line (5f713c5)
- fix(zfb-content): emit unclosed diagnostic for openers leaked before a glued directive run (06824b8)
- fix(zfb-content): preserve hard breaks and nested-newline phrasing in directive bodies (#2206 review) (9c6ec3c)
- fix(zfb-content): container directives — multi-block bodies, backtick titles, bounded closer search (#2206) (235f56e)
- fix(content): sync nested-code chain on manual feature registration + share the code-block hast constructor (52deb41)
- fix(build): stage root-workspace loose files reached via the broad alias (5eb8702)
- fix(build): state the root package.json name requirement in the remediation text (e53dc19)
- fix(ci): point the drift net at the
latestchannel, not justnext(9ea8d97) - fix(release): ensure homebrew tap checkout before formula write (0a3e00e)
- fix(test): scope composition-test boundary checks to each Note's own span (ed0f1c9)
- fix(test): make the homebrew tap test POSIX sh, not bash (308bcd2)
Other Changes
- test(zfb-content): cover the hard-break-separated buried opener pre-filter arm (4832878)
- test(content): pin multi-block directive + JSX Note nested-fence composition (#2209) (a69b62b)
- test(build): pin nested-fence class-mode highlight at the bundler layer (626f65c)
- docs(content): de-link private NestedCodeChainSpec from pub getter doc (6080eb7)
- docs(skill): update /l-make-release after first stable release (v1.0.0) (3a6ce75)
- chore(ci): wire the root-workspace loose-file env-gate into health.yml (b9f0437)
v1.0.0
Released: 2026-07-31
First stable release. Everything developed across the 0.1.0-next.* prerelease line is included;
the list below covers only the changes since v0.1.0-next.99.
Other Changes
v0.1.0-next.99
Released: 2026-07-30
Features
- feat(zfb): plumb watchPollFallback/watchPollIntervalMs config to all watch sites (a13cc69)
- feat(zfb-watcher): add opt-in PollWatcher backend behind WatchBackend option (4220176)
- feat(dev): pre-tick plugin refresh hook in the orchestrator receive loop (#2169) (927592c)
- feat(dev): add plugin virtual-module refresh state (issue #2168) (696642b)
- feat(plugin-host): add watchFiles registration option + forced virtualLoad reload (c1d3df8)
- feat(docs): flip docs build to --strict-broken (801820c)
Bug Fixes
- fix(release): suppress empty slot-recovery header, emit runnable cp lines (d45c0b1)
- fix(release): retain slot backup dir when restore fails (d379fad)
- fix(release): clean up the binary slot backup dir after restore (b511ea5)
- fix(test-utils): reject unrunnable staged esbuild instead of returning it (fab0411)
- fix(build): widen fan_out_safe gate to exclude collection-root plugin watch files (2cf5e04)
- fix(release): save/restore binary slots around the macOS x64 cross-build (95863f6)
- fix(ci): un-gate dev_timing_enabled for no-v8 builds, appease while_let_loop lint (510137a)
- fix(watcher): bypass native collateral-repair loops on the poll backend (770a4db)
- fix(zfb): assert poll backend selection in the poll-backend e2e leg (5b3617a)
- fix(zfb): scale liveness deadline for poll backend, fix stale remedy text (55f6e74)
- fix(zfb-watcher): apply codex-review findings on the poll backend (4f52ac3)
- fix(dev): apply plugin watch invalidation before external narrowing (69e69a8)
- fix(dev): invalidate pages for plugin watch-file changes (#2181) (a097df6)
- fix(dev): plugin watch-file changes conservatively rerun all virtual-module consumers (#2169) (ad44491)
- fix(dev): carry forward discarded batch successes across refresh calls (df8a55e)
- fix(plugin-host): serialize virtualLoad per loaderId, copy watchFiles array (f6dbd71)
- fix(build): make copy-mode a sibling-closure disjunct, not a node_modules conjunct (01cc741)
- fix(bundler): apply nested prune rules before granting the staging exemption (a18aa13)
- fix(zfb-islands): normalize package_dir before first_party_root comparison (0d5ebe0)
- fix(zfb-islands): filter workspace-package edges outside first_party_root (3500f26)
- fix(zfb-build): fix symlink resolution and zudo-doc allowlist gaps in prune guard (a16c3be)
- fix(zfb-build): make SSR virtual-module project-tier remap prune-aware (211c24e)
- fix(deps): bump plist to 1.10.0 to lift 2 RUSTSEC advisory ignores (7501ed9)
Other Changes
- docs(test-utils): tighten HarnessBug doc to say slots execute, not merely exist (e0997a7)
- test(watcher): extract classify_final_verdict, delete FSEvents-racy chmod test (#2185) (df5fe16)
- = start triage-fixes-260730 dev = [skip ci] (7fd479f)
- test(zfb): add poll-backend dev-server e2e leg (d221ae4)
- docs: qualify the watcher-liveness warning as a partial signal (#2176) (f58e90b)
- docs: document watchPollFallback / watchPollIntervalMs (#2176) (cdc7171)
- = start sweep-260729-2-watch-poll-fallback dev = [skip ci] (2c85dd3)
- test(dev): confirm e2e for plugin watch-file content refresh (#2170) (683c14e)
- docs(plugins): state the all-or-nothing refresh publish (EN/JA) (1785589)
- docs(plugins): document addVirtualModule watchFiles + loader-memo refresh (EN/JA) (71978fe)
- = start sweep-260729-2-plugin-watch-hook dev = [skip ci] (405ade9)
- docs(architecture): document the command-layer staging copy-mode trigger (2244aaa)
- test(e2e): remove copy-mode workaround from sibling-watch Scenario D (02a2c17)
- = start sweep-260729-2-copy-mode-trigger dev = [skip ci] (32880f6)
- = start sweep-260729-2-cleanups dev = [skip ci] (5d3e425)
- = start sweep-260729-2 super-epic = [skip ci] (086873d)
v0.1.0-next.98
Released: 2026-07-29
Features
- feat(zfb-types,zfb-router,zfb-build): single
_-prefix privacy predicate (fd74e97) - feat(zfb-build,zfb-types): share one roster+parse across SSR audit/enrolment; glob-aware workspace-walk pruning (#2142) (e7c6365)
Bug Fixes
Other Changes
- docs: split root CLAUDE.md into scoped crates/CLAUDE.md (#2150) (7a7970e)
- refactor(zfb): delegate the 4th has_node_modules_segment copy to zfb-types (#2146, #2128) (60faa1d)
- refactor(zfb-build,zfb-islands): delegate has_node_modules_segment copies to zfb-types (#2146, #2128) (8c8cabe)
- style(zfb-types): cargo fmt page_privacy.rs (1674824)
- refactor(zfb-build): narrow accepted_enrolment_set* to pub(crate) (#2143) (e843633)
- refactor(zfb-build): extract shared classify_metafile_input for audit + enrolment (#2141) (fd96d98)
- test(zfb-build): add byte-exact goldens for stage-escape audit diagnostics (#2141) (6882f4f)
v0.1.0-next.97
Released: 2026-07-29
Features
- feat(zfb): wire strict-broken-links override into build command (#2117) (59beada)
- feat(zfb): add strictBrokenLinks config field (b02e08c)
- feat(zfb): add --strict-broken / --no-strict-broken CLI flags (sub #2114) (5b63dd4)
- feat(zfb): add strictBrokenLinks TS config field (sub #2115) (2044d8b)
- feat(zfb-islands): generalize orphan sweeper to all four .zfb-* temp classes (64b4fa1)
- feat(zfb): scaffold .gitignore for islands/worker tsconfig + virtual-module temp classes (cfe38f1)
- feat(zfb): audit remaining long-lived dev-server tasks, add loud plugin-reader EOF disposition (sub #2104) (b417242)
- feat(zfb): supervise the _redirects watch task's outer JoinHandle (sub #2103) (5b823b1)
- feat(zfb): fail-loud supervision link for the dev orchestrator task (sub #2102) (acb4e9c)
- feat(zfb-build): add ORCH_PANIC_ON_TICK + ORCH_STOP_MS fault-injection knobs (sub #2100) (14e066a)
- feat(zfb): loud-failure fallback for unenrolled first-party macro leaks (epic #2078 Sub 10c) (0fdb291)
- feat(zfb-build): enforce acceptance⇒enrolment on the SSR leg (epic #2078 Sub 10b) (134f7f8)
- feat(zfb-build): enrolment-selection contract for accepted first-party packages (epic #2078 Sub 10a) (fbcb06f)
- feat(ci): classify pnpm audit registry failures as retryable infra, not findings (7e183b1)
- feat(zfb): wire mermaid extract/restore into HTML minification (7565bee)
- feat(zfb): add data-mermaid extract/restore helper for HTML minification (#2032) (e982eec)
- feat(zfb-content): emit GFM footnotes through the JSX-emit path (#2027) (3aeda43)
- feat(zfb-content): emit GFM footnotes through the HAST/HTML path (6901cad)
- feat(zfb-content): document-level GFM footnote model (#2025) (e6d286c)
- feat(zfb-content): emit GFM task-list checkboxes at all three ListItem sites (3b2c50c)
- feat(zfb-render): adapt Web Crypto onto the OS CSPRNG and add a SHA digest op (#2018) (5d9b62c)
- feat(zfb-render): OS entropy host primitive for the embedded V8 host (#2017) (bf99f5c)
- feat(zfb-render): adapt JS fetch/Request/Response onto the request-time transport (#2016) (9dc7a71)
- feat(zfb-render): async Rust fetch transport op for request-time SSR (#2015) (569a6e0)
- feat(v8): thread a per-dispatch build-time/request-time mode into the embedded host (#2014) (a8135e6)
- feat(server): enumerate and normalize _redirects 200-rewrite targets (#2003) (8c007c6)
- feat(dev): rerun the Tailwind CSS scan for Content paths under a css_mirror_root (#1997) (b61d184)
- feat(router,docs): confirm production route table + docs for widened page extensions (#1993) (79c8f95)
- feat(router,build): centralize page-extension contract in zfb-types, widen router to .ts/.js/.jsx (f139c45)
- feat(zfb-types): audit-eligibility predicate for the stage-escape audit (#1986) (4a543f1)
- feat(docs): materialize the clean zudo-doc v4 base (#1961) (e9c4497)
Bug Fixes
- fix(zfb-plugin-resolver): lock virtual-module temp files + export shared consts (#2108) (b26d9bd)
- fix(zfb-islands): lock synthetic tsconfig allocations against the temp sweeper (8b2df82)
- fix(zfb): satisfy clippy --all-targets on the dev-supervision test code (b26ee21)
- fix(zfb): address codex review P2 findings on dev-supervision EOF/panic-hook (sub review-fix) (3659f2e)
- fix(zfb): emit a page reload for all-dynamic-injected projects (sub #2097) (b8a3884)
- fix(zfb): drop SSE liveness handshake for injected cell, use tick() delivery proof (sub #2094) (a1d376f)
- fix(zfb): fix SSE-client timeout + warmup churn in matrix harness (sub #2094) (3e8ec63)
- fix(zfb-build): stop the accepted-package macro scan from failing valid builds (e2ae169)
- fix(zfb-build): gate the #2127 real-copy rule on locality and provenance (review) (50e0c69)
- fix(zfb-build): metafile audit rejects real-copy-staged undeclared workspace siblings (#2127) (04b9941)
- fix(zfb-types): declared-identity audit eligibility for staged real-copy packages (52a81ad)
- fix(zfb-build): canonical-key exemption for consume-from-source siblings (4ae7c9b)
- fix(zfb-build): provenance threading — transactional materialisation + transitive best-effort (0f2660b)
- fix(zfb-types,zfb-build): pin the disarmed SSR stage-escape audit + docs honesty (58b0f6d)
- fix(ci): close two gate-integrity holes in the pnpm audit wrapper (#2074) (8ca47a1)
- fix(zfb-build): removed-path CSS fold covers every mirror-root class (195b0a7)
- fix(zfb-server): classify protocol-relative _redirects targets as external (045603a)
- fix(cloudflare-adapter): drop dead content-length conjunct from styled-404 detection (d316e35)
- fix(zfb): apply epic #2030 review findings to the mermaid preserve helper (de4f453)
- fix(zfb): pass malformed HTML through untouched instead of minifying it raw (6043c58)
- fix(zfb): skip every HTML text-only context in the mermaid scanner (#2032) (8924a84)
- fix(gfm): emit JSX
styleas an object prop, not a string (1b2d729) - fix(gfm): make the two GFM emit paths agree (epic #2021 review) (af40122)
- fix(gfm-confirm): make footnote fixture discriminate reference vs source order (f8b0ecc)
- fix(docs,gfm-parity): apply codex review findings (90496c8)
- fix(zfb-content): keep the footnote label out of HeadingLinksPlugin's reach (aaf5d5b)
- fix(zfb-content): order footnote references by rendered position, not source (9591299)
- fix(dev): stop a zero-paths() route from collapsing content provenance (#2064) (6296428)
- fix(zfb-render): drop cancelled fetch transports before the dispatch returns (977a0ae)
- fix(zfb-render): enforce the request-time capability policy in Rust, not only in JS (epic #2012 review) (aa7603c)
- fix(zfb): close a port-reuse race in the refused-port e2e case (7e99e1b)
- fix(zfb-render): stop accepting whitespace-padded digest algorithm names (#2018) (baa2c77)
- fix(zfb-render): make a zero-length entropy request a true no-op (#2017) (46693dd)
- fix(zfb-render): close four request-parity gaps found by self-review (#2016) (f26d75c)
- fix(zfb-render): give every dispatch its own subrequest budget (#2015) (797997c)
- fix(v8): stop bundle code forging a request-time dispatch mode (#2014) (99a3906)
- fix(dev): apply codex self-review findings on the rewrite pre-warm (#1999) (0bdf845)
- fix(dev): apply epic-review findings on the rewrite pre-warm (#1999) (e1a9268)
- fix(dev): apply self-review findings on the rewrite pre-warm (#2004) (7195e6d)
- fix(dev): pre-warm _redirects 200-rewrite targets at Cold boot (#2004) (5962cc4)
- fix(server): apply self-review findings to rewrite-target enumeration (#2003) (e160c01)
- fix(dev): one shared ssr_routes_published signal for both recovery paths (#2002) (6afe2c4)
- fix(dev): pin and harden the mirror-root CSS-rerun gate (#1995) (c2ac5e8)
- fix(dev): include PathClass::Data in the mirror-root CSS rerun gate (0f9d021)
- fix(build): apply the sidecar skip to the bundler and islands seed too (f9c3d6b)
- fix(router,build,docs): apply epic-level review findings on page extensions (#1990) (e156f3a)
- fix(metafile-deps): keep root-entry source packages authorising their siblings (1cc158d)
- fix: apply epic-level review findings on the Staging Correctness epic (#1982) (3afdb6b)
- fix(bundler): arm the SSR stage-escape audit at a root-claimed workspace (content) (ef00ee3)
- fix(bundler): arm the SSR stage-escape audit at a root-claimed workspace (9e3ff73)
- fix(islands): wire the eligibility predicate into the stage-escape audit (f3d5c5f)
- fix(bundler): accept bare main/module entry declarations (codex P2) (3315034)
- fix(bundler): accept declared first-party workspace siblings in case 2 (#2040) (038131a)
- fix(bundler): keep the raw mirror copy when an unreachable sibling file cannot be preprocessed (#1985) (d1fd21a)
- fix(bundler): expand a claimed sibling's own macros instead of raw-copying (#1985) (cfd5b6e)
- fix(test): remove stale contradictory comment (codex P3) (5db4720)
- fix(test): correct SSR RED test's staging claim per codex review (ec279d7)
- fix(zfb-build): gate consume-from-source RED tests unix-only (#2039) (46a4f03)
- fix(islands): write the esbuild entry before locking it (d77a25f)
- fix(islands): hoist entry sweep to build boundary, cover the ownership lock (3d7120a)
- fix(format): ignore generated src/wasm-highlight/ glue like its src/wasm/ sibling (ab096bd)
- fix(b4push): exclude @takazudo/zfb-md-wasm to match health.yml (#2043) (ecd2c01)
- fix(islands): prove entry ownership by lock, not age alone (#1976) (89fc338)
- fix(islands): sweep esbuild entry temp files stranded by killed processes (#1976) (78722d4)
- fix(zfb-content): preserve class/theme error precedence in build_pipeline (1026381)
- fix(zfb-content): validate codeHighlight classPrefix/roleClasses for any mode (8298374)
- fix(docs): repair 72 broken anchor links after hierarchical heading IDs (#1964) (c4a172d)
- fix(docs-ci): drop dead .assetsignore fallbacks, fail-loud doc-history (#1965) (58cb845)
Other Changes
- docs(zfb): consumer docs (EN/JA) for strictBrokenLinks / --strict-broken (sub #2121) (07cffaa)
- test(zfb): red-first integration proof for --strict-broken/--no-strict-broken (#2118) (a9e23d5)
- test(zfb): dev-isolation regression pin for strictBrokenLinks (#2119) (b114919)
- test(zfb-md-extras): pin bare-fragment matching is exact-only for CJK too (#2116) (1b6a957)
- test(zfb-islands): real-esbuild integration confirm for the temp-sweeper epic (sub #2111) (f01b6d6)
- test(zfb): flip dev-supervision e2e green, add SIGINT exit-0 regression, reconcile counts (sub #2105) (24ddc17)
- test(zfb): RED e2e proving zfb dev must exit when its orchestrator dies (sub #2101) (55ca9e7)
- test(zfb): reclassify dev_content_reload_2063_e2e as untagged per zudo-test-wisdom (sub #2098) (1569218)
- test(zfb): permanent registration + revert-proof for #2063 reload e2e (sub #2098) (a5e691c)
- test(zfb): sharpen the #2063 injected fixture to a single dynamic route (sub #2097) (c073cd0)
- te...
v0.1.0-next.96
Released: 2026-07-24
Bug Fixes
- fix(md-wasm): include final line endings in root position (bceabb2)
- fix(md-wasm): include complete input in root position (0831de7)
Other Changes
- Merge pull request #1933 from Takazudo/claude/wasm-docs-guide-kn2kg9 (c141b33)
- docs: clarify wasm asset placeholder and lazy-init wording (review polish) (5338804)
- merge: cross-link browser highlightCode (#1931) (a110aec)
- merge: wire WASM-SSR docs to importing-wasm guide (#1930) (1f29e26)
- docs: link the WASM-SSR docs to the adapter-agnostic Importing WebAssembly guide (8e722ac)
- docs(guides): cross-link browser highlightCode from syntax highlighting (227972e)
- merge: parseToAst/toMdastRoot in browser guide (#1929) (1e73eb9)
- merge: api/md-wasm reference (#1928) (ce5b245)
- merge: importing-wasm guide (#1927) (a2693d0)
- docs(api): add zfb-md-wasm reference page (774f708)
- docs(guides): add adapter-agnostic Importing WebAssembly guide (585a3c2)
- docs(guides): document parseToAst/toMdastRoot and Vite in browser markdown preview (f95a3f8)
- chore(release): bump to v0.1.0-next.95 (1f32b85)
- test(md-wasm): cover lone CR root endings (e846bb1)
- chore: start #1924 [skip ci] (3601a98)