Changelog

io.Connect Desktop 9.10

Release date: 29.10.2025

Components Version
Electron 38.2.2
Chromium 140.0.7339.133
Node.js 22.19.0

Deprecated Platform Apps

Application Monitor & Performance Report

The Application Monitor and the Performance Report apps that were previously part of the io.Connect Dev Tools have been deprecated. Fixes for these app won't be available and they won't be distributed as part of the io.Connect platform starting from this release onward. The Application Monitor and the Performance Report tools will still work in all minor and fix versions that are part of the io.Connect Desktop 9.0 stream, but may stop working with later major version streams.

Legacy Application Monitor:

Legacy Application Monitor

Legacy Performance Report:

Legacy Performance Report

New Features

io.Insights Metrics

New default metrics have been added to io.Insights and some of the existing metrics have been improved.

Changed Metric Types

The "app_duration", "app_startup", "workspace_startup", and "layout_startup" default metrics are now of type Gauge instead of Histogram.

Metrics Recalibration

The "app_crash" metric is now published when the following conditions are met:

  • For web apps, when the process renderer is gone.
  • For native apps, when the process is killed, when the process exits with a non-zero exit code, or when the process is terminated due to a fatal error. You can use the "reason" attribute to determine the cause for the crash.

The value of the "reason" attribute of the "app_crash" metric is derived from the following sources:

  • For web apps, the value of this attribute is derived from the value of the reason property of the RenderProcessGoneDetails Electron object.
  • For native apps, the value of this attribute can be:
    • "crashed" - when the process exited with a non-zero exit code;
    • the signal sent to the process - when the process was terminated or killed and the exit event includes a signal;
    • the message from the error event - when the process couldn't be started or controlled due to a fatal OS-level error;

The measuring points for the "app_startup" metric have been adjusted to reflect more correctly the measured process:

  • For web apps running in the Electron container of io.Connect Desktop, this metric measures the interval from receiving the request for starting the app until the "did-finish-load" Electron event is fired. This ensures that the web page has been fully loaded. For native apps running in io.Connect Desktop and using the io.Connect libraries, this metric measures the interval from receiving the request for starting the app until the Interop instance of the app is ready. This metric isn't published for native apps that don't use the io.Connect libraries, as in this case, a reliable signal for completing the app initialization process isn't available.
  • For web apps running in io.Connect Browser, this metric measures the interval from receiving the request for starting the app until the io.Connect API has been initialized in it.

The measuring points for the "platform_startup" metrics have been adjusted to reflect more correctly the measured process:

  • For io.Connect Desktop, this metric measures the moment from starting the actual executable file (not the gilding executable) and includes the entire platform startup sequence until the moment the shell app starts loading.
  • For io.Connect Browser, this metric measures the time it takes for the @interopio/browser-platform library to initialize.

New Workspaces Metrics

The following improvements and additions were made to the default published metrics related to Workspaces:

  • The "workspace_startup" startup metric was recalibrated and now measures the entire process of loading a Workspace - the time from receiving the request for opening a Workspace until the time all apps in it have been loaded.
  • The "workspace_startup" startup metric was enriched with additional sub-metrics (published in parallel with "workspace_startup") in order to measure more accurately the various stages of loading a Workspace - initializing the Workspaces App (the "workspace_startup_frame" sub-metric - published only when the Workspace is being loaded in a new Workspaces App instance), loading the <Workspaces /> component (the "workspace_startup_component" sub-metric - always published), and loading the apps in the Workspace (the "workspace_startup_apps" sub-metric - always published).
  • The "workspace_startup_frame" is published only when the Workspace is being loaded in a new Workspaces App instance. You can determine this by using the newly added "includesFrameCreation" attribute of the "workspace_startup" metric.
  • The "workspace_startup_frame" metric is published in parallel with the following sub-metrics that measure the separate stages of initializing a Workspaces App instance - creating the underlying browser window (the "workspace_startup_frame_init" sub-metric), loading the web page of the Workspaces App (the "workspace_startup_frame_page_load" sub-metric), and loading the <Workspaces /> component (the "workspace_startup_frame_workspace_render" sub-metric).
  • Besides the already available "layout" attribute, all Workspaces metrics now have two new additional attributes - "complexLoad" and "includesFrameCreation".

The following table describes the new Workspaces metrics:

Metric Instrument Type Unit Description
"workspace_startup" Gauge milliseconds The total time it took to load a Workspace. Measures the interval from initiating the request for creating or restoring the Workspace until all visible apps in it have been loaded. For web apps, this means that the DOMContentLoaded event has been fired. For native apps (io.Connect Desktop only), this means that the app has completed its window registration within the io.Connect framework. For io.Connect Browser, this metric doesn't measure the time for initializing a Workspaces App instance, only the time for loading the actual Workspace in it. For io.Connect Desktop, this is the root metric for measuring Workspace startup times and it's published in parallel with several sub-metrics that measure the separate intervals for completing the consecutive stages of loading a Workspace. You can use the "includesFrameCreation" attribute to determine whether the measurement includes the time for initializing a Workspaces App instance. If the Workspace is created or restored in a new Workspaces App instance, the "workspace_startup_frame" metric and its sub-metrics will also be published in parallel with "workspace_startup". The "workspace_startup_component" and the "workspace_startup_apps" metrics are always published in parallel with "workspace_startup" regardless of whether a new Workspaces App instance has been created.
"workspace_startup_apps" Gauge milliseconds The time it took to load all apps in the Workspace. For web apps, this means that the DOMContentLoaded event has been fired. For native apps, this means that the app has completed its window registration within the io.Connect framework. Measures the interval from initiating the loading of the first app in the Workspace until all apps have been loaded. You can use the "complexLoad" attribute to determine whether all apps in the Workspace have been started as new app instances, or one or more of them has been included in the Workspace as an already existing window.
"workspace_startup_component" Gauge milliseconds The time it took to create and render the <Workspaces /> component within an already existing Workspaces App instance (i.e., when the Workspace is created or restored in an already existing Workspaces App instance). Measures the interval from initiating the initialization of the <Workspaces /> component inside the Workspaces App instance until the component is fully rendered and interactive.
"workspace_startup_frame" Gauge milliseconds The total time it took to load the Workspace App instance. This is measured from initiating the request for creating or restoring the Workspace until the Workspaces App instance has been fully loaded and the <Workspaces /> component has been rendered. This metric is published only when a new Workspaces App instance is being created and is published in parallel with the following sub-metrics that measure the separate intervals for completing the consecutive stages of initializing a Workspaces App instance: "workspace_startup_frame_init", "workspace_startup_frame_page_load", and "workspace_startup_frame_workspace_render".
"workspace_startup_frame_init" Gauge milliseconds Published in parallel with the "workspace_startup_frame" metric. Measures the interval from initiating the creation of the underlying browser window until the browser window is ready for loading the web page of the Workspaces App instance.
"workspace_startup_frame_page_load" Gauge milliseconds Published in parallel with the "workspace_startup_frame" metric. Measures the interval from initiating the navigation to the web page of the Workspaces App instance (after the underlying browser window has been created) until the DOMContentLoaded event is fired for the web page.
"workspace_startup_frame_workspace_render" Gauge milliseconds Published in parallel with the "workspace_startup_frame" metric. Measures the interval from initiating the initialization of the <Workspaces /> component inside the Workspaces App instance (after the web page of the Workspaces App instance has already been loaded) until the component is fully rendered and interactive.

The following table describes the new additional attributes for all Workspaces metrics:

Attribute Description
"complexLoad" Differentiates between launching Workspaces in which all apps are loaded as new instances (this is the normal loading scenario, i.e. the value of "complexLoad" will be "false"), and Workspaces in which one or more of the app windows are already existing windows that have been included in the Workspace (this is the complex loading scenario, i.e. the value of "complexLoad" will be "true"). If "complexLoad" is "true", the time for loading the Workspace may be slightly or significantly decreased and it's important to keep in mind that this won't be due to performance optimizations, but due to loading one or more already existing app instances into the Workspace which is a faster procedure than starting new app instances.
"includesFrameCreation" If the value of this attribute is "true", this means that the measurement includes the time it took to initialize a Workspaces App instance (e.g., if the Workspace has been loaded into an already existing Workspaces App instance, the value of this attribute will be "false").

Workspaces Frame Visibility

The isVisible(), hide(), and show() methods have been added to the Frame instance in the Workspaces API. These methods enable you to retrieve and control the visibility state of the Workspaces App instance:

// Checking the current visibility state of the Workspaces App instance.
const isFrameVisible = await myFrame.isVisible();

if (isFrameVisible) {
    // Hiding the Workspaces App instance.
    await myFrame.hide();
} else {
    // Optional settings for showing the Workspaces App instance.
    // Settings `activate` to `true` will make the Workspaces Frame window gain focus, restore its normal state
    // (e.g., if it has been previously minimized), and bring it in front of other existing windows.
    const frameShowSettings = { activate: true };

    // Showing the Workspaces App instance.
    await myFrame.show(frameShowSettings);
}

You can also specify the visibility state of the Workspaces App instance by using the isVisible property of the NewFrameConfig when creating or restoring Workspaces and when creating empty Frame instances:

// Creating a hidden empty `Frame`.
const definition = {
    frameConfig: {
        isVisible: false
    }
};

const emptyFrame = await io.workspaces.createEmptyFrame(definition);

Platform Initialization Success & Failure Signals

In certain scenarios, you may want your app that has been started in one of the early boot sequence stages to receive a signal from the io.Connect platform when the platform has been successfully initialized or in case of initialization failure.

To receive such signals, register an Interop method and name it "T42.Platform.Events". If registered, this method will be invoked by the platform when it initializes successfully or in case of failure.

Registering the "T42.Platform.Events" Interop method:

const methodName = "T42.Platform.Events";
const handler = ({ eventType, timestamp, data }) => {
    console.log(`Platform initialization ${eventType === "platform-started" ? "successful" : "failed"}.`);

    if (data.error) {
        console.log(`Error message: ${data.error.message}, error stack: ${data.error.stack}.`);
    }
};

await io.interop.register(methodName, handler);

Each invocation of the method will return data in the shape of an object with the following properties:

Property Type Description
data object Data object containing event details. In case of successful platform initialization, this will be an empty object. In case of platform initialization failure, this will be an object with an error object property. The error object will have message and stack string properties containing the error message and the error stack respectively.
eventType "platform-started" | "platform-failed" Type of the platform event (i.e., whether the platform was started successfully or failed to initialize).
timestamp string Timestamp of the platform event.

Intent Handler Exclusion List

To exclude Intent handlers from the results when using the filterHandlers() method, use the excludeList property of the HandlerFilter object and pass a HandlerExclusionCriteria a value.

It's possible to exclude Intent handlers by app name and by app instance ID:

const filter = {
    intent: "ViewChart",
    openResolver: false,
    // Excluding an app by its name and a running instance of another app from the Intent handler result.
    excludeList: [
        {
            // This will exclude the app, but won't exclude any running instances of it.
            applicationName: "my-app-name"
        },
        {
            // This will exclude a running instance of an app, but won't exclude the app itself.
            instanceId: "my-other-app-instance-id"
        }
    ]
};

const result = await io.intents.filterHandlers(filter);

Disabling the Feedback Form

The io.Connect Feedback Form opens automatically in case of a platform crash and can also be opened by users from the io.Connect Desktop tray menu and from the "Feedback" button of running app instances.

To prevent this behavior, you can now use the "enabled" property of the "issueReporting" top-level key in the system.json system configuration file of io.Connect Desktop:

{
    "issueReporting": {
        // Disabling the Feedback Form.
        "enabled": false
    }
}

Independent Zoom Factors for Same-Origin Apps

The default zoom behavior for web apps (as is in all standard web browsers) is that all apps within the same domain have the same zoom factor. Now, it's possible to instruct the platform to use individual zoom levels for same-origin apps.

To configure the zoom behavior for same-origin apps globally, use the "mode" property of the "zoom" object under the "windows" top-level key in the system.json system configuration file of io.Connect Desktop. It accepts "domain" (default) and "window" as values.

The following example demonstrates how to configure io.Connect Desktop to use individual zoom levels for same-origin apps:

{
    "windows": {
        "zoom": {
            "enabled": true,
            "mode": "window"
        }
    }
}

To define zoom behavior settings per app, use the "mode" property of the "zoom" object under the "details" top-level key in the app definition. The app definition settings will override the global system configuration:

{
    "details": {
        "zoom": {
            "enabled": true,
            "mode": "domain"
        }
    }
}

Window Resizing Areas for Native Apps

The "hasSizeAreas" property of the "details" top-level key in the app definition is now valid for native apps as well.

The following example demonstrates how to remove the resizing areas of a native app running in io.Connect Desktop:

{
    "name": "my-exe-app",
    "title": "My EXE App",
    "type": "exe",
    "details": {
        "path": "%GDDIR%/../PathToWPFApplication/",
        "command": "WPFApplication.exe",
        "hasSizeAreas": false
    }
}

App Preferences REST Store Settings

It's now possible to specify the number of retries and a backoff factor when configuring an app preferences store provided by a REST service. The following properties are now available in "rest" mode:

Property Type Description
"restBackoffFactor" number Exponential backoff factor in milliseconds used for determining the waiting interval between retries when fetching data from the REST store. The waiting interval is calculated with the <restBackoffFactor>*2^<retry> formula and is limited to a maximum of 5 minutes between retries. Valid only in "rest" mode. Defaults to 1000.
"restRetries" number Number of retries when fetching data from the REST store. Valid only in "rest" mode. Defaults to 3.

The following example demonstrates configuring the backoff factor and the number of retries for connecting to an app preferences store provided by a REST service:

{
    "applicationPreferences": {
        "store": {
            "type": "rest",
            "restURL": "https://my-rest-service.com/app-preferences",
            "restClientAuth": "no-auth",
            "restBackoffFactor": 2000,
            "restRetries": 5
        }
    }
}

CSS Variables for Customizing the io.Connect Platform

Added CSS variables for customizing the styles of the following io.Connect Desktop apps and UI components:

Notifications

Use the following CSS variables for customizing the styles of the io.Connect Desktop notifications:

Notification

Variable Description
--notification-background-color Background color for the notifications.
--notification-body-content-gap Gap between the title and the text in the notification body content.
--notification-body-icon-gap Gap between the notification icon and the notification body content.
--notification-body-padding Padding for the notification body.
--notification-border Border for the notifications.
--notification-border-radius Border radius for the notifications.
--notification-footer-padding Padding for the notification footer.
--notification-gap Gap between the header, the body, and the footer of the notifications.
--notification-header-button-group-max-width Maximum width for the action buttons ("Snooze", "Close") in the notification header.
--notification-header-gap Gap between elements in the notification header.
--notification-header-height Height for the notification header.
--notification-header-timestamp-badge-height Height for the timestamp badge in the notification header.
--notification-header-timestamp-badge-radius Border radius for the timestamp badge in the notification header.
--notification-header-timestamp-badge-width Width for the timestamp badge in the notification header.
--notification-header-timestamp-gap Gap between the timestamp badge and the timestamp in the notification header.
--notification-header-timestamp-max-width Maximum width for the timestamp in the notification header.
--notification-height Height for the notifications.
--notification-icon-height Height for the icon displayed in the notification.
--notification-icon-width Width for the icon displayed in the notification.
--notification-padding Padding for the notifications.
--notification-severity-critical-color Color for notifications with severity "Critical".
--notification-severity-high-color Color for notifications with severity "High".
--notification-severity-low-color Color for notifications with severity "Low".
--notification-severity-medium-color Color for notifications with severity "Medium".
--notification-severity-none-color Color for notifications with severity "None".
--notification-title-line-height Line height for the title in the notification.
--notification-width Width for the notifications.

Notification Panel

Use the following CSS variables for customizing the styles of the Notification Panel:

Notification Panel

Notification Panel Bulk Actions

Variable Description
--notification-list-gap Gap between notifications in the notification list of the Notification Panel and the toasts wrapper.
--notification-panel-badge-font-size Font size for the Notification Panel badge.
--notification-panel-badge-height Height for the Notification Panel badge.
--notification-panel-badge-margin Margin for the Notification Panel badge.
--notification-panel-badge-min-width Minimum width for the Notification Panel badge.
--notification-panel-bulk-action-list-gap Gap between the editable items when the "Bulk Edit" button is pressed.
--notification-panel-bulk-edit-buttons-gap Gap between the buttons that appear in the Notification Panel header when the "Bulk Edit" button is pressed.
--notification-panel-gap Gap between the header and the body of the Notification Panel.
--notification-panel-header-actions-button-gap Gap between the "Sort by" and "View" dropdowns and between the "Clear All" and "Bulk Edit" buttons in the Notification Panel header.
--notification-panel-header-actions-button-padding Padding for the action buttons in the Notification Panel header.
--notification-panel-header-actions-width Width for the element that contains action buttons in the Notification Panel header.
--notification-panel-header-caption-gap Gap between the caption, the badge, and the system buttons in the Notification Panel header.
--notification-panel-header-search-gap Gap between the search bar and the search results.
--notification-panel-header-search-width Width for the search bar in the Notification Panel header.
--notification-panel-header-width Width for the Notification Panel header.
--notification-panel-height Height for the Notification Panel.
--notification-panel-width Width for the Notification Panel.

Toasts Wrapper & Notification Stacks

Use the following CSS variables for customizing the styles of the toasts wrapper and the notification stacks:

Toasts Wrapper

Toasts Wrapper Notification Stack

Variable Description
--notification-stack-badge-color Color for the badge that displays the number of stacked notifications.
--notification-stack-button-border-radius Border radius for the "Clear All" button of the notification stack.
--notification-stack-button-height Height for the "Clear All" button of the notification stack.
--notification-stack-button-left-position Left offset for the "Clear All" button of the notification stack.
--notification-stack-button-max-width Maximum width for the "Clear All" button of the notification stack.
--notification-stack-button-top-position Top offset for the "Clear All" button of the notification stack.
--notification-stack-button-width Width for the "Clear All" button of the notification stack.
--notification-stack-effect-size Top, right, and left offset for the notification stack effect.
--notification-stack-gap Gap between the notification stacks.
--notification-stack-open-vertical-margin Vertical (top and bottom) margin for the notification stack when open.
--notification-toasts-wrapper-faded-mask Faded mask for the toasts wrapper.
--notification-toasts-wrapper-height Height for the toasts wrapper.
--notification-toasts-wrapper-padding Padding for the toast wrapper.

Notification Settings

Use the following CSS variables for customizing the styles of the Notification Settings panel:

Notification Settings Panel

Variable Description
--notification-panel-settings-dropdown-width Width for the dropdown menus in the Notification Settings panel.
--notification-panel-settings-height Height for the Notification Settings panel.
--notification-panel-settings-sections-gap Gap between the sections in the Notification Settings panel.
--notification-panel-settings-subscriptions-column-titles-color Color for the column titles of the "Subscribe & Mute" section.
--notification-panel-settings-subscriptions-column-titles-letter-spacing Letter spacing for the column titles of the "Subscribe & Mute" section.
--notification-panel-settings-subscriptions-column-titles-line-height Line height for the column titles of the "Subscribe & Mute" section.
--notification-panel-settings-subscriptions-column-titles-size Font size for the column titles of the "Subscribe & Mute" section.
--notification-panel-settings-subscriptions-grid-2-column-width Column width for a grid layout with two columns in the "Subscribe & Mute" section.
--notification-panel-settings-subscriptions-grid-3-column-width Column width for a grid layout with three columns in the "Subscribe & Mute" section.
--notification-panel-settings-subscriptions-grid-gap Gap between the columns of the grid layout in the "Subscribe & Mute" section.

Channel Selector

Use the following CSS variables for customizing the styles of the Channel Selector:

Channel Selector Panel

Channel Selector Buttons

Variable Description
--channel-selector-badge-height Height for the Channel Selector badge displayed in the Channel Selector panel.
--channel-selector-badge-radius Border radius for the Channel Selector badge displayed in the Channel Selector panel.
--channel-selector-badge-width Width for the Channel Selector badge displayed in the Channel Selector panel.
--channel-selector-button-directional-gap Gap between Channel letter and the Channel direction icon in the Channel Selector button when using directional Channels.
--channel-selector-button-directional-height Height for the Channel Selector button when using directional Channels.
--channel-selector-button-directional-max-width Maximum width for the Channel Selector button when using directional Channels.
--channel-selector-button-directional-min-width Minimum width for the Channel Selector button when using directional Channels.
--channel-selector-button-directional-padding Padding for the Channel Selector button when using directional Channels.
--channel-selector-button-height Height for the Channel Selector button.
--channel-selector-button-radius Border radius for the Channel Selector button.
--channel-selector-button-width Width for the Channel Selector button.
--channel-selector-panel-background Background color for the Channel Selector panel.
--channel-selector-panel-border Border for the Channel Selector panel.
--channel-selector-panel-directional-toggles-gap Gap between the direction labels and the respective toggles in the Channel Selector panel when using directional Channels.
--channel-selector-panel-directional-width Width for the Channel Selector panel when using directional Channels.
--channel-selector-panel-padding Padding for the Channel Selector panel.
--channel-selector-panel-radius Border radius for the Channel Selector panel.
--channel-selector-panel-title-background-hover Background color for the title of the Channel Selector panel when hovered.
--channel-selector-panel-width Width for the Channel Selector panel.
--io-channel-selector-button-multi-2-mask Mask for the Channel Selector button if two Channels are selected when using multiple Channels.
--io-channel-selector-button-multi-3-mask Mask for the Channel Selector button if three Channels are selected when using multiple Channels.
--io-channel-selector-button-multi-4-mask Mask for the Channel Selector button if four Channels are selected when using multiple Channels.

Intent Resolver

Use the following CSS variables for customizing the styles of the Intent Resolver:

Intent Resolver

Variable Description
--intent-resolver-dropdown-menu-gap Gap between the items in the dropdown menu of the Intent Resolver panel for selecting an app instance.
--intent-resolver-dropdown-menu-z Z-order for the dropdown menu of the Intent Resolver for selecting an app instance.
--intent-resolver-panel-border-radius Border radius for the Intent Resolver panel.
--intent-resolver-panel-height Height for the Intent Resolver panel.
--intent-resolver-panel-padding Padding for the Intent Resolver panel.
--intent-resolver-panel-width Width for the Intent Resolver panel.

Feedback Form

Use the following CSS variables for customizing the styles of the Feedback Form:

Feedback Form

Variable Description
--feedback-attachments-items-gap Gap between the rows with attachment items.
--feedback-attachments-max-height Maximum height for the "Attachments" section of the Feedback Form.
--feedback-attachments-min-height Minimum height for the "Attachments" section of the Feedback Form.
--feedback-error-color Color for error messages in the Feedback Form.
--feedback-panel-height Height for the Feedback Form panel.
--feedback-panel-width Width for the Feedback Form panel.
--feedback-text-area-height Height for the text area input of the Feedback Form.
--feedback-text-area-line-height Line height for the text in the text area input of the Feedback Form.

Download Manager Panel

Use the following CSS variables for customizing the styles of the Download Manager Panel:

Download Manager

Download Manager Empty State

Variable Description
--download-manager-header-search-wrapper-gap Gap between the search bar and the element displaying the number of search results.
--download-manager-header-vertical-gap Gap between the title and the search bar in the header of the Download Manager.
--download-manager-item-background Background for the download items in the Download Manager.
--download-manager-item-border Border for the download items in the Download Manager.
--download-manager-item-border-radius Border radius for the download items in the Download Manager.
--download-manager-item-icon-close-offset Top and right offset for the "Close" button icon of the download items in the Download Manager.
--download-manager-item-inside-gap Gap between the header, body, and footer of the download items in the Download Manager.
--download-manager-item-padding Padding for the download items in the Download Manager.
--download-manager-item-status-critical-background-color Background color for the critical status icon in the footer of the download item.
--download-manager-item-status-gap Gap between the status icon and the status text in the element displaying the download item status in the footer of the download item.
--download-manager-item-status-icon-border-radius Border radius for the status icon in the footer of the download item.
--download-manager-item-status-icon-color Color for the status icon in the footer of the download item.
--download-manager-item-status-icon-height Height for the status icon in the footer of the download item.
--download-manager-item-status-icon-width Width for the status icon in the footer of the download item.
--download-manager-item-status-padding Padding for the element displaying the download item status in the footer of the download item.
--download-manager-item-status-success-background-color Background color for the success status icon in the footer of the download item.
--download-manager-item-status-warning-background-color Background color for the warning status icon in the footer of the download item.
--download-manager-item-status-warning-border-radius Border radius for the warning status icon in the footer of the download item.
--download-manager-item-status-warning-color Text color for the warning status icon in the footer of the download item.
--download-manager-item-status-warning-mask-image Mask image for the warning status icon in the footer of the download item.
--download-manager-item-status-warning-mask-size Mask size for the warning status icon in the footer of the download item.
--download-manager-panel-background Background for the Download Manager panel.
--download-manager-panel-empty-state-gap Gap between the icon and the text displayed in the Download Manager when it's empty.
--download-manager-panel-gap Gap for the Download Manager panel.
--download-manager-panel-height Height for the Download Manager panel.
--download-manager-panel-items-gap Gap between the items in the Download Manager panel.

Download Manager Settings Panel

Use the following CSS variables for customizing the styles of the Download Manager Settings panel:

Download Manager Settings Panel

Variable Description
--download-manager-panel-settings-gap Gap between the header and the body of the Settings panel of the Download Manager.
--download-manager-panel-settings-z-index Z-index for the Settings panel of the Download Manager.

Launchpad Platform Preferences Panel

Use the following CSS variables for customizing the styles of the Launchpad Platform Preferences panel:

Platform Preferences Panel

Variable Description
--preferences-panel-dropdown-width Width for the dropdowns menus in the Platform Preferences panel.
--preferences-panel-gap Gap between the header and the body of the Platform Preferences panel.
--preferences-panel-height Height for the Platform Preferences panel.
--preferences-panel-row-height Height for each row in the sections of the Platform Preferences panel.
--preferences-panel-section-gap Gap between the items in each section of the Platform Preferences panel.
--preferences-system-scheduler-controls-grid-3-column-width Column width for a grid layout with three columns in the "System" section.
--preferences-system-scheduler-controls-grid-columns-gap Gap between the columns of the grid layout containing the scheduler controls in the "System" section.

Launchpad Profile Panel

Use the following CSS variables for customizing the styles of the Launchpad Profile panel:

Profile Panel

Variable Description
--profile-font-family Font family for the Profile panel.
--profile-font-size Font size for the Profile panel.
--profile-section-container-gap Gap between sections in the Profile panel.
--profile-section-gap Gap between the items in each section of the Profile panel.
--profile-section-item-gap Gap between the title and the value of a section item.
--profile-section-item-title-color Color for the title of a section item.
--profile-section-item-title-font-weight Font weight for the title of a section item.
--profile-section-title-line-height Line height for the titles of the Profile panel sections.
--profile-text-color Text color for the Profile panel.
--profile-trademark-background Background color for the trademark section.
--profile-trademark-border-radius Border radius for the trademark section.
--profile-trademark-gap Gap between the title and the text of the trademark section.
--profile-trademark-letter-spacing Letter spacing for title and the text of the trademark section.
--profile-trademark-link-color Color for the link in the trademark section.
--profile-trademark-padding Padding for the trademark section.
--profile-trademark-title-color Color for the title of the trademark section.
--profile-trademark-title-font-weight Font weight for the title of the trademark section.
--profile-user-avatar-background Background color for the user avatar.
--profile-user-avatar-border Border for the user avatar.
--profile-user-avatar-color Color for the user avatar initials.
--profile-user-avatar-font-size Font size for the user avatar initials.
--profile-user-avatar-height Height for the user avatar.
--profile-user-avatar-radius Border radius for the user avatar.
--profile-user-avatar-width Width for the user avatar.
--profile-user-container-gap Gap between the user avatar and the user info section.

Improvements & Bug Fixes

  • Upgraded to Electron 38.2.2 (Chromium 140).

  • Improved handling of clicks on the window header for native apps registered as io.Connect Windows.

  • Improved handling of Channels for apps running outside of io.Connect Desktop.

  • Improved handling of theme names in the Launchpad.

  • Fixed not displaying a dialog to the user for changes made to a Layout when restarting or shutting down io.Connect Desktop.

  • Fixed an intermittent issue related to searching in web pages with CTRL + F that would cause the search window to become inactive.

  • Fixed an issue related to inconsistencies in reporting memory and CPU measurements for apps running in io.Connect Desktop.