Skip to main content

opcua-omni-edge — Changelog

All notable user-facing changes, most recent first. Every merge request with a user-visible change adds its bullet under ## Unreleased in the same MR; npm run release refuses to run while that section is missing or empty, and renames it to the released version (see RELEASING.md).

Versions before 3.8.0 are described only by their git tags.


Unreleased​

Upgrade notes​

  • Trusted X509 user certificates move to <CERTIFICATE_STORE>/UserPKI. With CERTIFICATE_STORE set (the Docker image sets /pkis), the user and application PKIs used to share <store>/ApplicationPKI. The server's own certificate does not move. An installation that authenticates users with X509 certificates must copy their trusted certificates from ApplicationPKI/trusted/certs to UserPKI/trusted/certs, or those users are rejected.

Features​

  • Advertise the endpoint clients really use. serverOptions.advertisedEndpoints lists extra endpoint URLs, each with its own host and port, for Docker port mapping, NAT or a reverse proxy; the server still listens on port. In the Docker stack, OMNI_EDGE_ADVERTISED_ENDPOINTS adds them without editing the configuration.
  • Reverse Connect. serverOptions.reverseConnect makes the server dial out to OPC UA client listeners (OPC 10000-6 §7.1.3), so it needs no open inbound port. OMNI_EDGE_REVERSE_CONNECT does the same from the Docker stack.
  • More server options: resourcePath, host, securityModes, securityPolicies, maxAllowedSessionNumber, disableDiscovery, discoveryServerEndpointUrl, and registerServerMethod: MDNS.
  • certificateStores can be set in the configuration (the PKI folders and whether unknown certificates are accepted). The runtime read it, but the configuration schema rejected it.
  • The editor and the VS Code extension flag serverOptions problems while typing, on the offending line: an advertised URL that is not opc.tcp:// (SRV-E001), one whose resource path differs from resourcePath (SRV-E002), a resourcePath without a leading / (SRV-E003). These used to surface only as a gateway that refused to start; it is the same rule in both places.
  • Documentation: a page for the server settings (Configuration → the OPC UA server), this changelog is published on the documentation site, and the configuration pages describe namespaces:/imports: instead of the version 3 nodesets: key the gateway refuses.

Fixes​

  • serverOptions settings that had no effect now apply: serverCapabilities (operation limits, max sessions, max subscriptions…), timeout, maxConnectionsPerEndpoint, defaultSecureTokenLifetime and registerServerMethod were accepted and then ignored. A configuration that sets them now gets them - example/config-coffee-machine.yaml, for one, now enforces maxNodesPerRead: 10.
  • Setting securityModes / securityPolicies now restricts the endpoints.
  • An advertised URL whose resource path differs from serverOptions.resourcePath is refused at start-up instead of being advertised without its path, and an OMNI_EDGE_* endpoint variable without opc.tcp:// is refused instead of advertising an empty host name.

v3.8.0​

Features​

  • A language server for configuration files, and a VS Code extension with an OPC UA address-space panel that follows the cursor: completion for node:, modbus:, typeDefinition:, organizedBy:/componentOf: and optionals, and the gateway's own binding diagnostics while typing.
  • The runtime validates every configuration against the published schema at load time (US-0079).
  • Modbus: one mapping grammar with a single poll: key (US-0074/0075), resolved points, a Tag ↔ Register toggle and MODBUS-W002 quick fixes in the editor.
  • Editor: gateway diagnostics while typing (FEAT-037), direction and type feedback on binding cards, address-space nodes coloured by namespace.

Fixes​

  • The configuration watcher reloads on a content change, not on a timestamp, and waits for a file to settle before reading it.
  • A node: path that does not resolve is reported instead of dropping the binding in silence.
  • A repeating runtime log line is collapsed instead of being written once per sample.
  • config.schema.json ships in the published package and is found from both the npm and the Docker layout.