ClearBlade IoT Enterprise and Edge

2025.4

2025.4.22 (2026-08-12)

Platform:

  • Enhancement: Allow setting a global auth service for broker connections with MQTT.BrokerAuthService and MQTT.BrokerAuthSystem

  • Fix: Global promises referenced by multiple preloaded requests could run callbacks with incorrect context

2025.4.21 (2026-08-05)

Platform:

  • Fix: Small amount of memory leaked when V8 engine is destroyed

  • Fix: Heap snapshot memory leaked for lifetime of V8 isolate

See also 2025.3.21

2025.4.20 (2026-07-06)

Platform:

  • Fix: Set headers on proxied HTTP responses

  • Fix: Support HTTP/2 on TLS listeners

  • Enhancement: Allow headers to be specified multiple times in JavaScript responses

2025.4.19 (2026-06-26)

Platform:

  • Fix: Panic if incorrect argument type is provided to embedded JS function

  • Fix: Only allow libraries to be created with system visibility

  • Fix: IoT device properties not updated when publishes come from code services

  • Fix: Apply security patches to dependencies

  • Fix: Validate that provided GCP credentials are for a service account

  • Enhancement: Start all adapters on edge startup. Can be disabled by toggling Edge.RunAdaptersOnStartup.

  • Enhancement: Add user id to HTTP router log attributes

  • Enhancement: Allow multiple config files to be parsed by providing the -config flag more than once

  • Enhancement: Add acme subcommand for rescanning and force-renewing TLS certificates

  • Enhancement: Add prometheus metric clearblade_tls_certificate_expiration_days

  • Enhancement: Remove Engine.DisableManualDukGc flag in favor of Engine.DukGcIntervalSeconds

  • Enhancement: Only run garbage collection in Duk if the engine has executed code since the last GC cycle

See also 2025.3.20

2025.4.18 (2026-06-16)

Platform:

  • Fix: Sync optimizer no longer drops updates when multiple updates to the same asset queue up before the dispatcher drains

  • Fix: Remove artificial heap cap in v8

  • Enhancement: Remove excessive garbage collection calls in Duk. This can be reverted by setting Engine.DisableManualDukGc = false

  • Enhancement: Reduce memory fragmentation when both Duk and V8 engines are used simultaneously

  • Enhancement: Expose the following MQTT5 properties in mqtt lib: responseTopic, messageExpiryInterval, contentType, payloadFormatIndicator

2025.4.17 (2026-06-02)

Platform:

  • Fix: Race condition when fetching V8 statistics could cause segfault

  • Fix: Allow microtask execution after sending response in code service

  • Fix: Signal manager memory leak on stream services

  • Fix: Prevent message definitions from being re-sent on every transmission when RPC.EncoderDecoderType = "gob"

  • Fix: Limit number of goroutines used when segmenting RPC messages

  • Enhancement: Set default value of RPC.EncoderDecoderType to gob

  • Enhancement: Cache results of Postgres stats queries

2025.4.16 (2026-05-14)

Platform:

  • Fix: 2FA authentication no longer fails when a user has no phone number and no two_factor_method configured

  • Fix: Return correct MQTT5 reason codes in UNSUBACK, PUBCOMP, and PUBREL packets

  • Fix: Continuous aggregate query FILTERS returning no results due to double-encoding of parameter values

  • Fix: Add idle timeouts to HTTP servers, configurable with HTTP.IdleTimeout (default 120s) and HTTP.ReadHeaderTimeout (default 5s)

  • Fix: Updating a continuous aggregate built on top of another continuous aggregate no longer fails with an "Unknown table ... -- permission denied" error

  • Enhancement: 2FA auth response now includes delivery_status per method and succeeds when at least one method succeeded

Console:

  • Feature: Manage continuous aggregates for hypertable collections

  • Enhancement: Update code editor to support modern JS syntax

2025.4.15 (2026-05-06)

Platform:

  • Fix: Re-verify mTLS certificate chain when connection is resumed

  • Fix: At startup, cluster may incorrectly be determined to be stable when it is unstable

  • Fix: Allow resp.send to be called with no argument

  • Fix: Return deprecated code meta fields from HTTP endpoints for backwards compatibility

  • Enhancement: Improve performance of mTLS broker auth

  • Enhancement: Update V8 to version 14.8

  • Enhancement: Rename /admin/revoked_certs to /admin/mtls-certs/revoked

  • Enhancement: Rename /admin/settings/mtls/generate-certificate to /admin/mtls-certs/roots

  • Enhancement: Rename /admin/settings/mtls/{systemKey}/{certName}/generate-certificate to /admin/mtls-certs/systems/{systemKey}

  • Enhancement: Rename /admin/settings/mtls/{systemKey}/{certName} to /admin/mtls-certs/systems/{systemKey}/{certName}

  • Enhancement: Rename /admin/settings/mtls/{systemKey} to /admin/mtls-certs/systems/{systemKey}

  • Enhancement: Rename /admin/devices/{systemKey}/{deviceName}/generate-certificate to /admin/mtls-certs/devices/{systemKey}/{deviceName}

  • Enhancement: Increase default value of RPCExecutionWarnThresholdMilliseconds from 1000 to 2000

  • Enhancement: Use memory pool for password hashing

  • Enhancement: Change log levels of many logs

  • Enhancement: Do not create default indexes on hypertables

  • Enhancement: Increase default value of cluster DebounceTimeoutSeconds from 10 to 30

  • Enhancement: Add config option Security.MaxTlsConnectionsPerNodePerSecond

  • Enhancement: Reduce memory and CPU used to plan Postgres queries

  • Enhancement: Allow IoTCore clients to authenticate via JWT with system_key claim

  • Enhancement: Add config var MQTT.EnabledAuthMethods to restrict which auth methods the broker accepts

  • Enhancement: Add config var MQTT.MaxConnectionDuration to enforce a broker disconnect cadence

  • Enhancement: Add endpoint for device legacy auth

  • Enhancement: Remove config var IotCore.StrictClientIDEnforcement

  • Enhancement: Use memory pool for gzip compression on HTTP endpoints

2025.4.14 (2026-04-15)

Platform:

  • Fix: Identifier ClearBladeAsync undefined in duktape services

  • Fix: Invalid syntax error in column parsing for duktape error stacks

  • Fix: Anon tokens using user TTLs

2025.4.13 (2026-04-13)

Platform:

  • Enhancement: Add clientId to mqtt connect/disconnect trigger payloads

  • Enhancement: Add kill client functions to clearblade_async library

2025.4.12 (2026-04-02)

Platform:

  • Fix: Webhook deployment for platform-to-edge sync fails on initial edge connect

See also 2025.3.19

2025.4.11 (2026-03-24)

See 2025.3.17 and 2025.3.18

2025.4.10 (2026-03-23)

Platform:

  • Fix: Allow accessing symbols on JavaScript database results

  • Fix: Endpoint may timeout instead of returning error when getting V8 profiles

  • Enhancement: Minfiy native library source code

See also 2025.3.16

2025.4.9 (2026-02-25)

Platform:

  • Fix: Source map not string but nil error

  • Fix: Database queries in Duk could cause TypeError: cannot string coerce Symbol

  • Fix: Permission checks

  • Enhancement: Allow referencing existing continuous aggregates by name in Collection.createContinuousAggregate and Collection.fetchAggregateRaw

  • Enhancement: Add V8 profiling support to console - accessible from the 'Currently Running' tab on the service page

2025.4.8 (2026-02-17)

Platform:

See 2025.3.14

2025.4.7 (2026-02-11)

Platform:

See 2025.3.13

2025.4.6 (2026-02-09)

Platform:

  • Enhancement: Add prometheus metrics clearblade_code_services_open_read_streams and clearblade_code_services_open_write_streams

  • Enhancement: Add content-length header to http responses to avoid chunked transfer encoding

2025.4.5 (2026-01-30)

Platform:

  • Fix: Services executed simultaneously had a small chance of loading the wrong native libraries

2025.4.4 (2026-01-27)

See 2025.3.11

2025.4.3 (2026-01-26)

Platform:

  • Enhancement: When running timers, triggers, and stream services, always execute as run-as user, or system owner if run-as user is not set

2025.4.2 (2026-01-14)

Platform:

  • Fix: ReadableStreams in execution engine are not closed after being read

  • Enhancement: Results from GET code meta endpoints can be filtered by euid through query param

2025.4.1 (2026-01-13)

Platform:

  • Fix: Require permissions on edge resource to read or mutate edge table schema

  • Fix: Response streams from fetch return incorrect data

  • Enhancement: Allow RPCKeepaliveInterval to be set to any value

  • Enhancement: Add retrysync and retrybucketsetfilesync subcommands

2025.4.0 (2026-01-06)

Platform:

  • Breaking: Developer tokens will now expire by default

  • Feature: Support heap and CPU profiling in V8

  • Feature: Add support for protobuf message encode and decode

  • Feature: Add transform services that automatically subscribe to topics and support auto-scale to zero

  • Feature: Add source map support for services and libraries

  • Feature: Allow preloaded services to autoscale from zero concurrency

  • Feature: Add ability to remotely run queries on the edge database

  • Feature: Support JavaScript Streams API in execution engines

  • Feature: Support streaming responses from code services by adding the resp.writable property when the stream library is a dependency.

  • Enhancement: Add service_type label to clearblade_code_services_running_services Prometheus metric

  • Enhancement: Add atob and btoa functions to execution engine

  • Enhancement: Allow the mqtt library client.subscribe to take an array of topics

  • Enhancement: Add topic property to MQTT.Message

  • Enhancement: Add ability to remotely exit edge recovery mode

  • Enhancement: Allow remote DB console and remote shell for edge in recovery mode

  • Enhancement: Add recovery mode reason to edge table

  • Enhancement: Dont enter recover mode if edge is still compatible with platform after a failed upgrade

  • Enhancement: Upgrade Google PubSub library to v2

  • Enhancement: Upgrade AWS Go SDK to v2

  • Enhancement: Allow engine Database.query response to be efficiently handled as a ReadableStream by adding .stream() function

  • Enhancement: Add .createReadStream() and .createWriteStream() functions to FS, FileStore, and File

  • Enhancement: Allow MQTT payloads to be written to as a stream with client.createPublishStream in the mqtt library

  • Enhancement: Allow engine fetch response object to be efficiently handled as a ReadableStream by adding .stream() function

  • Enhancement: Allow engine Collection.fetch and Collection.fetchAggregate response to be efficiently handled as a ReadableStream by adding .stream() function

  • Fix: Prevent race condition when updating heap statistics that could result in incorrect values being reported.