github lightpanda-io/browser 0.3.7

5 hours ago

New Web APIs

  • Scheduler (window and worker)
  • Full SVG DOM: geometry, structural elements, text DOM, resource elements, live collections, live scalar values
  • Element/ShadowRoot getHTML
  • Request#formData and Response#formData
  • URL.isSameOrigin
  • iframe srcdoc support
  • Element.webkitMatchesSelector (alias of matches)

Web API behavior / fixes

  • Custom element creation and reactions now pierce the Shadow DOM
  • Report custom-element errors via window.reportError
  • Iterators given to types with an indexed property
  • Track node relocation across shadow roots; better events from a ShadowRoot
  • getComputedStyle improvements with pseudo-elements
  • Console conformance improvements
  • Forms: include optgroup children in a select's list of options
  • Fix script setAttribute src; fix script load/error events
  • Increase max timer count
  • Collection bug fixes; keep ascending live-collection reads linear
  • Fix potential UAF when an option's value is set programmatically

Rendering / CSS

  • CSS width/height are now children-content aware
  • Fall back to contentWidth when clientWidth is not explicit

HTTP / Networking

  • Enforce User-Agent and Sec-Ch-Ua header restrictions; improve header overwrite/enforcement
  • Rework how HttpClient headers work
  • Start of a correct referrer policy; recalculate Referer on each redirect
  • Single-flight request coalescing
  • fetch defaults --wait-until to load
  • Redirect even on a missing close_notify
  • Buffer a closed ReadableStream body for a fetch POST
  • Rework Connection.upgrade with header_parser

Cache

  • SQLite cache backend
  • HTTP cache entry limit; cache maintenance moved to startup and browser.deinit

CDP (Chrome DevTools Protocol)

  • Origin and additional Host header validation for CDP connections
  • Fall back to loopback when the /json/version bind host is a wildcard
  • Add request post data; send request-information notifications on redirect
  • Add /json/protocol endpoint
  • Split active_conns from active_threads
  • Avoid creating duplicate isolated worlds
  • Fix Playwright redirect routing chains and auxiliary CDP session interception
  • Mask URL fields from crash reports; remove Target.sendMessageToTarget session_id assertion

Agent / tools

  • Support subscription auth via Codex
  • Add Brave search + /searchEngine metacommand
  • Treat backendNodeId 0 as omitted; add recovery hints to errors; surface unknown tool names in-band
  • Reduce tool output cap to 64KB (except for extract)
  • goto: optional waitUntil + DOMContentLoaded-gated selector waits

Memory efficiency

  • Switch Node, Element, and EventTarget _type fields to a bare tag
  • Remove the _proto field from most Node types
  • Optimize the node child list; rework String to be align(8)
  • Improve ArenaPool usage; move more call_arenas to local_arenas
  • Prefer ensureTotalCapacityPrecise; improve blob memory efficiency
  • Reduce V8 memory-pressure notifications; add JS memory gauge and arena allocation metrics

Stability fixes

  • Capture and propagate ExecutionTerminated; clear the V8 terminating state after a terminated microtask checkpoint
  • Fix page double-free on navigate failure (UAF)
  • Propagate worker-thread failures to the exit code

Build / dev

  • -dev_fast build flag; on by default on Linux; support for a pre-built shared library
  • Replace @cImport with build-system translateC
  • Replace the deprecated MemoryPool with the managed memory pool
  • Rework the scheduler; runner advances idle notifications outside the wait-condition loop
  • Add lp.IS_DEBUG / lp.IS_TEST; more consistent clock/timestamp use

Don't miss a new browser release

NewReleases is sending notifications on new releases.