Navid EMAD
1bdf464ef2
Fix CDP WebSocket connection dying during complex page navigation
...
The CDP timeout handler in httpLoop had two compounding bugs:
1. Unit mismatch: timestamp(.monotonic) returns seconds, but
ms_remaining is in milliseconds. The comparison and subtraction
mixed units.
2. Double-counting: In the .done branch, elapsed was computed as
absolute time since last_message, but last_message was never
updated in this branch. Each iteration subtracted the growing
total elapsed seconds from an already-decremented ms_remaining.
During complex page loads, Session._wait() returns .done rapidly
(due to JS macrotask execution, background tasks, or errors). Each
rapid .done return subtracted the growing elapsed (seconds) from
ms_remaining (milliseconds), draining it to zero in ~2 seconds
instead of the configured 10-second timeout.
Fix: use milliTimestamp() for consistent units, update last_message
in the .done branch for incremental elapsed tracking, and use >= for
correct boundary comparison.
Fixes #1849
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-15 23:07:23 +01:00
Karl Seguin
a9b9cf14c3
Merge pull request #1841 from lightpanda-io/reject_error
...
Improve ergonomics around rejecting a promise with a proper JS error
2026-03-15 10:19:24 +08:00
Karl Seguin
d4b941cf30
zig fmt
2026-03-15 10:06:20 +08:00
Karl Seguin
4b6bf29b83
Improve ergonomics around rejecting a promise with a proper JS error
2026-03-15 09:55:13 +08:00
Karl Seguin
42bb2f3c58
Merge pull request #1823 from lightpanda-io/remove_double_free
...
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 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
Remove frame double-free on navigate error
2026-03-14 19:36:27 +08:00
Karl Seguin
fe3faa0a5a
Merge pull request #1825 from sjhddh/fix-tracking-allocator-resize
...
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 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: only increment TrackingAllocator reallocation_count on successful resizes
v0.2.6
2026-03-14 15:48:49 +08:00
Karl Seguin
39d5a25258
Merge pull request #1820 from hobostay/fix-tracking-allocator-stats
...
Fix TrackingAllocator reallocation_count being incremented on failed operations
2026-03-14 15:48:13 +08:00
Karl Seguin
f4044230fd
Merge pull request #1824 from sjhddh/fix-option-gettext-leak
...
fix: resolve memory leak in Option.getText() by using page arena
2026-03-14 15:45:53 +08:00
sjhddh
4d6d8d9a83
fix(test): properly count successful reallocations in TrackingAllocator
2026-03-14 06:57:04 +00:00
sjhddh
c4176a282f
fix: resolve memory leak in Option.getText() by using page arena
2026-03-14 06:50:26 +00:00
Karl Seguin
1352839472
Remove frame double-free on navigate error
...
The explicit deinit isn't needed as here's already an errdefer in play.
2026-03-14 14:02:58 +08:00
Karl Seguin
535128da71
Merge pull request #1814 from lightpanda-io/nikneym/window-onload-alias
...
Make `body.onload` getter/setter alias to `window.onload`
2026-03-14 13:30:10 +08:00
hobostay
7fe26bc966
Fix TrackingAllocator reallocation_count being incremented on failed operations
...
The reallocation_count counter was being incremented regardless of whether
the resize/remap operations succeeded. This led to inaccurate memory
allocation statistics.
- resize: Only increment when rawResize returns true (success)
- remap: Only increment when rawRemap returns non-null (success)
This fixes the TODO comments that were present in the code.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 13:10:11 +08:00
Halil Durak
cc6587d6e5
make body.onload getter/setter alias to window.onload
2026-03-13 18:49:26 +03:00
Karl Seguin
be8ba53263
Merge pull request #1811 from lightpanda-io/script_handling
...
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 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
Better script handling.
2026-03-13 21:40:19 +08:00
Pierre Tachoire
043d48d1c7
Merge pull request #1812 from lightpanda-io/longer-sleep
...
ci: add a longer sleep to wait for node start on wba test
2026-03-13 13:59:03 +01:00
Karl Seguin
e8fe80189b
Merge pull request #1808 from lightpanda-io/cdp_startup_frames
...
Tweak CDP startup messages.
2026-03-13 19:24:14 +08:00
Pierre Tachoire
0e48f317cb
ci: add a longer sleep to wait for node start on wba test
2026-03-13 12:22:48 +01:00
Karl Seguin
867745c71d
Tweak CDP startup messages.
...
1 - When Target.setAutoAttach is called, send the `Target.attachedToTarget`
event before sending the response. This matches Chrome's behavior and
it stops playwright from thinking there's no target and making extra calls,
e.g. to Target.attachedToTarget.
2 - Use the same dummy frameId for all startup messages. I'm not sure why we
have STARTUP-P and STARTUP-B. Using the same frame (a) makes more sense to
me (b) doesn't break any existing integration tests, and (c) improves this
scenario: https://github.com/lightpanda-io/browser/issues/1800
2026-03-13 19:07:47 +08:00
Karl Seguin
a1a7919f74
Better script handling.
...
Dynamic scripts have script.async == true by default (we handled this correctly
in the ScriptManager, but we didn't return the right value when .async was
accessed).
Inline scripts only consider direct children, not the entire tree.
Empty inline scripts are executed at a later time if text is inserted into them
2026-03-13 19:05:23 +08:00
Pierre Tachoire
c3de47de90
Merge pull request #1810 from lightpanda-io/fix_cookie_loading
...
Ensure valid cookie isn't interpreted as null
2026-03-13 11:26:24 +01:00
Pierre Tachoire
dd35bdfeb4
Merge pull request #1809 from lightpanda-io/fix_flaky_test
...
Fix a flaky frame test
2026-03-13 10:17:01 +01:00
Karl Seguin
07c3aec34f
Ensure valid cookie isn't interpreted as null
...
Use an explicit type when @ptrCast() is assigned to an optional to ensure the
value isn't interpreted as null.
2026-03-13 17:00:59 +08:00
Karl Seguin
bce3e8f7c6
Fix a flaky frame test
...
Loading `sub 1.html` has a side effect - it increments window.top..sub1_count).
So it should be used careful. It was being used in `about_blank_renavigate` as
a placeholder which _should_ not get navigated, but there's no strict guarantee
about when it gets canceled.
2026-03-13 15:39:34 +08:00
Pierre Tachoire
ba9777e754
Merge pull request #1609 from lightpanda-io/web-bot-auth
...
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 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
Web Bot Auth
2026-03-13 08:31:25 +01:00
Pierre Tachoire
7040801dfa
Merge pull request #1790 from lightpanda-io/structuredClone_serializer
...
Add window.structuredClone
2026-03-13 08:29:49 +01:00
Karl Seguin
4f8a6b62b8
Add window.structuredClone
...
Depends on https://github.com/lightpanda-io/zig-v8-fork/pull/156
Uses V8::Serializer and V8::Deserializer which handles built-in types, e.g.
regex. But it doesn't handle Zig types by default. This is something we need
to hook in, using the delegate callbacks. Which we can do after.
Meant to replace https://github.com/lightpanda-io/browser/pull/1785
2026-03-13 07:28:33 +08:00
Karl Seguin
d3dad772cf
Merge pull request #1806 from lightpanda-io/update_zig_v8_action
...
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
update action.yml to latest zig-v8
2026-03-13 07:26:18 +08:00
Karl Seguin
944b672fea
Merge pull request #1792 from lightpanda-io/Canvas_getImageData
...
Add dummy getImageData to canvas
2026-03-13 07:23:05 +08:00
Karl Seguin
b1c54aa92d
Merge pull request #1795 from lightpanda-io/navigate_blob_url
...
Allow navigation from a blob URL.
2026-03-13 07:22:50 +08:00
Karl Seguin
4ca6f43aeb
Merge pull request #1803 from lightpanda-io/fix-redirection-cookies
...
parse cookies on redirection during header callback
2026-03-13 07:17:51 +08:00
Karl Seguin
f09e66e1cc
update action.yml to latest zig-v8
2026-03-13 07:15:23 +08:00
Karl Seguin
8b7a4ceaaa
Merge pull request #1794 from lightpanda-io/update-docker-zig
...
update zig-v8 in dockerfile
2026-03-13 07:14:35 +08:00
Pierre Tachoire
51e90f5971
parse cookies on redirection during header callback
...
THe change to handle bot `\n` and `\r\n` for end HTTP headers skip the
cookie parsing in case of redirection.
2026-03-12 18:42:51 +01:00
Muki Kiboigo
8db64772b7
add URL getHost test
2026-03-12 09:04:13 -07:00
Muki Kiboigo
bf0be60b89
use new validator for e2e test
2026-03-12 09:04:13 -07:00
Muki Kiboigo
172481dd72
add e2e tests w/ web bot auth
2026-03-12 09:04:13 -07:00
Muki Kiboigo
c6c0492c33
fix request authentication with web bot auth
2026-03-12 09:04:13 -07:00
Muki Kiboigo
fca29a8be2
add WebBotAuth unit tests
2026-03-12 09:04:13 -07:00
Muki Kiboigo
d365240f91
fix cli argument for WebBotAuth domain
2026-03-12 09:04:12 -07:00
Muki Kiboigo
1ed61d4783
simplify parsePemPrivateKey
2026-03-12 09:04:12 -07:00
Muki Kiboigo
a1fb11ae33
make pem private key buffers smaller with comments
2026-03-12 09:04:12 -07:00
Muki Kiboigo
9971816711
use transfer arena to sign webbotauth request
2026-03-12 09:04:12 -07:00
Muki Kiboigo
c38d9a3098
auth challenge only on use_proxy
2026-03-12 09:04:12 -07:00
Muki Kiboigo
02198de455
add support for WebBotAuth in Client
2026-03-12 09:04:10 -07:00
Muki Kiboigo
6cd8202310
add WebBotAuth and support for ed25119 to crypto
2026-03-12 09:03:15 -07:00
Muki Kiboigo
4d7b7d1d42
add web bot auth args
2026-03-12 09:03:15 -07:00
Karl Seguin
e4e21f52b5
Allow navigation from a blob URL.
...
These are used a lot in WPT test.
2026-03-12 18:58:10 +08:00
Pierre Tachoire
84e1cd08b6
update zig-v8 in dockerfile
2026-03-12 11:54:06 +01:00
Pierre Tachoire
7796753e7a
Merge pull request #1791 from lightpanda-io/wp/mrdimidium/update-v8
...
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
Update zig-v8
2026-03-12 11:48:27 +01:00