+
+
+
+Disabling this configuration setting in larger deployments may improve server performance in the following areas:
+
+- Reduced database load: When `channel_viewed` events are disabled, the server no longer needs to log these events in the database. This reduces the number of write and update operations, which can be substantial in a busy server with many users frequently switching channels.
+- Decreased network traffic: Disabling these events means there are fewer messages sent between the server and clients. This reduction in network traffic can lower latency and improve the overall responsiveness of the server, especially for users with slower connections.
+- Lower server CPU usage: Processing `channel_viewed` events requires CPU resources to handle database transactions and network communication. Without these events, the server's CPU can be utilized more efficiently for other tasks, improving the overall performance.
+- Improved user experience: With reduced server load and network traffic, users may experience faster loading times and a more fluid interaction with the application.
+
+However, disabling this configuration setting affects some functionality, such as accurate tracking of read and unread messages in channels. It's important to balance performance improvements with the needs of your organization and users.
+
+
+
### Enable insecure outgoing connections
diff --git a/docs/main/administration-guide/configure/experimental-configuration-settings.mdx b/docs/main/administration-guide/configure/experimental-configuration-settings.mdx
index fe539f051665..1e95f75958f2 100644
--- a/docs/main/administration-guide/configure/experimental-configuration-settings.mdx
+++ b/docs/main/administration-guide/configure/experimental-configuration-settings.mdx
@@ -135,33 +135,6 @@ Specify the maximum frequency, in seconds, which the batching job checks for new
-### Enable channel viewed websocket messages
-
-This setting determines whether `channel_viewed WebSocket` events are sent, which synchronize unread notifications across clients and devices.
-
-
-
-
-
-
-
-
This feature's config.json setting is "EnableChannelViewedMessages": true with options true and false.
-
-
-
-
-
-
-Disabling this experimental configuration setting in larger deployments may improve server performance in the following areas:
-
-- Reduced Database Load: When channel_viewed events are disabled, the server no longer needs to log these events in the database. This reduces the number of write and update operations, which can be substantial in a busy server with many users frequently switching channels.
-- Decreased Network Traffic: Disabling these events means there are fewer messages sent between the server and clients. This reduction in network traffic can lower latency and improve the overall responsiveness of the server, especially for users with slower connections.
-- Lower Server CPU Usage: Processing channel_viewed events requires CPU resources to handle database transactions and network communication. Without these events, the server's CPU can be utilized more efficiently for other tasks, improving the overall performance.
-- Improved User Experience: With reduced server load and network traffic, users may experience faster loading times and a more fluid interaction with the application.
-- However, disabling this configuration setting affects some functionality, such as accurate tracking of read and unread messages in channels. It’s important to balance performance improvements with the needs of your organization and users.
-
-
-
### Enable default channel leave/join system messages
This setting determines whether team leave/join system messages are posted in the default `town-square` channel.
diff --git a/server/public/model/config.go b/server/public/model/config.go
index fb3608c99f86..7851daa30269 100644
--- a/server/public/model/config.go
+++ b/server/public/model/config.go
@@ -441,7 +441,7 @@ type ServiceSettings struct {
EnableFileSearch *bool `access:"write_restrictable"`
MinimumHashtagLength *int `access:"environment_database,write_restrictable,cloud_restrictable"`
EnableUserTypingMessages *bool `access:"site_posts,write_restrictable,cloud_restrictable"`
- EnableChannelViewedMessages *bool `access:"experimental_features,write_restrictable,cloud_restrictable"`
+ EnableChannelViewedMessages *bool `access:"environment_web_server,write_restrictable,cloud_restrictable"`
EnableUserStatuses *bool `access:"write_restrictable,cloud_restrictable"`
ExperimentalEnableAuthenticationTransfer *bool `access:"experimental_features"`
ClusterLogTimeoutMilliseconds *int `access:"write_restrictable,cloud_restrictable"`
diff --git a/webapp/channels/package.json b/webapp/channels/package.json
index fc08df1aba03..b53b255ec243 100644
--- a/webapp/channels/package.json
+++ b/webapp/channels/package.json
@@ -75,13 +75,13 @@
"prop-types": "15.8.1",
"react": "18.2.0",
"react-beautiful-dnd": "13.1.1",
- "react-bootstrap": "github:mattermost/react-bootstrap#05559f4c61c5a314783c390d2d82906ee8c7e558",
+ "react-bootstrap": "github:mattermost/react-bootstrap#c17701564a6f240a14419d94369936c380f917e5",
"react-color": "2.19.3",
"react-day-picker": "8.3.6",
"react-dom": "18.2.0",
"react-intl": "*",
"react-is": "18.2.0",
- "react-overlays": "0.9.3",
+ "react-overlays": "5.2.1",
"react-redux": "9.2.0",
"react-router-dom": "5.3.4",
"react-select": "5.9.0",
@@ -129,7 +129,6 @@
"@types/react-bootstrap": "0.32.35",
"@types/react-color": "3.0.6",
"@types/react-dom": "18.2.25",
- "@types/react-overlays": "1.1.3",
"@types/react-router-dom": "5.3.3",
"@types/react-transition-group": "4.4.5",
"@types/react-virtualized-auto-sizer": "1.0.1",
diff --git a/webapp/channels/src/components/__snapshots__/get_link_modal.test.tsx.snap b/webapp/channels/src/components/__snapshots__/get_link_modal.test.tsx.snap
index d4a06f09d104..98b23902937d 100644
--- a/webapp/channels/src/components/__snapshots__/get_link_modal.test.tsx.snap
+++ b/webapp/channels/src/components/__snapshots__/get_link_modal.test.tsx.snap
@@ -9,85 +9,82 @@ exports[`components/GetLinkModal should have called onHide when close button is
aria-hidden="true"
/>
+
-
-
-
-
+
- title
-
-
-
+
+
-
-
-
+
+
+ https://mattermost.com
+
+
+
@@ -104,85 +101,82 @@ exports[`components/GetLinkModal should have called onHide when close button is
aria-hidden="true"
/>
+
-
-
-
-
+
- title
-
-
-
+
+
-
-
-
+
+
+ https://mattermost.com
+
+
+
@@ -199,90 +193,87 @@ exports[`components/GetLinkModal should match snapshot when all props is set 1`]
aria-hidden="true"
/>
+
-
-
-
-
+
- title
-
-
-
+
+
-
- help text
-
-
-
-
-
-
+
+
+ help text
+
+
+
+
+ https://mattermost.com
+
+
+
@@ -299,85 +290,82 @@ exports[`components/GetLinkModal should match snapshot when helpText is not set
aria-hidden="true"
/>
+
-
-
-
-
+
- title
-
-
-
+
+
-
-
-
+
+
+ https://mattermost.com
+
+
+
diff --git a/webapp/channels/src/components/__snapshots__/list_modal.test.tsx.snap b/webapp/channels/src/components/__snapshots__/list_modal.test.tsx.snap
index 73e2c9dcdf4f..15bed1551eca 100644
--- a/webapp/channels/src/components/__snapshots__/list_modal.test.tsx.snap
+++ b/webapp/channels/src/components/__snapshots__/list_modal.test.tsx.snap
@@ -11,109 +11,106 @@ exports[`components/ListModal should match snapshot 1`] = `
+
-
-
-
-
+
-
- list modal
-
-
-
+ Close
+
+
+
+
+ list modal
+
+
+
+
+
+
+
+
+
+ 1 - 2 of 3 total
+
+
+
+
+
-
-
+ 123
-
- 1 - 2 of 3 total
-
+ 234
-
-
-
- 123
-
-
- 234
-
-
-
-
+
@@ -133,114 +130,111 @@ exports[`components/ListModal should match snapshot with title bar button 1`] =
+
-
-
-
-
+
-
- list modal
-
-
-
+
+
- Add Foo
-
-
+ list modal
+
+
+
+
+
+
+
+
+
+
+ 1 - 2 of 3 total
+
+
+
+
+
-
-
+ 123
-
- 1 - 2 of 3 total
-
+ 234
-
-
-
- 123
-
-
- 234
-
-
-
-
+
diff --git a/webapp/channels/src/components/__snapshots__/post_deleted_modal.test.tsx.snap b/webapp/channels/src/components/__snapshots__/post_deleted_modal.test.tsx.snap
index f0d349174261..f5a81522492c 100644
--- a/webapp/channels/src/components/__snapshots__/post_deleted_modal.test.tsx.snap
+++ b/webapp/channels/src/components/__snapshots__/post_deleted_modal.test.tsx.snap
@@ -9,70 +9,67 @@ exports[`components/PostDeletedModal should match snapshot 1`] = `
aria-hidden="true"
/>
+
-
-
-
-
+
- Comment could not be posted
-
-
-
+
+
-
- Someone deleted the message on which you tried to post a comment.
-
-
-
+
+
+ Someone deleted the message on which you tried to post a comment.
+
+
+
+ Okay
+
diff --git a/webapp/channels/src/components/add_groups_to_channel_modal/__snapshots__/add_groups_to_channel_modal.test.tsx.snap b/webapp/channels/src/components/add_groups_to_channel_modal/__snapshots__/add_groups_to_channel_modal.test.tsx.snap
index e8c684a6c703..3dc813dfae5f 100644
--- a/webapp/channels/src/components/add_groups_to_channel_modal/__snapshots__/add_groups_to_channel_modal.test.tsx.snap
+++ b/webapp/channels/src/components/add_groups_to_channel_modal/__snapshots__/add_groups_to_channel_modal.test.tsx.snap
@@ -9,179 +9,176 @@ exports[`components/AddGroupsToChannelModal should match snapshot 1`] = `
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add New Groups to
-
- foo
-
- Channel
-
-
+ Close
+
+
+
+ Add New Groups to
+
+ foo
+
+ Channel
+
+
+
+
+
-
-
+ Search and add groups
+
+
-
- Search and add groups
-
-
-
-
+
-
-
- Add
-
-
+
+
+ Add
+
+
+
+
-
- Use ↑↓ to browse, ↵ to select. You can add 10 more groups.
-
+ Use ↑↓ to browse, ↵ to select. You can add 10 more groups.
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
diff --git a/webapp/channels/src/components/add_groups_to_team_modal/__snapshots__/add_groups_to_team_modal.test.tsx.snap b/webapp/channels/src/components/add_groups_to_team_modal/__snapshots__/add_groups_to_team_modal.test.tsx.snap
index d86bb83693cd..bee0faea15b2 100644
--- a/webapp/channels/src/components/add_groups_to_team_modal/__snapshots__/add_groups_to_team_modal.test.tsx.snap
+++ b/webapp/channels/src/components/add_groups_to_team_modal/__snapshots__/add_groups_to_team_modal.test.tsx.snap
@@ -9,179 +9,176 @@ exports[`components/AddGroupsToTeamModal should match snapshot 1`] = `
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add New Groups to
-
- foo
-
- Team
-
-
+ Close
+
+
+
+ Add New Groups to
+
+ foo
+
+ Team
+
+
+
+
+
-
-
+ Search and add groups
+
+
-
- Search and add groups
-
-
-
-
+
-
-
- Add
-
-
+
+
+ Add
+
+
+
+
-
- Use ↑↓ to browse, ↵ to select. You can add 10 more groups.
-
+ Use ↑↓ to browse, ↵ to select. You can add 10 more groups.
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
diff --git a/webapp/channels/src/components/add_user_to_channel_modal/__snapshots__/add_user_to_channel_modal.test.tsx.snap b/webapp/channels/src/components/add_user_to_channel_modal/__snapshots__/add_user_to_channel_modal.test.tsx.snap
index cab7e8638dd7..1f8835a0c864 100644
--- a/webapp/channels/src/components/add_user_to_channel_modal/__snapshots__/add_user_to_channel_modal.test.tsx.snap
+++ b/webapp/channels/src/components/add_user_to_channel_modal/__snapshots__/add_user_to_channel_modal.test.tsx.snap
@@ -9,87 +9,84 @@ exports[`components/AddUserToChannelModal should match snapshot 1`] = `
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add Fake Person to a Channel
-
-
-
+
-
+ Cancel
+
+
+ Add
+
+
+
diff --git a/webapp/channels/src/components/add_users_to_group_modal/__snapshots__/add_users_to_group_modal.test.tsx.snap b/webapp/channels/src/components/add_users_to_group_modal/__snapshots__/add_users_to_group_modal.test.tsx.snap
index b3dfc9834384..16bf0617f199 100644
--- a/webapp/channels/src/components/add_users_to_group_modal/__snapshots__/add_users_to_group_modal.test.tsx.snap
+++ b/webapp/channels/src/components/add_users_to_group_modal/__snapshots__/add_users_to_group_modal.test.tsx.snap
@@ -9,176 +9,173 @@ exports[`component/add_users_to_group_modal should match snapshot 1`] = `
aria-hidden="true"
/>
+
-
-
-
+
+
-
-
-
-
-
- Add people to Group Name
-
-
-
- ×
-
-
- Close
-
+
+
+ Add people to Group Name
+
+
+
+ ×
+
+
+ Close
+
+
+
+
-
-
-
-
+
+
diff --git a/webapp/channels/src/components/add_users_to_team_modal/__snapshots__/add_users_to_team_modal.test.tsx.snap b/webapp/channels/src/components/add_users_to_team_modal/__snapshots__/add_users_to_team_modal.test.tsx.snap
index b4f9376408ad..9c34d0fe8ae4 100644
--- a/webapp/channels/src/components/add_users_to_team_modal/__snapshots__/add_users_to_team_modal.test.tsx.snap
+++ b/webapp/channels/src/components/add_users_to_team_modal/__snapshots__/add_users_to_team_modal.test.tsx.snap
@@ -9,179 +9,176 @@ exports[`components/admin_console/add_users_to_team_modal/AddUsersToTeamModal sh
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add New Members to
-
- test-team
-
- Team
-
-
+ Close
+
+
+
+ Add New Members to
+
+ test-team
+
+ Team
+
+
+
+
+
-
-
+ Search for people
+
+
-
- Search for people
-
-
-
-
+
-
-
- Add
-
-
+
+
+ Add
+
+
+
+
-
- Use ↑↓ to browse, ↵ to select. You can add 20 more people.
-
+ Use ↑↓ to browse, ↵ to select. You can add 20 more people.
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
diff --git a/webapp/channels/src/components/admin_console/admin_definition.tsx b/webapp/channels/src/components/admin_console/admin_definition.tsx
index 709142a1d3f0..a5505a73c159 100644
--- a/webapp/channels/src/components/admin_console/admin_definition.tsx
+++ b/webapp/channels/src/components/admin_console/admin_definition.tsx
@@ -1141,6 +1141,14 @@ const AdminDefinition: AdminDefinitionType = {
],
isDisabled: it.not(it.userHasWritePermissionOnResource(RESOURCE_KEYS.ENVIRONMENT.WEB_SERVER)),
},
+ {
+ type: 'bool',
+ key: 'ServiceSettings.EnableChannelViewedMessages',
+ label: defineMessage({id: 'admin.service.enableChannelViewedMessages', defaultMessage: 'Enable Channel Viewed WebSocket Messages:'}),
+ help_text: defineMessage({id: 'admin.service.enableChannelViewedMessagesDescription', defaultMessage: 'This setting determines whether `channel_viewed` WebSocket events are sent, which synchronize unread notifications across clients and devices. Disabling the setting in larger deployments may improve server performance.'}),
+ help_text_markdown: false,
+ isDisabled: it.not(it.userHasWritePermissionOnResource(RESOURCE_KEYS.ENVIRONMENT.WEB_SERVER)),
+ },
{
type: 'bool',
key: 'ServiceSettings.EnableInsecureOutgoingConnections',
@@ -6564,14 +6572,6 @@ const AdminDefinition: AdminDefinitionType = {
help_text_markdown: true,
isDisabled: it.not(it.userHasWritePermissionOnResource(RESOURCE_KEYS.EXPERIMENTAL.FEATURES)),
},
- {
- type: 'bool',
- key: 'ServiceSettings.EnableChannelViewedMessages',
- label: defineMessage({id: 'admin.experimental.enableChannelViewedMessages.title', defaultMessage: 'Enable Channel Viewed WebSocket Messages:'}),
- help_text: defineMessage({id: 'admin.experimental.enableChannelViewedMessages.desc', defaultMessage: 'This setting determines whether `channel_viewed` WebSocket events are sent, which synchronize unread notifications across clients and devices. Disabling the setting in larger deployments may improve server performance.'}),
- help_text_markdown: false,
- isDisabled: it.not(it.userHasWritePermissionOnResource(RESOURCE_KEYS.EXPERIMENTAL.FEATURES)),
- },
{
type: 'bool',
key: 'ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages',
diff --git a/webapp/channels/src/components/admin_console/admin_definition_channel_viewed_messages.test.tsx b/webapp/channels/src/components/admin_console/admin_definition_channel_viewed_messages.test.tsx
new file mode 100644
index 000000000000..17bf808fc107
--- /dev/null
+++ b/webapp/channels/src/components/admin_console/admin_definition_channel_viewed_messages.test.tsx
@@ -0,0 +1,46 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See LICENSE.txt for license information.
+
+import {RESOURCE_KEYS} from 'mattermost-redux/constants/permissions_sysconsole';
+
+import AdminDefinition from './admin_definition';
+import type {AdminDefinitionSetting, AdminDefinitionSubSection, ConsoleAccess} from './types';
+
+type DisabledCheck = (config: object, state: object, license: undefined, enterpriseReady: boolean, consoleAccess: ConsoleAccess) => boolean;
+
+const CHANNEL_VIEWED_MESSAGES_KEY = 'ServiceSettings.EnableChannelViewedMessages';
+
+function settingsOf(subsection: AdminDefinitionSubSection): AdminDefinitionSetting[] {
+ const schema = subsection.schema;
+
+ return schema && 'settings' in schema && schema.settings ? schema.settings : [];
+}
+
+function writeAccessTo(resourceKey: string): ConsoleAccess {
+ return {read: {}, write: {[resourceKey]: true}};
+}
+
+describe('AdminDefinition - Enable Channel Viewed WebSocket Messages setting', () => {
+ const getSetting = () => settingsOf(AdminDefinition.environment.subsections.web_server).
+ find((setting) => setting.key === CHANNEL_VIEWED_MESSAGES_KEY);
+
+ test('is rendered on the Environment > Web Server page and not under Experimental Features', () => {
+ const setting = getSetting();
+
+ expect(setting).toBeDefined();
+ expect(setting?.type).toBe('bool');
+ expect(setting?.label).toBeDefined();
+ expect(setting?.help_text).toBeDefined();
+
+ const experimentalKeys = settingsOf(AdminDefinition.experimental.subsections.experimental_features).map((setting) => setting.key);
+ expect(experimentalKeys).not.toContain(CHANNEL_VIEWED_MESSAGES_KEY);
+ });
+
+ test('is gated on write access to the Web Server console resource', () => {
+ const isDisabled = getSetting()?.isDisabled as DisabledCheck;
+ expect(typeof isDisabled).toBe('function');
+
+ expect(isDisabled({}, {}, undefined, true, writeAccessTo(RESOURCE_KEYS.ENVIRONMENT.WEB_SERVER))).toBe(false);
+ expect(isDisabled({}, {}, undefined, true, writeAccessTo(RESOURCE_KEYS.EXPERIMENTAL.FEATURES))).toBe(true);
+ });
+});
diff --git a/webapp/channels/src/components/admin_console/manage_teams_modal/__snapshots__/manage_teams_modal.test.tsx.snap b/webapp/channels/src/components/admin_console/manage_teams_modal/__snapshots__/manage_teams_modal.test.tsx.snap
index 2f73b68fefcc..5a7b011673d1 100644
--- a/webapp/channels/src/components/admin_console/manage_teams_modal/__snapshots__/manage_teams_modal.test.tsx.snap
+++ b/webapp/channels/src/components/admin_console/manage_teams_modal/__snapshots__/manage_teams_modal.test.tsx.snap
@@ -9,84 +9,81 @@ exports[`ManageTeamsModal should match snapshot init 1`] = `
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Manage Teams
-
-
-
+
+
-
+ Manage Teams
+
+
+
+
+
+
-
+ @currentUsername
+
+
-
- @currentUsername
-
-
- currentUser@test.com
-
+ currentUser@test.com
-
+
diff --git a/webapp/channels/src/components/admin_console/manage_tokens_modal/__snapshots__/manage_tokens_modal.test.tsx.snap b/webapp/channels/src/components/admin_console/manage_tokens_modal/__snapshots__/manage_tokens_modal.test.tsx.snap
index 083f01e5ffac..b30cce0952a0 100644
--- a/webapp/channels/src/components/admin_console/manage_tokens_modal/__snapshots__/manage_tokens_modal.test.tsx.snap
+++ b/webapp/channels/src/components/admin_console/manage_tokens_modal/__snapshots__/manage_tokens_modal.test.tsx.snap
@@ -9,124 +9,121 @@ exports[`components/admin_console/manage_tokens_modal/manage_tokens_modal.tsx in
aria-hidden="true"
/>
+
+ interact with this Mattermost server
+
+ . Tokens are disabled if the user is deactivated. Learn more about
+
+ personal access tokens
+
+ .
+
+
-
- No personal access tokens.
-
+ No personal access tokens.
diff --git a/webapp/channels/src/components/admin_console/system_roles/system_role/add_users_to_role_modal/__snapshots__/add_users_to_role_modal.test.tsx.snap b/webapp/channels/src/components/admin_console/system_roles/system_role/add_users_to_role_modal/__snapshots__/add_users_to_role_modal.test.tsx.snap
index c35f0a1eb4cd..cf4c891a34ce 100644
--- a/webapp/channels/src/components/admin_console/system_roles/system_role/add_users_to_role_modal/__snapshots__/add_users_to_role_modal.test.tsx.snap
+++ b/webapp/channels/src/components/admin_console/system_roles/system_role/add_users_to_role_modal/__snapshots__/add_users_to_role_modal.test.tsx.snap
@@ -9,178 +9,175 @@ exports[`admin_console/add_users_to_role_modal search should not include bot use
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add users to
-
- role_name
-
-
-
+ Close
+
+
+
+ Add users to
+
+ role_name
+
+
+
+
+
+
-
-
-
- Search for people
-
-
-
-
+ Search for people
+
+
+
-
-
- Add
-
-
+
+
+ Add
+
+
+
+
-
- Use ↑↓ to browse, ↵ to select. You can add 20 more people.
-
+ Use ↑↓ to browse, ↵ to select. You can add 20 more people.
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
@@ -198,178 +195,175 @@ exports[`admin_console/add_users_to_role_modal should exclude user 1`] = `
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add users to
-
- role_name
-
-
-
+ Close
+
+
+
+ Add users to
+
+ role_name
+
+
+
+
+
+
-
-
-
- Search for people
-
-
-
-
+ Search for people
+
+
+
-
-
- Add
-
-
+
+
+ Add
+
+
+
+
-
- Use ↑↓ to browse, ↵ to select. You can add 20 more people.
-
+ Use ↑↓ to browse, ↵ to select. You can add 20 more people.
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
@@ -387,178 +381,175 @@ exports[`admin_console/add_users_to_role_modal should have single passed value 1
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add users to
-
- role_name
-
-
-
+ Close
+
+
+
+ Add users to
+
+ role_name
+
+
+
+
+
+
-
-
-
- Search for people
-
-
-
-
+ Search for people
+
+
+
-
-
- Add
-
-
+
+
+ Add
+
+
+
+
-
- Use ↑↓ to browse, ↵ to select. You can add 20 more people.
-
+ Use ↑↓ to browse, ↵ to select. You can add 20 more people.
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
@@ -576,178 +567,175 @@ exports[`admin_console/add_users_to_role_modal should include additional user 1`
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add users to
-
- role_name
-
-
-
+ Close
+
+
+
+ Add users to
+
+ role_name
+
+
+
+
+
+
-
-
+ Search for people
+
+
-
- Search for people
-
-
-
-
+
-
-
- Add
-
-
+
+
+ Add
+
+
+
+
-
- Use ↑↓ to browse, ↵ to select. You can add 20 more people.
-
+ Use ↑↓ to browse, ↵ to select. You can add 20 more people.
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
@@ -765,178 +753,175 @@ exports[`admin_console/add_users_to_role_modal should not include bot user 1`] =
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Add users to
-
- role_name
-
-
-
+ Close
+
+
+
+ Add users to
+
+ role_name
+
+
+
+
+
+
-
-
+ Search for people
+
+
-
- Search for people
-
-
-
-
+
-
-
- Add
-
-
+
+
+ Add
+
+
+
+
-
- Use ↑↓ to browse, ↵ to select. You can add 20 more people.
-
+ Use ↑↓ to browse, ↵ to select. You can add 20 more people.
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
diff --git a/webapp/channels/src/components/admin_console/team_channel_settings/group/__snapshots__/group_members_modal.test.tsx.snap b/webapp/channels/src/components/admin_console/team_channel_settings/group/__snapshots__/group_members_modal.test.tsx.snap
index 7b7c7e7ec2ed..94a10b016f02 100644
--- a/webapp/channels/src/components/admin_console/team_channel_settings/group/__snapshots__/group_members_modal.test.tsx.snap
+++ b/webapp/channels/src/components/admin_console/team_channel_settings/group/__snapshots__/group_members_modal.test.tsx.snap
@@ -9,127 +9,124 @@ exports[`admin_console/team_channel_settings/group/GroupList should match snapsh
aria-hidden="true"
/>
+
diff --git a/webapp/channels/src/components/get_public_link_modal/__snapshots__/get_public_link_modal.test.tsx.snap b/webapp/channels/src/components/get_public_link_modal/__snapshots__/get_public_link_modal.test.tsx.snap
index f70c88a32abb..35e16eef28c1 100644
--- a/webapp/channels/src/components/get_public_link_modal/__snapshots__/get_public_link_modal.test.tsx.snap
+++ b/webapp/channels/src/components/get_public_link_modal/__snapshots__/get_public_link_modal.test.tsx.snap
@@ -9,88 +9,85 @@ exports[`components/GetPublicLinkModal should match snapshot when link is empty
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Copy Public Link
-
-
-
+
+
-
- The link below allows anyone to see this file without being registered on this server.
-
-
-
-
-
-
+
+
+ The link below allows anyone to see this file without being registered on this server.
+
+
+
+
+
+
+ Close
+
+
+
+ Copy Link
+
@@ -107,90 +104,87 @@ exports[`components/GetPublicLinkModal should match snapshot when link is not em
aria-hidden="true"
/>
+
-
-
-
-
- ×
-
-
- Close
-
-
-
+
- Copy Public Link
-
-
-
+
+
-
- The link below allows anyone to see this file without being registered on this server.
-
-
-
- Next channel:
+ Edit last message in channel:
- Alt
-
-
- Down
+ Up
- Previous unread channel:
+ Reply to last message in channel:
-
- Alt
-
@@ -159,12 +487,12 @@ exports[`components/KeyboardShortcutsModal should match snapshot modal 1`] = `
class="shortcut-line"
>
- Next unread channel:
+ React to last message:
- Alt
+ Ctrl
- Down
+ ⧵
- Previous team:
+ Reprint previous message:
Ctrl
-
- Alt
-
@@ -203,134 +526,108 @@ exports[`components/KeyboardShortcutsModal should match snapshot modal 1`] = `
class="shortcut-line"
>
- Next team:
+ Reprint next message:
Ctrl
-
- Alt
-
Down
-
+
+
-
- Navigate to a specific team:
-
-
- Ctrl
-
-
- Alt
-
-
- [1-9]
-
-
- Previous channel:
+ Edit last message in channel:
-
- Alt
-
@@ -1019,29 +1366,29 @@ exports[`components/KeyboardShortcutsModal should match snapshot modal with Call
class="shortcut-line"
>
- Next channel:
+ Reply to last message in channel:
- Alt
+ Shift
- Down
+ Up
- Previous unread channel:
+ React to last message:
- Alt
+ Ctrl
- Up
+ ⧵
- Next unread channel:
+ Reprint previous message:
- Alt
+ Ctrl
- Shift
+ Up
+
+
+
+
+ Reprint next message:
+
+
+ Ctrl
+
+
+
+ Autocomplete
+
- Previous team:
+ Username:
- Ctrl
+ @
- Alt
+ [a-z]
- Up
+ Tab
- Next team:
+ Channel:
- Ctrl
+ ~
- Alt
+ [a-z]
- Down
+ Tab
- Navigate to a specific team:
+ Emoji:
- Ctrl
+ :
- Alt
+ [a-z]
- [1-9]
+ Tab
+
+
+
+ Formatting
+
- Quick channel navigation:
+ Bold:
- K
+ B
- Direct messages menu:
+ Italic:
- Shift
-
-
- K
+ I
- Settings:
+ Link:
- Shift
+ Alt
- A
+ K
+
+
+
+ Searching
+
- Recent mentions:
+ In channel:
- Shift
+ F
+
+
+
+
+
+ Files
+
+
+
+ Upload files:
+
+
+ Ctrl
- M
+ U
+
+
+
+
+
+
+
+
+
+ Built-in Browser Commands
+
+
+
+
+ Back in history:
+
+
+ Alt
+
+
+ Left
+
+
+
+
+ Forward in history:
+
+
+ Alt
+
+
+ Right
+
+
+
+
+ Zoom in:
+
+
+ Ctrl
+
+
+ +
+
+
+
+
+ Zoom out:
+
+
+ Ctrl
+
+
+ -
+
+
+
+
+ Works inside an input field
+
- Set focus to input field:
+ Highlight text to the previous line:
- Ctrl
+ Shift
+
+
+ Up
+
+
+
+ Highlight text to the next line:
+
@@ -1244,31 +1754,53 @@ exports[`components/KeyboardShortcutsModal should match snapshot modal with Call
- L
+ Down
- Open or close the right sidebar:
+ Create a new line:
- Ctrl
+ Shift
- .
+ Enter
+
+
+
+
+
+
+
+ Calls
+
+
+
+
+ Global
+
- Expand the right sidebar:
+ Join call in current channel:
- Shift
+ Alt
- .
+ S
+
+
+
+ Call widget
+
- View channel info:
+ Mute or unmute:
- Alt
+ Shift
- I
+ Space
- Toggle unread/all channels:
+ Raise or lower hand:
- U
+ Y
-
-
-
-
-
-
-
-
- Messages
-
-
-
-
- Works inside an empty input field
-
-
-
- Edit last message in channel:
-
-
- Up
-
-
-
-
- Reply to last message in channel:
-
-
- Shift
-
-
- Up
-
-
-
-
- React to last message:
-
-
- Ctrl
-
-
- Shift
-
-
- ⧵
-
-
diff --git a/webapp/channels/src/components/leave_channel_modal/__snapshots__/leave_channel_modal.test.tsx.snap b/webapp/channels/src/components/leave_channel_modal/__snapshots__/leave_channel_modal.test.tsx.snap
index 858b4f0e227c..3a8ccca847e6 100644
--- a/webapp/channels/src/components/leave_channel_modal/__snapshots__/leave_channel_modal.test.tsx.snap
+++ b/webapp/channels/src/components/leave_channel_modal/__snapshots__/leave_channel_modal.test.tsx.snap
@@ -9,100 +9,96 @@ exports[`components/LeaveChannelModal should match snapshot for the policy enfor
aria-hidden="true"
/>
+
-
-
-
- Leave Ask IT channel
-
-
+ Leave Ask IT channel
+
-
-
- ×
-
-
- Close
-
-
+
+
+ ×
+
+
+ Close
+
+
+
+
-
-
- You're part of this channel's membership policy. If you leave, you will not be automatically re-added.
-
-
- To stay a member without notifications, you can mute this channel instead.
-
-
+
+ You're part of this channel's membership policy. If you leave, you will not be automatically re-added.
+
+
+ To stay a member without notifications, you can mute this channel instead.
+
-
@@ -120,103 +116,99 @@ exports[`components/LeaveChannelModal should match snapshot, init 1`] = `
aria-hidden="true"
/>
+
-
-
-
- Leave Channel
-
- Town Square
-
-
-
+ Leave Channel
+
+ Town Square
+
+
-
-
- ×
-
-
- Close
-
-
-
-
+ ×
+
+
-
-
+
+
+
+
+
+
+ Are you sure you wish to leave the channel
+
+ Town Square
+
+ ? You can re-join this channel in the future if you change your mind.
+
+
-
+ Yes, leave channel
+
diff --git a/webapp/channels/src/components/leave_team_modal/__snapshots__/leave_team_modal.test.tsx.snap b/webapp/channels/src/components/leave_team_modal/__snapshots__/leave_team_modal.test.tsx.snap
index 64617fb24bec..7f158a0834e5 100644
--- a/webapp/channels/src/components/leave_team_modal/__snapshots__/leave_team_modal.test.tsx.snap
+++ b/webapp/channels/src/components/leave_team_modal/__snapshots__/leave_team_modal.test.tsx.snap
@@ -9,62 +9,59 @@ exports[`components/LeaveTeamModal should render the leave team model 1`] = `
aria-hidden="true"
/>
+
-
-
-
- Leave the team?
-
-
-
+
+
+
+ You will be removed from 0 private channels on this team.
+
+ If the team is private you won't be able to rejoin it without an invitation from another team member. Are you sure?
+
+
-
+ Yes
+
diff --git a/webapp/channels/src/components/more_direct_channels/__snapshots__/more_direct_channels.test.tsx.snap b/webapp/channels/src/components/more_direct_channels/__snapshots__/more_direct_channels.test.tsx.snap
index a3f3c32ce444..675eaec47384 100644
--- a/webapp/channels/src/components/more_direct_channels/__snapshots__/more_direct_channels.test.tsx.snap
+++ b/webapp/channels/src/components/more_direct_channels/__snapshots__/more_direct_channels.test.tsx.snap
@@ -9,192 +9,188 @@ exports[`components/MoreDirectChannels should exclude deleted users if there is
aria-hidden="true"
/>
+
-
-
-
- Direct Messages
-
-
+ Direct Messages
+
-
-
- ×
-
-
- Close
-
-
+
+
+ ×
+
+
+ Close
+
+
+
+
+
+
-
-
-
- Search for people
-
-
-
-
+ Search for people
+
+
+
-
-
- Go
-
-
-
- Use ↑↓ to browse, ↵ to select. You can add 7 more people.
- 2 of 3 members
-
+
+ Go
+
+
+ Use ↑↓ to browse, ↵ to select. You can add 7 more people.
+ 2 of 3 members
+
+
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
@@ -215,239 +211,235 @@ exports[`components/MoreDirectChannels should match snapshot 1`] = `
aria-hidden="true"
/>
+
-
-
-
- Direct Messages
-
-
+ Direct Messages
+
-
-
- ×
-
-
- Close
-
-
+
+
+ ×
+
+
+ Close
+
+
+
+
+
+
-
-
-
- some-user
-
-
-
-
-
-
+ some-user
-
- some-user
-
-
-
-
-
-
+
+
+
+
+
+
+ some-user
-
+
+
+
+
+
+
-
-
- Go
-
-
-
- Use ↑↓ to browse, ↵ to select. You can add 5 more people.
- 1 of 3 members
-
+
+ Go
+
+
+ Use ↑↓ to browse, ↵ to select. You can add 5 more people.
+ 1 of 3 members
+
+
+
+
+
+ Loading
+
-
- Loading
-
-
-
-
-
+ class="round round-1"
+ />
+
+
-
+
diff --git a/webapp/channels/src/components/plugin_marketplace/__snapshots__/marketplace_modal.test.tsx.snap b/webapp/channels/src/components/plugin_marketplace/__snapshots__/marketplace_modal.test.tsx.snap
index d611364bae41..d3e3862a6810 100644
--- a/webapp/channels/src/components/plugin_marketplace/__snapshots__/marketplace_modal.test.tsx.snap
+++ b/webapp/channels/src/components/plugin_marketplace/__snapshots__/marketplace_modal.test.tsx.snap
@@ -9,108 +9,114 @@ exports[`components/marketplace/ doesn't show web marketplace banner for Cloud 1
aria-hidden="true"
/>
+
-
-
-
- App Marketplace
-
-
+ App Marketplace
+
-
-
- ×
-
-
- Close
-
-
+
+
+ ×
+
+
+ Close
+
+
+
+
-
-
- Error connecting to the marketplace server. Please check your settings in the
-
+
- System Console
-
- .
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
- Loading
-
-
-
-
-
+ No plugins found
@@ -131,162 +137,300 @@ exports[`components/marketplace/ hides search and shows web marketplace banner 1
aria-hidden="true"
/>
+
-
-
-
- App Marketplace
-
-
+ App Marketplace
+
-
-
- ×
-
-
- Close
-
-
+
+
+ ×
+
+
+ Close
+
+
+
+
-
-
- Error connecting to the marketplace server. Please check your settings in the
-
+
- System Console
-
- .
-
-