Karl Seguin
fdf7f5267a
Merge pull request #2001 from lightpanda-io/refactor/mcp-tools-dedup
...
mcp: extract parseOptionalAndGetPage helper
2026-03-27 07:58:18 +08:00
Pierre Tachoire
f95396a487
Merge pull request #1998 from lightpanda-io/url_origin_fix
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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
Improve authority parsing
2026-03-26 17:32:40 +01:00
Pierre Tachoire
d02d05b246
Merge pull request #2004 from lightpanda-io/nikneym/resize-unobserver
...
`ResizeObserver`: make `unobserve` available in JS context
2026-03-26 16:48:42 +01:00
Pierre Tachoire
7b2d817d0e
Merge pull request #2003 from lightpanda-io/nikneym/canvas-access-canvas
...
`CanvasRenderingContext2D`: make canvas able to access canvas element
2026-03-26 16:48:11 +01:00
Pierre Tachoire
a0dd14aaad
Merge pull request #1999 from lightpanda-io/wait_until_default
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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 --wait-until default value.
2026-03-26 15:03:59 +01:00
Halil Durak
d447d1e3c7
ResizeObserver: make unobserve available in JS context
2026-03-26 16:37:17 +03:00
Halil Durak
8684d35394
add tests
2026-03-26 16:35:23 +03:00
Halil Durak
e243f96988
CanvasRenderingContext2D: make canvas able to access canvas element
2026-03-26 16:35:13 +03:00
Pierre Tachoire
7ea8f3f766
Merge pull request #2000 from lightpanda-io/add-pre-version
...
add a -Dpre_version build flag for custom pre version
2026-03-26 12:06:38 +01:00
Adrià Arrufat
14fa2da2ad
mcp: remove duplicate code in testLoadPage
2026-03-26 19:57:14 +09:00
Pierre Tachoire
28cc60adb0
add a -Dpre_version build flag for custom pre version
2026-03-26 11:52:16 +01:00
Adrià Arrufat
96d24b5dc6
mcp: extract parseOptionalAndGetPage helper
...
Deduplicate the repeated "parse optional URL, maybe navigate, get page"
pattern across 6 MCP tool handlers (markdown, links, semantic_tree,
interactiveElements, structuredData, detectForms).
2026-03-26 19:44:44 +09:00
Karl Seguin
c14a9ad986
Merge pull request #1992 from navidemad/cdp-page-reload
...
CDP: implement Page.reload
2026-03-26 18:14:49 +08:00
Karl Seguin
679f2104f4
Fix --wait-until default value.
...
This was `load`, but it should have been (and was documented as `done`). This
is my fault. Sorry.
Should help with: https://github.com/lightpanda-io/browser/issues/1947#issuecomment-4120597764
2026-03-26 18:06:14 +08:00
Navid EMAD
c6b0c75106
Address review: use arena.dupeZ for URL copy, add try to testing.context()
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-26 10:09:48 +01:00
Navid EMAD
93485c1ef3
CDP: implement Page.reload
...
Add `Page.reload` to the CDP Page domain dispatch. Reuses the existing
`page.navigate()` path with `NavigationKind.reload`, matching what
`Location.reload` already does for the JS `location.reload()` API.
Accepts the standard CDP params (`ignoreCache`, `scriptToEvaluateOnLoad`)
per the Chrome DevTools Protocol spec.
The current page URL is copied to the stack before `replacePage()` to
avoid a use-after-free when the old page's arena is freed.
This unblocks CDP clients (Puppeteer, capybara-lightpanda, etc.) that
call `Page.reload` and currently get `UnknownMethod`.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-26 10:09:48 +01:00
Karl Seguin
0324d5c232
Merge pull request #1997 from lightpanda-io/update-zig-v8
...
build: bump zig-v8 to v0.3.7
2026-03-26 16:01:40 +08:00
Karl Seguin
0588cc374d
Improve authority parsing
...
Only look for @ within the first part of the url (up to the first possible
separator, i.e /, # or ?). This fixes potentially incorrect (and insecure)
getOrigin and getHost, both of which use the new helper.
Also make port parsing IPv6-aware.
2026-03-26 13:22:56 +08:00
Adrià Arrufat
a75c0cf08d
build: bump zig-v8 to v0.3.7
2026-03-26 12:34:10 +09:00
Karl Seguin
2812b8f07c
Merge pull request #1991 from lightpanda-io/v8_signature
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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
Set v8::Signature on FunctionTemplates
2026-03-26 09:27:22 +08:00
Karl Seguin
e2afbec29d
update v8 dep
2026-03-26 09:17:32 +08:00
Karl Seguin
a45f9cb810
Set v8::Signature on FunctionTemplates
...
This causes v8 to verify the receiver of a function, and prevents calling an
accessor or function with the wrong receiver, e.g.:
```
const g = Object.getOwnPropertyDescriptor(Window.prototype, 'document').get;
g.call(null);
```
A few other cleanups in this commit:
1 - Define any accessor with a getter as ReadOnly
2 - Ability to define an accessor with the DontDelete attribute
(window.document and window.location)
3 - Replace v8__ObjectTemplate__SetAccessorProperty__DEFAULTX overloads with
new v8__ObjectTemplate__SetAccessorProperty__Config
4 - Remove unnecessary @constCast for FunctionTemplate which can be const
everywhere.
2026-03-26 09:15:33 +08:00
Karl Seguin
cf641ed458
Merge pull request #1990 from lightpanda-io/remove_cdp_generic
...
Remove cdp generic
2026-03-26 07:49:13 +08:00
Karl Seguin
0fc959dcc5
re-anble unreachable
2026-03-26 07:42:45 +08:00
Karl Seguin
077376ea04
Merge pull request #1985 from lightpanda-io/intersection_observer_root_document
...
Allow Document to be the root of an intersection observer
2026-03-26 07:41:40 +08:00
Karl Seguin
6ed8d1d201
Merge pull request #1981 from lightpanda-io/window_cross_origin
...
Window cross origin
2026-03-26 07:41:22 +08:00
Karl Seguin
5207bd4202
Merge pull request #1980 from lightpanda-io/frames_test
...
Improve async tests
2026-03-26 07:41:05 +08:00
Karl Seguin
11ed95290b
Improve async tests
...
testing.async(...) is pretty lame. It works for simple cases, where the
microtask is very quickly resolved, but otherwise can't block the test from
exiting.
This adds an overload to testing.async and leverages the new Runner
https://github.com/lightpanda-io/browser/pull/1958 to "tick" until completion
(or timeout).
The overloaded version of testing.async() (called without a callback) will
increment a counter which is only decremented with the promise is resolved. The
test runner will now `tick` until the counter == 0.
2026-03-26 07:35:05 +08:00
Pierre Tachoire
a876275828
Merge pull request #1995 from lightpanda-io/ci-wba-test
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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
ci: don't run wba test on PR
0.2.7
2026-03-25 18:09:26 +01:00
Pierre Tachoire
e83b8aa36d
ci: don't run wba test on PR
...
wba test requires secrets read to run.
But we don't want to exposes secrets on external contributions.
So it's easier to run it only after PR merged.
2026-03-25 16:55:45 +01:00
Halil Durak
179f9c1169
Merge pull request #1984 from navidemad/fix-submit-event-submitter
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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 Form.requestSubmit(submitter) not setting SubmitEvent.submitter
2026-03-25 15:39:57 +03:00
Karl Seguin
ca41bb5fa2
fix import casing
2026-03-25 17:54:24 +08:00
Pierre Tachoire
9c37961042
Merge pull request #1989 from lightpanda-io/licensing.md
...
update LICENSING.md
2026-03-25 10:43:57 +01:00
Karl Seguin
0dd0495ab8
Removes CDPT (generic CDP)
...
CDPT used to be a generic so that we could inject Browser, Session, Page and
Client. At some point, it [thankfully] became a generic only to inject Client.
This commit removes the generic and bakes the *Server.Client instance in CDP.
It uses a socketpair for testing.
BrowserContext is still generic, but that's generic for a very different reason
and, while I'd like to remove that generic too, it belongs in a different PR.
2026-03-25 17:43:30 +08:00
Pierre Tachoire
c9fa76da0c
update LICENSING.md
2026-03-25 10:42:52 +01:00
Halil Durak
7718184e22
Merge pull request #1983 from lightpanda-io/nikneym/crypto-changes
...
Small `SubtleCrypto` refactor
2026-03-25 11:23:13 +03:00
Karl Seguin
b81b41cbf0
Merge pull request #1987 from lightpanda-io/conn-close
...
handle Connection: close without TLS close_notify
2026-03-25 16:11:42 +08:00
Pierre Tachoire
3a0cead03a
Merge pull request #1917 from lightpanda-io/semantic-versioning
...
build: automate version resolution in build.zig
2026-03-25 08:46:04 +01:00
Pierre Tachoire
92ce6a916a
http: don't check transfer._header_done_called on RecvError
2026-03-25 08:23:23 +01:00
Adrià Arrufat
130bf7ba11
Merge pull request #1951 from mvanhorn/osc/feat-mcp-detect-forms
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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
mcp: add detectForms tool for structured form discovery
2026-03-25 14:23:09 +09:00
Adrià Arrufat
2e40354a3a
forms: add tests for input values and form defaults
2026-03-25 09:39:52 +09:00
Adrià Arrufat
3074bde2f3
forms: always include required and disabled fields
2026-03-25 09:35:17 +09:00
Adrià Arrufat
ed9f5aae2e
docs(forms): clarify arena allocator requirement for collectForms
2026-03-25 09:33:10 +09:00
Adrià Arrufat
8e315e551a
forms: extract form node registration logic
2026-03-25 09:30:06 +09:00
Pierre Tachoire
bad690da65
handle Connection: close without TLS close_notify
...
Some servers (e.g. ec.europa.eu) close the TCP connection without
sending a TLS close_notify alert after responding with Connection: close.
BoringSSL treats this as a fatal error, which libcurl surfaces as
CURLE_RECV_ERROR. If we already received valid HTTP headers and the
response included Connection: close, the connection closure is the
expected end-of-body signal per HTTP/1.1 — treat it as success.
You can reproduce with
```
lightpanda fetch https://ec.europa.eu/commission/presscorner/detail/en/ip_26_614
```
2026-03-24 21:20:59 +01:00
Karl Seguin
ae080f32eb
Allow Document to be the root of an intersection observer
...
We previously only supported an Element. null == viewport, but document means
the entire (scrollable) area, since we don't render anything, treating
document as null seems ok?
2026-03-24 21:48:38 +08:00
Pierre Tachoire
c5c1d1f2f8
tag next version to 1.0.0
2026-03-24 14:47:20 +01:00
Pierre Tachoire
eb18dc89f6
ci: use -Dversion_string for release (nightly) build
2026-03-24 14:46:48 +01:00
Navid EMAD
afb0c29243
Add submit_event case to Event.Type exhaustive switch
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 14:24:35 +01:00
Navid EMAD
267eee9693
Fix Form.requestSubmit(submitter) not setting SubmitEvent.submitter
...
Create SubmitEvent type and use it in submitForm() so that
e.submitter is correctly set when requestSubmit(submitter) is called.
Fixes #1982
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 14:19:50 +01:00