Skip to content

Release 8.8.0 - #41894

Open
rocketchat-github-ci wants to merge 140 commits into
masterfrom
release-8.8.0
Open

Release 8.8.0#41894
rocketchat-github-ci wants to merge 140 commits into
masterfrom
release-8.8.0

Conversation

@rocketchat-github-ci

@rocketchat-github-ci rocketchat-github-ci commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

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

8.8.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.hasOneRole and when.hasAllRoles filters of an app action button

  • (#41474) Changes the default apps-engine runtime backend from deno to node. The previous behavior can be restored by setting the environment variable APPS_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-enterprise or saml-enterprise module, 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 with encrypted: false (e.g. via groups.create) with the error error-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 the auditing license) covering the audit flows that previously only existed as DDP methods:

    • GET /v1/audit.auditions?startDate=&endDate={ auditions: IAuditLog[] } (replaces auditGetAuditions, can-audit-log)
    • POST /v1/audit.messages body { rid?, startDate, endDate, users, msg, type, visitor?, agent? }{ messages: IMessage[] } (replaces auditGetMessages, can-audit)
    • POST /v1/audit.omnichannelMessages body { startDate, endDate, users, msg, type, visitor?, agent? }{ messages: IMessage[] } (replaces auditGetOmnichannelMessages, can-audit)

    Each endpoint is rate-limited at 10 requests / 60s (matching the DDP DDPRateLimiter rules) and writes the same AuditLog entry 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.readThread body { tmid }, which marks a single thread as read for the caller — clearing the thread from the subscription's unread list and running the beforeReadMessages / afterReadMessages callbacks. It replaces the readThreads DDP method, which stays registered with a deprecation log pointing at the new route until 9.0.0.

    POST /v1/subscriptions.read does 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.removeCustomOAuth body { name } → removes all Accounts_OAuth_Custom-<Name>-* setting documents (replaces the deprecated removeOAuthService DDP method).
    • POST /v1/settings.refreshOAuthServices (no body) → re-reads ServiceConfiguration entries from settings (replaces the deprecated refreshOAuthService DDP method).

    Both endpoints reuse the add-oauth-service permission and twoFactorRequired gates that the DDP methods already enforced. addOAuthService was already covered by the existing POST /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 } (replaces 2fa:enable)
    • POST /v1/users.disableTotp body { code }{ disabled } (replaces 2fa:disable)
    • POST /v1/users.validateTotp body { code }{ codes } (replaces 2fa:validateTempToken; also rotates non-PAT login tokens server-side)
    • POST /v1/users.regenerateTotpCodes body { code }{ codes } (replaces 2fa:regenerateCodes)
    • GET /v1/users.totpCodesRemaining{ remaining } (replaces 2fa:checkCodesRemaining)

    users.enableTotp and users.validateTotp require 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 fromTs query parameter to chat.syncMessages, so it can be used as a replacement for the deprecated loadMissedMessages DDP method. It bounds the sync window and must be used together with lastUpdate; sending it with cursor pagination is rejected instead of being ignored.

Patch Changes

  • (#41777) Fixed app action buttons never matching a role scoped to Subscriptionsowner, 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 whole 23:59 minute — 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 Channel when Log_Level is set to 2.

  • (#40734) Migrates the TwoFactorTOTP account settings page from the five 2fa:* 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 three auditGet* 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) to useEndpoint (REST):

    • addOAuthService → existing POST /v1/settings.addCustomOAuth
    • removeOAuthService → new POST /v1/settings.removeCustomOAuth
    • refreshOAuthService → new POST /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 the readThreads DDP method to POST /v1/chat.readThread, and pointed the admin "send a test push to my user" setting at POST /v1/push.test instead of the push_test DDP method. Both DDP methods stay registered with deprecation logs pointing at the new routes until 9.0.0.

    POST /v1/push.test now also returns the message translation key and its params, matching what the DDP method returned, so the admin setting still reports how many devices the test reached.

  • (#41653) Bumps patch-level dependency updates: react, react-dom and react-is to 19.2.8, ws to 8.21.3, nodemailer to 9.0.5, mailparser to 3.9.15, google-libphonenumber to 3.2.46, twitter-api-v2 to 1.29.1, ip-range-check to 0.2.1, esbuild to 0.28.2, @octokit/core to 7.0.7 and @octokit/plugin-throttling to 11.0.5, plus build and test tooling (@swc/core, ts-jest, rollup, html-webpack-plugin, @vitejs/plugin-react, @testing-library/user-event, and the @types/* packages). No behavior changes are expected.

  • (#41876) Fixes room search (spotlight) failing for anonymous visitors when "Allow Anonymous Read" is enabled

  • (#41481) Adds an Import IdP metadata option to SAML settings that fetches the Identity Provider metadata from a URL and prefills the matching setting fields — certificate, entry point and IDP SLO redirect URL, plus identifier format on Enterprise — for the admin to review before saving.

  • (#41699) Adds per-client rate limiting to the unauthenticated sendForgotPasswordEmail method, matching the REST users.forgotPassword endpoint

  • (#41805) Fixes the issue where the message list kept jumping to the latest messages instead of restoring the previous position when switching channels.

  • (#41707) Fixes thread replies keeping the "sent" single checkmark after everyone had read the thread, only switching to the "viewed" double checkmark once a new message was sent in that thread.

  • (#41744) Fixes canAccessRoom throwing when the user's _id is undefined

  • (#41814) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)

  • (#41749) Replace http with serverFetch in downloadPublicImportFile to add SSRF protection

  • (#41711) Fixes "Jump to message" not navigating to the message's room when the message belongs to a room other than the currently opened one (e.g. global search results).

  • (#41717) Fixes federation endpoints rejecting valid requests, which broke:

    • room history backfill
    • image thumbnails
    • room message pagination
    • accepting an invite from another homeserver
  • (#41573) Marks the user session as logged out in the Sessions collection when logging out via POST /v1/logout. Previously the session cleanup relied on an indirect chain through watch.usersAccounts.onLogout that could be broken by a race condition, leaving orphaned sessions visible in Device Manager.

  • (#41595) Fixes special characters not being escaped in the visitor name shown in the Omnichannel queue side panel's message preview

  • (#41683) Fixed the sidebar not scrolling when its content is taller than the viewport — the inner wrapper was pinned to the scroll container's height instead of using it as a minimum, so overflowing content was clipped

  • (#41755) Fixes POST /v1/banners.dismiss failing with Banner not found for banners stored in the user's record (such as the version update ones), which were never marked as read. The endpoint now marks them as read as the deprecated banner/dismiss method did, and only fails when the banner does not exist in the banners collection nor in the user's record.

  • (#41673) Fixes the messages count displayed on a discussion taking into account system messages which are hidden inside of it, making the count higher than the number of messages actually visible after opening the discussion. The count now excludes every system message type hidden either globally or on the discussion itself. A hint was also added to the Hide system messages option of the room edit panel clarifying that the hidden messages are not included in the count.

  • (#41484) Fixes an issue where deleted thread messages display as empty in thread context

  • (#41504) Fixed saving a livechat tag failing with "Invalid response" — the model mutated its return value with _updatedAt, which the endpoint response schema rejects

  • (#41702) Fixes discussion parent message count and last-message timestamp out of sync with the discussion

  • (#41763) Drops @rocket.chat/string-helpers in favor of @rocket.chat/tools

  • (#41574) Fixes reaction list modal showing blank entries (mobile) or usernames (web) instead of real names when UI_Use_Real_Name is enabled. The broadcast pipeline now enriches reactions with display names via batch query.

  • (#41585) Fixes users being set back to online after a websocket reconnection (connection drop, network change, server restart) even though they had gone idle and never interacted with the UI again. The client now tracks the last UI interaction across connection drops and restates the away status as soon as the reconnected session is authenticated, instead of assuming the new session is online and restarting the idle countdown from scratch.

  • (#41631) Fixes text rendering without line breaks when its length is higher than the value of the MESSAGE_MAX_PARSE_LENGTH environment variable

  • Updated dependencies [126e446, b27e38c, e677905, b4557f5, 5a3fd52, 097884f, 4947601, 0869925, 7b7f88f, 18f5eb4, b89a8d4, 9b66ee2, 6dc66fb, 2052886, 5deefe2, 8984df8, 6edcdd7, 7f9592d, a9f3e6c, 742009a]:
    • @rocket.chat/apps-engine@1.66.0-rc.0
    • @rocket.chat/apps@0.9.0-rc.0
    • @rocket.chat/i18n@4.0.0-rc.0
    • @rocket.chat/pdf-worker@0.3.36-rc.0
    • @rocket.chat/rest-typings@8.8.0-rc.0
    • @rocket.chat/model-typings@2.5.0-rc.0
    • @rocket.chat/core-typings@8.8.0-rc.0
    • @rocket.chat/ui-client@34.0.0-rc.0
    • @rocket.chat/models@2.5.0-rc.0
    • @rocket.chat/media-calls@0.6.0-rc.0
    • @rocket.chat/media-signaling@1.2.0-rc.0
    • @rocket.chat/ui-voip@24.0.0-rc.0
    • @rocket.chat/core-services@0.16.0-rc.0
    • @rocket.chat/federation-matrix@0.2.1-rc.0
    • @rocket.chat/message-types@0.1.2-rc.0
    • @rocket.chat/tools@0.4.0-rc.0
    • @rocket.chat/omnichannel-services@0.3.57-rc.0
    • @rocket.chat/abac@0.3.2-rc.0
    • @rocket.chat/ui-contexts@34.0.0-rc.0
    • @rocket.chat/web-ui-registration@34.0.0-rc.0
    • @rocket.chat/license@1.2.0
    • @rocket.chat/omni-core-ee@0.0.25-rc.0
    • @rocket.chat/ai-search@0.2.0
    • @rocket.chat/api-client@0.2.56
    • @rocket.chat/base64@1.0.14
    • @rocket.chat/ddp-client@1.1.2-rc.0
    • @rocket.chat/emitter@0.33.0
    • @rocket.chat/fuselage-ui-kit@34.0.0-rc.0
    • @rocket.chat/gazzodown@34.0.0-rc.0
    • @rocket.chat/http-router@7.9.23
    • @rocket.chat/jwt@0.2.1
    • @rocket.chat/memo@0.31.25
    • @rocket.chat/message-parser@0.32.0
    • @rocket.chat/mongo-adapter@0.0.3
    • @rocket.chat/mp3-encoder@0.31.26
    • @rocket.chat/omni-core@0.1.4-rc.0
    • @rocket.chat/password-policies@0.1.1
    • @rocket.chat/patch-injection@0.0.2
    • @rocket.chat/random@1.2.3
    • @rocket.chat/sha256@1.0.13
    • @rocket.chat/ui-composer@5.0.0-rc.0
    • @rocket.chat/ui-kit@1.1.0
    • @rocket.chat/ui-video-conf@34.0.0-rc.0
    • @rocket.chat/presence@0.3.2-rc.0
    • @rocket.chat/cron@0.1.60-rc.0
    • @rocket.chat/instance-status@0.1.60-rc.0
    • @rocket.chat/server-fetch@0.2.4-rc.0
    • @rocket.chat/network-broker@0.2.39-rc.0
    • @rocket.chat/ui-avatar@30.0.0-rc.0

Review in cubic

ggazzo and others added 30 commits July 20, 2026 22:18
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…tion hooks from roomCoordinator and ui-contexts (#41508)

Co-authored-by: Matheus Cardoso <matheus@cardo.so>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…e deflakes and Playwright GitHub annotations) (#41504)
…41484)

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Matheus Cardoso <matheus@cardo.so>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Douglas Fabris <devfabris@gmail.com>
Co-authored-by: Tasso Evangelista <tasso.evangelista@rocket.chat>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Kevin Aleman <kaleman960@gmail.com>
dougfabris and others added 13 commits August 19, 2026 19:29
…eturning (#41805)

Co-authored-by: gabriellsh <40830821+gabriellsh@users.noreply.github.com>
Co-authored-by: Tasso Evangelista <tasso.evangelista@rocket.chat>
Co-authored-by: Kevin Aleman <kaleman960@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…nel (#41795)

Signed-off-by: Abhinav Kumar <abhinav@avitechlab.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Kevin Aleman <kaleman960@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Matheus Cardoso <matheus@cardo.so>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rocketchat-github-ci
rocketchat-github-ci requested review from a team as code owners August 20, 2026 21:43
@dionisio-bot

dionisio-bot Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

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

@changeset-bot

changeset-bot Bot commented Aug 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 1d6b435

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

This PR includes changesets to release 3 packages
Name Type
@rocket.chat/meteor Patch
@rocket.chat/core-typings Patch
@rocket.chat/rest-typings Patch

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

@hacktron-app

hacktron-app Bot commented Aug 20, 2026

Copy link
Copy Markdown

Hacktron Security Check - Skipped

Reason: This PR exceeds Hacktron's 200-file review cap and will not be scanned. Split the PR into smaller changes for review coverage.

Split the PR into smaller commits or open separate PRs for unrelated changes.

@CLAassistant

CLAassistant commented Aug 20, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
19 out of 20 committers have signed the CLA.

✅ ricardogarim
✅ d-gubert
✅ pierre-lehnen-rc
✅ tassoevan
✅ yash-rajpal
✅ abhinavkrin
✅ rodrigok
✅ gabriellsh
✅ ggazzo
✅ rajanpanth
✅ nazabucciarelli
✅ dougfabris
✅ juliajforesti
✅ jonasflorencio
✅ yasnagat
✅ sampaiodiego
✅ KevLehman
✅ julio-rocketchat
✅ milton-rucks
❌ Aleksander Nicacio da Silva


Aleksander Nicacio da Silva seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 1487 files, which is 1187 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4463781f-914d-4b83-b1b7-5f1d27002de6

📥 Commits

Reviewing files that changed from the base of the PR and between dd2f20f and 1d6b435.

⛔ Files ignored due to path filters (64)
  • .github/actions/update-version-durability/package-lock.json is excluded by !**/package-lock.json
  • .yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch is excluded by !**/.yarn/**
  • .yarn/patches/eslint-plugin-react-npm-7.37.5-d03f6b6543.patch is excluded by !**/.yarn/**
  • .yarn/patches/image-size-npm-1.2.1-e285f3c080.patch is excluded by !**/.yarn/**
  • .yarn/releases/yarn-4.12.0.cjs is excluded by !**/.yarn/**
  • .yarn/releases/yarn-4.18.0.cjs is excluded by !**/.yarn/**
  • apps/meteor/client/components/ABAC/ABACUpsellModal/__snapshots__/ABACUpsellModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/components/CreateDiscussion/__snapshots__/CreateDiscussion.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/components/GenericUpsellModal/__snapshots__/GenericUpsellModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/components/InvitationBadge/__snapshots__/InvitationBadge.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/components/UserInfo/__snapshots__/UserInfo.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/components/message/toolbar/items/actions/Timestamp/TimestampPicker/__snapshots__/TimestampPicker.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/ABAC/ABACAttributesTab/__snapshots__/AttributesForm.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/ABAC/ABACRoomsTab/__snapshots__/DeleteRoomModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/ABAC/ABACRoomsTab/__snapshots__/RoomFormAttributeField.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/ABAC/ABACRoomsTab/__snapshots__/RoomFormAutocomplete.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/permissions/PermissionsTable/__snapshots__/PermissionsTable.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/settings/Setting/inputs/__snapshots__/RangeSettingInput.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/admin/subscription/components/cards/PlanCard/ManageLicenseModal/__snapshots__/ManageLicenseModal.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__/AppInfoField.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/e2e/EnterE2EPasswordModal/__snapshots__/EnterE2EPasswordModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppInstances/__snapshots__/AppInstances.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/__snapshots__/AppLogsFilterContextualBar.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/__snapshots__/AppLogsFilterExpanded.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/__snapshots__/DateTimeModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/__snapshots__/ExportLogsModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/__snapshots__/AppLogsItem.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/omnichannel/cannedResponses/contextualBar/CannedResponse/__snapshots__/CannedResponseList.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/omnichannel/components/OmnichannelBadges/__snapshots__/OmnichannelBadges.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/omnichannel/components/outboundMessage/components/OutboundMessageWizard/steps/__snapshots__/ReviewStep.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/omnichannel/modals/__snapshots__/ForwardChatModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/omnichannel/modals/__snapshots__/ReturnChatQueueModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/Header/__snapshots__/RoomInviteHeader.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/contextualBar/BannedUsers/__snapshots__/BannedUsers.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/contextualBar/Discussions/__snapshots__/DiscussionsList.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/contextualBar/Info/RoomInfo/ABAC/__snapshots__/RoomInfoABACSection.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/contextualBar/RoomFiles/__snapshots__/RoomFiles.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/contextualBar/RoomMembers/InviteUsers/__snapshots__/InviteUsers.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/contextualBar/RoomMembers/__snapshots__/RoomMembers.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/modals/FileUploadModal/__snapshots__/FileUploadModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/client/views/room/modals/ReadReceiptsModal/__snapshots__/ReadReceiptsModal.spec.tsx.snap is excluded by !**/*.snap
  • apps/meteor/public/images/featurePreview/sidebar-drafts.png is excluded by !**/*.png
  • packages/mp3-encoder/testdata/Left44100.wav is excluded by !**/*.wav
  • packages/mp3-encoder/testdata/Right44100.wav is excluded by !**/*.wav
  • packages/ui-client/src/components/AnnouncementBanner/__snapshots__/AnnouncementBanner.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-client/src/components/InfoPanel/__snapshots__/InfoPanel.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-client/src/components/Modal/GenericModal/__snapshots__/GenericModal.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-client/src/components/Wizard/__snapshots__/WizardActions.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-composer/src/MessageComposer/__snapshots__/MessageComposer.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-composer/src/MessageComposer/__snapshots__/MessageComposerHint.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-composer/src/MessageFooterCallout/__snapshots__/MessageFooterCallout.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-video-conf/src/VideoConfMessage/__snapshots__/VideoConfMessage.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-video-conf/src/VideoConfPopup/__snapshots__/VideoConfPopup.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-voip/src/components/Keypad/__snapshots__/Keypad.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-voip/src/components/PeerInfo/__snapshots__/PeerInfo.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-voip/src/components/Widget/__snapshots__/Widget.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-voip/src/views/MediaCallHistoryTable/__snapshots__/MediaCallHistoryTable.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-voip/src/views/MediaCallWidget/__snapshots__/MediaCallWidget.spec.tsx.snap is excluded by !**/*.snap
  • packages/ui-voip/src/views/PermissionFlow/__snapshots__/PermissionFlowModal.spec.tsx.snap is excluded by !**/*.snap
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (1487)
  • .changeset/abac-classification-banners.md
  • .changeset/app-action-button-role-names.md
  • .changeset/apps-action-button-room-scoped-roles.md
  • .changeset/apps-engine-runtime-default-node.md
  • .changeset/business-hour-finish-minute-inclusive.md
  • .changeset/chatty-socks-hear.md
  • .changeset/client-safe-errors-not-exceptions.md
  • .changeset/cute-pumas-trade.md
  • .changeset/ddp-migrate-batch5-totp-caller.md
  • .changeset/ddp-migrate-batch6-audit-callers.md
  • .changeset/ddp-migrate-batch7-oauth-caller.md
  • .changeset/ddp-migrate-readthreads-pushtest.md
  • .changeset/deprecate-community-saml-ldap.md
  • .changeset/deps-patch-bump-dependencies.md
  • .changeset/fifty-turkeys-judge.md
  • .changeset/fix-anonymous-spotlight-callers.md
  • .changeset/force-e2ee-private-rooms.md
  • .changeset/fruity-views-begin.md
  • .changeset/funny-wings-sell.md
  • .changeset/fuzzy-ends-refuse.md
  • .changeset/gold-jobs-help.md
  • .changeset/hungry-snakes-help.md
  • .changeset/jolly-poets-tan.md
  • .changeset/kind-peas-greet.md
  • .changeset/lazy-ends-drive.md
  • .changeset/lovely-bats-buy.md
  • .changeset/native-mcp-server.md
  • .changeset/odd-steaks-pull.md
  • .changeset/pink-dolls-flash.md
  • .changeset/plenty-lines-double.md
  • .changeset/pre.json
  • .changeset/proud-garlics-open.md
  • .changeset/real-zoos-cover.md
  • .changeset/rest-audit-endpoints.md
  • .changeset/rest-chat-read-thread.md
  • .changeset/rest-logout-session-cleanup.md
  • .changeset/rest-settings-oauth-admin.md
  • .changeset/rest-users-totp.md
  • .changeset/shy-actors-jump.md
  • .changeset/sidebar-scroll-min-height.md
  • .changeset/some-banks-spend.md
  • .changeset/sour-pugs-bow.md
  • .changeset/sparkly-regions-drive.md
  • .changeset/sync-messages-from-ts.md
  • .changeset/tags-save-updatedat.md
  • .changeset/tangy-cobras-beg.md
  • .changeset/thick-kings-type.md
  • .changeset/wet-turtles-fix.md
  • .changeset/wicked-moons-reconnect.md
  • .changeset/wide-laws-teach.md
  • .github/actions/update-version-durability/package.json
  • .github/dependabot.yml
  • .github/workflows/auto-close-duplicates.yml
  • .github/workflows/ci-code-check.yml
  • .github/workflows/ci-deploy-gh-pages.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/codeql-analysis.yml
  • .github/workflows/dedupe-issues.yml
  • .github/workflows/new-release.yml
  • .github/workflows/pr-update-description.yml
  • .github/workflows/publish-release.yml
  • .github/workflows/release-candidate.yml
  • .github/workflows/stale.yml
  • .github/workflows/todo.yml
  • .github/workflows/update-version-durability.yml
  • .yarnrc.yml
  • CLAUDE.md
  • apps/meteor/CHANGELOG.md
  • apps/meteor/app/apps/server/bridges/listeners.ts
  • apps/meteor/app/apps/server/bridges/livechat.ts
  • apps/meteor/app/apps/server/converters/codecs/contacts.ts
  • apps/meteor/app/apps/server/converters/codecs/departments.ts
  • apps/meteor/app/apps/server/converters/codecs/enums.ts
  • apps/meteor/app/apps/server/converters/codecs/index.ts
  • apps/meteor/app/apps/server/converters/codecs/mappedData.ts
  • apps/meteor/app/apps/server/converters/codecs/roles.ts
  • apps/meteor/app/apps/server/converters/codecs/rooms.ts
  • apps/meteor/app/apps/server/converters/codecs/settings.ts
  • apps/meteor/app/apps/server/converters/codecs/uploads.ts
  • apps/meteor/app/apps/server/converters/codecs/users.ts
  • apps/meteor/app/apps/server/converters/codecs/videoConferences.ts
  • apps/meteor/app/apps/server/converters/codecs/visitors.ts
  • apps/meteor/app/apps/server/converters/contacts.ts
  • apps/meteor/app/apps/server/converters/departments.ts
  • apps/meteor/app/apps/server/converters/messages.ts
  • apps/meteor/app/apps/server/converters/roles.ts
  • apps/meteor/app/apps/server/converters/rooms.ts
  • apps/meteor/app/apps/server/converters/settings.ts
  • apps/meteor/app/apps/server/converters/threads.ts
  • apps/meteor/app/apps/server/converters/transformMappedData.ts
  • apps/meteor/app/apps/server/converters/uploads.ts
  • apps/meteor/app/apps/server/converters/users.ts
  • apps/meteor/app/apps/server/converters/videoConferences.ts
  • apps/meteor/app/apps/server/converters/visitors.ts
  • apps/meteor/app/emoji-native/lib/getEmojiConfig.ts
  • apps/meteor/app/emoji/client/helpers.ts
  • apps/meteor/app/highlight-words/client/helper.ts
  • apps/meteor/app/markdown/lib/markdown.js
  • apps/meteor/app/markdown/lib/parser/original/code.js
  • apps/meteor/app/mentions/lib/MentionsParser.ts
  • apps/meteor/app/slashcommand-asciiarts/client/gimme.ts
  • apps/meteor/app/slashcommand-asciiarts/client/lenny.ts
  • apps/meteor/app/slashcommand-asciiarts/client/shrug.ts
  • apps/meteor/app/slashcommand-asciiarts/client/tableflip.ts
  • apps/meteor/app/slashcommand-asciiarts/client/unflip.ts
  • apps/meteor/app/ui-utils/client/lib/RoomHistoryManager.ts
  • apps/meteor/app/utils/client/lib/RestApiClient.ts
  • apps/meteor/app/utils/lib/getURL.ts
  • apps/meteor/app/utils/rocketchat.info
  • apps/meteor/client/apps/gameCenter/GameCenterInvitePlayersModal.tsx
  • apps/meteor/client/cachedStores/RoomsCachedStore.ts
  • apps/meteor/client/cachedStores/SubscriptionsCachedStore.ts
  • apps/meteor/client/components/CreateDiscussion/CreateDiscussion.tsx
  • apps/meteor/client/components/GazzodownText.tsx
  • apps/meteor/client/components/GenericNoResults/GenericNoResults.tsx
  • apps/meteor/client/components/MarkdownText.tsx
  • apps/meteor/client/components/Sidebar/Content.tsx
  • apps/meteor/client/components/Sidebar/Sidebar.tsx
  • apps/meteor/client/components/Sidebar/SidebarGenericItem.tsx
  • apps/meteor/client/components/UrlChangeModal.tsx
  • apps/meteor/client/components/UserAndRoomAutoCompleteMultiple/UserAndRoomAutoCompleteMultiple.tsx
  • apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultiple.tsx
  • apps/meteor/client/components/Wizard/WizardActions.tsx
  • apps/meteor/client/components/message/content/attachments/QuoteAttachment.tsx
  • apps/meteor/client/components/message/notification/AllMentionNotification.tsx
  • apps/meteor/client/components/message/notification/MeMentionNotification.tsx
  • apps/meteor/client/components/message/notification/MessageNotification.tsx
  • apps/meteor/client/components/message/notification/UnreadMessagesNotification.tsx
  • apps/meteor/client/components/message/toolbar/items/actions/Timestamp/TimestampPicker/index.ts
  • apps/meteor/client/components/message/toolbar/useReadReceiptsDetailsAction.tsx
  • apps/meteor/client/components/message/variants/threadPreview/ThreadMessagePreviewBody.tsx
  • apps/meteor/client/hooks/notification/useNotification.ts
  • apps/meteor/client/hooks/useApplyButtonFilters.spec.ts
  • apps/meteor/client/hooks/useApplyButtonFilters.ts
  • apps/meteor/client/lib/buildAuthDeeplinkURL.ts
  • apps/meteor/client/lib/chats/flows/processSlashCommand.ts
  • apps/meteor/client/lib/chats/flows/sendMessage.ts
  • apps/meteor/client/lib/customEmoji.ts
  • apps/meteor/client/lib/customOAuth/CustomOAuth.ts
  • apps/meteor/client/lib/e2ee/rocketchat.e2e.ts
  • apps/meteor/client/lib/errors/VisitorDoesNotExistError.ts
  • apps/meteor/client/lib/loginServices.ts
  • apps/meteor/client/lib/normalizeThreadMessage.spec.tsx
  • apps/meteor/client/lib/normalizeThreadMessage.tsx
  • apps/meteor/client/lib/parseMessageTextToAstMarkdown.spec.ts
  • apps/meteor/client/lib/parseMessageTextToAstMarkdown.ts
  • apps/meteor/client/lib/queryKeys.ts
  • apps/meteor/client/lib/toPlainTextRoot.spec.ts
  • apps/meteor/client/lib/toPlainTextRoot.ts
  • apps/meteor/client/lib/userPresence.spec.ts
  • apps/meteor/client/lib/userPresence.ts
  • apps/meteor/client/lib/utils/getConfig.ts
  • apps/meteor/client/lib/utils/getSubscriptionDraft.spec.ts
  • apps/meteor/client/lib/utils/getSubscriptionDraft.ts
  • apps/meteor/client/lib/utils/normalizeMessagePreview/getMessagePreview.spec.ts
  • apps/meteor/client/lib/utils/normalizeMessagePreview/getMessagePreview.ts
  • apps/meteor/client/lib/utils/normalizeMessagePreview/normalizeMessagePreview.ts
  • apps/meteor/client/lib/utils/threadMessageUtils.ts
  • apps/meteor/client/lib/utils/waitForElement.spec.ts
  • apps/meteor/client/lib/utils/waitForElement.ts
  • apps/meteor/client/meteor/login/saml.ts
  • apps/meteor/client/navbar/NavBarPagesGroup/NavBarItemCreateNew.tsx
  • apps/meteor/client/navbar/NavBarPagesGroup/NavBarItemSort.tsx
  • apps/meteor/client/navbar/NavBarPagesGroup/actions/CreateChannelModal.spec.tsx
  • apps/meteor/client/navbar/NavBarPagesGroup/actions/CreateChannelModal.tsx
  • apps/meteor/client/navbar/NavBarPagesGroup/actions/CreateTeamModal.spec.tsx
  • apps/meteor/client/navbar/NavBarPagesGroup/actions/CreateTeamModal.tsx
  • apps/meteor/client/navbar/NavBarPagesGroup/actions/useEncryptedRoomDescription.ts
  • apps/meteor/client/navbar/NavBarPagesGroup/hooks/useMatrixFederationItems.ts
  • apps/meteor/client/navbar/NavBarSearch/NavBarSearchFilterSuggestions.tsx
  • apps/meteor/client/navbar/NavBarSearch/NavBarSearchIntelligentSection.tsx
  • apps/meteor/client/navbar/NavBarSearch/NavBarSearchItem.tsx
  • apps/meteor/client/navbar/NavBarSearch/NavBarSearchItemSkeleton.tsx
  • apps/meteor/client/navbar/NavBarSearch/NavBarSearchItemWithData.tsx
  • apps/meteor/client/navbar/NavBarSearch/NavBarSearchMessageRow.tsx
  • apps/meteor/client/navbar/NavBarSearch/NavBarSearchUserRow.tsx
  • apps/meteor/client/navbar/NavBarSearch/hooks/useAISearchRooms.ts
  • apps/meteor/client/navbar/NavBarSearch/hooks/useSearchItems.ts
  • apps/meteor/client/navbar/NavBarSettingsToolbar/UserMenu/EditStatusModal.tsx
  • apps/meteor/client/navbar/NavBarSettingsToolbar/UserMenu/EditStatusVisibilityModal.tsx
  • apps/meteor/client/navbar/NavBarSettingsToolbar/UserMenu/hooks/useStatusItems.tsx
  • apps/meteor/client/navbar/NavBarSettingsToolbar/UserMenu/hooks/useStatusVisibilityModalHandler.tsx
  • apps/meteor/client/portals/SidebarPortal/SidebarPortal.tsx
  • apps/meteor/client/portals/SidebarPortal/SidebarPortalV2.tsx
  • apps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsx
  • apps/meteor/client/providers/TranslationProvider.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/sidebar/RoomList/RoomListCollapser.tsx
  • apps/meteor/client/sidebar/RoomList/RoomListRowWrapper.tsx
  • apps/meteor/client/sidebar/RoomList/SidebarItemTemplateWithData.tsx
  • apps/meteor/client/sidebar/RoomList/useSidebarListNavigation.ts
  • apps/meteor/client/sidebar/Sidebar.tsx
  • apps/meteor/client/sidebar/SidebarPortal.tsx
  • apps/meteor/client/sidebar/SidebarRegion.tsx
  • apps/meteor/client/sidebar/badges/UnreadBadge.tsx
  • apps/meteor/client/sidebar/footer/SidebarFooterDefault.tsx
  • apps/meteor/client/sidebar/footer/SidebarFooterWatermark.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomList.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomListEmptyPlaceholder.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomListErrorBoundary.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/FederatedRoomListItem.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/MatrixFederationManageServerModal.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/MatrixFederationRemoveServerList.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/MatrixFederationSearch.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/MatrixFederationSearchModalContent.tsx
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/index.ts
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/useInfiniteFederationSearchPublicRooms.ts
  • apps/meteor/client/sidebar/header/MatrixFederationSearch/useMatrixServerList.ts
  • apps/meteor/client/sidebar/hooks/useRoomList.ts
  • apps/meteor/client/sidebar/sections/AirGappedRestrictionBanner/AirGappedRestrictionBanner.tsx
  • apps/meteor/client/sidebar/sections/StatusDisabledBanner.tsx
  • apps/meteor/client/stories/contexts/QueryClientProviderMock.tsx
  • apps/meteor/client/views/account/profile/AccountProfileForm.tsx
  • apps/meteor/client/views/account/profile/getProfileInitialValues.ts
  • apps/meteor/client/views/account/security/TwoFactorTOTP.tsx
  • apps/meteor/client/views/admin/ABAC/ABACAttributesTab/AttributesContextualBar.tsx
  • apps/meteor/client/views/admin/ABAC/ABACAttributesTab/AttributesForm.stories.tsx
  • apps/meteor/client/views/admin/ABAC/ABACAttributesTab/AttributesForm.tsx
  • apps/meteor/client/views/admin/ABAC/ABACRoomsTab/RoomForm.tsx
  • apps/meteor/client/views/admin/ABAC/ABACRoomsTab/RoomsContextualBar.tsx
  • apps/meteor/client/views/admin/ABAC/ABACSettingTab/SettingsPage.tsx
  • apps/meteor/client/views/admin/aiCenter/AICenterOverview.tsx
  • apps/meteor/client/views/admin/aiCenter/AICenterRoute.tsx
  • apps/meteor/client/views/admin/aiCenter/AISettingsSection.tsx
  • apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusTable.tsx
  • apps/meteor/client/views/admin/engagementDashboard/channels/ChannelsOverview.tsx
  • apps/meteor/client/views/admin/engagementDashboard/dataView/colors.ts
  • apps/meteor/client/views/admin/engagementDashboard/messages/MessagesSentSection.tsx
  • apps/meteor/client/views/admin/engagementDashboard/users/ActiveUsersSection.tsx
  • apps/meteor/client/views/admin/engagementDashboard/users/ContentForDays.tsx
  • apps/meteor/client/views/admin/engagementDashboard/users/ContentForHours.tsx
  • apps/meteor/client/views/admin/engagementDashboard/users/NewUsersSection.tsx
  • apps/meteor/client/views/admin/engagementDashboard/users/UsersByTimeOfTheDaySection.tsx
  • apps/meteor/client/views/admin/import/PrepareChannels.tsx
  • apps/meteor/client/views/admin/import/PrepareUsers.tsx
  • apps/meteor/client/views/admin/integrations/IntegrationsTable.tsx
  • apps/meteor/client/views/admin/moderation/ModConsoleReportDetails.tsx
  • apps/meteor/client/views/admin/moderation/helpers/ContextMessage.tsx
  • apps/meteor/client/views/admin/permissions/UsersInRole/hooks/useRemoveUserFromRole.tsx
  • apps/meteor/client/views/admin/permissions/helpers/mapPermissionKeys.ts
  • apps/meteor/client/views/admin/settings/SettingsGroupSelector/SettingsGroupSelector.tsx
  • apps/meteor/client/views/admin/settings/groups/OAuthGroupPage/OAuthGroupPage.tsx
  • apps/meteor/client/views/admin/settings/groups/SAMLGroupPage/SAMLGroupPage.tsx
  • apps/meteor/client/views/admin/settings/groups/SAMLGroupPage/SamlMetadataModal.spec.tsx
  • apps/meteor/client/views/admin/settings/groups/SAMLGroupPage/SamlMetadataModal.tsx
  • apps/meteor/client/views/admin/settings/groups/SAMLGroupPage/index.ts
  • apps/meteor/client/views/admin/subscription/components/UsagePieGraph.stories.tsx
  • apps/meteor/client/views/admin/users/AdminUserForm.tsx
  • apps/meteor/client/views/admin/users/AdminUsersPage.tsx
  • apps/meteor/client/views/admin/users/UsersTable/UsersTable.tsx
  • apps/meteor/client/views/admin/viewLogs/ansispan.ts
  • apps/meteor/client/views/audit/components/AuditLogTable.tsx
  • apps/meteor/client/views/audit/hooks/useAuditMutation.ts
  • apps/meteor/client/views/home/HomepageGridItem.tsx
  • apps/meteor/client/views/marketplace/components/CategoryFilter/CategoryDropDownAnchor.tsx
  • apps/meteor/client/views/navigation/sidebar/RoomList/RoomListCollapser.tsx
  • apps/meteor/client/views/navigation/sidebar/RoomList/RoomListFiltersItem.tsx
  • apps/meteor/client/views/navigation/sidebar/RoomList/RoomListFiltersItemBadge.tsx
  • apps/meteor/client/views/navigation/sidebar/RoomList/RoomListRowWrapper.tsx
  • apps/meteor/client/views/navigation/sidebar/RoomList/SidebarItem.tsx
  • apps/meteor/client/views/navigation/sidebar/RoomList/SidebarItemWithData.tsx
  • apps/meteor/client/views/navigation/sidebar/RoomList/useSidebarListNavigation.ts
  • apps/meteor/client/views/navigation/sidebar/Sidebar.tsx
  • apps/meteor/client/views/navigation/sidebar/badges/UnreadBadge.tsx
  • apps/meteor/client/views/navigation/sidebar/hooks/useCollapsedGroups.ts
  • apps/meteor/client/views/navigation/sidebar/hooks/useShortcutOpenMenu.ts
  • apps/meteor/client/views/navigation/sidepanel/SidepanelItem/RoomSidePanelItem.tsx
  • apps/meteor/client/views/navigation/sidepanel/SidepanelItem/SidepanelItem.tsx
  • apps/meteor/client/views/navigation/sidepanel/omnichannel/InquireSidePanelItem.tsx
  • apps/meteor/client/views/navigation/sidepanel/tabs/SidePanelMentions.tsx
  • apps/meteor/client/views/omnichannel/cannedResponses/contextualBar/CannedResponse/CannedResponseList.tsx
  • apps/meteor/client/views/omnichannel/cannedResponses/modals/CannedResponsesTable.tsx
  • apps/meteor/client/views/omnichannel/components/outboundMessage/components/TemplatePlaceholderSelector/TemplatePlaceholderButton.tsx
  • apps/meteor/client/views/omnichannel/components/outboundMessage/utils/template.spec.ts
  • apps/meteor/client/views/omnichannel/components/outboundMessage/utils/template.ts
  • apps/meteor/client/views/omnichannel/contactHistory/MessageList/ContactHistoryMessage.tsx
  • apps/meteor/client/views/omnichannel/contactHistory/MessageList/useHistoryMessageList.ts
  • apps/meteor/client/views/omnichannel/directory/chats/Chat.tsx
  • apps/meteor/client/views/omnichannel/priorities/PriorityEditForm.tsx
  • apps/meteor/client/views/omnichannel/reports/hooks/useChannelsSection.ts
  • apps/meteor/client/views/omnichannel/slaPolicies/SlaEdit.tsx
  • apps/meteor/client/views/room/ClassificationBanner/ClassificationBanner.stories.tsx
  • apps/meteor/client/views/room/ClassificationBanner/ClassificationBanner.tsx
  • apps/meteor/client/views/room/ClassificationBanner/index.ts
  • apps/meteor/client/views/room/ClassificationBanner/lib/colors.ts
  • apps/meteor/client/views/room/ClassificationBanner/lib/engine.spec.ts
  • apps/meteor/client/views/room/ClassificationBanner/lib/engine.ts
  • apps/meteor/client/views/room/ClassificationBanner/lib/schema.spec.ts
  • apps/meteor/client/views/room/ClassificationBanner/lib/types.ts
  • apps/meteor/client/views/room/Header/ParentRoom/ParentDiscussion/ParentDiscussion.tsx
  • apps/meteor/client/views/room/MessageList/hooks/useKeepAtBottom.spec.ts
  • apps/meteor/client/views/room/MessageList/hooks/useLoadSurroundingMessages.spec.ts
  • apps/meteor/client/views/room/MessageList/hooks/useLoadSurroundingMessages.ts
  • apps/meteor/client/views/room/MessageList/hooks/useMessageBody.ts
  • apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.spec.tsx
  • apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts
  • apps/meteor/client/views/room/Room.tsx
  • apps/meteor/client/views/room/body/MediaCallRoom.tsx
  • apps/meteor/client/views/room/body/RoomBody.tsx
  • apps/meteor/client/views/room/body/RoomForeword/RoomForewordUsernameList.tsx
  • apps/meteor/client/views/room/body/hooks/useIsAtBottomRef.spec.ts
  • apps/meteor/client/views/room/body/hooks/useIsAtBottomRef.ts
  • apps/meteor/client/views/room/composer/ComposerMessage.tsx
  • apps/meteor/client/views/room/composer/hooks/useComposerBoxPopup.ts
  • apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx
  • apps/meteor/client/views/room/composer/messageBox/hooks/useDraft.spec.tsx
  • apps/meteor/client/views/room/composer/messageBox/hooks/useDraft.ts
  • apps/meteor/client/views/room/contextualBar/Discussions/DiscussionsListRow.tsx
  • apps/meteor/client/views/room/contextualBar/Discussions/useDiscussionsList.ts
  • apps/meteor/client/views/room/contextualBar/ExportMessages/ExportMessages.tsx
  • apps/meteor/client/views/room/contextualBar/ExportMessages/useExportMessagesAsPDFMutation.tsx
  • apps/meteor/client/views/room/contextualBar/Info/EditRoomInfo/EditRoomInfo.tsx
  • apps/meteor/client/views/room/contextualBar/PruneMessages/PruneMessagesWithData.tsx
  • apps/meteor/client/views/room/contextualBar/RoomFiles/RoomFiles.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/types.ts
  • apps/meteor/client/views/room/contextualBar/Threads/ThreadList.tsx
  • apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx
  • apps/meteor/client/views/room/contextualBar/Threads/components/ThreadListItem.tsx
  • apps/meteor/client/views/room/contextualBar/Threads/components/ThreadListMessage.tsx
  • apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.spec.tsx
  • apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx
  • apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.spec.ts
  • apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts
  • apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMessagesQuery.ts
  • apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadsList.ts
  • apps/meteor/client/views/room/hooks/useBanUser.tsx
  • apps/meteor/client/views/room/hooks/useUnbanUser.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeOwnerAction.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useMuteUserAction.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx
  • apps/meteor/client/views/room/layout/RoomLayout.tsx
  • apps/meteor/client/views/room/modals/ReadReceiptsModal/ReadReceiptsModal.tsx
  • apps/meteor/client/views/room/modals/ReportMessageModal/ReportMessageModal.tsx
  • apps/meteor/client/views/room/providers/ComposerPopupProvider.tsx
  • apps/meteor/client/views/room/providers/RoomProvider.tsx
  • apps/meteor/client/views/root/LoginRoute.tsx
  • apps/meteor/client/views/root/MainLayout/RegisterUsername.tsx
  • apps/meteor/client/views/root/SAMLLoginRoute.spec.tsx
  • apps/meteor/client/views/root/SAMLLoginRoute.tsx
  • apps/meteor/client/views/root/hooks/useIframeCommands.ts
  • apps/meteor/client/views/root/hooks/useLoadMissedMessages.spec.ts
  • apps/meteor/client/views/root/hooks/useLoadMissedMessages.ts
  • apps/meteor/client/views/root/hooks/useOAuthPopupCommands.ts
  • apps/meteor/definition/externals/csv-parse.d.ts
  • apps/meteor/definition/externals/meteor/npm-mongo.d.ts
  • apps/meteor/definition/externals/meteor/webapp.d.ts
  • apps/meteor/ee/server/api/abac/schemas.ts
  • apps/meteor/ee/server/api/audit.ts
  • apps/meteor/ee/server/api/index.ts
  • apps/meteor/ee/server/api/lib/canned-responses.js
  • apps/meteor/ee/server/api/licenses.ts
  • apps/meteor/ee/server/api/mcp/catalog.spec.ts
  • apps/meteor/ee/server/api/mcp/catalog.ts
  • apps/meteor/ee/server/api/mcp/dispatch.spec.ts
  • apps/meteor/ee/server/api/mcp/dispatch.ts
  • apps/meteor/ee/server/api/mcp/index.spec.ts
  • apps/meteor/ee/server/api/mcp/index.ts
  • apps/meteor/ee/server/api/mcp/server.spec.ts
  • apps/meteor/ee/server/api/mcp/server.ts
  • apps/meteor/ee/server/api/mcp/transport.spec.ts
  • apps/meteor/ee/server/api/mcp/transport.ts
  • apps/meteor/ee/server/api/roles.ts
  • apps/meteor/ee/server/api/sessions.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/monitors.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/priorities.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/sla.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/tags.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/units.ts
  • apps/meteor/ee/server/apps/communication/uikit.ts
  • apps/meteor/ee/server/apps/marketplace/appRequestNotifyUsers.ts
  • apps/meteor/ee/server/apps/orchestrator.ts
  • apps/meteor/ee/server/apps/storage/AppRealStorage.ts
  • apps/meteor/ee/server/configuration/oauth.ts
  • apps/meteor/ee/server/lib/audit/functions.ts
  • apps/meteor/ee/server/lib/audit/methods.ts
  • apps/meteor/ee/server/lib/message-read-receipt/ReadReceipt.ts
  • apps/meteor/ee/server/lib/omnichannel/Department.ts
  • apps/meteor/ee/server/lib/omnichannel/business-hour/lib/business-hour.ts
  • apps/meteor/ee/server/meteor-methods/getReadReceipts.ts
  • apps/meteor/ee/server/models/LivechatUnit.ts
  • apps/meteor/ee/server/models/raw/CannedResponse.ts
  • apps/meteor/ee/server/models/raw/LivechatDepartment.ts
  • apps/meteor/ee/server/models/raw/LivechatRooms.ts
  • apps/meteor/ee/server/models/raw/LivechatTag.ts
  • apps/meteor/ee/server/models/raw/LivechatUnit.ts
  • apps/meteor/ee/server/models/raw/ServiceLevelAgreements.ts
  • apps/meteor/ee/server/services/CHANGELOG.md
  • apps/meteor/ee/server/services/package.json
  • apps/meteor/ee/server/settings/abac.ts
  • apps/meteor/ee/server/settings/settings.ts
  • apps/meteor/ee/server/settings/voip.ts
  • apps/meteor/ee/server/startup/index.ts
  • apps/meteor/ee/server/startup/mcp.ts
  • apps/meteor/ee/tests/unit/server/hooks/messages/BeforeSaveCannedResponse.tests.ts
  • apps/meteor/imports/client/hepburn
  • apps/meteor/imports/client/limax
  • apps/meteor/imports/client/map-age-cleaner
  • apps/meteor/imports/client/mem
  • apps/meteor/imports/client/mimic-fn/index.js
  • apps/meteor/imports/client/p-defer
  • apps/meteor/imports/client/poly1305-js
  • apps/meteor/imports/client/query-string
  • apps/meteor/imports/client/scheduler
  • apps/meteor/imports/client/sodium-native
  • apps/meteor/imports/client/sodium-plus
  • apps/meteor/imports/client/split-on-first
  • apps/meteor/imports/client/strict-uri-encode
  • apps/meteor/jest.config.ts
  • apps/meteor/lib/publishFields.ts
  • apps/meteor/lib/utils/stringUtils.ts
  • apps/meteor/package.json
  • apps/meteor/playwright.config.ts
  • apps/meteor/reporters/jira.ts
  • apps/meteor/server/api/ApiClass.ts
  • apps/meteor/server/api/api.ts
  • apps/meteor/server/api/index.ts
  • apps/meteor/server/api/lib/getUserInfo.ts
  • apps/meteor/server/api/lib/logMethodCallError.spec.ts
  • apps/meteor/server/api/lib/logMethodCallError.ts
  • apps/meteor/server/api/lib/queryFiltersStatus.spec.ts
  • apps/meteor/server/api/lib/queryFiltersStatus.ts
  • apps/meteor/server/api/lib/users.ts
  • apps/meteor/server/api/lib/webdav.ts
  • apps/meteor/server/api/v1/channels.ts
  • apps/meteor/server/api/v1/chat.ts
  • apps/meteor/server/api/v1/custom-sounds.ts
  • apps/meteor/server/api/v1/custom-user-status.ts
  • apps/meteor/server/api/v1/emoji-custom.ts
  • apps/meteor/server/api/v1/groups.ts
  • apps/meteor/server/api/v1/im.ts
  • apps/meteor/server/api/v1/integrations.ts
  • apps/meteor/server/api/v1/middlewares/authentication.ts
  • apps/meteor/server/api/v1/middlewares/cors.spec.ts
  • apps/meteor/server/api/v1/middlewares/cors.ts
  • apps/meteor/server/api/v1/middlewares/experimental.spec.ts
  • apps/meteor/server/api/v1/middlewares/experimental.ts
  • apps/meteor/server/api/v1/middlewares/metrics.spec.ts
  • apps/meteor/server/api/v1/middlewares/metrics.ts
  • apps/meteor/server/api/v1/misc.ts
  • apps/meteor/server/api/v1/moderation.ts
  • apps/meteor/server/api/v1/omnichannel/contact.ts
  • apps/meteor/server/api/v1/omnichannel/departments.ts
  • apps/meteor/server/api/v1/omnichannel/lib/customFields.ts
  • apps/meteor/server/api/v1/omnichannel/lib/departments.ts
  • apps/meteor/server/api/v1/omnichannel/lib/livechat.ts
  • apps/meteor/server/api/v1/omnichannel/lib/rooms.ts
  • apps/meteor/server/api/v1/omnichannel/lib/users.ts
  • apps/meteor/server/api/v1/omnichannel/statistics.ts
  • apps/meteor/server/api/v1/omnichannel/visitors.ts
  • apps/meteor/server/api/v1/push.ts
  • apps/meteor/server/api/v1/rooms.ts
  • apps/meteor/server/api/v1/saml.ts
  • apps/meteor/server/api/v1/settings.ts
  • apps/meteor/server/api/v1/teams.ts
  • apps/meteor/server/api/v1/users.ts
  • apps/meteor/server/api/validation/ajv.ts
  • apps/meteor/server/bridges/slack/slackbridge_import.server.ts
  • apps/meteor/server/configuration/ldap.ts
  • apps/meteor/server/hooks/messages/processThreads.ts
  • apps/meteor/server/hooks/messages/propagateDiscussionMetadata.ts
  • apps/meteor/server/lib/2fa/code/EmailCheck.ts
  • apps/meteor/server/lib/2fa/code/EmailCheckForOAuth.ts
  • apps/meteor/server/lib/2fa/code/ICodeCheck.ts
  • apps/meteor/server/lib/2fa/code/PasswordCheckFallback.ts
  • apps/meteor/server/lib/2fa/code/TOTPCheck.ts
  • apps/meteor/server/lib/2fa/code/TOTPCheckForOAuth.ts
  • apps/meteor/server/lib/2fa/code/index.ts
  • apps/meteor/server/lib/2fa/functions/totp.ts
  • apps/meteor/server/lib/auth/startup.js
  • apps/meteor/server/lib/autotranslate/autotranslate.ts
  • apps/meteor/server/lib/dataExport/exportRoomMessagesToFile.ts
  • apps/meteor/server/lib/dataExport/processDataDownloads.ts
  • apps/meteor/server/lib/dataExport/sendViaEmail.ts
  • apps/meteor/server/lib/e2e/beforeCreateRoom.ts
  • apps/meteor/server/lib/findUsersOfRoomOrderedByRole.ts
  • apps/meteor/server/lib/messaging/Message.ts
  • apps/meteor/server/lib/messaging/discussions/updateAndNotifyParentRoomWithParentMessage.ts
  • apps/meteor/server/lib/messaging/getHiddenSystemMessages.ts
  • apps/meteor/server/lib/notifications/core/lib/Presence.ts
  • apps/meteor/server/lib/notifications/email/api.ts
  • apps/meteor/server/lib/notifications/mail-messages/functions/sendMail.ts
  • apps/meteor/server/lib/notifications/message/email.js
  • apps/meteor/server/lib/notifications/message/index.ts
  • apps/meteor/server/lib/notifications/message/messageContainsHighlight.ts
  • apps/meteor/server/lib/notifyListener.ts
  • apps/meteor/server/lib/oauth/addOAuthService.ts
  • apps/meteor/server/lib/oauth/allowPassportOAuthMiddleware.ts
  • apps/meteor/server/lib/oauth/createOAuthServiceConfig.ts
  • apps/meteor/server/lib/omnichannel/QueueManager.ts
  • apps/meteor/server/lib/omnichannel/analytics/dashboards.ts
  • apps/meteor/server/lib/omnichannel/business-hour/Helper.ts
  • apps/meteor/server/lib/omnichannel/business-hour/filterBusinessHoursThatMustBeOpened.spec.ts
  • apps/meteor/server/lib/omnichannel/business-hour/filterBusinessHoursThatMustBeOpened.ts
  • apps/meteor/server/lib/omnichannel/custom-fields.ts
  • apps/meteor/server/lib/omnichannel/guests.ts
  • apps/meteor/server/lib/omnichannel/hooks.ts
  • apps/meteor/server/lib/omnichannel/omni-users.ts
  • apps/meteor/server/lib/omnichannel/parseTranscriptRequest.ts
  • apps/meteor/server/lib/omnichannel/sendTranscript.ts
  • apps/meteor/server/lib/parseMessageSearchQuery.ts
  • apps/meteor/server/lib/premiumAuthDeprecation.ts
  • apps/meteor/server/lib/pushConfig.ts
  • apps/meteor/server/lib/rooms/createDirectRoom.ts
  • apps/meteor/server/lib/rooms/updateGroupDMsName.ts
  • apps/meteor/server/lib/saml/lib/SAML.ts
  • apps/meteor/server/lib/saml/lib/ServiceProvider.ts
  • apps/meteor/server/lib/saml/lib/Utils.ts
  • apps/meteor/server/lib/saml/lib/parsers/IdpMetadata.ts
  • apps/meteor/server/lib/saml/lib/settings.ts
  • apps/meteor/server/lib/saml/listener.ts
  • apps/meteor/server/lib/saml/loginHandler.ts
  • apps/meteor/server/lib/sendDirectMessageToUsers.ts
  • apps/meteor/server/lib/settingValidationRules.ts
  • apps/meteor/server/lib/spotlight.js
  • apps/meteor/server/lib/statistics/lib/statistics.ts
  • apps/meteor/server/lib/statusVisibility/StatusVisibilityGate.ts
  • apps/meteor/server/lib/statusVisibility/hiddenUsers.ts
  • apps/meteor/server/lib/statusVisibility/redactStatus.ts
  • apps/meteor/server/lib/statusVisibility/resolveUsers.spec.ts
  • apps/meteor/server/lib/statusVisibility/resolveUsers.ts
  • apps/meteor/server/lib/ui-master/index.ts
  • apps/meteor/server/lib/users/checkUsernameAvailability.ts
  • apps/meteor/server/lib/users/getFullUserData.ts
  • apps/meteor/server/lib/users/getUserSingleOwnedRooms.ts
  • apps/meteor/server/lib/users/setEmail.ts
  • apps/meteor/server/lib/users/setRealName.ts
  • apps/meteor/server/lib/users/setUserActiveStatus.ts
  • apps/meteor/server/lib/users/setUserAvatar.ts
  • apps/meteor/server/lib/utils/lib/getValidRoomName.ts
  • apps/meteor/server/lib/utils/lib/normalizeMessagesForUser.ts
  • apps/meteor/server/meteor-methods/auth/addOAuthService.ts
  • apps/meteor/server/meteor-methods/auth/checkCodesRemaining.ts
  • apps/meteor/server/meteor-methods/auth/disable.ts
  • apps/meteor/server/meteor-methods/auth/enable.ts
  • apps/meteor/server/meteor-methods/auth/refreshOAuthService.ts
  • apps/meteor/server/meteor-methods/auth/regenerateCodes.ts
  • apps/meteor/server/meteor-methods/auth/removeOAuthService.ts
  • apps/meteor/server/meteor-methods/auth/sendForgotPasswordEmail.ts
  • apps/meteor/server/meteor-methods/auth/validateTempToken.ts
  • apps/meteor/server/meteor-methods/import/downloadPublicImportFile.ts
  • apps/meteor/server/meteor-methods/messages/createDirectMessage.ts
  • apps/meteor/server/meteor-methods/messages/createDiscussion.ts
  • apps/meteor/server/meteor-methods/messages/getThreadMessages.ts
  • apps/meteor/server/meteor-methods/messages/getThreadsList.ts
  • apps/meteor/server/meteor-methods/messages/loadMissedMessages.ts
  • apps/meteor/server/meteor-methods/messages/loadSurroundingMessages.ts
  • apps/meteor/server/meteor-methods/messages/readThreads.ts
  • apps/meteor/server/meteor-methods/messages/sendMessage.ts
  • apps/meteor/server/meteor-methods/omnichannel/sendMessageLivechat.ts
  • apps/meteor/server/meteor-methods/rooms/addUsersToRoom.ts
  • apps/meteor/server/meteor-methods/rooms/browseChannels.ts
  • apps/meteor/server/meteor-methods/rooms/saveRoomSettings.ts
  • apps/meteor/server/meteor-methods/users/getUserStatusText.ts
  • apps/meteor/server/meteor-methods/users/saveUserPreferences.ts
  • apps/meteor/server/modules/listeners/listeners.module.ts
  • apps/meteor/server/modules/notifications/notifications.module.ts
  • apps/meteor/server/publications/messages.ts
  • apps/meteor/server/publications/spotlight.ts
  • apps/meteor/server/services/ai-search/service.ts
  • apps/meteor/server/services/authorization/canAccessRoom.ts
  • apps/meteor/server/services/banner/service.ts
  • apps/meteor/server/services/calendar/service.ts
  • apps/meteor/server/services/messages/lib/oembed/providers.ts
  • apps/meteor/server/services/messages/service.ts
  • apps/meteor/server/services/room/service.ts
  • apps/meteor/server/services/startup.ts
  • apps/meteor/server/services/statusVisibility/service.spec.ts
  • apps/meteor/server/services/statusVisibility/service.ts
  • apps/meteor/server/services/team/service.ts
  • apps/meteor/server/services/upload/service.ts
  • apps/meteor/server/settings/SettingsRegistry.ts
  • apps/meteor/server/settings/accounts.ts
  • apps/meteor/server/settings/ai.ts
  • apps/meteor/server/settings/e2e.ts
  • apps/meteor/server/settings/functions/settingSchemas.ts
  • apps/meteor/server/settings/ldap.ts
  • apps/meteor/server/settings/push.ts
  • apps/meteor/server/slashcommands/archiveroom/server.ts
  • apps/meteor/server/slashcommands/ban/ban.ts
  • apps/meteor/server/slashcommands/ban/unban.ts
  • apps/meteor/server/slashcommands/create/server.ts
  • apps/meteor/server/slashcommands/help/server.ts
  • apps/meteor/server/slashcommands/hide/hide.ts
  • apps/meteor/server/slashcommands/invite/server.ts
  • apps/meteor/server/slashcommands/inviteall/server.ts
  • apps/meteor/server/slashcommands/join/server.ts
  • apps/meteor/server/slashcommands/kick/server.ts
  • apps/meteor/server/slashcommands/msg/server.ts
  • apps/meteor/server/slashcommands/mute/mute.ts
  • apps/meteor/server/slashcommands/mute/unmute.ts
  • apps/meteor/server/slashcommands/unarchiveroom/server.ts
  • apps/meteor/tests/e2e/abac-classification-banner.spec.ts
  • apps/meteor/tests/e2e/e2e-encryption/e2ee-encrypted-channels.spec.ts
  • apps/meteor/tests/e2e/e2e-encryption/e2ee-file-encryption.spec.ts
  • apps/meteor/tests/e2e/federation/tests/messaging/threads.spec.ts
  • apps/meteor/tests/e2e/global-search.spec.ts
  • apps/meteor/tests/e2e/message-composer.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-agents.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-appearance.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-business-hours.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-contact-center-chats.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-custom-fields.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-departaments-ce.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-departaments.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-department.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitors.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-priorities.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-sla-policies.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-tags.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-takeChat.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-units.spec.ts
  • apps/meteor/tests/e2e/page-objects/fragments/flextabs/search-messages-flextab.ts
  • apps/meteor/tests/e2e/page-objects/fragments/flextabs/threads-flextab.ts
  • apps/meteor/tests/e2e/page-objects/fragments/sidebar.ts
  • apps/meteor/tests/e2e/page-objects/fragments/table.ts
  • apps/meteor/tests/e2e/page-objects/fragments/voice-calls.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-admin.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-agents.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-business-hours.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-canned-responses.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-contact-center/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-contact-center/omnichannel-contact-center-contacts.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-contact-center/omnichannel-contact-center.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-custom-fields.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-departments.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-livechat-appearance.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-manager.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-monitors.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-priorities.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-settings.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-sla-policies.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-tags.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-transcript.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-triggers.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel/omnichannel-units.ts
  • apps/meteor/tests/e2e/read-receipts-thread.spec.ts
  • apps/meteor/tests/e2e/saml.spec.ts
  • apps/meteor/tests/e2e/sidebar-menu.spec.ts
  • apps/meteor/tests/e2e/threads.spec.ts
  • apps/meteor/tests/e2e/voice-calls-ee.spec.ts
  • apps/meteor/tests/end-to-end/api/SAML.ts
  • apps/meteor/tests/end-to-end/api/abac.ts
  • apps/meteor/tests/end-to-end/api/assets2.ts
  • apps/meteor/tests/end-to-end/api/audit.ts
  • apps/meteor/tests/end-to-end/api/autotranslate.ts
  • apps/meteor/tests/end-to-end/api/banners.ts
  • apps/meteor/tests/end-to-end/api/channels.ts
  • apps/meteor/tests/end-to-end/api/chat.ts
  • apps/meteor/tests/end-to-end/api/commands.ts
  • apps/meteor/tests/end-to-end/api/cors.ts
  • apps/meteor/tests/end-to-end/api/custom-sounds.ts
  • apps/meteor/tests/end-to-end/api/custom-user-status.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/import.spec.ts
  • apps/meteor/tests/end-to-end/api/incoming-integrations.ts
  • apps/meteor/tests/end-to-end/api/invites.ts
  • apps/meteor/tests/end-to-end/api/licenses.ts
  • apps/meteor/tests/end-to-end/api/livechat/00-rooms.ts
  • apps/meteor/tests/end-to-end/api/livechat/19-business-hours.ts
  • apps/meteor/tests/end-to-end/api/methods.ts
  • apps/meteor/tests/end-to-end/api/miscellaneous.ts
  • apps/meteor/tests/end-to-end/api/oauthapps.ts
  • apps/meteor/tests/end-to-end/api/permissions.ts
  • apps/meteor/tests/end-to-end/api/rooms.ts
  • apps/meteor/tests/end-to-end/api/settings.ts
  • apps/meteor/tests/end-to-end/api/statistics.ts
  • apps/meteor/tests/end-to-end/api/subscriptions.ts
  • apps/meteor/tests/end-to-end/api/teams.ts
  • apps/meteor/tests/end-to-end/api/users.ts
  • apps/meteor/tests/end-to-end/api/webdav.ts
  • apps/meteor/tests/mocks/data/outbound-message.ts
  • apps/meteor/tests/unit/app/apps/server/codecs/mappedData.spec.ts
  • apps/meteor/tests/unit/app/apps/server/codecs/rooms.spec.ts
  • apps/meteor/tests/unit/app/apps/server/converters.edge.spec.ts
  • apps/meteor/tests/unit/app/apps/server/converters.golden.spec.ts
  • apps/meteor/tests/unit/app/markdown/client.tests.js
  • apps/meteor/tests/unit/server/hooks/messages/processThreads.spec.ts
  • apps/meteor/tests/unit/server/lib/import/transformMappedData.spec.ts
  • apps/meteor/tests/unit/server/lib/notifications/message/getEmailContent.spec.ts
  • apps/meteor/tests/unit/server/lib/notifyListener.spec.ts
  • apps/meteor/tests/unit/server/lib/saml/idpMetadata.spec.ts
  • apps/meteor/tests/unit/server/lib/saml/server.tests.ts
  • apps/meteor/tests/unit/server/lib/settingValidationRules.spec.ts
  • apps/meteor/tests/unit/server/meteor-methods/import/downloadPublicImportFile.spec.ts
  • apps/meteor/tests/unit/server/meteor-methods/messages/loadSurroundingMessages.spec.ts
  • apps/meteor/tests/unit/server/modules/notifications/notifications.module.spec.ts
  • apps/meteor/tests/unit/server/publications/messages.spec.ts
  • apps/meteor/tests/unit/server/services/authorization/canAccessRoom.spec.ts
  • apps/meteor/tests/unit/server/services/team/service.tests.ts
  • apps/meteor/tests/unit/server/settings/functions/settings.tests.ts
  • apps/meteor/tsconfig.json
  • apps/uikit-playground/CHANGELOG.md
  • apps/uikit-playground/package.json
  • docker-compose-ci.yml
  • docs/adr/0001-app-accessor-logic-in-base-runtime.md
  • docs/api-endpoint-migration.md
  • docs/experimental-api-endpoints-plan.md
  • docs/experimental-api-endpoints.md
  • docs/features/mcp-server.md
  • docs/frontend-guidelines.md
  • docs/frontend/building-components.md
  • docs/frontend/i18n.md
  • docs/frontend/migrating-from-javascript.md
  • docs/frontend/react.md
  • docs/frontend/typescript-conventions.md
  • docs/i18n.md
  • docs/proposals/apps-converters-zod/README.md
  • ee/apps/account-service/CHANGELOG.md
  • ee/apps/account-service/package.json
  • ee/apps/authorization-service/CHANGELOG.md
  • ee/apps/authorization-service/package.json
  • ee/apps/ddp-streamer/CHANGELOG.md
  • ee/apps/ddp-streamer/package.json
  • ee/apps/ddp-streamer/tsconfig.json
  • ee/apps/omnichannel-transcript/CHANGELOG.md
  • ee/apps/omnichannel-transcript/package.json
  • ee/apps/presence-service/CHANGELOG.md
  • ee/apps/presence-service/package.json
  • ee/apps/queue-worker/CHANGELOG.md
  • ee/apps/queue-worker/package.json
  • ee/packages/abac/CHANGELOG.md
  • ee/packages/abac/docs/classification-banners.schema.json
  • ee/packages/abac/package.json
  • ee/packages/abac/src/index.ts
  • ee/packages/abac/src/pdp/LocalPDP.ts
  • ee/packages/abac/src/pdp/VirtruPDP.spec.ts
  • ee/packages/abac/src/pdp/VirtruPDP.ts
  • ee/packages/abac/src/pdp/types.ts
  • ee/packages/abac/src/store/LocalAttributeStore.ts
  • ee/packages/abac/src/store/VirtruAttributeStore.ts
  • ee/packages/abac/src/store/types.ts
  • ee/packages/federation-matrix/CHANGELOG.md
  • ee/packages/federation-matrix/jest.config.ts
  • ee/packages/federation-matrix/package.json
  • ee/packages/federation-matrix/src/api/_matrix/client/account.ts
  • ee/packages/federation-matrix/src/api/_matrix/client/media.ts
  • ee/packages/federation-matrix/src/api/_matrix/client/rooms-messaging.ts
  • ee/packages/federation-matrix/src/api/_matrix/send-join.ts
  • ee/packages/federation-matrix/src/api/_matrix/transactions.ts
  • ee/packages/federation-matrix/src/events/member.ts
  • ee/packages/federation-matrix/src/helpers/createOrUpdateFederatedUser.spec.ts
  • ee/packages/federation-matrix/src/helpers/createOrUpdateFederatedUser.ts
  • ee/packages/federation-matrix/src/helpers/getOrCreateFederatedUser.spec.ts
  • ee/packages/federation-matrix/src/helpers/getOrCreateFederatedUser.ts
  • ee/packages/federation-matrix/tests/end-to-end/first-contact.spec.ts
  • ee/packages/federation-matrix/tests/helper/config.ts
  • ee/packages/license/package.json
  • ee/packages/media-calls/CHANGELOG.md
  • ee/packages/media-calls/jest.config.ts
  • ee/packages/media-calls/package.json
  • ee/packages/media-calls/src/definition/common.ts
  • ee/packages/media-calls/src/server/CallDirector.ts
  • ee/packages/media-calls/src/server/signals/getNewCallTransferredBy.ts
  • ee/packages/media-calls/src/sip/providers/IncomingSipCall.ts
  • ee/packages/media-calls/src/sip/utils/parseDiversionHeader.spec.ts
  • ee/packages/media-calls/src/sip/utils/parseDiversionHeader.ts
  • ee/packages/network-broker/CHANGELOG.md
  • ee/packages/network-broker/package.json
  • ee/packages/omni-core-ee/CHANGELOG.md
  • ee/packages/omni-core-ee/package.json
  • ee/packages/omnichannel-services/CHANGELOG.md
  • ee/packages/omnichannel-services/package.json
  • ee/packages/pdf-worker/CHANGELOG.md
  • ee/packages/pdf-worker/package.json
  • ee/packages/pdf-worker/src/css.d.ts
  • ee/packages/pdf-worker/src/templates/ChatTranscript/components/Divider.tsx
  • ee/packages/pdf-worker/src/templates/ChatTranscript/components/Files.tsx
  • ee/packages/pdf-worker/src/templates/ChatTranscript/components/Header.tsx
  • ee/packages/pdf-worker/src/templates/ChatTranscript/components/Message.tsx
  • ee/packages/pdf-worker/src/templates/ChatTranscript/components/MessageHeader.tsx
  • ee/packages/pdf-worker/src/templates/ChatTranscript/components/Quote.tsx
  • ee/packages/pdf-worker/src/templates/ChatTranscript/index.tsx
  • ee/packages/pdf-worker/src/templates/ChatTranscript/markup/blocks/HeadingBlock.tsx
  • ee/packages/pdf-worker/src/templates/ChatTranscript/markup/elements/CodeSpan.tsx
  • ee/packages/presence/CHANGELOG.md
  • ee/packages/presence/package.json
  • eslint.config.mjs
  • fuselage.sh
  • package.json
  • packages/account-utils/package.json
  • packages/agenda/package.json
  • packages/ai-search/package.json
  • packages/api-client/package.json
  • packages/apps-engine/CHANGELOG.md
  • packages/apps-engine/package.json
  • packages/apps-engine/src/definition/ui/IUIActionButtonDescriptor.ts
  • packages/apps/CHANGELOG.md
  • packages/apps/base-runtime/src/lib/UIHelper.ts
  • packages/apps/base-runtime/src/lib/accessors/Persistence.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/EnvironmentRead.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/EnvironmentWrite.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/EnvironmentalVariableRead.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/ServerSettingRead.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/ServerSettingUpdater.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/ServerSettingsModify.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/SettingRead.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/SettingUpdater.ts
  • packages/apps/base-runtime/src/lib/accessors/environment/tests/environment.test.ts
  • packages/apps/base-runtime/src/lib/accessors/http.ts
  • packages/apps/base-runtime/src/lib/accessors/mod.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/ContactCreator.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/EmailCreator.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/LivechatCreator.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/LivechatUpdater.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/MessageUpdater.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/ModerationModify.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/ModifyCreator.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/ModifyDeleter.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/ModifyExtender.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/ModifyUpdater.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/OAuthAppsModify.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/SchedulerModify.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/UIController.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/UploadCreator.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/UserUpdater.ts
  • packages/apps/base-runtime/src/lib/accessors/modify/tests/modifyAccessors.test.ts
  • packages/apps/base-runtime/src/lib/accessors/notifier.ts
  • packages/apps/base-runtime/src/lib/accessors/read/CloudWorkspaceRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/ContactRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/ExperimentalRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/LivechatRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/MessageRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/OAuthAppsReader.ts
  • packages/apps/base-runtime/src/lib/accessors/read/PersistenceRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/Reader.ts
  • packages/apps/base-runtime/src/lib/accessors/read/RoleRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/RoomRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/ThreadRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/UploadRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/UserRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/VideoConferenceRead.ts
  • packages/apps/base-runtime/src/lib/accessors/read/tests/readers.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/AppAccessors.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/ModifyCreator.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/ModifyExtender.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/ModifyUpdater.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/Persistence.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/accessorSurfaceIntegrity.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/configuration.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/helpers/parityHarness.test.ts
  • packages/apps/base-runtime/src/lib/accessors/tests/helpers/parityHarness.ts
  • packages/apps/base-runtime/src/lib/bridges/bridgeCall.ts
  • packages/apps/base-runtime/src/lib/bridges/tests/bridgeCall.test.ts
  • packages/apps/base-runtime/src/lib/roomFactory.ts
  • packages/apps/package.json
  • packages/apps/src/server/AppManager.ts
  • packages/apps/src/server/ProxiedApp.ts
  • packages/apps/src/server/accessors/ApiExtend.ts
  • packages/apps/src/server/accessors/AppAccessors.ts
  • packages/apps/src/server/accessors/ConfigurationExtend.ts
  • packages/apps/src/server/accessors/ConfigurationModify.ts
  • packages/apps/src/server/accessors/ContactCreator.ts
  • packages/apps/src/server/accessors/ContactRead.ts
  • packages/apps/src/server/accessors/DiscussionBuilder.ts
  • packages/apps/src/server/accessors/EnvironmentalVariableRead.ts
  • packages/apps/src/server/accessors/ExperimentalRead.ts
  • packages/apps/src/server/accessors/ExternalComponentsExtend.ts
  • packages/apps/src/server/accessors/Http.ts
  • packages/apps/src/server/accessors/HttpExtend.ts
  • packages/apps/src/server/accessors/LivechatMessageBuilder.ts
  • packages/apps/src/server/accessors/LivechatRead.ts
  • packages/apps/src/server/accessors/MessageBuilder.ts
  • packages/apps/src/server/accessors/MessageExtender.ts
  • packages/apps/src/server/accessors/ModerationModify.ts
  • packages/apps/src/server/accessors/Modify.ts
  • packages/apps/src/server/accessors/ModifyCreator.ts
  • packages/apps/src/server/accessors/ModifyExtender.ts
  • packages/apps/src/server/accessors/ModifyUpdater.ts
  • packages/apps/src/server/accessors/Notifier.ts
  • packages/apps/src/server/accessors/OutboundCommunicationProviderExtend.ts
  • packages/apps/src/server/accessors/Persistence.ts
  • packages/apps/src/server/accessors/PersistenceRead.ts
  • packages/apps/src/server/accessors/RoleRead.ts
  • packages/apps/src/server/accessors/RoomBuilder.ts
  • packages/apps/src/server/accessors/RoomExtender.ts
  • packages/apps/src/server/accessors/SchedulerExtend.ts
  • packages/apps/src/server/accessors/SchedulerModify.ts
  • packages/apps/src/server/accessors/ServerSettingRead.ts
  • packages/apps/src/server/accessors/ServerSettingsModify.ts
  • packages/apps/src/server/accessors/SettingRead.ts
  • packages/apps/src/server/accessors/SettingUpdater.ts
  • packages/apps/src/server/accessors/SettingsExtend.ts
  • packages/apps/src/server/accessors/SlashCommandsExtend.ts
  • packages/apps/src/server/accessors/SlashCommandsModify.ts
  • packages/apps/src/server/accessors/ThreadRead.ts
  • packages/apps/src/server/accessors/UIExtend.ts
  • packages/apps/src/server/accessors/UploadRead.ts
  • packages/apps/src/server/accessors/UserBuilder.ts
  • packages/apps/src/server/accessors/UserRead.ts
  • packages/apps/src/server/accessors/VideoConfProviderExtend.ts
  • packages/apps/src/server/accessors/VideoConferenceBuilder.ts
  • packages/apps/src/server/accessors/VideoConferenceExtend.ts
  • packages/apps/src/server/accessors/index.ts
  • packages/apps/src/server/bridges/AppResourceBridge.ts
  • packages/apps/src/server/managers/AppAccessorManager.ts
  • packages/apps/src/server/managers/AppApi.ts
  • packages/apps/src/server/managers/AppApiManager.ts
  • packages/apps/src/server/managers/AppListenerManager.ts
  • packages/apps/src/server/managers/AppOutboundCommunicationProvider.ts
  • packages/apps/src/server/managers/AppOutboundCommunicationProviderManager.ts
  • packages/apps/src/server/managers/AppRuntimeManager.ts
  • packages/apps/src/server/managers/AppSlashCommand.ts
  • packages/apps/src/server/managers/AppSlashCommandManager.ts
  • packages/apps/src/server/managers/AppVideoConfProvider.ts
  • packages/apps/src/server/managers/AppVideoConfProviderManager.ts
  • packages/apps/src/server/managers/index.ts
  • packages/apps/src/server/runtime/base/BaseRuntimeSubprocessController.ts
  • packages/apps/tests/server/AppManager.test.ts
  • packages/apps/tests/server/accessors/AppAccessors.test.ts
  • packages/apps/tests/server/accessors/ConfigurationExtend.test.ts
  • packages/apps/tests/server/accessors/ConfigurationModify.test.ts
  • packages/apps/tests/server/accessors/EnvironmentRead.test.ts
  • packages/apps/tests/server/accessors/EnvironmentWrite.test.ts
  • packages/apps/tests/server/accessors/EnvironmentalVariableRead.test.ts
  • packages/apps/tests/server/accessors/Http.test.ts
  • packages/apps/tests/server/accessors/HttpExtend.test.ts
  • packages/apps/tests/server/accessors/MessageBuilder.test.ts
  • packages/apps/tests/server/accessors/MessageExtender.test.ts
  • packages/apps/tests/server/accessors/MessageRead.test.ts
  • packages/apps/tests/server/accessors/Modify.test.ts
  • packages/apps/tests/server/accessors/ModifyCreator.test.ts
  • packages/apps/tests/server/accessors/ModifyExtender.test.ts
  • packages/apps/tests/server/accessors/ModifyUpdater.test.ts
  • packages/apps/tests/server/accessors/Notifier.test.ts
  • packages/apps/tests/server/accessors/Persistence.test.ts
  • packages/apps/tests/server/accessors/PersistenceRead.test.ts
  • packages/apps/tests/server/accessors/Reader.test.ts
  • packages/apps/tests/server/accessors/RoomBuilder.test.ts
  • packages/apps/tests/server/accessors/RoomExtender.test.ts
  • packages/apps/tests/server/accessors/RoomRead.test.ts
  • packages/apps/tests/server/accessors/ServerSettingRead.test.ts
  • packages/apps/tests/server/accessors/ServerSettingsModify.test.ts
  • packages/apps/tests/server/accessors/SettingRead.test.ts
  • packages/apps/tests/server/accessors/SettingUpdater.test.ts
  • packages/apps/tests/server/accessors/SettingsExtend.test.ts
  • packages/apps/tests/server/accessors/SlashCommandsExtend.test.ts
  • packages/apps/tests/server/accessors/SlashCommandsModify.test.ts
  • packages/apps/tests/server/accessors/UserBuilder.test.ts
  • packages/apps/tests/server/accessors/UserRead.test.ts
  • packages/apps/tests/server/accessors/VideoConfProviderExtend.test.ts
  • packages/apps/tests/server/accessors/VideoConferenceBuilder.test.ts
  • packages/apps/tests/server/accessors/VideoConferenceExtend.test.ts
  • packages/apps/tests/server/accessors/VideoConferenceRead.test.ts
  • packages/apps/tests/server/managers/AppAccessorManager.test.ts
  • packages/apps/tests/server/managers/AppApiManager.test.ts
  • packages/apps/tests/server/managers/AppListenerManager.test.ts
  • packages/apps/tests/server/managers/AppOutboundCommunicationProviderManager.test.ts
  • packages/apps/tests/server/managers/AppSettingsManager.test.ts
  • packages/apps/tests/server/managers/AppSlashCommandManager.test.ts
  • packages/apps/tests/server/managers/AppVideoConfProviderManager.test.ts
  • packages/apps/tests/server/runtime/DenoRuntimeSubprocessController.test.ts
  • packages/apps/tests/server/runtime/SecureFieldsCodecCompatibility.test.ts
  • packages/apps/tests/test-data/utilities.ts
  • packages/cas-validate/package.json
  • packages/core-services/CHANGELOG.md
  • packages/core-services/package.json
  • packages/core-services/src/events/Events.ts
  • packages/core-services/src/index.ts
  • packages/core-services/src/types/IAbacService.ts
  • packages/core-services/src/types/IStatusVisibilityService.ts
  • packages/core-services/src/types/IUploadService.ts
  • packages/core-typings/CHANGELOG.md
  • packages/core-typings/package.json
  • packages/core-typings/src/Ajv.ts
  • packages/core-typings/src/ILivechatBusinessHour.ts
  • packages/core-typings/src/IRoom.ts
  • packages/core-typings/src/ISession.ts
  • packages/core-typings/src/ISetting.ts
  • packages/core-typings/src/ISubscription.ts
  • packages/core-typings/src/IUser.ts
  • packages/core-typings/src/PresenceStatusCode.ts
  • packages/core-typings/src/index.ts
  • packages/core-typings/src/mediaCalls/IMediaCall.ts
  • packages/cron/CHANGELOG.md
  • packages/cron/package.json
  • packages/ddp-client/CHANGELOG.md
  • packages/ddp-client/__tests__/Connection.spec.ts
  • packages/ddp-client/package.json
  • packages/ddp-client/src/Connection.ts
  • packages/ddp-client/src/index.ts
  • packages/desktop-api/package.json
  • packages/emitter/CHANGELOG.md
  • packages/emitter/jest.config.ts
  • packages/emitter/package.json
  • packages/emitter/rollup.config.mjs
  • packages/emitter/src/emitter.spec.ts
  • packages/emitter/src/index.ts
  • packages/emitter/tsconfig.build.json
  • packages/emitter/tsconfig.json
  • packages/eslint-config/CHANGELOG.md
  • packages/eslint-config/package.json
  • packages/favicon/package.json
  • packages/fuselage-ui-kit/CHANGELOG.md
  • packages/fuselage-ui-kit/package.json
  • packages/fuselage-ui-kit/src/blocks/VideoConferenceBlock/VideoConferenceBlock.tsx
  • packages/fuselage-ui-kit/src/blocks/VideoConferenceBlock/hooks/useGoToRoom.spec.tsx
  • packages/fuselage-ui-kit/src/blocks/VideoConferenceBlock/hooks/useGoToRoom.ts
  • packages/fuselage-ui-kit/src/css.d.ts
  • packages/gazzodown/CHANGELOG.md
  • packages/gazzodown/package.json
  • packages/gazzodown/src/Markup.stories.tsx
  • packages/gazzodown/src/css.d.ts
  • packages/gazzodown/src/katex/KatexErrorBoundary.tsx
  • packages/http-router/package.json
  • packages/i18n/CHANGELOG.md
  • packages/i18n/package.json
  • packages/i18n/src/locales/af.i18n.json
  • packages/i18n/src/locales/ar.i18n.json
  • packages/i18n/src/locales/az.i18n.json
  • packages/i18n/src/locales/be-BY.i18n.json
  • packages/i18n/src/locales/bg.i18n.json
  • packages/i18n/src/locales/bs.i18n.json
  • packages/i18n/src/locales/ca.i18n.json
  • packages/i18n/src/locales/cs.i18n.json
  • packages/i18n/src/locales/cy.i18n.json
  • packages/i18n/src/locales/da.i18n.json
  • packages/i18n/src/locales/de-AT.i18n.json
  • packages/i18n/src/locales/de-IN.i18n.json
  • packages/i18n/src/locales/de.i18n.json
  • packages/i18n/src/locales/el.i18n.json
  • packages/i18n/src/locales/en.i18n.json
  • packages/i18n/src/locales/eo.i18n.json
  • packages/i18n/src/locales/es.i18n.json
  • packages/i18n/src/locales/fa.i18n.json
  • packages/i18n/src/locales/fi.i18n.json
  • packages/i18n/src/locales/fr.i18n.json
  • packages/i18n/src/locales/gl.i18n.json
  • packages/i18n/src/locales/he.i18n.json
  • packages/i18n/src/locales/hi-IN.i18n.json
  • packages/i18n/src/locales/hr.i18n.json
  • packages/i18n/src/locales/hu.i18n.json
  • packages/i18n/src/locales/id.i18n.json
  • packages/i18n/src/locales/it.i18n.json
  • packages/i18n/src/locales/ja.i18n.json
  • packages/i18n/src/locales/ka-GE.i18n.json
  • packages/i18n/src/locales/km.i18n.json
  • packages/i18n/src/locales/ko.i18n.json
  • packages/i18n/src/locales/ku.i18n.json
  • packages/i18n/src/locales/lo.i18n.json
  • packages/i18n/src/locales/lt.i18n.json
  • packages/i18n/src/locales/lv.i18n.json
  • packages/i18n/src/locales/mn.i18n.json
  • packages/i18n/src/locales/ms-MY.i18n.json
  • packages/i18n/src/locales/nb.i18n.json
  • packages/i18n/src/locales/nl.i18n.json
  • packages/i18n/src/locales/nn.i18n.json
  • packages/i18n/src/locales/pl.i18n.json
  • packages/i18n/src/locales/pt-BR.i18n.json
  • packages/i18n/src/locales/pt.i18n.json
  • packages/i18n/src/locales/ro.i18n.json
  • packages/i18n/src/locales/ru.i18n.json
  • packages/i18n/src/locales/sk-SK.i18n.json
  • packages/i18n/src/locales/sl-SI.i18n.json
  • packages/i18n/src/locales/sq.i18n.json
  • packages/i18n/src/locales/sr.i18n.json
  • packages/i18n/src/locales/sv.i18n.json
  • packages/i18n/src/locales/ta-IN.i18n.json
  • packages/i18n/src/locales/th-TH.i18n.json
  • packages/i18n/src/locales/tr.i18n.json
  • packages/i18n/src/locales/ug.i18n.json
  • packages/i18n/src/locales/uk.i18n.json
  • packages/i18n/src/locales/vi-VN.i18n.json
  • packages/i18n/src/locales/zh-HK.i18n.json
  • packages/i18n/src/locales/zh-TW.i18n.json
  • packages/i18n/src/locales/zh.i18n.json
  • packages/i18n/src/scripts/check.mts
  • packages/instance-status/CHANGELOG.md
  • packages/instance-status/package.json
  • packages/jest-presets/CHANGELOG.md
  • packages/jest-presets/package.json
  • packages/jwt/package.json
  • packages/livechat/.storybook/helpers.tsx
  • packages/livechat/.storybook/main.ts
  • packages/livechat/CHANGELOG.md
  • packages/livechat/package.json
  • packages/livechat/postcss.config.js
  • packages/livechat/src/components/App/App.tsx
  • packages/livechat/src/components/App/index.tsx
  • packages/livechat/src/components/Messages/AudioAttachment/index.tsx
  • packages/livechat/src/components/Messages/FileAttachment/index.tsx
  • packages/livechat/src/components/Messages/ImageAttachment/index.tsx
  • packages/livechat/src/components/Messages/Message/index.tsx
  • packages/livechat/src/components/Messages/MessageList/index.tsx
  • packages/livechat/src/components/Messages/MessageSeparator/index.tsx
  • packages/livechat/src/components/Messages/MessageSeparator/stories.tsx
  • packages/livechat/src/components/Messages/MessageTime/index.tsx
  • packages/livechat/src/components/Messages/MessageTime/stories.tsx
  • packages/livechat/src/components/Messages/TypingIndicator/index.tsx
  • packages/livechat/src/components/Messages/VideoAttachment/index.tsx
  • packages/livechat/src/components/Screen/Header.tsx
  • packages/livechat/src/components/Screen/Screen.tsx
  • packages/livechat/src/components/Screen/ScreenProvider.tsx
  • packages/livechat/src/components/Sound/index.js
  • packages/livechat/src/components/Sound/index.tsx
  • packages/livechat/src/components/uiKit/index.ts
  • packages/livechat/src/components/uiKit/message/Block.tsx
  • packages/livechat/src/definitions/css.d.ts
  • packages/livechat/src/definitions/global.d.ts
  • packages/livechat/src/lib/connection.ts
  • packages/livechat/src/lib/main.ts
  • packages/livechat/src/lib/room.ts
  • packages/livechat/src/lib/threads.ts
  • packages/livechat/src/lib/triggers.ts
  • packages/livechat/src/lib/uiKit.ts
  • packages/livechat/src/providers/ServerProvider.tsx
  • packages/livechat/src/routes/Chat/ChatContent.tsx
  • packages/livechat/src/routes/Chat/ChatFooter.tsx
  • packages/livechat/src/routes/Chat/Picker.tsx
  • packages/livechat/src/routes/Chat/component.js
  • packages/livechat/src/routes/Chat/connector.tsx
  • packages/livechat/src/routes/Chat/container.js
  • packages/livechat/src/routes/Chat/index.ts
  • packages/livechat/src/routes/Chat/index.tsx
  • packages/livechat/src/routes/Chat/stories.tsx
  • packages/livechat/src/routes/Chat/useChatEffects.ts
  • packages/livechat/src/routes/Chat/useChatSubscriptions.ts
  • packages/livechat/src/routes/Chat/useStableCallback.ts
  • packages/livechat/src/routes/ChatFinished/container.tsx
  • packages/livechat/src/routes/ChatFinished/index.ts
  • packages/livechat/src/routes/ChatFinished/index.tsx
  • packages/livechat/src/routes/ChatFinished/stories.tsx
  • packages/livechat/src/routes/GDPRAgreement/component.tsx
  • packages/livechat/src/routes/GDPRAgreement/container.tsx
  • packages/livechat/src/routes/GDPRAgreement/index.ts
  • packages/livechat/src/routes/GDPRAgreement/index.tsx
  • packages/livechat/src/routes/GDPRAgreement/stories.tsx
  • packages/livechat/src/routes/LeaveMessage/index.tsx
  • packages/livechat/src/routes/LeaveMessage/stories.tsx
  • packages/livechat/src/routes/Register/index.tsx
  • packages/livechat/src/routes/Register/stories.tsx
  • packages/livechat/src/routes/SwitchDepartment/index.tsx
  • packages/livechat/src/routes/SwitchDepartment/stories.tsx
  • packages/livechat/src/routes/TriggerMessage/component.tsx
  • packages/livechat/src/routes/TriggerMessage/container.tsx
  • packages/livechat/src/routes/TriggerMessage/index.ts
  • packages/livechat/src/routes/TriggerMessage/index.tsx
  • packages/livechat/src/routes/TriggerMessage/stories.tsx
  • packages/livechat/src/store/index.tsx
  • packages/livechat/tsconfig.typecheck.json
  • packages/livechat/webpack.config.ts
  • packages/logger/package.json
  • packages/media-signaling/.eslintrc.json
  • packages/media-signaling/CHANGELOG.md
  • packages/media-signaling/jest.config.ts
  • packages/media-signaling/package.json
  • packages/media-signaling/src/definition/services/webrtc/IWebRTCProcessor.ts
  • packages/media-signaling/src/lib/Call.ts
  • packages/media-signaling/src/lib/Session.ts
  • packages/media-signaling/src/lib/media/MediaStreamManager.ts
  • packages/media-signaling/src/lib/media/MediaStreamWrapper.ts
  • packages/media-signaling/src/lib/services/webrtc/Negotiation.ts
  • packages/media-signaling/src/lib/services/webrtc/Processor.ts
  • packages/media-signaling/src/lib/services/webrtc/index.ts
  • packages/media-signaling/src/lib/services/webrtc/sdp.spec.ts
  • packages/media-signaling/src/lib/services/webrtc/sdp.ts
  • packages/memo/jest.config.ts
  • packages/memo/package.json
  • packages/memo/src/index.ts
  • packages/memo/src/memoize.spec.ts
  • packages/memo/src/memoize.ts
  • packages/memo/tsconfig.cjs.json
  • packages/memo/tsconfig.esm.json
  • packages/memo/tsconfig.json
  • packages/message-parser/package.json
  • packages/message-types/CHANGELOG.md
  • packages/message-types/package.json
  • packages/message-types/src/MessageTypes.ts
  • packages/message-types/src/registrations/common.ts
  • packages/mock-providers/CHANGELOG.md
  • packages/mock-providers/package.json
  • packages/mock-providers/src/MockedAppRootBuilder.tsx
  • packages/model-typings/CHANGELOG.md
  • packages/model-typings/package.json
  • packages/model-typings/src/index.ts
  • packages/model-typings/src/models/IAbacAttributesModel.ts
  • packages/model-typings/src/models/IBannersDismissModel.ts
  • packages/model-typings/src/models/IBannersModel.ts
  • packages/model-typings/src/models/IBaseModel.ts
  • packages/model-typings/src/models/IBaseUploadsModel.ts
  • packages/model-typings/src/models/ICalendarEventModel.ts
  • packages/model-typings/src/models/ICallHistoryModel.ts
  • packages/model-typings/src/models/ICannedResponseModel.ts
  • packages/model-typings/src/models/ICustomSoundsModel.ts
  • packages/model-typings/src/models/ICustomUserStatusModel.ts
  • packages/model-typings/src/models/IEmojiCustomModel.ts
  • packages/model-typings/src/models/IIntegrationsModel.ts
  • packages/model-typings/src/models/ILivechatBusinessHoursModel.ts
  • packages/model-typings/src/models/ILivechatContactsModel.ts
  • packages/model-typings/src/models/ILivechatCustomFieldModel.ts
  • packages/model-typings/src/models/ILivechatDepartmentAgentsModel.ts
  • packages/model-typings/src/models/ILivechatDepartmentModel.ts
  • packages/model-typings/src/models/ILivechatInquiryModel.ts
  • packages/model-typings/src/models/ILivechatRoomsModel.ts
  • packages/model-typings/src/models/ILivechatUnitModel.ts
  • packages/model-typings/src/models/ILivechatVisitorsModel.ts
  • packages/model-typings/src/models/ILoginServiceConfigurationModel.ts
  • packages/model-typings/src/models/IMediaCallNegotiationsModel.ts
  • packages/model-typings/src/models/IMediaCallsModel.ts
  • packages/model-typings/src/models/IMessagesModel.ts
  • packages/model-typings/src/models/INpsVoteModel.ts
  • packages/model-typings/src/models/IOAuthAccessTokensModel.ts
  • packages/model-typings/src/models/IOAuthAppsModel.ts
  • packages/model-typings/src/models/IOAuthAuthCodesModel.ts
  • packages/model-typings/src/models/IOAuthRefreshTokensModel.ts
  • packages/model-typings/src/models/IPushTokenModel.ts
  • packages/model-typings/src/models/IRolesModel.ts
  • packages/model-typings/src/models/IRoomsModel.ts
  • packages/model-typings/src/models/ISessionsModel.ts
  • packages/model-typings/src/models/ISettingsModel.ts
  • packages/model-typings/src/models/ISubscriptionsModel.ts
  • packages/model-typings/src/models/ITeamMemberModel.ts
  • packages/model-typings/src/models/ITeamModel.ts
  • packages/model-typings/src/models/ITwoFactorChallengesModel.ts
  • packages/model-typings/src/models/IUploadsModel.ts
  • packages/model-typings/src/models/IUserDataFilesModel.ts
  • packages/model-typings/src/models/IUsersModel.ts
  • packages/model-typings/src/models/IUsersSessionsModel.ts
  • packages/model-typings/src/models/IWebdavAccountsModel.ts
  • packages/model-typings/src/types/DocumentWithProjection.ts
  • packages/model-typings/src/types/DocumentWithProjection.typetest.ts
  • packages/model-typings/tsconfig.build.json
  • packages/model-typings/tsconfig.json
  • packages/models/CHANGELOG.md
  • packages/models/package.json
  • packages/models/src/dummy/BaseDummy.ts
  • packages/models/src/models/Banners.ts
  • packages/models/src/models/BannersDismiss.ts
  • packages/models/src/models/BaseRaw.spec.ts
  • packages/models/src/models/BaseRaw.ts
  • packages/models/src/models/BaseUploadModel.ts
  • packages/models/src/models/CalendarEvent.ts
  • packages/models/src/models/CallHistory.ts
  • packages/models/src/models/CustomSounds.ts
  • packages/models/src/models/CustomUserStatus.ts
  • packages/models/src/models/EmailInbox.ts
  • packages/models/src/models/EmojiCustom.ts
  • packages/models/src/models/Integrations.ts
  • packages/models/src/models/LivechatBusinessHours.ts
  • packages/models/src/models/LivechatContacts.ts
  • packages/models/src/models/LivechatCustomField.ts
  • packages/models/src/models/LivechatDepartment.ts
  • packages/models/src/models/LivechatDepartmentAgents.ts
  • packages/models/src/models/LivechatInquiry.ts
  • packages/models/src/models/LivechatPriority.ts
  • packages/models/src/models/LivechatRooms.ts
  • packages/models/src/models/LivechatVisitors.ts
  • packages/models/src/models/LoginServiceConfiguration.ts
  • packages/models/src/models/MediaCallNegotiations.ts
  • packages/models/src/models/MediaCalls.ts
  • packages/models/src/models/Messages.ts
  • packages/models/src/models/NpsVote.ts
  • packages/models/src/models/OAuthAccessTokens.ts
  • packages/models/src/models/OAuthApps.ts
  • packages/models/src/models/OAuthAuthCodes.ts
  • packages/models/src/models/OAuthRefreshTokens.ts
  • packages/models/src/models/PushToken.ts
  • packages/models/src/models/Roles.ts
  • packages/models/src/models/Rooms.ts
  • packages/models/src/models/ServerEvents.ts
  • packages/models/src/models/Sessions.ts
  • packages/models/src/models/Settings.ts
  • packages/models/src/models/Subscriptions.ts
  • packages/models/src/models/Team.ts
  • packages/models/src/models/TeamMember.ts
  • packages/models/src/models/TwoFactorChallenges.ts
  • packages/models/src/models/Uploads.ts
  • packages/models/src/models/UserDataFiles.ts
  • packages/models/src/models/Users.ts
  • packages/models/src/models/UsersSessions.ts
  • packages/models/src/models/VideoConference.ts
  • packages/models/src/models/WebdavAccounts.ts
  • packages/models/src/updater.ts
  • packages/mongo-adapter/package.json
  • packages/mp3-encoder/CHANGELOG.md
  • packages/mp3-encoder/jest.config.ts
  • packages/mp3-encoder/package.json
  • packages/mp3-encoder/rollup.config.mjs
  • packages/mp3-encoder/src/index.spec.ts
  • packages/mp3-encoder/src/index.ts
  • packages/mp3-encoder/src/lame/ABRPresets.ts
  • packages/mp3-encoder/src/lame/ATH.ts
  • packages/mp3-encoder/src/lame/BitStream.ts
  • packages/mp3-encoder/src/lame/Bits.ts
  • packages/mp3-encoder/src/lame/CBRNewIterationLoop.ts
  • packages/mp3-encoder/src/lame/CalcNoiseData.ts
  • packages/mp3-encoder/src/lame/CalcNoiseResult.ts
  • packages/mp3-encoder/src/lame/Encoder.ts
  • packages/mp3-encoder/src/lame/FFT.ts
  • packages/mp3-encoder/src/lame/GainAnalysis.ts
  • packages/mp3-encoder/src/lame/GrInfo.ts
  • packages/mp3-encoder/src/lame/Header.ts
  • packages/mp3-encoder/src/lame/HuffCodeTab.ts
  • packages/mp3-encoder/src/lame/IIISideInfo.ts
  • packages/mp3-encoder/src/lame/III_psy_ratio.ts
  • packages/mp3-encoder/src/lame/III_psy_xmin.ts
  • packages/mp3-encoder/src/lame/InOut.ts
  • packages/mp3-encoder/src/lame/Lame.ts
  • packages/mp3-encoder/src/lame/LameGlobalFlags.ts
  • packages/mp3-encoder/src/lame/LameInternalFlags.ts
  • packages/mp3-encoder/src/lame/MPEGMode.ts
  • packages/mp3-encoder/src/lame/MeanBits.ts
  • packages/mp3-encoder/src/lame/Mp3Encoder.spec.ts
  • packages/mp3-encoder/src/lame/Mp3Encoder.ts
  • packages/mp3-encoder/src/lame/NewMDCT.ts
  • packages/mp3-encoder/src/lame/NsPsy.ts
  • packages/mp3-encoder/src/lame/NumUsed.ts
  • packages/mp3-encoder/src/lame/PSY.ts
  • packages/mp3-encoder/src/lame/Presets.ts
  • packages/mp3-encoder/src/lame/PsyModel.ts
  • packages/mp3-encoder/src/lame/Quality.ts
  • packages/mp3-encoder/src/lame/Quantize.ts
  • packages/mp3-encoder/src/lame/QuantizePVT.ts
  • packages/mp3-encoder/src/lame/ReplayGain.ts
  • packages/mp3-encoder/src/lame/Reservoir.ts
  • packages/mp3-encoder/src/lame/ScaleFac.ts
  • packages/mp3-encoder/src/lame/ShortBlock.ts
  • packages/mp3-encoder/src/lame/StartLine.ts
  • packages/mp3-encoder/src/lame/Tables.ts
  • packages/mp3-encoder/src/lame/Takehiro.ts
  • packages/mp3-encoder/src/lame/TotalBytes.ts
  • packages/mp3-encoder/src/lame/VBRPresets.ts
  • packages/mp3-encoder/src/lame/VBRTag.ts
  • packages/mp3-encoder/src/lame/VbrMode.ts
  • packages/mp3-encoder/src/lame/WavHeader.ts
  • packages/mp3-encoder/src/lame/arrays.ts
  • packages/mp3-encoder/src/lame/assert.ts
  • packages/mp3-encoder/src/lame/bitrates.ts
  • packages/mp3-encoder/src/lame/constants.ts
  • packages/mp3-encoder/src/lame/getLameShortVersion.ts
  • packages/mp3-encoder/src/lame/index.ts
  • packages/mp3-encoder/src/lame/math.ts
  • packages/mp3-encoder/src/lame/sampleRates.ts
  • packages/mp3-encoder/tsconfig.build.json
  • packages/mp3-encoder/tsconfig.json
  • packages/omni-core/CHANGELOG.md
  • packages/omni-core/package.json
  • packages/omni-core/src/visitor/create.spec.ts
  • packages/omni-core/src/visitor/create.ts
  • packages/passport-x/package.json
  • packages/passport-x/src/passport-oauth1.d.ts
  • packages/password-policies/package.json
  • packages/patch-injection/package.json
  • packages/peggy-loader/package.json
  • packages/random/package.json
  • packages/release-action/CHANGELOG.md
  • packages/release-action/package.json
  • packages/release-changelog/package.json
  • packages/rest-typings/CHANGELOG.md
  • packages/rest-typings/package.json
  • packages/rest-typings/src/experimental/index.ts
  • packages/rest-typings/src/index.ts
  • packages/rest-typings/src/v1/channels/ChannelsCreateProps.ts
  • packages/rest-typings/src/v1/channels/ChannelsMessagesProps.ts
  • packages/rest-typings/src/v1/channels/channels.ts
  • packages/rest-typings/src/v1/chat.ts
  • packages/rest-typings/src/v1/groups/GroupsCreateProps.ts
  • packages/rest-typings/src/v1/saml.ts
  • packages/rest-typings/src/v1/settings.ts
  • packages/rest-typings/src/v1/users.ts
  • packages/rest-typings/src/v1/users/UsersInfoParamsGet.ts
  • packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts
  • packages/server-cloud-communication/package.json
  • packages/server-fetch/CHANGELOG.md
  • packages/server-fetch/package.json
  • packages/server-fetch/src/index.ts
  • packages/sha256/package.json
  • packages/storybook-config/package.json
  • packages/storybook-config/src/css.d.ts
  • packages/storybook-config/src/preview.tsx
  • packages/tools/CHANGELOG.md
  • packages/tools/package.json
  • packages/tools/src/capitalize.spec.ts
  • packages/tools/src/capitalize.ts
  • packages/tools/src/escapeHTML.spec.ts
  • packages/tools/src/escapeHTML.ts
  • packages/tools/src/escapeRegExp.spec.ts
  • packages/tools/src/escapeRegExp.ts
  • packages/tools/src/index.ts
  • packages/tools/src/toString.ts
  • packages/tools/src/unescapeHTML.spec.ts
  • packages/tools/src/unescapeHTML.ts
  • packages/tracing/package.json
  • packages/ui-avatar/CHANGELOG.md
  • packages/ui-avatar/package.json
  • packages/ui-client/CHANGELOG.md
  • packages/ui-client/package.json
  • packages/ui-client/src/components/Contextualbar/Contextualbar.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarAction.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarActions.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarBack.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarButton.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarClose.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarContent.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarDialog.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarEmptyContent.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarFooter.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarHeader.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarIcon.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarSection.tsx
  • packages/ui-client/src/components/Contextualbar/ContextualbarTitle.tsx
  • packages/ui-client/src/components/Contextualbar/index.ts
  • packages/ui-client/src/components/CustomFieldsForm.tsx
  • packages/ui-client/src/components/EmojiPicker/EmojiPickerLoadMore.tsx
  • packages/ui-client/src/components/GenericTable/hooks/useShowingResultsLabel.ts
  • packages/ui-client/src/components/Modal/GenericModal/withDoNotAskAgain.tsx
  • packages/ui-client/src/css.d.ts
  • packages/ui-client/src/hooks/index.ts
  • packages/ui-client/src/hooks/useFeaturePreviewList.ts
  • packages/ui-client/src/hooks/useRoomRoute.ts
  • packages/ui-client/src/views/setupWizard/providers/SetupWizardProvider.tsx
  • packages/ui-client/src/views/setupWizard/steps/AdminInfoStep.tsx
  • packages/ui-composer/CHANGELOG.md
  • packages/ui-composer/package.json
  • packages/ui-contexts/CHANGELOG.md
  • packages/ui-contexts/package.json
  • packages/ui-contexts/src/hooks/useRoleIdResolver.ts
  • packages/ui-contexts/src/index.ts
  • packages/ui-kit/package.json
  • packages/ui-video-conf/CHANGELOG.md
  • packages/ui-video-conf/package.json
  • packages/ui-video-conf/src/VideoConfMessage/VideoConfMessageButton.tsx
  • packages/ui-voip/CHANGELOG.md
  • packages/ui-voip/package.json
  • packages/ui-voip/src/components/Widget/Widget.tsx
  • packages/ui-voip/src/components/Widget/WidgetBase.tsx
  • packages/ui-voip/src/components/Widget/WidgetDraggableContext.ts
  • packages/ui-voip/src/components/Widget/WidgetDraggableProvider.tsx
  • packages/ui-voip/src/components/Widget/WidgetHandle.tsx
  • packages/ui-voip/src/context/MediaCallInstanceContext.ts
  • packages/ui-voip/src/context/MediaCallViewContext.ts
  • packages/ui-voip/src/context/definitions.d.ts
  • packages/ui-voip/src/context/usePeekMediaSessionPeerInfo.spec.tsx
  • packages/ui-voip/src/context/usePeekMediaSessionState.spec.tsx
  • packages/ui-voip/src/context/usePeerAutocomplete.spec.tsx
  • packages/ui-voip/src/context/useRegisterView.ts
  • packages/ui-voip/src/context/useWidgetExternalControls.ts
  • packages/ui-voip/src/generate-landing-view.tsx
  • packages/ui-voip/src/hooks/useDevicePermissionPrompt.spec.tsx
  • packages/ui-voip/src/hooks/useDevicePermissionPrompt.tsx
  • packages/ui-voip/src/hooks/useMediaCallOpenRoomTracker.spec.tsx
  • packages/ui-voip/src/providers/MediaCallInstanceProvider.tsx
  • packages/ui-voip/src/providers/MediaCallViewProvider.tsx
  • packages/ui-voip/src/providers/MockedInstanceProvider.tsx
  • packages/ui-voip/src/providers/MockedMediaCallProvider.tsx
  • packages/ui-voip/src/providers/useAvailableViewTracker.spec.ts
  • packages/ui-voip/src/providers/useAvailableViewTracker.ts
  • packages/ui-voip/src/providers/useInstanceState.ts
  • packages/ui-voip/src/providers/useMediaSession.ts
  • packages/ui-voip/src/providers/useMediaSessionControls.ts
  • packages/ui-voip/src/providers/useMediaSessionInstance.ts
  • packages/ui-voip/src/providers/useWidgetExternalControlSignalListener.ts
  • packages/ui-voip/src/providers/useWidgetPositionTracker.ts
  • packages/ui-voip/src/utils/deriveWidgetStateFromCallState.spec.ts
  • packages/ui-voip/src/utils/deriveWidgetStateFromCallState.ts
  • packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.stories.tsx
  • packages/ui-voip/src/views/MediaCallPopout.tsx
  • packages/ui-voip/src/views/MediaCallPopoutView.tsx
  • packages/ui-voip/src/views/MediaCallPopoutWindow.tsx
  • packages/ui-voip/src/views/MediaCallRoomSection/MediaCallRoomSection.tsx
  • packages/ui-voip/src/views/MediaCallWidget/IncomingCall.tsx
  • packages/ui-voip/src/views/MediaCallWidget/MediaCallWidget.stories.tsx
  • packages/ui-voip/src/views/MediaCallWidget/MediaCallWidget.tsx
  • packages/ui-voip/src/views/MediaCallWidget/MediaCallWidgetViewRouter.tsx
  • packages/ui-voip/src/views/MediaCallWidget/NewCall.tsx
  • packages/ui-voip/src/views/MediaCallWidget/OngoingCall.tsx
  • packages/ui-voip/src/views/MediaCallWidget/OngoingCallWithScreen.tsx
  • packages/ui-voip/src/views/PermissionFlow/PermissionFlowModal.stories.tsx
  • packages/ui-voip/src/views/PermissionFlow/PermissionFlowModal.tsx
  • packages/ui-voip/src/views/useFullscreenToggle.spec.tsx
  • packages/ui-voip/src/views/useFullscreenToggle.ts
  • packages/web-ui-registration/CHANGELOG.md
  • packages/web-ui-registration/package.json
  • packages/web-ui-registration/src/CMSPage.tsx
  • packages/web-ui-registration/src/LoginServices.tsx
  • packages/web-ui-registration/src/ResetPassword/ResetPasswordPage.tsx

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

@codecov

codecov Bot commented Aug 20, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 80.55330% with 239 lines in your changes missing coverage. Please review.
✅ Project coverage is 69.36%. Comparing base (c59f190) to head (727097a).
⚠️ Report is 7 commits behind head on master.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master   #41894      +/-   ##
==========================================
+ Coverage   68.45%   69.36%   +0.90%     
==========================================
  Files        4143     4255     +112     
  Lines      158433   168644   +10211     
  Branches    28561    30058    +1497     
==========================================
+ Hits       108457   116976    +8519     
- Misses      44843    46494    +1651     
- Partials     5133     5174      +41     
Flag Coverage Δ
e2e 58.85% <45.85%> (-0.01%) ⬇️
e2e-api 46.16% <ø> (+0.54%) ⬆️
unit 71.26% <84.66%> (+0.89%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

29 issues found across 1518 files

Not reviewed (too large): apps/meteor/tests/end-to-end/api/chat.ts (~2,612 lines), apps/meteor/tests/end-to-end/api/users.ts (~2,506 lines), packages/i18n/src/locales/de.i18n.json (~2,178 lines) - if these are generated or fixture files, add them to ignored paths to exclude them from future reviews.

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/server/lib/statusVisibility/hiddenUsers.ts">

<violation number="1" location="apps/meteor/server/lib/statusVisibility/hiddenUsers.ts:12">
P2: When Spotlight requests only rooms, this helper still awaits a status-visibility service RPC, adding avoidable latency and a service dependency to room-only and anonymous searches. Perform the lookup only when the user-search surface is enabled.</violation>
</file>

<file name="apps/meteor/client/sidebar/RoomList/useSidebarListNavigation.ts">

<violation number="1" location="apps/meteor/client/sidebar/RoomList/useSidebarListNavigation.ts:5">
P2: Only one of the two duplicated copies of useSidebarListNavigation was updated. This file now matches 'rcx-sidebar-v2-collapse-group__bar-button', but the identical hook at apps/meteor/client/views/navigation/sidebar/RoomList/useSidebarListNavigation.ts:6 still checks 'rcx-sidebar-v2-collapse-group__bar', and both are wired into live navigation (the sidebar RoomListWrapper uses this copy, SidepanelListWrapper imports the other). Whichever class name matches the fuselage DOM, at least one surface now has divergent or broken Arrow/Tab handling for collapse groups. Sync the class guard across both copies (and confirm which class fuselage actually emits), or extract the shared hook so they cannot drift again.</violation>
</file>

<file name="apps/meteor/client/views/room/contextualBar/PruneMessages/PruneMessagesWithData.tsx">

<violation number="1" location="apps/meteor/client/views/room/contextualBar/PruneMessages/PruneMessagesWithData.tsx:126">
P2: When a workspace overrides these keys in `Custom_Translations` using the previous `%s` placeholders, the warning now displays literal `%s` tokens because this call no longer runs the sprintf postprocessor. Preserve sprintf compatibility alongside the named variables, or migrate existing custom translations.</violation>
</file>

<file name="apps/meteor/server/lib/users/getFullUserData.ts">

<violation number="1" location="apps/meteor/server/lib/users/getFullUserData.ts:151">
P2: If the setting is disabled after the projection is built, this condition skips ID-to-username conversion and returns raw `statusVisibilityDenied` IDs. Remove the field whenever the setting is disabled before returning.

(Based on your team's feedback about keeping preference IDs internal.) .</violation>
</file>

<file name="apps/meteor/app/apps/server/converters/codecs/uploads.ts">

<violation number="1" location="apps/meteor/app/apps/server/converters/codecs/uploads.ts:34">
P2: When an `IUpload` has no `rid`, this callback calls `rooms.convertById(undefined)`, so converting room-less uploads can fail instead of completing without a room. Check `rid` before the lookup and return `undefined` when it is absent.</violation>
</file>

<file name="apps/meteor/client/views/room/ClassificationBanner/lib/engine.ts">

<violation number="1" location="apps/meteor/client/views/room/ClassificationBanner/lib/engine.ts:39">
P2: When a grouped attribute uses an empty `multipleLabel`, this renders a blank banner despite matching values. Fall back to the joined values or require a non-empty `multipleLabel` for grouped attributes.</violation>
</file>

<file name="apps/meteor/client/navbar/NavBarPagesGroup/actions/useEncryptedRoomDescription.ts">

<violation number="1" location="apps/meteor/client/navbar/NavBarPagesGroup/actions/useEncryptedRoomDescription.ts:16">
P3: The new enforced-by-policy branch has no test coverage in useEncryptedRoomDescription.spec.ts. Add a case that sets E2E_Force_Encryption_For_Private_Rooms=true (with E2E_Enable=true) and asserts the "Encrypted_enforced_by_workspace_policy" result for private+encrypted rooms, so the new behavior is locked in.</violation>
</file>

<file name="apps/meteor/app/apps/server/converters/codecs/departments.ts">

<violation number="1" location="apps/meteor/app/apps/server/converters/codecs/departments.ts:29">
P2: When a department has multiple forwarding targets, this codec exposes an array through `IAppsDepartment.departmentsAllowedToForward`, whose declared Apps-Engine type is `string`. Align the Apps-Engine contract and the conversion before returning this value, rather than hiding the mismatch with the cast.</violation>
</file>

<file name="apps/meteor/client/apps/gameCenter/GameCenterInvitePlayersModal.tsx">

<violation number="1" location="apps/meteor/client/apps/gameCenter/GameCenterInvitePlayersModal.tsx:37">
P2: Replacing `callWithErrorHandling('sendMessage', ...)` with a bare `sdk.rest.post` drops the error toast that `callWithErrorHandling` dispatched via `dispatchToastMessage`. If sending the invite message fails, the user now gets no feedback, only a `console.warn` in the outer catch. Keep the user-facing error handling (e.g., wrap the REST call the same way `groups.create` errors are surfaced, or use a toast helper) so a send failure is visible.</violation>
</file>

<file name="apps/meteor/client/components/GenericNoResults/GenericNoResults.tsx">

<violation number="1" location="apps/meteor/client/components/GenericNoResults/GenericNoResults.tsx:27">
P2: The aria-label is hardcoded to `t('No_results_found')`, but many callers pass a custom `title` (e.g. `GenericNoResults title={t('ABAC_No_attributes')}`, `title={t('No_message_reports')}`). A screen reader will then announce "No results found" while the visible text reads the custom title, producing misleading output. Mirror the visible label: `aria-label={title || t('No_results_found')}`.</violation>
</file>

<file name="apps/meteor/server/lib/saml/lib/ServiceProvider.ts">

<violation number="1" location="apps/meteor/server/lib/saml/lib/ServiceProvider.ts:146">
P2: When a provider name is long enough, the new compound RelayState exceeds SAML HTTP-Redirect’s 80-byte limit and can make authorize requests fail. Keep the RelayState within the binding limit, or fall back to the legacy provider-only state or server-side state for long provider names.</violation>
</file>

<file name="apps/meteor/client/views/root/hooks/useLoadMissedMessages.ts">

<violation number="1" location="apps/meteor/client/views/root/hooks/useLoadMissedMessages.ts:37">
P2: When a loaded reply points to a parent older than the oldest loaded message, this bound omits the parent deletion, so the reply keeps a stale `tmid` after reconnect. Reconcile loaded replies' thread parents separately or adjust the sync query to include those parent deletions.</violation>
</file>

<file name="apps/meteor/client/views/account/security/TwoFactorTOTP.tsx">

<violation number="1" location="apps/meteor/client/views/account/security/TwoFactorTOTP.tsx:20">
P2: When either REST call rejects for an invalid TOTP code, `isInvalidTotpError` receives a `Response`, not the decoded error body, so the user gets a generic response error instead of `Invalid_two_factor_code`. Parse the rejected response body or use the shared REST error conversion before checking the error code.</violation>
</file>

<file name="apps/meteor/server/lib/omnichannel/business-hour/filterBusinessHoursThatMustBeOpened.ts">

<violation number="1" location="apps/meteor/server/lib/omnichannel/business-hour/filterBusinessHoursThatMustBeOpened.ts:51">
P2: During the finish minute, this predicate reports the business hour as open while the existing close cron removes it at the minute’s start. New agents or a business-hour save during that minute can therefore be assigned or reopened inconsistently with existing agents; move the close operation to after the finish minute or otherwise align the close path with this inclusive boundary.</violation>
</file>

<file name="apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx">

<violation number="1" location="apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx:137">
P2: When the room renders before its subscription is populated, this expression passes `undefined` for the thread draft and `useDraft` permanently captures that initial value. Load the server draft when it becomes available, or defer composer initialization until the subscription data is ready.</violation>
</file>

<file name="apps/meteor/client/views/room/modals/ReadReceiptsModal/ReadReceiptsModal.tsx">

<violation number="1" location="apps/meteor/client/views/room/modals/ReadReceiptsModal/ReadReceiptsModal.tsx:26">
P2: After switching to `useEndpoint`, the existing ReadReceiptsModal stories still mock only the removed DDP method, so Storybook and composed tests hit the mock provider's unimplemented endpoint and never render the receipt fixtures. Replace the story decorators' `withMethod` stubs with `withEndpoint('GET', '/v1/chat.getMessageReadReceipts', ...)` responses matching the REST `{ receipts }` shape.</violation>
</file>

<file name="apps/meteor/app/apps/server/converters/codecs/enums.ts">

<violation number="1" location="apps/meteor/app/apps/server/converters/codecs/enums.ts:26">
P2: Non-string enum values now pass the codec boundary because these schemas are `z.any()`. `UserTypeCodec` and `UserStatusConnectionCodec` can call `.toUpperCase()` on such values, while room/setting values can propagate unchanged; restore the original `z.string()`/`z.string().optional()` schemas for all four codecs.</violation>
</file>

<file name="apps/meteor/app/apps/server/converters/uploads.ts">

<violation number="1" location="apps/meteor/app/apps/server/converters/uploads.ts:33">
P2: When an upload has no `rid`, `convertToApp` now invokes the room converter with `undefined`. Preserve the previous missing-`rid` guard in the upload codec so roomless uploads convert without an invalid room lookup.</violation>
</file>

<file name="apps/meteor/client/lib/userPresence.ts">

<violation number="1" location="apps/meteor/client/lib/userPresence.ts:164">
P2: When a browser user was already marked idle, disabling auto-away leaves `idle` true and force-sends Away on the preference update or next reconnect. Clear browser idle state when auto-away is disabled, or gate `reassertPresence` on auto-away being enabled.</violation>
</file>

<file name="apps/meteor/client/views/room/composer/messageBox/hooks/useDraft.ts">

<violation number="1" location="apps/meteor/client/views/room/composer/messageBox/hooks/useDraft.ts:54">
P2: When the same composer is reopened or edited before a draft-save request resolves, the request's success handler deletes the newer local draft. Clear the key only if it still contains the value that this request saved.</violation>
</file>

<file name="apps/meteor/client/lib/utils/threadMessageUtils.ts">

<violation number="1" location="apps/meteor/client/lib/utils/threadMessageUtils.ts:90">
P2: When older thread pages are loaded, adding or deleting a message in a newer page leaves `pageParams` stale. `getPreviousPageParam` then requests the wrong offset, causing the next pagination fetch to skip a message or return a duplicate; rebase page parameters when the mutation changes preceding-page counts, or invalidate/refetch the pagination state.</violation>
</file>

<file name="apps/meteor/client/views/room/body/hooks/useIsAtBottomRef.ts">

<violation number="1" location="apps/meteor/client/views/room/body/hooks/useIsAtBottomRef.ts:8">
P2: useRef only applies its initial value on the first render, so the seed from RoomManager.getStore(rid)?.atBottom is never re-read when the rid changes on a later render. RoomBody is memoized and stays mounted across room switches (the inner Box/scrollbars are keyed by room._id to force per-room remounts), so opening a room that was previously left scrolled mid-history does not restore its stored atBottom — the ref keeps the value from the first room opened. Recompute the seed when rid changes, e.g. store the persisted value in state or set ref.current when rid differs.</violation>
</file>

<file name="apps/meteor/server/api/lib/queryFiltersStatus.ts">

<violation number="1" location="apps/meteor/server/api/lib/queryFiltersStatus.ts:10">
P2: When a users.list query filters on a field that merely starts with 'status' but is not a presence/redacted status field (e.g. statusLivechat for livechat availability, or a user custom field named like 'statusNote'), queryFiltersStatus returns true and users.ts:723 then excludes hidden users even though the filter has nothing to do with their private status. Consider matching an explicit set of status fields (status, statusText, statusConnection, statusDefault, statusExpiresAt, statusSource) instead of the 'status' prefix, or restricting the check so it doesn't apply to non-presence fields.</violation>
</file>

<file name="apps/meteor/ee/server/api/mcp/server.ts">

<violation number="1" location="apps/meteor/ee/server/api/mcp/server.ts:107">
P2: When a client cancels an in-flight `tools/call`, this branch drops the notification without aborting the corresponding `dispatchTool`; long-running or mutating REST calls continue. Track active request IDs and propagate cancellation to the loopback fetch.</violation>
</file>

<file name="apps/meteor/server/lib/2fa/functions/totp.ts">

<violation number="1" location="apps/meteor/server/lib/2fa/functions/totp.ts:21">
P1: When an account already has another 2FA method, a hijacked session can still call deprecated `2fa:enable` followed by `2fa:validateTempToken` to enroll TOTP without verifying the existing factor. Enforce the verification gate for the legacy enrollment callers too, or move it into a shared authenticated boundary before the DDP methods are removed.</violation>

<violation number="2" location="apps/meteor/server/lib/2fa/functions/totp.ts:139">
P2: After regenerating backup codes, the active security view continues displaying the old `codesRemaining` value because this write provides no new count or client update. Return the new remaining count or update the client state after regeneration.</violation>
</file>

<file name="apps/meteor/server/lib/saml/lib/Utils.ts">

<violation number="1" location="apps/meteor/server/lib/saml/lib/Utils.ts:167">
P3: When a provider name starts with `provider=` and contains `&loginClient=`, a flow without a login client is corrupted on callback because the decoder treats the raw provider as compound RelayState. Use an unambiguous marker or otherwise distinguish legacy raw RelayState before parsing.</violation>
</file>

<file name=".yarnrc.yml">

<violation number="1" location=".yarnrc.yml:2">
P2: `approvedGitRepositories: "**"` allows Yarn to fetch git dependencies from *any* repository. The default allowlist is empty, which blocks all git deps; this change disables that gate entirely. Since `enableScripts: true` is also enabled, a malicious git dependency can run arbitrary install scripts on every developer/CI machine. Scope the allowlist to the actual hosts used by the project instead of the `**` wildcard.</violation>

<violation number="2" location=".yarnrc.yml:16">
P2: `npmMinimalAgeGate: 0` disables Yarn's supply-chain protection that refuses to install npm packages published within the last day (default `1d`, introduced in Yarn 4.12). This reduces the attack surface by letting recently published, potentially compromised or already-republished packages be reviewed before installation. Keeping it at `1d` (or an explicit age) preserves that protection; use `yarn add --no-time-gate` for the rare legitimate case instead of disabling it globally.</violation>
</file>

Note: This PR contains a large number of files. cubic only reviews up to 400 files per PR, so some files may not have been reviewed. cubic prioritizes the most important files to review.

Re-trigger cubic

return user;
};

export const enableTotp = async (userId: string | null): Promise<{ secret: string; url: string }> => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1: When an account already has another 2FA method, a hijacked session can still call deprecated 2fa:enable followed by 2fa:validateTempToken to enroll TOTP without verifying the existing factor. Enforce the verification gate for the legacy enrollment callers too, or move it into a shared authenticated boundary before the DDP methods are removed.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/2fa/functions/totp.ts, line 21:

<comment>When an account already has another 2FA method, a hijacked session can still call deprecated `2fa:enable` followed by `2fa:validateTempToken` to enroll TOTP without verifying the existing factor. Enforce the verification gate for the legacy enrollment callers too, or move it into a shared authenticated boundary before the DDP methods are removed.</comment>

<file context>
@@ -0,0 +1,154 @@
+	return user;
+};
+
+export const enableTotp = async (userId: string | null): Promise<{ secret: string; url: string }> => {
+	const user = await requireUser(userId);
+
</file context>

return undefined;
}

const hidden = await StatusVisibility.getHiddenFrom(viewerId);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: When Spotlight requests only rooms, this helper still awaits a status-visibility service RPC, adding avoidable latency and a service dependency to room-only and anonymous searches. Perform the lookup only when the user-search surface is enabled.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/statusVisibility/hiddenUsers.ts, line 12:

<comment>When Spotlight requests only rooms, this helper still awaits a status-visibility service RPC, adding avoidable latency and a service dependency to room-only and anonymous searches. Perform the lookup only when the user-search surface is enabled.</comment>

<file context>
@@ -0,0 +1,21 @@
+		return undefined;
+	}
+
+	const hidden = await StatusVisibility.getHiddenFrom(viewerId);
+
+	return hidden.length ? new Set(hidden) : undefined;
</file context>


const isListItem = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-item');
const isCollapseGroup = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-collapse-group__bar');
const isCollapseGroup = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-collapse-group__bar-button');

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: Only one of the two duplicated copies of useSidebarListNavigation was updated. This file now matches 'rcx-sidebar-v2-collapse-group__bar-button', but the identical hook at apps/meteor/client/views/navigation/sidebar/RoomList/useSidebarListNavigation.ts:6 still checks 'rcx-sidebar-v2-collapse-group__bar', and both are wired into live navigation (the sidebar RoomListWrapper uses this copy, SidepanelListWrapper imports the other). Whichever class name matches the fuselage DOM, at least one surface now has divergent or broken Arrow/Tab handling for collapse groups. Sync the class guard across both copies (and confirm which class fuselage actually emits), or extract the shared hook so they cannot drift again.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/client/sidebar/RoomList/useSidebarListNavigation.ts, line 5:

<comment>Only one of the two duplicated copies of useSidebarListNavigation was updated. This file now matches 'rcx-sidebar-v2-collapse-group__bar-button', but the identical hook at apps/meteor/client/views/navigation/sidebar/RoomList/useSidebarListNavigation.ts:6 still checks 'rcx-sidebar-v2-collapse-group__bar', and both are wired into live navigation (the sidebar RoomListWrapper uses this copy, SidepanelListWrapper imports the other). Whichever class name matches the fuselage DOM, at least one surface now has divergent or broken Arrow/Tab handling for collapse groups. Sync the class guard across both copies (and confirm which class fuselage actually emits), or extract the shared hook so they cannot drift again.</comment>

<file context>
@@ -2,7 +2,7 @@ import { useFocusManager } from '@react-aria/focus';
 
 const isListItem = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-item');
-const isCollapseGroup = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-collapse-group__bar');
+const isCollapseGroup = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-collapse-group__bar-button');
 const isListItemMenu = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-item__menu');
 
</file context>

sprintf: [users.map((element) => element).join(', ')],
})}`
: '';
const ifFrom = users.length ? ` ${t('if_they_are_from', { users: users.map((element) => element).join(', ') })}` : '';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: When a workspace overrides these keys in Custom_Translations using the previous %s placeholders, the warning now displays literal %s tokens because this call no longer runs the sprintf postprocessor. Preserve sprintf compatibility alongside the named variables, or migrate existing custom translations.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/client/views/room/contextualBar/PruneMessages/PruneMessagesWithData.tsx, line 126:

<comment>When a workspace overrides these keys in `Custom_Translations` using the previous `%s` placeholders, the warning now displays literal `%s` tokens because this call no longer runs the sprintf postprocessor. Preserve sprintf compatibility alongside the named variables, or migrate existing custom translations.</comment>

<file context>
@@ -123,19 +123,16 @@ const PruneMessagesWithData = () => {
-					sprintf: [users.map((element) => element).join(', ')],
-				})}`
-			: '';
+		const ifFrom = users.length ? ` ${t('if_they_are_from', { users: users.map((element) => element).join(', ') })}` : '';
 		const filesOrMessages = attached ? t('files') : t('messages');
 
</file context>

return user;
const ownBlockList = myself ? user.settings?.preferences?.statusVisibilityDenied : undefined;

if (settings.get<boolean>('Accounts_StatusVisibility_Enabled') && ownBlockList?.length && user.settings?.preferences) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: If the setting is disabled after the projection is built, this condition skips ID-to-username conversion and returns raw statusVisibilityDenied IDs. Remove the field whenever the setting is disabled before returning.

(Based on your team's feedback about keeping preference IDs internal.) .

View Feedback

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/users/getFullUserData.ts, line 151:

<comment>If the setting is disabled after the projection is built, this condition skips ID-to-username conversion and returns raw `statusVisibilityDenied` IDs. Remove the field whenever the setting is disabled before returning.

(Based on your team's feedback about keeping preference IDs internal.) .</comment>

<file context>
@@ -140,5 +146,13 @@ export async function getFullUserDataByUniqueSearchTerm(
-	return user;
+	const ownBlockList = myself ? user.settings?.preferences?.statusVisibilityDenied : undefined;
+
+	if (settings.get<boolean>('Accounts_StatusVisibility_Enabled') && ownBlockList?.length && user.settings?.preferences) {
+		user.settings.preferences.statusVisibilityDenied = (await resolveUsersByIds(ownBlockList)).usernames;
+	}
</file context>


const { codes, hashedCodes } = TOTP.generateCodes();

await Users.update2FABackupCodesByUserId(user._id, hashedCodes);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: After regenerating backup codes, the active security view continues displaying the old codesRemaining value because this write provides no new count or client update. Return the new remaining count or update the client state after regeneration.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/2fa/functions/totp.ts, line 139:

<comment>After regenerating backup codes, the active security view continues displaying the old `codesRemaining` value because this write provides no new count or client update. Return the new remaining count or update the client state after regeneration.</comment>

<file context>
@@ -0,0 +1,154 @@
+
+	const { codes, hashedCodes } = TOTP.generateCodes();
+
+	await Users.update2FABackupCodesByUserId(user._id, hashedCodes);
+
+	return { codes };
</file context>

Comment thread .yarnrc.yml

nodeLinker: node-modules

npmMinimalAgeGate: 0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: npmMinimalAgeGate: 0 disables Yarn's supply-chain protection that refuses to install npm packages published within the last day (default 1d, introduced in Yarn 4.12). This reduces the attack surface by letting recently published, potentially compromised or already-republished packages be reviewed before installation. Keeping it at 1d (or an explicit age) preserves that protection; use yarn add --no-time-gate for the rare legitimate case instead of disabling it globally.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .yarnrc.yml, line 16:

<comment>`npmMinimalAgeGate: 0` disables Yarn's supply-chain protection that refuses to install npm packages published within the last day (default `1d`, introduced in Yarn 4.12). This reduces the attack surface by letting recently published, potentially compromised or already-republished packages be reviewed before installation. Keeping it at `1d` (or an explicit age) preserves that protection; use `yarn add --no-time-gate` for the rare legitimate case instead of disabling it globally.</comment>

<file context>
@@ -6,10 +9,14 @@ enableGlobalCache: false
+
 nodeLinker: node-modules
 
+npmMinimalAgeGate: 0
+
 plugins:
</file context>
Suggested change
npmMinimalAgeGate: 0
npmMinimalAgeGate: 1d

Comment thread .yarnrc.yml
@@ -1,3 +1,6 @@
approvedGitRepositories:
- "**"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: approvedGitRepositories: "**" allows Yarn to fetch git dependencies from any repository. The default allowlist is empty, which blocks all git deps; this change disables that gate entirely. Since enableScripts: true is also enabled, a malicious git dependency can run arbitrary install scripts on every developer/CI machine. Scope the allowlist to the actual hosts used by the project instead of the ** wildcard.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .yarnrc.yml, line 2:

<comment>`approvedGitRepositories: "**"` allows Yarn to fetch git dependencies from *any* repository. The default allowlist is empty, which blocks all git deps; this change disables that gate entirely. Since `enableScripts: true` is also enabled, a malicious git dependency can run arbitrary install scripts on every developer/CI machine. Scope the allowlist to the actual hosts used by the project instead of the `**` wildcard.</comment>

<file context>
@@ -1,3 +1,6 @@
+approvedGitRepositories:
+  - "**"
+
 checksumBehavior: update
</file context>
Suggested change
- "**"
- "https://github.com/*"
- "ssh://git@github.com/*"

if (!isPrivate) {
return t('Encrypted_not_available', { roomType: t(roomType) });
}
if (e2eEnforcedForPrivate && encrypted) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P3: The new enforced-by-policy branch has no test coverage in useEncryptedRoomDescription.spec.ts. Add a case that sets E2E_Force_Encryption_For_Private_Rooms=true (with E2E_Enable=true) and asserts the "Encrypted_enforced_by_workspace_policy" result for private+encrypted rooms, so the new behavior is locked in.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/client/navbar/NavBarPagesGroup/actions/useEncryptedRoomDescription.ts, line 16:

<comment>The new enforced-by-policy branch has no test coverage in useEncryptedRoomDescription.spec.ts. Add a case that sets E2E_Force_Encryption_For_Private_Rooms=true (with E2E_Enable=true) and asserts the "Encrypted_enforced_by_workspace_policy" result for private+encrypted rooms, so the new behavior is locked in.</comment>

<file context>
@@ -12,6 +13,9 @@ export const useEncryptedRoomDescription = (roomType: 'channel' | 'team' | 'disc
 		if (!isPrivate) {
 			return t('Encrypted_not_available', { roomType: t(roomType) });
 		}
+		if (e2eEnforcedForPrivate && encrypted) {
+			return t('Encrypted_enforced_by_workspace_policy');
+		}
</file context>

return {};
}

if (relayState.startsWith('provider=') && relayState.includes('&loginClient=')) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P3: When a provider name starts with provider= and contains &loginClient=, a flow without a login client is corrupted on callback because the decoder treats the raw provider as compound RelayState. Use an unambiguous marker or otherwise distinguish legacy raw RelayState before parsing.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/saml/lib/Utils.ts, line 167:

<comment>When a provider name starts with `provider=` and contains `&loginClient=`, a flow without a login client is corrupted on callback because the decoder treats the raw provider as compound RelayState. Use an unambiguous marker or otherwise distinguish legacy raw RelayState before parsing.</comment>

<file context>
@@ -137,6 +147,37 @@ export class SAMLUtils {
+			return {};
+		}
+
+		if (relayState.startsWith('provider=') && relayState.includes('&loginClient=')) {
+			const params = new URLSearchParams(relayState);
+			const provider = params.get('provider') ?? undefined;
</file context>

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

29 issues found across 1518 files

Not reviewed (too large): apps/meteor/tests/end-to-end/api/chat.ts (~2,612 lines), apps/meteor/tests/end-to-end/api/users.ts (~2,506 lines), packages/i18n/src/locales/de.i18n.json (~2,178 lines) - if these are generated or fixture files, add them to ignored paths to exclude them from future reviews.

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/server/lib/statusVisibility/hiddenUsers.ts">

<violation number="1" location="apps/meteor/server/lib/statusVisibility/hiddenUsers.ts:12">
P2: When Spotlight requests only rooms, this helper still awaits a status-visibility service RPC, adding avoidable latency and a service dependency to room-only and anonymous searches. Perform the lookup only when the user-search surface is enabled.</violation>
</file>

<file name="apps/meteor/client/sidebar/RoomList/useSidebarListNavigation.ts">

<violation number="1" location="apps/meteor/client/sidebar/RoomList/useSidebarListNavigation.ts:5">
P2: Only one of the two duplicated copies of useSidebarListNavigation was updated. This file now matches 'rcx-sidebar-v2-collapse-group__bar-button', but the identical hook at apps/meteor/client/views/navigation/sidebar/RoomList/useSidebarListNavigation.ts:6 still checks 'rcx-sidebar-v2-collapse-group__bar', and both are wired into live navigation (the sidebar RoomListWrapper uses this copy, SidepanelListWrapper imports the other). Whichever class name matches the fuselage DOM, at least one surface now has divergent or broken Arrow/Tab handling for collapse groups. Sync the class guard across both copies (and confirm which class fuselage actually emits), or extract the shared hook so they cannot drift again.</violation>
</file>

<file name="apps/meteor/client/views/room/contextualBar/PruneMessages/PruneMessagesWithData.tsx">

<violation number="1" location="apps/meteor/client/views/room/contextualBar/PruneMessages/PruneMessagesWithData.tsx:126">
P2: When a workspace overrides these keys in `Custom_Translations` using the previous `%s` placeholders, the warning now displays literal `%s` tokens because this call no longer runs the sprintf postprocessor. Preserve sprintf compatibility alongside the named variables, or migrate existing custom translations.</violation>
</file>

<file name="apps/meteor/server/lib/users/getFullUserData.ts">

<violation number="1" location="apps/meteor/server/lib/users/getFullUserData.ts:151">
P2: If the setting is disabled after the projection is built, this condition skips ID-to-username conversion and returns raw `statusVisibilityDenied` IDs. Remove the field whenever the setting is disabled before returning.

(Based on your team's feedback about keeping preference IDs internal.) .</violation>
</file>

<file name="apps/meteor/app/apps/server/converters/codecs/uploads.ts">

<violation number="1" location="apps/meteor/app/apps/server/converters/codecs/uploads.ts:34">
P2: When an `IUpload` has no `rid`, this callback calls `rooms.convertById(undefined)`, so converting room-less uploads can fail instead of completing without a room. Check `rid` before the lookup and return `undefined` when it is absent.</violation>
</file>

<file name="apps/meteor/client/views/room/ClassificationBanner/lib/engine.ts">

<violation number="1" location="apps/meteor/client/views/room/ClassificationBanner/lib/engine.ts:39">
P2: When a grouped attribute uses an empty `multipleLabel`, this renders a blank banner despite matching values. Fall back to the joined values or require a non-empty `multipleLabel` for grouped attributes.</violation>
</file>

<file name="apps/meteor/client/navbar/NavBarPagesGroup/actions/useEncryptedRoomDescription.ts">

<violation number="1" location="apps/meteor/client/navbar/NavBarPagesGroup/actions/useEncryptedRoomDescription.ts:16">
P3: The new enforced-by-policy branch has no test coverage in useEncryptedRoomDescription.spec.ts. Add a case that sets E2E_Force_Encryption_For_Private_Rooms=true (with E2E_Enable=true) and asserts the "Encrypted_enforced_by_workspace_policy" result for private+encrypted rooms, so the new behavior is locked in.</violation>
</file>

<file name="apps/meteor/app/apps/server/converters/codecs/departments.ts">

<violation number="1" location="apps/meteor/app/apps/server/converters/codecs/departments.ts:29">
P2: When a department has multiple forwarding targets, this codec exposes an array through `IAppsDepartment.departmentsAllowedToForward`, whose declared Apps-Engine type is `string`. Align the Apps-Engine contract and the conversion before returning this value, rather than hiding the mismatch with the cast.</violation>
</file>

<file name="apps/meteor/client/apps/gameCenter/GameCenterInvitePlayersModal.tsx">

<violation number="1" location="apps/meteor/client/apps/gameCenter/GameCenterInvitePlayersModal.tsx:37">
P2: Replacing `callWithErrorHandling('sendMessage', ...)` with a bare `sdk.rest.post` drops the error toast that `callWithErrorHandling` dispatched via `dispatchToastMessage`. If sending the invite message fails, the user now gets no feedback, only a `console.warn` in the outer catch. Keep the user-facing error handling (e.g., wrap the REST call the same way `groups.create` errors are surfaced, or use a toast helper) so a send failure is visible.</violation>
</file>

<file name="apps/meteor/client/components/GenericNoResults/GenericNoResults.tsx">

<violation number="1" location="apps/meteor/client/components/GenericNoResults/GenericNoResults.tsx:27">
P2: The aria-label is hardcoded to `t('No_results_found')`, but many callers pass a custom `title` (e.g. `GenericNoResults title={t('ABAC_No_attributes')}`, `title={t('No_message_reports')}`). A screen reader will then announce "No results found" while the visible text reads the custom title, producing misleading output. Mirror the visible label: `aria-label={title || t('No_results_found')}`.</violation>
</file>

<file name="apps/meteor/server/lib/saml/lib/ServiceProvider.ts">

<violation number="1" location="apps/meteor/server/lib/saml/lib/ServiceProvider.ts:146">
P2: When a provider name is long enough, the new compound RelayState exceeds SAML HTTP-Redirect’s 80-byte limit and can make authorize requests fail. Keep the RelayState within the binding limit, or fall back to the legacy provider-only state or server-side state for long provider names.</violation>
</file>

<file name="apps/meteor/client/views/root/hooks/useLoadMissedMessages.ts">

<violation number="1" location="apps/meteor/client/views/root/hooks/useLoadMissedMessages.ts:37">
P2: When a loaded reply points to a parent older than the oldest loaded message, this bound omits the parent deletion, so the reply keeps a stale `tmid` after reconnect. Reconcile loaded replies' thread parents separately or adjust the sync query to include those parent deletions.</violation>
</file>

<file name="apps/meteor/client/views/account/security/TwoFactorTOTP.tsx">

<violation number="1" location="apps/meteor/client/views/account/security/TwoFactorTOTP.tsx:20">
P2: When either REST call rejects for an invalid TOTP code, `isInvalidTotpError` receives a `Response`, not the decoded error body, so the user gets a generic response error instead of `Invalid_two_factor_code`. Parse the rejected response body or use the shared REST error conversion before checking the error code.</violation>
</file>

<file name="apps/meteor/server/lib/omnichannel/business-hour/filterBusinessHoursThatMustBeOpened.ts">

<violation number="1" location="apps/meteor/server/lib/omnichannel/business-hour/filterBusinessHoursThatMustBeOpened.ts:51">
P2: During the finish minute, this predicate reports the business hour as open while the existing close cron removes it at the minute’s start. New agents or a business-hour save during that minute can therefore be assigned or reopened inconsistently with existing agents; move the close operation to after the finish minute or otherwise align the close path with this inclusive boundary.</violation>
</file>

<file name="apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx">

<violation number="1" location="apps/meteor/client/views/room/composer/messageBox/MessageBox.tsx:137">
P2: When the room renders before its subscription is populated, this expression passes `undefined` for the thread draft and `useDraft` permanently captures that initial value. Load the server draft when it becomes available, or defer composer initialization until the subscription data is ready.</violation>
</file>

<file name="apps/meteor/client/views/room/modals/ReadReceiptsModal/ReadReceiptsModal.tsx">

<violation number="1" location="apps/meteor/client/views/room/modals/ReadReceiptsModal/ReadReceiptsModal.tsx:26">
P2: After switching to `useEndpoint`, the existing ReadReceiptsModal stories still mock only the removed DDP method, so Storybook and composed tests hit the mock provider's unimplemented endpoint and never render the receipt fixtures. Replace the story decorators' `withMethod` stubs with `withEndpoint('GET', '/v1/chat.getMessageReadReceipts', ...)` responses matching the REST `{ receipts }` shape.</violation>
</file>

<file name="apps/meteor/app/apps/server/converters/codecs/enums.ts">

<violation number="1" location="apps/meteor/app/apps/server/converters/codecs/enums.ts:26">
P2: Non-string enum values now pass the codec boundary because these schemas are `z.any()`. `UserTypeCodec` and `UserStatusConnectionCodec` can call `.toUpperCase()` on such values, while room/setting values can propagate unchanged; restore the original `z.string()`/`z.string().optional()` schemas for all four codecs.</violation>
</file>

<file name="apps/meteor/app/apps/server/converters/uploads.ts">

<violation number="1" location="apps/meteor/app/apps/server/converters/uploads.ts:33">
P2: When an upload has no `rid`, `convertToApp` now invokes the room converter with `undefined`. Preserve the previous missing-`rid` guard in the upload codec so roomless uploads convert without an invalid room lookup.</violation>
</file>

<file name="apps/meteor/client/lib/userPresence.ts">

<violation number="1" location="apps/meteor/client/lib/userPresence.ts:164">
P2: When a browser user was already marked idle, disabling auto-away leaves `idle` true and force-sends Away on the preference update or next reconnect. Clear browser idle state when auto-away is disabled, or gate `reassertPresence` on auto-away being enabled.</violation>
</file>

<file name="apps/meteor/client/views/room/composer/messageBox/hooks/useDraft.ts">

<violation number="1" location="apps/meteor/client/views/room/composer/messageBox/hooks/useDraft.ts:54">
P2: When the same composer is reopened or edited before a draft-save request resolves, the request's success handler deletes the newer local draft. Clear the key only if it still contains the value that this request saved.</violation>
</file>

<file name="apps/meteor/client/lib/utils/threadMessageUtils.ts">

<violation number="1" location="apps/meteor/client/lib/utils/threadMessageUtils.ts:90">
P2: When older thread pages are loaded, adding or deleting a message in a newer page leaves `pageParams` stale. `getPreviousPageParam` then requests the wrong offset, causing the next pagination fetch to skip a message or return a duplicate; rebase page parameters when the mutation changes preceding-page counts, or invalidate/refetch the pagination state.</violation>
</file>

<file name="apps/meteor/client/views/room/body/hooks/useIsAtBottomRef.ts">

<violation number="1" location="apps/meteor/client/views/room/body/hooks/useIsAtBottomRef.ts:8">
P2: useRef only applies its initial value on the first render, so the seed from RoomManager.getStore(rid)?.atBottom is never re-read when the rid changes on a later render. RoomBody is memoized and stays mounted across room switches (the inner Box/scrollbars are keyed by room._id to force per-room remounts), so opening a room that was previously left scrolled mid-history does not restore its stored atBottom — the ref keeps the value from the first room opened. Recompute the seed when rid changes, e.g. store the persisted value in state or set ref.current when rid differs.</violation>
</file>

<file name="apps/meteor/server/api/lib/queryFiltersStatus.ts">

<violation number="1" location="apps/meteor/server/api/lib/queryFiltersStatus.ts:10">
P2: When a users.list query filters on a field that merely starts with 'status' but is not a presence/redacted status field (e.g. statusLivechat for livechat availability, or a user custom field named like 'statusNote'), queryFiltersStatus returns true and users.ts:723 then excludes hidden users even though the filter has nothing to do with their private status. Consider matching an explicit set of status fields (status, statusText, statusConnection, statusDefault, statusExpiresAt, statusSource) instead of the 'status' prefix, or restricting the check so it doesn't apply to non-presence fields.</violation>
</file>

<file name="apps/meteor/ee/server/api/mcp/server.ts">

<violation number="1" location="apps/meteor/ee/server/api/mcp/server.ts:107">
P2: When a client cancels an in-flight `tools/call`, this branch drops the notification without aborting the corresponding `dispatchTool`; long-running or mutating REST calls continue. Track active request IDs and propagate cancellation to the loopback fetch.</violation>
</file>

<file name="apps/meteor/server/lib/2fa/functions/totp.ts">

<violation number="1" location="apps/meteor/server/lib/2fa/functions/totp.ts:21">
P1: When an account already has another 2FA method, a hijacked session can still call deprecated `2fa:enable` followed by `2fa:validateTempToken` to enroll TOTP without verifying the existing factor. Enforce the verification gate for the legacy enrollment callers too, or move it into a shared authenticated boundary before the DDP methods are removed.</violation>

<violation number="2" location="apps/meteor/server/lib/2fa/functions/totp.ts:139">
P2: After regenerating backup codes, the active security view continues displaying the old `codesRemaining` value because this write provides no new count or client update. Return the new remaining count or update the client state after regeneration.</violation>
</file>

<file name="apps/meteor/server/lib/saml/lib/Utils.ts">

<violation number="1" location="apps/meteor/server/lib/saml/lib/Utils.ts:167">
P3: When a provider name starts with `provider=` and contains `&loginClient=`, a flow without a login client is corrupted on callback because the decoder treats the raw provider as compound RelayState. Use an unambiguous marker or otherwise distinguish legacy raw RelayState before parsing.</violation>
</file>

<file name=".yarnrc.yml">

<violation number="1" location=".yarnrc.yml:2">
P2: `approvedGitRepositories: "**"` allows Yarn to fetch git dependencies from *any* repository. The default allowlist is empty, which blocks all git deps; this change disables that gate entirely. Since `enableScripts: true` is also enabled, a malicious git dependency can run arbitrary install scripts on every developer/CI machine. Scope the allowlist to the actual hosts used by the project instead of the `**` wildcard.</violation>

<violation number="2" location=".yarnrc.yml:16">
P2: `npmMinimalAgeGate: 0` disables Yarn's supply-chain protection that refuses to install npm packages published within the last day (default `1d`, introduced in Yarn 4.12). This reduces the attack surface by letting recently published, potentially compromised or already-republished packages be reviewed before installation. Keeping it at `1d` (or an explicit age) preserves that protection; use `yarn add --no-time-gate` for the rare legitimate case instead of disabling it globally.</violation>
</file>

Note: This PR contains a large number of files. cubic only reviews up to 400 files per PR, so some files may not have been reviewed. cubic prioritizes the most important files to review.

Re-trigger cubic

return user;
};

export const enableTotp = async (userId: string | null): Promise<{ secret: string; url: string }> => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1: When an account already has another 2FA method, a hijacked session can still call deprecated 2fa:enable followed by 2fa:validateTempToken to enroll TOTP without verifying the existing factor. Enforce the verification gate for the legacy enrollment callers too, or move it into a shared authenticated boundary before the DDP methods are removed.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/2fa/functions/totp.ts, line 21:

<comment>When an account already has another 2FA method, a hijacked session can still call deprecated `2fa:enable` followed by `2fa:validateTempToken` to enroll TOTP without verifying the existing factor. Enforce the verification gate for the legacy enrollment callers too, or move it into a shared authenticated boundary before the DDP methods are removed.</comment>

<file context>
@@ -0,0 +1,154 @@
+	return user;
+};
+
+export const enableTotp = async (userId: string | null): Promise<{ secret: string; url: string }> => {
+	const user = await requireUser(userId);
+
</file context>

return undefined;
}

const hidden = await StatusVisibility.getHiddenFrom(viewerId);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: When Spotlight requests only rooms, this helper still awaits a status-visibility service RPC, adding avoidable latency and a service dependency to room-only and anonymous searches. Perform the lookup only when the user-search surface is enabled.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/statusVisibility/hiddenUsers.ts, line 12:

<comment>When Spotlight requests only rooms, this helper still awaits a status-visibility service RPC, adding avoidable latency and a service dependency to room-only and anonymous searches. Perform the lookup only when the user-search surface is enabled.</comment>

<file context>
@@ -0,0 +1,21 @@
+		return undefined;
+	}
+
+	const hidden = await StatusVisibility.getHiddenFrom(viewerId);
+
+	return hidden.length ? new Set(hidden) : undefined;
</file context>


const isListItem = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-item');
const isCollapseGroup = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-collapse-group__bar');
const isCollapseGroup = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-collapse-group__bar-button');

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: Only one of the two duplicated copies of useSidebarListNavigation was updated. This file now matches 'rcx-sidebar-v2-collapse-group__bar-button', but the identical hook at apps/meteor/client/views/navigation/sidebar/RoomList/useSidebarListNavigation.ts:6 still checks 'rcx-sidebar-v2-collapse-group__bar', and both are wired into live navigation (the sidebar RoomListWrapper uses this copy, SidepanelListWrapper imports the other). Whichever class name matches the fuselage DOM, at least one surface now has divergent or broken Arrow/Tab handling for collapse groups. Sync the class guard across both copies (and confirm which class fuselage actually emits), or extract the shared hook so they cannot drift again.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/client/sidebar/RoomList/useSidebarListNavigation.ts, line 5:

<comment>Only one of the two duplicated copies of useSidebarListNavigation was updated. This file now matches 'rcx-sidebar-v2-collapse-group__bar-button', but the identical hook at apps/meteor/client/views/navigation/sidebar/RoomList/useSidebarListNavigation.ts:6 still checks 'rcx-sidebar-v2-collapse-group__bar', and both are wired into live navigation (the sidebar RoomListWrapper uses this copy, SidepanelListWrapper imports the other). Whichever class name matches the fuselage DOM, at least one surface now has divergent or broken Arrow/Tab handling for collapse groups. Sync the class guard across both copies (and confirm which class fuselage actually emits), or extract the shared hook so they cannot drift again.</comment>

<file context>
@@ -2,7 +2,7 @@ import { useFocusManager } from '@react-aria/focus';
 
 const isListItem = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-item');
-const isCollapseGroup = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-collapse-group__bar');
+const isCollapseGroup = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-collapse-group__bar-button');
 const isListItemMenu = (node: EventTarget) => (node as HTMLElement).classList.contains('rcx-sidebar-v2-item__menu');
 
</file context>

sprintf: [users.map((element) => element).join(', ')],
})}`
: '';
const ifFrom = users.length ? ` ${t('if_they_are_from', { users: users.map((element) => element).join(', ') })}` : '';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: When a workspace overrides these keys in Custom_Translations using the previous %s placeholders, the warning now displays literal %s tokens because this call no longer runs the sprintf postprocessor. Preserve sprintf compatibility alongside the named variables, or migrate existing custom translations.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/client/views/room/contextualBar/PruneMessages/PruneMessagesWithData.tsx, line 126:

<comment>When a workspace overrides these keys in `Custom_Translations` using the previous `%s` placeholders, the warning now displays literal `%s` tokens because this call no longer runs the sprintf postprocessor. Preserve sprintf compatibility alongside the named variables, or migrate existing custom translations.</comment>

<file context>
@@ -123,19 +123,16 @@ const PruneMessagesWithData = () => {
-					sprintf: [users.map((element) => element).join(', ')],
-				})}`
-			: '';
+		const ifFrom = users.length ? ` ${t('if_they_are_from', { users: users.map((element) => element).join(', ') })}` : '';
 		const filesOrMessages = attached ? t('files') : t('messages');
 
</file context>

return user;
const ownBlockList = myself ? user.settings?.preferences?.statusVisibilityDenied : undefined;

if (settings.get<boolean>('Accounts_StatusVisibility_Enabled') && ownBlockList?.length && user.settings?.preferences) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: If the setting is disabled after the projection is built, this condition skips ID-to-username conversion and returns raw statusVisibilityDenied IDs. Remove the field whenever the setting is disabled before returning.

(Based on your team's feedback about keeping preference IDs internal.) .

View Feedback

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/users/getFullUserData.ts, line 151:

<comment>If the setting is disabled after the projection is built, this condition skips ID-to-username conversion and returns raw `statusVisibilityDenied` IDs. Remove the field whenever the setting is disabled before returning.

(Based on your team's feedback about keeping preference IDs internal.) .</comment>

<file context>
@@ -140,5 +146,13 @@ export async function getFullUserDataByUniqueSearchTerm(
-	return user;
+	const ownBlockList = myself ? user.settings?.preferences?.statusVisibilityDenied : undefined;
+
+	if (settings.get<boolean>('Accounts_StatusVisibility_Enabled') && ownBlockList?.length && user.settings?.preferences) {
+		user.settings.preferences.statusVisibilityDenied = (await resolveUsersByIds(ownBlockList)).usernames;
+	}
</file context>


const { codes, hashedCodes } = TOTP.generateCodes();

await Users.update2FABackupCodesByUserId(user._id, hashedCodes);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: After regenerating backup codes, the active security view continues displaying the old codesRemaining value because this write provides no new count or client update. Return the new remaining count or update the client state after regeneration.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/2fa/functions/totp.ts, line 139:

<comment>After regenerating backup codes, the active security view continues displaying the old `codesRemaining` value because this write provides no new count or client update. Return the new remaining count or update the client state after regeneration.</comment>

<file context>
@@ -0,0 +1,154 @@
+
+	const { codes, hashedCodes } = TOTP.generateCodes();
+
+	await Users.update2FABackupCodesByUserId(user._id, hashedCodes);
+
+	return { codes };
</file context>

Comment thread .yarnrc.yml

nodeLinker: node-modules

npmMinimalAgeGate: 0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: npmMinimalAgeGate: 0 disables Yarn's supply-chain protection that refuses to install npm packages published within the last day (default 1d, introduced in Yarn 4.12). This reduces the attack surface by letting recently published, potentially compromised or already-republished packages be reviewed before installation. Keeping it at 1d (or an explicit age) preserves that protection; use yarn add --no-time-gate for the rare legitimate case instead of disabling it globally.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .yarnrc.yml, line 16:

<comment>`npmMinimalAgeGate: 0` disables Yarn's supply-chain protection that refuses to install npm packages published within the last day (default `1d`, introduced in Yarn 4.12). This reduces the attack surface by letting recently published, potentially compromised or already-republished packages be reviewed before installation. Keeping it at `1d` (or an explicit age) preserves that protection; use `yarn add --no-time-gate` for the rare legitimate case instead of disabling it globally.</comment>

<file context>
@@ -6,10 +9,14 @@ enableGlobalCache: false
+
 nodeLinker: node-modules
 
+npmMinimalAgeGate: 0
+
 plugins:
</file context>
Suggested change
npmMinimalAgeGate: 0
npmMinimalAgeGate: 1d

Comment thread .yarnrc.yml
@@ -1,3 +1,6 @@
approvedGitRepositories:
- "**"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: approvedGitRepositories: "**" allows Yarn to fetch git dependencies from any repository. The default allowlist is empty, which blocks all git deps; this change disables that gate entirely. Since enableScripts: true is also enabled, a malicious git dependency can run arbitrary install scripts on every developer/CI machine. Scope the allowlist to the actual hosts used by the project instead of the ** wildcard.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .yarnrc.yml, line 2:

<comment>`approvedGitRepositories: "**"` allows Yarn to fetch git dependencies from *any* repository. The default allowlist is empty, which blocks all git deps; this change disables that gate entirely. Since `enableScripts: true` is also enabled, a malicious git dependency can run arbitrary install scripts on every developer/CI machine. Scope the allowlist to the actual hosts used by the project instead of the `**` wildcard.</comment>

<file context>
@@ -1,3 +1,6 @@
+approvedGitRepositories:
+  - "**"
+
 checksumBehavior: update
</file context>
Suggested change
- "**"
- "https://github.com/*"
- "ssh://git@github.com/*"

if (!isPrivate) {
return t('Encrypted_not_available', { roomType: t(roomType) });
}
if (e2eEnforcedForPrivate && encrypted) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P3: The new enforced-by-policy branch has no test coverage in useEncryptedRoomDescription.spec.ts. Add a case that sets E2E_Force_Encryption_For_Private_Rooms=true (with E2E_Enable=true) and asserts the "Encrypted_enforced_by_workspace_policy" result for private+encrypted rooms, so the new behavior is locked in.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/client/navbar/NavBarPagesGroup/actions/useEncryptedRoomDescription.ts, line 16:

<comment>The new enforced-by-policy branch has no test coverage in useEncryptedRoomDescription.spec.ts. Add a case that sets E2E_Force_Encryption_For_Private_Rooms=true (with E2E_Enable=true) and asserts the "Encrypted_enforced_by_workspace_policy" result for private+encrypted rooms, so the new behavior is locked in.</comment>

<file context>
@@ -12,6 +13,9 @@ export const useEncryptedRoomDescription = (roomType: 'channel' | 'team' | 'disc
 		if (!isPrivate) {
 			return t('Encrypted_not_available', { roomType: t(roomType) });
 		}
+		if (e2eEnforcedForPrivate && encrypted) {
+			return t('Encrypted_enforced_by_workspace_policy');
+		}
</file context>

return {};
}

if (relayState.startsWith('provider=') && relayState.includes('&loginClient=')) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P3: When a provider name starts with provider= and contains &loginClient=, a flow without a login client is corrupted on callback because the decoder treats the raw provider as compound RelayState. Use an unambiguous marker or otherwise distinguish legacy raw RelayState before parsing.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/meteor/server/lib/saml/lib/Utils.ts, line 167:

<comment>When a provider name starts with `provider=` and contains `&loginClient=`, a flow without a login client is corrupted on callback because the decoder treats the raw provider as compound RelayState. Use an unambiguous marker or otherwise distinguish legacy raw RelayState before parsing.</comment>

<file context>
@@ -137,6 +147,37 @@ export class SAMLUtils {
+			return {};
+		}
+
+		if (relayState.startsWith('provider=') && relayState.includes('&loginClient=')) {
+			const params = new URLSearchParams(relayState);
+			const provider = params.get('provider') ?? undefined;
</file context>

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.