Controls committed on blur, which turned leaving a field into a durable, revision-fenced document write the user could neither preview nor undo, and silently discarded a draft the field did not accept. A card's form now owns the staged text every control renders, and Save is the only point where drafts become writes. Reset stages the composed default the same way; an invalid draft blocks the save with its reason instead of being dropped; Discard drops the drafts; a collapsed card marks that it holds some. The Host stays the only authority on whether a value was accepted, so the save reads the section back and keeps the drafts of a save that did not land. |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| stress-tests | ||
| tests | ||
| index.html | ||
| package.json | ||
| tsconfig.json | ||
| vite.config.ts | ||