Changelog
io.Connect Desktop 9.10.1
Release date: 12.12.2025
| Components | Version |
|---|---|
| Electron | 38.7.2 |
| Chromium | 140.0.7339.249 |
| Node.js | 22.21.1 |
Electron Upgrade
io.Connect Desktop 9.10.1 comes with an upgraded version of Electron. This upgrade was made to address security issues related to the underlying Electron framework.
This Electron upgrade also brings in a notable change related to the transparency for frameless windows - transparent frameless windows now can't have resizing areas and can't be resized manually via dragging the window edges. This change was introduced with Electron 38.3.0 and is present in all Electron versions that have been released since then, which means that all io.Connect Desktop releases that use any of the affected Electron versions will be affected too.
In the context of io.Connect Desktop, this Electron change means that the "hasSizeAreas" property of the "details" top-level key in the app definition won't have any effect for transparent frameless windows:
{
"name": "my-frameless-app",
"type": "window",
"details": {
"url": "https://example.com/my-frameless-app",
"mode": "frameless",
// Making the frameless window transparent.
"transparent": true,
// This won't have any effect and the window won't have resizing areas.
"hasSizeAreas": true
}
}⚠️ Note that the
"hasSizeAreas"property still works for non-transparent frameless windows.
New Features
Persisting Window Zoom
io.Connect Desktop 9.10 introduced the ability to set independent zoom factors for same-origin web apps. However, in this zoom mode, the current zoom factors of web app instances were neither persisted on window refresh or on platform restart, nor saved in Global Layouts or Workspaces.
Now, the current zoom factors of web app instances are automatically persisted by the platform when the default zoom behavior is set globally to
"window"via thesystem.jsonsystem configuration file of io.Connect Desktop or per app via the app definition:{ "windows": { "zoom": { "enabled": true, "mode": "window" } } }The current zoom factors of all web app instances are persisted and restored automatically as follows:
window refresh - When a window is refreshed, the io.Connect platform captures the current zoom factor before the page reloads and re-applies it automatically after the page has finished loading.
zoom factor change - When the user changes the zoom factor of a standalone (not part of a Global Layout or a Workspace) web app instance, the platform persists the new zoom factor internally in the platform preferences per app. This zoom factor is automatically restored when a new instance of the same app is started or when the io.Connect Desktop is restarted.
Global Layouts and Workspace Layouts - The current zoom factor of each window participating in the Layout is saved per window. When the Layout is restored, the zoom factor saved in the Layout for each participating window takes precedence over the zoom factor from the platform preferences. To persist the current zoom factors of windows in a Layout, the user must save the Layout first.
Each new instance of the same web app will have the last persisted zoom factor for that app. For example, if there are two running instances of the same app and the user sets the zoom factor of the first one to 125, then sets the zoom factor of the second one to 150, the third started instance of that app will have a zoom factor of 150.
Trusted App Stores
When fetching FDC3 app definitions from public FDC3 App Directory stores, io.Connect Desktop automatically converts the FDC3 app definitions to io.Connect app definitions and overrides all security settings specified in the FDC3 app definitions with the security settings specified in the
system.jsonsystem configuration file of io.Connect Desktop. This is a default platform security mechanism which ensures that unknown apps from public FDC3 App Directory stores won't be able to override the security settings of the underlying Electron app.While FDC3 app definitions are usually stored in such public FDC3 App Directory stores, you may also decide to store them in one of the supported io.Connect app stores. If this is the case, you can prevent overriding the security settings specified in your FDC3 app definitions by configuring the respective io.Connect store as trusted.
The following example demonstrates configuring a local app store as trusted:
{ "appStores": [ { "type": "path", "details": { "path": "./config/apps", // The app store will be considered trusted by the platform and any security settings // you may have specified in FDC3 app definitions won't be automatically overridden. "trusted": true } } ] }
Restoring Workspaces by Reference
To specify whether the Workspaces participating in a Global Layout will be restored in their original (unmodified) state when the Global Layout is restored, or in the exact state in which they were when the Global Layout was saved, use the
restoreWorkspacesByReferenceproperty of theRestoreOptionsobject:const restoreOptions = { name: "My Layout", restoreWorkspacesByReference: true }; const result = await io.layouts.restore(restoreOptions);The value of this property defaults to the value of the
"restoreWorkspacesByReference"property in the Workspaces App definition and will override it.
Improvements & Bug Fixes
Upgraded to Electron 38.7.2 (Chromium 140).
Improved io.Connect Gateway native cache management to avoid issues with group policy restrictions preventing file access.
Improved internal validation of window objects before performing operations on them in order to avoid errors due to potential race conditions.
Increased the default font size in the io.Connect modal windows.
Increased the internal timeouts for subscribing for io.Connect events from 30 to 90 seconds.
Improved handling of custom log appenders for the io.Connect Gateway.