v0.12.0
🚀 Enhancements
- static: ⚠️ Security hardenings and general improvements (#252)
- static: Add
Last-ModifiedandETagconditional caching (#269) - static: Add opt-in
Cache-ControlviamaxAge/immutable(#273) - static: Add byte-range request support (#275)
🔥 Performance
- middleware: Precompose the middleware chain at construction time (#264)
- log: Batch stdout writes and cache the timestamp (#266, #274)
💅 Refactors
- ⚠️ Rename subpath exports to
*Middleware/*Plugin(#278)
🩹 Fixes
- service-worker: Call
respondWithsynchronously and drop extension bypass (#226) - node/web: Correct body handling in
toFetchHandlercompat layer (#232) - Handle
file://entry in loader and node-level TLS in mtls (#231) - node: Prevent body-read crashes and wire corruption in the Node adapter (#228)
- Prevent
waitUntilleak and rejectNaNports (#225) - cli: Stabilization batch and add CLI test suite (#234)
- url: Repair
FastURLorigin-form string and HTTP/2 char normalization (#227) - Resolve
x-forwarded-*hop-aware, right-to-left (#229) - node: Node adapter correctness fixes (
statusText, empty body, HEAD streaming, send errors, sync bridge) (#243) - node: Make
patchGlobalRequestidempotent (#255) - node/web: Remove "data" listener from the socket it was added to (#261)
- node: Guard already-destroyed streamBody cancel against unhandled rejection (#257)
- node: Enable
SO_REUSEPORTforreusePortoption (#258) - node: Don't permanently cache a missed kNeedDrain symbol lookup (#256)
- node: Reject body reads after the body is consumed (#254)
- node/web: Supply
nextto connect-style middleware on the synthetic bridge path (#259) - node: Answer 500 for unhandled handler errors (#251)
- node: Copy
FastResponseinit headers instead of adopting them (#263) - node: Keep req.headers live and consistent across _request materialization (#265)
- node/web: Strip explicit Transfer-Encoding to avoid corrupting the bridged body (#268)
- node/web: Strip hop-by-hop headers from toWebResponse() (#270)
- node/web: Stream bridged responses instead of buffering until end() (#248, #271)
- url: Keep
searchParamsidentity and reflect mutations across deopt (#276) - Improve edge adapters and tests (#242)
📖 Documentation
✅ Tests
- node-adapters: Run fetch(nodeHandler) suite on Deno and Bun in CI (#272)
🤖 CI
- Run the full test suite (#224)