Skip to content

[Epic] Complete remaining Code OSS native release acceptance #227

Description

@wieslawsoltes

Exact merged-head diagnostic checkpoint — 21 September 2026

Unchanged Code OSS 645f29cc is pinned locally with merged WebScene 5b4739c8 (native stack #902, focused PRs #899#901 merged) and merged AppScene 36d7a82e (focused PR #403 merged). The demo branch is clean at local commit 074d2cbe, unpushed, with Actions disabled. No focused PRs remain open; keep WebScene consolidation #76, AppScene consolidation #65 and vscode-demo integration #1 open/unmerged.

A clean 2,909-file SDK from those exact heads passed native CTest, macOS runtime profile, installed CLI verification and release preflight. The CLI published a signed 709 MiB local diagnostic Release at vscode-demo/dist/appscene-release-36d7a82-5b4739c8-markdown/Code OSS AppScene.app; strict codesign and the installed-resource callback contract pass. Native computer input opened real remote beta/README.md and five Explorer rows. A Markdown Preview editor then appeared with a blank white pane; the current trace does not isolate the next nested resource/message failure, and the shortcut sequence also pasted clipboard text into the fixture editor. This is not a qualified full release. AppScene #402/#398 and WebScene #264/#267 stay open.

Resume with controlled native Preview invocation and nested resource/worker/message tracing; require actual painted Markdown, Chromium-matched geometry, security, lifecycle and performance. Then continue Explorer first-child paint #252/#243 and AppScene picker #131, remote Save As/recovery #269, terminal #244, CSS #235, accessibility/Chat, Linux/Windows WPT, bundle-size and release-wide CI gates. The authored open-issue inventory and exact local evidence are in vscode-demo/docs/open-issue-plan.md and docs/validation/markdown-preview-prelude-080ee9c-20260921.md. No Electron/CEF shell or Code OSS source rewrite was introduced.

Goal

Run unchanged VS Code OSS 1.137 as a native AppScene/WebScene application with its Node server and extension host, without Electron, Chromium, CEF, WKWebView/WebView, a browser process, or a C++ port. Reusable behavior belongs in AppScene or WebScene; vscode-demo owns only product configuration, evidence, and the unmerged integration branch.

This is the top-level native GitHub epic for all remaining integration-owned work.

Planning status — investigation gate complete

Four parallel audits completed before implementation resumed:

  1. all current AppScene/WebScene issues, PRs, coordination comments, release gates, desktop-capability decisions, and product surfaces;
  2. CSS/features/visual-tree/performance under [Epic] CSS features, compatibility, validation, and performance #235;
  3. webviews/iframes/Markdown and every unchanged nested-document consumer under [Epic] Qualify unchanged Code OSS webviews and nested document contexts #264;
  4. files/folders/workspaces/save/recovery under SceneTech/AppScene#122.

Every reproduced gap and required release surface now has one authoritative issue, repository owner, dependency position, proposed fix direction, browser/WPT/native/product evidence, numeric performance/lifecycle limits, and proposed PR-stack grouping. Duplicate ownership was explicitly rejected. The only cross-cutting overlap with special handling is #263/#236: #236 is the authoritative CSS capability source and #263 must ingest it with revision and denominator checks.

Current inventory:

Historical exact inputs and coordination state

This preserved checkpoint predates the authoritative managed section above.

The exact AppScene/WebScene SDK archive from the current submodule inputs contains 2,859 verified files and passes producer, CLI install/verify/doctor, relocation, read-only, external-consumer, lifecycle, and integrity checks. It is not release-qualified because #237 currently fails on WebScene main. No .app is promoted from these heads.

Native hierarchy and ownership

Direct children of #227

CSS epic #235

Open owners remain #237#244, #44, #100, #112, and #246; #236 completed through PR #271. The completed audit added:

#236 dependency order zero completed through PR #271 at aa121fe. #237 coordinates with PR #245; Wave 1 #257 waits for that draft to reconcile. #238/#239/#240/#242 remain the sole owners of general cascade, CSSOM, layout, and animation work.

Webview epic #264

Ordered native children:

  1. Expose HTMLIFrameElement.sandbox for Code OSS webviews and Markdown Preview #253HTMLIFrameElement.sandbox IDL, live token list, enforcement, navigation, teardown.
  2. Complete ServiceWorker control and client lifecycle for Code OSS webviews #265 — ServiceWorker registration/control, Clients, controller lifecycle.
  3. Stream and cache admitted Code OSS webview resources #266 — Web Streams, CacheStorage, FetchEvent, admitted/ranged/cached resource broker.
  4. Enforce secure nested-document lifecycle for Code OSS webviews #267 — nested src/srcdoc/fake.html realms, open/write/close, origins, CSP, Permissions Policy, replacement, teardown.
  5. Complete nested-webview interaction, find, focus, and accessibility handoff #268 — find/Selection, focus/input, clipboard, links/downloads, reload, and accessibility handoff.

The exact first failure remains unchanged Code OSS calling iframe.sandbox.add(...) while WebScene exposes undefined. The deeper audit proves sandbox alone is insufficient: the unchanged prelude then requires ServiceWorker control, resource streaming/cache, secure nested-document lifecycle, and interaction behavior. Markdown Preview is the first fixture, not the scope boundary.

File/workspace epic SceneTech/AppScene#122

Native children are AppScene#123 (typed native panels/grants), AppScene#124 (owned-window navigation), and WebScene#269 (file model/save/revert/hot-exit recovery). Related WebScene owners remain #247, #248, and #252.

WebScene #247 is complete. The real remote dialog enumerated and accepted the isolated fixture; a ready-workbench sample reached visibility in 901.25 ms with 122 maximum dialog nodes. Exact Node 24.18.1 evidence retained BrowserHostService.openWindow call 1 with vscode-remote://127.0.0.1:64170/private/tmp/webscene-247-fixture/beta, folder kind, and all force-new/reuse/add flags false. No generic engine defect was found. AppScene#124 and #252 now own navigation and new-document workspace/provider/Explorer bootstrap.

Four-agent delivery schedule

No agent shares implementation files with another active lane. Before starting/rebasing and immediately before merging, each lane rescans open issues, PRs, and recent comments.

Wave 0 — current foundations

Agent lane Work Exit condition
Webview #253 Stack A: sandbox IDL/live token semantics → security/navigation/teardown → WPT/browser/native/Markdown proof Unchanged iframe creation passes with bounded teardown; focused cumulative top ready to merge
Files/workspaces Complete: #247 exact selected URI/openWindow handoff Exact target retained; #247 closed with Node 24.18.1 evidence and no engine defect
CSS/capability Complete: #236 schema/report/validator merged through PR #271 as aa121fe; no #245 structural file changed Native 32/32 and Chrome 25/32 with all seven failures retained; #263 consumes the versioned CSS slice and #245 can be requalified independently
Root/release harness #263 reachability ledger foundation plus #259 scenario/readiness/visual-manifest inventory; keep #227 and vscode-demo #1 synchronized All accepted scenarios and evidence denominators are machine-readable and compact

Wave 1 — unblock complete editor surfaces

Wave 2 — secure behavior, durability, and measured performance

Wave 3 — cumulative unchanged-product acceptance

Close only from exact package evidence:

Wave 4 — release production

SceneTech/AppScene#130 consumes one exact clean set of merged AppScene/WebScene heads and unchanged VS Code:

  1. build/install/relocate/read-only-qualify one SDK through the AppScene CLI;
  2. build, run, publish, sign, and verify the .app, ZIP, and DMG;
  3. enforce architecture/dependency/license/inventory, deep signature, archive round trip, zero-browser, feature-preserving size, peak disk, retained-artifact, and package-time budgets;
  4. run complete editor/workbench, visual, file/workspace/save, webview, terminal, workers/extensions, crypto/MCP, accessibility, CSS/performance/memory, reload/close/crash/SIGKILL/descendant-cleanup gates;
  5. promote only a fail-closed green package and retain compact checksummed evidence.

PR stacks and merge policy

  • Each issue body defines its proposed stack. Related dependent PRs use GitHub native stacks; validate the cumulative top and merge the stack atomically.
  • Merge a focused AppScene/WebScene fix as soon as its directly related local and runner gates pass. Cancel duplicate lower-layer, unrelated broad, superseded, and post-merge jobs.
  • Every generic fix needs a browser-oracle/WPT-derived regression, native contract, and bounded performance/allocation/lifecycle gate for the changed hot path.
  • AppScene Stream native application video directly from file and network URLs #65, WebScene Add Code OSS browser and native desktop compatibility #76, and vscode-demo Typescript #1 remain draft/open/unmerged. vscode-demo Actions remain disabled. Local vscode-demo commits remain unpushed.
  • No implementation, test, CI, SDK, or packaging logic may remain only on a consolidation branch; reusable behavior moves upstream first.

Release quality gates

Evidence must name exact source, SDK, WPT/browser, OS, font, locale, theme, DPR, hardware/runner, and package checksums. Reports expose pass/fail/skipped/unavailable/total denominators; missing or stale evidence fails closed.

Required gates include semantic/computed state, geometry, pixels, focus/accessibility, event order, security/origin/admission, affected cascade/layout/scene counters, wall time, allocations, queue high-water marks, publications/frames, idle CPU, peak/steady RSS, repeated-cycle live-count return, no memory slope, installed/relocated/read-only SDK consumers, supported release RIDs, feature-preserving size, bounded disk/artifacts, deep signing, lifecycle, and static/runtime absence of embedded browser technology.

Ownership

  • WebScene: V8, DOM/HTML, Web APIs, CSS/layout/paint, workers/ports, iframe/service-worker contexts, scene publication, and product-neutral performance contracts.
  • AppScene: SDK/CLI, native host/window lifecycle, panels/grants, native accessibility/desktop dispatch, packaging, signing, Companion lifecycle, and release production.
  • vscode-demo: unchanged-product configuration, deterministic fixtures, Chromium/AppScene comparison, final package evidence, and the open consolidation PR.

Focused issues close only from retained exact evidence. This epic and all three consolidation PRs remain open until the final installed-SDK Release matrix is green.

Active synchronization — 17 September 2026

#276/#278 and #285 are merged. #281 remains draft/open behind #288/#245; #266 is held until that control-plane top merges. Workspace contents pass. #287 fixes its direct FileReader gate locally but is product-insufficient. Exact #81 instrumentation proves the local iframe/Worker/transferred-port path and creates #289 for distinct remote protocol delays (transport→Ready 1,177 ms; Ready→Initialized 4,379 ms); Explorer output follows AgentHost connection by 99 ms. Dependency order is #289#280#252. #288 remains the separate #281 blocker. CSS #286 is the 33rd #235 child and remains isolated from #245.

Current integration checkpoint — 19 September 2026

WebScene main is 8447e25d24b13dce0af6fc47fa02714ca8119cae and AppScene main is 7c067b3c77d53e5804d3ef756e53ef46516d5c50. Consolidations remain open and unmerged at WebScene #76 8df7d2bb, AppScene #65 459639d3, and vscode-demo #1; local vscode-demo 749e204c remains unpushed with Actions disabled.

The Linux exact-device allocator, synchronized queue access, Skia Graphite profile, single-plane external-image draw, Xlib swapchain present and completion retirement stack is merged through WebScene #654 and AppScene #270. AppScene #271/#272 merged the native X11 CLIPBOARD/PRIMARY text service. WebScene #655/#656 and AppScene #273/#274 complete bounded PRIMARY middle-click reads; WebScene #657/#658 and AppScene #275/#276 complete automatic PRIMARY publication; AppScene #277/#278 and #279/#280 complete inbound/outbound Xdnd; WebScene #659/#660 animation direction is merged; the sole lane is WebScene #661 backwards/both fill-mode support.

Full product, visual, WPT, performance, accessibility, file/workspace/webview/terminal, lifecycle, package-size, signing, VM/computer-use, CI and zero-browser Release gates remain open. The latest implementation wave used source diff checks only under the agreed fast merge policy.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    epicTracks a coordinated set of focused issuesvscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integration

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions