Commit Graph
239 Commits
Author SHA1 Message Date
ldm0 ee5279eb2c chore(release): update version to 1.1.24 2026-11-12 21:12:22 +08:00
ldm0 e7ac1c1a4a refactor(fetch): share response state across workers and caches 2026-11-12 16:31:24 +08:00
ldm0 7978356bfc refactor(fetch): introduce shared response metadata 2026-11-12 16:31:24 +08:00
ldm0 c67597a1c1 Introduce shared raw Inspector JSON envelopes 2026-11-12 02:01:08 +08:00
ldm0 7dc50cf065 refactor(forms): derive button type keyword parsing
Use the existing source EnumString declaration to parse button type keywords. Preserve ASCII case-insensitivity and the Auto fallback for missing or invalid values, with the native state tests already present on main.

Source-commit: c9576e0fc3
2026-11-11 06:29:26 +08:00
ldm0 ee0652d2ab chore(release): update version to 1.1.23 2026-11-09 19:54:48 +08:00
ldm0 3fb2d06b6d refactor(fetch): preserve typed resource loading errors 2026-11-08 22:37:11 +08:00
ldm0 d655fffcf5 chore(release): update version to 1.1.22 2026-11-06 02:56:04 +08:00
ldm0 8ed4df033b perf(crypto): specialize lowercase hex encoding
Share a private 16-entry lookup-table encoder for digest strings and
certificate common names. Preserve lowercase output, leading zeroes and
empty-input behavior.

Remove moli-crypto's direct data-encoding dependency and retain the
transitive lockfile entry required by the existing WebSocket stack.
2026-11-05 13:49:35 +08:00
ldm0 c305a83879 feat(webauthn): validate opportunistic credential signals in native bindings 2026-11-05 00:19:12 +08:00
ldm0 759a96edd9 fix(xhr): rewrite charsets only for UTF-8 text request bodies 2026-11-04 01:52:37 +08:00
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 52159a6a68 chore(release): update version to 1.1.21 2026-11-03 08:37:41 +08:00
ldm0 eac226d361 fix(stylesheets): evaluate parser media in the owning document 2026-11-03 07:53:58 +08:00
ldm0 d7d045a45a refactor(css): share native Stylo media query evaluation 2026-11-03 07:53:58 +08:00
Johannes Pfeiffer 3a785d5815 fix(stylesheets): recognize unconditional screen media lists 2026-11-03 07:53:58 +08:00
ldm0 feb019b3c6 fix(fetch): enforce CORP before redirect and response delivery
fix(fetch): enforce CORP before redirect and response delivery.

Extracted from development commit db59e77d3c5 and adapted to main.

Validation (32 build jobs and test threads): cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast.
     Summary [ 132.611s] 22172 tests run: 22172 passed (9 slow), 20 skipped
2026-11-03 07:18:55 +08:00
ldm0andneosun100 08e83bffc0 fix(cdp): randomize browser endpoints and page target identities
Generate a fresh browser WebSocket UUID per server and random 128-bit page
and tab target IDs for network CDP owners. Keep discovery URLs and protocol
target IDs consistent, and make clients discover endpoints instead of
relying on fixed paths.

Cover endpoint rotation, guessed and foreign ID rejection, and target
lifecycle behavior.

Co-authored-by: neosun100 <neosun100@users.noreply.github.com>
2026-11-03 05:53:28 +08:00
ldm0 fe15e4b73e fix(fetch): preserve raw Location bytes across redirect paths
fix(fetch): preserve raw Location bytes across redirect paths.

Extracted from development commit 7e5a9cbf8191b2ff2aa8afd9d6a298eb86e1aab1 and adapted to main.

Validation (32 build jobs and test threads): cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast.
     Summary [ 179.354s] 22167 tests run: 22167 passed (9 slow), 20 skipped
2026-11-02 02:03:43 +08:00
ldm0 3b76d63b3a refactor(sqlite): unify writeback failure handling 2026-11-01 04:03:38 +08:00
ldm0 843ddcc3f2 refactor(storage): retire protocol cookie profiles and close partitions once 2026-11-01 04:03:38 +08:00
ldm0 59743d9466 refactor(storage): remove the legacy JSON Web Storage backend
Keep SQLite for persisted localStorage and memory for sessionStorage. Remove
the unused JSON backend, serialization types, constructors, reexports, and
dependencies. Explicit external data imports still target SQLite; older JSON
profile files remain untouched without automatic migration.
2026-11-01 04:03:38 +08:00
ldm0 b5cf04a307 refactor(storage): switch SQLite namespaces without JSON migration 2026-11-01 04:03:38 +08:00
ldm0 6708ecf8ac feat(profile): stage and recover atomic SQLite cookie and localStorage migration 2026-11-01 04:03:38 +08:00
ldm0 2defc40820 feat(cookies): persist canonical cookie deltas in SQLite 2026-11-01 04:03:38 +08:00
ldm0 03e09d240c feat(storage): add asynchronous SQLite Web Storage areas and flush barriers 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 ef1f983b4b refactor(storage): share the partition SQLite runtime with IndexedDB 2026-11-01 04:03:38 +08:00
ldm0 2dd72ca458 fix(performance): distinguish cached and validated resource transfers
The existing from_cache flag collapses fresh local responses and revalidated 304 responses into the same state, producing incorrect Resource Timing transferSize.

Carry explicit cache state through buffered and streamed fetches, navigation, subresource snapshots and response interception. Resource Timing reports zero transfer for local hits, validation overhead for merged 304 responses, and body bytes plus header overhead for network responses. Cover disk and memory cache state in the HTTP timing fixture and native response tests.
2026-10-31 20:06:00 +08:00
ldm0 a587a5ecee perf(indexeddb): load Blob bodies on demand across consumers
Return immutable stored Blob/File sources without eagerly reading their bodies. Keep metadata, clone and slice lazy; route consumption through the owner, stream in chunks, and preserve handed-out data before destructive changes or retirement.

Adapt FileReader, Clipboard, WebSocket and OPFS together with the source representation. Share Fetch/XHR object-body extraction and propagate Blob and multipart read failures instead of string coercion. Preserve cancellation, ordering, backpressure, quota, permission/error semantics and realm cleanup across consumers.
2026-10-30 20:27:08 +08:00
ldm0 f802862181 refactor(indexeddb): use Tokio database owners and timed connection cleanup
Replace fixed worker shards and Lane locks with one async worker and one FIFO owner per database. Move synchronous SQL, connection work and catalog operations to the blocking pool. Drain accepted work and await final owner receipts before retirement or runtime teardown.

Use a single maintenance task with a short idle grace and at most one pending check per database, so slow owners cannot stall later rounds. Retry transient open failures in the same prepared generation while preserving terminal missing-file checks. Cover lifecycle races, low-FD creation and recovery, and single-worker host shutdown without new shared resource budgets.
2026-10-30 20:27:08 +08:00
ldm0 045041566f fix(storage): use temporary disk backing without a profile 2026-10-30 15:53:29 +08:00
ldm0 6522cf7fde chore(release): update version to 1.1.20 2026-10-30 03:35:12 +08:00
ldm0 1e12dbd313 refactor(indexeddb): drop legacy JSON key encoding 2026-10-30 03:31:32 +08:00
ldm0 068941f411 refactor(indexeddb): use SQLite across renderer storage entry points
Route the public manager constructor through the SQLite service, including protocol ephemeral browser contexts. Match injected bucket owners and run existing storage fixtures through native completions and the Page task dispatcher.
2026-10-30 03:31:32 +08:00
ldm0 3aceb8a3e2 fix(indexeddb): close partition SQL before releasing profile locks 2026-10-30 03:31:32 +08:00
ldm0 dab7ca2d97 feat(indexeddb): implement SQL transactions and chunked record storage 2026-10-30 03:31:32 +08:00
ldm0 c7ecc2e772 feat(sqlite): add bounded background executor and connection policy 2026-10-30 03:31:32 +08:00
ldm0 4ad79c72ae feat(indexeddb): define SQLite schema and binary key formats 2026-10-30 03:31:32 +08:00
ldm0 804bf1e357 fix(protocol): preserve native Document work before Page adoption
Capture weak command capabilities for the exact native Document behind early
Fetch pauses. Use them for request, response, authentication and cleanup work,
and restore pause records when dispatch is rejected.

Carry publication Page sources through owner-action projection. Register and
attach workers during handoff, revoke abandoned Page workers, and preserve
source identity for dialogs, choosers, popups and script navigation.

Record native navigation history once, retain observed URLs and titles at
adoption, and publish error-Document failure before its frozen frame commit.
Add controlled WebSocket regressions for handoff, cancellation and recovery.
2026-10-29 17:39:23 +08:00
ldm0 7192c36264 refactor(protocol): simplify state access and dispatch 2026-10-29 17:39:23 +08:00
ldm0 646d0206a5 refactor(protocol): route Target transports through ordinary command tasks
Decode legacy Target messages into ordinary commands with their real session,
renderer policy, cancellation and global reply route. Restore nested replies
for both immediate and background navigation completion without leaking ids.

Replace the raw command loop and exclusive Target execution body with the
shared owned command workflow. Retain accepted replies and renderer fences
across cancelled waiters and discarded state replies, and clear retired Fetch
lifetimes when the same in-flight entry transfers to protected recovery.
2026-10-29 17:39:23 +08:00
ldm0 6b308b10bd refactor(runtime): move worker Inspector completion into owned workflows 2026-10-29 17:39:23 +08:00
ldm0 0380308056 refactor(protocol): own Fetch navigation and cleanup workflows
Keep intercepted document requests, authentication, captured responses and native
commit/adoption in ordinary async workflows with exact navigation ownership.
Move child lifecycle waits and Fetch.disable cleanup out of actor completion,
retain source response obligations through cancellation, and preserve ACK timing.

Prepare owned session policy/script/worker cleanup and a synchronous state owner
with weak handles and compile-time borrowing constraints. Retain explicit legacy
inline drivers until disposal, frontend control and adapter paths migrate.
Preserve typed error contexts and share the inline Fetch driver with BiDi adapters
so they cannot wait on their own unserviced state mailbox.

Validation: cargo fmt --all; complete workspace Clippy with all targets/features
and warnings denied; root nextest 20,941 passed, 19 skipped; protocol doctests
1 positive and 4 compile-fail cases passed.
2026-10-29 17:39:23 +08:00
ldm0 6fdc19ce13 fix(fonts): load used fonts during resource processing
Discover font demand from computed styles without triggering layout.
Honor the FONT policy, recheck fallback demand before readiness, and
invalidate child-document scans for ancestor style and viewport changes.

Share rendered control labels, marker counters and text normalization,
including generated items, inline boundaries, leaf boxes and suppressed
contents. Cover Unicode subsets, readiness and zero layout passes.
2026-10-28 05:55:19 +08:00
ldm0 4b34263557 fix(pdf): avoid duplicate color glyph painting 2026-10-28 05:30:13 +08:00
ldm0 49318d2729 perf(pdf): cache glyph contours per document in Moli 2026-10-28 05:30:13 +08:00
ldm0 61a7cb1b65 refactor(pdf): delegate expanded glyph drawing to Krilla
Pin the shared expansion API and leave clipping and page ownership in the adapter. Krilla handles synthesis contours, paint order, document-wide reuse, and searchable text.
2026-10-28 05:30:13 +08:00
ldm0 22988c042e fix(pdf): share glyph ink measurement through AnyRender 2026-10-28 05:30:13 +08:00