Commit graph

10 commits

Author SHA1 Message Date
Darkatse
d6fcd0bf9b test: run DOM tests in Chromium and WebKit
Every test that needs a DOM now runs in Rstest browser mode, once in each
engine the release WebViews use: Chromium (Windows, Android, HarmonyOS) and
WebKit (iOS, macOS, Linux). happy-dom has no layout, scrolling or default
actions, and several tests patched it to assert facts it lacked. happy-dom,
fake-dom, the node:module loader hooks, the vm-based frontend runtime and
the manual acceptance pages are removed; pure Node logic stays on node:test.

Tests load code the way the product does. Bundled code (first-party UI,
app-use, the editor bundle) is bundled by Rstest. Host JavaScript, which the
WebView loads by URL, is imported natively from a test server without
bundling or mocks, and code that needs the whole application runs in an
application frame. Layout tests use component styles and real sizes.

test:ui and test:browser become test:dom, which builds once and runs both
engines. CI installs both browsers on all three platforms, and the
performance baseline imports playwright and shares the test server's files.

Validation: types, lint, guardrails, contracts, Rust tests and clippy; all 345 DOM tests pass in Chromium and in four full WebKit runs with a clean console
2026-11-07 22:29:39 -05:00
Darkatse
07f8247cca refactor(platform): centralize native host identity
Derive platform and shell kind in Rust and inject them before WebView scripts.
Replace frontend UA guesses and pass host facts and IPC budgets to adapters.

Keep chat width in the frontend, preserve iOS policy initialization, and
restore the mobile third-party resource limit. Align docs and test fixtures.
2026-10-03 22:50:26 -04:00
Darkatse
715c7a837c fix(chat): simplify iframe recovery and resource admission
Keep source capture asynchronous and lifecycle changes synchronous. Refresh
sources when renderers replace or navigate frames, and admit only restorable
candidates while retaining accurate accounting for pages that cannot be evicted.

Tie owned Blob URLs to source lifetime, share parking operations, and replace
scheduler sequence tracking with native animation-frame cancellation.

Consolidate behavioral tests, add a browser smoke test for document and form
preservation, and streamline the embedded runtime maintenance guide.

Validation: pnpm run check (410 contract tests, 140 UI tests, Rust and Clippy);
26 focused tests; Chrome cold-recovery and failed-admission smoke tests.
2026-09-06 15:37:15 -04:00
SRsama
da1fe01fbe fix(chat): recover embedded pages without refreshing sibling frames 2026-09-06 17:49:19 +08:00
Darkatse
a7d977d24a feat(chat): add opt-in ChatSurface DOM virtualization 2026-07-22 20:00:03 -04:00
Darkatse
857453a510 fix(embedded-runtime): release parked iframes on slot disposal 2026-07-21 17:13:19 -04:00
Darkatse
7c090d0360 perf(chat): defer frontend source layout until renderer handoff 2026-07-13 22:45:50 -04:00
Darkatse
aebc1b742c fix (embedded runtime): When the soft-park pool contains no reusable iframes, hand control back to the upstream rendering pipeline for reconstruction. 2026-04-07 13:46:17 -04:00
Darkatse
ca257ba4fc feat(EmbeddingRuntime): Allow disabling EmbeddingRuntime optimizations. 2026-03-18 00:13:07 -04:00
Darkatse
fe8c332888 perf (Frontend): Introduce ER 3.0 "Rendering Transactions"; add support for LittleWhiteBox. 2026-03-12 21:55:37 -04:00