Skip to content

Preserve nested anchor activation and external-link disposition #531

Description

@wieslawsoltes

Parent: #268. Webview epic: #264. Release epic: #227.

Proven gap

Unchanged Code OSS intercepts trusted primary anchor clicks, keeps same-document fragments local, posts other links to the host, and prevents middle auxclick. Native WebScene currently queues every uncancelled primary HTTP(S) anchor through one external request, does not preserve target/modifier/middle disposition, ignores auxiliary cancellation/default behavior, and can walk from a child document into its retained iframe owner.

Focused implementation

  • Bound anchor lookup and fragment scrolling at the target document root.
  • Keep unmodified same-document fragments local, including decoded IDs, #, and #top.
  • Preserve _blank/named-target, Ctrl/Meta/Shift primary, and middle-click disposition on the existing typed external-URL request.
  • Populate the activated anchor node ID without widening request authority.
  • Honor auxclick.preventDefault() and never navigate for the right auxiliary button.
  • Preserve the existing HTTP(S)-only and 8 KiB URL limits; download anchors remain separately owned.
  • Add unchanged Code-shaped native and browser contracts.

Acceptance and deferred gates

  • Implementation based on WebScene main 488b9790e1b14c83f06cdcbfdd220cd53f318d79.
  • Focused regression sources authored.
  • git diff --check passed.
  • Execute Chromium/native contracts and exact unchanged webview acceptance.
  • Run lifecycle, performance, memory, accessibility, and package gates.

Execution is deferred under the current implementation-first direction.

Activity

  1. wieslawsoltes commented on Sep 19, 2026

    @wieslawsoltes
    CollaboratorAuthor

    Completed by #532 and merged to WebScene main as a5131262914c29bc94a8755b3a6ae2d14479488f. Same-document fragments remain local; target/modifier/middle disposition is carried on the bounded HTTP(S)-only external request; auxiliary cancellation and document boundaries are preserved. Only git diff --check ran; parent #268 owns downloads, drag/drop, accessibility, and product evidence.

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