diff --git a/docs/v8.md b/docs/v8.md index 56f9e32..9610743 100644 --- a/docs/v8.md +++ b/docs/v8.md @@ -87,6 +87,32 @@ Server string rendering is on par with nanohtml v1 (~13k ops/s, within - [ ] Phase 3 follow-ups for the RFC: API shape feedback on lazy() (thenable handlers vs wrapper), serializing streamed state for hydration of async holes (bankai v10 territory). +- [x] Phase 4: bankai v10 — `packages/bankai`, a thin shell over Vite 8 + (Rolldown). The server side needs no build at all: v8 apps are + plain ESM that Node runs as-authored, so only the client bundles. + - `bankai start ` — dev: Vite middleware mode + HMR, with + per-request streaming SSR through vite.ssrLoadModule and a + virtual client entry (the user writes one isomorphic module; + bankai generates the two lines of browser glue). + - `bankai build ` — client bundle + Vite manifest + + dist/bankai.json route/asset metadata + service worker (if + `/sw.js` exists, built with the precache list + injected) + brotli/gzip precompression of every text asset. + - `bankai serve` — production: static assets with immutable + caching and precompressed-variant negotiation, 103 Early Hints + (`res.writeEarlyHints`) carrying the route's assets before every + SSR page, streaming render, and a `window.initialState` tail + (script-safe serialization, choo internals filtered; hydration + ignores server-only scripts). + - `bankai inspect` — raw/gzip/brotli size table from the manifest. + All proven end-to-end in real Chromium: both dev and prod pages + hydrate with zero console errors and zero mismatch warnings, and + the 103 interim response is asserted at the HTTP level. +- [ ] Phase 4 follow-ups: HTTP/2 dev server with local certs (browsers + only act on Early Hints over h2/h3), static prerender of + enumerable routes, SSR `` from state (needs a head hook in + toStream), edge-runtime deploy recipe (`new Response(toStream())` + — the server core is already web-standard). - [ ] Phase 4: bankai v10 (Vite 8/Rolldown shell, SSR middleware, 103 Early Hints, service worker, precompression) - [ ] Phase 5: docs, examples, launch