Skip to content

Present bounded interactive reportValidity feedback - #709

Merged
wieslawsoltes merged 1 commit into
mainfrom
feature/interactive-constraint-validation-708
Sep 19, 2026
Merged

wieslawsoltes merged 1 commit into
mainfrom
feature/interactive-constraint-validation-708

Conversation

@wieslawsoltes

@wieslawsoltes wieslawsoltes commented Sep 19, 2026 •

Copy link
Copy Markdown
Collaborator

Active implementation checkpoint — 19 September 2026

Exact upstream heads are WebScene 81811bbf733ea5e2b19488e01b6c8839fb1d40ba and AppScene fe14e7b775d347693d6526b7c4d49c0dca082e52; unchanged Code OSS is 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c. Local vscode-demo is d27d1316f8fbe66d36350eecdc79ba0f23d9e692 and remains intentionally unpushed with Actions disabled.

Merged Linux exact-device work remains complete through WebScene #654 and AppScene #270. Linux CLIPBOARD/PRIMARY and inbound/outbound Xdnd are merged through WebScene #658 and AppScene #280. CSS animation direction #659/#660 and fill modes #661/#662 are merged. The current-main native compiler failure exposed by #662 is tracked and fixed by #663/#664; generated selectors now preserve compiled namespace-aware compound and attribute data. #666/#667 binds the remaining native test consumer to the namespace-aware compiler API, and #668/#669 restores complete structured selector parity comparisons. #665/#670 implements demand-free animation pause/resume, and #671/#673 enforces parser package size with both ratio and absolute byte budgets, and #672/#678 implements bounded eight-track animation-list coordination; #674/#681 implements zero-time/count semantics, #679/#680/#682 updates the native stale-track contract for inactive authored list slots, and #675/#683 adds bounded translate/scale keyframe sampling and retained paint composition. #684/#685 refreshes the generated Code OSS ledger and exact property identity count exposed by the post-merge main jobs. #676/#686 adds bounded retained ::before/::after animation lifecycle, scoped paint, owner events, cleanup, and demand-free settled state. Full-V8 package portability epic #687 is implemented by #688/#691 for GCC, #689/#692 for MSVC enum/ABI boundaries, #690/#693 for bounded embedded source literals, #694/#695 for const cascade roots, and #696/#697 for native test syntax. #677/#698 adds bounded retained WAAPI with document/element caps, lifecycle settlement, and demand-free inactive states. #699/#700 restores the 384-byte native document footprint by moving WAAPI-only maps and event state behind one lazy auxiliary allocation. #476/#702 adds bounded asynchronous document fetch and stale-generation suppression for dynamically inserted CSS imports, complementing #480/#484 authored-import reflection. #701/#703 adds browser-shaped Worker options, inherited credential policy, final response/CORS enforcement, generation-safe failure, and bounded slot retirement. #704/#705 adds an optional bounded redirect ledger and per-hop Worker status/scheme/loop/downgrade/origin/CORS/credential checks. #706/#707 extracts bounded request-header ABI v5 onto current main; AppScene #281/#282 and vscode-demo #10 populate the ledger in their host providers. #708/#709 adds interactive reportValidity feedback; #710/#711 repairs its native text-measurement compile break, and #710/#712 dismisses stale feedback after programmatic and eligibility mutations.

One-agent mode is enforced. One-agent mode remains enforced. The sole implementation lane is idle after #712; no other implementation agent is active. Static fill does not sustain frame demand, and new animation work must preserve that bound without per-frame cascade, selector, or visual-tree churn.

Consolidations remain open and unmerged: WebScene #76 at 8e435212df2ec20c339a37d1cb24a11ad4c4e055, AppScene #65 at 0c018306458050a66a19d2c84abd3cf65a20832c, and vscode-demo #1. WebScene #662 and #681 portable V8 contracts passed. Focused #682 native document and Linux SDK runs 35448768204 and 35448768281 passed; #683 portable V8 contracts passed. The failed #683 current-main generated-ledger/property-count gates are repaired by #684/#685, and Linux CI job 105914816775 passed. Full-V8 Linux/Windows RID portability repairs are merged through #691-#697; current-main CI/NuGet runs 35456365243 and 35456365245 are retained; superseded PR, previous-main, and consolidation runs were cancellation-requested. AppScene #282 current-main companion run 35454940645 passed.

Ordered next work: current-main CI/package triage, then the remaining bounded validation wrapping/localization policy and focused CSS and acceptance backlog, then physical Linux pixels, synchronization/device-loss/resize/soak/performance, VM/computer-use, and unchanged Code OSS Release qualification. Rich clipboard MIME, MULTIPLE/SAVE_TARGETS, and the recorded desktop-service/cross-platform backlog remain open.

Problem

Constraint validity and form submission blocking are implemented, but reportValidity() behaved like noninteractive checkValidity(): it did not focus the first unhandled invalid control, present a validation message, or announce it semantically.

Change

  • Keep checkValidity() and submission validation noninteractive.
  • Dispatch ordered cancelable invalid events for explicit reporting and choose the first connected, focusable, uncanceled target.
  • Preserve ElementInternals validation anchors for direct and form reporting.
  • Focus once and retain one lazy document-owned message capped at 1 KiB.
  • Render one validation overlay with existing scene commands and publish one newest bounded semantic alert.
  • Dismiss on target input/change, custom validity mutation, success/re-report, focus transfer, detach, navigation, or teardown.
  • Add no ABI, frame loop, repeated cascade, or retained visual-tree churn.

Deferred edges remain recorded on #708: silent programmatic constraint/value changes dismiss on revalidation or focus change, hidden/inert changes dismiss on revalidation, and rich wrapping/localization/timed dismissal remain follow-up work.

Validation

git diff origin/main..HEAD --check passed. Builds and runtime tests were intentionally deferred under the implementation-first directive. WPT/browser pixels, keyboard/accessibility, lifecycle, performance, memory, package, and cross-platform gates remain under #257/#235/#227.

Closes #708

@wieslawsoltes
wieslawsoltes merged commit c0a40d3 into main Sep 19, 2026
2 of 7 checks passed
@wieslawsoltes
wieslawsoltes deleted the feature/interactive-constraint-validation-708 branch September 19, 2026 16:46
This was referenced Sep 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Present bounded interactive reportValidity feedback

1 participant