Repository navigation
Complete dynamic validation-message dismissal and wrapping #710
Description
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
ElementInternalsanchor 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.
Activity
Fix validation message text measurement (#710) (#711)
Dismiss stale validation feedback after mutations (#710) (#712)
Bound validation message wrapping and formatting (#710) (#718)