Skip to content

Add typed semantic value and text selection state #760

Description

@wieslawsoltes

Parent: #262. Cross-repository consumer: SceneTech/AppScene#285. Release acceptance: #227.

Proven gap

The merged semantic snapshot/delta ABI carries role, name, formatted value, states, bounds and supported actions, but it does not carry typed numeric minimum/maximum/current/increment or text caret/selection state. AppScene therefore cannot truthfully expose AT-SPI Value or current writable Text state, and equivalent UIA/AppKit consumers cannot share one authoritative contract.

Required implementation

  • Add a versioned, size-negotiated semantic ABI revision with optional numeric range and text caret/selection fields while preserving v1 consumers and symbol fallback.
  • Populate numeric fields from native range/progress/spin/scroll controls and ARIA value attributes only when finite and internally consistent.
  • Populate caret/selection from live text-control state using the ABI's documented offset unit; expose explicit presence flags instead of sentinel inference.
  • Carry the same fields through bounded semantic deltas and include them in change detection.
  • Keep acquisition snapshot-only: no platform query may trigger cascade, layout, paint, or scene publication.
  • Extend native/header/WPT-derived contracts for malformed values, Unicode offsets, dynamic mutation, stale generations, teardown, caps and unchanged nodes.

Performance and compatibility gates

The additional fields are fixed-size, add no per-node heap allocation, preserve existing node/operation caps, and keep v1 headers/consumers source and binary compatible. A 16,384-node snapshot/delta gate records build/copy time, bytes, heap/RSS and unchanged-delta suppression.

No platform adapter may infer typed values from the formatted string.

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