Control Seat V0.1.9
V0.1.9 takes the OpenBridge component library out of beta. The industrial component set is now first-class alongside the built-in charts — the blocks popover has dedicated Charts and Equipment tabs, and the previous Chart.js charts moved to a Legacy tab. Two brand-new OpenBridge charts land in this release (Bar and Radar), and the pipes editor gets a big overhaul with connection stickiness, flow animation, and medium-based coloring. On the back end, the Trends Workbench batches its condition-capsule fetches into one round trip, cron triggers finally match on the right timezone, and a stack of small flow, tag panel, and editor fixes ride along.
What's in V0.1.9
OpenBridge out of beta
The blocks popover restructures around the shape of the library. Previous tabs [All, Components, Assets, Beta] become [All, Components, Charts, Equipment, Assets, Legacy]. Beta labels are gone; the Chart.js charts are labeled Legacy so you can still find them but they're no longer the default.
Two new OpenBridge chart components:
- Bar Chart (
cs-obc-bar-chart) — the migration target for the legacy Chart.js bar type. OpenBridge visual language, same Queries panel, same tag-binding model as the other series charts. - Radar Chart (
cs-obc-radar-chart) — one polygon over N bound tags, with min/max range, unit, text color, point size, line width, and stroke color traits. Built specifically for Control Seat because upstream OpenBridge doesn't ship a radar.
The existing OpenBridge series and snapshot charts pick up a large trait set to reach parity with the legacy Chart.js charts: Chart Title (with font size), text/grid color, line width, point size, dash presets (solid, dashed, dotted, dash-dot, long dash), Fill Under Line, Break Line (gaps), Y-axis label, edge time labels, tooltip toggle, default pan-vs-zoom mode, JSON markers, JSON Y-Axes, Pen Styles, Pen Table Columns, plus start angle and cutout radius for donut. Swapping a legacy Chart.js chart for an OpenBridge one is now a one-click migration on shape and configuration.
Under the hood, adaptive HH:MM:SS/HH:MM tick formatting is now driven by the tick array (not the scale span), so a zoomed-in view no longer shows repeated hour labels; the "phantom 0–1 y-axis" that Chart.js drew on custom-id axes is fixed; legend click-to-hide finally strikes through the hidden pen and fades the legend item.
Pipes editor overhaul
The pipes editor gets the most concentrated work of the release. Six changes worth calling out:
- Connection stickiness — pipe endpoints ratio-anchor to component bounding boxes and survive both move and resize. The single most common complaint from Ignition users about the previous pipe editor is fixed.
pipeMedium— pick normal, empty, water, or air; the OpenBridge-style body color follows automatically.visualStyle— three visual styles:obc(OpenBridge design system),3d, orflat.- Flow animation — forward or reverse direction, tunable speed. Arrow indicators optional.
- Keyboard vertex nudging — arrow keys nudge selected vertices; undo is debounced so a burst of arrow presses collapses into one undo step.
- Auto-connect — dragging a pipe endpoint near a component snaps and anchors on release.
Seven new test files (anchoring, geometry, markup, pipeOperations, state, eventHandlers.nudge, runtimePipes.unit) plus a new e2e (pipes-editing.e2e.spec.js) cover the changes.
Trends: batched capsule fetch + hidden conditions
Two Trends changes users will feel:
- Batched capsule fetch — the frontend now coalesces multiple condition-capsule requests into a single call. New backend endpoint
GET /api/conditions/capsules?ids=…returns capsules for many conditions at once, and the Workbench uses it during initial load and range changes. A worksheet with a dozen active conditions loads in one round trip instead of one per condition. - Hidden vs unlinked conditions — the eye toggle in the Conditions tool now hides a condition on the chart (slashed eye icon) instead of unlinking it from the worksheet. Unlinking is now an explicit "Remove" action, and multi-select bulk remove asks once for the whole selection instead of asking per row.
Plus, the Trends WorksheetSidebar.js is retired in favor of the redesigned Details Pane / Tools Panel flow (net -1,212 lines removed). All Trends history requests (fetchDistribution, fetchRateOfChange, fetchFFT, fetchForecast) now accept an AbortSignal so switching worksheets aborts in-flight requests instead of racing them. A new obChartTheme.js applies the Outfit font, OpenBridge-styled tooltip, and neutral grid to Trends charts globally so the Workbench visual language matches OpenBridge.
Flows: cron UTC, server-authoritative catalog, and safety fixes
- Cron UTC — flow triggers with a cron schedule now match on UTC fields (
getUTC*) as intended. Scripting'sonSchedulestill matches on the process's local time via a newcronMatchesLocalhelper — the plant-time contract is preserved. - Server-authoritative node catalog — the frontend now fetches
/api/flows/node-catalogon mount rather than shipping the whole catalog in the bundle. Adding a node type on the backend now shows up in the palette without a frontend rebuild. - At-least-once delivery warnings — Write Tag, HTTP, Notify, and AI nodes are labeled
RETRY_WITH_DELIVERY_NOTEin the catalog so the editor can show an at-least-once warning at edit time. - Safety fixes — Delay nodes are now abortable via the execution context's
abortSignal; the script sandbox surfacesSyntaxErroras "parse failed" instead of an opaque error; template renders block__proto__,constructor, andprototype; subflow preview is fully sandboxed and cannot leak into the live executor. - Editor — publish failure now surfaces as a toast instead of being silently swallowed; the debug-frames indexing correctly handles ring-buffer saturation (uses the
totalFramesdelta).
Tag panel: communication-mode aware writes
The Tags Panel's inline value writes now respect the editor-wide communicationMode. Writable tags render as a read-only span in Read-Only or No-Comm modes, and any open editor auto-dismisses if you flip the mode mid-edit. The write input picks up page-rename-style content-hugging width so the row doesn't jump when you enter/exit edit mode.
Fit-and-finish
- AI server response_format —
core/aiserver/handlers.gonow forwards theresponse_formatfield to providers so JSON-mode structured outputs work end to end. obLabelFit.js— a new module that auto-fits labels to available space on OpenBridge charts.- 30 new test files land this release — pipes (7), flows (5 frontend + 3 backend), openbridge (3 unit), trends (3), plus editor keyboard baseline and e2e.
Migration notes
- Chart.js charts moved to the Legacy tab. They still work; the block-manager label is different. If you have dashboards built against Chart.js series, those keep working; new dashboards get the OpenBridge palette by default.
WorksheetSidebar.jswas removed in favor of the Details Pane. Any custom scripts referencing it need to update.- No CDK, Postgres, or ClickHouse migrations in this release. Deploy-only rollout.
That's V0.1.9. OpenBridge is out of beta and running as the default component surface. Feedback on the new Bar and Radar charts is what we're watching most closely this cycle.