mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-03 02:27:57 +09:00
A new Form’s Progress message shows “Submitting…”, but Builder cannot edit that text because it sits directly beside the nested byte summary. The template now gives the message its own Span. Adding an element to an existing text container also wraps its existing text, using the same guard for Builder and MCP insertion and Builder moves. Closes #6616 Ref #6605 Ref #5992 ## Plan - [x] Reproduce the new Form structure through template, Builder, and MCP insertion. - [x] Give the submission text its own editable element while preserving the bound summary. - [x] Add Form regression tests, update docs, and verify the first change. - [x] Reproduce insertion into an existing text container through the shared runtime and MCP. - [x] Share destination-parent normalization across insertion and move, preserving authored fragment internals and replace behavior. - [x] Add regression coverage for editable text, rich text, undo, and insertion results. - [x] Review documentation impact of the shared guard. - [x] Run targeted tests, typecheck, lint, and applicable broader checks. - [x] Confirm required CI for the final commit. ## Scope and compatibility The guard acts on existing content in the destination parent when inserting an element. It does not rewrite descendants inside the inserted fragment, so intentionally mixed rich text remains as authored. Indexed replacement wraps surviving text; full replacement leaves no old wrappers. Generated spans and the parent rewrite are committed together, so undo and redo restore the original structure. Existing saved Forms keep their structure; no migration is included. The submission wording and bound byte summary stay the same. The shared runtime change adds 88 net non-test lines, above the 45–65 line estimate. The extra lines cover the two position formats used by moves and insertions, atomic parent patching, indexed replacement, generated ID checks, and insertion results. No schema, package, or production data changes. ## Verification Local: project-build 2,667 tests passed; Builder insertion 45 tests passed; project-build and Builder typechecks passed; targeted oxlint, oxfmt, and git diff checks passed. An independent Astra review found no blocking defects. Agent evaluations require separate approval and were not run. Required CI for the final commit passed: 35 successful checks and one skipped check. Builder end-to-end shard 8 failed once during generated Preview submission with status “unknown”; its targeted rerun passed without source changes.