Panels: per-device dashboard sets, paired by code
Playwright Tests / test-playwright (1, 2) (push) Canceled after 0s
Playwright Tests / test-playwright (2, 2) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 0s
Playwright Tests / merge-reports (push) Canceled after 0s

A panel is one screen and the ordered set of whole dashboards it shows, so a
hallway tablet and a workshop tablet carry different sets without either
dashboard knowing about the other. More than one and the device draws a rail
to switch between them — the same rail the editor puts on screen, because the
wall has it and it takes room off the canvas.

A screen has no keyboard, so it pairs rather than logs in: it shows a
six-character code, somebody approves it against a panel from the dashboards
overview, and the credential that mints reaches that panel's published
dashboards and the message endpoints its widgets speak, and nothing else.
Deleting the panel revokes it.

Closes the per-device view and the kiosk credential; supersedes the
multi-page/multi-section UI, since a page is now a dashboard of its own.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AHpLJHozysQXjsxAyU1WHj
This commit is contained in:
2026-08-20 16:23:36 +02:00
co-authored by Claude Opus 5
parent eae6758c5a
commit c0ff1cd5c5
26 changed files with 1696 additions and 40 deletions
+10 -1
View File
@@ -273,7 +273,16 @@ Shares components with the admin view. See `docs/architecture/structure.canvas`
transport and credentials only: the InfluxDB node runs Flux handed to it
and echoes the rest, and Python nodes either side build the query and shape
the answer — which is what keeps the widget ignorant of the database
- [ ] Per-device view
- [x] Per-device view: a *panel* is one screen and the ordered set of whole
dashboards it shows, so a hallway tablet and a workshop tablet carry
different sets without either dashboard knowing about the other. More than
one and the device draws a rail to switch between them — the same rail the
editor puts on screen, because the wall has it and it takes room off the
canvas. A screen has no keyboard, so it pairs instead of logging in: it
shows a six-character code, somebody approves it against a panel from the
dashboards overview, and the credential that mints is scoped to that
panel's dashboards and the message endpoints its widgets speak. Deleting
the panel revokes it
## Phase 5 — Website and docs