Adrià Arrufat
d4747b5386
mcp: own the browser
...
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com >
2026-03-02 10:10:08 +09:00
Adrià Arrufat
41b81c8b05
mcp: use io poll for stdin and integrate message loop
...
Replaces blocking stdin reads with `std.io.poll` to allow macrotasks to
run. Removes the stdout mutex as I/O is now serialized.
2026-03-02 10:04:23 +09:00
Adrià Arrufat
42b5e32473
mcp: modernize I/O processing and reuse message buffer
2026-03-01 22:35:28 +09:00
Adrià Arrufat
e9c36fd6f8
mcp: use declarative static definitions for tools and resources
2026-03-01 21:56:48 +09:00
Adrià Arrufat
952dfbef36
mcp: use acquire/release ordering for server running flag
2026-03-01 21:39:38 +09:00
Adrià Arrufat
254984b600
mcp: use dynamic allocation for error messages in tools
2026-03-01 21:36:21 +09:00
Adrià Arrufat
8cbc58d257
mcp: unify error reporting and use named error codes
2026-03-01 21:29:59 +09:00
Adrià Arrufat
e6cc3e8c34
mcp: refactor tools handling
2026-03-01 21:18:28 +09:00
Adrià Arrufat
01798ed7f8
mcp: use sentinel-terminated strings for tool params
2026-03-01 20:58:00 +09:00
Adrià Arrufat
fcad67a854
mcp: pre-initialize tools and resources on server startup
2026-03-01 20:44:11 +09:00
Adrià Arrufat
e359ffead0
mcp: propagate errors in tool schema parsing
2026-03-01 20:39:40 +09:00
Adrià Arrufat
eb09041859
mcp: resolve absolute URLs for links tool
2026-03-01 20:35:13 +09:00
Adrià Arrufat
b3d52c966d
mcp: handle errors during resource and tool streaming
2026-03-01 20:23:23 +09:00
Adrià Arrufat
947e672d18
mcp: stream resource and tool content to JSON output
2026-02-28 23:04:22 +09:00
Adrià Arrufat
96942960a9
mcp: reuse arena allocator for message processing
2026-02-28 22:38:16 +09:00
Adrià Arrufat
8b0118e2c8
mcp: update logging scope to use mcp instead of app
2026-02-28 22:30:02 +09:00
Adrià Arrufat
5f9a7a5381
mcp: ignore unknown json fields and improve error reporting
2026-02-28 22:18:37 +09:00
Adrià Arrufat
6897d72c3e
mcp: simplify request processing to single-threaded
2026-02-28 21:26:51 +09:00
Adrià Arrufat
aae9a505e0
mcp: promot Server.zig to file struct
2026-02-28 21:02:49 +09:00
Adrià Arrufat
5ec4305a9f
mcp: add optional url parameter to tools
2026-02-27 22:17:15 +09:00
Adrià Arrufat
8c8a05b8c1
mcp: consolidate tests and cleanup imports
2026-02-26 00:02:49 +09:00
Adrià Arrufat
34d2fc1503
mcp: support notifications and improve error handling
...
Make Request id optional for JSON-RPC notifications and handle the
initialized event. Improve thread safety, logging, and error paths.
2026-02-25 23:14:06 +09:00
Adrià Arrufat
9b3fa809bf
mcp: add search, markdown, links, and over tools
2026-02-25 20:27:49 +09:00
Adrià Arrufat
5fea4cf760
mcp: add protocol and router unit tests
2026-02-22 23:15:45 +09:00
Adrià Arrufat
a27339b954
mcp: add Model Context Protocol server support
...
Adds a new `mcp` run mode to start an MCP server over stdio.
Implements tools for navigation and JS evaluation, along with
resources for HTML and Markdown page content.
2026-02-22 22:32:14 +09:00
Karl Seguin
18e63df01e
Merge pull request #1621 from egrs/wpt-fixes-batch-2
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
fix WPT failures: nodeName, PI validation, willValidate, maxLength
2026-02-22 07:45:17 +08:00
egrs
a90bcde38c
fix WPT failures: nodeName prefix case, PI validation, willValidate, maxLength
...
- uppercase entire qualified name in tagName (including prefix)
- validate PI data for "?>" and use proper XML Name production with Unicode
- implement willValidate on HTMLInputElement
- throw IndexSizeError DOMException for negative maxLength assignment
flips: Node-nodeName, Document-createProcessingInstruction, button,
maxlength, input-willvalidate (+6 subtests)
2026-02-21 13:11:06 +01:00
Karl Seguin
eb9b706ebc
Merge branch 'select-event'
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
e2e-integration-test / zig build release (push) Has been cancelled
e2e-integration-test / demo-integration-scripts (push) Has been cancelled
2026-02-21 07:21:37 +08:00
Karl Seguin
de9cbae0b2
Merge pull request #1565 from lightpanda-io/frames
...
Initial support for frames
2026-02-21 07:17:51 +08:00
Karl Seguin
25e890986f
Merge pull request #1619 from egrs/wpt-small-fixes
...
fix DocumentType.remove, MutationRecord.attributeNamespace, createElementNS casing
2026-02-21 07:17:29 +08:00
Karl Seguin
f66627dd04
Merge pull request #1618 from arrufat/markdown-simplifications
...
markdown: simplify rendering logic and state management
2026-02-21 07:10:56 +08:00
Karl Seguin
924eb33b3f
Update src/browser/js/Env.zig
...
Co-authored-by: Pierre Tachoire <pierre@lightpanda.io >
2026-02-21 07:02:21 +08:00
Karl Seguin
1b288c541a
Merge pull request #1616 from lightpanda-io/URL_createObjectURL
...
Add URL.createObjectURL and URL.revokeObjectURL
2026-02-21 07:02:01 +08:00
Karl Seguin
2612b8c86f
Merge pull request #1617 from lightpanda-io/cookie_fixes
...
Add more cookie tests
2026-02-21 07:01:47 +08:00
Karl Seguin
3e2796d456
Merge pull request #1611 from lightpanda-io/utf_range_offsets
...
Get both start and end bytes in a single pass
2026-02-21 07:01:30 +08:00
Pierre Tachoire
7092913863
Merge pull request #1615 from lightpanda-io/css_escape_null
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
e2e-integration-test / zig build release (push) Has been cancelled
e2e-integration-test / demo-integration-scripts (push) Has been cancelled
prorper escaping of null character
2026-02-20 15:38:54 +01:00
Pierre Tachoire
67625fc347
Merge pull request #1600 from lightpanda-io/formdata_disabled_fieldset
...
FormData recognizes (and skips over) disabled fieldsets
2026-02-20 15:35:03 +01:00
Pierre Tachoire
eb55030b06
Merge pull request #1584 from egrs/fix-textarea-selection-insert
...
fix textarea text insertion to respect selection range
2026-02-20 15:24:39 +01:00
egrs
6e1b2d50f2
fix DocumentType.remove, MutationRecord.attributeNamespace, createElementNS casing
...
- add ChildNode.remove() to DocumentType (flips DocumentType-remove.html)
- return null for MutationRecord.attributeNamespace on non-namespaced
attribute mutations (flips MutationObserver-takeRecords.html)
- stop lowercasing in createElementNS per spec — only createElement
should ASCII-lowercase for HTML namespace (flips
Element/Document-getElementsByTagNameNS.html)
- fix getElementsByTagName to use case-insensitive matching for HTML
namespace elements
2026-02-20 14:46:58 +01:00
Adrià Arrufat
c6f72c44b8
markdown: simplify rendering logic and state management
2026-02-20 22:04:36 +09:00
Karl Seguin
d38ded0f26
Merge pull request #1613 from egrs/lookup-namespace-uri
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
implement Node.lookupNamespaceURI() and isDefaultNamespace()
2026-02-20 20:48:05 +08:00
egrs
ec20b7bd3a
implement Node.lookupNamespaceURI() and Node.isDefaultNamespace()
...
Implements the DOM spec algorithms for namespace lookup on all node
types. Stores custom namespace URIs in a page lookup for elements
created via createElementNS with unknown namespaces. Fixes
setAttributeNS to preserve qualified names for xmlns namespace
declarations.
Flips dom/nodes/Node-lookupNamespaceURI.html: 0/75 → 75/75.
2026-02-20 13:25:09 +01:00
Karl Seguin
0766cf464a
Merge pull request #1612 from egrs/fix-childnode-sibling-ordering
...
fix ChildNode after() and replaceWith() sibling ordering
2026-02-20 20:24:29 +08:00
egrs
867f00e091
fix ChildNode after() and replaceWith() sibling ordering
...
after() captured node.nextSibling() once, which went stale when that
sibling was one of the nodes being inserted. Use viableNextSibling() to
find the first following sibling not in the nodes list per the DOM spec.
replaceWith() in CData had the same stale-reference problem and also
removed self before inserting, unlike Element.replaceWith() which keeps
self as the insertion anchor. Adopt the same anchor pattern: insert
before self, then remove self at the end.
Flips ChildNode-after.html from 33/45 to 45/45 and
ChildNode-replaceWith.html from 27/33 to 33/33.
2026-02-20 13:12:34 +01:00
Karl Seguin
c823b8d7ae
Add more cookie tests
...
Fix trimming and incorrect early loop termination when expiring cookies.
2026-02-20 20:03:18 +08:00
Karl Seguin
393d4d336c
Add URL.createObjectURL and URL.revokeObjectURL
2026-02-20 19:34:57 +08:00
Karl Seguin
2cb3f2d03d
prorper escaping of null character
2026-02-20 18:44:54 +08:00
Karl Seguin
279f2dd633
Merge pull request #1599 from lightpanda-io/input_sanitize_ownership
...
Improve and fix sanitized value ownership.
2026-02-20 18:40:51 +08:00
Karl Seguin
dec051a6e0
Merge pull request #1603 from egrs/wpt-spec-guards
...
spec compliance: missing validation guards
2026-02-20 15:33:06 +08:00
Karl Seguin
790fdd320c
Merge pull request #1610 from lightpanda-io/add_js_nullablestring
...
Add js.NullableString
2026-02-20 15:30:15 +08:00