Changelog

Glue42 3.10

Glue42 Desktop

Release date: 09.10.2020

Breaking Changes

Context Merging

Changed the mechanism of merging context data objects (used in Shared Contexts, Channels, Activities). When updating a context object, the new and the old values of its first level properties (e.g., the value of a in { a: { b: 0 } }) are no longer merged, but the new value replaces the old value. For further clarification, see the examples below:

// Creating a context object.
await glue.contexts.set("foo", { a: 1 });

// First level properties are merged.
await glue.contexts.update("foo", { b: { c: 2 } });
// The new context now contains both `a` and `b`: `{ a: 1, b: { c: 2 } }`.

// The values of first level properties are replaced during update.
await glue.contexts.update("foo", { b: { d: 3 } });
// The new context value is `{ a: 1, b: { d: 3 } }`.

As a contrast, in Glue42 3.9 the new context value would be { a: 1, b: { c: 2, d: 3 } } after the last update in the example above.

It is recommended that you update your apps to the latest Glue42 APIs:

Storing Data in the Application Default Layout

Added support for saving custom context data in the Application Default layout using the onSaveRequested() method of the Layouts API.

If your application already uses onSaveRequested() to store data when a Global layout is saved, you must update your code to check for the type of the layout in the save request (e.g., "Global", "ApplicationDefault", etc.). This is necessary if you want to store data only in a certain type of layout, or if you want to store different data depending on the layout (see the example below). If you don't update your code, the data that your application used to save only when participating in a Global layout, will now also be saved in its Application Default layout if your app is started and closed independently (i.e., not part of a Global layout).

glue.layouts.onSaveRequested((requestInfo) => {
    // Determine the layout type.
    const layoutType = requestInfo.layoutType;

    // Return different context data depending on the layout type.
    if (layoutType === "ApplicationDefault") {
        return { windowContext: { gridWidth: 42 } };

    } else if (layoutType === "Global") {
        return { windowContext: { gridWidth: 420 } };

    } else {
        // Return if not interested in other layout types.
        return;
    };
});

New Features

Workspaces

Click on the image and use the slider to see the differences between the new and the old Glue42 Day themes.

Click on the image and use the slider to see the differences between the new and the old Glue42 Night themes.

Improvements and Bug Fixes

Glue42 Connectors

New Features