Appearance
Limits and roadmap
What it cannot do
- Generators and suspending
awaitunder the original engine,EngineAowl(the interpreter is a tree walker). The newer default engine,EngineAowlJs, does not share this limit — itsPromise/async/awaitis real — but has not yet been measured against the WPT standing tracked on the Web Platform Tests page, which still reflectsEngineAowl. - WASM support (not ported).
- Worker threading. The architecture is decided — process-per-Worker, using the sandboxed-child-process mechanism now proven for isolated JS/DOM execution — but the Worker interface itself is not built yet.
- WebAudio.
- Full Canvas rasterization:
EngineAowlJstracks canvas state (transform, styles, path construction) but does not paint pixels. - SVG path-data parsing: SVG DOM geometry and attributes are bound, but the
dattribute's path-data grammar is not parsed. - MediaSource/EME DRM. This is a permanent, deliberate exclusion, not a todo — see below.
- Multi-node-selection editing (
contentEditable/execCommandcover single-rangebold/italic/insertText, not arbitrary multi-node selections). - Some deep CSS edge cases remain on the original engine's known list:
:focus-visible,dir=auto, named-item access. - UTF-16 offsets in
CharacterDatamethods for non-BMP text. - A native HTTP/TLS stack:
fetch()underEngineAowlJsdoes real network I/O, but by shelling out tocurl.exe, not a client built into the mod. - Speed comparable to a JIT browser:
EngineAowlJshas a JIT tier, but it is currently disabled for this embedding after a real x86-64 codegen bug was found (functions crossing a 64-call hotness threshold were miscompiled, corrupting memory). Reported upstream;EngineAowlJsruns interpreter-only until it's fixed.
DRM: a permanent exclusion, not a gap
Titicaca will not integrate Google's proprietary Widevine CDM, in any form — not extracted from Chrome, not via the openwv shim, not via a clean-room reimplementation — for licensing and DMCA reasons. This means DRM-protected video will not play, including actual YouTube video playback, even on pages (like youtube.com itself) that otherwise load and run their scripts correctly under EngineAowlJs. Clearkey-only EME, i.e. non-DRM test content, already works through the existing MSE/FFmpeg pipeline and is unaffected by this exclusion.
Levers, biggest first
- Re-run the WPT standing against
EngineAowlJs. The tracked score on the Web Platform Tests page still reflects the original engine; the new default engine has realasync/awaitand a substantial DOM/CSS/Events/Shadow-DOM surface but has not been scored the same way yet. - Fix the JIT codegen bug so
EngineAowlJscan run with its optimizing tier enabled instead of interpreter-only. - Binding shape. A large share of remaining failures are interface-conformance tests for objects that exist but lack members, or exist without an exposed interface (
Navigator,History,Storage,Location). - Request and Response, currently the weakest part of URL-adjacent tests, and a real HTTP/TLS client to replace the
curl.exeshell-out. - Worker threading, building the Worker interface on the already-proven sandboxed-process mechanism.
- Cross-realm constructors, for example
DOMParserreached through a frame. - Selectors long tail, as above.
What we will not do
We will not stub interfaces for features that do not exist just to raise a number. Feature detection on real pages would then lie.
Where the numbers come from
Every claim on this page is checked against the Web Platform Tests. Gaps are ranked by comparing our per-file pass counts with a reference browser's, not by guessing.

