Skip to content

Releases: thin-edge/thin-edge.io

1.6.1

04 Aug 11:59
e7c5009
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

🚀 Features

  • mqtt: enable services to register and receive operations from c8y - #3747

🐛 Bug Fixes

  • hsm: pkcs11 generate correct CSR signature - #3737
  • cli: Restore WARN log level for tedge - #3741
  • c8y: de-duplicate custom operations on c8y/devicecontrol/notifications - #3744
  • telemetry: do not overwrite latest twin data from inventory.json values on mapper restart - #3742

📓 Documentation

  • firmware: update outdated information about Rugix - #3748
  • c8y: add info how to display custom fragments in Cumulocity Device Management UI - #3750

⛵ Refactor

  • mqtt: handle retain messages with dynamic subscriptions - #3710

📋 Miscellaneous Tasks

  • chore: bump MSRV to 1.85 - #3735

🔎 CI/CD

Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.6.0..1.6.1

1.6.0

15 Jul 15:59
a93d3fb
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

✨ Highlights

New diagnostic collection command #3608

New tedge command to make it easier to capture the diagnostic information when reporting a bug, or doing general troubleshooting. Custom diagnostic scripts can be added into your images to also collect information about custom applications. Check out the documentation

tedge diag collect
Executing /usr/share/tedge/diag-plugins/01_tedge.sh... ✓
Executing /usr/share/tedge/diag-plugins/02_os.sh... ✓
Executing /usr/share/tedge/diag-plugins/03_mqtt.sh... ✓
Executing /usr/share/tedge/diag-plugins/04_workflow.sh... ✓
Executing /usr/share/tedge/diag-plugins/05_entities.sh... ✓
Executing /usr/share/tedge/diag-plugins/06_internal.sh... ✓
Executing /usr/share/tedge/diag-plugins/07_mosquitto.sh... ✓

Total 7 executed: 7 completed, 0 failed, 0 skipped
Diagnostic information saved to /tmp/tedge-diag-2025-07-15_14-18-53.tar.gz
/tmp/tedge-diag-2025-07-15_14-18-53.tar.gz

Configuration management allows creating parent directories #3718

New tedge-configuration-plugin properties (parent_user, parent_group and parent_mode) to support creating the the required folder hierarchy if when applying configuration from the cloud to the device. This gives you more flexibility when applying configuration to devices where the parent folder hierarchy might not already exist.

Below shows an example of using the new parent_* properties in the /etc/tedge/tedge-configuration-plugin.toml file:

[[files]]
path = '/etc/containers/certs.d/example/ca.crt'
type = 'harbor-certificate'
user = 'tedge'
group = 'tedge'
mode = 0o640
# Below are new parameters used if the config file's
# parent folders don't exist
parent_user = 'root'
parent_group = 'root'
parent_mode = 0o700

Check out the documentation for more details.

HSM/PKCS11 improvements

Further improvements to the Hardware Security Module support (HSM) (via the PKCS11 API) which was first introduced in 1.5.0, and it makes it even easier to use private keys which are stored securely with thin-edge.io.

  • You can now use tedge cert renew c8y when using a HSM (with the Cumulocity Certificate Authority Feature) - #3677
  • tedge connect shows information about the type of PKCS11 connection being used and the associated key's PKCS11 URI - #3623
  • Extended supported key types to include: EC SECP384R1 and SECP521R1 keys - #3631

🚀 Features

  • certificates: avoid using months when displaying certificate duration - #3673
  • cli: allow tedge user to set env variable when using sudo - #3688
  • registration: add url flag to tedge cert download c8y - #3689
  • profile: process configuration before software in device profile operations - #3685
  • cli: add offline mode to tedge reconnect command - #3719

🐛 Bug Fixes

  • cli: accept values starting with hypen in flags related to passwords - #3619
  • aws|az: re-enable connect checks for aws and azure - #3654
  • cli: redirect log outputs to stderr instead of stdout - #3658
  • packaging: missing operation file c8y-remote-access-plugin when installed on Alpine Linux - #3669
  • software: fix tedge-apt-plugin version mismatch error message - #3672
  • fix: aws and az fail when no response on connection check - #3656
  • cli: wrong message being shown on system.toml parse error - #3668
  • installation: remove redundant raspberry pi sudoers rule - #3683
  • entity_store: clear all retained entity messages on entity deregistration - #3681
  • fix: clear entity twin data in entity store with empty retained message - #3699
  • fix: no dynamic connection when deregister does nothing - #3697
  • troubleshooting: add connection timeout when connecting to the local broker - #3702
  • c8y: continue to de-duplicate incoming operations once operation is complete - #3728
  • bridge: manually republish messages on built-in bridge reconnect - #3717

📓 Documentation

  • hsm: Fill in fallback values for sh command blocks - #3611
  • docs: fix screenshot branding logo - #3627
  • docs: remove unreferenced images - #3636
  • hsm: fix broken anchors in HSM / tedge-p11-server docs - #3638
  • docs: update screenshots - #3637
  • docs: remove unused/unreferences images and dev task - #3639
  • telemetry: document support for using unix timestamps in telemetry data - #3649
  • developer-exp: Add JSON schema for MEA MQTT messages - #3652
  • docs: update Apama repository docs to use latest 2026 version - #3674
  • developer-exp: update build instructions - #3676
  • troubleshooting: document tedge diag collect user-guide - #3663
  • certificates: add tip on how to download only the root certificate using openssl and awk - #3692
  • entity_store: Entity management API documentation - #3659
  • docs: remove apama docs from thin-edge.io docs - #3722
  • aws: add permission to publish retained messages to AWS IoT Core policy - #3724

⛵ Refactor

  • testing: Update tests to check for maximum message counts only when appropriate - #3615
  • refactor: reinstate private key zeroisation - #3621
  • refactor: use a single function to find key - #3622
  • refactor: flush after calling write_all - #3614
  • refactor: remove hardcoded temporary directory handling in LoggedCommand - #3630
  • refactor: reduce the number of times we read tedge.toml - #3625
  • refactor: remove redundant use_basic_auth checks - #3657
  • mqtt: support dynamic MQTT subscriptions in mqtt-channel/tedge-mqtt-ext - #3661
  • refactor: run tests in CI with different temporary directory - #3726
  • refactor: Revert "disable problematic tests to allow the CI changes to be merged" - #3727
  • refactor: ensure /mnt has free space before running tests in CI - #3731

🔎 Testing

  • c8y|testing: enable Cumulocity certificate-authority system tests - #3617
  • security|testing|hsm: PKCS11 connect using RSA keys of all sizes - #3644
  • tests: improve log assertion by filtering logs by time - #3705
  • testing: improve self-signed certificate cleanup - #3706
  • testing: fix system test formatting and linting - #3711
  • testing: refactor test setup - #3712
  • testing|hsm: Add tedge-p11-server compatibility suite - #3730

📋 Miscellaneous Tasks

  • containers: Update to Alpine 3.21 as the previous version is EOL - [#3624](#362...
Read more

1.5.1

13 May 14:52
1ec3eed
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

Thanks to everyone for providing reporting bugs in the last 1.5.0 release. This release resolves the reported bug fixes and also add the documentation related to some of the larger features, Cumulocity Certificate Authority, HSM Support and the HTTP Proxy Configuration.

Fun fact: This release brings up our 6000th commit in the project!

🐛 Bug Fixes

  • troubleshooting|c8y|connectivity: support HTTP proxy in c8y remote access plugin - #3600
  • mqtt|cli: ensure that tedge mqtt pub fully publishes messages sent with QoS 2 - #3603
  • hsm: pkcs11 signing with a wrong key and a ready check when TedgeP11Client is created - #3602

📓 Documentation

  • firmware: rename Rugpi to Rugix - #3593
  • connectivity: add instructions and tests on how to install thin-edge.io behind a proxy - #3596
  • hsm: Add tedge-p11-server reference and update hsm-support.md - #3597
  • c8y|certificates: Cumulocity certificate authority documentation - #3590
  • connectivity: Proxy configuration after installation - #3607

🔎 Testing

  • testing: use new library keyword to get c8y domain - #3604

Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.5.0..1.5.1

1.5.0

05 May 18:54
e38b6fb
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

✨ Highlights

Cumulocity Certificate Authority Support #3259 #3523

Enroll devices using the new Cumulocity Certificate Authority feature. The new Cumulocity functionality is still in the PUBLIC PREVIEW phase, however it should be rolled out to most public tenants relatively soon. Please contact your Cumulocity support if you have any questions about enabling it on your tenant.

The new enrollment capability allows thin-edge.io users to also wrap their own process to onboarding devices, through this simple yet secure mechanism.

Benefits of the new thin-edge.io integration with the Cumulocity certificate authority include:

  • Easy device enrollment (using device specific one-time passwords)
  • Automatic certificate renewal service (currently only for SystemD but a cron job could also be manually configured)
  • Seamless upgrade path from self-signed certificates to a Cumulocity CA issued certificate (migrated automatically by the renewal service)

Hardware Security Module (HSM) support via PKCS#11 (cryptoki) Interface #3421

Support for accessing the device's private key stored in secure storage via the PKCS#11 interface (also called cryptoki). By storing private keys in a HSM it prevents the private key from being exposed or stolen by attackers.

The new component, tedge-p11-server, is service which allows the tedge-mapper to utilize the private keys for establishing a secure connection to the cloud without having to directly access the key itself.

Any HSM which has a PKCS#11 interface are supported, some examples of such modules are:

  • USB based devices like NitroKey HSM 2, Yubikey 5
  • TPM 2.0 (Trusted Platform Module)
  • ARM TrustZone (via OP-TEE)

Entity Store HTTP API #3230 #3425

The tedge-agent now provides a new HTTP API endpoint which allows users/services to access and control the registration of entities such as child devices and services.

This makes it easier to build User Interfaces to query information about the which child devices and services are registered on the local thin-edge.io MQTT broker without having to have your own MQTT client.

  • Register/Deregister
  • List and query existing entities
  • Update digital twin information on child devices and services (e.g. similar to the /twin MQTT topic)

See the Documentation for more details.

HTTP Proxy support using CONNECT Tunneling #3531

thin-edge.io can now be used behind a HTTP/HTTPS proxy (provided the proxy supports HTTP Tunneling).

Note: The proxy support will require you to use the built-in bridge mode where the tedge-mapper connects to the cloud instead of mosquitto, however the built-in bridge will be the future default.

Configuring the HTTP/HTTPS proxy settings can be easily configured for the tedge.toml via the tedge config command:

tedge config set mqtt.bridge.built_in true
tedge config set proxy.address "http://1.2.3.4:8080"
tedge config set proxy.username "user"
tedge config set proxy.password "<password>"
tedge reconnect c8y

New command: tedge http #3357

New CLI command called tedge http which makes it very easy to access the new Entity Store API, and local Cumulocity proxy without having to worry about the exact port numbers of the different services, or what client authentication is required as the settings are automatically read from the tedge.toml file.

Examples

# Get list of entities (using the new Entity API endpoint)
tedge http get /te/v1/entities

# Create a new managed object via the local Cumulocity Proxy
tedge http post /c8y/inventory/managedObjects '{"name":"example"}' --accept-type application/json

🚀 Features

  • cli: support shell completions in tedge cli - #3332
  • configuration: support read-write device.id in tedge cert/connect - #3326
  • configuration|mqtt|bridge: add MQTT keepalive_interval config to allow custom value per bridge - #3365
  • configuration: allow environment variables to be reset by setting them to the empty string - #3497
  • c8y|cli: log the auth method when running tedge connect c8y - #3384
  • telemetry: Allow name and type in inventory.json - #3419
  • mqtt|cli: add optional break conditions to tedge mqtt sub - #3445
  • mqtt|cli: support retained-only flag in tedge mqtt sub - #3494
  • cli|certificates: support CSR file formats from gnutls certtool - #3556
  • c8y|childdevices: append the option whether to add c8y_IsDevice to child devices - #3560
  • cli|certificates: validate new certificate on connect - #3551

🐛 Bug Fixes

  • configuration|troubleshooting: ensure file transfer service always writes uploaded file - #3364
  • cli|certificates: device.id is derived from device certificate if certificate exists - #3372
  • cli: tedge mqtt panics on invalid MQTT topics - #3396
  • yocto|packaging: fallback to systemctl command when debian helpers are not available - #3402
  • software|firmware|profile: c8y operation fragments for firmware/software update and device profile - #3362
  • packaging|installation: only warn if refresh-bridges fails during installation - #3410
  • profile: make device profile skip field optional and skip operation fragment when it is set to true - #3417
  • c8y|aws|az|certificates: add device.csr_path to cloud profiles - #3441
  • mqtt: subscribe to topics on reconnection when session persistence is not enabled or broken - #3462
  • fix: skip chown for cert and key when using Basic Auth - #3479
  • c8y: de-duplicate operations received in quick succession from c8y/devicecontrol/notifications - #3454
  • c8y: use both mqtt and http address when validating connecting c8y tenant url - #3502
  • aws|az: skip bridge status messages in aws/az mappers - #3505
  • cli|certificates: improve accessibility of tedge cert show - #3527
  • cli|certificates: tedge cert renew returning success exit code on error - #3525
  • c8y: c8y mapper config should use the value of c8y.mqtt as mqtt endpoint - #3552
  • mqtt|entity_store: clear retained entity twin messages on deregister - #3499
  • cli|certificates: support relative path args when using tedge cert - #3564
  • fix: Avoid clearing updated keys on twin update - #3570
  • workflows: Overwritten workflow failure reason - #3583
  • fix: Include name in tedge service registration message - #3592

📓 Documentation

  • docs: rename Cumulocity IoT to Cumulocity - #3335
  • docs: update links to Cumulocity documentation pages - #3334
  • docs: update external urls which were being redirected - #3337
  • c8y: add c8y tenant manager note to getting started guide - #3354
  • c8y: add missing c8y argument to cloud connect command - #3379
  • docs: fix Cumulocity username/password instructions - #3381
  • c8y: use SmartREST 2.0 external id terminology instead of name - #3442
  • c8y: add common connection error due to VPN - #3472
  • c8y: move common errors section to its own subheader - ...
Read more

1.4.2

14 Jan 18:14
5101467
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

🚀 Features

  • installation|cli: Trigger tedge multicall with symlinks as well as sub-commands - #3313

🐛 Bug Fixes

  • cli: cleanup empty profiles - #3310
  • cli: tedge cert create-csr should use cloud profile's CN - #3316
  • configuration: support symlinks in atomic file write methods - #3324
  • cli: Update component crates descriptions - #3317

📓 Documentation

  • doc: Add documentation example missing arg - #3320

⛵ Refactor

  • refactor: Simplify command state update methods - #3309
  • c8y: Simplify SmartREST publish topics - #3292

🔎 Testing

  • testing: pretty print json payloads and disable robotidy to preserve leading whitespace - #3314

Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.4.1..1.4.2

1.4.1

19 Dec 15:15
b48c19c
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

🐛 Bug Fixes

  • workflows: process non-versioned in-progress commands on startup - #3306
  • workflows: Persist workflow definition of pending commands on start - #3307

Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.4.0..1.4.1

1.4.0

17 Dec 12:33
8abce11
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

✨ Highlights

Cloud profiles

Support connecting thin-edge.io to multiple Cumulocity tenants. Check out the docs for more details.

Using workflows in custom operation handlers

Use the power of thin-edge.io workflows to handle the execution of custom operation handlers. Not only does this promote a more robust handling of the execution of the custom operation, but it also encourages users to implement a cloud-agnostic handler which enables you to trigger the operations from any cloud.

See the docs for more details.

Support uploading files to Cumulocity

A new subcommand has been added which allows users or process/s to upload a file to Cumulocity easily.

Example

Upload a csv file to Cumulocity as an event with an attached binary file.

tedge upload c8y \
    --file "/opt/data/some_data.csv" \
    --mime-type "text/csv" \
    --type "tedge_data_logger_snapshot" \
    --text "Data logger data" \
    --json "{\"additionalData\":{\"application\":\"data-logger\"}}"

See the reference page for all the options.

🚀 Features

  • c8y: allow operation handlers to match on json payloads - #3144
  • workflows: support reloading workflows at runtime - #3180
  • c8y: support user topics when handling custom operation - #3189
  • c8y: support Cumulocity SmartREST 1.0 - #3196
  • workflows: add workflow support for custom operation handlers - #3225
  • cli: add filtering to tedge config list - #3264
  • c8y: add c8y createBulk topics to bridge - #3286
  • configuration|c8y: support Cumulocity legacy file upload/download operations - #3285
  • feat: Support multiple cloud profiles - #3278
  • c8y|cli: tedge upload c8y - #3274

🐛 Bug Fixes

  • packaging: target incompatibility with armv6 package for raspberry pi - #3182
  • c8y|bridge: remove duplicate subscription in c8y built-in bridge - #3188
  • mqtt|c8y: Trim reason field in "succeed custom operation" SmartREST message - #3179
  • mqtt|c8y: replace hardcoded topic prefix for SmartREST templates when creating bridge config - #3198
  • software: agent stops processing on ill-formed software_update command payloads - #3209
  • c8y|bridge: Subscribe to C8Y topics using QoS 1 - #3201
  • workflows: agent leaves interrupted operations in non-final state - #3210
  • troubleshooting: show config set instructions in certificate error message - #3221
  • c8y: c8y http proxy wrongly assumes any hostname is from the same tenant - #3222
  • troubleshooting: tedge-agent error does not show which file does not exist - #3223
  • fix: Don't fail if only some operations could not be loaded - #3236
  • workflows: builtin workflows don't have to be removed - #3258
  • fix: skip publishing error message if operation update is not required - #3266
  • fix: ensure concurrent server always responds to shutdown signal - #3291
  • c8y: split c8y JSON over MQTT messages using newline delimiter - #3302

📓 Documentation

  • workflows: add missing variable available in workflow states - #3164
  • firmware: add notes to firmware on-boarding instructions - #3181
  • c8y: add required ports information for cloud connections - #3194
  • monitoring: add tedge-watchdog decision page - #3193
  • c8y: remove docs for measurements with units - #3245
  • workflows: remove workflow warnings - #3287
  • yocto|firmware: update yocto instructions to use new kas project location - #3298

⛵ Refactor

  • refactor: reorder crates/core/c8y_api/src/smartrest/operation.rs - #3161
  • configuration|c8y: add support to define_tedge_config for (optionally) multi-value fields - #3126
  • refactor: flexible Authorization header type of HTTP request - #3190
  • refactor: Merge log_manager crate under tedge_log_manager - #3215
  • refactor: update crate dependencies - #3216
  • c8y: simplify c8y_http_proxy - #3224
  • certificates: Untangle certificate request, creation and renewal - #3268
  • cli: use CommonArgs for common arguments - #3273
  • refactor: Extract operation implementation details from CumulocityConverter - #3260
  • refactor: Extract supported_operations module from c8y_api - #3277
  • refactor: Create a module with SmartREST message id consts - #3282

🔎 Testing

  • testing: add bridge health status keywords - #3167
  • testing: format robotframework system tests - #3169
  • mqtt|testing: check publishing of telemetry data whilst mapper is down - #3187
  • monitoring|testing: Create a tedge-watchdog test suite - #3138
  • testing: update robotframework-c8y library - #3276

📋 Miscellaneous Tasks

  • developer-exp: update packages in dev container image - #3172
  • developer-exp: add support for building against specific gnu libc versions - #3175
  • configuration: Use tempfile in config-manager and downloader to ensure tmpfiles are always deleted - #3178
  • chore: Fix Rust 1.82 clippy lints - #3195
  • mqtt|c8y: Improve validation of SmartREST payloads - #3191
  • chore(deps): Bump crate-ci/typos from 1.26.1 to 1.26.8 - #3207
  • troubleshooting|cli: Make --debug flag override RUST_LOG - #3208
  • developer-exp: Enable line numbers for logs when using RUST_LOG - #3211
  • mqtt: Add a warning about clearing command metadata being unsupported - #3213
  • feat: Group workspace crates first in top-level Cargo.toml and deduplicate yansi and toml dependencies - #3214
  • troubleshooting: Attach topic to c8y message conversion error - #3217
  • software|configuration: Change which download errors are retryable - #3229
  • mqtt: wait for mosquitto to start rather than blindly sleeping in tedge connect - #3246
  • troubleshooting|cli: Add --log-level to tedge and c8y-remote-access-plugin - #3254
  • developer-exp: publish devcontainer image - #3265
  • chore: fix rust 1.83 clippy lints - #3272
  • troubleshooting|cli: Add --log-level to tedge-write and tedge-apt-plugin - #3271
    ...
Read more

1.3.1

04 Oct 13:07
0866b9b
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

🚀 Features

  • profile: Support skipping operations in device profile - #3142
  • troubleshooting: allow to init remote access plugin with non-standard user/group - #3131
  • packaging: add tedge-apt-plugin as recommended dependency of tedge-agent - #3152

🐛 Bug Fixes

  • monitoring: Ignore extra HealthStatus fields in service monitor - #3132
  • registration: c8y mapper panics on unexpected registration message - #3134
  • firmware|workflows: Capability message for firmware_update workflow - #3146
  • configuration: Stop chowning in tedge-agent - #3148
  • troubleshooting|c8y: check if log exists before trying to upload it - #3150
  • packaging: add mosquitto as a weak dependency to tedge - #3151
  • mqtt: Increase default MQTT max payload size to 256 MiB - #3130

📓 Documentation

  • docs: Add tedge-write documentation page - #3116
  • monitoring: publish pid as number instead of string - #3127

🔎 Testing

  • aws|testing: extend AWS system tests using robotframework-aws library - #3097
  • testing: update source to testing libraries - #3135
  • testing: format code and add ci check for robotframework formatting - #3129

📋 Miscellaneous Tasks

  • registration: Simplify entity auto-registration - #3139

Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.3.0..1.3.1

1.3.0

16 Sep 22:18
61fdb06
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

🚀 Features

  • c8y|aws|az: make aws and azure topic prefixes configurable in built-in bridge - #3052
  • profile: support device profile operation - #2920
  • c8y: use custom topic prefix in mapper service name - #3078
  • workflows: report to the cloud workflow definition errors - #3079
  • c8y: add an option to use c8y operation ID to update its status - #3076
  • troubleshooting: avoid using explicit path to the c8y-remote-access-plugin binary - #3112
  • configuration|installation|cli: support setting config dir via env variable - #3113
  • containers|packaging: use explicit user/group id in container image - #3118
  • containers|packaging: initialize the remote access plugin in the container image - #3120

🐛 Bug Fixes

  • workflows: don't send status update for sub-workflow operations - #3050
  • mqtt: increase max packet size for built-in bridge - #3059
  • software: software artifacts are downloaded twice when the update-list feature is not available - #3065
  • software: display error information for failed software update due to unrecognised type - #3058
  • profile: create device_profile workflow before loading workflows from disk - #3101
  • configuration: tedge write remove hardcoded path - #3099
  • cli: c8y-remote-access-plugin help - #3121
  • c8y: handle error when jwt token could not be retrieved - #3119
  • bridge: builtin bridge disconnected when under heavy load - #3122

📓 Documentation

  • mqtt|security: fix deprecated mTLS setting in user docs - #3100
  • profile: device profile operation guide - #3102

⛵ Refactor

  • refactor: Executing takes extra MQTT messages - #3049
  • workflows: improve handling of workflow default values - #3064
  • refactor: restore visibility of tedge api relied upon by thick edge - #3090
  • configuration: Simplify config manager control flow - #3086
  • mqtt|c8y: include topic prefix in c8y last-will service name - #3108

🔎 Testing

  • testing: retry connecting to broker in bridge test proxy - #3072
  • testing: improve tedge-write RobotFramework suite - #3094

📋 Miscellaneous Tasks

  • c8y: don't process operation status duplicates - #3053
  • chore(deps): Bump crate-ci/typos from 1.23.7 to 1.24.1 - #3082
  • software|configuration: fix issues in atomically_write_file_* functions - #3081
  • configuration: Only use tedge-write after normal copy fails due to permissions and improve tedge-write logging - #3069
  • chore(deps): Bump crate-ci/typos from 1.24.1 to 1.24.3 - #3092
  • general: Extract atomic write function into a module - #3091
  • configuration: Fix process exit code and stderr printing 2 times - #3098
  • chore(deps): Bump peter-evans/create-pull-request from 6 to 7 - #3104
  • chore(deps): Bump crate-ci/typos from 1.24.3 to 1.24.4 - #3103
  • containers|packaging: fix docker linting warnings - #3117
  • testing: Reformat Robot Framework files with robotframework-tidy - #3109
  • workflows: improve workflow builtin actions - #3105

🔎 CI/CD

  • ci: update codecov range - #3060
  • testing: don't fail cargo test on warnings - #3084

Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.2.0..1.3.0

1.2.0

01 Aug 21:01
bbfef48
Compare
Choose a tag to compare

What's Changed

All notable changes to this project will be documented in this file.

🚀 Highlights

Support Cumulocity IoT device availability feature #2940

The Cumulocity IoT Device monitoring feature is supported out-of-the-box with thin-edge.io. This makes it easier to monitor if your device is online and sending data (with minimal bandwidth).

Check out the documentation for more details.

Cumulocity Remote Access connections are now independent when using systemd #3007

If you're using systemd, then the Cumulocity Cloud Remote Access feature is even more useful as thin-edge.io now uses systemd socket activation to launch the connection meaning that the connection is now fully independent of other services...to put it another way, if you're using the Cumulocity IoT Cloud Remote Access feature to connect securely to your device with SSH, then you can now restart all of the thin-edge.io services, or even do a full thin-edge.io update without getting disconnected!

tedge config supports appending/removing values in an array-type tedge configs - #2943

This might not sound very interesting but if you're using custom SmartREST 2.0 templates with thin-edge.io, then the adding and remove templates just became a lot easier. You can easily add and remove single values without having to check what any existing values are.

For example, adding and removing values to the c8y.smartrest.templates setting is shown below (also including a comparison without how it previous was done).

# before - each time you set a new value you have to provide the old values
tedge config set c8y.smartrest.templates mycollection1
tedge config set c8y.smartrest.templates mycollection1,mycollection2
tedge config set c8y.smartrest.templates mycollection1,mycollection2,mycollection3

# after - only add the value you want
tedge config add c8y.smartrest.templates mycollection1
tedge config add c8y.smartrest.templates mycollection2
tedge config add c8y.smartrest.templates mycollection3

# Or remove a single value without checking what was previously set
tedge config remove c8y.smartrest.templates mycollection2

Note These new command is not just limited to the c8y.smartrest.templates configuration, but any array based configuration like c8y.topics, az.topics or aws.topic.

🚀 Features

  • aws: retry aws connection check when establishing initial connection - #3004
  • c8y|cli: tedge cert upload usability improvements - #2961
  • configuration: avoid using 444 permissions in example tedge-configuration file - #2948
  • configuration: use loopback ip address instead of alias to improve compatibility - #2952
  • configuration|troubleshooting: Use workflows for config and log management operations - #2844
  • mqtt: Add reconnection backoff to built-in bridge - #2915
  • software: add extra context to errors when atomically writing to file - #2975
  • software: skip package download if the url is empty - #2905
  • troubleshooting: add path and method used to HTTP error messages to improve debugability - #2957
  • troubleshooting: skip filtering by date when a static path is used - #2991
  • troubleshooting|c8y: upload c8y log file on failure by default - #3009
  • troubleshooting|c8y: use direct c8y connection for c8y-remote-access-plugin - #3006
  • workflows: workflow support combining fixed strings with variable expansions - #2918

🐛 Bug Fixes

  • c8y: Remove unwanted host header before forwarding request to Cumulocity - #2946
  • c8y: use MQTT as well as HTTP host to determine possible tenant url - #2977
  • childdevices: tedge-agent skip legacy topic subscription when running as a child device - #3035
  • childdevices: tedge-agent use the root topic when provided by the cli flag - #3033
  • cli: tedge config get returns 1 when a key is not set - #2995
  • configuration: make tedge-write not reset owner/group - #2974
  • configuration: use octal format for file permission in generated example file - #2958
  • configuration|c8y: Parse root certificate from either file or directory in tedge cert upload - #2953
  • fix: stop OperationHandler spawning extra tasks - #3046
  • mqtt: built-in MQTT bridge handling of QoS 0 messages published to the cloud topic - #3028
  • mqtt: Handle messages republished by MQTT bridge following a disconnection event - #3018
  • mqtt|cli: disconnect cleanly from local MQTT broker in tedge connect - #3025
  • mqtt|cli: Ensure the MQTT connection is properly closed - #2936
  • mqtt|cli: tedge mqtt ignoring ctrl-c when connection fails - #2950
  • packaging: improve compatibility of user/group existence check in package maintainer scripts - #2942
  • software: Include software plugin output in workflow log - #2895
  • software|mqtt: too many software list requests - #2964
  • workflows: command steps are executed twice - #2937

📓 Documentation

  • aws: fix link to the example aws policy - #2998
  • c8y: add advanced software mgmt descriptions - #2985
  • c8y: add instructions for Cumulocity IoT custom domains - #2970
  • c8y|aws|az: improve mapper documentation via adding user-context - #3000
  • configuration: change config management permissions in the example - #2955
  • docs: fix broken links in markdown files - #2962
  • docs: Fix outdated Apama plugin documentation - #2996
  • docs: update internal release process - #2934
  • firmware: improve onboarding instructions - #2971
  • mqtt|certificates: add common errors section for update-ca-certificates when rehashing fails - #2992

⛵ Refactor

  • c8y: operations module - #3012
  • c8y|registration: c8y mapper republishes metadata message with @id - #2925
  • monitoring: Refactor health status code - #2919
  • workflows: rename workflow related structs - #2912

🔎 Testing

  • c8y|testing: use more robust http parsing in the c8y-proxy host header tests - #2956
  • mqtt|cli|testing: ensure the MQTT connection is properly closed - #2944
  • mqtt|testing: built-in bridge system test compatibility - #2911
  • mqtt|testing: remove OpenSSL Error check because of flakiness - #2989
  • plugins|testing: fix unit test to pass when the unit socket file exists - #3041
  • testing: don't remove systemd-tmpfiles-setup service which is responsible for creating tmp folders - #2979
  • testing: fix regex escaping in function description - #2930
  • testing: improve debugging of bootstrap script and include systemd/cgroup compat check - [#2981](#298...
Read more