Adrià Arrufat
d918ec694b
css: add log filter to CSSStyleSheet test
2026-03-12 22:21:01 +09:00
Adrià Arrufat
b2b609a309
dom: remove verbose logging and simplify css logic
2026-03-12 22:07:58 +09:00
Adrià Arrufat
48dd80867b
dom: support css display: none in checkVisibility
...
Updates `Element.checkVisibility` to iterate through document
stylesheets and check for matching rules with `display: none`.
Also ensures `<style>` elements register their sheets and
initializes them immediately upon addition to the DOM.
2026-03-12 20:55:44 +09:00
Adrià Arrufat
f58f6e8d65
css: improve CSSOM rule handling and serialization
...
Refactors `CSSRule` to a union type for better type safety and updates
`CSSStyleRule` to use `CSSStyleProperties`. Adds comprehensive tests for
`insertRule`, `deleteRule`, and `replaceSync`.
2026-03-12 20:23:59 +09: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
Karl Seguin
880205e874
Add dummy getImageData to canvas
...
Probably doesn't solve many (if any) WPT tests, but it moves them further along.
2026-03-12 17:53:00 +08:00
Nikolay Govorov
1b96087b08
Update zig-v8
2026-03-12 08:50:33 +00:00
Karl Seguin
aa246c9e9f
Merge pull request #1788 from lightpanda-io/range_cleanup
...
Add cleanup to Range
2026-03-12 16:45:05 +08:00
Adrià Arrufat
ee034943b6
feat(css): implement stylesheet rule management
...
Adds a CSS rule parser and implements `insertRule`, `deleteRule`, and
`replaceSync` in `CSSStyleSheet`. Also updates `CSSRuleList` to use
dynamic storage and populates sheets from `<style>` elements.
2026-03-12 16:27:25 +09:00
Karl Seguin
f1d311d232
Merge pull request #1781 from lightpanda-io/wp/mrdimidium/telemetry-network
...
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
Use global connections poll
2026-03-12 13:46:51 +08:00
Karl Seguin
e4f7fca10d
Merge pull request #1789 from lightpanda-io/fix-test-warnings
...
testing: add LogFilter utility for scoped log suppression
2026-03-12 13:40:13 +08:00
Adrià Arrufat
3d6d669a50
testing: add LogFilter utility for scoped log suppression
2026-03-12 13:56:53 +09:00
Nikolay Govorov
c4097e2b7e
remove dead-code
2026-03-12 03:55:48 +00:00
Karl Seguin
619d27c773
Add cleanup to Range
...
In https://github.com/lightpanda-io/browser/pull/1774 we started to track Ranges
in the page in order to correctly make them "live". But, without correct
lifetime, they would continue to be "live" even if out of scope in JS.
This commit adds finalizers to Range via reference counting similar to Events.
It _is_ possible for a Range to outlive its page, so we can't just remove the
range from the Page's _live_range list - the page might not be valid. This
commit gives every page an unique id and the ability to try and get the page
by id from the session. By capturing the page_id at creation-time, a Range
can defensively remove itself from the page's list. If the page is already
gone, then there's no need to do anything.
2026-03-12 10:38:07 +08:00
Karl Seguin
1522c90294
Merge pull request #1787 from lightpanda-io/dummy-filelist
...
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
Add FileList Web API stub
2026-03-12 06:37:00 +08:00
Karl Seguin
794e15ce21
Merge pull request #1786 from lightpanda-io/fontfaceset-load
...
FontFaceSet is now an EventTarget
2026-03-12 06:36:22 +08:00
Karl Seguin
34771b835e
Merge pull request #1783 from lightpanda-io/custom_element_dynamic_markup_handling
...
Throw on dynamic markup in custom element callbacks during parsing
2026-03-12 06:27:22 +08:00
Karl Seguin
8df51b232a
Merge pull request #1784 from lightpanda-io/origin_arena
...
Use origin.arena for values that are tied to the origin
2026-03-12 06:26:20 +08:00
Karl Seguin
13b8ce18b2
Merge pull request #1780 from lightpanda-io/anchor_and_form_target
...
Add support for target attribute on anchors and forms
2026-03-12 06:26:08 +08:00
Pierre Tachoire
448386e52b
Add FileList Web API stub
...
Next.js hydration references FileList as a global for feature detection.
Register a minimal stub (length=0, item()→null) so the type exists in
the global scope and the reference check doesn't throw.
2026-03-11 22:31:12 +01:00
Pierre Tachoire
bf07659dd5
FontFaceSet is now an EventTarget
...
Dispatch loading and loaddone events on load() call
2026-03-11 22:18:42 +01:00
Karl Seguin
16dfad0895
Use origin.arena for values that are tied to the origin
...
Of note, the TAO and identity map entry has to use the origin arena, not
the context arena, as those can outlive the context.
2026-03-11 21:55:58 +08:00
Adrià Arrufat
f61449c31c
Merge pull request #1776 from lightpanda-io/semantic-tree
...
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 native Semantic Tree extraction engine for AI agents
2026-03-11 21:01:04 +09:00
Adrià Arrufat
60699229ca
Merge branch 'main' into semantic-tree
2026-03-11 20:52:39 +09:00
Karl Seguin
e1dd26b307
Throw on dynamic markup in custom element callbacks during parsing
...
Custom element callbacks aren't allowed to call document.open/close/write while
parsing.
Fixes WPT crash:
/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html
2026-03-11 18:41:06 +08:00
Pierre Tachoire
7d835ef99d
Merge pull request #1778 from lightpanda-io/wp/mrdimidium/libcurl-malloc
...
Use zig allocator for libcurl
2026-03-11 10:13:13 +01:00
Karl Seguin
0971df4dfc
Merge pull request #1782 from lightpanda-io/silence_shutdown_error_on_non_linux
...
Don't log SocketNotConnected when shutting down listener on non-Linux
2026-03-11 16:39:15 +08:00
Halil Durak
9fb57fbac0
Merge pull request #1771 from lightpanda-io/nikneym/compile-function
...
Prefer `ScriptCompiler::CompileFunction` to compile attribute listeners
2026-03-11 11:38:16 +03:00
Karl Seguin
48ead90850
Don't log SocketNotConnected when shutting down listener on non-Linux
...
On BSD, a listening socket isn't considered connected, so this error is
expected. Maybe we shouldn't call shutdown at all, but I guess it's safer this
way.
2026-03-11 16:29:44 +08:00
Pierre Tachoire
cc88bb7feb
Merge pull request #1777 from lightpanda-io/mcp-missing-lp-commands
...
mcp: add interactiveElements and structuredData tools
2026-03-11 09:11:48 +01:00
Karl Seguin
a725e2aa6a
Merge pull request #1774 from egrs/range-chardata-mutations
...
update live ranges after CharacterData and DOM mutations
2026-03-11 16:04:41 +08:00
Karl Seguin
ee637c3662
Add support for target attribute on anchors and forms
2026-03-11 15:49:30 +08:00
Adrià Arrufat
65d7a39554
SemanticTree: use payload captures for CData.Text checks
...
Improves conciseness and idiomatic Zig style by replacing .is(CData.Text) != null and .as() with direct payload captures in if statements.
2026-03-11 16:39:59 +09:00
Adrià Arrufat
37735b1caa
SemanticTree: use StaticStringMap for structural role check
...
Improves performance and readability of isStructuralRole. Also includes minor syntax cleanup in AXNode.
2026-03-11 16:37:24 +09:00
Pierre Tachoire
c8f8d79f45
Merge pull request #1775 from lightpanda-io/arena_blob
...
Use arena from ArenaPool for Blob (and File)
2026-03-11 08:35:27 +01:00
Adrià Arrufat
1866e7141e
SemanticTree: cast with as
...
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com >
2026-03-11 16:33:39 +09:00
Adrià Arrufat
feccc9f5ce
AXNode: remove unused mock JSON lifecycle methods
...
Simplifies TextCaptureWriter by removing unused methods, ensuring future changes to writeName will fail at build time if new methods are required.
2026-03-11 16:25:34 +09:00
Adrià Arrufat
af803da5c8
cdp.lp: use enum for getSemanticTree format param
...
Leverages std.json.parse to automatically validate the format param into a type-safe enum.
2026-03-11 16:21:43 +09:00
egrs
25c89c9940
Revert "remove ranges from live list on GC finalization"
...
This reverts commit 625d424199 .
2026-03-11 08:04:53 +01:00
egrs
697a2834c2
Revert "fix CI: store list pointer on AbstractRange to avoid Page type mismatch"
...
This reverts commit 056b8bb536 .
2026-03-11 08:04:51 +01:00
egrs
056b8bb536
fix CI: store list pointer on AbstractRange to avoid Page type mismatch
...
The bridge.finalizer resolves Page through its own module graph, which
can differ from Range.zig's import in release builds. Store a pointer
to the live_ranges list directly on AbstractRange so deinit can remove
without accessing Page fields.
2026-03-11 07:58:31 +01:00
egrs
625d424199
remove ranges from live list on GC finalization
...
Add a weak finalizer to Range that removes its linked list node from
Page._live_ranges when V8 garbage-collects the JS Range object. This
prevents the list from growing unboundedly and avoids iterating over
stale entries during mutation updates.
2026-03-11 07:27:39 +01:00
Adrià Arrufat
5329d05005
interactive: optimize getTextContent single-chunk path
...
Avoids an unnecessary double allocation and maintains a zero-copy fast path for single-chunk text extraction.
2026-03-11 15:27:12 +09:00
egrs
d2c55da6c9
address review: move per-range logic to AbstractRange, simplify collapsed check
...
Move the per-range update logic from Page into AbstractRange methods
(updateForCharacterDataReplace, updateForSplitText, updateForNodeInsertion,
updateForNodeRemoval). Page now just iterates the list and delegates.
Remove redundant start_container == end_container check in insertNode —
collapsed already implies same container.
2026-03-11 07:26:20 +01:00
Adrià Arrufat
2e6dd3edfe
browser.EventManager: remove unused hasListener function
2026-03-11 15:18:14 +09:00
Nikolay Govorov
a95b4ea7b9
Use global connections poll
2026-03-11 05:44:59 +00:00
Nikolay Govorov
c891eff664
Use zig allocator for libcurl
2026-03-11 03:34:27 +00:00
Adrià Arrufat
68564ca714
mcp: add interactiveElements and structuredData tools
2026-03-11 11:09:19 +09:00