You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Current nested-lifecycle checkpoint — 19 September 2026
Main is 2b64b08965aeba5ecbd33fcc0bd1beaaceaf6243. The audit found a real missing lifecycle contract after merged Permissions Policy, script-CSP, generation and pagehide work.
Active branch feature/iframe-beforeunload-lifecycle-267 in /Users/wieslawsoltes/GitHub/.worktrees/WebScene-beforeunload-267, exact base 2b64b089, implements synchronous cancelable nested beforeunload before authored iframe navigation/document replacement. A veto must preserve the current realm, document generation and pending tasks; reentrant self-navigation is blocked without blocking sibling document work. No commit exists yet.
Only git diff --check runs. WPT-derived regression, unchanged Markdown Preview and the full nested-consumer matrix remain authored/scheduled but unexecuted.
After service-worker readiness, unchanged browser/pre/index.html creates a nested iframe, sets a sandbox and Permissions Policy, navigates it to fake.html, reads contentWindow/contentDocument, then calls document.open(), write(), and close() with extension HTML. Updates replace the active frame. The prelude observes DOMContentLoaded/load/beforeunload, posts messages across the frame, uses ResizeObserver, preserves scroll, and removes stale frames.
WebScene's capability record at b81f594c explicitly limits iframe support to an initial same-origin document and leaves navigated src/srcdoc, history, sandboxing, origin transitions, cross-origin access control, complete load/error order, repeated-navigation teardown, and arbitrary iframe rendering outside the claim. No CSP enforcement implementation was found in the audited runtime. #253 owns the sandbox DOMTokenList and token semantics; this issue owns the resulting browsing-context, document, origin, CSP, Permissions Policy, navigation, and replacement behavior.
The audited product endpoint is an origin-partitioned https://{{uuid}}.vscode-cdn.net/... URL and the outer workbench CSP permits https://*.vscode-cdn.net frames. Native acceptance must preserve equivalent origin separation even when packaged transport is not HTTP.
Selected HTML iframe/navigation, WindowProxy, origin, CSP, sandbox, Permissions Policy, DOM parsing/writing, and lifecycle WPTs pass with checked-in Chromium results and explicit exclusions.
open/write/close, update replacement, reload, detach during load, error, beforeunload/pagehide, observer disconnect, and shutdown produce browser-order events and reject callbacks from stale generations.
100 create/load/write/replace/reload/detach cycles leave zero old realms, WindowProxy targets, documents, observers, ports, fetches, and scene nodes. A 1 MiB HTML update reaches load and first stable scene at p95 <= 250 ms; retained growth after warm-up <= 8 MiB.
Markdown CSP blocks disallowed scripts/resources while permitting its nonce, styles, images, and local-resource origins; sandbox flags never silently broaden access.
The same contracts cover notebook output, custom editor, webview view/panel, release notes, chat/MCP, Mermaid, and Simple Browser documents.
Proposed PR stack
navigation and WindowProxy/realm identity;
document open/write/close and replacement lifecycle;
origin/CSP/Permissions Policy enforcement;
teardown/performance/WPT and unchanged webview acceptance.
Current nested-lifecycle checkpoint — 19 September 2026
Main is
2b64b08965aeba5ecbd33fcc0bd1beaaceaf6243. The audit found a real missing lifecycle contract after merged Permissions Policy, script-CSP, generation andpagehidework.Active branch
feature/iframe-beforeunload-lifecycle-267in/Users/wieslawsoltes/GitHub/.worktrees/WebScene-beforeunload-267, exact base2b64b089, implements synchronous cancelable nestedbeforeunloadbefore authored iframe navigation/document replacement. A veto must preserve the current realm, document generation and pending tasks; reentrant self-navigation is blocked without blocking sibling document work. No commit exists yet.Only
git diff --checkruns. WPT-derived regression, unchanged Markdown Preview and the full nested-consumer matrix remain authored/scheduled but unexecuted.Parent epic: #264. Top-level release epic: #227.
Proven gap
After service-worker readiness, unchanged
browser/pre/index.htmlcreates a nested iframe, sets a sandbox and Permissions Policy, navigates it tofake.html, readscontentWindow/contentDocument, then callsdocument.open(),write(), andclose()with extension HTML. Updates replace the active frame. The prelude observes DOMContentLoaded/load/beforeunload, posts messages across the frame, uses ResizeObserver, preserves scroll, and removes stale frames.WebScene's capability record at
b81f594cexplicitly limits iframe support to an initial same-origin document and leaves navigatedsrc/srcdoc, history, sandboxing, origin transitions, cross-origin access control, complete load/error order, repeated-navigation teardown, and arbitrary iframe rendering outside the claim. No CSP enforcement implementation was found in the audited runtime. #253 owns the sandbox DOMTokenList and token semantics; this issue owns the resulting browsing-context, document, origin, CSP, Permissions Policy, navigation, and replacement behavior.Dependencies and boundaries
https://{{uuid}}.vscode-cdn.net/...URL and the outer workbench CSP permitshttps://*.vscode-cdn.netframes. Native acceptance must preserve equivalent origin separation even when packaged transport is not HTTP.Acceptance
src,srcdoc,fake.html, base URL, initialabout:blank, realm/constructor identity,contentWindow/contentDocument,parent/top/frameElement, same-origin access, opaque sandbox origins, cross-origin denial, postMessage target/origin, CSP nonces/sources, permissions, and links/download/navigation admission.open/write/close, update replacement, reload, detach during load, error, beforeunload/pagehide, observer disconnect, and shutdown produce browser-order events and reject callbacks from stale generations.Proposed PR stack