Repository navigation
Add native input observability and Code OSS activation gates #100
Description
Activity
- changed the title
[-]Complete native DOM keyboard mapping for Code OSS shortcuts[/-][+]Diagnose Runtime input activation that does not update Code OSS UI[/+]on Sep 15, 2026 - changed the title
[-]Diagnose Runtime input activation that does not update Code OSS UI[/-][+]Add native input observability and Code OSS activation gates[/+]on Sep 15, 2026 WebScene-owned generic shortcut coverage is now merged in #200 at
31d3bf5d.The merged change:
- gives native modifier transitions browser-shaped
Shift,Control,Alt, andMetakey/code identities instead ofUnidentified; - adds a focused
webscene_native_shortcut_activationCTest for exact pointer targeting, element/Document/Window callback counts, Meta+Shift+P fields and modifiers, focus retargeting before P/Shift/Meta keyup, visible scene publication, Escape close/focus restoration, and bounded repeated dispatch; - retains at most 32 structural event snapshots in the fixture and records no text or clipboard content;
- registers the shortcut and modifier coverage in the component profile.
Validation:
- on rebased exact head
95903142,webscene_native_shortcut_activationandwebscene_native_dom_punctuation_keyboardboth passed on macOS arm64 Release; - the focused activation run before the mainline rebase processed 4,096 inputs in 0.115 seconds with a measured maximum dispatch of 0.498 ms against a 250 ms per-input ceiling;
- the portable V8/CMake contract runner passed on exact head
95903142: https://github.com/SceneTech/WebScene/actions/runs/35160656968; - profile JSON parsing and
git diff --checkpassed.
The opt-in host trace remains owned by merged AppScene#81; WebScene#185 already retained the bounded native stress/teardown and external symbol support. No second text-bearing input trace was added.
This issue remains open. With #98 and #99 closed, its remaining acceptance is downstream packaged Code OSS evidence: palette nonzero results, filtering and normal close; exact Welcome Open File, Explorer, and Chat pointer targets; dispatch-to-publication latency; and the editor text/clipboard duplicate-input gates. Any proven pointer defect should still split to its own focused issue.
- gives native modifier transitions browser-shaped
The final packaged Code OSS gate found a presentation delay after the shortcut contract merged in #200. Bounded evidence confirms this is not a WebScene key identity or dispatch regression:
- the complete Meta+Shift+P keydown/up sequence is accepted with the native window key and the WebScene view as first responder;
- the V8 shortcut changes focus and creates the palette DOM;
- the Cocoa host's input-driven display tick polls before the worker publication is ready;
- the later scene-publication wake can race AppScene's display-link parking, leaving the palette unpresented until the next native input requests a tick.
The next printable event therefore makes the palette visible and retargets only the first characters, matching the retained trace and step screenshots. Ownership is AppScene's Cocoa display-link gate, tracked on SceneTech/AppScene#67 with focused fix
29bbd425. No additional WebScene input workaround is proposed. After the AppScene fix is merged and repinned, the packaged #100 acceptance lane will rerun palette focus, filtering, external link, fullscreen, reload, and close.Current final-package acceptance and the resulting generic fix:
- Cmd+Shift+P opened a visibly populated command palette.
- Filtering exposed Preferences commands and executing
Preferences: Open Settings (UI)opened the Settings editor. - AppScene accepted all 116 retained native input records; the app closed normally with exit 0.
- The existing editor text/clipboard duplicate-input gate passed byte-exact copy and paste+copyback with 88/88 input records accepted.
- The Settings path then exposed
this.selectElement.add is not a function, owned by reopened Match absolute modal and nested Settings layout used by VS Code OSS #112.
#223 implemented generated
HTMLSelectElement.add()exposure and WHATWG option/optgroup insertion semantics, including element/index references, nested optgroups, browser-shaped errors, WPT coverage, and a bounded 4,096-insertion performance gate. Its directly related portable V8 runner passed and it merged atd77032df.The package used for this acceptance predates
d77032df. The next exact SDK/package rebuild must rerun Settings controls, image clipboard, pointer targets, and dispatch-to-publication evidence before this issue closes.- addedvscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integrationPlanned for the AppScene/WebScene VS Code OSS integration
on Sep 17, 2026
Updated finding
The original activation-failure hypothesis is disproved by bounded Runtime and computer-use evidence. Cmd+Shift+P activates the Code OSS command palette:
key="P",code="KeyP",keyCode=80,which=80, and the expected modifiers to the workbench;TEXTAREAduring keydown and changes to the paletteINPUTbefore modifier keyup;>input.The results list is blank because its tree renderer throws
e.twistie.classList.item is not a function. WebScene #99 owns that concrete DOMTokenList blocker. Earlier byte-identical screenshots did not distinguish a white empty overlay from the underlying white editor surface.There is no demonstrated general keyboard activation defect. Pointer targets must be retested after the named-grid (#98) and DOMTokenList (#99) fixes because malformed layout and failed tree rendering invalidate the earlier result.
Remaining useful scope
Keep this issue as the product-neutral input observability and packaged acceptance lane:
Keep the implementation generic in WebScene/AppScene Runtime and the acceptance harness. VS Code remains unchanged. The optional NativeWeb/Foco key whitelist remains a separate AppScene #27 compatibility improvement and was not on this packaged V8 path.
Acceptance
Current integration status — 18 September 2026
The generic activation and input fixes are merged. Cmd+Shift+P opens a populated palette, filtering reaches Preferences commands, 116 retained native input records are accepted, and the editor text/clipboard duplicate-input gate passes. The retained package predates the merged select fixes and cannot close this issue.
Remaining work is package acceptance: rebuild exact current AppScene/WebScene inputs, rerun Settings controls with #112, image clipboard, pointer targets, dispatch-to-publication latency, and cross-platform input diagnostics. #260 owns the broader workbench scenario; this issue supplies its bounded input evidence and does not duplicate workbench lifecycle ownership.
Focused reusable defects continue to merge upstream after their direct gates. AppScene #65, WebScene #76, and vscode-demo #1 remain consolidation records rather than implementation branches.