Karl Seguin
fc8b1b8549
Use a single HandleScope for event dispatch
...
https://github.com/lightpanda-io/browser/pull/1690 narrowed the lifetime of
HandleScopes to once per listener. I think that was just an accident of
refactoring, and not some intentional choice.
The narrower HandleScope lifetime makes it so that when we do run microtask
queue at the end of event dispatching, some locals in the queue may not longer
be valid.
HS1
HS2
queueMicrotask(func)
runMicrotask
In the above flow, `func` is only valid while HS2 is alive, so when we run
the microtask queue in HS1, it is no longer valid.
2026-03-04 11:43:09 +08:00
Karl Seguin
bc8c44f62f
Merge pull request #1707 from lightpanda-io/nikneym/details
...
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
e2e-integration-test / zig build release (push) Has been cancelled
e2e-integration-test / demo-integration-scripts (push) Has been cancelled
Add `HTMLDetailsElement`
2026-03-04 07:44:11 +08:00
Karl Seguin
01fab5c92a
Merge pull request #1706 from lightpanda-io/cdp-attach-to-browser
...
cdp: fix send CDP raw command with Playwright
2026-03-04 07:40:05 +08:00
Karl Seguin
1c07d786a0
Merge pull request #1705 from lightpanda-io/nikneym/track
...
` Track`: implement kind and constants
2026-03-04 07:34:12 +08:00
Karl Seguin
6f0cd87d1c
Merge pull request #1703 from lightpanda-io/client_and_script_manager
...
Fix a few issues in Client
2026-03-04 07:32:14 +08:00
Karl Seguin
e44308cba2
Merge pull request #1695 from lightpanda-io/iframe_src_nav
...
Iframe src nav
2026-03-04 07:27:23 +08:00
Karl Seguin
50245c5157
Merge pull request #1667 from lightpanda-io/terminate_isolate
...
On Client.stop, terminate the isolate
2026-03-04 07:27:10 +08:00
Pierre Tachoire
9ca5188e12
cdp: set consistent target's default
...
with about:blank for url and empty title.
2026-03-03 17:24:08 +01:00
Pierre Tachoire
e25c33eaa6
Merge pull request #1673 from arrufat/mcp
...
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 / zig build release (push) Has been cancelled
wpt / build wpt runner (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
Add Model Context Protocol (MCP) server support
v0.2.5
2026-03-03 15:18:34 +01:00
Pierre Tachoire
56cc881ac0
Fcdp: fix attachtToTarget and attachToBrowserTarget resp
2026-03-03 15:01:53 +01:00
Adrià Arrufat
7bddc0a89c
mcp: remove search and over tools
2026-03-03 22:50:06 +09:00
Halil Durak
50896bdc9d
HTMLDetailsElement: add tests
2026-03-03 15:12:12 +03:00
Halil Durak
8dd4567828
HTMLDetailsElement: implement HTMLDetailsElement
2026-03-03 15:12:02 +03:00
Pierre Tachoire
06ef6d3e6a
cdp: attachToTarget must add the session id
2026-03-03 12:58:00 +01:00
Pierre Tachoire
14b58e8062
add target.attachToBrowserTarget
2026-03-03 12:58:00 +01:00
Pierre Tachoire
eee232c12c
cdp: allow multiple calls to attachToTarget
...
Playwright, when creating a new CDPSession, sends an
attachToBrowserTarget followed by another attachToTarget to re-attach
itself to the existing target.
see playwright/axtree.js from demo/ repository.
2026-03-03 12:58:00 +01:00
Halil Durak
febe321aef
Track: add tests
2026-03-03 14:41:05 +03:00
Halil Durak
28777ac717
Track: implement kind and constants
2026-03-03 14:40:53 +03:00
Karl Seguin
403f42bf38
Merge pull request #1702 from arrufat/cdp-namespaces
...
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
Add LP domain for CDP and getMarkdown method
2026-03-03 18:08:45 +08:00
Karl Seguin
523efbd85a
Fix a few issues in Client
...
Most significantly, if removing from the multi fails, the connection
is added to a "dirty" list for the removal to be retried later. Looking at
the curl source code, remove fails on a recursive call, and we've struggled with
recursive calls before, so I _think_ this might be happening (it fails in other
cases, but I suspect if it _is_ happening, it's for this reason). The retry
happens _after_ `perform`, so it cannot fail for due to recursiveness. If it
fails at this point, we @panic. This is harsh, but it isn't easily recoverable
and before putting effort into it, I'd like to know that it's actually happening.
Fix potential use of undefined when a 401-407 request is received, but no
'WWW-Authenticate' or 'Proxy-Authenticate' header is received.
Don't call `curl_multi_remove_handle` on an easy that hasn't been added yet do
to error. Specifically, if `makeRequest` fails during setup, transfer_conn is
nulled so that `transfer.deinit()` doesn't try to remove the connection. And the
conn is removed from the `in_use` queue and made `available` again.
On Abort, if getting the private fails (extremely unlikely), we now still try
to remove the connection from the multi.
Added a few more fields to the famous "ScriptManager.Header recall" assertion.
2026-03-03 18:02:06 +08:00
Adrià Arrufat
b2e301418f
cdp.lp: use page.document instead of window._document
2026-03-03 17:11:16 +09:00
Adrià Arrufat
334a2e44a1
lp: simplify dom_node resolution in getMarkdown
2026-03-03 17:08:43 +09:00
Adrià Arrufat
c9121a03d2
cdp: move LP.getMarkdown test to lp domain
2026-03-03 16:39:31 +09:00
Adrià Arrufat
cc93180d57
cdp: add LP domain and getMarkdown method
...
This PR introduces a custom CDP domain 'LP' (Lightpanda) to expose browser-specific tools. The first method, 'LP.getMarkdown', allows retrieving a Markdown representation of the DOM or a specific node by its 'nodeId'. This is optimized for AI agents and LLM-based scraping tasks.
2026-03-03 16:35:48 +09:00
Pierre Tachoire
4062a425cb
Merge pull request #1700 from lightpanda-io/minor_cleanup
...
Remove unused file and unused .gitignore paths
2026-03-03 08:09:44 +01:00
Karl Seguin
cce533ebb6
Merge pull request #1701 from arrufat/markdown-test-namespace
...
markdown: namespace tests
2026-03-03 14:21:24 +08:00
Adrià Arrufat
48df38cbfe
mcp: improve evaluate error reporting and refactor tool result types
2026-03-03 15:17:59 +09:00
Adrià Arrufat
f982f073df
mcp: optimize memory re-use and add thread safety to Server.sendResponse
2026-03-03 14:50:13 +09:00
Adrià Arrufat
34999f12ca
mcp: migrate tests to expectJson
2026-03-03 14:40:20 +09:00
Adrià Arrufat
c8d5665653
mcp: use testing allocator in tests
2026-03-03 14:32:29 +09:00
Adrià Arrufat
ddebaf87d0
markdown: namespace tests
2026-03-03 14:22:45 +09:00
Adrià Arrufat
6b80cd6109
mcp: namespace tests
2026-03-03 14:19:36 +09:00
Karl Seguin
7635d8d2a5
Remove unused file and unused .gitignore paths
2026-03-03 12:08:53 +08:00
Adrià Arrufat
634e3e35a0
mcp: re-enable tests
2026-03-02 23:12:16 +09:00
Adrià Arrufat
da3dc58199
Merge branch 'main' into mcp
2026-03-02 23:01:55 +09:00
Adrià Arrufat
4f99df694b
mcp: simplify minify and remove eval quota
2026-03-02 22:46:20 +09:00
Adrià Arrufat
982b8e2d72
mcp: remove redundant mcp from test references
2026-03-02 22:24:17 +09:00
Adrià Arrufat
6e7c8d7ae2
mcp: consolidate tests and streamline parameter parsing
2026-03-02 22:18:02 +09:00
Adrià Arrufat
3c858f522b
mcp: simplify minify function
2026-03-02 22:04:55 +09:00
Adrià Arrufat
f2a30f8cdd
mcp: don't forget to flush
2026-03-02 21:46:49 +09:00
Adrià Arrufat
43785bfab4
mcp: simplify handleList implementations
2026-03-02 21:30:47 +09:00
Adrià Arrufat
78edf6d324
mcp: simplify I/O architecture and remove test harness
2026-03-02 21:25:07 +09:00
Adrià Arrufat
73565c4493
mcp: optimize dispatching and simplify test harness
...
- Use StaticStringMap and enums for method, tool, and resource lookups.
- Implement comptime JSON minification for tool schemas.
- Refactor router and harness to use more efficient buffered polling.
- Consolidate integration tests and add synchronous unit tests.
2026-03-02 20:53:14 +09:00
Karl Seguin
d9794d72c7
fix bad rebase
2026-03-02 18:39:02 +08:00
Karl Seguin
524b5be937
on iframe re-navigation, keep pending_loads in sync
2026-03-02 18:14:36 +08:00
Karl Seguin
ac2e276a6a
try to make test more stable
2026-03-02 18:14:36 +08:00
Karl Seguin
4f4dbc0c22
Allow iframe.src to renavigate the page
...
Unlike a script, an iframe can be re-navigated simply by setting the src.
2026-03-02 18:14:34 +08:00
Karl Seguin
8c37cac957
Merge pull request #1694 from lightpanda-io/client_abort_frame
...
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 / zig build release (push) Has been cancelled
wpt / build wpt runner (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
Allow frame-specific HTTP abort
2026-03-02 18:11:33 +08:00
Karl Seguin
eceab76b6f
Merge pull request #1693 from lightpanda-io/nikneym/arena-pool-test
...
`ArenaPool`: make init configurable + add tests
2026-03-02 18:11:13 +08:00
Karl Seguin
1f81b6ddc4
Allow frame-specific HTTP abort
...
Needed for frame navigation. Implemented using some ugly comptime to avoid
duplication and avoid an runtime frame check when doing a full abort.
2026-03-02 18:00:55 +08:00