Skip to content

Complete dynamic validation-message dismissal and wrapping #710

Description

@wieslawsoltes

Current validation-message checkpoint — 20 September 2026

Exact merged heads: WebScene a46b62e14eb197603f7e227c1558afb9088633b0; AppScene 97702daeb9ad71341ced7226f0aa966dc77ea53c; unchanged Code OSS 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c; local vscode-demo e4b98e5470cd7856aff3dfd6843c8e125d7db933 (clean, intentionally unpushed). Open consolidations remain WebScene #76 085bba760fa571c8f08ea866dc5dd1ec27c4d376, AppScene #65 ce66ef6ceb776b3f14e129f853bfc08b5c5e608c, and vscode-demo #1; do not merge them. One-agent mode is active.

The full implementation sequence is merged: interactive reportValidity feedback, text measurement, silent-state dismissal, hidden/inert/disabled retirement, bounded wrapping, host localization ABI, optional timeout scheduling and mutation-local ownership invalidation. The later form semantics stack is also merged. No validation-message implementation branch is active.

This issue remains open for direct browser/WPT, accessibility, pixel, lifecycle, performance, memory, package and cross-platform promotion. Those gates are deferred; no new pass is claimed.

Parent: #257
CSS epic: #235
Release epic: #227
Follow-up to: #708 / #709

Remaining implementation scope

The bounded interactive reportValidity() overlay now dismisses on input/change, explicit validity mutation, success/re-report, focus transfer, detach, navigation, and teardown. Complete the remaining dynamic-state edges without adding polling, sustained frames, or broad recascade work.

  • Dismiss or refresh the active message after silent programmatic value changes and relevant constraint-attribute mutations.
  • Retire the overlay when its target or ElementInternals anchor becomes hidden, inert, disabled, barred from validation, or otherwise loses focus eligibility while remaining connected.
  • Add bounded line wrapping and host-localizable message formatting without unbounded text measurement or DOM insertion.
  • Define a bounded optional timed dismissal policy that does not create idle frame demand and preserves screen-reader announcement timing.
  • Coalesce repeated mutations into at most one message-state publication per task/checkpoint.

No Code OSS source changes and no browser/CEF/Electron/WebView dependency. Use existing form-state, focus, layout, scene, and semantic invalidation routes.

Under the implementation-first directive, focused implementation may merge after diff checks. WPT/browser pixels, accessibility, lifecycle, performance, memory, package, and cross-platform gates remain under #257/#235/#227.

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