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>
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Add native transaction admission across connections. Readers share a scope, conflicting writers wait for all older unfinished work, and disjoint stores remain independent. RAII leases and connection cancellation release work outside the coordinator lock without retaining storage partitions. Tests cover queued-writer fairness, middle cancellation, cross-thread completion and partition isolation. Backend/renderer enrollment is separate.
Use urlencoding's safe string decoder and reuse its output buffer. Preserve literal plus signs, malformed percent escapes, and lossy UTF-8 handling with end-to-end Basic authorization coverage.
Validate locales with the complete ICU parser and preserve the caller's original string. Reject unsupported syntax directly without custom parsing or compatibility rewrites, and cover valid locales, malformed tags, and the parser's supported range.
Use ICU punctuation and symbol categories with an ASCII fast path. Apply the same non-whitespace, non-punctuation rule to both delimiter boundaries and cover combining marks, format characters, symbols, and adjacent links with rendered round trips.