image-20250327-190103.png

Overview

This design spec outlines the enhancements to Mattermost's desktop and web application to allow users to open popout windows for channels, threads, and other functions, facilitating improved multitasking and monitoring capabilities.

This enables users to engage in multiple conversations simultaneously without losing context, thereby enhancing operational efficiency and collaboration.


Definitions


Opening channels in new windows

Users can open any channel in a separate window via an "Open in New Window" option accessible from the channel menu and the left sidebar.​ When a channel is opened in its own window, it opens in an isolated view without all the other navigation surrounding it.

image-20250328-143749.png

There are a few ways to do this:

From the left sidebar

From the channel menu

From the channel header

image-20250327-190327.pngimage-20250327-190437.pngimage-20250327-190631.png

Command/CTRL-click a channel to open a new window

Window specifications

Navigation within a channel window

Within a channel window, users can:


Opening threads in new windows

Users can also open any thread in a separate window via an "Open in New Window" option accessible from the RHS header button or Thread inbox view.​ When a thread is opened in its own window, it opens in an isolated view without all the other navigation surrounding it.

There are a few ways to do this:

Thread RHS header button

Threads header context menu

Threads header button

Threads list context menu

image-20250327-192450.pngimage-20250327-192149.pngimage-20250327-192300.pngimage-20250327-191914.png

Changes to the RHS Header

Window specifications

image-20250328-143824.png

Navigation within a thread window

Within a thread window, users can:


Opening RHS plugin content in new windows

To start, we’re thinking of allow Playbook Runs and Copilot to be opened up in new windows.

image-20250328-143944.pngimage-20250328-143951.png

Window specifications


Changes to the tab behavior in the desktop app

In addition to multiple windows for the above views, we will also support multiple tabs.

No more default product tabs

We will be changing the behavior for the ‘Channels, Playbooks, and Boards’ tabs. Those will no longer be default tabs.

Multiple view tabs for a server

The ‘Main Window’ for a server must always be open to maintain the state and notifications for that server. Additional views from a server can be opened through the methods identified above. When switching servers, all tabs within that server are remembered from the last state.

Closing a server tab

Opening a new server tab

Opening a new tab must be done through the ‘open in new tab’ option for a channel, thread or RHS.

Behavior for opening products from product switcher

When a product (e.g. Boards) is clicked from the product switcher menu, by default the current window context will be replaced with that product.

An ‘open in new tab’ icon will be available on hover to open the product as a separate tab. Command/Ctrl-clicking the menu item will also open in a new tab.

image-20250617-171231.png

Moving a window to a tab

For any window view, right-clicking on the top bar opens a context menu (native OS context menu) with the option to move to the main window. This will then add it as a tab back in the main window for it’s server.

image-20250617-173931.png

Moving a tab to a new window

For any channel, thread or view that is in it’s own tab (aside from the main server tab), users can right-click to open a context menu (native OS context menu) with the option to “Move to new window”.

NOTE: these options would not be available on the main tab for a server.

image-20250617-173922.png

Considerations

Notifications and unread sync

Inactive tabs/windows

If a window or tab has been inactive for more than 1 hour, it can be suspended to reduce memory/CPU usage. When refocused, there will need to be a loading spinner.

If a notification or unread comes in on an inactive view, it can be considered active again and woken up.

Window and Tab Limits

Navigation and Deep Linking

The following UX navigation patterns are enforced by the underlying architecture:


Resources