NEXT HMIDocs
Project / Changelog

Changelog

All notable changes to NEXT HMI are documented here.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning. While the project is pre-1.0, minor versions may include breaking changes; these are always called out under a Changed or Removed heading.

Unreleased

Targeted as 1.0.0 — the first public release. Everything below ships in the initial open-source build. At tag time this heading becomes [1.0.0] - <date>.

Added

  • Browser-based HMI runtime. Self-hosted operator panels that run in any modern browser — no per-seat client install. Connects to PLCs over OPC-UA.
  • Manager + per-project instance model. A single manager front door supervises independent project instances behind a reverse proxy, each with its own runtime state and lifecycle.
  • In-browser page editor. Build and lay out dashboards from the runtime itself — widgets, bindings, and pages are authored without leaving the app.
  • Widget system. Built-in widget library plus a custom-widget SDK with a build pipeline, authoring rules, and a schema contract for third-party widgets.
  • Property value model. Typed property values with $-wrapped sources ($var, and friends), an OPC-UA type-collapse layer, and consistent resolution/coercion across components.
  • OPC-UA connectivity. Client pool with a self-signed client certificate generated on first secured connect; secure-config datasources.
  • Alarms, recipes, and historian. Alarm handling, recipe management, and historical data — all in the single open-source build, with no feature paywall.
  • Widget visibility model. Per-widget visible/interactable controls driven by a $userGroups source.
  • Theming. Theme token catalog and pipeline with hmi-* / cfg-* conventions and shared UI primitives; unset values fall through to theme tokens, set values override.
  • WebSocket protocol. /ws runtime channel with a defined handshake, server/client message set, async-action result correlation, and config_changed propagation.
  • Manager-to-manager LAN transfer. Peer transfer of projects between managers on a local network, with a trust model and collision policies.
  • REST API for the manager and project-instance apps.
  • MCP server exposing a workspace tool catalog with per-project gating.
  • Runtime performance tooling. Performance HUD (Ctrl+Alt+P), list windowing, and granular per-variable subscriptions.
  • HMI boot screen, carrying the product logo, version, load progress and the AGPL-3.0 attribution notice on every load of the runtime, held for a minimum of two seconds. The notice is controllable via the shell.attribution project setting (hidden / custom for white-label deployments); it is a plain setting, not a runtime licence check.
  • Deployment targets. Multi-arch Docker image (linux/amd64 + linux/arm64) published to GHCR, and portable macOS / Windows binaries — all attached to each tagged release by CI.
  • Documentation set covering architecture, data formats, the value model, the WebSocket protocol, theming, custom widgets, the REST API, peer transfer, MCP, deployment, and a threat model.

Security

  • No CORS middleware ships by design; the runtime is same-origin and intended to sit behind a reverse proxy on an OT network or VPN, never on the public Internet. See SECURITY.md and the threat model in docs/dev/operations/deploy.md.
  • Session cookies set the Secure flag when served over HTTPS.
  • The page/widget editor is a privileged, code-execution-capable role (server-side file writes and arbitrary browser JS); documented in docs/dev/reference/custom-widgets.md.

Licensing

  • Released under AGPL-3.0. See LICENSE.txt, LICENSE-AGPL.txt, and COMMERCIAL.md.
  • The asyncua (LGPL-3.0) and zeroconf (LGPL-2.1) runtime dependencies are shipped loose (replaceable) in binary builds, with the LGPL texts and a written source offer bundled alongside.