Dialogs on a live page
Every <dialog> on a land-and-stream page carries data-preserve-attr="open"
(Mike, 2026-09-17). A push from the stream morphs the whole page; without the
preserve, the morph resets the open attribute and the dialog closes under
the person mid-form for a reason they cannot see. The contact and vote
dialogs are the exemplars.
Local draft state in a public dialog rides _-prefixed signals (off the
wire) kept by the Pro persist plugin —
data-persist:contact="{include: /^_contact\./}" on the form, the submit
handler clearing them and setting the dialog's own _sent flag
(__ifmissing, so a push cannot reset it) — view/layout.templ, gf-358.