Skip to content

Release 8.3.0#39275

Draft
rocketchat-github-ci wants to merge 109 commits intomasterfrom
release-8.3.0
Draft

Release 8.3.0#39275
rocketchat-github-ci wants to merge 109 commits intomasterfrom
release-8.3.0

Conversation

@rocketchat-github-ci
Copy link
Collaborator

@rocketchat-github-ci rocketchat-github-ci commented Mar 3, 2026

You can see below a preview of the release change log:

8.3.0

Engine versions

  • Node: 22.16.0
  • Deno: 1.43.5
  • MongoDB: 8.0
  • Apps-Engine: 1.60.1

Minor Changes

  • (#38978 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat autotranslate translateMessage API endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation

  • (#39225 by @sezallagwal) Add OpenAPI support for the chat.followMessage and chat.unfollowMessage API endpoints by migrating to a modern chained route definition syntax and utilizing AJV schemas for body and response validation.

  • (#39227 by @sezallagwal) Add OpenAPI support for the chat.starMessage and chat.unStarMessage API endpoints by migrating to a modern chained route definition syntax and utilizing AJV schemas for body and response validation.

  • (#38957 by @Verifieddanny) Migrated rooms.leave endpoint to new OpenAPI pattern with AJV validation

  • (#38549 by @Rohitgiri02) migrated rooms.delete endpoint to new OpenAPI pattern with AJV validation

  • (#39094 by @ahmed-n-abdeltwab) Adds OpenAPI support for the Rocket.Chat e2e.updateGroupKey endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#36402 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat users.getAvatarSuggestion API endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#38881 by @smirk-dev) adds instances.get API endpoint to new chained pattern with response schemas

  • (#38883 by @smirk-dev) Migrates ldap.testConnection and ldap.testSearch REST API endpoints from legacy addRoute pattern to the new chained .post() API pattern with typed response schemas and AJV body validation (replacing Meteor check()).

  • (#38882 by @smirk-dev) Migrates presence.getConnections and presence.enableBroadcast REST API endpoints from legacy addRoute pattern to the new chained .get()/.post() API pattern with typed response schemas.

  • (#38610) Fixes Custom Sounds Contextualbar state and refresh behavior

  • (#36779 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat e2e.fetchMyKeys endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#36916 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat custom-user-status.list API endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation

  • (#39219 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat e2e endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#38610) Adds new custom-sounds.getOne REST endpoint to retrieve a single custom sound by _id and updates client to consume it.

Patch Changes

  • (#39010) Fixes an authorization issue that allowed users to confirm uploads from other users

  • (#38531) Fixes a cross-resource access issue that allowed users to retrieve emojis from the Custom Sounds endpoint and sounds from the Custom Emojis endpoint when using the FileSystem storage mode.

  • (#38662 by @TheRazorbill) Fixes wrong i18n key in RegisterWorkspace confirmation step so the text is translated instead of showing a missing key.

  • (#38983 by @copilot-swe-agent) Fixes incoming webhook messages ignoring literal \n escape sequences, and fixes the MarkdownText document variant not rendering newlines as line breaks.

  • (#38989) chore(eslint): Upgrades ESLint and its configuration

  • (#39003) Fix marking a message as sent before the request finishes

  • (#36786 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat e2e.getUsersOfRoomWithoutKey endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#38932) Fixes version update banner showing outdated versions after server upgrade.

  • (#38760 by @Khizarshah01) Limits Outgoing webhook maximum response size to 10mb.

  • (#36882 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat push.test API endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#39250) Fixes inquiries.take not failing when attempting to take a chat while over chat limits

  • (#38852) Fixes an issue where Production flag was not being respected when initializing Push Notifications configuration

  • (#38944 by @Khizarshah01) Limits Omnichannel webhook maximum response size to 10mb.

  • (#38954) Fixes reactivity of Custom Sounds and Custom Emojis storage settings

  • (#35995 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat rooms.favorite APIs endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#36523 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat emoji-custom.create API endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#36953 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat commands.get API endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • (#38974 by @ahmed-n-abdeltwab) Add OpenAPI support for the Rocket.Chat dm.close/im.close API endpoints by migrating to a modern chained route definition syntax and utilizing shared AJV schemas for validation to enhance API documentation and ensure type safety through response validation.

  • Updated dependencies [602b20a, d1bf2cc, 02b1e6e, 9a70095, a4e3c16, 539659a, b1b1d6c, 5518503, a4341ec, 4025314, 85c0ac7, 803b807, 1361a1f, 2a27010, 37acece, d8baf39, ddc0ed3, 722df6f, 78b3fe3, 98a6c58, 29b453e, 39f2e87, c117492, 7c73241]:
    • @rocket.chat/model-typings@2.1.1
    • @rocket.chat/models@2.1.1
    • @rocket.chat/message-parser@0.31.35
    • @rocket.chat/rest-typings@8.3.0
    • @rocket.chat/server-cloud-communication@0.0.3
    • @rocket.chat/omnichannel-services@0.3.49
    • @rocket.chat/federation-matrix@0.0.14
    • @rocket.chat/web-ui-registration@29.0.0
    • @rocket.chat/network-broker@0.2.31
    • @rocket.chat/password-policies@0.1.1
    • @rocket.chat/omni-core-ee@0.0.17
    • @rocket.chat/fuselage-ui-kit@29.0.0
    • @rocket.chat/instance-status@0.1.52
    • @rocket.chat/media-signaling@0.1.2
    • @rocket.chat/patch-injection@0.0.2
    • @rocket.chat/media-calls@0.2.5
    • @rocket.chat/pdf-worker@0.3.31
    • @rocket.chat/ui-theming@0.4.5
    • @rocket.chat/account-utils@0.0.3
    • @rocket.chat/core-services@0.13.1
    • @rocket.chat/message-types@0.1.1
    • @rocket.chat/mongo-adapter@0.0.3
    • @rocket.chat/ui-video-conf@29.0.0
    • @rocket.chat/cas-validate@0.0.4
    • @rocket.chat/core-typings@8.3.0
    • @rocket.chat/server-fetch@0.1.1
    • @rocket.chat/presence@0.2.52
    • @rocket.chat/apps-engine@1.60.1
    • @rocket.chat/http-router@7.9.19
    • @rocket.chat/poplib@0.0.3
    • @rocket.chat/ui-composer@0.5.4
    • @rocket.chat/ui-contexts@29.0.0
    • @rocket.chat/license@1.1.12
    • @rocket.chat/api-client@0.2.52
    • @rocket.chat/log-format@0.0.3
    • @rocket.chat/gazzodown@29.0.0
    • @rocket.chat/omni-core@0.0.17
    • @rocket.chat/ui-avatar@25.0.0
    • @rocket.chat/ui-client@29.0.0
    • @rocket.chat/abac@0.1.5
    • @rocket.chat/favicon@0.0.5
    • @rocket.chat/tracing@0.0.2
    • @rocket.chat/ui-voip@19.0.0
    • @rocket.chat/agenda@0.1.1
    • @rocket.chat/base64@1.0.14
    • @rocket.chat/logger@1.0.1
    • @rocket.chat/random@1.2.3
    • @rocket.chat/sha256@1.0.13
    • @rocket.chat/ui-kit@0.39.1
    • @rocket.chat/tools@0.2.5
    • @rocket.chat/apps@0.6.5
    • @rocket.chat/cron@0.1.52
    • @rocket.chat/i18n@2.1.1
    • @rocket.chat/jwt@0.2.1

ggazzo and others added 30 commits February 20, 2026 15:06
Co-authored-by: Kevin Aleman <kaleman960@gmail.com>
Co-authored-by: Khizarshah01 <5263975+Khizarshah01@users.noreply.github.com>
Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
…ints (#38861)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggazzo <5263975+ggazzo@users.noreply.github.com>
Co-authored-by: Guilherme Gazzo <guilhermegazzo@gmail.com>
Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggazzo <5263975+ggazzo@users.noreply.github.com>
…38864)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggazzo <guilherme@gazzo.xyz>
#38760)

Co-authored-by: Kevin Aleman <11577696+KevLehman@users.noreply.github.com>
Co-authored-by: Kevin  Aleman <kaleman960@gmail.com>
Co-authored-by: Guilherme Gazzo <guilhermegazzo@gmail.com>
Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
…nd add Contextualbar bug fixes (#38610)

Co-authored-by: gabriellsh <40830821+gabriellsh@users.noreply.github.com>
Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
Co-authored-by: Kevin Aleman <kaleman960@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Douglas Fabris <devfabris@gmail.com>
Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Kevin Aleman <kaleman960@gmail.com>
Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
… parser (#38958)

Co-authored-by: ggazzo <5263975+ggazzo@users.noreply.github.com>
…r custom-sounds and emoji-custom endpoints (#38531)

Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
dependabot bot and others added 20 commits February 27, 2026 19:28
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Douglas Fabris <devfabris@gmail.com>
Co-authored-by: Tasso Evangelista <tasso.evangelista@rocket.chat>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@rocketchat-github-ci rocketchat-github-ci requested review from a team as code owners March 3, 2026 10:28
@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Mar 3, 2026

Looks like this PR is not ready to merge, because of the following issues:

  • This PR is missing the 'stat: QA assured' label
  • This PR is missing the required milestone or project

Please fix the issues and try again

If you have any trouble, please check the PR guidelines

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 3, 2026

Important

Review skipped

Too many files!

This PR contains 293 files, which is 143 over the limit of 150.

📥 Commits

Reviewing files that changed from the base of the PR and between f2a05ce and 468fd59.

⛔ Files ignored due to path filters (7)
  • .github/actions/update-version-durability/package-lock.json is excluded by !**/package-lock.json
  • apps/meteor/client/components/UserAutoCompleteMultiple/__snapshots__/UserAvatarChip.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/components/UserInfo/__snapshots__/UserInfo.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/__snapshots__/UsersInRoleTable.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/users/UsersTable/__snapshots__/UsersTable.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/audit/components/__snapshots__/SecurityLogDisplayModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/body/__snapshots__/RoomInviteBody.spec.tsx.snap is excluded by !**/*.snap
📒 Files selected for processing (293)
  • .changeset/blue-seals-leave.md
  • .changeset/clean-ears-fly.md
  • .changeset/fix-blockquote-empty-lines.md
  • .changeset/fix-message-parser-reduce-perf.md
  • .changeset/fix-register-workspace-i18n.md
  • .changeset/fix-trailing-punctuation-url.md
  • .changeset/fix-webhook-newline.md
  • .changeset/hungry-monkeys-hang.md
  • .changeset/little-eyes-kneel.md
  • .changeset/loud-weeks-protect.md
  • .changeset/migrate-chat-follow-unfollow-message.md
  • .changeset/migrate-chat-star-unstar-message.md
  • .changeset/migrate-rooms-leave-endpoint.md
  • .changeset/nasty-candles-invent.md
  • .changeset/nice-penguins-rhyme.md
  • .changeset/nice-squids-smoke.md
  • .changeset/nine-otters-hug.md
  • .changeset/olive-hairs-report.md
  • .changeset/pre.json
  • .changeset/pretty-jobs-juggle.md
  • .changeset/rare-waves-help.md
  • .changeset/refactor-instances-api-chained-pattern.md
  • .changeset/refactor-ldap-api-chained-pattern.md
  • .changeset/refactor-presence-api-chained-pattern.md
  • .changeset/rude-plums-think.md
  • .changeset/shiny-pears-admire.md
  • .changeset/short-starfishes-provide.md
  • .changeset/spicy-drinks-carry.md
  • .changeset/sweet-terms-relax.md
  • .changeset/swift-badgers-try.md
  • .changeset/tame-dolphins-draw.md
  • .changeset/tame-humans-greet.md
  • .changeset/tender-papayas-jam.md
  • .changeset/tough-steaks-beam.md
  • .changeset/tricky-boxes-type.md
  • .changeset/twenty-colts-flash.md
  • .changeset/weak-terms-shave.md
  • .changeset/wet-roses-call.md
  • .changeset/wicked-buckets-thank.md
  • .github/actions/build-docker/action.yml
  • .github/agents/bug-resolution-agent.md
  • .github/agents/feature-development-agent.md
  • .github/agents/refactor-agent.md
  • .github/workflows/auto-close-duplicates.yml
  • .github/workflows/ci-code-check.yml
  • .github/workflows/ci-test-e2e.yml
  • .github/workflows/ci-test-storybook.yml
  • .github/workflows/ci-test-unit.yml
  • .github/workflows/ci.yml
  • .github/workflows/dedupe-issues.yml
  • .github/workflows/todo.yml
  • .github/workflows/update-version-durability.yml
  • .vscode/settings.json
  • README.md
  • apps/meteor/.eslintrc.json
  • apps/meteor/.mocharc.api.js
  • apps/meteor/.mocharc.api.livechat.js
  • apps/meteor/.mocharc.js
  • apps/meteor/CHANGELOG.md
  • apps/meteor/app/api/server/ApiClass.ts
  • apps/meteor/app/api/server/default/info.ts
  • apps/meteor/app/api/server/definition.ts
  • apps/meteor/app/api/server/helpers/getLoggedInUser.ts
  • apps/meteor/app/api/server/helpers/getUserInfo.spec.ts
  • apps/meteor/app/api/server/helpers/getUserInfo.ts
  • apps/meteor/app/api/server/helpers/parseJsonQuery.ts
  • apps/meteor/app/api/server/index.ts
  • apps/meteor/app/api/server/router.ts
  • apps/meteor/app/api/server/v1/autotranslate.ts
  • apps/meteor/app/api/server/v1/channels.ts
  • apps/meteor/app/api/server/v1/chat.ts
  • apps/meteor/app/api/server/v1/commands.ts
  • apps/meteor/app/api/server/v1/custom-sounds.ts
  • apps/meteor/app/api/server/v1/custom-user-status.ts
  • apps/meteor/app/api/server/v1/e2e.ts
  • apps/meteor/app/api/server/v1/emoji-custom.ts
  • apps/meteor/app/api/server/v1/groups.ts
  • apps/meteor/app/api/server/v1/im.ts
  • apps/meteor/app/api/server/v1/instances.ts
  • apps/meteor/app/api/server/v1/ldap.ts
  • apps/meteor/app/api/server/v1/misc.ts
  • apps/meteor/app/api/server/v1/presence.ts
  • apps/meteor/app/api/server/v1/push.ts
  • apps/meteor/app/api/server/v1/rooms.ts
  • apps/meteor/app/api/server/v1/users.ts
  • apps/meteor/app/authorization/server/functions/canSendMessage.ts
  • apps/meteor/app/autotranslate/server/functions/translateMessage.ts
  • apps/meteor/app/autotranslate/server/methods/translateMessage.ts
  • apps/meteor/app/custom-sounds/server/startup/custom-sounds.js
  • apps/meteor/app/emoji-custom/server/startup/emoji-custom.js
  • apps/meteor/app/file-upload/server/methods/sendFileMessage.ts
  • apps/meteor/app/integrations/server/api/api.ts
  • apps/meteor/app/integrations/server/lib/triggerHandler.ts
  • apps/meteor/app/lib/client/methods/sendMessage.ts
  • apps/meteor/app/lib/server/functions/createRoom.ts
  • apps/meteor/app/lib/server/functions/extractMentionsFromMessageAST.ts
  • apps/meteor/app/lib/server/functions/processWebhookMessage.ts
  • apps/meteor/app/lib/server/methods/sendMessage.ts
  • apps/meteor/app/livechat/imports/server/rest/inquiries.ts
  • apps/meteor/app/livechat/imports/server/rest/rooms.ts
  • apps/meteor/app/livechat/server/api/lib/rooms.ts
  • apps/meteor/app/livechat/server/api/v1/webhooks.ts
  • apps/meteor/app/livechat/server/lib/webhooks.ts
  • apps/meteor/app/markdown/lib/parser/filtered/filtered.js
  • apps/meteor/app/mentions/server/Mentions.ts
  • apps/meteor/app/push/server/apn.spec.ts
  • apps/meteor/app/push/server/apn.ts
  • apps/meteor/app/push/server/methods.ts
  • apps/meteor/app/push/server/push.ts
  • apps/meteor/app/settings/server/CachedSettings.ts
  • apps/meteor/app/ui-message/client/messageBox/AddLinkComposerActionModal.tsx
  • apps/meteor/app/ui-message/client/messageBox/createComposerAPI.ts
  • apps/meteor/app/utils/rocketchat.info
  • apps/meteor/app/utils/server/getUserNotificationPreference.ts
  • apps/meteor/app/version-check/server/functions/buildVersionUpdateMessage.spec.ts
  • apps/meteor/app/version-check/server/functions/buildVersionUpdateMessage.ts
  • apps/meteor/client/components/MarkdownText.spec.tsx
  • apps/meteor/client/components/MarkdownText.tsx
  • apps/meteor/client/components/message/IgnoredContent.tsx
  • apps/meteor/client/components/message/MessageContentBody.tsx
  • apps/meteor/client/components/message/MessageHeader.tsx
  • apps/meteor/client/components/message/content/attachments/file/GenericFileAttachment.tsx
  • apps/meteor/client/components/message/content/attachments/structure/AttachmentText.tsx
  • apps/meteor/client/components/message/toolbar/MessageToolbarItem.tsx
  • apps/meteor/client/components/message/toolbar/items/actions/ForwardMessageAction.tsx
  • apps/meteor/client/components/message/toolbar/items/actions/JumpToMessageAction.tsx
  • apps/meteor/client/components/message/toolbar/items/actions/QuoteMessageAction.tsx
  • apps/meteor/client/components/message/toolbar/items/actions/ReactionMessageAction.tsx
  • apps/meteor/client/components/message/toolbar/items/actions/ReplyInThreadMessageAction.tsx
  • apps/meteor/client/components/message/variants/RoomMessage.tsx
  • apps/meteor/client/components/message/variants/SystemMessage.tsx
  • apps/meteor/client/components/message/variants/ThreadMessage.tsx
  • apps/meteor/client/components/message/variants/ThreadMessagePreview.tsx
  • apps/meteor/client/components/message/variants/room/RoomMessageContent.tsx
  • apps/meteor/client/components/message/variants/thread/ThreadMessageContent.tsx
  • apps/meteor/client/lib/chats/flows/sendMessage.ts
  • apps/meteor/client/providers/MediaCallProvider.tsx
  • apps/meteor/client/sidebar/Item/Condensed.tsx
  • apps/meteor/client/sidebar/Item/Extended.tsx
  • apps/meteor/client/sidebar/Item/Medium.tsx
  • apps/meteor/client/views/admin/customSounds/AddCustomSound.tsx
  • apps/meteor/client/views/admin/customSounds/EditCustomSound.tsx
  • apps/meteor/client/views/admin/customSounds/EditSound.tsx
  • apps/meteor/client/views/admin/integrations/incoming/IncomingWebhookForm.tsx
  • apps/meteor/client/views/admin/moderation/ModerationConsoleTable.tsx
  • apps/meteor/client/views/admin/workspace/VersionCard/modals/RegisterWorkspaceSetupModal/RegisterWorkspaceSetupStepTwoModal.tsx
  • apps/meteor/client/views/marketplace/components/CategoryFilter/CategoryDropDown.tsx
  • apps/meteor/client/views/marketplace/components/RadioDropDown/RadioDownAnchor.tsx
  • apps/meteor/client/views/marketplace/components/RadioDropDown/RadioDropDown.tsx
  • apps/meteor/client/views/mediaCallHistory/CallHistoryRowExternalUser.tsx
  • apps/meteor/client/views/mediaCallHistory/CallHistoryRowInternalUser.tsx
  • apps/meteor/client/views/mediaCallHistory/MediaCallHistoryContextualbar.tsx
  • apps/meteor/client/views/mediaCallHistory/MediaCallHistoryExternal.tsx
  • apps/meteor/client/views/mediaCallHistory/useMediaCallInternalHistoryActions.ts
  • apps/meteor/client/views/omnichannel/additionalForms/CurrentChatTags.tsx
  • apps/meteor/client/views/omnichannel/cannedResponses/components/CannedResponsesComposer/CannedResponsesComposer.tsx
  • apps/meteor/client/views/omnichannel/cannedResponses/components/CannedResponsesComposer/InsertPlaceholderDropdown.tsx
  • apps/meteor/client/views/omnichannel/components/Tags.tsx
  • apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActionOptions.tsx
  • apps/meteor/client/views/room/Header/Omnichannel/QuickActions/hooks/useDropdownVisibility.ts
  • apps/meteor/client/views/room/Header/ParentRoom/ParentRoom.tsx
  • apps/meteor/client/views/room/Header/icons/Encrypted.tsx
  • apps/meteor/client/views/room/composer/hooks/useComposerBoxPopup.ts
  • apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx
  • apps/meteor/client/views/room/contextualBar/UserInfo/UserInfoActions.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useUserMediaCallAction.spec.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useUserMediaCallAction.ts
  • apps/meteor/client/views/room/hooks/useUserInfoActions/index.ts
  • apps/meteor/client/views/room/hooks/useUserInfoActions/useUserInfoActions.ts
  • apps/meteor/ee/server/apps/communication/uikit.ts
  • apps/meteor/ee/server/services/CHANGELOG.md
  • apps/meteor/ee/server/services/package.json
  • apps/meteor/jest.config.ts
  • apps/meteor/package.json
  • apps/meteor/packages/.eslintrc.json
  • apps/meteor/packages/rocketchat-i18n/.eslintrc.json
  • apps/meteor/server/cron/userDataDownloads.ts
  • apps/meteor/server/lib/pushConfig.ts
  • apps/meteor/server/models.ts
  • apps/meteor/server/modules/core-apps/banner.module.ts
  • apps/meteor/server/modules/core-apps/cloudAnnouncements.module.ts
  • apps/meteor/server/modules/core-apps/cloudSubscriptionCommunication.module.ts
  • apps/meteor/server/modules/core-apps/mention.module.ts
  • apps/meteor/server/modules/core-apps/nps.module.ts
  • apps/meteor/server/modules/core-apps/videoconf.module.ts
  • apps/meteor/server/modules/notifications/notifications.module.ts
  • apps/meteor/server/modules/streamer/streamer.module.ts
  • apps/meteor/server/services/authorization/canAccessRoom.ts
  • apps/meteor/server/services/authorization/service.ts
  • apps/meteor/server/services/messages/service.ts
  • apps/meteor/server/services/push/logger.ts
  • apps/meteor/server/services/push/service.ts
  • apps/meteor/server/services/push/tokenManagement/findDocumentToUpdate.ts
  • apps/meteor/server/services/push/tokenManagement/registerPushToken.ts
  • apps/meteor/server/services/team/service.ts
  • apps/meteor/server/services/uikit-core-app/service.ts
  • apps/meteor/server/services/video-conference/service.ts
  • apps/meteor/tests/data/uploads.helper.ts
  • apps/meteor/tests/e2e/.eslintrc.json
  • apps/meteor/tests/e2e/channel-management.spec.ts
  • apps/meteor/tests/e2e/e2e-encryption/e2ee-encrypted-channels.spec.ts
  • apps/meteor/tests/e2e/e2e-encryption/e2ee-encryption-decryption.spec.ts
  • apps/meteor/tests/e2e/e2e-encryption/e2ee-file-encryption.spec.ts
  • apps/meteor/tests/e2e/federation/page-objects/fragments/home-content.ts
  • apps/meteor/tests/e2e/file-upload.spec.ts
  • apps/meteor/tests/e2e/files-management.spec.ts
  • apps/meteor/tests/e2e/message-actions.spec.ts
  • apps/meteor/tests/e2e/message-composer.spec.ts
  • apps/meteor/tests/e2e/messaging.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-canned-responses-usage.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-custom-field-usage.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-send-pdf-transcript.spec.ts
  • apps/meteor/tests/e2e/page-objects/encrypted-room.ts
  • apps/meteor/tests/e2e/page-objects/fragments/composer.ts
  • apps/meteor/tests/e2e/page-objects/fragments/edit-room-flextab.ts
  • apps/meteor/tests/e2e/page-objects/fragments/home-content.ts
  • apps/meteor/tests/e2e/page-objects/fragments/home-flextab-pruneMessages.ts
  • apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts
  • apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts
  • apps/meteor/tests/e2e/page-objects/fragments/message.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-info.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-transcript.ts
  • apps/meteor/tests/e2e/prune-messages.spec.ts
  • apps/meteor/tests/e2e/quote-attachment.spec.ts
  • apps/meteor/tests/e2e/register.spec.ts
  • apps/meteor/tests/e2e/system-messages.spec.ts
  • apps/meteor/tests/e2e/team-management.spec.ts
  • apps/meteor/tests/e2e/threads.spec.ts
  • apps/meteor/tests/e2e/utils/omnichannel/custom-field.ts
  • apps/meteor/tests/end-to-end/api/channels.ts
  • apps/meteor/tests/end-to-end/api/commands.ts
  • apps/meteor/tests/end-to-end/api/custom-sounds.ts
  • apps/meteor/tests/end-to-end/api/direct-message.ts
  • apps/meteor/tests/end-to-end/api/emoji-custom.ts
  • apps/meteor/tests/end-to-end/api/groups.ts
  • apps/meteor/tests/end-to-end/api/livechat/07-queue.ts
  • apps/meteor/tests/end-to-end/api/methods.ts
  • apps/meteor/tests/end-to-end/api/push.ts
  • apps/meteor/tests/end-to-end/api/rooms.ts
  • apps/meteor/tests/end-to-end/api/users.ts
  • apps/meteor/tests/unit/app/lib/server/functions/extractMentionsFromMessageAST.spec.ts
  • apps/meteor/tests/unit/server/modules/streamer/streamer.module.spec.ts
  • apps/meteor/tests/unit/server/services/team/service.tests.ts
  • apps/uikit-playground/.eslintrc.json
  • apps/uikit-playground/.prettierrc
  • apps/uikit-playground/CHANGELOG.md
  • apps/uikit-playground/index.html
  • apps/uikit-playground/package.json
  • apps/uikit-playground/src/App.tsx
  • apps/uikit-playground/src/Components/CodeEditor/BlockEditor.tsx
  • apps/uikit-playground/src/Components/CodeEditor/Extensions/Extensions.ts
  • apps/uikit-playground/src/Components/CodeEditor/Extensions/HighlightStyle.ts
  • apps/uikit-playground/src/Components/CodeEditor/Extensions/basicSetup.ts
  • apps/uikit-playground/src/Components/CodeEditor/Extensions/payloadLinter.ts
  • apps/uikit-playground/src/Components/CodeEditor/Extensions/theme.ts
  • apps/uikit-playground/src/Components/CodeEditor/Parser/parsePayload.ts
  • apps/uikit-playground/src/Components/CodeEditor/PreviewEditor.tsx
  • apps/uikit-playground/src/Components/CodeEditor/index.tsx
  • apps/uikit-playground/src/Components/ComponentSideBar/ScrollableSideBar.tsx
  • apps/uikit-playground/src/Components/ComponentSideBar/SideBar.tsx
  • apps/uikit-playground/src/Components/ComponentSideBar/SliderBtn.tsx
  • apps/uikit-playground/src/Components/CreateNewScreen/CreateNewScreenContainer.tsx
  • apps/uikit-playground/src/Components/CreateNewScreen/ScreenThumbnail.tsx
  • apps/uikit-playground/src/Components/Draggable/DraggableList.tsx
  • apps/uikit-playground/src/Components/Draggable/DraggableListItem.tsx
  • apps/uikit-playground/src/Components/DropDown/DropDown.tsx
  • apps/uikit-playground/src/Components/DropDown/Items.tsx
  • apps/uikit-playground/src/Components/DropDown/ItemsIcon.tsx
  • apps/uikit-playground/src/Components/DropDown/itemsStyle.ts
  • apps/uikit-playground/src/Components/DropDown/types.ts
  • apps/uikit-playground/src/Components/FlowContainer/ConnectionLine.tsx
  • apps/uikit-playground/src/Components/FlowContainer/ControlButtons/ControlButtons.tsx
  • apps/uikit-playground/src/Components/FlowContainer/ControlButtons/index.ts
  • apps/uikit-playground/src/Components/FlowContainer/FlowContainer.tsx
  • apps/uikit-playground/src/Components/FlowContainer/UIKitWrapper/UIKitWrapper.tsx
  • apps/uikit-playground/src/Components/FlowContainer/UIKitWrapper/index.ts
  • apps/uikit-playground/src/Components/FlowContainer/utils.ts
  • apps/uikit-playground/src/Components/HomeContainer/HomeContainer.tsx
  • apps/uikit-playground/src/Components/HomeContainer/ProjectsList/ProjectsList.tsx
  • apps/uikit-playground/src/Components/HomeContainer/ProjectsList/ProjectsThumbnail.tsx
  • apps/uikit-playground/src/Components/NavBar/BurgerIcon/BurgerIcon.tsx
  • apps/uikit-playground/src/Components/NavBar/BurgerIcon/Line.tsx
  • apps/uikit-playground/src/Components/NavBar/BurgerIcon/Wrapper.tsx
  • apps/uikit-playground/src/Components/NavBar/Divider.tsx
  • apps/uikit-playground/src/Components/NavBar/Logo.tsx
  • apps/uikit-playground/src/Components/NavBar/NavBar.tsx
  • apps/uikit-playground/src/Components/NavBar/RightNavBtn.tsx
  • apps/uikit-playground/src/Components/PersistStore/PersistStore.tsx
  • apps/uikit-playground/src/Components/Preview/Display/Display.tsx
  • apps/uikit-playground/src/Components/Preview/Display/Surface/BannerSurface.tsx
  • apps/uikit-playground/src/Components/Preview/Display/Surface/ContextualBarSurface.tsx
  • apps/uikit-playground/src/Components/Preview/Display/Surface/MessageSurface.tsx
  • apps/uikit-playground/src/Components/Preview/Display/Surface/ModalSurface.tsx

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@changeset-bot
Copy link

changeset-bot bot commented Mar 3, 2026

🦋 Changeset detected

Latest commit: 468fd59

The changes in this PR will be included in the next version bump.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@julio-rocketchat julio-rocketchat marked this pull request as draft March 3, 2026 10:35
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

9 issues found across 866 files

Note: This PR contains a large number of files. cubic only reviews up to 75 files per PR, so some files may not have been reviewed.

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="apps/meteor/app/api/server/v1/commands.ts">

<violation number="1" location="apps/meteor/app/api/server/v1/commands.ts:79">
P2: `commands.get` always returns `params`, but `cmd.params` can be `undefined`, which violates the declared response schema (`params` must be string when present). Return `params` only when it is a string.</violation>
</file>

<file name=".github/workflows/dedupe-issues.yml">

<violation number="1" location=".github/workflows/dedupe-issues.yml:35">
P2: The Statsig "duplicate_comment_added" event is logged unconditionally (`if: always()`), so failures/non-comment runs are recorded as successful duplicate comments.</violation>

<violation number="2" location=".github/workflows/dedupe-issues.yml:59">
P2: `jq` numeric coercion on a string input can hard-fail the workflow for manual dispatches with non-numeric `issue_number` values.</violation>
</file>

<file name="apps/meteor/app/api/server/ApiClass.ts">

<violation number="1" location="apps/meteor/app/api/server/ApiClass.ts:832">
P1: Bug: When no `x-auth-token` header is present (unauthenticated routes), `authToken` is `null`, so `String(null)` produces `"null"` and `_hashLoginToken` hashes that meaningless string. The old `&&` guard prevented this. Restore the guard to avoid setting a bogus token on unauthenticated requests.</violation>
</file>

<file name="apps/meteor/app/api/server/v1/emoji-custom.ts">

<violation number="1" location="apps/meteor/app/api/server/v1/emoji-custom.ts:170">
P2: `API.v1.failure()` without an error payload does not match the new 400 AJV schema, so error responses can fail validation on this endpoint.</violation>
</file>

<file name=".github/workflows/auto-close-duplicates.yml">

<violation number="1" location=".github/workflows/auto-close-duplicates.yml:2">
P1: `description` is not a valid top-level key in a GitHub Actions workflow, which can make the workflow invalid and prevent it from running.</violation>
</file>

<file name="apps/meteor/app/api/server/v1/im.ts">

<violation number="1" location="apps/meteor/app/api/server/v1/im.ts:162">
P1: `dm.close`/`im.close` now incorrectly require `userId` in the request body, which breaks existing clients and adds an unused parameter. These endpoints should only require `roomId` and use authenticated `this.userId`.</violation>
</file>

<file name="apps/meteor/app/api/server/helpers/getUserInfo.ts">

<violation number="1" location="apps/meteor/app/api/server/helpers/getUserInfo.ts:30">
P2: This adds duplicate version-update banner filtering logic instead of reusing a shared helper, increasing maintenance risk and drift.

(Based on your team's feedback about preferring existing helpers over duplicated logic.) [FEEDBACK_USED]</violation>
</file>

<file name="apps/meteor/app/api/server/definition.ts">

<violation number="1" location="apps/meteor/app/api/server/definition.ts:229">
P1: Unauthenticated route context now types `user` as non-nullable, but runtime still assigns `null`; restore nullable typing to prevent unsafe assumptions.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

this.user = user!;
this.userId = this.user?._id;
const authToken = this.request.headers.get('x-auth-token');
this.token = Accounts._hashLoginToken(String(authToken))!;
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Bug: When no x-auth-token header is present (unauthenticated routes), authToken is null, so String(null) produces "null" and _hashLoginToken hashes that meaningless string. The old && guard prevented this. Restore the guard to avoid setting a bogus token on unauthenticated requests.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/app/api/server/ApiClass.ts, line 832:

<comment>Bug: When no `x-auth-token` header is present (unauthenticated routes), `authToken` is `null`, so `String(null)` produces `"null"` and `_hashLoginToken` hashes that meaningless string. The old `&&` guard prevented this. Restore the guard to avoid setting a bogus token on unauthenticated requests.</comment>

<file context>
@@ -825,13 +825,11 @@ export class APIClass<TBasePath extends string = '', TOperations extends Record<
+						this.user = user!;
+						this.userId = this.user?._id;
+						const authToken = this.request.headers.get('x-auth-token');
+						this.token = Accounts._hashLoginToken(String(authToken))!;
 
 						const shouldPreventAnonymousRead = !this.user && options.authOrAnonRequired && !settings.get('Accounts_AllowAnonymousRead');
</file context>
Suggested change
this.token = Accounts._hashLoginToken(String(authToken))!;
this.token = (authToken && Accounts._hashLoginToken(String(authToken)))!;
Fix with Cubic

@@ -0,0 +1,31 @@
name: Auto-close duplicate issues
description: Auto-closes issues that are duplicates of existing issues
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: description is not a valid top-level key in a GitHub Actions workflow, which can make the workflow invalid and prevent it from running.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/auto-close-duplicates.yml, line 2:

<comment>`description` is not a valid top-level key in a GitHub Actions workflow, which can make the workflow invalid and prevent it from running.</comment>

<file context>
@@ -0,0 +1,31 @@
+name: Auto-close duplicate issues
+description: Auto-closes issues that are duplicates of existing issues
+on:
+  schedule:
</file context>
Suggested change
description: Auto-closes issues that are duplicates of existing issues
run-name: Auto-close duplicate issues
Fix with Cubic

type: 'string',
},
},
required: ['roomId', 'userId'],
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: dm.close/im.close now incorrectly require userId in the request body, which breaks existing clients and adds an unused parameter. These endpoints should only require roomId and use authenticated this.userId.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/app/api/server/v1/im.ts, line 162:

<comment>`dm.close`/`im.close` now incorrectly require `userId` in the request body, which breaks existing clients and adds an unused parameter. These endpoints should only require `roomId` and use authenticated `this.userId`.</comment>

<file context>
@@ -144,6 +149,43 @@ const dmDeleteEndpointsProps = {
+			type: 'string',
+		},
+	},
+	required: ['roomId', 'userId'],
+	additionalProperties: false,
+};
</file context>
Suggested change
required: ['roomId', 'userId'],
required: ['roomId'],
Fix with Cubic

: {
user?: IUser | null;
userId?: string | undefined;
user?: IUser;
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Unauthenticated route context now types user as non-nullable, but runtime still assigns null; restore nullable typing to prevent unsafe assumptions.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/app/api/server/definition.ts, line 229:

<comment>Unauthenticated route context now types `user` as non-nullable, but runtime still assigns `null`; restore nullable typing to prevent unsafe assumptions.</comment>

<file context>
@@ -226,8 +226,8 @@ export type ActionThis<TMethod extends Method, TPathPattern extends PathPattern,
 		: {
-				user?: IUser | null;
-				userId?: string | undefined;
+				user?: IUser;
+				userId?: string;
 				readonly token?: string;
</file context>
Fix with Cubic

command: {
command: cmd.command,
description: cmd.description,
params: cmd.params,
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: commands.get always returns params, but cmd.params can be undefined, which violates the declared response schema (params must be string when present). Return params only when it is a string.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/app/api/server/v1/commands.ts, line 79:

<comment>`commands.get` always returns `params`, but `cmd.params` can be `undefined`, which violates the declared response schema (`params` must be string when present). Return `params` only when it is a string.</comment>

<file context>
@@ -1,35 +1,86 @@
+			command: {
+				command: cmd.command,
+				description: cmd.description,
+				params: cmd.params,
+				clientOnly: cmd.clientOnly,
+				providesPreview: cmd.providesPreview,
</file context>
Suggested change
params: cmd.params,
...(typeof cmd.params === 'string' ? { params: cmd.params } : {}),
Fix with Cubic

value: 1,
metadata: {
repository: $repo,
issue_number: ($issue_number | tonumber),
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: jq numeric coercion on a string input can hard-fail the workflow for manual dispatches with non-numeric issue_number values.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/dedupe-issues.yml, line 59:

<comment>`jq` numeric coercion on a string input can hard-fail the workflow for manual dispatches with non-numeric `issue_number` values.</comment>

<file context>
@@ -0,0 +1,83 @@
+                value: 1,
+                metadata: {
+                  repository: $repo,
+                  issue_number: ($issue_number | tonumber),
+                  triggered_by: $triggered_by,
+                  workflow_run_id: "${{ github.run_id }}",
</file context>
Fix with Cubic

GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Log duplicate comment event to Statsig
if: always()
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The Statsig "duplicate_comment_added" event is logged unconditionally (if: always()), so failures/non-comment runs are recorded as successful duplicate comments.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/dedupe-issues.yml, line 35:

<comment>The Statsig "duplicate_comment_added" event is logged unconditionally (`if: always()`), so failures/non-comment runs are recorded as successful duplicate comments.</comment>

<file context>
@@ -0,0 +1,83 @@
+            GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Log duplicate comment event to Statsig
+        if: always()
+        env:
+          STATSIG_API_KEY: ${{ secrets.STATSIG_API_KEY }}
</file context>
Fix with Cubic

await uploadEmojiCustomWithBuffer(this.userId, fileBuffer, mimetype, emojiData);
} catch (err) {
SystemLogger.error({ err });
return API.v1.failure();
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: API.v1.failure() without an error payload does not match the new 400 AJV schema, so error responses can fail validation on this endpoint.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/app/api/server/v1/emoji-custom.ts, line 170:

<comment>`API.v1.failure()` without an error payload does not match the new 400 AJV schema, so error responses can fail validation on this endpoint.</comment>

<file context>
@@ -103,45 +104,73 @@ API.v1.addRoute(
+			await uploadEmojiCustomWithBuffer(this.userId, fileBuffer, mimetype, emojiData);
+		} catch (err) {
+			SystemLogger.error({ err });
+			return API.v1.failure();
+		}
 
</file context>
Fix with Cubic

return accumulator;
};

const filterOutdatedVersionUpdateBanners = (banners: NonNullable<IUser['banners']>): IUser['banners'] => {
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This adds duplicate version-update banner filtering logic instead of reusing a shared helper, increasing maintenance risk and drift.

(Based on your team's feedback about preferring existing helpers over duplicated logic.)

View Feedback

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/app/api/server/helpers/getUserInfo.ts, line 30:

<comment>This adds duplicate version-update banner filtering logic instead of reusing a shared helper, increasing maintenance risk and drift.

(Based on your team's feedback about preferring existing helpers over duplicated logic.) </comment>

<file context>
@@ -25,6 +27,23 @@ const getUserPreferences = async (me: IUser): Promise<Record<string, unknown>> =
 	return accumulator;
 };
 
+const filterOutdatedVersionUpdateBanners = (banners: NonNullable<IUser['banners']>): IUser['banners'] => {
+	return Object.fromEntries(
+		Object.entries(banners).filter(([id]) => {
</file context>
Fix with Cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.