zfb
GitHub repository

Type to search...

to open search from anywhere

v0.1.0-next.40

Created Jun 24, 2026Takeshi Takatsudo

v0.1.0-next.40

Released: 2026-06-12

Headlined by the lazy dev-render epic (PR #1029): zfb dev now renders pages on request instead of rebuilding every page on each file-change tick. Edits mark routes stale; the first request to a stale route triggers the render, guarded by a tick-vs-request exclusion so request-time writes never race the pipeline. Lazy mode is the default, with ZFB_DEV_EAGER as the escape hatch.

Features

  • Lazy dev rendering ON by default: file-change ticks mark pages stale instead of re-rendering them; pages render on first request. ZFB_DEV_EAGER=1 restores the eager behavior (#1027, 1976098).

  • Lazy render adapter — request-time SSG render via staleness claim + renderer mutex + unified write path (#1026, 0ef6e67), with the render-on-request hook install gated on the boot-resolved lazy switch (fb2586e).

  • Live reload in lazy mode: SSE Page events fire on stale-marking ticks, and the dev client's EventSource is base-prefix-aware (#1027, 18dce4c).

  • Staleness state machine with the lazy eager-vs-stale split (#1025, 4eb7e1b), plus a pages_stale outcome signal and StaleProbe pipeline seam (9dcdb6d).

  • Request-time write API with tick-vs-request exclusion (#1024, 3f028a7), hardened to a guarded write that revalidates under exclusion (#1017, 0cb5405).

  • zfb-server render-on-request hook seam — trait + handle + dispatch leg (#1020, 8a6ea36) — and a URL→route reverse-lookup index on DevRouteTables (#1019, 1b8d502).

Bug Fixes

  • The lazy-render claim is revalidated under pipeline exclusion before the request-time write, closing a stale-write window (#1017, f2982c7).

  • The boot initial render stays eager in lazy mode, so the first page load never waits on a cold render (#1025, dfb567f).

  • reset_cache now takes the tick-vs-request exclusion too (#1024, 3a1a388).

  • zfb dev announces the actual bound port, making --port 0 output parseable (#1018, 24a2952).

Other Changes

  • New dev_serve_e2e regression net driving a real zfb dev edit→serve cycle (#1018), lazy dev-render contract scenarios with a ZFB_DEV_EAGER session (#1027), and inherited lazy-render env stripped from spawned dev sessions (562f90d).

  • Smoke tests gained a dev-mode edit→serve assertion (#1022) with a hardened wall-clock-deadline poll (7acee9c); orchestrator-layer tick-class matrix for lazy staleness (#1025).

  • WriteCache write/dedup component extracted from DevAssetPipeline (#1021); SSE test helpers promoted to test-utils (#1018).

  • docs: lazy dev rendering default + env switches on dev-mode-lifecycle, and the adapter dispatch-flow comment updated for the default flip (#1027).

Revision History

Takeshi TakatsudoCreated: 2026-06-25T05:17:25+09:00Updated: 2026-06-25T05:17:25+09:00

AI Assistant

Ask a question about the documentation.