Skip to main content

Version History

Info

This page records the version update history of ThingsGatewayRuntime.

Documentation Site Update (2026-07-03)

Operation Manuals

  • Improved the GatewayRuntime Web, Studio Web, and Watchdog Web operation manuals for login, overview, collection configuration, data forwarding, debugging, alarms, rules, scripts, nodes, certificates, logs, users, roles, and system settings.
  • Added user-facing descriptions for configuration dialogs, configuration drawers, parameters, screenshots, and common troubleshooting.
  • Added Studio project management, Watchdog connection, project upload and download, backup, tunnel, and runtime parameter instructions.

v2.1.41 (2026-08-11)

Added

  • OPC UA Server historical alarm reads

    • OPC UA Server can bind a separate historical alarm target and expose alarm, acknowledgement, and recovery events through standard ReadEventDetails reads on the Server, Gateway root, or device notifier nodes. Reads support node-scoped filtering, paging, continuation, and stable EventId, ConditionId, and standard alarm fields.
    • Configuration saving now verifies that historical data and alarm targets support the required query capabilities and lists valid targets when a selection is invalid. Real-time and historical alarms share stable Condition identities derived from the variable and alarm type.
  • Variable real-time decimal places

    • The variable editor now supports 0 to 28 decimal places, rounding final scalar values after collection or expression processing to the effective precision of the runtime numeric type while preserving raw-value precision. System-variable updates and batch editing apply the same setting.

Fixed

  • Alarm acknowledgement and recovery state

    • Fixed confirmed alarms losing their acknowledgement state on recovery. Recovery events now retain the combined acknowledged-and-finished state so history and OPC UA clients do not report them as unacknowledged.
  • GatewayRuntime Web configuration guidance

    • Data-forward target details now resolve enum display text from either stored names or numeric values, and content-template help renders ${...} placeholder syntax literally instead of treating it as an i18n interpolation expression.

v2.1.40 (2026-08-10)

Optimized

  • Data-forward target details
    • Target details now show plugin property settings with readable enum and Boolean values, and refresh property definitions when the selected target changes for easier configuration review.

Fixed

  • OPC UA Server history capability advertisement
    • Fixed Historizing and HistoryRead attributes not matching the actual history-read routing. Valid history targets now register history services per node, while invalid targets disable history advertisement and report the currently available targets.

v2.1.39 (2026-08-09)

Added

  • OPC UA 2.0 collection and server capabilities

    • Upgraded the OPC UA Client and Server to the 2.0 stack. Collection now handles built-in scalar, array, matrix, and structured-value encoding, and restores sessions and subscriptions after reconnecting; these capabilities are also available on the Native AOT runtime path.
    • OPC UA Server now supports raw historical reads from a selected history target with paging, continuation points, and release handling. It also exposes real-time alarm activation, acknowledgement, recovery events, and ConditionRefresh, allowing standard OPC UA clients to consume variables, history, and alarms through one server.
  • Variable state-value alarms

    • Variables can define multiple exact numeric state mappings with independent alarm text, level, delay, and suppression expressions. The Web editor supports adding and removing mappings, validates duplicates and parameters, and preserves state-alarm settings during variable import and export.

Optimized

  • Backend log queries and exports

    • All-source log queries now use bounded merged pagination and stable sorting, with explicit errors when a source cannot be read. CSV exports stream each source and support filters, request cancellation, and timeout termination to reduce memory use and avoid unbounded work on large log sets.
  • Long variable and OPC UA value display

    • Current values, raw values, and OPC UA debug values use fixed-width previews in tables, while tooltips and detail drawers show complete arrays and structured content without expanding rows or squeezing the page.

Fixed

  • Memory-variable write types

    • Fixed JSON/RPC writes and initial-value loading degrading numeric values to Int64. Values are now converted using each variable's declared data type and reported individually, so one conversion failure does not block other variables in the same batch.
  • Real-time alarm counts and confirmation state

    • The unconfirmed-alarm badge now uses a server-side global count instead of the current page or filter. Rows update only after the server confirms the operation, followed by a silent refresh to reconcile concurrent confirmations.
  • System overview list filtering

    • Fixed channel, device, and variable detail lists in the overview not fully applying dynamic filters and sorting.

v2.1.38 (2026-08-04)

Added

  • Structured GatewayRuntime Web property editors

    • Added visual editors for Gateway MQTT Client/Server remote sources, custom SQL historical wide-table templates, and CAN hardware filter IDs. Editors cover source authentication, QoS, grouping and column mappings, custom SQL, and validated CAN ID add/remove flows without manual JSON.
  • Richer system resource overview

    • Overview now shows used/total system memory and disk capacity, process memory, GC memory, thread count, named disk, and all-fixed-disk totals with clearer capacity units.

Fixed

  • Cancelled requests and channel logs

    • Cancelled Web requests no longer trigger global network error notifications, and channel-scoped log pages avoid their duplicate initial load, reducing unnecessary requests and false network alerts.
  • Client permission list persistence

    • Fixed empty or invalid client permission lists for server-side plugins such as ModbusSlave being saved as null; they are now saved as empty lists to keep dynamic property values consistent.

v2.1.37 (2026-08-03)

Added

  • Dedicated Gateway MQTT collection for multiple gateways

    • Added GatewayMqttCollectClient and GatewayMqttCollectServer to aggregate multiple remote Gateways through one shared MQTT Broker session or one local Broker listener. Stable RemoteKey values isolate real-time values, online state, full snapshots, variable catalogs, and RPC writes for each source.
    • A dedicated debug page shows per-source state and diagnostics, requests snapshots, tests RPC, and creates variable synchronization plans for one or all remotes. Synchronization only adds variables or updates data type, unit, and description; local names, expressions, alarms, history, and write permissions are preserved, and remotely missing variables are not deleted automatically.
  • SyncBridge public aggregation and real-time synchronization (upgrade notice)

    • SyncBridge now has explicit HubServer and EdgePublisher roles. One public Hub can aggregate multiple edge Gateways with stable PeerId values over a single mutually authenticated TLS port. Configuration uses revisions, checksums, staged chunks, and atomic commits; real-time values use Epoch, Sequence, application acknowledgements, and full-snapshot recovery after reconnecting.
    • A dedicated debug page reports peer connections, configuration revisions, queues, acknowledgement latency, and errors, and can start configuration synchronization, full-value snapshots, managed reconnects, disconnects, and diagnostic exports. The old IsServer and IsMaster configuration contract has been removed; after upgrading, configure the role, peer identity, handshake token, certificate, CA, and target host name again.
  • DL/T 645-2007 relay control

    • The DL/T 645-2007 master now provides dynamic write methods for trip and close-permit commands using the default meter address, with validation for the level-02 plaintext password, operator code, and configurable command validity period.

Optimized

  • Protocol simulator and ModbusSlave hot paths

    • New Modbus simulator instances now cover 65,535 holding registers by default. TCP PDU handling, address parsing, bit converters, and raw-memory writes are reused, while data generators use event-driven scheduling to reduce allocation and scheduling overhead with large point tables, continuous generation, and frequent requests.
  • Variable runtime and data-forward scheduling

    • Variables on the same device share their runtime context, variable changes create forwarding snapshots only when enabled routes exist, and target indexes, batch dispatch, and protocol observations use leaner representations to reduce resident memory and unnecessary work for large variable sets and multiple targets.
  • Data-forward runtime logs

    • Forwarding-group and forwarding-target logs now use Logs/DataForwardGroup and Logs/DataForwardTarget. If SQLite logging is unavailable, startup falls back to the shared backend log instead of blocking the forwarding group or target.

Fixed

  • Data-forward shutdown and reliable writes

    • Fixed reliable history writes accessing a database after disposal had started. Shutdown now waits for in-flight writes and rejects late writes, avoiding data loss and resource races during stop and reload boundaries.
  • Protocol simulator event and request lifecycle

    • Fixed late operations recreating an event database after an instance was deleted or the service was closed, and made shutdown wait for in-flight event operations. Modbus request cancellation, concurrent admission release, and stable response handling were also hardened.
  • MQTT snapshot and RPC protocol boundaries

    • MQTT Client and Server Producers now apply the same canonical request-ID validation, report snapshot completion as successful only when every snapshot fragment was published, and retain an independent message copy before asynchronous processing so temporary receive buffers cannot invalidate snapshot or write responses.
  • Web log and date filters

    • Fixed query and reset errors after clearing the time range in channel, runtime, and rule logs. Required date values in time synchronization and simulator generators can no longer be cleared.

v2.1.36 (2026-07-31)

Added

  • Modbus and Siemens S7 protocol simulator

    • GatewayRuntime now includes a protocol simulator that can host Modbus TCP, Modbus RTU, or Siemens S7 slaves with TCP/serial transports, simulated points, read/write permissions, deterministic data generators, fault injection, raw memory, client diagnostics, and persistent events.
    • Channel profiles can be imported or exported as JSON, and variable point tables as Excel, for protocol integration, point-list validation, fault reproduction, training, and automated testing without a separate simulator application.
  • Fully configurable custom-packet collection

    • Added the CustomPacketMaster collection plugin for TCP client, TCP server, UDP session, and serial transports. It supports fixed-header, start/end range, delimiter, and fixed-length framing, plus request templates, response ownership, success conditions, payload extraction, and common checksum algorithms.
    • Device debugging can send raw Hex or text packets in send-only or send-and-wait mode and create a protocol draft from actual exchanges. Before it is applied, the sample is validated through the production framing, checksum, and response rules to reduce invalid runtime configurations.
  • MQTT collection control writes and RPC acknowledgements

    • MQTT Collection Client and Server variables can publish control messages with JSON or raw UTF-8 string payloads and Retain while using the device QoS. Read-only, write-only, and read/write variables share one validated eight-part address editor and contract.
    • Optional {RequestId} request/response Topics and a timeout let Gateway treat only success=true from the exact non-retained response Topic as device acknowledgement. Timeouts, disconnects, route reloads, and invalid responses return explicit failures, and potentially non-idempotent commands are not retried automatically.
  • Static variable information for database targets

    • SqlServer, MySql, Sqlite, and PostgreSql historical-data targets now maintain a separate variable-information table with variable, device, channel, unit, data type, access, and custom-field metadata. Dual-database mirrors synchronize this table to both databases.
    • Real-time database targets now initialize every in-scope variable with its static information and current state, then update only dynamic value columns. Offline variables retain their static information even when offline-value filtering is enabled.

Optimized

  • GatewayRuntime Web code-editor resources

    • Monaco now loads only the C# language support and general worker used by Runtime. Script and custom-node pages retain Studio Roslyn completion while unused languages, workers, and bundled static assets are reduced.
  • Chinese and English operation documentation

    • Added protocol-simulator, custom-packet, DTU-service, and end-to-end collection-to-MQTT/SQLite/rule-engine guides, and completed the current English GatewayRuntime, Studio, Watchdog, plugin, script, and custom-node documentation with workflow screenshots.

Fixed

  • ModbusSlave variable-mapping boundary

    • Fixed unconfigured target variables falling back to their collection address. A Modbus slave register is now created only when the target variable has an explicit slave service address, preventing ordinary collection variables from being exposed unintentionally.
  • Collection-form defaults and channel editing

    • Fixed missing round-trip fields such as the backup remote address when editing a channel from the device dialog, and aligned new-channel, TCP-service, and variable-filter defaults with the backend definitions.

v2.1.34 (2026-07-27)

Added

  • MQTT collection JSON field mapping and message condition context
    • MQTT Collection Client and Server variable addresses now support a practical single-value JSONPath subset, including the $ root, object properties, [0] and .0 array indexes, and special property names such as $['a.b']. One variable can define ordered fallback fields with path1||path2.
    • Condition scripts can read the complete Payload and the actual published Topic. MQTT Collection Server conditions can also read the publisher ClientId, which enables device filtering when wildcard Topics are used.

Optimized

  • MQTT collection message processing and configuration guidance
    • Field paths are compiled when variables load, each message parses JSON once, and a condition with the same name runs once per message. Payload strings, intermediate collections, and repeated path splitting are reduced; the Chinese and English plugin references now include field-path, fallback-field, condition-script, and wildcard-Topic examples.

Fixed

  • Missing MQTT fields and failed conditions

    • Missing fields, out-of-range array indexes, and invalid paths no longer overwrite variables with null. A missing condition script, script exception, or non-Boolean result now rejects the update and logs a warning instead of allowing the message through.
  • GatewayRuntime, Studio, and Watchdog time display

    • Unified the boundary between backend UTC values and storage wall-clock values. Real-time and historical alarms, historical data, logs, redundancy status, variable details, backups, and projects no longer risk double conversion, timezone offsets, or inconsistent display across timezones.
  • Collection configuration dialog layout

    • Fixed shared styles not reaching split child components in channel, device, variable, and quick-expression dialogs, which could cause incorrect number-input and text-input widths or squeeze batch-edit markers.
  • Runtime indexes after renaming copied variables

    • Fixed stale indexes left by renaming a copied variable back to its original name, which could cause the same variable to enter collection packing under both the old and new names.

v2.1.33 (2026-07-24)

Added

  • Studio and Watchdog remote management over HTTP IP
    • The packaged Studio and Watchdog configurations can listen on all network interfaces and can be opened directly at http://device-IP:5100 and http://device-IP:6200. Remote bootstrap, Watchdog project deployment, and process control are also available when remote management is enabled.
    • Plain HTTP still provides no TLS transport protection. Continue to use HTTPS on public or untrusted networks and restrict network access to management ports.

Optimized

  • Current Studio and Watchdog authentication protocol

    • Login and bootstrap passwords now use a two-minute, one-time RSA-OAEP-SHA256 public-key challenge. Watchdog management APIs now use an eight-hour opaque Bearer session that is invalidated by logout or a Watchdog restart.
    • Studio-to-Watchdog connections use the same one-time password challenge and Bearer session, with automatic re-login and one retry when a Watchdog restart invalidates the session.
  • Deployment, operation, and API documentation

    • The Chinese and English documentation now covers Studio/Watchdog HTTP IP configuration, authentication endpoints, session behavior, security boundaries, and troubleshooting for importKey, 401, 403, and expired challenges.

Fixed

  • Login from plain HTTP IP pages
    • Fixed GatewayRuntime, Studio, and Watchdog login failures caused by unavailable SubtleCrypto and an undefined importKey on plain HTTP IP pages. The current frontends can use browser-provided strong randomness to perform RSA-OAEP-SHA256 password encryption.

v2.1.32 (2026-07-23)

Added

  • Hot-standby identity, secure transport, and shared arbitration (upgrade notice)

    • Hot standby now validates the redundancy group, local node, and expected peer identity, and supports optional mutual TLS plus work authorization through a SQLite file shared by both gateways. The page also reports local role, peer identity, collection, data forwarding, alarm, rule-engine, link, and arbitration state.
    • After upgrading, enabled hot-standby pairs must use the same cluster name, different local node names, and matching expected peer names. Leaving the shared arbitration file empty keeps link-only failover and can allow split-brain during a network partition. The local transport certificate, trusted root certificate, and peer certificate host name must either all be configured or all be empty.
  • Dual-database mirroring for historical data and alarms

    • Historical data and historical alarm targets can write to primary and secondary databases, with Journal/backlog status, time-range comparison, bidirectional repair, scheduled consistency checks, and automatic repair.
    • Mirroring supports only the standard SqlServer, MySql, Sqlite, and PostgreSql table paths. QuestDB, TDengine, custom SQL, historical table scripts, and historical alarm table scripts are unsupported. The two databases must be different physical targets, and this feature is independent of hot-standby historical compensation.
  • Historical queries and MQTT history RPC

    • Added typed historical queries with UTC time ranges, variable sets, pagination, allow-listed sorting, and numeric series modes including Auto, Raw, Average, Minimum, Maximum, First, and Last with point limits.
    • MQTT Client and MQTT Server producers now support the RpcHistory topic for target, record, numeric-series, alarm, confirmation, and cancellation requests, with gzip/Base64 chunking plus request, response, and concurrency limits.

Optimized

  • Modbus Master packing rules (upgrade notice)

    • The former single Max Pack Length setting has been replaced by separate FC1, FC2, FC3, FC4, FC15, and FC16 quantity limits. Reads or batch writes that exceed the applicable limit now fail validation before a frame is built. After upgrading, open every Modbus Master device and review all six rules; do not assume the old MaxPack value is mapped automatically.
  • Unified certificate management APIs (upgrade notice)

    • Certificate management moved to the shared TAdmin module while the Web entry remains unchanged. The old /api/gatewaycertificatecontroller/... routes have been replaced by /api/certificatecontroller/..., with corresponding action and permission-code changes. External API integrations must migrate.
  • Data-forwarding and rule-flow configuration reliability

    • Strengthened validation for forwarding groups, targets, variable ranges, plugin properties, and primary/standby target topology. Configuration changes can restart only affected objects, while stale backlog delivery and loss of authoritative failover state are prevented.
    • Rule-flow names now validate length, invalid characters, reserved names, and case-insensitive uniqueness. Version checks prevent a later save from silently overwriting another user's concurrent edit.
  • Real-time status and Web interaction

    • Real-time status and debug messages now group equivalent subscriptions and add subscription caps, bounded queues, re-entry protection, reconnect backoff, and stale-response protection for more stable large-point and frequently changing views.

Fixed

  • SQLite configuration database backup

    • Fixed WAL-mode backups that could miss committed records or depend on companion -wal and -shm files. Backups are now consistent, standalone database snapshots that include committed WAL data.
  • History, forwarding, and failover recovery

    • Fixed incomplete status, incorrect backlog ownership, or inconsistent task recovery during target restarts, cache replay, failover, and runtime recovery.

v2.1.22 (2026-07-14)

Added

  • Historical reliable-sync diagnostics

    • Gateway redundancy in System Settings now includes historical reliable-sync diagnostics for target support, Journal state, Epoch leases, and Journal events, with filters for target key, source node, record type, record key, pending peer, and pending DB state.
  • TCP Client backup remote address

    • Collection channels now support a backup remote address for TCP Client channels. If the primary remote address fails to connect, disconnects, or times out, the same channel can try the backup address before device-level redundancy is needed.

Optimized

  • Historical data and alarm redundancy reliability

    • Standard SQL historical data and historical alarm write paths now coordinate Journal records, peer acknowledgment, DB Epoch leases, and record keys to improve replay and de-duplication after failover, short link outages, temporary database outages, or runtime restarts.
  • Data forwarding runtime observability

    • Data forwarding details now expose plugin runtime state, online state, Reliable History tags, Journal target keys, unsupported reasons, and CacheDB outbox diagnostics to help locate target startup failures, offline-cache backlog, and historical reliable-sync status.
  • Offline cache and retry recovery

    • CacheDB outbox, memory queues, retained retries, and resend recovery were improved. Runtime details now show model count, pending counts, oldest pending time, and errors directly.

Fixed

  • Historical write consistency

    • Fixed cases where historical data or historical alarms could be duplicated or missed during failover, restart recovery, or short offline periods. Supported standard SQL targets now use record keys for idempotent writes.
  • Target runtime recovery status

    • Fixed unclear data forwarding status after cache resend, retry, or runtime refresh, making it easier to confirm whether a target has actually recovered.

v2.1.20 (2026-07-12)

Added

  • Variable reference tracking

    • Variable details now include a references view that summarizes usage in data forwarding groups/targets, rule flows, scripts, and variable expressions, with navigation to the related forwarding group, forwarding target, or rule flow before changing or deleting a point.
  • Secondary-development documentation

    • Added detailed documentation for collect plugin development, business plugin development, script development, and custom node development, plus plugin property references, lifecycle notes, parameter models, examples, and troubleshooting checklists.

Optimized

  • Data forwarding configuration experience

    • The Data Forwarding page now uses a resizable split layout, denser group/target cards, and query-based locating for specific groups or targets so reference navigation opens the relevant configuration directly.
  • Gateway system-setting safety

    • Network, system time, and NTP configuration now execute system commands through argument lists with validation, timeouts, and safer privileged file writes, reducing failures caused by special characters or command formatting.
  • Permissions and debugging APIs

    • Gateway, plugin, and NOAOT plugin debugging APIs now use centralized permission constants and seed data, reducing cases where a page action is visible but the API is still unauthorized after upgrade.
  • Studio and Watchdog delivery reliability

    • Watchdog now supports disabling health checks, hashed password storage, safer project package extraction, temporary-file downloads, and GatewayApp rollback snapshots after failed apply operations. Studio project upload/download and startup security checks were strengthened as well.
  • Documentation site

    • Reworked the current manuals into an entry index and common task routes, added clearer topic references for collection, memory, forwarding, rules, scripts, plugins, and permissions, and refreshed GatewayRuntime screenshots.

Fixed

  • Network and time configuration

    • Fixed unreliable Linux DNS/default-route/subnet-mask handling and improved Windows/Linux time synchronization configuration to reduce failures from command formatting, invalid input, or service state.
  • Project package handling

    • Fixed Studio/Watchdog project package upload and extraction risks around unsafe paths, oversized entries, and leftover temporary files.

v2.1.9 (2026-07-08)

Added

  • Unified TAdmin management module
    • GatewayRuntime now integrates the shared TAdmin management module. Users, roles, menus, button permissions, and audit logs are handled by the shared module, while Gateway provides the default menu, role, and button-permission seed data.
    • Gateway Web now uses the TAdmin frontend plugin and mounts management menus under /gateway-workspace, keeping system management features aligned with Gateway workspace routing.

Optimized

  • Gateway permissions and log configuration

    • Backend startup now registers Gateway menu placement, menu routes, roles, and button permissions, and syncs the WebApi permission catalog to reduce missing authorization after upgrades.
    • GatewayLogOptions now focuses on Gateway runtime logs. Backend, operation, SQL, and audit log retention settings are split into AdminLogOptions, making log configuration boundaries clearer.
  • Data forwarding runtime recovery

    • Data forwarding targets that fail during initialization or startup are retried automatically every 30 seconds, prioritizing the target that has waited longest. After recovery, the group-level data producer is restarted to reduce manual recovery after temporary failures.

Fixed

  • Redundant-device variable configuration

    • Channel/device variable saves, variable imports, and batch variable edits now normalize variable configuration to the primary configuration device, avoiding inconsistent collection, forwarding, or query results when variables are accidentally attached to standby devices.
  • Debugging and forwarding permissions

    • Added default permissions for CAN, OPC, IEC61850, SOE, ZeroMQ, and SyncBridge forced-sync debugging/forwarding maintenance APIs, avoiding cases where a role can open the page action but the API call is still blocked.

v2.1.5 (2026-07-05)

Optimized

  • Collection configuration resource list
    • The left device list in Collection Configuration is now grouped by channel, with plugin name, plugin tip, and channel address summary shown under the channel title. Device rows now show primary/standby role and online status directly, without showing an empty redundancy placeholder when redundancy is not configured.
    • When editing a channel, available channel types are filtered by the first device plugin under the current channel. New channels, or plugins without matching channel types, still show all channel types to reduce wrong selections.

Fixed

  • Redundant devices and variable queries

    • Fixed an issue where the redundant device selector could be empty when editing an existing redundant device. The standby device already configured for the current device now remains available in the dropdown.
    • Fixed variable queries by device, channel, or plugin so standby-device data is resolved through the primary configuration device, making collection configuration and variable status queries consistent in redundant setups.
  • Plugins and channel types

    • Fixed channel type lookup when plugin names contain extra spaces or when the plugin cannot be found. The query now falls back to all channel types when plugin-specific channel types are unavailable.

v2.1.3 (2026-07-04)

Added

  • Data forwarding batch mode

    • Added a batch mode that treats the whole forwarding group as one batch, making periodic snapshots easier to organize by group.
  • IEC61850 debugging capability

    • Added IEC61850 master and server capability detection so the frontend can show the matching debugging entry for those plugins.
  • Current operation manuals

    • Added current GatewayRuntime Web, Studio Web, and Watchdog Web manual entries, with refreshed screenshots for data query, memory, data forwarding, and operations workflows.

Optimized

  • Data forwarding offline cache and replay

    • MQTT, Kafka, RabbitMQ, ThingsBoard, and other TopicArray forwarding targets can cache unconfirmed uploads after failures and replay them before new data after recovery; when offline cache is disabled, failed data is now explicitly reported as not retried.
    • ThingsBoard device-connect uploads can move into offline cache when the queue exceeds its limit, is canceled, or fails to send, reducing missed uploads after recovery.
  • Data forwarding startup and validation

    • Forward target saves now validate plugin properties and variable properties earlier, reducing configuration errors that only appear after runtime startup.
    • Improved cleanup and redundant target switching when batch target startup fails, avoiding half-initialized targets receiving new data.
  • Messaging and security configuration

    • RabbitMQ now supports publisher confirmations and mandatory routing requirements, and declares the plugin event topic queue.
    • MQTT and ThingsBoard no longer trust unverified certificates by default, and log a warning when certificate validation is manually relaxed.
    • ModbusSlave now warns when listening on all interfaces, when the client permission list is empty, or when RPC writes are enabled.
  • Documentation site experience

    • Optimized the homepage image, sidebar structure, and current screenshot directory so users can enter the current manuals more directly.

Fixed

  • Log file paths

    • Channel, device, forwarding group, and forwarding target log file names are sanitized to avoid write or cleanup failures caused by invalid path characters.
  • Plugin stability

    • Webhook now reports invalid custom header JSON clearly instead of silently ignoring it.
    • TDengine historical data writes now validate and escape database/table identifiers and values to avoid create-table or write failures from special characters.
    • Kafka producer shutdown and concurrent sends are synchronized to reduce send failures during shutdown.

v2.1.0 (2026-07-02)

Added

  • Business plugin forwarding configuration

    • Added forwarding groups and forwarding targets to organize business data forwarding by group
    • Forwarding groups support multiple targets within the same group for multi-target forwarding scenarios
    • Forwarding targets support redundancy configuration to improve forwarding availability and fault tolerance
  • Memory calculation page

    • Added a memory calculation page for centralized viewing and management of memory calculation configuration

Optimized

  • Business plugin refactoring
    • Refactored the business plugin module with an independent UI, reducing coupling between business plugin configuration and the main interface
    • Optimized the business plugin configuration entry and interaction experience

v2.0.232 (2026-06-26)

Optimized

  • UI refactoring

    • Refactored Gateway, Studio, and Watchdog Web interface structure and visual style
    • Optimized page layouts, navigation, tables, forms, log panels, and compact mode experience
  • Improved script and custom node compilation experience

    • Compilation failures now prioritize actionable error messages and reduce irrelevant technical output
    • Custom node compilation error logs now support jumping to the corresponding editor line and column
    • Fixed custom node compilation error line mapping so returned line numbers match user editor code
  • Optimized batch compilation flow

    • Improved script batch compilation so logs are easier to follow and results are clearer
    • Improved custom node batch compilation for post-upgrade validation
  • Optimized release packages

    • Improved Watchdog, Runtime, and Studio package output for platform-specific deployment

Fixed

  • Script and custom node deletion
    • Deleting scripts or custom nodes also clears related runtime results so list status stays consistent with loaded status
    • Batch deletion handles related runtime results at the same time

v2.0.223 (2026-06-23)

Added

  • Gateway data page refactoring

  • Variable table visual redesign

  • Left tree panel optimization

  • VariableNode trigger rule filtering logic fix

Optimized

  • TabBar keeps page state

    • Switching tabs now truly preserves scroll position, form input, filter conditions, etc.
  • Compact mode adaptation

Fixed

  • Variable history data config lost on save (Interval/Condition)

  • Memory variable edit dialog shows device id number

  • Fixed known issues


v2.0.222 (2026-06-22)

Optimized

  • Unified log export query conditions
    • DeviceLog and ChannelLog export now includes conditionalModel, fixing the issue where export ignored log level / keyword / time range filters
    • RpcLog and OperateLog export conditions had inconsistencies (Like vs Equal, 'true' vs 'success'), unified by extracting a shared buildConditions() function
    • BackendLog and SqlLog also extracted buildConditions() to eliminate duplicate code
    • All 6 log pages now share 100% the same condition building logic for both query and export

Fixed

  • Quick create expression not persisted
    • GatewayWeb's QuickExpressionDialog previously only called compileScript to compile and hot-load, without writing to the database, causing expressions to be lost after restart
    • Now the "Apply" button calls createScript API to persist to the script_expression table before emit, with an error prompt when a script with the same name already exists

v2.0.190 (2026-06-22)

Added

  • ModbusSlave client permission control

    • Plugin properties added "client permission list", supporting configuration of multiple allowed client IPs and write permissions
    • When the list is empty, no restriction; when non-empty, only matched IPs are allowed to write
    • Each record supports AllowedClientIp (supports exact match / * wildcard) and AllowWrite (whether to allow writing)
    • Write requests use the IP allowlist, and unauthorized or write-prohibited clients are rejected
    • The plugin parameter editor supports visual table editing for adding, deleting, and editing client permission rows
  • Studio Roslyn IntelliSense integration

    • The editor uses the Studio intelligent assistance service to provide C# script completion, syntax diagnostics, signature help, hover tips, semantic highlighting, and go-to-definition
    • Automatically detects Studio Roslyn service availability, reconnects in background when disconnected, and seamlessly switches back after recovery

Optimized

  • Database connection testing
    • SqlServer, MySql, Sqlite, PostgreSql, QuestDb, and TDengine connections can be tested in a consistent way
    • Real-time data, historical data, and historical alarm configuration support one-click "Test Connection"

Fixed

  • Fixed known issues

v2.0.189 (2026-06-17)

Fixed

  • Fixed known issues

v2.0.188 (2026-06-13)

Fixed

  • Fixed known issues

v2.0.179 (2026-06-11)

Fixed

  • Fixed known issues

v2.0.178 (2026-06-08)

Fixed

  • Fixed known issues

v2.0.177 (2026-06-08)

Added

  • Added built-in historical data storage

v2.0.176 (2026-06-05)

Optimized

  • Optimized user experience

v2.0.170 (2026-06-04)

Fixed

  • Fixed known issues

v2.0.168 (2026-06-03)

Fixed

  • Fixed known issues

v2.0.166 (2026-06-03)

Fixed

  • Fixed known issues

v2.0.158 (2026-06-01)

Fixed

  • Fixed known issues

v2.0.157 (2026-05-30)

Added

  • Business plugin concurrent upload

Fixed

  • Fixed known issues

v2.0.155 (2026-05-28)

Added

  • Business upload plugin supports concurrent upload
  • Upload entity adds createTime field

v2.0.152 (2026-05-27)

Added

  • TCP tunneling feature
    • Supports intranet tunneling for remote access
    • Provides stable tunneling connection service

v2.0.149 (2026-05-25)

Fixed

  • Fixed Studio project file size limit on import
  • Improved user experience

v2.0.148 (2026-05-25)

Fixed

  • Fixed PLC array reading error
  • Fixed variable plugin property update error

v2.0.143 (2026-05-24)

Fixed

  • Fixed known issues

v2.0.140 (2026-05-24)

Fixed

  • Fixed known issues

v2.0.136 (2026-05-19)

Added

  • Internationalization support

v2.0.126 (2026-05-14)

Added

  • Gateway version update feature
    • Toolbar added "Gateway Version" button
    • Automatically fetches latest versions from NuGet official site and local nupkgs directory
    • Supports one-click GatewayVersion update and automatic rebuild

Optimized

  • Dark mode adaptation

Fixed

  • Fixed known issues

v2.0.124 (2026-05-13)

Added

  • Import ZIP project supports duplicate name check, with options to rename or overwrite the project with the same name

Optimized

  • Gateway data tree node display

v2.0.123 (2026-05-12)

Added

  • Rule engine Excel export and import

Fixed

  • Fixed known issues

v2.0.122 (2026-05-12)

Optimized

  • MQTT RPC topic supports wildcards

v2.0.121 (2026-05-12)

Optimized

  • OPCUA Server certificate prompt optimization

v2.0.120 (2026-05-11)

Added

  • Import supports clearing original data

Optimized

  • Frontend no longer shows blank page on network errors

Fixed

  • Memory variable write error
  • Known issues

v2.0.118 (2026-05-09)

Added

  • Studio NuGet package plugin management

    • Supports visual plugin management interface
    • Supports batch enable/disable plugins
    • Plugin state persisted to project.json
    • Automatically builds and restarts runtime based on project.json configuration
  • Rule engine variable RPC node

    • Added variable RPC node type
    • Supports calling variable RPC methods through rule engine

v2.0.111 (2026-05-07)

Fixed

  • Fixed known issues.

Adjusted

  • API operations no longer wait for background thread restart.

v2.0.104 (2026-05-06)

New Features

  • Batch copy: Supports copying channels, devices, variables with configurable copy count and automatic name deduplication
    • Copying a channel automatically cascades copies of all devices and variables under it
    • Copying a device automatically cascades copies of all variables under it

v2.0.0 (2026-05-06)

New Features

  • Data collection: Supports data collection via Modbus TCP/RTU, OPC UA, MQTT, Kafka, RabbitMQ and other industrial protocols
  • Alarm management: Supports boolean on/off alarms, high/high-high/low/low-low limit alarms and custom alarm rules
  • Rule engine: Visual rule flow orchestration, supports custom nodes and script extensions
  • Redundancy configuration: Master-backup redundancy architecture, supports automatic failover and data synchronization
  • Script extension: Supports custom expression scripts and C# script node extensions for business logic
  • Permission management: User-role-permission three-level management system with fine-grained permission control
  • Watchdog service: Automatically monitors and manages gateway processes, ensuring stable system operation
  • Studio development environment: Provides visual configuration interface for convenient management of channels, devices and variables

Platform Support

  • Windows x64
  • Linux x64