Rocket.Chat v4.0.0 Release Notes

  • 2021-10-01 · 15 ️️️⚠️ · 4 🎉 · 11 🚀 · 24 🐛 · 67 🔍 · 26 👩‍💻👨‍💻

    Engine versions

    • Node: 12.22.1
    • NPM: 6.14.1
    • MongoDB: 3.6, 4.0, 4.2, 4.4, 5.0
    • Apps-Engine: 1.28.0-alpha.5428

    ⚠️ BREAKING CHANGES

    • ENTERPRISE: "Download CSV" button doesn't work in the Engagement Dashboard's Active Users section (#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;
      • Split the data in multiple CSV files.
    • ENTERPRISE: CSV file downloaded in the Engagement Dashboard's New Users section contains undefined data (#23014)

      • Fix CSV file downloaded in the Engagement Dashboard's New Users section;
      • Add column headers to the CSV file downloaded from the Engagement Dashboard's New Users section.
    • ENTERPRISE: Missing headers in CSV files downloaded from the Engagement Dashboard (#23223)

      • Add headers to all CSV files downloaded from the "Messages" and "Channels" tabs from the Engagement Dashboard;
      • Add headers to the CSV file downloaded from the "Users by time of day" section (in the "Users" tab).
    • 🔨 LDAP Refactoring (#23171)

    • 🚚 Moved advanced oAuth features to EE (#23201 by @ostjen)

    • 🔀 Moved role-sync and advanced SAML settings to EE (#23107 by @ostjen)

    • 🚚 Moved SAML custom field map to EE (#23319 by @ostjen)

    • ✂ Remove cordova compatibility setting (#23302 by @ostjen)

    • ✂ Remove deprecated endpoints (#23162)

    The following REST endpoints were removed:

    • /api/v1/emoji-custom

    • /api/v1/info

    • /api/v1/permissions

    • /api/v1/permissions.list

    The following Real time API Methods were removed:

    • getFullUserData

    • getServerInfo

    • livechat:saveOfficeHours

      • ✂ Remove Google Vision features (#23160)

    Google Vision features like "block adult images" or label detection were not being maintained and totally broken. So we decided to remove its feature and maybe in the future release the same features as an app.

    • ✂ Remove old migrations up to version 2.4.14 (#23277)

    To update to version 4.0.0 you'll need to be running at least version 3.0.0, otherwise you might loose some database migrations which might have unexpected effects.

    This aims to clean up the code, since upgrades jumping 2 major versions are too risky and hard to maintain, we'll keep only migration from that last major (in this case 3.x).

    • ✂ Remove patch info from endpoint /api/info for non-logged in users (#16050)

    • ✂ Removed support of MongoDB 3.4; Deprecated MongoDB 3.6 and 4.0 (#22907 by @ostjen)

    • Stop sending audio notifications via stream (#23108)

    Remove audio preferences and make them tied to desktop notification preferences.

    TL;DR: new message sounds will play only if you receive a desktop notification. you'll still be able to chose to not play any sound though

    • Webhook will fail if user is not part of the channel (#23310)

    Remove deprecated behavior added by https://github.com/RocketChat/Rocket.Chat/pull/18024 that accepts webhook integrations sending messages even if the user is not part of the channel.

    Starting from 4.0.0 the webhook request will fail with error-not-allowed error:

      {"success":false,"error":"error-not-allowed"}
    

    🎉 New features

    • APPS: Get livechat's room transcript via bridge method (#22985)

    Adds a new method for retrieving a room's transcript via a new method in the Livechat bridge

    • ➕ Add activity indicators for Uploading and Recording using new API; Support thread context; Deprecate the old typing API (#22392 by @sumukhah)

    • Omnichannel source identification fields (#23090)

    This PR adds new fields to the room schema that aids in the identification of the source that created an Omnichannel room, which can be either via livechat widget, SMS, app, etc.

    • Seats Cap (#23017 by @g-thome)

      • Adding New Members
      • Awareness of seats usage while adding new members
      • Seats Cap about to be reached
      • Seats Cap reached
      • 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
      • Warning Members
      • Invite link
        • Block creating new invite links
        • Block existing invite links (feedback on register process)
      • Register to Workspaces
      • Emails
      • System telling admins max seats are about to exceed
      • System telling admins max seats were exceed

    🚀 Improvements

    • APPS: New storage strategy for Apps-Engine file packages (#22657)

    This is an enabler for our initiative to support NPM packages in the Apps-Engine.

    Currently, the packages (zip files) for Rocket.Chat Apps are stored as a base64 encoded string in a document in the database, which constrains us due to the size limit of a document in MongoDB (16Mb).

    When we allow apps to include NPM packages, the size of the App package itself will be potentially very large (I'm looking at you node_modules). Thus we'll be changing the strategy to store apps either with GridFS or the host's File System itself.

    • APPS: Return task ids when using the scheduler api (#23023)

    In the methods that create tasks (scheduleRecurring and scheduleOnce) return the id of the document created in the database so the user can cancel each task individually.

    Change the text in the banner warning for auth changes

    • Canned response admin settings (#23190)

    • 🔄 Change log format to JSON (#22975)

    • 🔄 Change occurences of Livechat to Omnichannel in ES translations were applicable (#23199)

    • Do not re-create General room on every server start (#22957)

      • Check the Show_Setup_Wizard Setting's value to control whether the general room should be created. This channel will only be created if the Show_Setup_Wizard Setting is 'pending'.
    • 📜 Load code highlighting languages on demand and fixes on new message parser (#23232)

    Now we have this setting called 'Code highlighting languages list' where you can define the languages that you want to be loaded by default.

    • Throw error if no appId is provided to useUIKitHandleAction (#23221)

    • 👉 Use PaginatedSelectFiltered in department edition (#23054)

    🛠 🐛 Bug fixes

    • "Parent channel or group" search in discussions' creation throws "Unexpected end of JSON input" error (#23076)

      • Use encodeURIComponent() to encode values received by _generateQueryFromParams().
    • "Read Only" and "Allow Reacting" system messages are missing in rooms (#23037 by @ostjen)

      • Add system message to notify changes on the "Read Only" setting;
      • Add system message to notify changes on the "Allow Reacting" setting;
      • Fix "Allow Reacting" setting's description (updated from "Only authorized users can write new messages" to "Only authorized users can react to messages"). system-messages
    • ➕ Add check before placing chat on-hold to confirm that contact sent last message (#23053)

    • ➕ Add missing custom fields to apps' users converter (#21176 by @cuonghuunguyen)

    • 🌲 Avoid bots to be marked as unavailable when log off/login (#23262)

    • ⚡️ Can't edit profile information if any field update setting is disabled (#23110)

      • Check which fields have been updated before throwing errors in validateUserEditing.
    • Inaccurate use of 'Mobile notifications' instead of 'Push notifications' in i18n strings (#22978 by @ostjen)

      • Fix inaccurate use of 'Mobile notifications' (which is misleading in German) by 'Push notifications';
      • Update 'Notification_Mobile_Default_For' key to 'Notification_Push_Default_For' (and text to 'Send Push Notifications For' for English Language);
      • Update 'Accounts_Default_User_Preferences_mobileNotifications' key to 'Accounts_Default_User_Preferences_pushNotifications';
      • Update 'Mobile_Notifications_Default_Alert' key to 'Mobile_Push_Notifications_Default_Alert';
    • 🌲 Logging out from other clients (#23276)

    • Mark agents as unavailable when they logout (#23219)

    • Modals is cutting pixels of the content (#23243)

    Fuselage Dependency: 543 image

    • Omnichannel On hold chats being forwarded to offline agents (#23185)

    • Omnichannel transcript button without user's email (#23150)

    • Prevent users to edit an existing role when adding a new one with the same name used before. (#22407 by @lucassartor)

    ### before Peek 2021-07-13 16-31

    ### after Peek 2021-07-13 16-34

    • ✂ Remove doubled "Canned Responses" strings (#23056)

      • Remove doubled canned response setting introduced in #22703 (by setting id change);
      • Update "Canned Responses" keys to "Canned_Responses".
    • ✂ Remove margin from quote inside quote (#21779)

    image

    • 💾 Save department agents (#23209)

    • Sidebar not closing when clicking in Home or Directory on mobile view (#23218)

    ### Additional fixed

    • Merge Burger menu components into a single component

    • Show a badge with no-read messages in the Burger Button: image

    • remove useSidebarClose hook

      • 👍 Stop queue when Omnichannel is disabled or the routing method does not support it (#23261)
    • 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)
      • transfer message when tranferring room by Apps Engine (#23074 by @cuonghuunguyen)
      • ⚡️ Update bugsnag package (#23104)
      • ⚡️ User list not being updated after creation/deletion of user (#23032 by @ostjen)
      • Wrap canned-responses endpoints with ee license (#23204)
      • 📄 Wrong docs link on Omni-Webhook page (#23117)

    🔍 Minor changes

    Moves helper modules under app/ to client/lib/utils/.

    • ✅ Chore: Re-enable session tests on local after removal of mongo-unit (#23263)

    • 🚚 Chore: Remove non-used dependencies (#23109)

    • 🚚 Chore: Remove wrong usages of Meteor.wrapAsync (#23079)

    • ⚡️ Chore: Update Livechat widget to 1.9.4 (#23198)

    • ⚡️ Chore: Update pino and pino-pretty (#23269)

    • ⚡️ Chore: Update pino and pino-pretty (#23157)

    • ⬆️ Chore: Upgrade limax (#23187)

    Upgrades limax for faster slugify algorithm.

    • ⚡️ i18n: Language update from LingoHub 🤖 on 2021-08-30Z (#23061)

    • ⚡️ i18n: Language update from LingoHub 🤖 on 2021-09-06Z (#23123)

    • ⚡️ i18n: Language update from LingoHub 🤖 on 2021-09-13Z (#23184)

    • 🔀 Merge master into develop & Set version to 4.0.0 (#23086)

    • Regression: "Join" button not working (#23320)

    • Regression: renderEmoji helper referred as a template (#23212)

    • 0️⃣ Regression: Add default value when no cookies are present (#23318)

    • Regression: Blank screen in Jitsi video calls (#23322)

      • Fix Jitsi calls being disposed even when "Open in new window" setting is disabled;
      • Fix misspelling on CallJitsWithData.js file name.
    • 🌲 Regression: Create new loggers based on server log level (#23297)

    • Regression: Fix app storage migration (#23286)

    The previous version of this migration didn't take into consideration apps that were installed prior to [email protected], which removed the typescript compiler from the server and into the CLI. As a result, the zip files inside each installed app's document in the database had typescript files in them instead of the now required javascript files.

    As the new strategy of source code storage for apps changes the way the app is loaded, those zip files containing the source code are read everytime the app is started (or in this particular case, updated), and as the zips' contents were wrong, the operation was failing.

    The fix extract the data from old apps and creates new zip files with the compiled js already present.

    • Regression: Fix Bugsnag not started error (#23308)

    • Regression: Fix channel icons on queue (#23304)

    • Regression: Fix user registration stuck (#23254)

    • 🔊 Regression: Fix view logs admin screen (#23194)

    • Regression: invalid call import (#23328)

    • Regression: invalid call import (#23334)

    • 🔀 Regression: LDAP Channel/Role Sync not working (#23311)

    • Regression: LDAP Issues (#23306)

    • 🔨 Regression: LDAP Refactoring (#23231)

    • 🔀 Regression: LDAP User Data Sync not always working (#23321)

    • Regression: LDAP: Handle base authentication and prevent crash (#23331)

    When AD requires TLS the auth crashes the server if StartTLS is not set, the error shows at the end because the code was not waiting on this operation.

    • 🌲 Regression: Log Sections not respecting Log Level setting (#23230)

    • Regression: Missing i18n key (#23282)

    • Regression: Properly trickle-down state from UsersPage to UsersTable (#23196)

    Spotted by @gabriellsh.

    • 🚚 Regression: Removed exclusive tests statement (#23333 by @ostjen)

    • Regression: Request seats link (#23312)

    • Regression: Request seats url (#23317)

    • Regression: SAML identifier mapping (#23330)

    • Regression: Seats Cap banner not being disabled if not enterprise (#23278)

    • 🔊 Regression: View Logs administration page crashing (#23205)

    Fixes the stdout.queue endpoint; makes the components type-safe.

    👩‍💻👨‍💻 Contributors 😍

    👩‍💻👨‍💻 Core Team 🤓