Control Seat V0.2.1
V0.2.1 pulls in a batch of bug fixes and quality-of-life work that showed up in dashboards using OpenBridge charts and in the AI agent workflow. The two headline additions are PI recorded-history push (Control Seat now backfills PI recorded values on startup and on driver reconfigure, so a dashboard opened for the first time in weeks doesn't stare at a flat line while the historian catches up) and OpenBridge chart backfill (OB chart-family components — bar, radar, line, area — now fetch a historical window on mount and stream live points on top, matching how the built-in Trends chart works).
What's in V0.2.1
PI recorded-history push
The PI driver used to only push samples that arrived during a live poll tick. On driver start, on a tenant reconfigure, or after a network blip that cost you a few minutes of ticks, the historian tables would sit empty for the gap and every downstream chart would show a hole. The driver now also pushes PI's own recorded history — its native archive of every point value change — over a configurable lookback window each time it (re)binds a tag.
You'll notice this on the historian side: after a fresh driver restart, opening a Trends chart on a PI tag immediately shows the last N minutes/hours of data (per the configured lookback) instead of building it up sample by sample from the moment the driver started. The historian's own retention still controls how far back you can query overall; this only fills gaps that PI was still holding onto.
Tag history batch API
New endpoint on the tagserver WebSocket for bulk historian requests: one round-trip subscribes to a batch of tag paths and streams back their history windows together, keyed by tag path. This is what the OpenBridge chart backfill (below) uses to load a dashboard-full of charts without N chatty per-chart round trips.
For custom integrations, the WebSocket accepts a new message type; older clients that don't know about it silently ignore the response frames, so nothing breaks on mixed-version clusters during rollout.
OpenBridge chart historian backfill
OpenBridge chart components (Bar, Radar, Line, Area, and the two Chart.js variants) now behave like the built-in Trends chart on mount: they issue one batched historian request for their bound tags, plot the returned window, and then stream live points on top of it. Before this release, they started from live-only and slowly accumulated a visible window over minutes.
The controller also refetches on window changes (Lookback / Interval trait edits) and on wake — a dashboard tab that was hidden and comes back to the foreground fast-reschedules its backfill so the chart doesn't stay stale.
AI agent: unpublish tool + streaming reliability
- New
unpublish_pagetool — the counterpart topublish_page. When you ask the agent to take a page offline, it now proposes an unpublish action that goes through the same PENDING_CONFIRMATION → user click approval flow as publish, so the editor never silently drops your public URL. - Streaming reliability — the Anthropic provider path now cleans up the SSE HTTP connection when a user closes their popover mid-turn (instead of leaking the socket until the parent HTTP handler times out). The loop runner also handles length-truncated responses more gracefully — a rare turn that hits the token cap now falls through to a re-prompt round instead of stalling.
- Prompt polish — small edits to the agent's system prompt to reduce the frequency of over-eager
update_componentcalls when a plainset_stylewould do.
Runtime bug fixes
go-websocket.jsreconnect hardening — the runtime WebSocket now surfaces bound-tag-lost and subscription-drop events as bad-quality on the affected tags rather than silently freezing the last-known value. Live charts on dashboards that had a WebSocket blip mid-session now show the reconnect visibly.- Custom Chart palette gains gridline + text color attributes —
data-chart-gridline-coloranddata-chart-text-colorlet you match custom charts to your dashboard's theme without editing the chart component's own defaults. - Tags panel: form modal validation — creating or editing a tag through the Tags panel now catches empty-name and duplicate-path errors before the request goes to the tagserver, so you get an inline error instead of a red toast several hundred milliseconds later.
Migration notes
- No CDK, Postgres, or ClickHouse migrations in this release. Deploy-only rollout.
- No config surface changes. PI history-push lookback is configured per driver in existing driver configuration; no new tenant-level setting.
- No new dependencies.
That's V0.2.1. Small enough to ship over the top of V0.2.0 without ceremony; the PI history push and OpenBridge backfill are the two things worth opening a dashboard to feel.