0.4.1
lightpanda-io/browser0.4.1Sep 15, 2026by github-actions[bot]
Upgrading?
AI Summary
Experimental CORS implementation and IndexedDB WPT conformance pass are the main highlights, alongside new Web APIs like `resource-timing` and `Headers.getSetCookie`, along with Ad blocker support and protocol improvements.
Key Highlights
- Experimental CORS implementation with Origin header validation.
- IndexedDB WPT conformance pass and new cursor methods (`nextunique`/`prevunique`).
- New Web APIs: `CountQueuingStrategy`, `resource-timing`, and `HTMLInputElement.valueAsNumber`.
- Ad blocker support using PCRE2 regex filters.
- CDP improvements including request interception patterns.
New Features
- Experimental CORS implementation.
- IndexedDB: `setName`, `nextunique`, `prevunique`, better error handling.
- Web APIs: `CountQueuingStrategy`, `ByteLengthQueuingStrategy`, `resource-timing`, `window.stop()`, `img.decode()`, `navigator.sendBeacon`, `Headers.getSetCookie`, `customElements.getName`, `Element.part`, `HTMLInputElement` valueAsNumber/stepUp/stepDown, `SVGGraphicsElement.getCTM`, `canvas.measureText`, `matchMedia` change events, `HTMLElement.contentEditable`, CSS custom properties.
- Forms: Text entry cursor movement, `beforeinput` cancellation, disabled fieldsets.
- Custom elements: Upgrade clones in place.
- CSS: Memoize StyleManager visibility, faster nth-* selectors.
- Ad blocker: PCRE2 regex support.
- Protocols: WebDriver session management, CDP `DOM.focus`, request interception.
- HTTP: Keep connections alive, cookie handling updates.
- CLI: `--locale` and `--timezone`, closest flag suggestions.
Full Release Notes
## CORS (experimental) CORS is off by default. Enable it with `--experimental-features cors`. - CORS implementation: obey cross-origin checks on fetch/XHR instead of allowing them unconditionally - `Origin` header + request header validation - XHR changes for the CORS WPT tests ## IndexedDB - WPT conformance pass - `setName` on `IDBObjectStore` and `IDBIndex` - `nextunique` / `prevunique` cursor directions - Keep the `upgradeneeded` event alive past dispatch; better error handling - Fix use-after-free reading `txn._db` after `releaseRef` frees it ## New Web APIs - `CountQueuingStrategy` and `ByteLengthQueuingStrategy` - `resource-timing`; `Performance` is now an `EventTarget` - `window.stop()` - `img.decode()` - `navigator.sendBeacon` returns `true` - `Headers.getSetCookie`, `customElements.getName`, `Element.part` - `HTMLInputElement` `valueAsNumber`, `valueAsDate`, `stepUp`/`stepDown`, `showPicker` - `SVGGraphicsElement.getCTM` and `getScreenCTM` - `canvas` `measureText` and the drawing methods chart libraries probe - `matchMedia` change events and real `addListener`/`removeListener` - Reflect `HTMLElement.contentEditable` - Basic support for CSS custom properties ## Forms / input - Text entry: move the cursor on caret keys and to the end on value set; clamp selections against the current value - Trusted `beforeinput` is cancelable - A disabled `fieldset` disables its controls' activation and validation - `option.selected = true` deselects its siblings in a single select - Fix select value assignment with no matching option ## Custom elements - Upgrade autonomous custom-element clones in place - Don't upgrade custom elements in a windowless document - Skip null nodes when a create callback fails ## CSS / rendering / performance - Memoize `StyleManager` visibility per element - Append inserted rules to the buckets instead of rebuilding - Materialize inline styles where layout reads them - `--strip-mode` gains `shell` and `clutter` options - Faster `nth-*` selectors, class matching, attribute lookup, and pseudo-class parsing ## Ad blocker - Run `/regex/` filters with PCRE2 - Request engine ## Protocols - WebDriver: HTTP WebDriver session management - CDP: `DOM.focus`; honor `runImmediately`, `screenWidth`/`screenHeight`, `browserContextId` - CDP: request interception patterns; a context per isolated world per frame - CDP: wheel events scroll the viewport unless over a scroll container - CDP: fix message lifetimes and console argument serialization; remove a terminate/disconnect race ## HTTP / Networking - Keep connections alive across navigations; better redirect handling; timeout tweaks - Enable `CURLOPT_PIPEWAIT` on every easy handle - Update curl to 8.22.0 - Cookies: accept `Secure` and `__Host-` on loopback origins; apply the `SameSite=Lax` exception only on safe methods; compute site-for-cookies from a frame's ancestor chain - Guard WebSocket message-length parsing against integer overflow - Fix drive-letter lookalike URL segments on non-file schemes ## CLI / tools - `--locale` and `--timezone`, with language signals derived from one value - Suggest the closest flag or command on a typo - `note` log level can be silenced; log CLI tips - Scroll the nearest scroll container from the `scroll` tool - Click dispatches a full pointer/mouse sequence, not a bare click event - Agent: route REPL output per tool and align page tables of any size ## Stability / memory - Crash fixes: `TryCatch` copied by value, `history.state` / `Navigation.currentEntry`, V8 re-entry on an unhandled promise - Fix `Notification` use-after-free - Disconnect runaway intersection observers; raise timer caps - Leak fixes: robot store, JS terminated during MutationObserver/IntersectionObserver delivery, cloned HTTP responses, V8 backing store - V8: notify isolate shutdown, restore the initial heap limit, avoid rearming heap termination during teardown - Disarm the watchdog before protocol teardown
Related Repositories
tigerbeetle/tigerbeetle★ 17,227
The financial transactions database designed for mission critical safety and performance.
nullclaw/nullclaw★ 8,130
Fastest, smallest, and fully autonomous AI assistant infrastructure written in Zig
zml/zml★ 4,194
Any model. Any hardware. Zero compromise. Built with @ziglang / @openxla / MLIR / @bazelbuild
dmtrKovalenko/odiff★ 3,280
A very fast SIMD-first image comparison library (with nodejs API)
sleep3r/mtproto.zig★ 2,134
Keep the people you love connected — a tiny self-hosted Telegram proxy that hides in plain HTTPS