Commit Graph
79 Commits
Author SHA1 Message Date
lanyue-llk fad2219f9b fix(renderer): export live rendered content through shared markdown conversion 2026-11-03 17:07:17 +08:00
ldm0 2db52b45ba fix(svg): resolve inherited relative font weights correctly 2026-11-03 11:55:43 +08:00
ldm0 2defc40820 feat(cookies): persist canonical cookie deltas in SQLite 2026-11-01 04:03:38 +08:00
ldm0 5e4ce39c51 refactor(storage): extract renderer-independent Web Storage state 2026-11-01 04:03:38 +08:00
ldm0 c7ecc2e772 feat(sqlite): add bounded background executor and connection policy 2026-10-30 03:31:32 +08:00
ldm0 22988c042e fix(pdf): share glyph ink measurement through AnyRender 2026-10-28 05:30:13 +08:00
ldm0 b8c6e1b9fd fix(paint): use CSS pixels for synthetic glyph weight 2026-10-28 05:30:13 +08:00
ldm0 2356a63eff fix(css): use native font size adjustment shorthand semantics 2026-10-23 04:26:49 +08:00
ldm0 ce7f503f28 fix(fetch): match Chromium for bare-CR header EOF 2026-10-22 02:33:44 +08:00
ldm0 87527dec85 perf(deps): unify AWS-LC on the latest backend 2026-10-22 01:15:19 +08:00
ldm0 2f45fbf990 perf(deps): share the pinned IDNA implementation
Resolve cookie and URL IDNA consumers to the pinned rust-url revision,
removing the duplicate registry implementation. Cover Unicode cookie
domains, canonical URLs and host-only matching.

Validation on the unchanged final source tree: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings;
cargo nextest run --no-fail-fast (20,505 passed, 18 existing skips).
2026-10-21 23:16:23 +08:00
ldm0 f660ee584f refactor(csp): extract shared policy engine into moli-csp 2026-10-21 22:15:00 +08:00
ldm0 510a5cbf3e fix(fetch): parse bare CR response fields like Chromium
Enable the curl fork's opt-in browser HTTP/1 response-field parser before
framing and callbacks. Cover CR-separated/folded fields, leading/repeated
CR, observations, length/chunked bodies and malformed framing across all
three fetch transports. Consume lexmount/curl-rust#3 at 79310cbd939.

Extracted from 3c1dfe9e8a8b69a72cb50ec53c57df7e249c5a67 onto main
8d57e02b3c, retaining its XML fork pin.

Validated cargo fmt --all, strict workspace/all-targets/all-features
Clippy and cargo nextest run --no-fail-fast: 20,490 passed, 18 skipped.
Live CDP checks of six raw-header responses match Chromium exactly in
status, response headers and body. The curl fork's 75 local tests pass.
2026-10-21 19:34:39 +08:00
ldm0 fa293e83e2 refactor(xml): consume lexmount fork instead of vendored parser
Consume lexmount/html5ever at 4574311c63e79bba7d4ddb98cb0562d8dad499ee and remove the XML vendor tree and obsolete ignore exceptions. All 11 production XML source files match the former vendor byte-for-byte; HTML, XML and Stylo still share registry markup5ever 0.40.0 and web_atoms 0.3.0.

Rebased the style stack onto origin/main at ebae4ca6ca.

Validation: Release; cargo fmt --all; strict workspace/all-target/all-feature Clippy; cargo nextest run --no-fail-fast (20413 passed, 18 skipped); 312 paired XML WPT executions and 840 Chromium overflow comparisons with no differences. Full WPT and nine status/subtest-change replays found no new stable regression.
2026-10-21 17:55:02 +08:00
ldm0 dc3fc902f0 fix(layout): preserve wrapped flex distribution across overflow modes
Adopt the separate Taffy distribution fallback correction. Remove the scroll-only branch, preserve flex-start versus safe center behavior in every writing mode, and add a browser regression that checks child positions for visible and scroll overflow.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (20287 passed, 18 skipped). The combined working tree passed these checks before this logical split. Frozen Release and focused browser/WPT validation also passed; final full WPT is running.

Original-commit: 4d5786f1a1
2026-10-21 17:55:02 +08:00
ldm0 c00c9f8cd9 fix(layout): retain resolved grid widths and coherent wrapped flex flows
Adopt the separately validated Taffy fixes for vertical min-content float-grid parents and wrapped RTL flex scroll padding. Preserve the upstream intrinsic keyword result, share one physical flow projection, and cover both browser seams with CLI regression tests.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (20286 passed, 18 skipped). The combined working tree passed these checks before this logical split. Frozen Release and focused browser/WPT validation also passed; final full WPT is running.

Original-commit: 6374fa6725
2026-10-21 17:55:02 +08:00
ldm0 9288430fa0 fix(layout): adopt fork flex and static-position corrections
Pin the tested Taffy fork with intrinsic flex constraints, supported baseline grouping, wrapped stretch measurement and scroll origin corrections. Reuse the existing shared static fallback and remove duplicate grid coordinate projection.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (20284 passed, 18 skipped). The combined working tree passed these checks before this logical split. Frozen Release and focused browser/WPT validation also passed; final full WPT is running.

Original-commit: fe7aa2fe70
2026-10-21 17:55:02 +08:00
ldm0 a1965aa9ae fix(layout): adopt fork constraint fixes and isolated content probes
Pin published Taffy and Stylo fixes for baseline provenance, intrinsic child bounds, grid/OOF ratio constraints, writing modes, selector matching, stylesheet nesting and calc type dependencies. Treat IFC ContentProbe inputs as intrinsic contribution measurements.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (20283 passed, 18 skipped). Release v3 and five browser regression rounds. Full WPT recorded separately.

Original-commit: b002c0e823
2026-10-21 17:55:02 +08:00
ldm0 6424f9e555 fix(layout): integrate ratio and orthogonal grid regression fixes
Original-commit: 81c9bd1abd
2026-10-21 17:55:02 +08:00
ldm0 e78f5a33b2 feat(layout): update Taffy and Stylo forks with current Blitz adapters
Move Taffy to 0.15 and Stylo to 0.22 using fixed fork revisions, with the
matching stylo_taffy adapter. Upgrade cssparser and the production HTML/XML
parsers while preserving the vendored XML behavior.

Adapt sizing inputs, baselines, grid positions, overflow and out-of-flow
ownership. Preserve font-stretch CSSOM compatibility and intrinsic sizing
through nested atomic inline probes.

Validation: root cargo fmt --all; strict workspace/all-target/all-feature
Clippy; Nextest 20280 passed, 18 skipped; Release build; five browser
regression rounds; RTL and nested intrinsic Chromium geometry controls.
Full WPT Cross is recorded separately with its Cases refresh.

Original-commit: 281a920d89
2026-10-21 17:55:02 +08:00
ldm0 f2f0028d80 chore(deps): update Taffy fork after compatible upstream rebase
Replay the 43 Moli patches onto upstream 2e4dbc55 while preserving the
0.13 interfaces consumed by Moli and stylo_taffy. Include the upstream
grid loop bounds, definiteness tracking and flex wrapping fixes.

Keep the intrinsic sizing regression fixes and repair the existing RTL
scrollbar inset and wrapped-column baseline failures. Pin the published
fork at 3c19aa124ebcef6320a4e84e141be19f4af659c3.

Validation: cargo fmt --all; strict workspace Clippy; full Nextest
(20279 passed, 18 skipped, NEXTEST_TEST_THREADS=16); Release build;
Taffy native tests (5898 passed, 4 ignored); full WPT Cross plus old/new
three-round retests of all 26 worsened case statuses.

Original-commit: d95b40495e
2026-10-21 17:55:02 +08:00
ldm0 4a655435bc fix(layout): include percentage padding in flex content sizing
Resolve percentage padding against the flex containing block while measuring a content flex basis. This keeps the text content width intact before line breaking. The browser regression covers three container widths, four padding percentages and both box-sizing modes.

MOL-467: Taffy 02c4920e93348e20cb197667a366e0a15e91db39. Browser before/after probes retained.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast: 20279 passed,18 skipped.

Original-commit: 8ab5696ccc
2026-10-21 17:55:02 +08:00
ldm0 ceda61205a fix(layout): apply inline-block intrinsic maximum widths
Constrain auto-width inline-blocks by max-width:min-content while preserving intrinsic minimums, minimum precedence and automatic growth. Pin the separate Taffy sizing fixes, including the block-root auto-fill control.

MOL-466: Taffy a34a7a82e5144b311b2fcb34feeb8412db9d0117. Browser before/after probes retained.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast: 20278 passed,18 skipped.

Original-commit: d4016168b2
2026-10-21 17:55:02 +08:00
ldm0 44fe2b6ddc fix(layout): honor intrinsic minima in grid tracks and rows
Pin the separate Taffy71617899 and4a618c7b fixes: resolve authored intrinsic item minima for auto-track contributions and before fixing the width used to measure row height. A smaller preferred width must not hide the minimum in either path.

MOL-465: browser regression covers min-content/max-content with auto,0px and50px preferred widths, track positions and row heights. The two pre-fix failures were next-column x40 instead of60 and row height60 instead of20. The Webfont grid nontermination control still completes.

cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast:20277 passed,18 skipped. Initial partial-fix failure logs retained.

Original-commit: 3b602b4240
2026-10-21 17:55:02 +08:00
ldm0 64a6498627 fix(layout): terminate fractional grid track growth
Pin Taffy5453d6cd, whose remaining-growth subtraction uses the same rounded base-plus-increase value as its growability predicate. This prevents a zero-growth iteration from repeating forever.

MOL-464: the new bounded CLI test fails after10s before the pin and passes afterward. The nested grid, percentage margin and Webfont reproducer also completes in0.17s; this trigger hangs in both1.1.17 and1.1.18.

cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast: 20276 passed,18 skipped. A disk-full compilation attempt is retained separately; the successful full retry passes.

Original-commit: 163941940d
2026-10-21 17:55:02 +08:00
ldm0 1275fb7016 chore(deps): upgrade curl bindings and bundle libcurl 8.23
Pin the fork rebased onto upstream curl-rust 0.4.51, including the native
pre-request API and libcurl 8.23 with the upstream connect-only eviction fix.
Enable the upstream apple-sectrust feature explicitly in moli-curl.

Keep Moli proxy endpoints explicit while adapting transport comparisons to
libcurl's implicit HTTP port and hostname validation. Update form wire
request assertions to preserve the empty query already in navigation URLs.

Validated workspace formatting, warnings-as-errors Clippy, and all 20,342
nextest cases (18 skipped). The curl fork passed Linux/macOS/Windows CI.
2026-10-19 03:53:12 +08:00
ldm0 012bd10983 refactor(fetch): use curl-rust pre-request callbacks
Pin curl and curl-sys to the native callback API from curl-rust#1 and replace
the handwritten callback registration with Handler::prereq / Easy2::prereq.
Keep each collector's captured timing token and re-enable the callback after
reset; the dependency owns userdata lifetime and C panic handling.
2026-10-19 03:00:24 +08:00
ldm0 c28b7d5fb9 refactor(layout): consume Parley's positioned visual clusters 2026-10-16 11:00:41 +08:00
ldm0 e10fe9c440 fix(layout): resolve intrinsic width constraints in shared sizing 2026-10-14 22:23:06 +08:00
ldm0 778a35bd07 fix(paint): restore Muse pill corners and SVG colors 2026-10-13 00:17:07 +08:00
ldm0 1c25ae86ba build(pdf): deduplicate fontations via subsetter patch 2026-10-12 21:33:26 +08:00
ldm0 4c31485151 fix(url): preserve file URL hosts and leading path segments
Vendor rust-url 2.5.8 with narrowly documented file-URL parsing fixes. Preserve leading empty path segments, retain non-local hosts while normalizing Windows drive letters, and apply the same rules to relative resolution and pathname setters. Include licensing, the upstream fixtures, native URL regressions, and JavaScript URL property regressions.
2026-10-12 01:07:26 +08:00
ldm0 561edec134 build: refresh Parley fork to d0f5452
Pin Parley and Fontique to the reviewed fork with clarified bidi contracts, a separate first-style line-height compatibility commit, and transparent-marker benchmarks. Update the same-source workspace crates in Cargo.lock without changing package versions or other dependencies.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19,676 passed, 16 skipped).
2026-10-07 18:34:42 +08:00
ldm0 b5f4e788aa build: update Parley to the PR1-based inline object fork
Pin Parley and Fontique to 813c8c1120c6dee61f838f2cc2ec4efedc08b9ea on fix/inline-object-bidi-rebased. The fork contains the three inline-box bidi PR commits followed by the transparent marker, visual edge placement and host embolden extensions. Keep the original fix/inline-object-bidi branch intact.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19676 passed, 16 skipped).
2026-10-07 18:34:42 +08:00
ldm0 7fe5c0913e fix(layout): place inline decorations at physical bidi edges
Position transparent opening and closing edges around their visual descendants
after bidi reordering and before alignment. Keep the logical edge widths used
by line breaking while honoring CSS direction for physical padding and borders.

Move the inline-object bidi patch onto current upstream Parley main and pin
the fork at 8eb00ef5e628b1bba95dcde88658deb2a5aed1b5. Adapt the new font,
metrics, whitespace and layout APIs while preserving neutral atomic analysis.
Preserve the browser's synthetic-bold policy through Fontique's host threshold.

Use structural style ancestry for inline text masks so physical edge ordering
cannot change which glyphs belong to a background-clip:text target.

Add 96 Chromium-verified decoration cases covering natural RTL and mixed text,
CSS directions, asymmetric padding and borders, and layout publication. Add a
Chromium-verified paint test for ordinary and nested LTR/RTL text masks.
2026-10-06 16:51:41 +08:00
ldm0 d8e7c37723 fix(layout): resolve atomic inline bidi levels through Parley
Resolve inline objects independently so an atomic sibling outside a closed
RTL context follows the surrounding text instead of the preceding RTL run.
Pin the Parley 0.11.1 fork repair and its shared Fontique source.

Declare atomic and transparent boundary roles at the Moli adapter, keeping
opening edges with the next participant and closing edges with the previous
item. Add 336 Chromium-verified geometry cases across document modes,
contexts, directions, breaks and atomic placement, including publication.
2026-10-06 16:51:41 +08:00
ldm0 ca0a4c81a2 feat(webmcp): add native form schemas, fill intents, and activity states
Introduce moli-webmcp for native form schema synthesis, complete input validation,
numeric conversion, and JSON-LD results. Preserve requested selection values in
fill intents so the renderer can apply them to current controls after author
input events.

Add native tool activity states, selector support, control helpers, and
a namespace-aware form index that includes open and closed shadow trees.
Pin the Stylo revision providing the activity pseudo-classes.

Validation on this commit tree: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings;
cargo nextest run --no-fail-fast.
Summary [  98.804s] 19248 tests run: 19248 passed, 16 skipped
2026-10-05 15:25:06 +08:00
ldm0 8fbf13300c fix(svg): reject trailing decimal path numbers 2026-09-30 22:57:34 +08:00
ldm0 74e924c864 refactor(history): extract native Window history storage 2026-09-26 01:38:23 +08:00
ldm0 7e40b17284 refactor(history): extract pure session history state machine 2026-09-24 02:39:25 +08:00
ldm0 c560d8fcfb fix(cssom): use native Stylo content alternative counters 2026-09-23 17:40:55 +08:00
ldm0 2d5b88b3dc fix(tls): use Apple SecTrust by default on macOS
Pin the curl-rust build that enables libcurl's Apple SecTrust verifier
with the existing AWS-LC TLS backend. Leave default CA options unset
so macOS trust comes from the operating system rather than an
automatically discovered certificate file.

Preserve explicit CA files and certificate environment overrides for
origins and HTTPS proxies, including explicit-file precedence over
SSL_CERT_DIR. Keep other platforms' existing trust configuration.

Add macos-latest CI coverage for local HTTPS, WSS, and
HTTPS proxy handshakes, including native-verifier diagnostics,
rejected certificates and hostnames, and CA overrides.

Use distinct CA and server identities, blocking accepted sockets, and
bounded fixture commands. Exercise the generated chains, nonblocking
socket transition, and process deadlines in portable regression tests.

Validated on Linux with cargo fmt --all, workspace Clippy with all
targets and features, and cargo nextest run --no-fail-fast:
18447 passed, 14 skipped. macOS-specific checks run in CI.

Refs #701
2026-09-23 14:07:31 +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 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 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 61dbf7ea3e feat(markdown): introduce moli-html2md 2026-09-16 16:07:15 +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