Changelog

io.Connect Desktop 9.0

Release date: 17.10.2023

Components Version
Electron 26.2.4
Chromium 116.0.5845.190
Node.js 18.16.1

⚠️ Note that this is the first release of the unified platform rebranded as io.Connect Desktop after the merger of Glue42 and Finsemble. For all previous changelog entries of the former Glue42 and Finsemble platforms, see the Glue42 Changelog and Finsemble Changelog sections in the respective documentation sites. For details on how to migrate to the new platform, see the How to Migrate to io.Connect Desktop section.

New Features

New Design

The rebranded io.Connect Desktop comes with new contemporary UI designs and enhanced user experience. Brand new look and feel of the default "Night" and "Day" themes - new designs for the tabs of Workspaces and io.Connect window groups, enhanced Channel Selector, notification badges and more.

  • Workspaces:

Workspaces

  • io.Connect window groups:

Window Groups

  • Channel Selector:

Channel Selector

  • Notification badges for the io.Connect Desktop taskbar icon and the system tray icon:

Notification Badge

Boot Sequence

The "runPriority" top-level key in the app definition file enables you to control the order in which your system apps will start, allowing you flexibility in designing the boot sequence of the platform according to your specific needs and requirements.

The "runPriority" property has been extended to accept an object with the following properties:

Property Type Description
"priority" number Number determining the priority with which the system app will be started at the specified stage of the boot sequence of the platform. The greater the number, the greater the priority of the app. Set to 0 for lowest priority.
"stage" "core" | "pre-sso" | "post-sso" Boot sequence stage at which to start the system app and set its priority.
"timeout" number Interval in milliseconds to wait for the system app to initialize.
"waitForInitialization" boolean If true, the platform will wait for the system app to initialize before continuing the boot sequence. Defaults to false.

The following example demonstrates how to set the boot sequence priority of an app that will be started with high priority in the "pre-sso" stage and the platform will wait for it to initialize before continuing the boot sequence:

{
    "runPriority": {
        "stage": "pre-sso",
        "priority": 100,
        "waitForInitialization": true
    }
}

Filtering Web Requests

To instruct io.Connect Desktop to filter web requests, use the "urlFilter" property of the "windows" top-level key in the system.json system configuration file. Provide a regular expression as a value that will be matched against the URLs for all web requests. Matched URLs will be allowed, all other requests will be blocked and a dialog will be shown to the user informing them that the URL is blocked by the organization.

The following example demonstrates how to allow only web requests for URLs that start with https://:

{
    "windows": {
        "urlFilter": "https://*"
    }
}

Java API

Preventing Window Close

To prevent an io.Connect Window from closing, use the onClosing() method of the window object. The event handler callback must return asynchronously a PreventClosingOptions object whose methods you can use to specify the behavior of a window that is about to be closed.

The following example demonstrates how to prevent the window from closing and show a confirmation dialog to the user:

myWindow.onClosing(() → CompletableFuture.supplyAsync(PreventClosingOptions :: dialog));

The PreventClosingOptions object has the following methods:

Method Description
allow() Will allow the window to close.
dialog() Will prevent the window from closing and will show a confirmation dialog to the user.
prevent() Will prevent the window from closing.

Window Z-Order

To set a window on top of the z-order, use the onTopState() method when supplying options for registering your window in the io.Connect framework:

Window myWindow = io.windows().register(handle, options -> options.onTopState(WindowOnTopState.YES));

⚠️ Note that using the WindowOnTopState.YES option will allow the io.Connect Window to be on top only until the window is visible and not joined to an io.Connect Window group. If the window is hidden programmatically or the user snaps it to another io.Connect Window or window group, it will no longer be on top of the z-order when it becomes visible or when the user tears it off from the group.

To instruct the window to remain permanently on top of the z-order, regardless of changes to its visibility or whether it joins or leaves an io.Connect Window group, use the WindowOnTopState.ALWAYS option:

Window myWindow = io.windows().register(handle, options -> options.onTopState(WindowOnTopState.ALWAYS));

Handling the Browser window.open()

The "nativeWindowOpen" property, used for handling the browser window.open() method, can now accept an object with the following properties as a value:

Property Type Description
"mode" string Must be set to "window".
"outlivesOpener" boolean If true, will prevent child windows from being closed when their parent is closed.

By default, child windows created with the window.open() method from an io.Connect Window share the lifetime of their parent window. To prevent this behavior, set the "outlivesOpener" property to true:

{
    "windows": {
        "nativeWindowOpen": {
            "mode": "window",
            "outlivesOpener": true
        }
    }
}

Preload Scripts

The "preloadScripts" property, used for defining preload scripts, can now accept also an object with the following properties as a value:

Property Type Description
"scripts" string[] List of preload scripts that will be loaded and executed before the actual page is executed.
"useBase64PreloadScripts" boolean If true (default), will import the preload scripts as Base64 strings.

The "useBase64PreloadScripts" property allows you to control how io.Connect Desktop will import preload scripts. To improve this behavior, it's recommended to set the "useBase64PreloadScripts" property to false:

{
    "windows": {
        "preloadScripts": {
            "scripts": [
                "https://my-domain.com/my-script.js",
                "https://my-domain.com/my-other-script.js"
            ],
            "useBase64PreloadScripts": false
        }
    }
}

Persisting Current Window Titles

You can now persist the current window title of a web app when saving and restoring Layouts - App Default, Global Layouts, or Workspaces. To instruct io.Connect Desktop to save the current window titles of web apps, use the "saveCurrentTitleInLayout" property of the "windows" top-level key in the system.json system configuration file. The following example demonstrates how to configure io.Connect Desktop on a system level to save the current window titles of web apps only when they participate in a Workspace or a Global Layout:

{
    "windows": {
        "saveCurrentTitleInLayout": ["Global", "Workspace"]
    }
}

You can also specify this setting on an app level by using the "saveCurrentTitleInLayout" property of the "details" top-level key in the app definition file for web apps, which will override the global system configuration:

{
    "details": {
        "saveCurrentTitleInLayout": false
    }
}

Improvements & Bug Fixes

  • Upgraded to Electron 26.2.4 (Chromium 116).

  • Improved the time of loading Global Layouts by optimizing jump lists.

  • Improved the loading behavior of preload scripts to guard against possible errors.

  • Telemetry data is now disabled by default.