Karl Seguin
96736d440d
Merge pull request #2112 from lightpanda-io/reduce_telemetry_size
...
Reduces the size of Telemetry.Lightpanda
2026-04-10 07:07:55 +08:00
Karl Seguin
26253874de
Merge pull request #2111 from lightpanda-io/typos
...
Fix a lot of typos.
2026-04-10 07:07:43 +08:00
Karl Seguin
cec9628e37
zig fmt
2026-04-10 06:51:50 +08:00
Karl Seguin
255fa247c3
Reduces the size of Telemetry.Lightpanda
...
32920 -> 8344
We buffer [1024]Telemetry.Event, and the event is unnecessarily large.
2026-04-10 06:51:50 +08:00
Karl Seguin
8eaeafe16c
Fix a lot of typos.
...
I used https://github.com/crate-ci/typos , it worked well.
Also, make sure cdp-initiated KeyboardEvent is freed when no element is in focus
2026-04-10 06:51:10 +08:00
Karl Seguin
a9e7d75272
Merge pull request #2120 from lightpanda-io/memory_test3
...
run e2e-test with pre-generated snapshot
2026-04-10 06:47:35 +08:00
Karl Seguin
5c7a665d11
run e2e-test with pre-generated snapshot
2026-04-09 18:54:31 +08:00
Pierre Tachoire
afbad07f0f
Merge pull request #2114 from lightpanda-io/update-README
...
Update readme
2026-04-09 11:03:43 +02:00
Pierre Tachoire
0905306c79
Add skill link in README
2026-04-09 10:57:25 +02:00
Pierre Tachoire
cb3cc9cd8c
update benchmark
2026-04-09 10:56:08 +02:00
Pierre Tachoire
2d2b1584cf
update contribution and why section
2026-04-09 10:56:08 +02:00
Pierre Tachoire
d1883ad211
cleanup README, add MCP
2026-04-09 09:56:39 +02:00
Karl Seguin
689fb908ac
Merge pull request #2110 from lightpanda-io/test-cache-filter
...
cache: add log filter to garbage file test
2026-04-09 07:55:07 +08:00
Karl Seguin
795b0affe2
Merge pull request #2102 from lightpanda-io/non-utf8-encoding
...
Use encoding_rs on non-UTF-8 html to convert to utf-8
2026-04-09 07:25:48 +08:00
Adrià Arrufat
182447c907
cache: add log filter to garbage file test
2026-04-08 19:36:29 +02:00
Karl Seguin
077b8b1481
Merge pull request #2106 from lightpanda-io/simplify_nodelist_foreach
...
Simplifies NodeList.foreach
2026-04-08 19:51:15 +08:00
Pierre Tachoire
9915f0f19d
Merge pull request #2100 from lightpanda-io/osc/2029-user-agent-override
...
Allow user agent override with restrictions
2026-04-08 13:20:32 +02:00
Karl Seguin
077263bae4
Simplifies NodeList.foreach
...
Removes 2 layers of indirection (including 1 allocation) that is unnecessary for
an internal call.
2026-04-08 18:32:47 +08:00
Karl Seguin
763927c352
Use encoding_rs on non-UTF-8 html to convert to utf-8
...
Using our existing MIME type detection, this uses encoding_rs to convert non-
UTF-8 content to UTF-8, which can then be passed to html5ever.
Issue: https://github.com/lightpanda-io/browser/issues/2089
2026-04-08 18:32:08 +08:00
Pierre Tachoire
f884b562ba
user-agent ovveride must not contain mozilla
2026-04-08 12:11:09 +02:00
Pierre Tachoire
efb2fa9c22
Send Sec-Ch-Ua http header
2026-04-08 12:11:09 +02:00
Pierre Tachoire
ae9b4d3fc6
stricter user-agent rule
2026-04-08 12:11:09 +02:00
Trevin Chow
f0aacad52e
feat: add --user-agent flag for full User-Agent override
...
When --user-agent is set, the provided string replaces the entire
User-Agent header instead of appending to "Lightpanda/1.0".
The existing --user-agent-suffix behavior is unchanged.
Fixes #2029
2026-04-08 12:11:08 +02:00
Pierre Tachoire
16685019d4
Merge pull request #2107 from lightpanda-io/bump-v8
...
update zig-v8 deps
2026-04-08 12:10:15 +02:00
Pierre Tachoire
cffb6976a4
update zig-v8 deps
2026-04-08 11:41:08 +02:00
Pierre Tachoire
1a285cc9ea
Merge pull request #2099 from lightpanda-io/finalizer_order
...
Clear identity before forcing finalizers
2026-04-07 18:09:31 +02:00
Karl Seguin
def713db15
Clear identity before forcing finalizers
...
We need to remove v8 finalizer callbacks upfront so that, as we tear things down
there's no chance for v8 to try to finalize something which has already been
finalized or is gone.
2026-04-07 21:51:38 +08:00
Adrià Arrufat
67918f004b
Merge pull request #2097 from lightpanda-io/simplify-cli-args
...
Config: remove mcp version flag and simplify usage
2026-04-07 14:41:56 +02:00
Adrià Arrufat
afd6c11b34
Config: remove mcp version flag and simplify usage
2026-04-07 12:24:19 +02:00
Karl Seguin
38e3b59ddb
Merge pull request #2095 from lightpanda-io/fix_mo_record_release
...
Don't release pending MutationObserver records
2026-04-07 15:46:00 +08:00
Pierre Tachoire
8b8c659507
Merge pull request #2094 from lightpanda-io/readme-docker
...
README: expose browser on localhost w/ docker
2026-04-07 09:27:33 +02:00
Karl Seguin
6491ab84ea
Don't release pending MutationObserver records
...
These have not been handed to v8 yet (hence the pending) and can be freed
directly. This is correctly handled in IntersectionObserver.
2026-04-07 15:23:30 +08:00
Pierre Tachoire
3b3917321b
Merge pull request #2062 from lightpanda-io/xhr-timeout
...
Add XMLHttpRequest.timeout with curl enforcement
2026-04-07 09:21:31 +02:00
Pierre Tachoire
65151e9a4c
README: expose browser on localhost w/ docker
2026-04-07 09:19:57 +02:00
Karl Seguin
cfcd633ff6
Merge pull request #2093 from lightpanda-io/event_manager_base
...
Extract non-DOM event dispatchig
2026-04-07 14:52:49 +08:00
Pierre Tachoire
8781d7e73b
Add XMLHttpRequest.timeout with curl enforcement
...
Implement the XHR timeout property end-to-end: the JS-visible
getter/setter stores the value, send() passes it to the HTTP client,
and curl enforces it via CURLOPT_TIMEOUT_MS. On timeout, a `timeout`
event is dispatched instead of `error`, per the XHR spec.
2026-04-07 08:47:10 +02:00
Karl Seguin
de52c13379
Extract non-DOM event dispatchig
...
This is standalone work that can be done to enable workers. Workers need a
subset of EventManager, specifically, dispatching events for non DOM objects.
This commit extracts the non-DOM dispatching into an EventManagerBase which
EventManager uses (via composition) and which, in the future, WorkerGlobalScope
will be able to use directly.
2026-04-07 13:03:22 +08:00
Karl Seguin
f28a753e1d
Merge pull request #2091 from NYCU-Chung/fix/cookie-public-suffix
...
fix(cookie): reject Set-Cookie domains that are public suffixes
2026-04-07 11:34:30 +08:00
Karl Seguin
8f1e3941ce
Merge pull request #2063 from lightpanda-io/websocket
...
WebSocket WebAPI
2026-04-07 08:55:02 +08:00
Karl Seguin
b98eb1292d
Merge pull request #2085 from tmchow/feat/2082-handle-javascript-dialog
...
feat: emit Page.javascriptDialogOpening CDP events for JS dialogs
2026-04-07 08:54:36 +08:00
Karl Seguin
60c2ba22d4
Merge pull request #2086 from lightpanda-io/child_node_node_list_arena
...
Move the NodeList created from a ChildNode to the ChildNode's arena
2026-04-07 08:44:21 +08:00
Karl Seguin
583525e5ee
Merge pull request #2090 from lightpanda-io/rc_assertion
...
add assertion on RC (to catch release overflow)
2026-04-07 08:38:02 +08:00
Karl Seguin
de8a5eeec1
zig fmt
2026-04-07 07:28:31 +08:00
Karl Seguin
36d3be5534
add assertion on RC (to catch release overflow)
2026-04-07 07:28:31 +08:00
Karl Seguin
12cb3eac07
Merge pull request #2092 from lightpanda-io/cdp_keyboard_event_lifetime
...
Don't release un-acquired reference on CDP input event.
2026-04-07 07:12:07 +08:00
Trevin Chow
7208934bda
fix: return CDP error from handleJavaScriptDialog instead of silent no-op
...
Dialogs auto-dismiss in headless mode, so there is no pending dialog
by the time the CDP client sends Page.handleJavaScriptDialog. Return
an explicit error so the client knows the action had no effect.
2026-04-06 11:08:27 -07:00
Karl Seguin
f813d34897
Don't release un-acquired reference on CDP input event.
2026-04-06 23:06:03 +08:00
Karl Seguin
8489ec380b
Merge pull request #2087 from lightpanda-io/invalid_datetime
...
protect against index out of bound on invalid datetime
2026-04-06 21:50:41 +08:00
Karl Seguin
8568dc1285
Merge pull request #2088 from lightpanda-io/domainless_cookies
...
Better handling of cookies with empty domains
2026-04-06 21:50:21 +08:00
NYCU-Chung
d917728053
fix(cookie): reject Set-Cookie domains that are public suffixes
...
parseDomain() rejects bare TLDs (e.g. Domain=.io) but accepts
multi-level public suffixes like .co.uk, .com.au, .co.jp.
Per RFC 6265bis §5.7.3.10, user agents should reject cookies whose
domain attribute is a public suffix. Chrome, Firefox, and Safari all
enforce this using the Public Suffix List.
The PSL data is already imported (Cookie.zig:26) and used in
findSecondLevelDomain(), but parseDomain() does not consult it.
This causes behavior differences vs Chrome when automating .co.uk /
.com.au / .co.jp sites via CDP — cookies that Chrome silently drops
are accepted by Lightpanda, polluting the cookie jar across unrelated
sites in the same session.
2026-04-06 20:39:56 +08:00