0.3.7

calesthio/OpenMontage0.3.7Aug 16, 2026by github-actions[bot]

AI Summary

Focuses on expanding SVG support, improving DOM handling, and implementing a SQLite cache backend. The update refactors the HttpClient and introduces a new Scheduler API.

Key Highlights

  • Full SVG DOM support including geometry, structural elements, and text DOM
  • SQLite cache backend implementation with HTTP cache entry limits
  • Refactored HttpClient with improved header handling and referrer policies
  • New Scheduler API for window and worker contexts

New Features

  • Full SVG DOM support
  • SQLite cache backend
  • New `Scheduler` API (window and worker)
  • New `Request#formData` and `Response#formData`
  • New `URL.isSameOrigin`
  • New `iframe` `srcdoc` support
  • New `Element.webkitMatchesSelector` alias
  • Agent/Tools: Brave search support and `/searchEngine` metacommand
  • Improved `getComputedStyle` with pseudo-elements
  • Custom element creation and reactions pierce Shadow DOM

Full Release Notes

## 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_arena`s to `local_arena`s
- 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