openpencil/crates/op-host-web
Kayshen-X cfb2435fa3 fix(web): recheck bridge token at fallback completion to close late-init window
The pass-1 late-init fix captured `managed` before the fallback reset was issued,
so a host `init` landing DURING the reset round-trip (up to ~30s with the XHR
timeout + retry) left `handle_init` firing an unregistered hook (no-op) while
`complete()` re-checked the stale flag -- neither emitting `ready` nor arming a
hook that could still fire. Wedge.

Decide readiness from the LIVE token in `complete()`: token present since capture
-> emit `ready` directly; token arrived during the round-trip -> run the managed
recovery inline; token still absent -> register the one-shot LATE_INIT_HOOK. The
inline and hook paths share one guarded `run_late_init_recovery` (tokened reset ->
emit_ready), so `ready` cannot double-fire. Add two source-order structural tests
(handle_init emits no `ready` directly; completion re-checks bridge_token live).
2026-07-17 04:18:11 +08:00
..
assets/canvaskit fix(web): use browser fonts in canvaskit shell 2026-06-19 02:39:34 +08:00
pkg-ck fix(web): expand browser font fallback stack 2026-06-19 07:30:34 +08:00
pkg-webgl refactor(renderer): consolidate web shell on CanvasKit, retire skia path 2026-06-18 09:34:37 +08:00
smoke test(web): add rust web browser smoke 2026-06-20 19:24:59 +08:00
src fix(web): recheck bridge token at fallback completion to close late-init window 2026-07-17 04:18:11 +08:00
tests fix(web): recheck bridge token at fallback completion to close late-init window 2026-07-17 04:18:11 +08:00
.gitignore refactor(rust): rename openpencil-shell-web host to op-host-web 2026-05-16 23:42:49 +08:00
Cargo.toml feat(web): postMessage bridge with token bootstrap and conflict resolution 2026-07-17 01:06:14 +08:00