v0.1.0-next.97
v0.1.0-next.97
Released: 2026-07-29
Features
feat(zfb): wire strict-broken-links override into build command (#2117) (59beadad)
feat(zfb): add strictBrokenLinks config field (b02e08c4)
feat(zfb): add --strict-broken / --no-strict-broken CLI flags (sub #2114) (5b63dd41)
feat(zfb): add strictBrokenLinks TS config field (sub #2115) (2044d8be)
feat(zfb-islands): generalize orphan sweeper to all four .zfb-* temp classes (64b4fa1d)
feat(zfb): scaffold .gitignore for islands/worker tsconfig + virtual-module temp classes (cfe38f14)
feat(zfb): audit remaining long-lived dev-server tasks, add loud plugin-reader EOF disposition (sub #2104) (b417242d)
feat(zfb): supervise the _redirects watch task's outer JoinHandle (sub #2103) (5b823b19)
feat(zfb): fail-loud supervision link for the dev orchestrator task (sub #2102) (acb4e9cd)
feat(zfb-build): add ORCH_PANIC_ON_TICK + ORCH_STOP_MS fault-injection knobs (sub #2100) (14e066ab)
feat(zfb): loud-failure fallback for unenrolled first-party macro leaks (epic #2078 Sub 10c) (0fdb2917)
feat(zfb-build): enforce acceptance⇒enrolment on the SSR leg (epic #2078 Sub 10b) (134f7f8a)
feat(zfb-build): enrolment-selection contract for accepted first-party packages (epic #2078 Sub 10a) (fbcb06f7)
feat(ci): classify pnpm audit registry failures as retryable infra, not findings (7e183b17)
feat(zfb): wire mermaid extract/restore into HTML minification (7565bee7)
feat(zfb): add data-mermaid extract/restore helper for HTML minification (#2032) (e982eec8)
feat(zfb-content): emit GFM footnotes through the JSX-emit path (#2027) (3aeda433)
feat(zfb-content): emit GFM footnotes through the HAST/HTML path (6901cade)
feat(zfb-content): document-level GFM footnote model (#2025) (e6d286c9)
feat(zfb-content): emit GFM task-list checkboxes at all three ListItem sites (3b2c50cf)
feat(zfb-render): adapt Web Crypto onto the OS CSPRNG and add a SHA digest op (#2018) (5d9b62ca)
feat(zfb-render): OS entropy host primitive for the embedded V8 host (#2017) (bf99f5cc)
feat(zfb-render): adapt JS fetch/Request/Response onto the request-time transport (#2016) (9dc7a716)
feat(zfb-render): async Rust fetch transport op for request-time SSR (#2015) (569a6e00)
feat(v8): thread a per-dispatch build-time/request-time mode into the embedded host (#2014) (a8135e6a)
feat(server): enumerate and normalize _redirects 200-rewrite targets (#2003) (8c007c67)
feat(dev): rerun the Tailwind CSS scan for Content paths under a css_mirror_root (#1997) (b61d1840)
feat(router,docs): confirm production route table + docs for widened page extensions (#1993) (79c8f954)
feat(router,build): centralize page-extension contract in zfb-types, widen router to .ts/.js/.jsx (f139c45b)
feat(zfb-types): audit-eligibility predicate for the stage-escape audit (#1986) (4a543f11)
feat(docs): materialize the clean zudo-doc v4 base (#1961) (e9c4497d)
Bug Fixes
fix(zfb-plugin-resolver): lock virtual-module temp files + export shared consts (#2108) (b26d9bd9)
fix(zfb-islands): lock synthetic tsconfig allocations against the temp sweeper (8b2df821)
fix(zfb): satisfy clippy --all-targets on the dev-supervision test code (b26ee215)
fix(zfb): address codex review P2 findings on dev-supervision EOF/panic-hook (sub review-fix) (3659f2ed)
fix(zfb): emit a page reload for all-dynamic-injected projects (sub #2097) (b8a38849)
fix(zfb): drop SSE liveness handshake for injected cell, use tick() delivery proof (sub #2094) (a1d376fd)
fix(zfb): fix SSE-client timeout + warmup churn in matrix harness (sub #2094) (3e8ec63b)
fix(zfb-build): stop the accepted-package macro scan from failing valid builds (e2ae169c)
fix(zfb-build): gate the #2127 real-copy rule on locality and provenance (review) (50e0c694)
fix(zfb-build): metafile audit rejects real-copy-staged undeclared workspace siblings (#2127) (04b99419)
fix(zfb-types): declared-identity audit eligibility for staged real-copy packages (52a81ad5)
fix(zfb-build): canonical-key exemption for consume-from-source siblings (4ae7c9bc)
fix(zfb-build): provenance threading — transactional materialisation + transitive best-effort (0f2660ba)
fix(zfb-types,zfb-build): pin the disarmed SSR stage-escape audit + docs honesty (58b0f6d4)
fix(ci): close two gate-integrity holes in the pnpm audit wrapper (#2074) (8ca47a1a)
fix(zfb-build): removed-path CSS fold covers every mirror-root class (195b0a72)
fix(zfb-server): classify protocol-relative _redirects targets as external (045603a7)
fix(cloudflare-adapter): drop dead content-length conjunct from styled-404 detection (d316e351)
fix(zfb): apply epic #2030 review findings to the mermaid preserve helper (de4f4532)
fix(zfb): pass malformed HTML through untouched instead of minifying it raw (6043c582)
fix(zfb): skip every HTML text-only context in the mermaid scanner (#2032) (8924a844)
fix(gfm): emit JSX
styleas an object prop, not a string (1b2d729c)fix(gfm): make the two GFM emit paths agree (epic #2021 review) (af401223)
fix(gfm-confirm): make footnote fixture discriminate reference vs source order (f8b0ecc8)
fix(docs,gfm-parity): apply codex review findings (90496c81)
fix(zfb-content): keep the footnote label out of HeadingLinksPlugin's reach (aaf5d5b2)
fix(zfb-content): order footnote references by rendered position, not source (9591299c)
fix(dev): stop a zero-paths() route from collapsing content provenance (#2064) (6296428d)
fix(zfb-render): drop cancelled fetch transports before the dispatch returns (977a0aec)
fix(zfb-render): enforce the request-time capability policy in Rust, not only in JS (epic #2012 review) (aa7603c2)
fix(zfb): close a port-reuse race in the refused-port e2e case (7e99e1ba)
fix(zfb-render): stop accepting whitespace-padded digest algorithm names (#2018) (baa2c77b)
fix(zfb-render): make a zero-length entropy request a true no-op (#2017) (46693dde)
fix(zfb-render): close four request-parity gaps found by self-review (#2016) (f26d75ca)
fix(zfb-render): give every dispatch its own subrequest budget (#2015) (797997c0)
fix(v8): stop bundle code forging a request-time dispatch mode (#2014) (99a39065)
fix(dev): apply codex self-review findings on the rewrite pre-warm (#1999) (0bdf8456)
fix(dev): apply epic-review findings on the rewrite pre-warm (#1999) (e1a92689)
fix(dev): apply self-review findings on the rewrite pre-warm (#2004) (7195e6db)
fix(dev): pre-warm _redirects 200-rewrite targets at Cold boot (#2004) (5962cc42)
fix(server): apply self-review findings to rewrite-target enumeration (#2003) (e160c018)
fix(dev): one shared ssr_routes_published signal for both recovery paths (#2002) (6afe2c4d)
fix(dev): pin and harden the mirror-root CSS-rerun gate (#1995) (c2ac5e89)
fix(dev): include PathClass::Data in the mirror-root CSS rerun gate (0f9d021b)
fix(build): apply the sidecar skip to the bundler and islands seed too (f9c3d6bc)
fix(router,build,docs): apply epic-level review findings on page extensions (#1990) (e156f3a1)
fix(metafile-deps): keep root-entry source packages authorising their siblings (1cc158da)
fix: apply epic-level review findings on the Staging Correctness epic (#1982) (3afdb6ba)
fix(bundler): arm the SSR stage-escape audit at a root-claimed workspace (content) (ef00ee3a)
fix(bundler): arm the SSR stage-escape audit at a root-claimed workspace (9e3ff732)
fix(islands): wire the eligibility predicate into the stage-escape audit (f3d5c5f3)
fix(bundler): accept bare main/module entry declarations (codex P2) (33150349)
fix(bundler): accept declared first-party workspace siblings in case 2 (#2040) (038131af)
fix(bundler): keep the raw mirror copy when an unreachable sibling file cannot be preprocessed (#1985) (d1fd21a2)
fix(bundler): expand a claimed sibling's own macros instead of raw-copying (#1985) (cfd5b6e9)
fix(test): remove stale contradictory comment (codex P3) (5db47204)
fix(test): correct SSR RED test's staging claim per codex review (ec279d7b)
fix(zfb-build): gate consume-from-source RED tests unix-only (#2039) (46a4f036)
fix(islands): write the esbuild entry before locking it (d77a25f4)
fix(islands): hoist entry sweep to build boundary, cover the ownership lock (3d7120a2)
fix(format): ignore generated src/wasm-highlight/ glue like its src/wasm/ sibling (ab096bd8)
fix(b4push): exclude @takazudo/zfb-md-wasm to match health.yml (#2043) (ecd2c019)
fix(islands): prove entry ownership by lock, not age alone (#1976) (89fc338c)
fix(islands): sweep esbuild entry temp files stranded by killed processes (#1976) (78722d45)
fix(zfb-content): preserve class/theme error precedence in build_pipeline (1026381f)
fix(zfb-content): validate codeHighlight classPrefix/roleClasses for any mode (82983748)
fix(docs): repair 72 broken anchor links after hierarchical heading IDs (#1964) (c4a172db)
fix(docs-ci): drop dead .assetsignore fallbacks, fail-loud doc-history (#1965) (58cb8457)
Other Changes
docs(zfb): consumer docs (EN/JA) for strictBrokenLinks / --strict-broken (sub #2121) (07cffaa7)
test(zfb): red-first integration proof for --strict-broken/--no-strict-broken (#2118) (a9e23d5b)
test(zfb): dev-isolation regression pin for strictBrokenLinks (#2119) (b114919d)
test(zfb-md-extras): pin bare-fragment matching is exact-only for CJK too (#2116) (1b6a9572)
test(zfb-islands): real-esbuild integration confirm for the temp-sweeper epic (sub #2111) (f01b6d6c)
test(zfb): flip dev-supervision e2e green, add SIGINT exit-0 regression, reconcile counts (sub #2105) (24ddc172)
test(zfb): RED e2e proving zfb dev must exit when its orchestrator dies (sub #2101) (55ca9e70)
test(zfb): reclassify dev_content_reload_2063_e2e as untagged per zudo-test-wisdom (sub #2098) (15692188)
test(zfb): permanent registration + revert-proof for #2063 reload e2e (sub #2098) (a5e691c1)
test(zfb): sharpen the #2063 injected fixture to a single dynamic route (sub #2097) (c073cd04)
test(zfb): extend #2063 reload repro across variant matrix (sub #2094) (433ce808)
test(zfb): add #2063 reload repro fixture + baseline SSE e2e (sub #2093) (26d9a39c)
docs(CLAUDE): authoritative #[ignore] manifest reconciliation for epic #2078 (Sub 11, #2091) (e2e7d7b7)
docs(zfb-build): sharpen the C4 evidence to name the pre-#2127 base commit (26bd5bc8)
refactor(zfb-build,zfb-types): dedup has_node_modules_segment; unify mirror traversal (0413daaf)
docs(CLAUDE): reconcile #[ignore] manifest counts after epic #2078 Wave 1 merges (a3d2767c)
ci(health): skip #2083's RED pending-feature test in the commands::build sweep (c65c9419)
test(zfb-build): RED/pin tests for rejected mirror-derived materialisation residue (03403370)
test(zfb): RED command-layer test for #2048's silent islands/client macro shape (26af1ff8)
test(zfb-build): RED tests for canonicalized metafile keys rejecting declared siblings (6e66fbb2)
test(zfb-build): RED case (m) — transitive glob match from unreachable mirrored host must be best-effort (f4b847b7)
ci(workflows): run health + pr-checks T1 gate on base/** epic-PRs (024dc719)
test(ci): add mechanical exam.yml/health.yml #[ignore] parity guard (#2072) (4444ced1)
docs(routing): promote pages/ helper-module convention to its own section (#2075) (d9ec8963)
test(cloudflare-adapter): repair styled-404 mock's false content-length premise (#2038) (b9f57d04)
docs(research): fix the #2037/#2038 wave-scope collision (#2036) (c594c620)
docs(research): diagnose the styled-404 substitution failure (#2036) (fbbcac81)
test(html-minify): scope the red assertion to the mermaid body (#2031) (230fdad1)
test(html-minify): red test for mermaid whitespace collapse (#2031) (49a61fe7)
test(gfm-footnotes): confirm pass for task-list/footnote emission (#2029) (fb8dfdac)
docs(gfm): document shipped task-list checkboxes and footnotes; add wasm/native parity coverage (dade5702)
refactor(dev): bind page_sources beside the boot tuple instead of widening it (a969d88f)
test(zfb-content): strengthen JSX footnote backreference assertions (codex review) (94a10112)
test(zfb-content): RED characterization tests for GFM footnote drop (#2023) (5e369647)
test(zfb-content): RED characterization tests for GFM task-list checkboxes (#2022) (b17e1f9d)
test(zfb): workerd/wrangler parity confirm pass for request-time fetch + Web Crypto (52f99b13)
test(zfb): deterministic embedded-host e2e for request-time fetch + Web Crypto (#2019) (e04e1d6d)
test(zfb-render): cover the PRODUCTION os-entropy error mapping (#2017) (aa8495ff)
docs(research): fix redirect-status and mode-seam rows after self-review (#2013) (f20fb975)
docs(research): lock the request-time capability contract for embedded V8 (#2013) (6ee77f6a)
docs(test): describe the post-fold V8 host adapter test module accurately (c76be31d)
refactor(zfb): fold new_with_hooks onto the shared serve_v8_host_requests loop (52e73eeb)
test(v8-host): fix mislabeled thread-exit drain test (codex review, #2009) (0582aab0)
test(v8-host): characterize the frozen inline V8 request loop (#2009) (700a6afd)
test(dev): make the recovery ordering pin falsifiable at the call site (#1999) (51fe7ba0)
chore(test): register Dev Self Heal e2e binaries in the central gate (#2007) (febf1445)
test(dev): RED repro — SSR-only project never reloads open tab after deferred publish (#2000) (f363c617)
test(dev): RED test for issue #1825 — Cold _redirects rewrite target 404s indefinitely (9a7b2fa2)
test(dev): confirm mirror-root CSS scan e2e with an explicit revert-proof (1ad4cb70)
test(dev): RED repro — sibling mirror-root .mdx utility class never reaches the Tailwind scan (#1996) (20a66a43)
test(zfb): confirm pass — real build+dev over all seven page-extension shapes (#1994) (e79cde6e)
test(router): characterize today's page-extension routing behavior (#1991) (7f8705e3)
test: real-esbuild cross-pipeline confirm pass for sibling macros + root-claimed audit (#1989) (64273474)
test(staging-correctness): RED tests for #1730 root-workspace stage-escape audit gap (bad030b1)
test(zfb-build): red tests for #1724 sibling alias-target macro expansion (1631ee1b)
test(zfb-build): RED tests for consume-from-source workspace sibling (#2039) (78887578)
docs: correct github-slugger-compatibility claim in heading-links.mdx (949d8f99)
docs(ja): back-port EN-only depth into JA directives-registry and syntax-highlighting (d28d497c)
ci(docs): wire check:wrangler-pin into docs-checks.yml (9c38cab3)
docs: rewrite docs/CLAUDE.md for v4 minimal scaffold, fix stale doc-history-meta prose (095d9913)
chore(docs): adopt v4 --claude-skills output for the package-shipped skills (#1962) (c4ea1bb4)
docs(ja): fix EN/JA parity gaps found in review (bd765c4f)
docs(ja): translate WASM + browser-preview pages, back-port browser highlight (S12, #1946) (556e3059)
docs(ja): add GFM and examples JA translations (95fb66b4)
docs: fix eager virtual-module loader claim, document devMiddleware contract, add plugin-options example, define-plugin + slugify refs, headerNav (7523a42f)
docs: fix architecture/build-pipeline accuracy gaps (S8, issue #1941) (c8e375e4)
docs(ssr-cloudflare): fix wasm naming, add ASSETS binding, 404 precedence, run_worker_first, and KV example (1535d5d7)
docs: fix getting-started pnpm version, node-free link, and config defaults (#1942) (52627158)
docs(md-wasm): depth-fix EN api/guide pages for WASM package (7bea9ae5)
docs: add prefetch, form-submission, and event API depth to client-side routing (c258d772)
docs: fix CLI + defineConfig reference accuracy (issue #1945) (8921a575)
docs: fix props-spread and params.slug models, add content-collection filtering docs (#1937) (9ee1406e)
docs: add GFM feature page, fix markdown-features index gaps (98bbbd06)
docs: fix styling/static-assets accuracy (lightningcss, Tailwind scan roots, sibling CSS) (2e696add)
docs: fix resolve-links opt-in claim, document toc/directives config surfaces (06d33b02)