"title":"[IMPROVE] Send only relevant data via WebSocket",
"userLogin":"sampaiodiego",
"description":"Previously when any data changed on subscriptions or rooms we were getting fresh data from database, to also remove undesired fields, but sometimes the data that changed was not relevant so we were sending the whole object everytime **without** the fields that actually changed. This change aims to reduce this overhead and also send less data to clients.",
"milestone":"3.14.5",
"contributors":[
"sampaiodiego",
"web-flow"
]
},
{
"pr":"22257",
"title":"[FIX] Support DISABLE_PRESENCE_MONITOR env var in new DB watchers",
"userLogin":"sampaiodiego",
"milestone":"3.14.5",
"contributors":[
"sampaiodiego"
]
}
]
},
"3.16.0-rc.0":{
"node_version":"12.22.1",
"npm_version":"6.14.1",
"apps_engine_version":"1.27.0-alpha.5192",
"mongo_versions":[
"3.4",
"3.6",
"4.0",
"4.2"
],
"pull_requests":[
{
"pr":"22309",
"title":"[FIX] Notifications not using user's name",
"userLogin":"sampaiodiego",
"contributors":[
"sampaiodiego"
]
},
{
"pr":"22329",
"title":"[FIX] Memory leak generated by Stream Cast usage",
"userLogin":"rodrigok",
"description":"Stream Cast uses a different approach to broadcast data to the instances, it uses the DDP subscription method that requires a collection on the other side, if no collection exists with the given name `broadcast-stream` it caches in memory waiting for the collection to be set later. The cache is cleared only when a reconnection happens.\r\n\r\nThis PR overrides the function that processes the data for that specific connection, preventing the cache and everything else to be processed since we already have our low-level listener to process the data.",
"contributors":[
"rodrigok",
"sampaiodiego"
]
},
{
"pr":"22354",
"title":"Chore: Attachment Definitions and UiKitDefinitions",
"userLogin":"ggazzo",
"contributors":[
"ggazzo",
"web-flow",
"sampaiodiego"
]
},
{
"pr":"22373",
"title":"[FIX] Cancel button and success toast at Leave Team modal",
"userLogin":"gabriellsh",
"contributors":[
"gabriellsh",
"web-flow",
"tassoevan"
]
},
{
"pr":"22391",
"title":"Regression: Enable unregistered servers to use their own push gateway",
"userLogin":"lucassartor",
"description":"https://github.com/RocketChat/Rocket.Chat/pull/22346 prevented unregistered servers from using the RC push gateway but was still blocking this servers from using their own push gateway, this PR looks to fix that.",
"contributors":[
"lucassartor",
"sampaiodiego"
]
},
{
"pr":"22401",
"title":"[FIX] OAuth login not working on electron app with temp sessions.",
"userLogin":"pierre-lehnen-rc",
"contributors":[
"pierre-lehnen-rc"
]
},
{
"pr":"20724",
"title":"[NEW] Content-Security-Policy for inline scripts",
"userLogin":"ggazzo",
"description":"Security policies were applied for inline scripts cases. Due to the libraries and components we use it is not possible to disable inline styles and images as they would break Oembeds and other libraries.\r\n\r\n\r\nbasically the inline scripts were moved to a js file\r\n\r\nand besides that some suggars syntax like `addScript` and `addStyle` were added, this way the application already takes care of inserting the elements and providing the content automatically.",
"milestone":"3.16.0",
"contributors":[
"ggazzo",
"web-flow",
"sampaiodiego"
]
},
{
"pr":"22395",
"title":"[FIX] Setup wizard infinite loop when on subfolder.",
"userLogin":"gabriellsh",
"contributors":[
"gabriellsh",
"tassoevan",
"web-flow"
]
},
{
"pr":"22402",
"title":"[FIX] Unable to change protected role's description",
"userLogin":"pierre-lehnen-rc",
"contributors":[
"pierre-lehnen-rc",
"lucassartor",
"web-flow"
]
},
{
"pr":"22316",
"title":"[FIX] Missing Throbber while thread list is loading",
"userLogin":"dougfabris",
"description":"### before\r\nList was starting with no results even if there's results:\r\n\r\n\r\n\r\n### after\r\n",
"contributors":[
"dougfabris",
"web-flow",
"gabriellsh"
]
},
{
"pr":"21853",
"title":"Chore: Remove unnecessary modals replacing to GenericModal",
"userLogin":"dougfabris",
"contributors":[
"dougfabris",
"gabriellsh",
"web-flow"
]
},
{
"pr":"22306",
"title":"[FIX] _updatedAt attribute not being automatically updated by raw models",
"title":"[FIX] LDAP and SAML: changed usernames are not reflected on old data",
"userLogin":"pierre-lehnen-rc",
"contributors":[
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"22370",
"title":"Regression: RoomProvider using wrong types",
"userLogin":"ggazzo",
"contributors":[
"ggazzo",
"MartinSchoeler",
"web-flow"
]
},
{
"pr":"22232",
"title":"[NEW] Remove \"Game Center\" setting",
"userLogin":"lolimay",
"milestone":"3.16.0",
"contributors":[
"lolimay",
"web-flow",
"d-gubert"
]
},
{
"pr":"22018",
"title":"[IMPROVE] Update system messages' behavior in rooms",
"userLogin":"matheusbsilva137",
"description":"- Update room's `lastMessage` when its \"Hide System Messages\" setting is updated;\r\n- Display system messages in the last message field (in the sidebar, using the extended view) -- iff the system message sent is not hidden in the room;\r\n- Send an alert to the room members when a system message is sent -- iff the system message sent is not hidden in the room;\r\n- Properly update a room's `lastMessage` field when the previous `lastMessage` is deleted -- system messages can now be set as last messages.",
"contributors":[
"matheusbsilva137",
"web-flow",
"pierre-lehnen-rc",
"sampaiodiego"
]
},
{
"pr":"22223",
"title":"[IMPROVE] Missing tests to `fname` and `prid` in the `rooms.createDiscussion` endpoint",
"userLogin":"matheusbsilva137",
"description":"- Add tests to the values of `fname` and `prid` in the `rooms.createDiscussion` endpoint's results.",
"contributors":[
"matheusbsilva137",
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"22345",
"title":"Chore: Move getUserRoles to service and add cache",
"userLogin":"sampaiodiego",
"contributors":[
"sampaiodiego"
]
},
{
"pr":"22326",
"title":"[FIX] DeepL supported languages",
"userLogin":"mrsimpson",
"contributors":[
"mrsimpson",
"geekgonecrazy",
"web-flow"
]
},
{
"pr":"22214",
"title":"Regression: Fix CORS in uikit endpoints",
"userLogin":"sampaiodiego",
"contributors":[
"sampaiodiego",
"d-gubert",
"web-flow"
]
},
{
"pr":"22364",
"title":"[FIX] `channels.history`, `groups.history` and `im.history` REST endpoints not respecting hide system message config",
"userLogin":"sampaiodiego",
"contributors":[
"sampaiodiego"
]
},
{
"pr":"22369",
"title":"Regression: Api tests not running",
"userLogin":"pierre-lehnen-rc",
"contributors":[
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"22321",
"title":"Refactor few methods to improve Omnichannel flow",
"userLogin":"ggazzo",
"contributors":[
"ggazzo",
"web-flow",
"tiagoevanp"
]
},
{
"pr":"22346",
"title":"Chore: Enable push gateway only if the server is registered",
"userLogin":"lucassartor",
"description":"Currently, when creating an unregistered server, the default value of the push gateway setting is set to true and is disabled (it can't be changed unless the server is registered). This is a wrong behavior as an unregistered server **can't** use the push gateway.\r\n\r\nThis PR creates a validation to check if the server is registered when enabling the push gateway. That way, even if the push gateway setting is turned on, but the server is unregistered, the push gateway **won't** work - it will behave like it is off.",
"contributors":[
"lucassartor",
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"22279",
"title":"[FIX] [IMPROVE] Prevent creation of duplicated roles and new `roles.update` endpoint",
"userLogin":"lucassartor",
"description":"Currently, the action of updating a role is broken: because roles have their `_id` = `name`, when updating a role there's no way to validate if the user is trying to update or create a new role with a name that already exists - which causes wrong behaviors, such as roles with the same name and not being able to update them.\r\n\r\nTo proper fix this, this PR looks to change the creation of roles. Now, roles have a unique `_id` value and there's a endpoint to update roles: `/api/v1/roles.update`.\r\n\r\nDoing so, it's possible to validate on both endpoints (`roles.create` and `roles.update`) to not allow roles with duplicated names.\r\n\r\n**OBS:** The unique id changes only reflect new roles, the standard roles (such as admin and user) still have `_id` = `name`, but new roles now **can't** have the same name as them.",
"contributors":[
"lucassartor",
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"22367",
"title":"[IMPROVE] New indexes for Omnichannel-related collections",
"userLogin":"renatobecker",
"contributors":[
"renatobecker"
]
},
{
"pr":"20650",
"title":"[NEW] Add setting to configure default role for user on manual registration",
"userLogin":"lucassartor",
"description":"Add an `admin` setting to determine the initial `role` for new users who registered manually (through the register form and via API, not using an authentication service), normally all new users are assigned to the `user` role.\r\n\r\nThe setting can be found in `Admin`->`Accounts`->`Registration`.\r\n\r\n\r\nThe setting initial value is false, so the default behaviour stays the same while creating a new server or upgrading one.\r\n\r\nhttps://user-images.githubusercontent.com/49413772/107253220-ddeb2f00-6a14-11eb-85b4-f770dbbe4970.mp4\r\n\r\nVideo showing an example of the setting being used and creating an new user with the default roles via API.",
"contributors":[
"lucassartor",
"sampaiodiego",
"web-flow"
]
},
{
"pr":"22277",
"title":"[FIX] Jitsi integration sending random \"join now\" messages",
"userLogin":"pierre-lehnen-rc",
"contributors":[
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"22247",
"title":"[NEW] Open modals in side effects outside React",
"userLogin":"gabriellsh",
"milestone":"3.16.0",
"contributors":[
"gabriellsh",
"tassoevan",
"web-flow"
]
},
{
"pr":"22140",
"title":"Chore: Check PR Title on every submission",
"description":"- Add new `teams.converToChannel` endpoint;\r\n- Update `ConvertToTeam` modal text (since this action can now be reversed);\r\n- Remove corresponding team memberships when a team is deleted or converted to a channel;",
"contributors":[
"matheusbsilva137",
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"22340",
"title":"Language update from LingoHub 🤖 on 2021-06-14Z",
"userLogin":"lingohub[bot]",
"contributors":[
null
]
},
{
"pr":"22317",
"title":"Chore: Enforce TypeScript on Storybook",
"userLogin":"tassoevan",
"description":"Rewrite some Storybook stories in TypeScript, as an example.",
"contributors":[
"tassoevan",
"ggazzo",
"web-flow"
]
},
{
"pr":"22322",
"title":"[FIX][ENTERPRISE] Omnichannel enterprise permissions being added back to its default roles",
"userLogin":"sampaiodiego",
"description":"Fix omnichannel monitor permissions being added back to omnichannel monitor role on every startup.",
"milestone":"3.14.6",
"contributors":[
"sampaiodiego"
]
},
{
"pr":"22312",
"title":"[IMPROVE] Add BBB and Jitsi to Team",
"userLogin":"gabriellsh",
"description":"Added 2 new settings:\r\n- `Admin > Video Conference > Big Blue Button > Enable for teams`\r\n- `Admin > Video Conference > Jitsi > Enable in teams`",
"contributors":[
"gabriellsh",
"tassoevan",
"web-flow"
]
},
{
"pr":"22290",
"title":"[FIX] Attachments and avatars not rendered if deployed on subfolder",
"userLogin":"gabriellsh",
"milestone":"3.15.1",
"contributors":[
"gabriellsh",
"tassoevan",
"web-flow"
]
},
{
"pr":"22301",
"title":"[FIX] Error generating Jitsi Token",
"userLogin":"gabriellsh",
"milestone":"3.16.0",
"contributors":[
"gabriellsh",
"tassoevan",
"web-flow"
]
},
{
"pr":"22211",
"title":"[FIX] Missing burger menu on direct messages",
"title":"[IMPROVE] Paginated department select on forward chat",
"userLogin":"MartinSchoeler",
"description":"Changes the department dropdown to use the new paginated selects, allowing for searching and displaying more than 50 departments",
"contributors":[
"MartinSchoeler",
"renatobecker",
"web-flow",
"tiagoevanp"
]
},
{
"pr":"22313",
"title":"[FIX] Permission check for teams.listRoomsOfUser",
"userLogin":"gabriellsh",
"description":"If the user is trying to list his own channels, the permission check is skipped.",
"contributors":[
"gabriellsh",
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"22224",
"title":"[IMPROVE] Rewrite Create Discussion Modal (only through sidebar)",
"userLogin":"gabriellsh",
"description":"This is only available by creating a new discussion when clicking on the sidebar button. Other places will be implemented afterwards.\r\n\r\n",
"contributors":[
"dougfabris",
"gabriellsh",
"web-flow"
]
},
{
"pr":"22286",
"title":"Chore: Remove Meter.wrapAsync from upload api",
"userLogin":"ggazzo",
"contributors":[
"ggazzo",
"sampaiodiego"
]
},
{
"pr":"22300",
"title":"Regression: Missing flexDirection on select field",
"title":"Chore: Update delete team modal to new design",
"userLogin":"gabriellsh",
"description":"Now the modal has only 2 steps (steps 1 and 2 were merged)\r\n",
"contributors":[
"gabriellsh",
"dougfabris",
"web-flow"
]
},
{
"pr":"21452",
"title":"[FIX] Wrong member's contextualBar on direct multiple",
"title":"[IMPROVE] Send only relevant data via WebSocket",
"userLogin":"sampaiodiego",
"description":"Previously when any data changed on subscriptions or rooms we were getting fresh data from database, to also remove undesired fields, but sometimes the data that changed was not relevant so we were sending the whole object everytime **without** the fields that actually changed. This change aims to reduce this overhead and also send less data to clients.",
"milestone":"3.14.5",
"contributors":[
"sampaiodiego",
"web-flow"
]
},
{
"pr":"22257",
"title":"[FIX] Support DISABLE_PRESENCE_MONITOR env var in new DB watchers",
"userLogin":"sampaiodiego",
"milestone":"3.14.5",
"contributors":[
"sampaiodiego"
]
},
{
"pr":"22243",
"title":"[FIX][ENTERPRISE] Prevent Visitor Abandonment after forwarding chat",
"userLogin":"murtaza98",
"description":"Currently the Visitor Abandonment timer isn't affected when the chat is forwarded. However this is affecting the UX in certain situations like eg: A bot forwarding a chat to an human agent\r\n\r\n\r\nTo solve this issue, we'll now be stoping the Visitor Abandonment timer once a chat is forwarded.",
"contributors":[
"murtaza98",
"renatobecker",
"web-flow"
]
},
{
"pr":"22245",
"title":" [IMPROVE] Add modal to close chats when tags/comments are not required",
"userLogin":"rafaelblink",
"description":"When neither tags or comments are required to close a livechat, show this modal instead: \r\n",
"contributors":[
"rafaelblink",
"web-flow"
]
},
{
"pr":"22250",
"title":"Chore: Bump node_modules cache key",
"userLogin":"sampaiodiego",
"contributors":[
"sampaiodiego"
]
},
{
"pr":"21253",
"title":"[IMPROVE][APPS] Refactor bridges",
"userLogin":"d-gubert",
"description":"Make the bridge classes extend abstract classes provided by the engine instead of just implementing an interface. The new abstract classes feature proxy methods used for permission verification in each method. This is also offers space to add more behaviors before executing the actual bridge methods.",
"contributors":[
"d-gubert",
"thassiov",
"web-flow"
]
},
{
"pr":"22203",
"title":"[FIX] Read receipts are broken",
"userLogin":"pierre-lehnen-rc",
"contributors":[
"pierre-lehnen-rc",
"web-flow"
]
},
{
"pr":"21549",
"title":"[FIX] Remove useless message options from Omnichannel Rooms",
"userLogin":"rafaelblink",
"contributors":[
"rafaelblink",
"renatobecker",
"web-flow"
]
},
{
"pr":"22097",
"title":"[IMPROVE] Add debouncing to units selects filters",
"userLogin":"MartinSchoeler",
"contributors":[
"MartinSchoeler",
"renatobecker",
"web-flow"
]
},
{
"pr":"22155",
"title":"[FIX] Omnichannel information panel is not displaying departments correctly",
"userLogin":"rafaelblink",
"contributors":[
null,
"renatobecker",
"web-flow"
]
},
{
"pr":"22095",
"title":"[FIX][EE] Canned responses can't be deleted",
"userLogin":"rafaelblink",
"description":"Deletion button has been removed from the edition option.\r\n\r\n## Before\r\n\r\n\r\n### After\r\n",
"contributors":[
null,
"rafaelblink",
"web-flow",
"renatobecker"
]
},
{
"pr":"22154",
"title":"[FIX] Undefined error when forwarding chats to offline department",
"userLogin":"renatobecker",
"description":"\r\n\r\nOmnichannel agents are facing the error shown above when forwarding chats to offline departments.\r\nThe error usually takes place when the routing system algorithm is **Manual Selection**.",
"contributors":[
"renatobecker",
"rafaelblink",
"web-flow"
]
},
{
"pr":"22196",
"title":"Language update from LingoHub 🤖 on 2021-05-31Z",
"userLogin":"lingohub[bot]",
"contributors":[
null,
"sampaiodiego"
]
},
{
"pr":"22150",
"title":" [FIX] CORS error while interacting with any action button on Livechat ",
"userLogin":"murtaza98",
"milestone":"3.15.0",
"contributors":[
"murtaza98",
"web-flow"
]
},
{
"pr":"22167",
"title":"Chore: Remove not used scripts and its dependencies",
"userLogin":"sampaiodiego",
"contributors":[
"sampaiodiego"
]
},
{
"pr":"22184",
"title":"Merge master into develop & Set version to 3.16.0-develop",
- Update `ConvertToTeam` modal text (since this action can now be reversed);
- Remove corresponding team memberships when a team is deleted or converted to a channel;
- Add setting to configure default role for user on manual registration ([#20650](https://github.com/RocketChat/Rocket.Chat/pull/20650))
Add an `admin` setting to determine the initial `role` for new users who registered manually (through the register form and via API, not using an authentication service), normally all new users are assigned to the `user` role.
The setting can be found in `Admin`->`Accounts`->`Registration`.
Video showing an example of the setting being used and creating an new user with the default roles via API.
- Content-Security-Policy for inline scripts ([#20724](https://github.com/RocketChat/Rocket.Chat/pull/20724))
Security policies were applied for inline scripts cases. Due to the libraries and components we use it is not possible to disable inline styles and images as they would break Oembeds and other libraries.
basically the inline scripts were moved to a js file
and besides that some suggars syntax like `addScript` and `addStyle` were added, this way the application already takes care of inserting the elements and providing the content automatically.
- Open modals in side effects outside React ([#22247](https://github.com/RocketChat/Rocket.Chat/pull/22247))
Make the bridge classes extend abstract classes provided by the engine instead of just implementing an interface. The new abstract classes feature proxy methods used for permission verification in each method. This is also offers space to add more behaviors before executing the actual bridge methods.
- Add BBB and Jitsi to Team ([#22312](https://github.com/RocketChat/Rocket.Chat/pull/22312))
Added 2 new settings:
-`Admin > Video Conference > Big Blue Button > Enable for teams`
- `Admin > Video Conference > Jitsi > Enable in teams`
- Add debouncing to units selects filters ([#22097](https://github.com/RocketChat/Rocket.Chat/pull/22097))
- Add modal to close chats when tags/comments are not required ([#22245](https://github.com/RocketChat/Rocket.Chat/pull/22245))
When neither tags or comments are required to close a livechat, show this modal instead:

- Fallback messages on contextual bar ([#22376](https://github.com/RocketChat/Rocket.Chat/pull/22376))
- Send only relevant data via WebSocket ([#22258](https://github.com/RocketChat/Rocket.Chat/pull/22258))
Previously when any data changed on subscriptions or rooms we were getting fresh data from database, to also remove undesired fields, but sometimes the data that changed was not relevant so we were sending the whole object everytime **without** the fields that actually changed. This change aims to reduce this overhead and also send less data to clients.
- Update system messages' behavior in rooms ([#22018](https://github.com/RocketChat/Rocket.Chat/pull/22018))
- Update room's `lastMessage` when its "Hide System Messages" setting is updated;
- Display system messages in the last message field (in the sidebar, using the extended view) -- iff the system message sent is not hidden in the room;
- Send an alert to the room members when a system message is sent -- iff the system message sent is not hidden in the room;
- Properly update a room's `lastMessage` field when the previous `lastMessage` is deleted -- system messages can now be set as last messages.
### 🐛 Bug fixes
- _updatedAt attribute not being automatically updated by raw models ([#22306](https://github.com/RocketChat/Rocket.Chat/pull/22306))
- **EE:** Canned responses can't be deleted ([#22095](https://github.com/RocketChat/Rocket.Chat/pull/22095))
Deletion button has been removed from the edition option.
- **ENTERPRISE:** Omnichannel enterprise permissions being added back to its default roles ([#22322](https://github.com/RocketChat/Rocket.Chat/pull/22322))
Fix omnichannel monitor permissions being added back to omnichannel monitor role on every startup.
- **ENTERPRISE:** Prevent Visitor Abandonment after forwarding chat ([#22243](https://github.com/RocketChat/Rocket.Chat/pull/22243))
Currently the Visitor Abandonment timer isn't affected when the chat is forwarded. However this is affecting the UX in certain situations like eg: A bot forwarding a chat to an human agent
To solve this issue, we'll now be stoping the Visitor Abandonment timer once a chat is forwarded.
- **IMPROVE:** Prevent creation of duplicated roles and new `roles.update` endpoint ([#22279](https://github.com/RocketChat/Rocket.Chat/pull/22279))
Currently, the action of updating a role is broken: because roles have their `_id` = `name`, when updating a role there's no way to validate if the user is trying to update or create a new role with a name that already exists - which causes wrong behaviors, such as roles with the same name and not being able to update them.
To proper fix this, this PR looks to change the creation of roles. Now, roles have a unique `_id` value and there's a endpoint to update roles: `/api/v1/roles.update`.
Doing so, it's possible to validate on both endpoints (`roles.create` and `roles.update`) to not allow roles with duplicated names.
**OBS:** The unique id changes only reflect new roles, the standard roles (such as admin and user) still have `_id` = `name`, but new roles now **can't** have the same name as them.
- `channels.history`, `groups.history` and `im.history` REST endpoints not respecting hide system message config ([#22364](https://github.com/RocketChat/Rocket.Chat/pull/22364))
- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290))
- Auditing page not printing all messages ([#22272](https://github.com/RocketChat/Rocket.Chat/pull/22272))
Changed CSS so printed media from the auditing page includes all page content.
- Can't delete file from Room's file list ([#22191](https://github.com/RocketChat/Rocket.Chat/pull/22191))
- Memory leak generated by Stream Cast usage ([#22329](https://github.com/RocketChat/Rocket.Chat/pull/22329))
Stream Cast uses a different approach to broadcast data to the instances, it uses the DDP subscription method that requires a collection on the other side, if no collection exists with the given name `broadcast-stream` it caches in memory waiting for the collection to be set later. The cache is cleared only when a reconnection happens.
This PR overrides the function that processes the data for that specific connection, preventing the cache and everything else to be processed since we already have our low-level listener to process the data.
- Message box hiding on mobile view (Safari) ([#22212](https://github.com/RocketChat/Rocket.Chat/pull/22212))
- Notifications not using user's name ([#22309](https://github.com/RocketChat/Rocket.Chat/pull/22309))
- OAuth login not working on electron app with temp sessions. ([#22401](https://github.com/RocketChat/Rocket.Chat/pull/22401))
- Omnichannel information panel is not displaying departments correctly ([#22155](https://github.com/RocketChat/Rocket.Chat/pull/22155))
- Permission check for teams.listRoomsOfUser ([#22313](https://github.com/RocketChat/Rocket.Chat/pull/22313))
If the user is trying to list his own channels, the permission check is skipped.
- Read receipts are broken ([#22203](https://github.com/RocketChat/Rocket.Chat/pull/22203))
- Remove invalid check before sending notifications to Omnichannel online agents ([#22278](https://github.com/RocketChat/Rocket.Chat/pull/22278))
- Remove useless message options from Omnichannel Rooms ([#21549](https://github.com/RocketChat/Rocket.Chat/pull/21549))
- Removed follow button from message box in threads ([#21019](https://github.com/RocketChat/Rocket.Chat/pull/21019) by [@Darshilp326](https://github.com/Darshilp326))
Removed follow button from message box as it was coinciding with audio/file message in threads.
- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395))
- Sidebar not closing when clicking on a channel ([#22271](https://github.com/RocketChat/Rocket.Chat/pull/22271))
- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291))
- Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257))
- Unable to change protected role's description ([#22402](https://github.com/RocketChat/Rocket.Chat/pull/22402))
- Undefined error when forwarding chats to offline department ([#22154](https://github.com/RocketChat/Rocket.Chat/pull/22154))

Omnichannel agents are facing the error shown above when forwarding chats to offline departments.
The error usually takes place when the routing system algorithm is **Manual Selection**.
- Unread bar in channel flash quickly and then disappear ([#22275](https://github.com/RocketChat/Rocket.Chat/pull/22275))
- User Info displaying own user. ([#22219](https://github.com/RocketChat/Rocket.Chat/pull/22219))
- Web navigation breaks after visiting integrations admin page ([#21983](https://github.com/RocketChat/Rocket.Chat/pull/21983) by [@rexzing](https://github.com/rexzing))
Fix the navigation breaks issue after visiting the integrations administration page
- Wrong member's contextualBar on direct multiple ([#21452](https://github.com/RocketChat/Rocket.Chat/pull/21452))
- Chore: Check PR Title on every submission ([#22140](https://github.com/RocketChat/Rocket.Chat/pull/22140))
- Chore: Enable push gateway only if the server is registered ([#22346](https://github.com/RocketChat/Rocket.Chat/pull/22346))
Currently, when creating an unregistered server, the default value of the push gateway setting is set to true and is disabled (it can't be changed unless the server is registered). This is a wrong behavior as an unregistered server **can't** use the push gateway.
This PR creates a validation to check if the server is registered when enabling the push gateway. That way, even if the push gateway setting is turned on, but the server is unregistered, the push gateway **won't** work - it will behave like it is off.
- Chore: Enforce TypeScript on Storybook ([#22317](https://github.com/RocketChat/Rocket.Chat/pull/22317))
Rewrite some Storybook stories in TypeScript, as an example.
- Chore: Move getUserRoles to service and add cache ([#22345](https://github.com/RocketChat/Rocket.Chat/pull/22345))
- Chore: Remove Meter.wrapAsync from upload api ([#22286](https://github.com/RocketChat/Rocket.Chat/pull/22286))
- Chore: Remove not used scripts and its dependencies ([#22167](https://github.com/RocketChat/Rocket.Chat/pull/22167))
- Chore: Remove unnecessary modals replacing to GenericModal ([#21853](https://github.com/RocketChat/Rocket.Chat/pull/21853))
- Chore: Update delete team modal to new design ([#22127](https://github.com/RocketChat/Rocket.Chat/pull/22127))
Now the modal has only 2 steps (steps 1 and 2 were merged)
- Language update from LingoHub 🤖 on 2021-05-31Z ([#22196](https://github.com/RocketChat/Rocket.Chat/pull/22196))
- Language update from LingoHub 🤖 on 2021-06-14Z ([#22340](https://github.com/RocketChat/Rocket.Chat/pull/22340))
- Merge master into develop & Set version to 3.16.0-develop ([#22184](https://github.com/RocketChat/Rocket.Chat/pull/22184))
- Refactor few methods to improve Omnichannel flow ([#22321](https://github.com/RocketChat/Rocket.Chat/pull/22321))
- Regression: Api tests not running ([#22369](https://github.com/RocketChat/Rocket.Chat/pull/22369))
- Regression: Enable unregistered servers to use their own push gateway ([#22391](https://github.com/RocketChat/Rocket.Chat/pull/22391))
https://github.com/RocketChat/Rocket.Chat/pull/22346 prevented unregistered servers from using the RC push gateway but was still blocking this servers from using their own push gateway, this PR looks to fix that.
- Regression: Fix CORS in uikit endpoints ([#22214](https://github.com/RocketChat/Rocket.Chat/pull/22214))
- Regression: Missing flexDirection on select field ([#22300](https://github.com/RocketChat/Rocket.Chat/pull/22300))
- Send only relevant data via WebSocket ([#22258](https://github.com/RocketChat/Rocket.Chat/pull/22258))
Previously when any data changed on subscriptions or rooms we were getting fresh data from database, to also remove undesired fields, but sometimes the data that changed was not relevant so we were sending the whole object everytime **without** the fields that actually changed. This change aims to reduce this overhead and also send less data to clients.
### 🐛 Bug fixes
- Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257))