Commit Graph
110 Commits
Author SHA1 Message Date
ldm0 2fb16c7f5f chore(deps): update Stylo lockfile revision 2026-09-22 19:33:53 +08:00
ldm0 21238ba03a fix(cssom): use native Stylo content alternative counters 2026-09-22 18:16:31 +08:00
ldm0 18a9f45be2 feat(resource): integrate shared disk-backed response storage
Share one disk pool and parkable-image manager across each browser resource runtime. Adopt completed image receive buffers without a full body clone, share encoded backing with network records and decoders, and drive parking by deadlines. Integrate pooled streaming bodies, release staging capacity after spooling, and use tagged image completions throughout resource loading.
2026-09-21 16:47:19 +08:00
ldm0 0099465abc feat(parkable-image): add managed encoded image parking
Adopt completed image buffers, protect readers with snapshots, and park encoded bytes into one disk extent with a reusable backup. Keep resident and parked registries separate, expose owner-driven deadlines and force parking, and synchronize notifications with a short-lock waiting flag. Include lifecycle, concurrency, scheduling, and failure regressions with documentation and runnable examples.
2026-09-21 16:47:19 +08:00
ldm0 92bdee88a4 feat(disk-pool): add shared temporary-file extent storage
Store immutable resource extents in one anonymous temporary file using positioned I/O. Reuse exact or worst-fit holes through offset and size indexes, coalesce released extents, and preserve bounded-capacity and failure behavior. Include allocator regression tests, concise documentation, and runnable examples.
2026-09-21 16:47:19 +08:00
ldm0 796376878b refactor(curl): use owned byte header lists from curl-rust 2026-09-21 05:37:28 +08:00
ldm0 932a7225ac refactor(network): preserve request header bytes across interception
Carry RequestHeaders through navigation, Fetch/XHR, workers, redirects and auth,
with explicit Unicode and ByteString conversions at protocol and WebIDL boundaries.
Share the raw curl header list with WebSocket transport and decode binary response
headers without UTF-8 replacement. Keep header memory charging concrete.

Cover opaque values, UTF-8 overrides, duplicates, redirect/auth continuation and
WebSocket handshakes with byte-level regression tests.
2026-09-21 03:54:12 +08:00
kevin 107c1536cb Retain image references without inferring content from pixels 2026-09-20 20:50:03 +08:00
kevin 4052110cff Preserve ambiguous embedded images and picture alternatives 2026-09-20 20:50:03 +08:00
kevin 91e9b568bd fix(html2md): detect empty inline SVGs structurally 2026-09-20 20:50:03 +08:00
Donough Liu 4751262331 refactor(profile): use standard library file locking 2026-09-20 10:24:50 +08:00
Random30000 dcdca64d3e fix(profile): recover Windows lock after process exit 2026-09-20 08:22:07 +08:00
ldm0 8668a6f9fc chore(release): update version to 1.1.9 2026-09-19 18:23:13 +08:00
ldm0 984c20ec98 Fix table cell baselines and float vertical alignment 2026-09-18 16:19:13 +08:00
ldm0 d98b2255f1 Fix table cell containing blocks and measured baselines 2026-09-18 16:19:13 +08:00
ldm0 3e3f291e64 chore(release): update version to 1.1.8 2026-09-18 15:14:30 +08:00
ldm0 ad0599b6a9 fix: pin proxy endpoint resolution 2026-09-18 14:13:58 +08:00
ldm0 fcc7168925 fix: prevent DNS rebinding in network policy 2026-09-18 14:13:58 +08:00
ldm0 0f3e3acd4d fix(layout): preserve inline clearance below floats
Move inline content that cannot fit beside floats to the first suitable slot,
and retain that clearance in CSS baseline and container-height calculations.
This places GitHub's full-width Show more activity button below its timeline.

Update Taffy to e4e8f77c for float segment extension and content-slot fallback.
Preserve whitespace collapsing around out-of-flow loading hints and cover
float placement, staggered heights, and pre/nowrap behavior in regressions.
2026-09-18 12:43:03 +08:00
ldm0 b5eb73989e chore(release): update version to 1.1.7 2026-09-16 16:20:32 +08:00
ldm0 61dbf7ea3e feat(markdown): introduce moli-html2md 2026-09-16 16:07:15 +08:00
SpringCorel 48db95c18e refactor(v8): share microtask execution boundaries 2026-09-16 14:59:42 +08:00
ldm0 3f50eeb166 perf(fonts): reuse native Brotli for WOFF2 decoding 2026-09-15 15:11:52 +08:00
ldm0 8c8169bedd fix(fonts): update wuff to handle corrupt WOFF2 data
Upgrade wuff to 0.2.9 with compatible version requirements in the layout
and renderer test dependencies. Add a regression proving that corrupt
Brotli data returns a decode error and preserves an existing font.

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast: 17574 passed, 13 skipped
- Release verification: the previous SIGABRT sample renders with fallback;
  valid-font screenshots remain byte-identical
2026-09-15 15:11:52 +08:00
ldm0 4e3f174ab1 refactor(profile): simplify imports with a read-only LevelDB parser
Read Chrome localStorage snapshots through moli-leveldb-parser with
zerocopy layouts. Keep the LevelDB engine in test dependencies and port
Chromium reader scenarios with reproducible native fixtures.

Share WAL-aware SQLite snapshots and merge localStorage by origin and
UTF-16 key. Read all sources and required destination files before
replacing cookie or localStorage data.

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast (17573 passed, 13 skipped)
2026-09-15 15:11:52 +08:00
SpringCorel e454458be7 feat(profile): support profile import from chrome/firefox/curl 2026-09-15 15:11:52 +08:00
ldm0 284667a01a feat(emulation): apply native screen geometry and resolution 2026-09-15 14:46:31 +08:00
ldm0 92737248a6 chore(release): update version to 1.1.6 2026-09-13 06:55:25 +08:00
ldm0 2d249b069c refactor(emulation): coalesce process environment notifications
Publish typed invalidation flags under the environment lock and wake isolate owners only after releasing it. Bound page and worker notification work while preserving command FIFO, teardown safety, and observation ordering.

Remove stale wrapper-era dependencies and terminology, and add mailbox race and CDP burst regressions.
2026-09-13 05:55:27 +08:00
ldm0 3bead42808 refactor(emulation): use native process-wide ICU defaults
Remove the Date/Intl wrappers, custom date parser and per-Page replay state. Keep exclusive locale/timezone ownership in a process controller and refresh existing Page and Worker isolates through generation-bound notifications and observation boundaries, including nested Inspector pauses.

Release claims on session/target/context retirement, retain native coercion and locale matching, and cover lifecycle restoration with Rust, BiDi and process-isolated CDP regressions.
2026-09-13 01:07:35 +08:00
ldm0 ae7e1067e6 fix(emulation): preserve locale and timezone semantics 2026-09-13 01:07:35 +08:00
ldm0 09257c15cf refactor(fonts): extract system font matching crate
Move Fontconfig matching, substitution policy, and the Fontique lookup cache into moli-system-fonts. Keep CSS family adaptation in moli-layout, migrate tests and fixtures, and retain the Skia notice in source comments.
2026-09-12 04:13:15 +08:00
ldm0 c1661a2c3a fix(geometry): serialize DOMMatrix numbers like ECMAScript
Source-commit: 715995c959
2026-09-11 04:24:08 +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 4e63c1e8c6 test(curl): cover shared HTTP and WebSocket workloads 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 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 7ed1ce8a93 feat(websocket): inherit browser TLS credentials 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 661526a6bd build: use lexmount curl-rust fork 2026-09-10 14:37:03 +08:00
ldm0 e194c2add8 refactor(html): centralize input type states
Extract an independently mergeable topic from wpt-misc-fix at
a70a96f9d1.

Source commits:
- 05e2cd5350

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-10 04:05:23 +08:00
ldm0 114508118a fix(fetch): honor credentials mode for TLS client identities 2026-09-09 19:44:04 +08:00
ldm0 17e8fa5cf9 refactor(html): extract window features parser 2026-09-09 17:58:17 +08:00
ldm0 e16cde5767 chore(release): update version to 1.1.5 2026-09-09 17:57:37 +08:00
ldm0 583fde024f refactor(compression): share the Brotli backend with curl
Replace brotli2 with brotlic so stream codecs and curl use the same
brotlic-sys 0.2.2 dependency. Remove the separate brotli-sys dependency
and preserve compression quality 5 and streaming finish handling.

Validation: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings.
Tests were skipped as requested.
2026-09-09 04:01:49 +08:00
ldm0 9e668c97e1 feat(compression): support Brotli streams with brotli2
Use the safe brotli2 streaming API. Preserve staged output, backpressure,
truncation and trailing-data errors, with coverage for Window, Worker,
empty and chunked input, large flush output, and codec reclamation.

Declare fastrand as a test dependency so the large-output regression test
also builds when this change is applied directly on main.

Validation on the independent branch: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings;
cargo nextest run --no-fail-fast (17215 passed, 13 skipped).
Python benchmark harness: 480 tests passed.

(cherry picked from commit d178f16726)
2026-09-09 01:53:03 +08:00