0.3.4

1b5d/llm-api0.3.4Jul 1, 2026by github-actions[bot]

AI Summary

This release introduces multi-page session support with concurrent navigations and expands the Web API coverage with new DOM and Window interfaces. It also includes performance optimizations, stability fixes, and updates to the Chrome DevTools Protocol (CDP) and HTTP networking layers.

Key Highlights

  • Introduction of multi-page sessions with concurrent page navigations and runner support.
  • Expansion of Web API support with new interfaces like Navigator.sendBeacon and Worker.
  • Performance optimizations in CSS styling and telemetry processing.
  • Enhanced Chrome DevTools Protocol (CDP) capabilities including redirect following.
  • Multiple stability fixes including UAP prevention and crash handling improvements.

New Features

  • Concurrent page navigations in the script runtime.
  • Runner and session support for multiple pages.
  • Navigator.sendBeacon and other new Web APIs (HTMLSelectElement.add, Node.moveBefore).
  • HashChangeEvent and Window hashchange event support.
  • CLI support for fetching multiple URLs in one invocation.
  • Telemetry worker moved to its own thread for better performance.
  • CDP redirect following on request-interception fulfillment.
  • New `--strip-mode invisible` CLI option.
  • Document.domain setter and DedicatedWorkerGlobalScope support.

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