New Web APIs
- Drag-and-drop file upload:
DataTransfer,DataTransferItem,DataTransferItemList+DragEvent - File inputs:
input type=filesupport (FileList,input.files/value,DOM.setFileInputFiles), multipart/form-data encoding on submit CookieStoreweb API; WebSocket cookies; cleaner cookie ownershipNotificationweb APIDOMMatrix/DOMMatrixReadOnly,StaticRange- Shadow DOM: declarative shadow DOM (DSD), WPT improvements, markdown-dump piercing
- Popover support (initial)
- Web Crypto API (
atob/btoafixes, WPT/WebCryptoAPI/) XMLHttpRequest.uploadandXMLHttpRequest.overrideMimeType()Element.scroll/scrollTo/scrollBy,Element.scrollIntoView,Element.offsetParent,Element.stylesetterNode.lookupPrefixHTMLSelectElement.type,HTMLOptionElement.label- Attribute reflection for
HTMLSourceElement,HTMLEmbedElement,HTMLParamElement(plus more HTML attribute tweaks) readystatechangefired at document; module-type workers;postMessage/MessageEventMessagePort tracking- localStorage/sessionStorage persistence across navigations + quota fix
URL handling
- Reworked URL web API on top of rust-url (new dependency + bindings)
- Ignore query/fragment slashes in URL resolve; about:blank iframes/popups inherit parent base_url; schema-less URL navigation; unified Data URLs; WPT
/url/improvements
CDP (Chrome DevTools Protocol)
Input.dispatchMouseEvent: mouse button + clickCount, wheel events, mouseup, hover/mousemove eventsPage.navigateanswers witherrorTexton navigation failuresetExtraHTTPHeaderscan override built-in headers (e.g. User-Agent) with validationconsole.log/console.warnreported with their ownconsoleAPICalledtypes- WPT action_sequence support; actionSequence fired on next tick
HTTP / Networking
- 3xx responses without a
Locationheader delivered as final responses; stricter redirect status checks - WebSocket sends
Originheader on upgrade - Server-side agent-discovery signals:
Linkresponse header (RFC 8288) + robots.txt Content-Signal - TCP read/write timeout extended 2s → 10s
--wait-untilgainsnetworkalmostidle- Module/script preloading; capture 401/407 bodies
Performance
- Preload modules and scripts
- Optimized
IntersectionObserver - Reduced generated code size of the logger; less generic use
- Avoid excessive
tabIndexlookup/parse; sequential focus navigation on Tab
Other / behavior
navigator.globalPrivacyControldefaults tofalse; removednavigator.getBatterydummy- Password inputs mapped to textbox accessibility role
- Relative
:has()selector arguments (:has(> div),:has(~ p)); better CSS name selector parser - Viewport default sourced from
MediaQuery.Viewport.default(1920×1080)
Stability fixes
- Multiple UAF/double-free/leak fixes: FormData arena, WebSocket cleanup, synthetic URLs, CustomElement definitions, FinalizerCallback identity, frame teardown orphaned contexts, log messages
- More robust worker/CDP-client disconnect handling; re-entrant stream parsing guard
CI / dev
- Fixed leaky thread in test runner; improved ArenaPool debug reporting