v1.4.0 — upload, scroll, 16 tools
The agent loop is complete: upload, scroll, and every previous primitive, on all three OSes.
- POST /upload: fills a file input with in-memory content through a page-side DataTransfer — no OS dialog, identical JS on WKWebView, WebView2 and WebKitGTK. The CI smoke now proves a full round-trip: upload a 5-byte file, let the page's own JS read it, assert name:size.
- POST /scroll: absolute Y offset or scrollIntoView (centered).
- 16 MCP tools:
hover,key,scroll,upload,viewportjoined the original set. - eval_js fix worth the release on its own: the evaluation wrapper discarded its value on Windows/Linux — every
/evaluateand/readcall silently returnedundefined. CI now tests evaluate explicitly. (navigate → readthrough the fold path was never affected.) - bench workflow (workflow_dispatch): 30-page corpus, median/p95 for navigate+read, /read and /screenshot per engine, results in the step summary.
Known gaps, stated plainly: OS-level keyboard/mouse input (synthetic events today), request/response network interception, OS file-dialog automation.
Binaries attached for macOS arm64, Windows x64, Linux x64.