HMI Runtime / Operator
Engineering HMI surface
source=runtime preview: GET {runtime}/api/v1/screens + every 2 s GET …/tags.
- Bottom alarm dock: Ack / Shelve / comment (engineer/admin; viewer read-only)
- Operate panel (command token)
- Sparkline for selected tag:
GET …/tags/{id}/history?limit=60 - Canvas fits the panel (scale 0.15–1.5)
Values do not pass through React state: hmi-engine apply writes to nodes (hmi-paint.ts).
Operator shell
Role operator or ?view=runtime:
- No Projects / SurfaceNav
- HMI only (
chrome=operator: no Draft/New screen) - Runtime address resolved without
projectId runtime.unbound→ live polling stops; “No runtime is bound” band
There is no separate apps/hmi-web package.