Skip to content

Add native input observability and Code OSS activation gates #100

Description

@wieslawsoltes

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:

  • AppScene submits P as key code 80 with Meta+Shift and accepts the event;
  • the V8 Runtime exposes key="P", code="KeyP", keyCode=80, which=80, and the expected modifiers to the workbench;
  • the target is Monaco's TEXTAREA during keydown and changes to the palette INPUT before modifier keyup;
  • a native screenshot shows the palette overlay and focused > 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

  • The generic shortcut reduction passes in native and portable Runtime lanes.
  • The packaged Code OSS palette renders nonzero results and remains visually comparable with Chromium.
  • Pointer acceptance is reported independently with exact target evidence.
  • Input diagnostics remain opt-in, bounded, redacted, and absent from normal steady-state cost.
  • Applicable macOS, Linux, Windows, WPT, performance, and package CI checks pass before consolidation.

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.

Activity

  1. 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
  2. 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
  3. wieslawsoltes commented on Sep 16, 2026

    @wieslawsoltes
    CollaboratorAuthor

    WebScene-owned generic shortcut coverage is now merged in #200 at 31d3bf5d.

    The merged change:

    • gives native modifier transitions browser-shaped Shift, Control, Alt, and Meta key/code identities instead of Unidentified;
    • adds a focused webscene_native_shortcut_activation CTest 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_activation and webscene_native_dom_punctuation_keyboard both 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 --check passed.

    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.

  4. wieslawsoltes commented on Sep 17, 2026

    @wieslawsoltes
    CollaboratorAuthor

    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.

  5. wieslawsoltes commented on Sep 17, 2026

    @wieslawsoltes
    CollaboratorAuthor

    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 at d77032df.

    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.

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

    vscode-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