0.3.4
OpenTSLM/OpenTSLM0.3.4Jul 1, 2026by github-actions[bot]
AI Summary
This release introduces multi-page sessions with concurrent navigation, adds several new Web APIs, and resolves critical stability and crash issues including handle scope corruption.
Key Highlights
- Support for multi-page sessions and concurrent navigations
- New Web APIs including `sendBeacon`, `add`, `moveBefore`, and `hashchange`
- Significant stability fixes and crash prevention (UAF, handle corruption)
- Updated Chromium dependencies including V8 and libcurl
New Features
- Multi-page sessions with concurrent page navigations
- Runner and session support for multiple pages
- CLI: fetch multiple URLs in one invocation
- New Web APIs: Navigator.sendBeacon, HTMLSelectElement.add, Node.moveBefore, HashChangeEvent, Window hashchange, document.domain setter, Worker scope
- Reworked URL.resolve implementation
- CDP improvements: follow redirects, fix frame interception, viewport metrics
- HTTP updates: libcurl and nghttp2 updates, cross-origin message identity fix
- Telemetry improvements: smaller payload and worker thread separation
- CLI: LIGHTPANDA_DISABLE_CORE_DUMP and --strip-mode invisible
- Build: V8 update, versions.json generation
Full Release Notes
## Multi-page sessions - Concurrent page navigations in the script runtime - Runner and session support for multiple pages - `cli`: fetch multiple URLs in one invocation ## New Web APIs - `Navigator.sendBeacon` - `HTMLSelectElement.add` - `Node.moveBefore` - `HashChangeEvent` + `Window` `hashchange` event - `document.domain` setter - `Worker` is now a proper `DedicatedWorkerGlobalScope` ## Web API behavior / fixes - `replaceWith` with a `DocumentFragment` appends its children - `innerHTML` parsing respects the target element - Reject `XMLHttpRequest.send()` when a send is already active - Cookie accessor moved from `HTMLDocument` to `Document` - `innerText` uses the `StyleManager`'s visibility ## CSS / styling - `getComputedStyle` resolves inline `style=` declarations - Normalize fractions without a leading `0` - Skip inline-style allocation for elements without inline styles (perf) - Skip `CSSStyleProperty` creation when there is no `style` attribute (perf) ## URL - Reworked `URL.resolve` on top of the new URL implementation ## CDP (Chrome DevTools Protocol) - Follow redirects on request-interception fulfillment - Fix `Page.frameAttached` params double-wrapping that broke sub-frame interception - `Page.getLayoutMetrics` returns the browser's viewport - Store viewport override at the browser level ## HTTP / Networking - Update libcurl and nghttp2 - Work around libcurl Brotli trailing-byte rejection (`CURLE_WRITE_ERROR`) - Fix cross-origin `MessageEvent.source` `WindowProxy` identity ## Telemetry - Smaller telemetry payload - Telemetry worker moved to its own thread ## Stability / crash fixes - Fix handlescope corruption on iframe load - Prevent double-free on `BrowserContext` deinit with pending interception (UAF) - Fix crash on `requestAnimationFrame` from a `Worker` - Flush deferred transfers after a synchronous stylesheet fetch ## CLI / Ops - `LIGHTPANDA_DISABLE_CORE_DUMP` to suppress crash core dumps - New `--strip-mode invisible` ## Build / CI - Update V8 - Generate a `versions.json` file - Release: Docker registry login + read permissions, homebrew workflow fixes, trigger homebrew-browser formula update after release