Build dashboards you can actually look at and press

Widgets bind to a message name and read it live off the socket the editor
already had — lifted out of the flow editor so a dashboard route gets the
same values, which also gives the home page live data for free.

The input widgets close the loop the other way: a slider publishes into
the graph and whatever consumes that message runs. Verified end to end in
the running app — moving a slider set a flow input, and the stat bound to
what the flow computed from it followed.

View mode is plain CSS grid. A wall panel that only displays should not
download the code that lets someone drag things around, and it now does
not. Editing is a widget picker, a per-widget width control and a
settings card fed by the message catalog.

No new dependencies: the slider is a range input, the gauge is an arc,
and the markdown is a five-line subset. Charts are the one widget still
missing — they need a charting library and the chart tokens the design
guidelines reserved — so they are stored and validated but not offered.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011LF61rxW1FG5YCD2J9YqjY
This commit is contained in:
2026-08-16 09:33:02 +02:00
co-authored by Claude Fable 5
parent 895bd89b2b
commit be6d4fc13c
15 changed files with 1388 additions and 7 deletions
+7
View File
@@ -69,6 +69,13 @@ Deferring because out of scope is fine, but don't mention deferring than.
cannot be one — say so where the return value is mapped.
- PERF/FLOW: every save rebuilds the whole pipeline. Fine at the current flow count; rebuild
only the touched flow when it starts to show.
- FEAT/UI: the chart widget is stored and validated but not drawn — it is filtered out of
the editor's add row. Needs a charting library and the `--chart-*` tokens below.
- FEAT/UI: dashboard widgets are sized with a wider/narrower control rather than dragged.
A grid library would give drag-and-resize and per-breakpoint layouts; the document
already stores layout per breakpoint, so only the editor changes.
- FEAT/UI/MOBILE: dashboards render in the padded admin shell, so a wall panel gets the
sidebar, footer and a `max-w-7xl` column. A full-bleed shell would suit a panel better.
- FEAT/UI: reintroduce `--chart-*` tokens as one designed sequential scale when the first
chart lands. The node sparkline draws one series in `--primary` and needs none.
- PERF/UI: the app's entry chunk is 680 kB (210 kB gzipped) and exceeds the warning