github lightpanda-io/browser 1.0.0

3 hours ago

Behavior changes

  • getComputedStyle results are now read-only.
  • The "en" language fallback was removed. Language now comes from --locale.
  • Redirects that switch to GET now drop body headers.

WebDriver

  • Classic HTTP WebDriver, built out into a usable driver
  • Session management; navigate; back/forward; execute
  • Element endpoints; input (click, clear, sendKeys); cookie and viewport endpoints
  • Higher default/max HTTP limits

CORS

  • CORS is now enforced by default. Cross-origin fetch/XHR requests that fail a CORS check are blocked. Turn it off with --disable-features cors. The old --experimental-features cors flag is gone.
  • CORS store with an entry limit (--cors-store-entry-limit, default 1000)
  • Fetch referrer policy + CorsGate referrer checking
  • Sec-Fetch-Site and Sec-Fetch-Mode request headers
  • Limit redirects that carry credentials

New Web APIs

  • WebAssembly.compileStreaming and instantiateStreaming
  • Sanitizer API (initial)
  • TextEncoder.encodeInto
  • element.requestFullscreen (mostly a stub)
  • inert property; iframe sandbox setter
  • img srcset support; report natural dimensions for fetched images
  • new Option() and the legacy constructor API
  • DOMTokenList setters; more accurate window.isSecureContext
  • Experimental ServiceWorker (behind --experimental-features serviceworker) with Cache/CacheStorage

Web API behavior / fixes

  • <template> content handling
  • Custom element callbacks may move the element during parse
  • request.clone() clones headers; correct fetch/response handling of null bodies
  • XHR/fetch report the status reason from the server; TypeError on XHR send(SharedArrayBuffer)
  • input.select() no longer throws for email/number; element.focus() only on focusable elements
  • Correct error on a wrong method; guard headers
  • Validate the XML declaration
  • Avoid spurious mutations for unchanged CSS declarations

CSS / rendering

  • Split the style cascade into property groups; honor !important on tracked stylesheet properties
  • Resolve width/height from stylesheet rules; give the document a height and clamp viewport scroll to it
  • Measure wrapped text for an element's content height
  • Resolve scroll containers through the style cascade; unify wheel dispatch; clamp scroll offsets and latch a wheel to one container

CDP (Chrome DevTools Protocol)

  • Optimize Network.getResponseBody
  • DOM.getFrameOwner returns the owning <iframe>; nodes carry a frameId
  • Answer inspector commands on the session that sent them; echo the sessionId in browser-level replies
  • Notify target closure when disposing browser contexts; report the initial about:blank as loaded
  • window.devicePixelRatio from the viewport scale; char text insertion
  • Move a kept isolated-world context onto the navigated origin

HTTP / Networking

  • Improve caching; add x-frame-options support
  • Keep connections healthy: don't re-use connections likely in a bad state
  • Lowercase response headers; clamp the response status range and report the server's reason phrase
  • Add headers to the sync-request path
  • Accept Netscape cookie format in --cookie; report invalid same-site over CDP
  • Generate an appropriate error on a bot challenge

Agent / tools

  • Add OpenRouter and OrcaRouter providers; lightpanda run - reads a script from stdin
  • Report the HTTP status of a navigation; wait for networkidle after an action-triggered navigation
  • findElement matches names by /regex/
  • MCP carries the navigation outcome as structuredContent
  • REPL output fixes and simpler command dispatch

CLI / ops

  • Report usage errors once, accept -h, show tips only on a terminal; scale the "did you mean" distance with input length
  • Respect NO_COLOR and disable colors when stderr is not a tty
  • Per-page context logs; many warn/err logs downgraded to debug
  • Log the stalled page and JS stack on watchdog termination
  • Record Linux fatal signals without blocking on stderr

Dependencies

  • V8 updated to 15.5.35.13
  • BoringSSL, nghttp2 1.70.0, PCRE2 10.49, refreshed public suffix list

Performance / memory

  • Replace the slab allocator; set M_MMAP_THRESHOLD to 128K on Linux
  • Convert recursive walks to iterative: XPath, SemanticTree/AXNode, markdown, screenshot, dump
  • Share one PCRE2 wrapper across the regex paths
  • Faster V8 background-job scheduling and task wakeup
  • Track and free abandoned html5ever parsers; drop the allocation for the default sanitizer

Stability fixes

  • Crash fixes: node cycles when the parser reparents moved nodes, a scrolling stack overflow, a double-free in IndexedDB, a rare import crash
  • Stop load events on a document superseded by navigation
  • V8 always detaches the global

Don't miss a new browser release

NewReleases is sending notifications on new releases.