Changelog
Glue42 Desktop
Release date: 11.04.2023
Components | Version |
---|---|
Electron | 23.2.1 |
Chromium | 110.0.5481.208 |
Node.js | 18.12.1 |
New Features
Workspace Window Groups
The
@glue42/workspaces-ui-react
library now offers new customizable elements and zones for the headers of window groups in a Workspace.The following example demonstrates using custom components for the Before Tabs zone, as well as for the Workspace Window Tab and the Group Header Buttons elements:
import React from "react"; import Workspaces from "@glue42/workspaces-ui-react"; import CustomWorkspaceWindowTab from "./CustomWorkspaceWindowTab"; import CustomGroupHeaderButtons from "./CustomGroupHeaderButtons"; import CustomBeforeTab from "./CustomBeforeTab"; const App = () => { return ( <Workspaces components={{ groupHeader: { WorkspaceWindowTabComponent: CustomWorkspaceWindowTab, ButtonsComponent: CustomGroupHeaderButtons, BeforeTabsComponent: CustomBeforeTab } }} /> ); }; export default App;
Web Groups Loading Animation
The
@glue42/groups-ui-react
library now enables you to use your own loading animation for the windows participating in your your custom Web Group App:
import React from "react"; import Group from "@glue42/groups-ui-react"; import CustomLoadingAnimation from "./CustomLoadingAnimation"; const App = () => { return ( <Group components={{ frame: { LoadingAnimation: CustomLoadingAnimation } }} /> ); }; export default App;
Web Groups Stickiness
Runtime Configuration
Stickiness of windows when using Web Groups can now be configured at runtime by using the
configure()
method of the Window Management API:
// Disabling window stickiness. const config = { sticky: false }; await glue.windows.configure(config);
Sticky Button
The "Sticky" Button that lets users control window stickiness manually, is now available when using Web Groups.
The "Sticky" button can be enabled globally from the system configuration of Glue42 Enterprise by using the
"showStickyButton"
property of the"windows"
top-level key of thesystem.json
file:
{ "windows": { "showStickyButton": true } }
The "Sticky" button can also be enabled or disabled per app from the app configuration file by using the
"showStickyButton"
property of the"details"
top-level key:
{ "details": { "showStickyButton": true } }
Custom Protocol Handlers
Glue42 Enterprise now supports registering custom global protocol handlers in addition to the default Glue42 global protocol handler. The
"protocolHandler"
top-level key of thesystem.json
configuration file of Glue42 Enterprise now can be set either to an object or to an array of objects defining one or more global protocol handlers:
{ "protocolHandler": [ { "enabled": true, "protocol": "my-custom-protocol", "type": "custom", "customHandler": "My.Custom.Protocol.Handler" }, { "enabled": true, "protocol": "my-other-custom-protocol", "type": "custom", "customHandler": "My.Other.Custom.Protocol.Handler" } ] }
Your custom protocol handlers must be registered as Interop methods by your system apps. They will be invoked when Glue42 Enterprise receives a command for your custom protocol. The following example demonstrates a minimal protocol handler implementation:
// Name of the protocol handler as defined in the configuration. const name = "My.Custom.Protocol.Handler"; // Protocol handler implementation. const handler = (data) => { console.log(data); // If nothing or `{ handled: false }` is returned, // the next available protocol handler will be invoked. return { handled: true }; }; await glue.interop.register(name, handler);
Streaming & Consuming System Logs
It's now possible to configure Glue42 Enterprise to stream the system logs so that they can be consumed by your apps. You can specify the log level and the interval at which the logs to be streamed. Use the
"streaming"
property of the"logging"
top-level key of thesystem.json
configuration file of Glue42 Enterprise to specify the log streaming configuration:
{ "logging": { "streaming": { "enabled": true, "minLevel": "warn", "interval": 60 } } }
To consume the log entries in your apps, you must implement and register an Interop method named
"T42.Logs.Listen"
. This method will be invoked whenever Glue42 Enterprise streams the system logs. The method handler will receive an object with anentries
property as an argument which holds an array of objects each describing the individual log entries:
const name = "T42.Logs.Listen"; const handler = logs => logs.entries.forEach(e => console.log(e.source, e.logEntry)); await glue.interop.register(name, handler);
Flashing Window Tabs
The tabs of windows in a tab group can now be made to flash programmatically using the
flashTab()
method of theGDWindow
object. The tab will stop flashing automatically when the user clicks on it to focus the tab window. This may be useful when you want to prompt the user to take action in a window that is currently behind other tabbed windows:
// Pass a Boolean value as an argument to make the window tab start or stop flashing. await myWindow.flashTab(true);
Restricting Window Stickiness
Using the
"stickyGroup"
property of the"details"
top-level key in the app configuration file, you can create groups of windows that will stick to each other, but not to other windows that don't have the same sticky group:
{ "details": { "stickyGroup": "my-sticky-group" } }
You can also use the
stickyGroup
property of theWindowCreateOptions
orApplicationStartOptions
objects to specify a sticky group when opening windows or starting app instances at runtime:
const name = "glue42-docs";
const url = "https://docs.glue42.com";
const options = {
stickyGroup: "my-sticky-group"
};
// Opening a Glue42 Window.
await glue.windows.open(name, url, options);
// Starting a Glue42 app instance.
await glue.appManager.application("getting-started").start(null, options);
Improvements and Bug Fixes
Upgraded to Electron 23 (Chromium 110).
Improved compatibility with NVDA screen reader.
Improved handling file naming when saving files with Native File Drag & Drop.
Glue42 Enterprise now shows a dialog window instead of the Feedback Form if connecting to the Glue42 Server fails.
Fixed a bug where an error would be thrown when a window gets focus programmatically.
Fixed scaling issues when starting the embedded Glue42 Toolbar as minimized.
Minor improvements and bugfixes.