Skip to content

0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 31 Aug 16:21
3bab59c

Breaking changes

Iframes and workers no longer load by default. This makes resource loading
consistent: nothing loads unless you ask for it.

  • Restore the old behavior with --load-resources iframe and --load-resources worker.
  • External stylesheets stay off by default too: use --load-resources stylesheet.

Deprecated flags (they still work, but now print a warning):

  • --disable_subframes → iframes are off by default; use --load-resources iframe to turn them on.
  • --disable_workers → workers are off by default; use --load-resources worker to turn them on.
  • --enable_external_stylesheets → use --load-resources stylesheet.
  • --log-filter-scopes → renamed to --log-scopes.
  • Comma-separated list values (e.g. --adblock-lists a,b) → pass the option multiple times instead (--adblock-lists a --adblock-lists b). Affects --strip-mode, --adblock-lists, --block-cidrs, --block-urls.

Protocols

  • WebDriver BiDi support (with a [classic] WebDriver start); protocol selection via CLI; both CDP and BiDi can be served on the same port
  • WebDriver: better keyboard and mouse handling

New Web APIs

  • URLPattern
  • navigator.geolocation + Emulation.setGeolocationOverride
  • WorkerNavigator
  • canvas.toDataURL / toBlob (returns a 1x1 PNG)
  • HTMLElement.draggable IDL attribute
  • Many element getters/setters added and reworked; improved XPath support

New features

  • Screenshot support (--dump png, screenshot tool): renders the page's markdown
  • PDF support (--dump pdf, Page.printToPDF): renders the page's markdown
  • Ad blocker: EasyList parsing (initial)
  • --load-resources with an image parameter (mimics image fetches)
  • --http-header to send headers on every HTTP request
  • --http-version 1.1 / auto flag
  • Optional HTTP rate limit
  • exa search engine support; Keenable engine with a keyless option

Web API behavior / fixes

  • searchParams keeps a linked URL in sync; URLSearchParams iterator and percent-escape fixes
  • FormData encoding
  • FileReader is now asynchronous with proper text decoding
  • Blob / File conformance; correct content-type for blobs; application/octet-stream MIME
  • XHR: sync requests, Blob response type
  • Edit-key support in input/textarea; improved hover events
  • Prevent click() from triggering click()
  • Re-parse element.style when the style attribute changes
  • Promise-returning operations reject (not throw) on a bad receiver
  • Reject XML documents that are not well-formed
  • DOMParser captures the owning frame for the correct URL
  • Handle immediate meta refresh navigation

Rendering / CSS

  • clientHeight/clientWidth return the viewport for the body
  • device-width / device-height media features
  • Compare visibility and CSS keyword values case-insensitively
  • Reuse storage for updated property values
  • Markdown dump separates flex and grid items; skips hidden elements

HTTP / Networking

  • Strip Authorization on cross-origin redirects
  • Send Sec-Ch-Ua-Full-Version-List header
  • Better robots.txt status handling
  • Fix WebSocket data send on a small buffer
  • Guarantee a single-outcome callback contract for Transfer

CDP (Chrome DevTools Protocol)

  • Answer unknown methods with -32601, like Chrome
  • Enforce Network.enable limits
  • Accept the emulation and setup calls drivers send at context creation
  • Pass more Runtime methods through to the inspector; fill all DOM.getBoxModel quads
  • obeyRobots added to LP.configureCDP

MCP / tools

  • Negotiate the protocol version on initialize; enforce HTTP conditions; close the connection after keep_alive=false
  • Add title and annotations to tools/list; logfmt is now a config default
  • Add maxBytes and strip to the html tool; --selector / --max-bytes for fetch
  • Interactive/links/markdown: skip hidden elements, take roles and names from the AXNode, dedup links by href

Agent

  • List all agent providers and gateway examples in the README
  • Fix agent history in JS mode

Stability / memory

  • Disconnect runaway mutation observers; drop async module completions after termination
  • Fix double-release and other edge-case memory issues
  • Fix UAF when a PerformanceObserver disconnects in its callback
  • Fix arena leak on page shutdown with live animations
  • Several crash fixes: null deref on cross-context ReadableStream, unsafe element cast, label click
  • Node.flags for lookup short-circuit (perf)

Build

  • Simplify build.zig; pin dev_fast to the host glibc; use an orderfile on Linux CI builds
  • -Ddev_fast speeds up Linux debug builds: shared V8 + Zig's self-hosted backend (instead of LLVM)