Releases: RocketChat/Rocket.Chat
Release list
8.8.0-rc.0
Engine versions
- Node:
22.22.3 - Deno:
2.3.1 - MongoDB:
8.0 - Apps-Engine:
1.66.0-rc.0
Minor Changes
-
(#41307) Adds classification banners to ABAC-managed rooms: admins can describe US-Government-style classification markings (levels, special access programs, releasability, colors) in a new JSON setting, and matching rooms display a colored classification banner above the room header for all members.
-
(#41765) Accepts a role name in the
when.hasOneRoleandwhen.hasAllRolesfilters of an app action button -
(#41474) Changes the default apps-engine runtime backend from
denotonode. The previous behavior can be restored by setting the environment variableAPPS_ENGINE_RUNTIME_BACKEND='deno' -
(#41788) Adds support for SAML authentication in the mobile and desktop apps via the system browser.
-
(#41642) Deprecates LDAP and SAML authentication on workspaces without a Premium plan. Both keep working as they are today, but the admin settings now warn that version 9.0.0 will require a license including the
ldap-enterpriseorsaml-enterprisemodule, and a warning is logged when an unlicensed workspace authenticates a user through either of them. -
(#41095) Adds a workspace setting Force end-to-end encryption on private rooms (
E2E_Force_Encryption_For_Private_Rooms) under Admin → Settings → End-to-End Encryption. When enabled, every newly created private room is encrypted by default and users can no longer opt out: the encryption toggle in the create-room modal is locked on for private rooms, and the server rejects any attempt to create a private room withencrypted: false(e.g. viagroups.create) with the errorerror-encrypted-private-rooms-enforced. Public rooms are unaffected. Federated rooms are exempt since federation does not support E2EE. Creating a discussion under an unencrypted private parent room is rejected with a dedicated error instructing the user to make the parent public or enable encryption on it, and the create-discussion dialog now surfaces creation errors as toasts. -
(#41355) Replaces the "Drafts in sidebar" feature preview with an always-on draft indicator. Thread-composer drafts are also persisted per thread and indicated in the thread list
-
(#41082) Adds an AI add-on-gated native Model Context Protocol endpoint and its administration controls in AI Center
-
(#41747) Adds status visibility, letting users hide their presence and status message from specific people they choose. Blocked people see that user as offline, indistinguishable from genuinely offline, and the block can be lifted at any time — changes apply live, without a reload.
-
(#40736) Added three new REST endpoints under
/v1/audit.*(EE-only, requires theauditinglicense) covering the audit flows that previously only existed as DDP methods:GET /v1/audit.auditions?startDate=&endDate=→{ auditions: IAuditLog[] }(replacesauditGetAuditions,can-audit-log)POST /v1/audit.messagesbody{ rid?, startDate, endDate, users, msg, type, visitor?, agent? }→{ messages: IMessage[] }(replacesauditGetMessages,can-audit)POST /v1/audit.omnichannelMessagesbody{ startDate, endDate, users, msg, type, visitor?, agent? }→{ messages: IMessage[] }(replacesauditGetOmnichannelMessages,can-audit)
Each endpoint is rate-limited at 10 requests / 60s (matching the DDP
DDPRateLimiterrules) and writes the sameAuditLogentry the DDP methods produced. Dates are serialized as ISO strings on the wire. The DDP methods remain registered with deprecation logs pointing at the new routes until 9.0.0. -
(#41593) Added
POST /v1/chat.readThreadbody{ tmid }, which marks a single thread as read for the caller — clearing the thread from the subscription's unread list and running thebeforeReadMessages/afterReadMessagescallbacks. It replaces thereadThreadsDDP method, which stays registered with a deprecation log pointing at the new route until 9.0.0.POST /v1/subscriptions.readdoes not cover this: it takes{ rid, readThreads? }and operates on the whole room, with no way to address one thread. -
(#40737) Adds two new REST endpoints completing the Custom OAuth admin surface:
POST /v1/settings.removeCustomOAuthbody{ name }→ removes allAccounts_OAuth_Custom-<Name>-*setting documents (replaces the deprecatedremoveOAuthServiceDDP method).POST /v1/settings.refreshOAuthServices(no body) → re-reads ServiceConfiguration entries from settings (replaces the deprecatedrefreshOAuthServiceDDP method).
Both endpoints reuse the
add-oauth-servicepermission andtwoFactorRequiredgates that the DDP methods already enforced.addOAuthServicewas already covered by the existingPOST /v1/settings.addCustomOAuth— its DDP method now also logs a deprecation. The three legacy DDP methods remain registered until 9.0.0. -
(#40734) Adds five new REST endpoints covering the TOTP 2FA flows that previously only existed as DDP methods:
POST /v1/users.enableTotp→{ secret, url }(replaces2fa:enable)POST /v1/users.disableTotpbody{ code }→{ disabled }(replaces2fa:disable)POST /v1/users.validateTotpbody{ code }→{ codes }(replaces2fa:validateTempToken; also rotates non-PAT login tokens server-side)POST /v1/users.regenerateTotpCodesbody{ code }→{ codes }(replaces2fa:regenerateCodes)GET /v1/users.totpCodesRemaining→{ remaining }(replaces2fa:checkCodesRemaining)
users.enableTotpandusers.validateTotprequire two-factor verification (twoFactorRequired) so enrolling a new TOTP device confirms the account owner's identity first — closing a 2FA-enrollment bypass where a hijacked session could register an attacker-controlled TOTP without verifying the existing 2FA. All five endpoints are rate-limited.The legacy DDP methods stay registered with deprecation logs pointing at the new routes until 9.0.0 removes them.
-
(#41715) Adds an optional
fromTsquery parameter tochat.syncMessages, so it can be used as a replacement for the deprecatedloadMissedMessagesDDP method. It bounds the sync window and must be used together withlastUpdate; sending it with cursor pagination is rejected instead of being ignored.
Patch Changes
-
(#41777) Fixed app action buttons never matching a role scoped to
Subscriptions—owner,moderator,leader, or a custom one. The room was not being passed as the scope of the role check, so a button filtered by one of those roles stayed hidden even for a user who held it in the room. -
(#41784) Fixed business hours closing for one minute a day when configured as
00:00-23:59. Work hours are set at minute granularity, but the finish time was treated as exclusive, so consecutive daily windows never met and the service dropped to closed for the whole23:59minute — agents could not become available and the Livechat widget rendered the offline form. A work hour now stays open until the end of its finish minute. -
(#41664) Fixes the composer popups (mentions, slash commands and emojis) staying open after programmatic changes to the composer text, such as canceling the edition of a message that contains a mention.
-
(#41795) Fixes client-safe errors being reported as exceptions to the channel configured in
Log Exceptions to ChannelwhenLog_Levelis set to2. -
(#40734) Migrates the
TwoFactorTOTPaccount settings page from the five2fa:*DDP methods to the new TOTP REST endpoints. DDP methods stay registered for external SDK/mobile clients with deprecation logs pointing at the new routes until 9.0.0. -
(#40736) Migrated the audit panel (
AuditLogTable,useAuditMutation) from the threeauditGet*DDP methods to the new/v1/audit.*REST endpoints. DDP methods stay registered with deprecation logs pointing at the new routes until 9.0.0. -
(#40737) Migrates the Admin → OAuth services group page from
useMethod(DDP) touseEndpoint(REST):addOAuthService→ existingPOST /v1/settings.addCustomOAuthremoveOAuthService→ newPOST /v1/settings.removeCustomOAuthrefreshOAuthService→ newPOST /v1/settings.refreshOAuthServices
DDP methods stay registered with deprecation logs pointing at the new routes until 9.0.0.
-
(#41593) Migrated the last two thread-read call sites (
ThreadChat,useThreadMessagesQuery) from thereadThreadsDDP method toPOST /v1/chat.readThread, and pointed the admin "send a test push to my user" setting atPOST /v1/push.testinstead of thepush_testDDP method. Both DDP methods stay registered with...
7.10.15
Engine versions
- Node:
22.16.0 - Deno:
1.43.5 - MongoDB:
5.0, 6.0, 7.0 - Apps-Engine:
1.55.3
Patch Changes
-
Bump @rocket.chat/meteor version.
-
(#41858 by @dionisio-bot) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint
-
(#41851 by @dionisio-bot) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
-
(#41852 by @dionisio-bot) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview
-
Updated dependencies []:
- @rocket.chat/core-typings@7.10.15
- @rocket.chat/rest-typings@7.10.15
- @rocket.chat/license@1.0.43
- @rocket.chat/omnichannel-services@0.3.49
- @rocket.chat/pdf-worker@0.3.31
- @rocket.chat/presence@0.2.52
- @rocket.chat/api-client@0.2.52
- @rocket.chat/apps@0.5.31
- @rocket.chat/core-services@0.10.15
- @rocket.chat/cron@0.1.52
- @rocket.chat/freeswitch@1.2.39
- @rocket.chat/fuselage-ui-kit@22.0.15
- @rocket.chat/gazzodown@22.0.15
- @rocket.chat/http-router@7.9.19
- @rocket.chat/model-typings@1.7.15
- @rocket.chat/ui-avatar@18.0.15
- @rocket.chat/ui-client@22.0.15
- @rocket.chat/ui-contexts@22.0.15
- @rocket.chat/web-ui-registration@22.0.15
- @rocket.chat/models@1.6.15
- @rocket.chat/server-cloud-communication@0.0.2
- @rocket.chat/network-broker@0.2.31
- @rocket.chat/ui-theming@0.4.3
- @rocket.chat/ui-video-conf@22.0.15
- @rocket.chat/ui-voip@12.0.15
- @rocket.chat/omni-core-ee@0.0.17
- @rocket.chat/instance-status@0.1.52
- @rocket.chat/omni-core@0.0.17
8.7.1
Engine versions
- Node:
22.22.3 - Deno:
2.3.1 - MongoDB:
8.0 - Apps-Engine:
1.65.1
Patch Changes
-
Bump @rocket.chat/meteor version.
-
Bump @rocket.chat/meteor version.
-
(#41818 by @dionisio-bot) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint
-
(#41820 by @dionisio-bot) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
-
(#41846) Fixes an issue where a
MultiSelectoption checkbox remained checked after the option was deselected -
(#41819 by @dionisio-bot) Replace http with serverFetch in downloadPublicImportFile to add SSRF protection
-
(#41817 by @dionisio-bot) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview
-
Updated dependencies []:
- @rocket.chat/core-typings@8.7.1
- @rocket.chat/rest-typings@8.7.1
8.6.2
Engine versions
- Node:
22.22.3 - Deno:
2.3.1 - MongoDB:
8.0 - Apps-Engine:
1.64.1
Patch Changes
-
Bump @rocket.chat/meteor version.
-
Bump @rocket.chat/meteor version.
-
(#41832 by @dionisio-bot) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint
-
(#41827 by @dionisio-bot) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
-
(#41830 by @dionisio-bot) Replace http with serverFetch in downloadPublicImportFile to add SSRF protection
-
(#41823 by @dionisio-bot) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview
-
Updated dependencies []:
- @rocket.chat/core-typings@8.6.2
- @rocket.chat/rest-typings@8.6.2
8.5.3
Engine versions
- Node:
22.22.3 - Deno:
2.3.1 - MongoDB:
8.0 - Apps-Engine:
1.63.0
Patch Changes
-
Bump @rocket.chat/meteor version.
-
Bump @rocket.chat/meteor version.
-
(#41853 by @dionisio-bot) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint
-
(#41836 by @dionisio-bot) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
-
(#41847 by @dionisio-bot) Replace http with serverFetch in downloadPublicImportFile to add SSRF protection
-
(#41824 by @dionisio-bot) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview
-
Updated dependencies []:
- @rocket.chat/core-typings@8.5.3
- @rocket.chat/rest-typings@8.5.3
8.4.6
Engine versions
- Node:
22.22.2 - Deno:
2.3.1 - MongoDB:
8.0 - Apps-Engine:
1.62.0
Patch Changes
-
Bump @rocket.chat/meteor version.
-
Bump @rocket.chat/meteor version.
-
(#41854 by @dionisio-bot) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint
-
(#41842 by @dionisio-bot) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
-
(#41862 by @dionisio-bot) Replace http with serverFetch in downloadPublicImportFile to add SSRF protection
-
(#41825 by @dionisio-bot) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview
-
Updated dependencies []:
- @rocket.chat/core-typings@8.4.6
- @rocket.chat/rest-typings@8.4.6
8.3.8
Engine versions
- Node:
22.16.0 - Deno:
1.43.5 - MongoDB:
8.0 - Apps-Engine:
1.61.1
Patch Changes
-
Bump @rocket.chat/meteor version.
-
(#41855 by @dionisio-bot) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint
-
(#41844 by @dionisio-bot) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
-
(#41863 by @dionisio-bot) Replace http with serverFetch in downloadPublicImportFile to add SSRF protection
-
(#41826 by @dionisio-bot) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview
-
Updated dependencies []:
- @rocket.chat/core-typings@8.3.8
- @rocket.chat/rest-typings@8.3.8
8.2.8
Engine versions
- Node:
22.16.0 - Deno:
1.43.5 - MongoDB:
8.0 - Apps-Engine:
1.60.1
Patch Changes
-
Bump @rocket.chat/meteor version.
-
(#41856 by @dionisio-bot) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint
-
(#41849 by @dionisio-bot) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
-
(#41864 by @dionisio-bot) Replace http with serverFetch in downloadPublicImportFile to add SSRF protection
-
(#41840 by @dionisio-bot) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview
-
Updated dependencies []:
- @rocket.chat/core-typings@8.2.8
- @rocket.chat/rest-typings@8.2.8
8.1.8
Engine versions
- Node:
22.16.0 - Deno:
1.43.5 - MongoDB:
8.2 - Apps-Engine:
1.59.2
Patch Changes
-
Bump @rocket.chat/meteor version.
-
(#41857 by @dionisio-bot) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint
-
(#41850 by @dionisio-bot) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
-
(#41841 by @dionisio-bot) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview
-
Updated dependencies []:
- @rocket.chat/core-typings@8.1.8
- @rocket.chat/rest-typings@8.1.8
- @rocket.chat/abac@0.1.10
- @rocket.chat/federation-matrix@0.0.19
- @rocket.chat/license@1.1.17
- @rocket.chat/media-calls@0.2.10
- @rocket.chat/omnichannel-services@0.3.54
- @rocket.chat/pdf-worker@0.3.36
- @rocket.chat/presence@0.2.57
- @rocket.chat/api-client@0.2.57
- @rocket.chat/apps@0.6.10
- @rocket.chat/core-services@0.12.10
- @rocket.chat/cron@0.1.57
- @rocket.chat/fuselage-ui-kit@27.0.8
- @rocket.chat/gazzodown@27.0.8
- @rocket.chat/http-router@7.9.24
- @rocket.chat/message-types@0.1.0
- @rocket.chat/model-typings@2.0.10
- @rocket.chat/ui-avatar@23.0.8
- @rocket.chat/ui-client@27.0.8
- @rocket.chat/ui-contexts@27.0.8
- @rocket.chat/ui-voip@17.0.8
- @rocket.chat/web-ui-registration@27.0.8
- @rocket.chat/models@2.0.10
- @rocket.chat/server-cloud-communication@0.0.2
- @rocket.chat/network-broker@0.2.36
- @rocket.chat/omni-core-ee@0.0.22
- @rocket.chat/ui-theming@0.4.4
- @rocket.chat/ui-video-conf@27.0.8
- @rocket.chat/instance-status@0.1.57
- @rocket.chat/omni-core@0.0.22
8.7.0
Release 8.7.0
Release Date: August 6, 2026
Support Window: Supported until February 28, 2027
Summary
Security and Compliance
Security improvements, authentication changes, data protection, and vulnerability fixes.
This release adds phishing-resistant MFA and a modern server-side OAuth flow with CSRF protection, state validation, and PKCE, enabled via Accounts_OAuth_Use_Modern_Flow under Manage > Workspace > Settings > OAuth, along with new unauthenticated endpoints (loginCode.redeem, twoFactorChallenges.sendEmailCode, twoFactorChallenges.verifyChallenge) supporting OAuth sign-in completion and email or TOTP challenges. FIPS 140-3 compliant Docker images are now published for the monolith and all microservices; running in FIPS mode requires a license with the new fips add-on, and FIPS status is reported in server logs and workspace statistics. Permission enforcement is hardened across users.createToken, channels.convertToTeam, and teams.create, so callers without the required permissions now receive authorization errors where requests previously succeeded. Concurrent logins can no longer consume the same CAS login token, users can no longer delete integrations they don't own, SAML Single Logout now echoes the RelayState value as the specification requires, and fixes close vulnerabilities that could allow authentication bypass in SAML single sign-on and unauthorized impersonation through forged ephemeral messages. A race condition that could leave messages in a newly created encrypted room permanently undecryptable is also resolved.
Messaging and Collaboration
Features and fixes related to messaging, channels, discussions, and communication workflows.
Unified AI Search arrives as an opt-in feature preview, adding semantic message search and grounded AI-generated answers to the global search bar. Messages now support GitHub-style pipe-delimited tables and horizontal rules, a persistent audio player keeps playing across room navigation with a Now Playing card in the sidebar offering play/pause, seek, and playback speed controls, and the bundled emojione set is replaced with native Unicode emojis while legacy shortnames keep rendering through a compatibility map. The Omnichannel Contact Center date columns now show relative time, and the "Away" presence option returns to the user menu's quick status options. Fixes cover custom Omnichannel business hours surviving daylight saving changes and restarts, the "user left" system message appearing in correct chronological order after forwarding, Matrix-federated rooms no longer corrupting their event tree when a message is edited or deleted (already-affected rooms need a separate one-time repair), voice calls failing during initial connection when navigating rooms, keyboard accessibility in the Display menu and Members list, audio attachment seeking, and a batch of interface issues spanning mentions, quotes, the emoji picker, video controls, timezone-related date display, and avatar validation.
Platform and Extensibility
Developer platform, APIs, integrations, and application framework improvements.
Workspace admins can now run Rocket.Chat apps on an alternative Node.js runtime backend instead of the default Deno subprocess by setting APPS_ENGINE_RUNTIME_BACKEND to node, with identical app behavior under either backend. New REST endpoints for users.verifyEmail, cloud.connectWorkspace, integrations.clearHistory, and integrations.replayOutgoing replace their DDP equivalents, which now log deprecation warnings ahead of removal in 9.0.0, and avatar uploads through users.setAvatar support an optional service field preserving the original OAuth provider name. The web client now pushes the logged-in user's roles to the desktop app so version-support warnings target relevant roles. Fixes address apps failing with "Module not found" errors after a workspace upgrade, app startup EACCES errors in Docker deployments running under a custom UID, and corrected type definitions for federated users and UIKit interaction responses.
Data, Storage, and Infrastructure
Database, performance, storage, and system-level improvements.
Navbar search returns results faster and can read from secondary database replicas when available, the engagement dashboard no longer loads unnecessary data into memory on startup, and pagination on rooms.bannedUsers and Omnichannel department listings honors the offset parameter again. The web client's rendering baseline is upgraded to React 19 without user-facing changes, and URL preview embeds no longer flicker when new messages or reactions arrive.
Admin, Configuration, and Workspace Management
Administrative controls, configuration settings, and workspace management improvements.
XMPP federation bridge support lets licensed workspaces connect Rocket.Chat rooms to XMPP networks, configurable under Manage > Workspace > Settings > Federation after enabling native federation. Licensed airgapped workspaces now stop all outbound connections to Rocket.Chat Cloud and other services, the newest valid license is correctly applied at startup including via ROCKETCHAT_LICENSE, and a new Manage License flow in Administration > Subscription lets admins preview, apply, and remove a license with validation through the new licenses.validate endpoint before it is applied. Admin settings holding JSON now validate inline and block save while malformed, an invalid password-policy length combination is rejected with an explanatory error, and re-enabling the Enable Push setting no longer crashes the server. The Slack importer delivers shared files as native attachments with image previews, LDAP synchronization completes the full channel map even when a mapped channel is missing and merges email-matched users into existing accounts instead of failing, logging out the current device no longer shows a spurious error (with a new current field on sessions.list), and custom fields display again in the admin room detail view.
For further details, check out the release notes.
Details
Engine versions
- Node:
22.22.3 - Deno:
2.3.1 - MongoDB:
8.0 - Apps-Engine:
1.65.1
Minor Changes
-
(#40351) Adds
currentfield toDeviceManagementSessiontype andcurrentLoginTokenparameter toaggregateSessionsByUserId, allowing the sessions endpoint to identify and flag the caller's active session. -
(#40721) ## Phishing-Resistant Multi-Factor Authentication
Introduces a more secure and reliable server-side OAuth authentication flow.
What’s New
- Improved OAuth login security
OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. - Built-in CSRF, state validation, and PKCE protection
OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. - Improved two-step verification with OAuth logins
Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. - Improved mobile & desktop app login
Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. - A new setting to enable/disable new OAuth Flow
Enable this new settingAccounts_OAuth_Use_Modern_Flowto use all of the above mentioned features.
- Improved OAuth login security
-
(#40890) Adds AI Search with semantic message results, optional OpenAI-compatible answers, and AI Center configuration.
-
(#39324) Adds support for running Rocket.Chat in FIPS mode. The monolith and all microservices (ddp-streamer, account-service, authorization-service, presence-service, queue-worker, omnichannel-transcript) can now enforce FIPS-compliant cryptography via Node.js/OpenSSL FIPS, with dedicated FIPS Docker images. Running in FIPS mode requires a license including the new
fipsmodule, and FIPS status is now reported in server logs and statistics. -
(#41019) Adds an alternative runtime runner for apps. It can be enabled via environment variable
APPS_ENGINE_RUNTIME_BACKEND='node' -
(#41142) Adds inline JSON validation feedback to admin settings that hold JSON (
code: application/json), showing an error in the editor and blocking save while the value is malformed -
(#40916) Adds a new
licenses.validateREST endpoint that validates a Rocket.Chat license (V2 or V3 JWT) against the current workspace without applying it, so a license can be previewed before it is applied from the UI. A valid license responds with success; an invalid one responds with the validation behaviors that rejected it. -
(#39411) Replaces proprietary emojis with native (unicode) emojis and increases available emoji set
-
(#41148) Adds support for the
offlinelicense flag, suppressing every outbound connection to Rocket.Chat Cloud services and the Push Gateway at its source, so air-gapped workspaces never initiate calls that would violate their security compliance. -
(#41120) Added a persistent audio player. Playi...