Story 3 — Presentation reads from the store
As someone opening a dashboard, I want the page to render from stored state rather than replayed messages, so that what I see matches what everyone else sees.
The story that fixes the bugs. Widgets render from stored state, the two paths that can disagree become one, and the old datastore goes away.
Acceptance criteria
Open questions
- The value model — what does an entry hold?
msg.payload isn't enough once the datastore goes. Templates bind arbitrary msg.*, chart trimming needs msg.topic, and form, table and chart all read whole messages back out. Needs its own design, and gates the rest of this story.
- Dynamic properties —
ui_update lives in a separate state store today. Fold it in or keep it separate?
- Context stores that cannot support a proxy — removing replay leaves those users with blank widgets on load. Keep replay as a fallback, or cut over and rely on the warning? Default configurations are unaffected.
Closes #939, #428, #913, #1251
Story 3 — Presentation reads from the store
The story that fixes the bugs. Widgets render from stored state, the two paths that can disagree become one, and the old datastore goes away.
Acceptance criteria
ui_updateare handled, and implement itOpen questions
msg.payloadisn't enough once the datastore goes. Templates bind arbitrarymsg.*, chart trimming needsmsg.topic, and form, table and chart all read whole messages back out. Needs its own design, and gates the rest of this story.ui_updatelives in a separate state store today. Fold it in or keep it separate?Closes #939, #428, #913, #1251