Release Notes
Change history by version. The newest release appears first.
This document is written for people
For the actual version running on a box, check the badge in the upper right of the screen or GET /api/v1/system/version.
The single source of truth for version identification is META-INF/VERSION.JSON — do not use this document to verify a version.
The same content is available before installation — product.kopens.io/plantpulse-edge/RELEASE-NOTES.md
2026.08
Security
- Closed the path that allowed values to be written to a PLC without authentication. Remote write requests now always require authentication. Brute-force login blocking (repeated password attempts) and session reissue on login were also added.
- An empty REST authentication configuration now denies by default. Previously, a missing configuration caused the endpoint to open without authentication.
- Integration keys (API keys) are no longer broadcast in plain text. The path that carried keys as if they were tags into MQTT, OPC UA, and the time series store has been removed; keys are now passed only during platform registration.
- Fixed an issue where the installation image carried the identity (edge ID) of a development box. With earlier images, every installed box could report under the same ID. Identity settings are now excluded from the image, and the build fails if they are present. Installation files no longer contain development settings.
Collection · Storage
- Eliminated the case where storage failures passed silently. When multiple records were stored as a batch, partial failures went unreported and data could disappear without notice. Failed records are now isolated and logged.
- Fixed corruption of large integer values. 64-bit integer tag values lost precision during storage; this has been corrected.
- Transitions to an empty string value are no longer missed. Changes from a previous value to an empty value were being lost.
- Cleaned up cases where a deleted OPC connection reappeared or an orphaned collector kept running. Collection cycles that ran as duplicate "ghost" executions were fixed as well.
Stability
- High query volumes no longer exhaust memory. Querying time series without a period limit could consume all server memory. Continuously accumulating OPC UA references and communication resource leaks were also fixed.
- Fixed problems where a single failure during boot could never recover. The logger no longer freezes in a stopped state, and the condition where the system reported ready while not actually being ready is gone.
- A missing configuration folder no longer starts silently with defaults. The system now fails explicitly and reports it, preventing operation with an incorrect configuration.
Platform Connection
- The box registers itself with the Platform at boot. Even if the Platform was temporarily down, registration is retried automatically once the connection is restored, and the current registration status is visible on screen. Previously, registration was attempted only once at boot, so if the Platform was down at that moment the box remained absent from the list.
- The address the Platform connects back to (callback address) can be set in the settings screen. If left empty, the box selects one automatically — the automatic selection criterion has been corrected to LAN1, eliminating cases where a port with no external connectivity was chosen.
- Peer box information is now reported along with the redundancy (HA) status. The default failure detection time has been standardized at 2 seconds.
Release Contents
- Fixed an issue where development-build libraries were included in the release. Earlier releases shipped the driver, formula, and PLC protocol libraries as development builds (SNAPSHOT) rather than final builds. Because a development build keeps changing under the same name, boxes could end up with different code even when the same version was installed. Release builds now include final builds only, and the build fails on any mismatch.
- All bundled libraries are now unified on the current month's final builds. 7 of 29 libraries were still on the older 2026.06 versions; this has been resolved. Unused libraries were also removed, reducing the installation size.
UI
- Tables in AI assistant responses now render correctly. Tables that collapsed into paragraphs
with raw pipe characters (
|) exposed have been fixed. - An edge ID badge is shown at the top of the mobile home screen. When switching between multiple boxes, you can tell at a glance which box you are viewing.
Performance · Stability
- Switched the garbage collection (GC) strategy to generational, reducing pauses. Maximum database pause time dropped from 630 ms to 212 ms, full collections on the web server dropped from 144 to 0, and memory usage fell from 9.9 GB to 4.1 GB.
- Completed the fix for missing precision in time series storage timestamps.
Distribution · Downloads
- The product download address has changed to
product.kopens.io. Publishing to the previousdownload.kopens.iohas been discontinued. Offline (air-gapped) installation images are available at the same address.
2026.07
Collection · Storage
- Array tags are now stored in the time series. Array types such as
DInt[4]andWord[300]were being collected but discarded entirely at the time series ingestion stage. They are now expanded per element and stored as independent metricsTAG_NAME[0]…TAG_NAME[n-1], enabling per-element trend graphs and aggregation. - Unknown data types are no longer discarded. When a type outside the supported list arrives, the value is preserved as text and only a warning is logged. Previously it disappeared silently.
- Tag naming rules are now enforced — only uppercase letters, digits, and underscores (
_) are allowed. Old-format names are converted automatically during backup restore, and the restore result screen shows what was renamed to what.
Stability
- Fixed a problem that caused the service to hang. The server did not detect closed browser tabs, so connections kept accumulating, and once they built up all web requests became unresponsive. The process and port stayed alive, so monitoring tools saw the system as healthy. Finite timeouts and periodic checks now clean up broken connections immediately.
- Connection backup restore is faster. A case that previously exceeded 120 seconds and failed with 43 OPC connections now completes in about 3 seconds. Restore now waits only until the configuration is saved; collector startup continues in the background.
- Clients disconnecting first is normal behavior and is no longer logged as an error.
UI
- A new connection restore result screen was added. Instead of showing only the number of applied items, it now presents skipped items with their reasons and automatically converted tag names in a table. Previously, partial failures still showed only "Restore complete."
- Added a loading indicator during backup and restore (previously, several seconds without feedback invited duplicate clicks).
- Cleaned up mobile screens — empty search result messaging, log level colors (ERROR red / WARN orange), button icons, and the SUIT font.
- Fixed access denied errors on 13 navigation paths and a broken log download link.
Other
- AI chat was replaced with an official SDK-based implementation (falls back to the previous method automatically if a response fails).
- Fixed errors in the API documentation (Swagger).
- Removed unused libraries, slightly reducing the installation size.
Notes for Operators
Array tags create as many metrics as they have elements
A single Word[300] tag generates 300 metrics. When registering several large array tags, check the
storage load as well.
Tag naming rule change
As of this release, tag names cannot contain lowercase letters, spaces, or special characters. Existing tags are converted automatically, but if external systems reference the old tag names, verification is required.