Commit Graph
737 Commits
Author SHA1 Message Date
ldm0 3ba6e2d6ff fix(curl): resume eligible HTTP jobs after completions
Include queued HTTP work in the owner's runnable decision after completions release active slots. Share the global and per-origin eligibility checks with the startup path so blocked queues still allow the owner to wait.

Add native owner regressions that consume submission wakeups before releasing a held request, then require the queued request to finish within its short deadline. Cover both scheduler limits and priority queues whose head is blocked by an origin cap.
2026-09-11 02:29:40 +08:00
ldm0 4b3b8993bb refactor(curl): share HTTP and WebSocket connection limits
Remove the separate WebSocket CURLSH connection cache so HTTP/1, HTTP/2 and WebSocket sockets compete for the existing host and total limits. Retain bounded session admission and message memory limits.

Pin the curl fork's connect-only eviction fix so quiet upgraded sockets remain owned until their connections close. Cover queueing, deadlines, cancellation, shutdown and HTTP/2 multiplexing under a full shared connection budget.
2026-09-11 01:47:10 +08:00
ldm0 0fde20db42 refactor(curl): organize runtime and protocol modules 2026-09-11 01:47:10 +08:00
ldm0 4e63c1e8c6 test(curl): cover shared HTTP and WebSocket workloads 2026-09-11 01:47:10 +08:00
ldm0 7f1617dad2 refactor(curl): separate request handles from runtime ownership 2026-09-11 01:47:10 +08:00
ldm0 544c08cffe refactor(websocket): use the browser fetch transport 2026-09-11 01:47:10 +08:00
ldm0 150c01436a refactor(curl): drive HTTP and WebSocket on one owner 2026-09-11 01:47:10 +08:00
ldm0 d9ce1e216b chore(curl): add opt-in WebSocket owner diagnostics 2026-09-11 01:47:10 +08:00
ldm0 06e0c320be perf(curl): reuse receive storage after would-block 2026-09-11 01:47:10 +08:00
ldm0 30869bb418 fix(websocket): coalesce pending pong responses 2026-09-11 01:47:10 +08:00
ldm0 a460cb3738 fix(websocket): close command admission before terminal delivery 2026-09-11 01:47:10 +08:00
ldm0 14fed394be fix(websocket): schedule native I/O by readiness 2026-09-11 01:47:10 +08:00
ldm0 cd3a2b1679 refactor(websocket): encapsulate native session lifecycle 2026-09-11 01:47:10 +08:00
ldm0 e3f8765a34 fix(parser): treat empty HTML4 system IDs as quirks
Source-commit: 7f2172a42f
2026-09-11 00:31:21 +08:00
ldm0 62b1680452 docs(skill): strengthen Moli search concurrency and timeouts 2026-09-11 00:23:45 +08:00
ldm0 5699c4621b feat(skill): add moli-websearch/imagesearch skills 2026-09-10 20:32:07 +08:00
ldm0 8d9acecc2f fix(layout): preserve double precision transform matrices
Split from window.chrome onto origin/main at 4b35bbc968. No other unmerged feature groups included.

Original-commits: 78d80d527
2026-09-10 20:30:55 +08:00
ldm0 33644f8b52 fix(html): reflect the inert attribute
Source-commit: cfd0b165ec
2026-09-10 19:01:48 +08:00
ldm0 3476f0fee8 fix(dom): expose object child browsing context
Source-commit: 0870f32748
2026-09-10 17:52:00 +08:00
ldm0 facea1d692 fix(geometry): expose WebKitCSSMatrix alias
Source-commit: 4f3342cfcb
2026-09-10 17:50:55 +08:00
ldm0 4b35bbc968 fix(workers): contain bootstrap script errors
Source-commit: 1bba1eb62e
2026-09-10 16:16:46 +08:00
ldm0 c7cc93fb03 fix(geometry): preserve exact DOMMatrix inverse identities
Source-commit: 8a31373364
2026-09-10 15:43:13 +08:00
ldm0 5d99eb4ce8 fix(import-maps): enforce parser inline CSP
Source-commit: 7ddb9b78ed
2026-09-10 14:49:41 +08:00
ldm0 9944bfc31f fix(svg): map special presentation attributes
Source-commit: 7f01394606
2026-09-10 14:45:56 +08:00
ldm0 fa30d1b468 fix(location): make prototype immutable
Source-commit: d1896cbb3f
2026-09-10 14:44:37 +08:00
ldm0 b88999b91e fix(modules): decode fetched source as UTF-8
Extract an independently mergeable topic from wpt-misc-fix at
a70a96f9d1.

Apply UTF-8 decoding directly to the baseline module fetch path without including import-map integrity changes.

Source commits:
- bffc90964d

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-10 14:39:04 +08:00
ldm0 2fa5cff3ce refactor(websocket): remove unused CONNECT header assembly
Write proxy header values directly into the native request and delete the
unused CONNECT string and append_proxy_connect_header helper. Native
request configuration already validates these fields before connecting.

Move rejection coverage to the native configuration entry point, covering
CR, LF and NUL in User-Agent and Proxy-Authorization. Check User-Agent on
the actual CONNECT request while retaining proxy credential isolation and
WSS tunnel coverage.

Validation: 96 package tests passed all 3 iterations; cargo fmt --all,
strict workspace/all-targets/all-features Clippy and full nextest passed
(17322 passed, 13 skipped).
2026-09-10 14:37:03 +08:00
ldm0 30c079edc1 fix(websocket): exit silently when synthetic producers disappear
Dropping the last connection handle can close its command channel before
task cancellation is observed. The synthetic loop could then publish an
unsolicited abnormal Close after the client had gone away.

Exit silently when command producers disappear, matching the native
session. Keep explicit client close, peer close and failure events intact.
Add a deterministic regression for channel closure before task abortion;
it reproduced the extra Close(1006) before this fix.

Validation: original lifecycle test and deterministic regression passed
all 50 stress iterations; 96 package tests passed all 3 iterations.
Formatting, strict workspace/all-targets/all-features Clippy and full
nextest passed (17322 passed, 13 skipped).
2026-09-10 14:37:03 +08:00
ldm0 31bb71c430 refactor(websocket): rely on native frame validation
Remove FrameProgress and message_kind from the browser assembler. Use
libcurl's validated chunk metadata and normalized continuation types,
checking frame and message memory limits before buffering each new frame.
Keep payload assembly, UTF-8 and Close content validation in the browser
layer.

Document the native Chunk contract and cover 31 invalid framing cases,
chunk boundaries, continuation types, empty frames and interleaved control
frames through the real transport. Strengthen browser regressions for
partial-message failure, UTF-8, Close contents and exact size limits.

Verify that a declared final frame which exceeds the message budget fails
while the bytes received are still within that budget, without waiting
for the rest of the frame payload.

Validation: cargo fmt --all; strict workspace/all-targets/all-features
Clippy; full nextest (17321 passed, 13 skipped). The 564 related tests
passed all 3 stress iterations; the strengthened message-budget boundary
test passed all 10 iterations.
2026-09-10 14:37:03 +08:00
ldm0 10b242f855 refactor(websocket): keep a single native frame in flight
Replace unused data/control send queues, admission semaphores and public
receipts with send_frame(). The browser session owns scheduling; a single
pending frame preserves partial writes and completes independently of
receive backpressure.

Reject overlapping submissions and retain submitted frames if their
waiting futures are dropped. Cover slot reuse, cancellation, transport
failure, partial writes and sends with a full receive queue.

Update curl-rust to 608f08d, which bounds native receive prefetch and fixes
the browser receive-backpressure regression exposed during validation.

Validation: cargo fmt --all; strict workspace/all-targets/all-features
Clippy; full nextest (17318 passed, 13 skipped). The unchanged browser
receive-backpressure test passed 40 stress iterations, and 561 related
tests passed all 3 stress iterations.
2026-09-10 14:37:03 +08:00
ldm0 11da0d4720 refactor(websocket): unify message send completion events
Publish one SendCompleted per outgoing message, including empty messages.
Use it for browser byte accounting, stream write settlement and CDP records,
preserving the selected Page task's microtask completion boundary.

Remember writes rejected by native admission before peer Close delivery so
WebSocketStream.closed rejects with the actual close information. Cover that
ordering deterministically and preserve the interrupted write's error identity.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets
--all-features -- -D warnings; cargo nextest run --no-fail-fast. The two close
regressions also pass 30 stress iterations, and all 242 WebSocket-related tests
pass three iterations.
2026-09-10 14:37:03 +08:00
ldm0 af1c22df45 refactor(websocket): prepare native handshake inputs and results 2026-09-10 14:37:03 +08:00
ldm0 add886da12 refactor(websocket): expose connection and interception capabilities 2026-09-10 14:37:03 +08:00
ldm0 33108fcffd refactor(websocket): separate native send admission and completion 2026-09-10 14:37:03 +08:00
ldm0 0c116aa350 fix(websocket): decouple send progress from event delivery 2026-09-10 14:37:03 +08:00
ldm0 94889f12b9 fix(websocket): drain queued data before starting close timeout 2026-09-10 14:37:03 +08:00
ldm0 82fa486192 chore(websocket): remove obsolete Clippy allowance 2026-09-10 14:37:03 +08:00
ldm0 7ed1ce8a93 feat(websocket): inherit browser TLS credentials 2026-09-10 14:37:03 +08:00
ldm0 6832d179d9 refactor(curl): share TLS certificate configuration 2026-09-10 14:37:03 +08:00
ldm0 c252a3367d fix(websocket): retain HTTP/1.0 upgrade connections 2026-09-10 14:37:03 +08:00
ldm0 49848795c4 test(websocket): cover browser lifecycle and transport backpressure 2026-09-10 14:37:03 +08:00
ldm0 391742c14b feat(websocket): use native curl transport 2026-09-10 14:37:03 +08:00
ldm0 7bc35983c1 feat(curl): add persistent websocket session runtime 2026-09-10 14:37:03 +08:00
ldm0 c1c936b338 refactor(websocket): separate handshake validation and event delivery 2026-09-10 14:37:03 +08:00
ldm0 e0e6451747 refactor(websocket): encapsulate connection commands and cancellation 2026-09-10 14:37:03 +08:00
ldm0 661526a6bd build: use lexmount curl-rust fork 2026-09-10 14:37:03 +08:00
ldm0 14949fd862 fix(dom): include CDATA in child text content
Extract an independently mergeable topic from wpt-misc-fix at
a70a96f9d1.

Register the child text content regression module without including later script test modules.
Include the XML document fixture route used by the CDATA regression so this branch does not depend on the separate XML input-stream changes.

Source commits:
- 7f587e1251
- ae3a3f1096

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-10 05:50:52 +08:00
ldm0 826590cdf5 fix(performance): implement User Timing boundaries and PerformanceMark
Extract an independently mergeable topic from wpt-misc-fix at
a70a96f9d1.

Include the lazy Performance/PerformanceTiming materialization and Window detection changes from a7f48edb0; Worker installation and observer refactors from that commit are outside this Window User Timing topic.

Source commits:
- 808f514caa
- 04f253fda2
- a7f48edb07

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-10 05:49:31 +08:00
ldm0 640d37f6ed fix(geometry): complete DOMRect construction and factories
Extract an independently mergeable topic from wpt-misc-fix at
a70a96f9d1.

Source commits:
- 3d4e98da5a
- 6414934242
- a4af7f3d7c

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-10 05:48:08 +08:00
ldm0 9c338eedf5 fix(events): suppress reentrant rejectionhandled events
Extract an independently mergeable topic from wpt-misc-fix at
a70a96f9d1.

Source commits:
- 3fd12f80b7

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-10 05:46:08 +08:00