Rocket.Chat v5.1.0 Release Notes

  • 2022-09-02 路 8 馃帀 路 7 馃殌 路 42 馃悰 路 129 馃攳 路 38 馃懇鈥嶐煉火煈ㄢ嶐煉

    Engine versions

    • Node: 14.19.3
    • NPM: 6.14.17
    • MongoDB: 4.2, 4.4, 5.0

    馃帀 New features

    Allow apps to pass a specific ID for ephemeral messages as a way to edit them.

    • Capability to search visitors by custom fields (#26312)

    Users of the endpoints api/v1/omnichannel/contact.search and /api/v1/livechat/visitors.search are now able to search by custom fields in their objects. Capability of selecting if a custom field can be searched for is added in the Omnichannel pannel as a toggle for searchable, the included JSON in the Accounts' Custom Field example has been updated to make it explicit for future configurations that the field has to be enabled as searchable for that to happen.

    As proposed, was added a fallback component to catch errors at Engagement Dashboard widgets individually. It used an Error boundary to catch react-query errors, due to this scenario was necessary to install and use the library react-error-boundary that implements everything and more compared to our ErrorBoundary component, the main reason was to capture Query errors and the implementation with react-query library.

    New layout:

    Before: image

    After: image

    • Marketplace apps page new list view layout (#26181)

    Refactored the layout of the marketplace list of apps, now it has a more minimalist and flexbox-based style. Also implemented a new status filter.

    Demo gif: new-app-list

    ClickUp task: https://app.clickup.com/t/1na7437

    • Surface featured apps endpoint (#26416)

    Created the /featured endpoints on the rest.js file. Also created the necessary typings to use together with it.

    馃殌 Improvements

    • 鉃 Added identification on calls to/from existing contacts (#26334)

    Before:

    After:

    • General federation improvements (#26150)

    I know this changed a lot of files, but the main goal for this PR is not to change any behavior, the goals for the PR are:

    • Refactor the code;

    • Solve any tech debt;

    • Simplify and reuse some parts of the code;

    • Remove duplicated code;

    • Remove all unsafe type castings;

    • Solve all Eslint errors and warnings;

    • Split too big files;

    • Encapsulate the business logic in a better way, avoiding exposing and leaking internal logic to the unintended layers;

    • Improve the actual test cases;

    • Add more test cases, since a lot of cases were omitted during the release phase;

    • Remove unsafe Object.assign statements and prefer to use the class constructor instead;

    • Add a new design for the not-found page

    • Add English translation for "page not found" and "Homepage"

    • Update English translation for "Room_not_exist_or_not_permission"

    • Add "Homepage" button on the room not found page

      • 馃敤 OTR refactoring (#24757)

    Rewritten OTR files to TS with new code patterns

    • 鉁 Remove device-management banner and modal (#26729)

    • Spotlight search user results (#26599 by @kodiakhq[bot])

    • 馃憠 use enter key to call using DialPad (#26454)

    馃洜 馃悰 Bug fixes

    • - Incoming SMSs no longer clash with ongoing livechat conversations by the same visitor (#26307 by @kodiakhq[bot])

    There was a data race in the defineVisitor function, causing new guests to be created even if a registered guest with that number already existed, also made sure that the open room being searched on is the correct source type, so the clash is not possible anymore.

    this PR updates the old roomMembersCount to count active users instead of everyone

    This PR updates the endpoint to add a license

    • Agents (with user status offline & omni-status as available) not able to take or forward chat (#26575 by @kodiakhq[bot])

    • 馃憤 Allow normal user to open apps contextual bar (#26495)

    Fix the bug where normal users cannot open an app contextual bar. The request made by the contextual bar to get the app information, which was for admin only, was removed since the response was not being used.

    • Autotranslate method should respect setting (#26549)

    • Avatars of other chats disappear when they located near chat with broken avatar (#26689)

    • Blank screen after requesting transcript (#26385 by @kodiakhq[bot])

    • Chats not getting assigned to offline agents even when "Accept with No Online agents" setting is turned on (#26147 by @kodiakhq[bot])

    • Clear push token on save user password (#26466)

    • 馃敡 Correct IMAP configuration for email inbox (#25789)

    The primary change here has been to make the library try and reconnect after some time, up to a certain configured number of times, on a few different error classes.

    ### Before ### After

    • 0锔忊儯 Default BH not getting applied in-case any other BH is disabled (#26471 by @kodiakhq[bot])

    • DialPad call button from end to center (#26459)

    • Don't give errors on outbound voip call Request Terminated (#26373)

    • Don't wrap wrap up notes (#26375)

    • incorrect error toast messages (#26320)

    • Katex is not respecting the 'Katex_Enabled' setting (#26542 by @kodiakhq[bot])

    • MDM content alignment (#26665)

      • remove left margin of MDM content

    before: image

    after:

    Publish required notification subscription fields on change, so that changes can be seen on save.

    • Onhold auto chat resume feature not working for email channel (#26363)

    • Open team after room not found page (#26264 by @kodiakhq[bot])

    After the room not found page, the FlowRouter was not clearing msg query param, causing the next redirect to private teams break because it's try to find the unknow msg id

    Previously any authenticated user was able to access the teams.info endpoint, this PR updates this so only users with the view-all-teams permission or team members can access it.

    • Prevent VoIP issues during disconnection when network failed (#26321)

    • Prune messages not removing thumbnails (#26443 by @kodiakhq[bot])

    This PR adds a method on Uploads called findOneByName, and excludes a thumbnail of an image on cleanRoomHistory

    • 馃洶 Request at least one field in the payload of /v1/users.setStatus (#26490)

    Requests status and/or message fields on /v1/users.setStatus request payload.

    This PR fixes an issue that was happening when an invalid token was passed on SlackBridge, basically the app crashes because the error was not being handled

    Uses React Query cache as an alternative for querying data "sorta" real time.

    • 馃捇 UI fixes on dropdown titles (#26318)

      • Add paddings on profile dropdown title
      • Fix paddings on 'sort' and 'create new' dropdown titles
      • Remove inline styles of OptionTitle (removing uppercase style)

    | Location | Before | After | | --------------- | --------------- | --------------- | | Sort Dropdown | image | | | User Dropdown | image | | | Create new Dropdown | | |

    This PR fixes a bug where a user that joins a team by mention don't get added to the team.

    • Unable to send voice recording to Whatsapp (#26276)

    • 馃憠 Users can access public discussions inside private channels they are not members of (#26619 by @kodiakhq[bot])

    • 馃憠 Users can access public discussions inside private channels they are not members of (#25981 by @kodiakhq[bot])

    馃攳 Minor changes

    • Chore: Accounts/token to TS (#26434)

    • 鉁 Chore: Add end-to-end tests to teams listing in the directory endpoint (#26347)

    • 鉁 Chore: Add license env var to ee tests (#26650 by @kodiakhq[bot])

    • Chore: add playwright ee coverage (#26293)

    • 馃寪 Chore: Add translations code owner (#26560)

    • 馃摝 Chore: Bump fuselage packages (#26769)

    • 馃捇 Chore: Bypass turbo cache on ui-contexts (#26526)

    Skips cache for building @rocket.chat/ui-contexts, avoiding Turborepo issues with a symlink.

    • Chore: Cache playwright (#26432)

    • Chore: Change some places still using fields to projection (#26308)

    • 鉁 Chore: cleanup startup of test and put wizard in setup function (#26306)

    • Chore: Codecov threshold (#26477)

    • Chore: Convert client/views/account/preferences folder to ts (#26496)

    • Chore: Convert LivechatCustomField model to raw model (#26446 by @kodiakhq[bot])

    • Chore: Convert AccountPreferencesPage to ts (#26096)

    • Chore: Convert AppSetting to tsx (#26625)

    • Chore: Convert AppSettingsAssembler to tsx (#26626 by @kodiakhq[bot])

    • Chore: Convert AutoCompleteAgent to tsx (#26704)

    • Chore: convert autotranslate to ts (#25953 by @kodiakhq[bot])

    Converted the apps/meteor/app/api/server/v1/autotranslate.js to ts and created endpoint typings on the packages/rest-typings/src/v1/autotranslate folder.

    • 馃敀 Chore: Convert client/views/account/security folder to ts (#26413)

    • 鉁 Chore: create a test for managers screen (#26581)

    • 馃殮 Chore: create removeWebdavAccount endpoint (#26393)

    Created the '/v1/webdav.removeWebdavAccount' endpoint for the apps/meteor/client/views/account/integrations/AccountIntegrationsPage.tsx file, and added Ajv validations.

    • Chore: create roomNameExists endpoint (#26386)

    Created the missing rest endpoint 'roomNameExists' for apps/meteor/client/sidebar/header/CreateChannel.tsx, on the packages/rest-typings/src/v1/ folder.

    Adding tests to check the behavior of the Engagement Dashboard for the Enterprise Edition license. The tests include:

    • Visibility and navigation of page and tabs

    • Fallback component on widgets error

      • 馃憰 Chore: ESLint warnings (#26504)

    The current amount of ESLint warning messages is overwhelming to properly debug serious issues. This PR aims to reduce them to a sane amount.

    • Chore: Exclude private/public folders from typecheck (#26399)

    • 馃懛 Chore: Exit process on unhandledRejection on CI (#26467)

    • Chore: Fail-fast on callbacks (#26572)

    • 馃懛 Chore: Fix CI intermittent (#26649)

    • 馃惓 Chore: Fix docker latest tag push (#26770)

    • Chore: Fix grammatical typo when only one message is pruned (#21902 by @shrinish123)

    Whenever only 1 message is pruned it says '1 messages pruned' instead of '1 message pruned' in the toast message

    • 馃憰 Chore: Fix lint issues (#26531)

    #24757 was an old PR and was recently auto-merged, it was not following our latest eslint rules, so now there are some lint issues on the develop.

    • 0锔忊儯 Chore: Fix some settings with incompatible default value types (#26114 by @kodiakhq[bot])

    • 鉁 Chore: fix tests with beforeEach (#26335)

    • Chore: Fix UiKit dependency issue for Livechat (#26534)

    • 鉁 Chore: Importer rest types, meteor methods to TS and API unit tests (#26284 by @kodiakhq[bot])

    • 鉁 Chore: Improve test for livechat (#26527)

    • Chore: Migrate AppPermissionsReviewModal from JS to TS (#26498)

    • Chore: Migrate modules related to room template to TypeScript (#25881)

    • Chore: Migrate omni-chat forwarding to use API instead of meteor method (#26377)

      • Use livechat/room.forward endpoint to forward omnichannel chats instead of using meteor method "livechat:transfer"
    • 馃寪 Chore: Missing permissions translations (#26546 by @kodiakhq[bot])

    • 馃寪 Chore: Missing some English translation keywords (#20131 by @Karting06)

    Add missing translation keys in en.i18n.json to be able to translate them via Lingohub.

    • Chore: Mocha handling multiple React instances (#26513)

    Whenever Mocha runs a test file which imports stuff from outside apps/meteor, it uses a hoisted version of React (i.e. located at the root node_modules) instead of the one tied to apps/meteor/node_modules. This PR adds a monkey patch while we can't migrate to another test runner.

    I found this while I was doing some refactorings on the federation side. 馃槵

    • 鉁 Chore: Parallelize e2e tests (#26390)

    • Chore: Permissions check per endpoint/method (#26419)

    • Chore: Prevent tooltip from opening after click (#26612)

    • Chore: Purge some unused modules (#26447)

    The title says it all.

    • 馃敤 Chore: Refactor create-target-channel util (#26493)

    • 馃敤 Chore: Refactor ReportMessage Modal to React Component (#26478 by @kodiakhq[bot])

    • 馃敤 Chore: Refactor RoomMembers to Typescript (#26559 by @kodiakhq[bot])

    • 馃敤 Chore: Refactor WebdavFilePicker Modal to React Component (#26422)

    • 馃殮 Chore: Remove & Test cannedResponse meteor templates (#26706)

    • 馃殮 Chore: Remove & Test old closeChat templates (#26631)

    • 馃殮 Chore: Remove console.log (#26618)

    • 馃拝 Chore: Remove italic/bold font-style from system messages (#26655)

    It was removed from system messages font-styles elements (italic and bold) that highlighted some words as users, room_name and others.

    In addition to this PR, was also created a PR to Fuselage to remove italic font style in general at system messages.

    Fuselage PR: https://github.com/RocketChat/fuselage/pull/830

    • 馃殮 Chore: Remove Livechat Dashboard Templates (#26627)

    • 馃殮 Chore: Remove method calls - Stage 1 (#26149 by @kodiakhq[bot])

    • 馃殮 Chore: Remove public and node_modules folders from TypeScript server watcher (#26391)

    • 馃殮 Chore: Remove settings Fibers usage (#26465)

    • 馃寪 Chore: Remove translation owners (#26598)

    • 馃殮 Chore: Remove trash collection from models when not used (#26628 by @kodiakhq[bot])

    • 馃殮 Chore: remove useMethod calls (#26195 by @kodiakhq[bot])

    • 馃殮 Chore: Remove visitor, agent and customTemplate meteor templates (#26700)

    • Chore: Replace direct multiple icon (#26342 by @kodiakhq[bot])

    • Chore: Replace timeAgo on WebdavFilePickerTable (#26564 by @kodiakhq[bot])

    • Chore: restrict .only (#26537 by @kodiakhq[bot])

    • Chore: Rewrite custom OAuth Modals to react (#26204)

    • Chore: Rewrite Location modal to React (#26196)

    • Chore: Rewrite SaveToWebdav Modal to React Component (#24365)

    ### before Screen Shot 2022-01-31 at 11 02 34

    ### after Screen Shot 2022-01-31 at 10 58 04

    Separating user edit form to prevent browser password and username auto-complete. The browser will continue showing the suggestion dropdown for the password field, but when you select a suggestion the other text field will not be impacted, as was happening before with 'Nickname' field

    • 鉁 Chore: skipping tests that are based on kebab menu (#26616 by @kodiakhq[bot])

    • 鉁 Chore: test for change avatar (#26543)

    • 鉁 Chore: Tests intermitences (#26464)

    • Chore: transfer to another agent (#26545 by @kodiakhq[bot])

    • 鈿★笍 Chore: Update Apps-Engine (#26765)

    • 鈿★笍 Chore: update codeowners for omnichannel (#25771)

    • 鈿★笍 Chore: update fuselage rounded edition (#26540 by @kodiakhq[bot])

    • 猬嗭笍 Chore: Upgrade dependencies (#26694)

    • 猬嗭笍 Chore: Upgrade ESLint (#26132)

    Upgrade ESLint (to 8.19.0) and its dependencies, dropping outdated rules.

    • 猬嗭笍 Chore: Upgrade Fuselage packages to next dist-tag (#26435)

    • 猬嗭笍 Chore: Upgrade nivo and React Query (#26338)

    • 馃懛 Chore: Use Docker compose on CI (#26437)

    • 馃憖 Chore: useEndpointData deprecation (#26494)

    • Chore: Wait subscription to expose message composer (#26600)

    • 馃寪 i18n: Fix Korean set role translation (#24966 by @imyaman)

    English https://pbs.twimg.com/media/FO2zby1aQAMB84D?format=png&name=small Korean https://pbs.twimg.com/media/FO2zWgKaIAYidJ7?format=png&name=small Google Translate https://pbs.twimg.com/media/FO20MPnaUAU-TU_?format=jpg&name=medium

    • 鈿★笍 i18n: Language update from LingoHub 馃 on 2022-08-01Z (#26429)

    • 鈿★笍 i18n: Language update from LingoHub 馃 on 2022-08-08Z (#26508 by @kodiakhq[bot])

    • 鈿★笍 i18n: Language update from LingoHub 馃 on 2022-08-15Z (#26570 by @kodiakhq[bot])

    • 鈿★笍 i18n: Language update from LingoHub 馃 on 2022-08-22Z (#26645 by @kodiakhq[bot])

    • i18n: Makes the text less ambiguous (#20895 by @pierreozoux)

    • 馃攢 i18n: Manual sync from LingoHub (#26397)

    • 馃寪 i18n: pt-BR translation typo (#26732)

    • Regression: "Cache size is not a function" error when booting (#26683 by @kodiakhq[bot])

    • Regression: Add alsoSendThreadToChannel to user settings api (#26663 by @kodiakhq[bot])

    • Regression: AutoTranslate is disabled error (#26701)

    • Regression: Banner - Room not found - Omnichannel room (#26693)

    • 馃懛 Regression: CI (#26658)

    • Regression: Custom fields not being saved for room (#26747)

    • Regression: Custom status loading forever in Usercard (#26656)

    • Regression: Empty custom-fields filter on Current Chats causing issues (#26720)

    • Regression: Fix Current Chats Page Issues (#26744)

    • Regression: Fix spacing problem on AppStatus component (#26421)

    Fixed a problem where the AppStatus component would show a unwanted margin when an app was installed and had an update. Before: image

    After: image

    Revert back to meteor method for now.

    • Regression: invalid statistics format (#26684 by @kodiakhq[bot])

    • Regression: Modal footer alignment (#26635 by @kodiakhq[bot])

    • Regression: Prevent message from being temp forever (#26668 by @kodiakhq[bot])

    • 馃殮 Regression: Remove log from banners.ts (#26699)

    • Regression: REST setUserPublicAndPrivateKeys (#26753)

    • Regression: Select settings options not visible on Apps Setting panel (#26759)

    • Regression: Sidebar Search list local data cache and keyboard navigation (#26764)

    • Regression: Team name validation failing always. (#26574)

    • 鈿★笍 Regression: Update custom homepage content behavior (#26571 by @kodiakhq[bot])

    • Regression: Visitor being overwritten on call end (#26756)

    This PR adds a check to the createRoom method, responsible for creating VoIP rooms. It checks whether the visitor already exists before creating a new one, if one is found it uses it instead of overwriting existing visitors.

    • 鈫 Regression: Workaround to handle auto stopped computations 馃槥 (#26745)

    • 馃殌 Release 5.0.1 (#26450)

    • 馃殌 Release 5.0.2 (#26507)

    • 馃殌 Release 5.0.3 (#26551)

    • 馃殌 Release 5.0.4 (#26620)

    • 馃殌 Release 5.0.5 (#26718)

    馃懇鈥嶐煉火煈ㄢ嶐煉 Contributors 馃槏

    馃懇鈥嶐煉火煈ㄢ嶐煉 Core Team 馃