diff --git a/.github/history.json b/.github/history.json index 22a00de43d9b..f49ce6af2970 100644 --- a/.github/history.json +++ b/.github/history.json @@ -74398,6 +74398,49 @@ "5.0" ], "pull_requests": [] + }, + "4.7.1": { + "node_version": "14.18.3", + "npm_version": "6.14.15", + "mongo_versions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ], + "pull_requests": [ + { + "pr": "25471", + "title": "[FIX] Spotlight results showing usernames instead of real names", + "userLogin": "pierre-lehnen-rc", + "milestone": "4.7.1", + "contributors": [ + "pierre-lehnen-rc" + ] + }, + { + "pr": "25434", + "title": "[FIX] LDAP sync removing users from channels when multiple groups are mapped to it", + "userLogin": "pierre-lehnen-rc", + "milestone": "4.7.1", + "contributors": [ + "pierre-lehnen-rc" + ] + }, + { + "pr": "25441", + "title": "[NEW] Use setting to determine if initial general channel is needed", + "userLogin": "felipe-menelau", + "description": "- Adds flag responsible for overwriting #general channel creation", + "milestone": "4.7.1", + "contributors": [ + "felipe-menelau", + "sampaiodiego", + "web-flow" + ] + } + ] } } } \ No newline at end of file diff --git a/HISTORY.md b/HISTORY.md index 34be25edb261..e664f5c28bef 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,12 +1,39 @@ +# 4.7.1 +`2022-05-13 ยท 1 ๐ŸŽ‰ ยท 2 ๐Ÿ› ยท 3 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` + +### ๐ŸŽ‰ New features + + +- Use setting to determine if initial general channel is needed ([#25441](https://github.com/RocketChat/Rocket.Chat/pull/25441)) + + - Adds flag responsible for overwriting #general channel creation + +### ๐Ÿ› Bug fixes + + +- LDAP sync removing users from channels when multiple groups are mapped to it ([#25434](https://github.com/RocketChat/Rocket.Chat/pull/25434)) + +- Spotlight results showing usernames instead of real names ([#25471](https://github.com/RocketChat/Rocket.Chat/pull/25471)) + +### ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป Core Team ๐Ÿค“ + +- [@felipe-menelau](https://github.com/felipe-menelau) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + # 4.7.0 -`2022-05-03 ยท 4 ๐ŸŽ‰ ยท 7 ๐Ÿš€ ยท 33 ๐Ÿ› ยท 69 ๐Ÿ” ยท 35 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` +`2022-05-04 ยท 4 ๐ŸŽ‰ ยท 7 ๐Ÿš€ ยท 33 ๐Ÿ› ยท 69 ๐Ÿ” ยท 35 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` ### Engine versions - Node: `14.18.3` - NPM: `6.14.15` - MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` -- Apps-Engine: `1.31.0` ### ๐ŸŽ‰ New features @@ -39,13 +66,13 @@ Earlier OTR room uses only 2 states, we need more states to support future features. This adds more states for the OTR contextualBar. - + - Expired Screen Shot 2022-04-20 at 13 55 52 - + - Declined Screen Shot 2022-04-20 at 13 49 28 - + - Error Screen Shot 2022-04-20 at 13 55 26 @@ -86,10 +113,10 @@ } ``` was being used in the `departmentId` parameter. - + - Before: ![image](https://user-images.githubusercontent.com/30026625/161832057-d96ffd21-a7dd-421e-bfaa-3b9f4a9127b2.png) - + - After: ![image](https://user-images.githubusercontent.com/30026625/161831092-9ee77b51-b083-4f45-9c48-ab2e0511c4d6.png) @@ -97,10 +124,10 @@ Agent gets disconnected (or Unregistered) from asterisk in multiple ways. The goal is that agent should remain online unless agent explicitly logs off. - Agent can stop receiving calls in multiple ways due to network loss. Network loss can happen in following ways. + Agent can stop receiving calls in multiple ways due to network loss. Network loss can happen in following ways. 1. User tries to switch the network. User experiences a glitch of disconnectivity. This can be simulated by turning the network off - in the network tab of chrome's dev tool. This can disconnect the UA if the disconnection happens just before the registration refresh. - 2. Second reason is when computer goes in sleep mode. + in the network tab of chrome's dev tool. This can disconnect the UA if the disconnection happens just before the registration refresh. + 2. Second reason is when computer goes in sleep mode. 3. Third reason is that when asterisk is crashed/in maintenance mode/explicitly stopped. Solution: @@ -197,7 +224,7 @@ - UserCard sanitization ([#25089](https://github.com/RocketChat/Rocket.Chat/pull/25089)) - - Rewrites the component to TS + - Rewrites the component to TS - Fixes some visual issues ### before @@ -215,9 +242,9 @@ It was realised that the race does not happen because of the database or server noticing the changes late. But because of the time taken to establish the AMI connection with Asterisk. Solution: - - 1. Change apps/meteor/app/voip/server/startup.ts. When VoIP_Enabled is changed, await for Voip.init() to complete and then broadcast connector.statuschanged with changed value. - 2. From apps/meteor/server/modules/listeners/listeners.module.ts use notifyLoggedInThisInstance to notify all logged in users on current instance. + + 1. Change apps/meteor/app/voip/server/startup.ts. When VoIP_Enabled is changed, await for Voip.init() to complete and then broadcast connector.statuschanged with changed value. + 2. From apps/meteor/server/modules/listeners/listeners.module.ts use notifyLoggedInThisInstance to notify all logged in users on current instance. 3. in apps/meteor/client/providers/CallProvider/hooks/useVoipClient.ts add the event handler that receives this event. Change voipEnabled from constant to state. Change this state based on the 'value' that is received by the handler.
@@ -268,7 +295,7 @@ - Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) ([#25218](https://github.com/RocketChat/Rocket.Chat/pull/25218)) - - data and test-failure should be ignored + - data and test-failure should be ignored - ensure scripts use cross-env - Chore: Fix return type warnings ([#25275](https://github.com/RocketChat/Rocket.Chat/pull/25275)) @@ -339,7 +366,7 @@ - Regression: bump onboarding-ui version ([#25320](https://github.com/RocketChat/Rocket.Chat/pull/25320)) - - Bump to 'next' the onboarding-ui package from fuselage. + - Bump to 'next' the onboarding-ui package from fuselage. - Update from 'companyEmail' to 'email' adminData usage types - Regression: Change preference to be default legacy messages ([#25255](https://github.com/RocketChat/Rocket.Chat/pull/25255)) @@ -553,16 +580,16 @@ - Adding new statistics related to voip and omnichannel ([#24887](https://github.com/RocketChat/Rocket.Chat/pull/24887)) - - Total of Canned response messages sent - - Total of tags used - - Last-Chatted Agent Preferred (enabled/disabled) - - Assign new conversations to the contact manager (enabled/disabled) - - How to handle Visitor Abandonment setting - - Amount of chats placed on hold - - VoIP Enabled - - Amount of VoIP Calls - - Amount of VoIP Extensions connected - - Amount of Calls placed on hold (1x per call) + - Total of Canned response messages sent + - Total of tags used + - Last-Chatted Agent Preferred (enabled/disabled) + - Assign new conversations to the contact manager (enabled/disabled) + - How to handle Visitor Abandonment setting + - Amount of chats placed on hold + - VoIP Enabled + - Amount of VoIP Calls + - Amount of VoIP Extensions connected + - Amount of Calls placed on hold (1x per call) - Fixed Session Aggregation type definitions - New omnichannel statistics and async statistics processing. ([#24749](https://github.com/RocketChat/Rocket.Chat/pull/24749)) @@ -596,8 +623,8 @@ - **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) - - Improve the CallProvider code; - - Adjust the text case of the VoIP component on the FooterSidebar; + - Improve the CallProvider code; + - Adjust the text case of the VoIP component on the FooterSidebar; - Fix the bad behavior with the changes in queue's name. - `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732)) @@ -662,7 +689,7 @@ - LDAP avatars being rotated according to metadata even if the setting to rotate uploads is off ([#24320](https://github.com/RocketChat/Rocket.Chat/pull/24320)) - - Use the `FileUpload_RotateImages` setting (**Administration > File Upload > Rotate images on upload**) to control whether avatars should be rotated automatically based on their data (XEIF); + - Use the `FileUpload_RotateImages` setting (**Administration > File Upload > Rotate images on upload**) to control whether avatars should be rotated automatically based on their data (XEIF); - Display the avatar image preview (orientation) according to the `FileUpload_RotateImages` setting. - Missing dependency on useEffect at CallProvider ([#24882](https://github.com/RocketChat/Rocket.Chat/pull/24882)) @@ -698,7 +725,7 @@ - Room archived/unarchived system messages aren't sent when editing room settings ([#24897](https://github.com/RocketChat/Rocket.Chat/pull/24897)) - - Send the "Room archived" and "Room unarchived" system messages when editing room settings (and not only when rooms are archived/unarchived with the slash-command); + - Send the "Room archived" and "Room unarchived" system messages when editing room settings (and not only when rooms are archived/unarchived with the slash-command); - Fix the "Hide System Messages" option for the "Room archived" and "Room unarchived" system messages; - room message not load when is a new message ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955)) @@ -719,8 +746,8 @@ - Several issues related to custom roles ([#24052](https://github.com/RocketChat/Rocket.Chat/pull/24052)) - - Throw an error when trying to delete a role (User or Subscription role) that are still being used; - - Fix "Invalid Role" error for custom roles in Role Editing sidebar; + - Throw an error when trying to delete a role (User or Subscription role) that are still being used; + - Fix "Invalid Role" error for custom roles in Role Editing sidebar; - Fix "Users in Role" screen for custom roles. - Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752)) @@ -807,11 +834,11 @@ - Chore: Add E2E tests for livechat/visitor ([#24764](https://github.com/RocketChat/Rocket.Chat/pull/24764) by [@Muramatsu2602](https://github.com/Muramatsu2602)) - - Create a new test suite file under tests/end-to-end/api/livechat + - Create a new test suite file under tests/end-to-end/api/livechat - Create tests for the following endpoints: + livechat/visitor (create visitor, update visitor, add custom fields to visitors) -- Chore: add some missing REST definitions ([#24925](https://github.com/RocketChat/Rocket.Chat/pull/24925)) +- Chore: add some missing REST definitions ([#24925](https://github.com/RocketChat/Rocket.Chat/pull/24925) by [@gerzonc](https://github.com/gerzonc)) On the [mobile client](https://github.com/RocketChat/Rocket.Chat.ReactNative), we made an effort to collect more `REST API` definitions that are missing on the server side during our migration to TypeScript. Since we're both migrating to TypeScript, we thought it would be a good idea to share those so you guys can benefit from our initiative. @@ -861,8 +888,8 @@ - Chore: Storybook mocking and examples improved ([#24969](https://github.com/RocketChat/Rocket.Chat/pull/24969)) - - Stories from `ee/` included; - - Differentiate root story kinds; + - Stories from `ee/` included; + - Differentiate root story kinds; - Mocking of `ServerContext` via Storybook parameters. - Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754)) @@ -918,6 +945,7 @@ - [@aswinidev](https://github.com/aswinidev) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@eduardofcabrera](https://github.com/eduardofcabrera) +- [@gerzonc](https://github.com/gerzonc) - [@nishant23122000](https://github.com/nishant23122000) - [@ostjen](https://github.com/ostjen) - [@tkurz](https://github.com/tkurz) @@ -935,7 +963,6 @@ - [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) -- [@gerzonc](https://github.com/gerzonc) - [@ggazzo](https://github.com/ggazzo) - [@juliajforesti](https://github.com/juliajforesti) - [@matheusbsilva137](https://github.com/matheusbsilva137) @@ -1067,8 +1094,8 @@ - **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) - - Improve the CallProvider code; - - Adjust the text case of the VoIP component on the FooterSidebar; + - Improve the CallProvider code; + - Adjust the text case of the VoIP component on the FooterSidebar; - Fix the bad behavior with the changes in queue's name. - Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863)) @@ -1252,19 +1279,19 @@ - VoIP Support for Omnichannel ([#23102](https://github.com/RocketChat/Rocket.Chat/pull/23102)) - - Created VoipService to manage VoIP connections and PBX connection - - Created LivechatVoipService that will handle custom cases for livechat (creating rooms, assigning chats to queue, actions when call is finished, etc) - - Created Basic interfaces to support new services and new model - - Created Endpoints for management interfaces - - Implemented asterisk connector on VoIP service - - Created UI components to show calls incoming and to allow answering/rejecting calls - - Added new settings to control call server/management server connection values - - Added endpoints to associate Omnichannel Agents with PBX Extensions - - Added support for event listening on server side, to get metadata about calls being received/ongoing - - Created new pages to update settings & to see user-extension association - - Created new page to see ongoing calls (and past calls) - - Added support for remote hangup/hold on calls - - Implemented call metrics calculation (hold time, waiting time, talk time) + - Created VoipService to manage VoIP connections and PBX connection + - Created LivechatVoipService that will handle custom cases for livechat (creating rooms, assigning chats to queue, actions when call is finished, etc) + - Created Basic interfaces to support new services and new model + - Created Endpoints for management interfaces + - Implemented asterisk connector on VoIP service + - Created UI components to show calls incoming and to allow answering/rejecting calls + - Added new settings to control call server/management server connection values + - Added endpoints to associate Omnichannel Agents with PBX Extensions + - Added support for event listening on server side, to get metadata about calls being received/ongoing + - Created new pages to update settings & to see user-extension association + - Created new page to see ongoing calls (and past calls) + - Added support for remote hangup/hold on calls + - Implemented call metrics calculation (hold time, waiting time, talk time) - Show a notificaiton when call is received ### ๐Ÿš€ Improvements @@ -1293,7 +1320,7 @@ - Add user to room on "Click to Join!" button press ([#24041](https://github.com/RocketChat/Rocket.Chat/pull/24041) by [@ostjen](https://github.com/ostjen)) - - Add user to room on "Click to Join!" button press; + - Add user to room on "Click to Join!" button press; - Display the "Join" button in discussions inside channels (keeping the behavior consistent with discussions inside groups). - Added a new "All" tab which shows all integrations in Integrations ([#24109](https://github.com/RocketChat/Rocket.Chat/pull/24109) by [@aswinidev](https://github.com/aswinidev)) @@ -1349,7 +1376,7 @@ - Team system messages feedback ([#24209](https://github.com/RocketChat/Rocket.Chat/pull/24209) by [@ostjen](https://github.com/ostjen)) - - Delete some keys that aren't being used (eg: User_left_female). + - Delete some keys that aren't being used (eg: User_left_female). - Add new Teams' system messages: - `added-user-to-team`: **added** @\user to this Team; - `removed-user-from-team`: **removed** @\user from this Team; @@ -1357,7 +1384,7 @@ - `user-converted-to-channel`: **converted** #\room to a Channel; - `user-removed-room-from-team`: **removed** @\user from this Team; - `user-deleted-room-from-team`: **deleted** #\room from this Team; - - `user-added-room-to-team`: **deleted** #\room to this Team; + - `user-added-room-to-team`: **deleted** #\room to this Team; - Add the corresponding options to hide each new system message and the missing `ujt` and `ult` hide options. ### ๐Ÿ› Bug fixes @@ -1375,8 +1402,8 @@ - Issues on selecting users when importing CSV ([#24253](https://github.com/RocketChat/Rocket.Chat/pull/24253)) - * Fix users selecting by fixing their _id - * Add condition to disable 'Start importing' button if `usersCount`, `channelsCount` and `messageCount` equals 0, or if messageCount is alone + * Fix users selecting by fixing their _id + * Add condition to disable 'Start importing' button if `usersCount`, `channelsCount` and `messageCount` equals 0, or if messageCount is alone * Remove `disabled={usersCount === 0}` on user Tab - OAuth mismatch redirect_uri error ([#24450](https://github.com/RocketChat/Rocket.Chat/pull/24450)) @@ -1537,9 +1564,9 @@ - Regression: Error setting user avatars and mentioning rooms on Slack Import ([#24585](https://github.com/RocketChat/Rocket.Chat/pull/24585)) - - Fix `Mentioned room not found` error when importing rooms from Slack; - - Fix `Forbidden` error when setting avatars for users imported from Slack (on user import/creation); - - Fix incorrect message count on imported rooms; + - Fix `Mentioned room not found` error when importing rooms from Slack; + - Fix `Forbidden` error when setting avatars for users imported from Slack (on user import/creation); + - Fix incorrect message count on imported rooms; - Fix missing username on messages imported from Slack; - Regression: Error when trying to load name of dm rooms for avatars and notifications ([#24583](https://github.com/RocketChat/Rocket.Chat/pull/24583)) @@ -1791,7 +1818,7 @@ - lib/Statistics improved and metrics collector ([#24177](https://github.com/RocketChat/Rocket.Chat/pull/24177) by [@ostjen](https://github.com/ostjen)) - - On `statistics` object the property `get` is an async function now. + - On `statistics` object the property `get` is an async function now. - We need to collect additional data of feature activation through the statistics collector. - Some codes were splitted into another file just to organize. @@ -1825,10 +1852,10 @@ - Setup Wizard Registration Flow ([#23676](https://github.com/RocketChat/Rocket.Chat/pull/23676)) - This pull request brings a few improvements in our setup wizard flow, the very first contact with a Rocket.Chat. Some of them: - - A brand new visual design; - - Form validation improves; - - Allow users to navigate back to all steps; + This pull request brings a few improvements in our setup wizard flow, the very first contact with a Rocket.Chat. Some of them: + - A brand new visual design; + - Form validation improves; + - Allow users to navigate back to all steps; - Optimized steps to register your workspace or keep standalone. And many more! @@ -1867,8 +1894,8 @@ - Apps Contextual Bar not carrying title and room information ([#24241](https://github.com/RocketChat/Rocket.Chat/pull/24241)) Fixes: - - - the app's name being rendered instead of the view's title, + + - the app's name being rendered instead of the view's title, - the room's information (`IRoom`) wasn't being sent to the app when a `block action` happened Fixed behavior with correct view title and room information included in the block action event: @@ -1901,8 +1928,8 @@ - Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) - It: - - Adds `Firefox ESR` to `browserslist`; + It: + - Adds `Firefox ESR` to `browserslist`; - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. - Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) @@ -2215,8 +2242,8 @@ - Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) - It: - - Adds `Firefox ESR` to `browserslist`; + It: + - Adds `Firefox ESR` to `browserslist`; - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. - Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) @@ -2294,7 +2321,7 @@ - Update "Message Erasure Type" setting's description ([#23879](https://github.com/RocketChat/Rocket.Chat/pull/23879)) - - Improves the "Message Erasure Type" setting's description by providing more details regarding the expected behavior of each option ("Keep Messages and User Name", "Delete All Messages" and "Remove link between user and messages"); + - Improves the "Message Erasure Type" setting's description by providing more details regarding the expected behavior of each option ("Keep Messages and User Name", "Delete All Messages" and "Remove link between user and messages"); - Remove outdated translations (for this setting's description). - Webdav methods sanitization ([#23924](https://github.com/RocketChat/Rocket.Chat/pull/23924)) @@ -2436,14 +2463,14 @@ - Chore: Centralize email validation functionality ([#23816](https://github.com/RocketChat/Rocket.Chat/pull/23816)) - - Create lib for validating emails + - Create lib for validating emails - Modify places that validate emails to use the new central function - Chore: Change Menu props to accept next fuselage version ([#23839](https://github.com/RocketChat/Rocket.Chat/pull/23839)) - Chore: Create script to add new migrations ([#23822](https://github.com/RocketChat/Rocket.Chat/pull/23822)) - - Create NPM script to add new migrations + - Create NPM script to add new migrations - TODO: Infer next migration number from file list - Chore: Deleted LivechatPageVisited ([#23993](https://github.com/RocketChat/Rocket.Chat/pull/23993) by [@ostjen](https://github.com/ostjen)) @@ -2704,8 +2731,8 @@ - Engagement Dashboard ([#23547](https://github.com/RocketChat/Rocket.Chat/pull/23547)) - - Adds helpers `onToggledFeature` for server and client code to handle license activation/deactivation without server restart; - - Replaces usage of `useEndpointData` with `useQuery` (from [React Query](https://react-query.tanstack.com/)); + - Adds helpers `onToggledFeature` for server and client code to handle license activation/deactivation without server restart; + - Replaces usage of `useEndpointData` with `useQuery` (from [React Query](https://react-query.tanstack.com/)); - Introduces `view-engagement-dashboard` permission. - Improve the add user drop down for add a user in create channel modal for UserAutoCompleteMultiple ([#23766](https://github.com/RocketChat/Rocket.Chat/pull/23766) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -2736,11 +2763,11 @@ - Stricter API types ([#23735](https://github.com/RocketChat/Rocket.Chat/pull/23735)) - It: - - Adds stricter types for `API`; - - Enables types for `urlParams`; - - Removes mandatory passage of `undefined` payload on client; - - Corrects some regressions; + It: + - Adds stricter types for `API`; + - Enables types for `urlParams`; + - Removes mandatory passage of `undefined` payload on client; + - Corrects some regressions; - Reassures my belief in TypeScript supremacy. ### ๐Ÿ› Bug fixes @@ -2750,12 +2777,12 @@ - **ENTERPRISE:** OAuth "Merge Roles" removes roles from users ([#23588](https://github.com/RocketChat/Rocket.Chat/pull/23588)) - - Fix OAuth "Merge Roles": the "Merge Roles" option now synchronize only the roles described in the "**Roles to Sync**" setting available in each Custom OAuth settings' group (instead of replacing users' roles by their OAuth roles); + - Fix OAuth "Merge Roles": the "Merge Roles" option now synchronize only the roles described in the "**Roles to Sync**" setting available in each Custom OAuth settings' group (instead of replacing users' roles by their OAuth roles); - Fix "Merge Roles" and "Channel Mapping" not being performed/updated on OAuth login. - **ENTERPRISE:** Private rooms and discussions can't be audited ([#23673](https://github.com/RocketChat/Rocket.Chat/pull/23673)) - - Add Private rooms (groups) and Discussions to the Message Auditing (Channels) autocomplete; + - Add Private rooms (groups) and Discussions to the Message Auditing (Channels) autocomplete; - Update "Channels" tab name to "Rooms". - **ENTERPRISE:** Replace all occurrences of a placeholder on string instead of just first one ([#23703](https://github.com/RocketChat/Rocket.Chat/pull/23703)) @@ -2849,29 +2876,29 @@ We've been writing integration tests for the REST API quite regularly, but we can't say the same for UI-related modules. This PR is based on the assumption that _improving the developer experience on writing tests_ would increase our coverage and promote the adoption even for newcomers. Here as summary of the proposal: - + - Change Mocha configuration files: - Add a base configuration (`.mocharc.base.json`); - Rename the configuration for REST API tests (`mocha_end_to_end.opts.js -> .mocharc.api.js`); - Add a configuration for client modules (`.mocharc.client.js`); - - Enable ESLint for them. - - Add a Mocha test command exclusive for client modules (`npm run testunit-client`); + - Enable ESLint for them. + - Add a Mocha test command exclusive for client modules (`npm run testunit-client`); - Enable fast watch mode: - Configure `ts-node` to only transpile code (skip type checking); - - Define a list of files to be watched. - - Configure `mocha` environment on ESLint only for test files (required when using Mocha's globals); + - Define a list of files to be watched. + - Configure `mocha` environment on ESLint only for test files (required when using Mocha's globals); - Adopt Chai as our assertion library: - Unify the setup of Chai plugins (`chai-spies`, `chai-datetime`, `chai-dom`); - Replace `assert` with `chai`; - - Replace `chai.expect` with `expect`. + - Replace `chai.expect` with `expect`. - Enable integration tests with React components: - Enable JSX support on our default Babel configuration; - Adopt [testing library](https://testing-library.com/). - Chore: Rearrange module typings ([#23452](https://github.com/RocketChat/Rocket.Chat/pull/23452)) - - Move all external module declarations (definitions and augmentations) to `/definition/externals`; - - ~Symlink some modules on `/definition/externals` to `/ee/server/services/definition/externals`~ Share types with `/ee/server/services`; + - Move all external module declarations (definitions and augmentations) to `/definition/externals`; + - ~Symlink some modules on `/definition/externals` to `/ee/server/services/definition/externals`~ Share types with `/ee/server/services`; - Use TypeScript as server code entrypoint. - Chore: Remove duplicated 'name' key from rate limiter logs ([#23771](https://github.com/RocketChat/Rocket.Chat/pull/23771)) @@ -3049,7 +3076,7 @@ - **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) - - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. + - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. - **ENTERPRISE:** Omnichannel agent is not leaving the room when a forwarded chat is queued ([#23404](https://github.com/RocketChat/Rocket.Chat/pull/23404)) @@ -3108,7 +3135,7 @@ - SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) - - Remove `roles` field update on `insertOrUpdateSAMLUser` function; + - Remove `roles` field update on `insertOrUpdateSAMLUser` function; - Add SAML `syncRoles` event; - Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) @@ -3313,7 +3340,7 @@ - SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) - - Remove `roles` field update on `insertOrUpdateSAMLUser` function; + - Remove `roles` field update on `insertOrUpdateSAMLUser` function; - Add SAML `syncRoles` event;
@@ -3345,7 +3372,7 @@ - **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) - - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. + - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. - Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) @@ -3472,8 +3499,8 @@ - **ENTERPRISE:** "Download CSV" button doesn't work in the Engagement Dashboard's Active Users section ([#23013](https://github.com/RocketChat/Rocket.Chat/pull/23013)) - - Fix "Download CSV" button in the Engagement Dashboard's Active Users section; - - Add column headers to the CSV file downloaded from the Engagement Dashboard's Active Users section; + - Fix "Download CSV" button in the Engagement Dashboard's Active Users section; + - Add column headers to the CSV file downloaded from the Engagement Dashboard's Active Users section; - Split the data in multiple CSV files. - **ENTERPRISE:** CSV file downloaded in the Engagement Dashboard's New Users section contains undefined data ([#23014](https://github.com/RocketChat/Rocket.Chat/pull/23014)) @@ -3499,16 +3526,16 @@ - Remove deprecated endpoints ([#23162](https://github.com/RocketChat/Rocket.Chat/pull/23162)) The following REST endpoints were removed: - - - `/api/v1/emoji-custom` - - `/api/v1/info` - - `/api/v1/permissions` + + - `/api/v1/emoji-custom` + - `/api/v1/info` + - `/api/v1/permissions` - `/api/v1/permissions.list` The following Real time API Methods were removed: - - - `getFullUserData` - - `getServerInfo` + + - `getFullUserData` + - `getServerInfo` - `livechat:saveOfficeHours` - Remove Google Vision features ([#23160](https://github.com/RocketChat/Rocket.Chat/pull/23160)) @@ -3560,17 +3587,17 @@ - Awareness of seats usage while adding new members - Seats Cap about to be reached - Seats Cap reached - - Request more seats + - Request more seats - Warning Admins - System telling admins max seats are about to exceed - System telling admins max seats were exceed - Metric on Info Page - - Request more seats + - Request more seats - Warning Members - Invite link - Block creating new invite links - Block existing invite links (feedback on register process) - - Register to Workspaces + - Register to Workspaces - Emails - System telling admins max seats are about to exceed - System telling admins max seats were exceed @@ -3679,16 +3706,16 @@ - Sidebar not closing when clicking in Home or Directory on mobile view ([#23218](https://github.com/RocketChat/Rocket.Chat/pull/23218)) - ### Additional fixed - - Merge Burger menu components into a single component + ### Additional fixed + - Merge Burger menu components into a single component - Show a badge with no-read messages in the Burger Button: - ![image](https://user-images.githubusercontent.com/27704687/133679378-20fea2c0-4ac1-4b4e-886e-45154cc6afea.png) + ![image](https://user-images.githubusercontent.com/27704687/133679378-20fea2c0-4ac1-4b4e-886e-45154cc6afea.png) - remove useSidebarClose hook - Stop queue when Omnichannel is disabled or the routing method does not support it ([#23261](https://github.com/RocketChat/Rocket.Chat/pull/23261)) - - Add missing key logs - - Stop queue (and logs) when livechat is disabled or when routing method does not support queue + - Add missing key logs + - Stop queue (and logs) when livechat is disabled or when routing method does not support queue - Stop ignoring offline bot agents from delegation (previously, if a bot was offline, even with "Assign new conversations to bot agent" enabled, bot will be ignored and chat will be left in limbo (since bot was assigned, but offline). - Toolbox click not working on Safari(iOS) ([#23244](https://github.com/RocketChat/Rocket.Chat/pull/23244)) @@ -3982,8 +4009,8 @@ - **ENTERPRISE:** Maximum waiting time for chats in Omnichannel queue ([#22955](https://github.com/RocketChat/Rocket.Chat/pull/22955)) - - Add new settings to support closing chats that have been too long on waiting queue - - Moved old settings to new "Queue Management" section + - Add new settings to support closing chats that have been too long on waiting queue + - Moved old settings to new "Queue Management" section - Fix issue when closing a livechat room that caused client to not to know if room was open or not - Banner for the updates regarding authentication services ([#23055](https://github.com/RocketChat/Rocket.Chat/pull/23055) by [@g-thome](https://github.com/g-thome)) @@ -4071,8 +4098,8 @@ - Return transcript/dashboards based on timezone settings ([#22850](https://github.com/RocketChat/Rocket.Chat/pull/22850)) - - Added new setting to manage timezones - - Applied new setting to omnichannel dashboards (realtime, analytics) [NOTE: Other dashboards aren't using this setting actually) + - Added new setting to manage timezones + - Applied new setting to omnichannel dashboards (realtime, analytics) [NOTE: Other dashboards aren't using this setting actually) - Change getAnalyticsBetweenDate query to filter out system messages instead of substracting them - Tab margin style ([#22851](https://github.com/RocketChat/Rocket.Chat/pull/22851)) @@ -4212,7 +4239,7 @@ - Fix Auto Selection algorithm on community edition ([#22991](https://github.com/RocketChat/Rocket.Chat/pull/22991)) - - When using the autoselection algo on community editions, all agents were marked as unavailable due to an unapplied filter + - When using the autoselection algo on community editions, all agents were marked as unavailable due to an unapplied filter - Fixed an issue when both user & system setting to manange EE max number of chats allowed were set to 0
@@ -4323,9 +4350,9 @@ - Configuration for indices in Apps-Engine models ([#22705](https://github.com/RocketChat/Rocket.Chat/pull/22705)) - * Add `appId` field to the data saved by the Scheduler - * Add `appId` index to `rocketchat_apps_persistence` model - * Skip "trash collection" when deleting records from `rocketchat_apps_persistence` + * Add `appId` field to the data saved by the Scheduler + * Add `appId` index to `rocketchat_apps_persistence` model + * Skip "trash collection" when deleting records from `rocketchat_apps_persistence` * Add a new setting to control for how long we should keep logs from the apps ![image](https://user-images.githubusercontent.com/1810309/126246666-907f9d98-1d84-4dfe-a80a-7dd874d36fa8.png) @@ -4369,7 +4396,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/123182916-cada7800-d466-11eb-96ee-850be190d419.png) - ### Aditional Improves: + ### Aditional Improves: - Added a visual validation in the password field - Rewrite OTR modals ([#22583](https://github.com/RocketChat/Rocket.Chat/pull/22583)) @@ -4440,7 +4467,7 @@ - Call button is still displayed when the user doesn't have permission to use it ([#22170](https://github.com/RocketChat/Rocket.Chat/pull/22170)) - - Hide 'Call' buttons from the tab bar for muted users; + - Hide 'Call' buttons from the tab bar for muted users; - Display an error when a muted user attempts to enter a call using the 'Click to Join!' button. - Can't see full user profile on team's room ([#22355](https://github.com/RocketChat/Rocket.Chat/pull/22355)) @@ -4451,7 +4478,7 @@ ### after ![after](https://user-images.githubusercontent.com/27704687/121966870-bea73a00-cd45-11eb-9c89-ec52ac17e20f.gif) - ### aditional fix :rocket: + ### aditional fix :rocket: - unnecessary `TeamsMembers` component removed - Cannot create a discussion from top left sidebar as a user ([#22618](https://github.com/RocketChat/Rocket.Chat/pull/22618) by [@lucassartor](https://github.com/lucassartor)) @@ -4528,7 +4555,7 @@ Redirect the user to login after delete own account - ### Aditional fixes: + ### Aditional fixes: - Visual issue in password input on Delete Own Account Modal ### before @@ -4539,7 +4566,7 @@ - Remove stack traces from Meteor errors when debug setting is disabled ([#22699](https://github.com/RocketChat/Rocket.Chat/pull/22699)) - - Fix 'not iterable' errors in the `normalizeMessage` function; + - Fix 'not iterable' errors in the `normalizeMessage` function; - Remove stack traces from errors thrown by the `jitsi:updateTimeout` (and other `Meteor.Error`s) method. - Rewrite CurrentChats to TS ([#22424](https://github.com/RocketChat/Rocket.Chat/pull/22424)) @@ -4628,7 +4655,7 @@ - Regression: Data in the "Active Users" section is delayed in 1 day ([#22794](https://github.com/RocketChat/Rocket.Chat/pull/22794)) - - Fix 1 day delay in the Engagement Dashboard's "Active Users" section; + - Fix 1 day delay in the Engagement Dashboard's "Active Users" section; - Downgrade `@nivo/line` version. **Expected behavior:** ![active-users-engagement-dashboard](https://user-images.githubusercontent.com/36537004/127372185-390dc42f-bc90-4841-a22b-731f0aafcafe.PNG) @@ -4864,8 +4891,8 @@ - Add `teams.convertToChannel` endpoint ([#22188](https://github.com/RocketChat/Rocket.Chat/pull/22188)) - - Add new `teams.converToChannel` endpoint; - - Update `ConvertToTeam` modal text (since this action can now be reversed); + - Add new `teams.converToChannel` endpoint; + - 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) by [@lucassartor](https://github.com/lucassartor)) @@ -4903,8 +4930,8 @@ - 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` + 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)) @@ -5425,10 +5452,10 @@ - Inconsistent and misleading 2FA settings ([#22042](https://github.com/RocketChat/Rocket.Chat/pull/22042) by [@lucassartor](https://github.com/lucassartor)) Currently, there are some inconsistencies and incorrect behaviors on the 2FA settings, such as: - - - When disabling the TOTP 2FA, all 2FA are disabled; - - There are no option to disable only the TOTP 2FA; - - If 2FA are disabled, the other settings aren't blocked (the e-mail 2FA setting, for example); + + - When disabling the TOTP 2FA, all 2FA are disabled; + - There are no option to disable only the TOTP 2FA; + - If 2FA are disabled, the other settings aren't blocked (the e-mail 2FA setting, for example); - It lacks some labels to warn the user of some specific 2FA options. This PR looks to fix those issues. @@ -5601,11 +5628,11 @@ - Make the FR translation consistent with the 'room' translation + typos ([#21913](https://github.com/RocketChat/Rocket.Chat/pull/21913) by [@Jeanstaquet](https://github.com/Jeanstaquet)) - In the FR translation files, there were two terms that were used to refer to **'room'**: + In the FR translation files, there were two terms that were used to refer to **'room'**: - 'salon' (149 times used) ![image](https://user-images.githubusercontent.com/45966964/116829860-ac62a980-aba6-11eb-8212-e6f15ed0af82.png) - + - 'salle' (46 times used) ![image](https://user-images.githubusercontent.com/45966964/116829871-be444c80-aba6-11eb-9b42-e213fee6586a.png) @@ -5771,8 +5798,8 @@ - Add two more test cases to the slash-command test suite ([#21317](https://github.com/RocketChat/Rocket.Chat/pull/21317) by [@EduardoPicolo](https://github.com/EduardoPicolo)) - Added two more test cases to the slash-command test suite: - - 'should return an error when the command does not exist''; + Added two more test cases to the slash-command test suite: + - 'should return an error when the command does not exist''; - 'should return an error when no command is provided'; - Bump actions/stale from v3.0.8 to v3.0.18 ([#21877](https://github.com/RocketChat/Rocket.Chat/pull/21877) by [@dependabot[bot]](https://github.com/dependabot[bot])) @@ -6150,17 +6177,17 @@ - New set of rules for client code ([#21318](https://github.com/RocketChat/Rocket.Chat/pull/21318)) This _small_ PR does the following: - - - Now **React** is the web client's first-class citizen, being **loaded before Blaze**. Thus, `BlazeLayout` calls render templates inside of a React component (`BlazeLayoutWrapper`); - - Main client startup code, including polyfills, is written in **TypeScript**; - - At the moment, routes are treated as regular startup code; it's expected that `FlowRouter` will be deprecated in favor of a new routing library; - - **React** was updated to major version **17**, deprecating the usage of `React` as namespace (e.g. use `memo()` instead of `React.memo()`); + + - Now **React** is the web client's first-class citizen, being **loaded before Blaze**. Thus, `BlazeLayout` calls render templates inside of a React component (`BlazeLayoutWrapper`); + - Main client startup code, including polyfills, is written in **TypeScript**; + - At the moment, routes are treated as regular startup code; it's expected that `FlowRouter` will be deprecated in favor of a new routing library; + - **React** was updated to major version **17**, deprecating the usage of `React` as namespace (e.g. use `memo()` instead of `React.memo()`); - The `client/` and `ee/client/` directory are linted with a **custom ESLint configuration** that includes: - **Prettier**; - `react-hooks/*` rules for TypeScript files; - `react/no-multi-comp`, enforcing the rule of **one single React component per module**; - `react/display-name`, which enforces that **React components must have a name for debugging**; - - `import/named`, avoiding broken named imports. + - `import/named`, avoiding broken named imports. - A bunch of components were refactored to match the new ESLint rules. - On Hold system messages ([#21360](https://github.com/RocketChat/Rocket.Chat/pull/21360) by [@rafaelblink](https://github.com/rafaelblink)) @@ -6169,9 +6196,9 @@ - Password history ([#21607](https://github.com/RocketChat/Rocket.Chat/pull/21607)) - - Store each user's previously used passwords in a `passwordHistory` field (in the `users` record); - - Users' previously used passwords are stored in their `passwordHistory` even when the setting is disabled; - - Add "Password History" setting -- when enabled, it blocks users from reusing their most recent passwords; + - Store each user's previously used passwords in a `passwordHistory` field (in the `users` record); + - Users' previously used passwords are stored in their `passwordHistory` even when the setting is disabled; + - Add "Password History" setting -- when enabled, it blocks users from reusing their most recent passwords; - Convert `comparePassword` file to TypeScript. ![Password_Change](https://user-images.githubusercontent.com/36537004/115035168-ac726200-9ea2-11eb-93c6-fc8182ba5f3f.png) @@ -6192,10 +6219,10 @@ - Add error messages to the creation of channels or usernames containing reserved words ([#21016](https://github.com/RocketChat/Rocket.Chat/pull/21016)) - Display error messages when the user attempts to create or edit users' or channels' names with any of the following words (**case-insensitive**): - - admin; - - administrator; - - system; + Display error messages when the user attempts to create or edit users' or channels' names with any of the following words (**case-insensitive**): + - admin; + - administrator; + - system; - user. ![create-channel](https://user-images.githubusercontent.com/36537004/110132223-b421ef80-7da9-11eb-82bc-f0d4e1df967f.png) ![register-username](https://user-images.githubusercontent.com/36537004/110132234-b71ce000-7da9-11eb-904e-580233625951.png) @@ -6224,7 +6251,7 @@ - Resize custom emojis on upload instead of saving at max res ([#21593](https://github.com/RocketChat/Rocket.Chat/pull/21593)) - - Create new MediaService (ideally, should be in charge of all media-related operations) + - Create new MediaService (ideally, should be in charge of all media-related operations) - Resize emojis to 128x128 ### ๐Ÿ› Bug fixes @@ -6394,15 +6421,15 @@ - Typos/missing elements in the French translation ([#21525](https://github.com/RocketChat/Rocket.Chat/pull/21525) by [@Jeanstaquet](https://github.com/Jeanstaquet)) - - I have corrected some typos in the translation - - I added a translation for missing words - - I took the opportunity to correct a mistranslated word + - I have corrected some typos in the translation + - I added a translation for missing words + - I took the opportunity to correct a mistranslated word - Test_Desktop_Notifications was missing in the EN and FR file ![image](https://user-images.githubusercontent.com/45966964/114290186-e7792d80-9a7d-11eb-8164-3b5e72e93703.png) - Updating a message causing URLs to be parsed even within markdown code ([#21489](https://github.com/RocketChat/Rocket.Chat/pull/21489)) - - Fix `updateMessage` to avoid parsing URLs inside markdown + - Fix `updateMessage` to avoid parsing URLs inside markdown - Honor `parseUrls` property when updating messages - Use async await in TeamChannels delete channel action ([#21534](https://github.com/RocketChat/Rocket.Chat/pull/21534)) @@ -6433,14 +6460,14 @@ - A React-based replacement for BlazeLayout ([#21527](https://github.com/RocketChat/Rocket.Chat/pull/21527)) - - The Meteor package **`kadira:blaze-layout` was removed**; - - A **global subscription** for the current application layout (**`appLayout`**) replaces `BlazeLayout` entirely; - - The **`#react-root` element** is rendered on server-side instead of dynamically injected into the DOM tree; - - The **"page loading" throbber** is now rendered on the React tree; - - The **`renderRouteComponent` helper was removed**; - - Some code run without any criteria on **`main` template** module was moved into **client startup modules**; - - React portals used to embed Blaze templates have their own subscription (**`blazePortals`**); - - Some **route components were refactored** to remove a URL path trap originally disabled by `renderRouteComponent`; + - The Meteor package **`kadira:blaze-layout` was removed**; + - A **global subscription** for the current application layout (**`appLayout`**) replaces `BlazeLayout` entirely; + - The **`#react-root` element** is rendered on server-side instead of dynamically injected into the DOM tree; + - The **"page loading" throbber** is now rendered on the React tree; + - The **`renderRouteComponent` helper was removed**; + - Some code run without any criteria on **`main` template** module was moved into **client startup modules**; + - React portals used to embed Blaze templates have their own subscription (**`blazePortals`**); + - Some **route components were refactored** to remove a URL path trap originally disabled by `renderRouteComponent`; - A new component to embed the DOM nodes generated by **`RoomManager`** was created. - Add ')' after Date and Time in DB migration ([#21519](https://github.com/RocketChat/Rocket.Chat/pull/21519) by [@im-adithya](https://github.com/im-adithya)) @@ -6473,7 +6500,7 @@ - Fix: Missing module `eventemitter3` for micro services ([#21611](https://github.com/RocketChat/Rocket.Chat/pull/21611)) - - Fix error when running micro services after version 3.12 + - Fix error when running micro services after version 3.12 - Fix build of docker image version latest for micro services - Language update from LingoHub ๐Ÿค– on 2021-04-05Z ([#21446](https://github.com/RocketChat/Rocket.Chat/pull/21446)) @@ -6486,9 +6513,9 @@ - QoL improvements to add channel to team flow ([#21778](https://github.com/RocketChat/Rocket.Chat/pull/21778)) - - Fixed canAccessRoom validation - - Added e2e tests - - Removed channels that user cannot add to the team from autocomplete suggestions + - Fixed canAccessRoom validation + - Added e2e tests + - Removed channels that user cannot add to the team from autocomplete suggestions - Improved error messages - Regression: Bold, italic and strike render (Original markdown) ([#21747](https://github.com/RocketChat/Rocket.Chat/pull/21747)) @@ -6749,12 +6776,12 @@ #### How can you place a chat on Hold ? - A chat can be placed on-hold via 2 means + A chat can be placed on-hold via 2 means 1. Automatically place Abandoned chats On-hold ![image](https://user-images.githubusercontent.com/34130764/111537074-06431780-8791-11eb-8d23-99f5d9f8ec45.png) Via this :top: option you can define a timer which will get started when a customer sends a message. If we don't receive any message from the customer within this timer, the timer will get expired and the chat will be considered as Abandoned. ![image](https://user-images.githubusercontent.com/34130764/111537346-53bf8480-8791-11eb-8dc7-260633b4e98f.png) - The via this :top: setting you can choose to automatically place this abandoned chat On Hold + The via this :top: setting you can choose to automatically place this abandoned chat On Hold 2. Manually place a chat On Hold As an admin, you can allow an agent to manually place a chat on-hold. To do so, you'll need to turn on this :point_down: setting ![image](https://user-images.githubusercontent.com/34130764/111537545-97b28980-8791-11eb-86fd-db45b87e9cc1.png) @@ -6763,17 +6790,17 @@ #### How can you resume a On Hold chat ? An On Hold chat can be resumed via 2 means - + 1. If the Customer sends a message - If the Customer / Omnichannel End User sends a message to the On Hold chat, the On Hold chat will get automatically resumed. + If the Customer / Omnichannel End User sends a message to the On Hold chat, the On Hold chat will get automatically resumed. 2. Manually by agent An Agent can manually resume the On Hold chat via clicking the `Resume` button in the bottom of a chat room. ![image](https://user-images.githubusercontent.com/34130764/111538666-f88e9180-8792-11eb-8d14-01453b8e3db0.png) #### What would happen if the agent already reached maximum chats, and a On-Hold chat gets resumed ? Based on how the chat was resumed, there are multiple cases are each case is dealt differently - - - If an agent manually tries to resume the On Hold chat, he/she will get an error saying `Maximum Simultaneous chat limit reached` + + - If an agent manually tries to resume the On Hold chat, he/she will get an error saying `Maximum Simultaneous chat limit reached` - If a customer replies back on an On Hold chat and the last serving agent has reached maximum capacity, then this customer will be placed on the queue again from where based on the Routing Algorithm selected, the chat will get transferred to any available agent - Ability to hide 'Room topic changed' system messages ([#21062](https://github.com/RocketChat/Rocket.Chat/pull/21062) by [@Tirieru](https://github.com/Tirieru)) @@ -6790,12 +6817,12 @@ You can easily group your users as Teams on Rocket.Chat. The feature takes the hassle out of managing multiple users one by one and allows you to handle them at the same time efficiently. - - - Teams can be public or private and each team can have its own channels, which also can be public or private. - - It's possible to add existing channels to a Team or create new ones inside a Team. - - It's possible to invite people outside a Team to join Team's channels. - - It's possible to convert channels to Teams - - It's possible to add all team members to a channel at once + + - Teams can be public or private and each team can have its own channels, which also can be public or private. + - It's possible to add existing channels to a Team or create new ones inside a Team. + - It's possible to invite people outside a Team to join Team's channels. + - It's possible to convert channels to Teams + - It's possible to add all team members to a channel at once - Team members have roles @@ -7066,19 +7093,19 @@ - Chore: Add tests for Meteor methods ([#20901](https://github.com/RocketChat/Rocket.Chat/pull/20901)) Add end-to-end tests for the following meteor methods - - - [x] public-settings:get - - [x] rooms:get - - [x] subscriptions:get - - [x] permissions:get - - [x] loadMissedMessages - - [x] loadHistory - - [x] listCustomUserStatus - - [x] getUserRoles - - [x] getRoomRoles (called by the API, already covered) - - [x] getMessages - - [x] getUsersOfRoom - - [x] loadNextMessages + + - [x] public-settings:get + - [x] rooms:get + - [x] subscriptions:get + - [x] permissions:get + - [x] loadMissedMessages + - [x] loadHistory + - [x] listCustomUserStatus + - [x] getUserRoles + - [x] getRoomRoles (called by the API, already covered) + - [x] getMessages + - [x] getUsersOfRoom + - [x] loadNextMessages - [x] getThreadMessages - Chore: Meteor update 2.1 ([#21061](https://github.com/RocketChat/Rocket.Chat/pull/21061)) @@ -7091,8 +7118,8 @@ - Improve: Increase testing coverage ([#21015](https://github.com/RocketChat/Rocket.Chat/pull/21015)) - Add test for - - settings/raw + Add test for + - settings/raw - minimongo/comparisons - Improve: NPS survey fetch ([#21263](https://github.com/RocketChat/Rocket.Chat/pull/21263)) @@ -7116,12 +7143,12 @@ - Regression: Add support to filter on `teams.listRooms` endpoint ([#21327](https://github.com/RocketChat/Rocket.Chat/pull/21327)) - - Add support for queries (within the `query` parameter); + - Add support for queries (within the `query` parameter); - Add support to pagination (`offset` and `count`) when an user doesn't have the permission to get all rooms. - Regression: Add teams support to directory ([#21351](https://github.com/RocketChat/Rocket.Chat/pull/21351)) - - Change `directory.js` to reduce function complexity + - Change `directory.js` to reduce function complexity - Add `teams` type of item. Directory will return all public teams & private teams the user is part of. - Regression: add view room action on Teams Channels ([#21295](https://github.com/RocketChat/Rocket.Chat/pull/21295)) @@ -7177,7 +7204,7 @@ - Move the Manual On Hold button to the new Omnichannel Header ![image](https://user-images.githubusercontent.com/34130764/112291749-6ae10380-8cb6-11eb-94cd-e05efc14b1bf.png) ![image](https://user-images.githubusercontent.com/34130764/112304146-27d95d00-8cc3-11eb-85db-dde04a110dd1.png) - + - Minor fixes - regression: Remove Breadcrumbs and update Tag component ([#21399](https://github.com/RocketChat/Rocket.Chat/pull/21399)) @@ -7226,8 +7253,8 @@ - Regression: Update .invite endpoints to support multiple users at once ([#21328](https://github.com/RocketChat/Rocket.Chat/pull/21328)) - - channels.invite now supports passing an array as a param (either with usernames or userIds) via `usernames` or `userIds` properties. - - You can still use the endpoint to invite only one user via the old params `userId`, `username` or `user`. + - channels.invite now supports passing an array as a param (either with usernames or userIds) via `usernames` or `userIds` properties. + - You can still use the endpoint to invite only one user via the old params `userId`, `username` or `user`. - Same changes apply to groups.invite - Regression: user actions in admin ([#21307](https://github.com/RocketChat/Rocket.Chat/pull/21307)) @@ -7476,13 +7503,13 @@ - Replace react-window for react-virtuoso package ([#20392](https://github.com/RocketChat/Rocket.Chat/pull/20392)) - Remove: - - react-window - - react-window-infinite-loader + Remove: + - react-window + - react-window-infinite-loader - simplebar-react - Include: - - react-virtuoso + Include: + - react-virtuoso - rc-scrollbars - Rewrite Call as React component ([#19778](https://github.com/RocketChat/Rocket.Chat/pull/19778)) @@ -7683,7 +7710,7 @@ - Missing setting to control when to send the ReplyTo field in email notifications ([#20744](https://github.com/RocketChat/Rocket.Chat/pull/20744)) - - Add a new setting ("Add Reply-To header") in the Email settings' page to control when the Reply-To header is used in e-mail notifications; + - Add a new setting ("Add Reply-To header") in the Email settings' page to control when the Reply-To header is used in e-mail notifications; - The new setting is turned off (`false` value) by default. - New Integration page was not being displayed ([#20670](https://github.com/RocketChat/Rocket.Chat/pull/20670)) @@ -7765,14 +7792,14 @@ - Several Slack Importer issues ([#20216](https://github.com/RocketChat/Rocket.Chat/pull/20216)) - - Fix: Slack Importer crashes when importing a large users.json file - - Fix: Slack importer crashes when messages have invalid mentions - - Skip listing all users on the preparation screen when the user count is too large. - - Split avatar download into a separate process. - - Update room's last message when the import is complete. - - Prevent invalid or duplicated channel names - - Improve message error handling. - - Reduce max allowed BSON size to avoid possible issues in some servers. + - Fix: Slack Importer crashes when importing a large users.json file + - Fix: Slack importer crashes when messages have invalid mentions + - Skip listing all users on the preparation screen when the user count is too large. + - Split avatar download into a separate process. + - Update room's last message when the import is complete. + - Prevent invalid or duplicated channel names + - Improve message error handling. + - Reduce max allowed BSON size to avoid possible issues in some servers. - Improve handling of very large channel files. - star icon was visible after unstarring a message ([#19645](https://github.com/RocketChat/Rocket.Chat/pull/19645) by [@bhavayAnand9](https://github.com/bhavayAnand9)) @@ -8034,11 +8061,11 @@ ![image](https://user-images.githubusercontent.com/34130764/104880961-8104d780-5986-11eb-9d87-82b99814b028.png) Behavior based-on Routing method - + 1. Auto-selection, Load-Balancing, or External Service (`autoAssignAgent = true`) This is straightforward, - if the Contact-manager is online, the chat will be transferred to the Contact-Manger only - - if the Contact-manager is offline, the chat will be transferred to any other online-agent based on the Routing system + - if the Contact-manager is offline, the chat will be transferred to any other online-agent based on the Routing system 2. Manual-selection (`autoAssignAgent = false`) - If the Contact-Manager is online, the chat will appear in the Queue of Contact-Manager **ONLY** - If the Contact-Manager is offline, the chat will appear in the Queue of all related Agents/Manager ( like it's done right now ) @@ -8779,10 +8806,10 @@ - Chore: Update Pull Request template ([#19768](https://github.com/RocketChat/Rocket.Chat/pull/19768)) - Improve the template of Pull Requests in order to make it clear reducing duplicated information and removing the visible checklists that were generating noise and misunderstanding with the PR progress. - - Moved the checklists to inside comments - - Merge the changelog and proposed changes sections to have a single source of description that goes to the changelog - - Remove the screenshot section, they can be added inside the description + Improve the template of Pull Requests in order to make it clear reducing duplicated information and removing the visible checklists that were generating noise and misunderstanding with the PR progress. + - Moved the checklists to inside comments + - Merge the changelog and proposed changes sections to have a single source of description that goes to the changelog + - Remove the screenshot section, they can be added inside the description - Changed the proposed changes title to incentivizing the usage of images and videos - Frontend folder structure ([#19631](https://github.com/RocketChat/Rocket.Chat/pull/19631)) @@ -10121,8 +10148,8 @@ - **2FA:** Password enforcement setting and 2FA protection when saving settings or resetting E2E encryption ([#18640](https://github.com/RocketChat/Rocket.Chat/pull/18640)) - - Increase the 2FA remembering time from 5min to 30min - - Add new setting to enforce 2FA password fallback (enabled only for new installations) + - Increase the 2FA remembering time from 5min to 30min + - Add new setting to enforce 2FA password fallback (enabled only for new installations) - Require 2FA to save settings and reset E2E Encryption keys - **Omnichannel:** Allow set other agent status via method `livechat:changeLivechatStatus ` ([#18571](https://github.com/RocketChat/Rocket.Chat/pull/18571)) @@ -10490,9 +10517,9 @@ - Mention autocomplete UI and performance improvements ([#18309](https://github.com/RocketChat/Rocket.Chat/pull/18309)) - * New setting to configure the number of suggestions `Admin > Layout > User Interface > Number of users' autocomplete suggestions` (default 5) - * The UI shows whenever the user is not a member of the room - * The UI shows when the suggestion came from the last messages for quick selection/reply + * New setting to configure the number of suggestions `Admin > Layout > User Interface > Number of users' autocomplete suggestions` (default 5) + * The UI shows whenever the user is not a member of the room + * The UI shows when the suggestion came from the last messages for quick selection/reply * The suggestions follow this order: * The user with the exact username and member of the room * The user with the exact username but not a member of the room (if allowed to list non-members) @@ -11350,9 +11377,9 @@ - Notification sounds ([#17616](https://github.com/RocketChat/Rocket.Chat/pull/17616)) - * Global CDN config was ignored when loading the sound files - * Upload of custom sounds wasn't getting the file extension correctly - * Some translations were missing + * Global CDN config was ignored when loading the sound files + * Upload of custom sounds wasn't getting the file extension correctly + * Some translations were missing * Edit and delete of custom sounds were not working correctly - Omnichannel departments are not saved when the offline channel name is not defined ([#17553](https://github.com/RocketChat/Rocket.Chat/pull/17553)) @@ -11641,11 +11668,11 @@ - Better Push and Email Notification logic ([#17357](https://github.com/RocketChat/Rocket.Chat/pull/17357)) We are still using the same logic to define which notifications every new message will generate, it takes some servers' settings, users's preferences and subscriptions' settings in consideration to determine who will receive each notification type (desktop, audio, email and mobile push), but now it doesn't check the user's status (online, away, offline) for email and mobile push notifications but send those notifications to a new queue with the following rules: - - - When the user is online the notification is scheduled to be sent in 120 seconds - - When the user is away the notification is scheduled to be sent in 120 seconds minus the amount of time he is away - - When the user is offline the notification is scheduled to be sent right away - - When the user reads a channel all the notifications for that user are removed (clear queue) + + - When the user is online the notification is scheduled to be sent in 120 seconds + - When the user is away the notification is scheduled to be sent in 120 seconds minus the amount of time he is away + - When the user is offline the notification is scheduled to be sent right away + - When the user reads a channel all the notifications for that user are removed (clear queue) - When a notification is processed to be sent to a user and there are other scheduled notifications: - All the scheduled notifications for that user are rescheduled to now - The current notification goes back to the queue to be processed ordered by creation date @@ -23528,4 +23555,4 @@ - [@graywolf336](https://github.com/graywolf336) - [@marceloschmidt](https://github.com/marceloschmidt) - [@rodrigok](https://github.com/rodrigok) -- [@sampaiodiego](https://github.com/sampaiodiego) +- [@sampaiodiego](https://github.com/sampaiodiego) \ No newline at end of file diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index d3d0f0d8ab1d..5075c9c04f3c 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0 +ENV RC_VERSION 4.7.1 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index 00ae4af10c19..e2b258ad5d73 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.7.1/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index 2a45af95b389..b2f33b709f1a 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0 +version: 4.7.1 summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/lib/server/startup/settings.ts b/apps/meteor/app/lib/server/startup/settings.ts index bf3a97cfa14d..b81c4e52d237 100644 --- a/apps/meteor/app/lib/server/startup/settings.ts +++ b/apps/meteor/app/lib/server/startup/settings.ts @@ -9,6 +9,11 @@ settingsRegistry.add('uniqueID', process.env.DEPLOYMENT_ID || Random.id(), { public: true, }); +settingsRegistry.add('Initial_Channel_Created', false, { + type: 'boolean', + hidden: true, +}); + // When you define a setting and want to add a description, you don't need to automatically define the i18nDescription // if you add a node to the i18n.json with the same setting name but with `_Description` it will automatically work. diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 297dd3779ba7..566a5e4c5639 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0" + "version": "4.7.1" } diff --git a/apps/meteor/client/sidebar/search/SearchList.js b/apps/meteor/client/sidebar/search/SearchList.js index 6eeb6a4473b3..6043232d2b24 100644 --- a/apps/meteor/client/sidebar/search/SearchList.js +++ b/apps/meteor/client/sidebar/search/SearchList.js @@ -147,7 +147,7 @@ const SearchList = forwardRef(function SearchList({ onClose }, ref) { const itemIndexRef = useRef(0); const sidebarViewMode = useUserPreference('sidebarViewMode'); - const showRealName = useSetting('UI_Use_Real_Name'); + const useRealName = useSetting('UI_Use_Real_Name'); const sideBarItemTemplate = useTemplateByViewMode(); const avatarTemplate = useAvatarTemplate(); @@ -166,11 +166,11 @@ const SearchList = forwardRef(function SearchList({ onClose }, ref) { t, SideBarItemTemplate: sideBarItemTemplate, avatarTemplate, - showRealName, + useRealName, extended, sidebarViewMode, }), - [avatarTemplate, extended, items, showRealName, sideBarItemTemplate, sidebarViewMode, t], + [avatarTemplate, extended, items, useRealName, sideBarItemTemplate, sidebarViewMode, t], ); const changeSelection = useMutableCallback((dir) => { diff --git a/apps/meteor/ee/server/lib/ldap/Manager.ts b/apps/meteor/ee/server/lib/ldap/Manager.ts index 15f2361f1fca..12f9e18dd0d2 100644 --- a/apps/meteor/ee/server/lib/ldap/Manager.ts +++ b/apps/meteor/ee/server/lib/ldap/Manager.ts @@ -279,6 +279,8 @@ export class LDAPEEManager extends LDAPManager { logger.debug('syncing user channels'); const ldapFields = Object.keys(fieldMap); + const channelsToAdd = new Set(); + const channelsToRemove = new Set(); for await (const ldapField of ldapFields) { if (!fieldMap[ldapField]) { @@ -299,14 +301,10 @@ export class LDAPEEManager extends LDAPManager { if (room.teamMain) { logger.error(`Can't add user to channel ${channel} because it is a team.`); } else { - addUserToRoom(room._id, user); - logger.debug(`Synced user channel ${room._id} from LDAP for ${username}`); + channelsToAdd.add(room._id); } } else if (syncUserChannelsRemove && !room.teamMain) { - const subscription = await SubscriptionsRaw.findOneByRoomIdAndUserId(room._id, user._id); - if (subscription) { - await removeUserFromRoom(room._id, user); - } + channelsToRemove.add(room._id); } } catch (e) { logger.debug(`Failed to sync user room, user = ${username}, channel = ${channel}`); @@ -314,6 +312,23 @@ export class LDAPEEManager extends LDAPManager { } } } + + for (const rid of channelsToAdd) { + addUserToRoom(rid, user); + logger.debug(`Synced user channel ${rid} from LDAP for ${username}`); + } + + for await (const rid of channelsToRemove) { + if (channelsToAdd.has(rid)) { + return; + } + + const subscription = await SubscriptionsRaw.findOneByRoomIdAndUserId(rid, user._id); + if (subscription) { + await removeUserFromRoom(rid, user); + logger.debug(`Removed user ${username} from channel ${rid}`); + } + } } private static async syncUserTeams(ldap: LDAPConnection, user: IUser, dn: string, isNewRecord: boolean): Promise { diff --git a/apps/meteor/package.json b/apps/meteor/package.json index a2b2f788b6fa..10b8366e6685 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0", + "version": "4.7.1", "private": true, "author": { "name": "Rocket.Chat", diff --git a/apps/meteor/server/startup/initialData.js b/apps/meteor/server/startup/initialData.js index 46ad4abf2959..d8ad68aee1f2 100644 --- a/apps/meteor/server/startup/initialData.js +++ b/apps/meteor/server/startup/initialData.js @@ -12,10 +12,15 @@ import { Settings } from '../../app/models/server/raw'; import { validateEmail } from '../../lib/emailValidator'; Meteor.startup(async function () { - if (settings.get('Show_Setup_Wizard') === 'pending' && !Rooms.findOneById('GENERAL')) { - Rooms.createWithIdTypeAndName('GENERAL', 'c', 'general', { - default: true, - }); + if (!settings.get('Initial_Channel_Created')) { + const exists = Rooms.findOneById('GENERAL', { fields: { _id: 1 } }); + if (!exists) { + Rooms.createWithIdTypeAndName('GENERAL', 'c', 'general', { + default: true, + }); + } + + Settings.updateValueById('Initial_Channel_Created', true); } if (!Users.findOneById('rocket.cat')) { diff --git a/apps/meteor/server/startup/migrations/index.ts b/apps/meteor/server/startup/migrations/index.ts index b6d6617cb290..3b14bdc9e36d 100644 --- a/apps/meteor/server/startup/migrations/index.ts +++ b/apps/meteor/server/startup/migrations/index.ts @@ -85,4 +85,5 @@ import './v258'; import './v259'; import './v260'; import './v261'; +import './v262'; import './xrun'; diff --git a/apps/meteor/server/startup/migrations/v262.ts b/apps/meteor/server/startup/migrations/v262.ts new file mode 100644 index 000000000000..47496885909d --- /dev/null +++ b/apps/meteor/server/startup/migrations/v262.ts @@ -0,0 +1,16 @@ +import { addMigration } from '../../lib/migrations'; +import { Settings } from '../../../app/models/server/raw'; + +addMigration({ + version: 262, + async up() { + // in case server is being updated, we check setup wizard status to determine if should still create the initial channel + const setupWizard = await Settings.getValueById('Show_Setup_Wizard'); + if (setupWizard === 'pending') { + // if still pending for some reason, we need to create the initial channel, so keep the setting as false + return; + } + // if the setup wizard is not pending anymore, we assume initial channel was already created once + await Settings.updateValueById('Initial_Channel_Created', true); + }, +}); diff --git a/package.json b/package.json index 963912efaf85..e8b355b27cae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0", + "version": "4.7.1", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true,