Skip to content

Conversation

@dougfabris
Copy link
Member

@dougfabris dougfabris commented Dec 2, 2025

Proposed changes (including videos or screenshots)

This change replaces the deprecated current chats in favor of contact center.

We're doing it by rendering the directory in the current chats route in order to avoid confusion for users used to manage chats from that route. To be able to do that we're adding a useOmnichannelDirectoryRouter which is responsible to deal with both routes using the same user interface.

Additionally it removes view-omnichannel-contact-center permission.

Issue(s)

Steps to test or reproduce

Further comments

CORE-1442

Summary by CodeRabbit

  • New Features

    • Introduced "Contact Center" interface for managing omnichannel chats with improved navigation routing.
  • Bug Fixes

    • Improved routing consistency for omnichannel navigation paths.
  • UI Updates

    • Renamed chat management section from "Current Chats" to "Contact Center."
    • Updated interface icons for better visual clarity.

✏️ Tip: You can customize this high-level summary in your review settings.

@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Dec 2, 2025

Looks like this PR is ready to merge! 🎉
If you have any trouble, please check the PR guidelines

@changeset-bot
Copy link

changeset-bot bot commented Dec 2, 2025

⚠️ No Changeset found

Latest commit: 3180b76

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

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

Click here to learn what changesets are, and how to add one.

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 2, 2025

Walkthrough

Removes the deprecated "Current Chats" omnichannel view by deleting associated components, routes, and permissions. Consolidates navigation to route through a new useOmnichannelDirectoryRouter hook. Updates sidebar and admin menu items to reference "Contact Center" with revised routing patterns. Applies database migration to remove the view-livechat-current-chats permission and updates translations across all locales.

Changes

Cohort / File(s) Change Summary
Permission & Route Removal
apps/meteor/app/authorization/server/constant/permissions.ts, apps/meteor/server/startup/migrations/v331.ts, apps/meteor/server/startup/migrations/index.ts
Removed view-livechat-current-chats permission entry; added migration v331 to delete permission from database.
Current Chats Components
apps/meteor/client/views/omnichannel/currentChats/*
Deleted entire CurrentChatsPage, CurrentChatsRoute, CustomFieldsList, FilterByText, Label, and RemoveAllClosed components.
Navigation Route Updates
apps/meteor/client/views/omnichannel/routes.ts
Reordered route parameters from /omnichannel/current/:id?/:tab?/:context? to /omnichannel/current/:tab?/:context?/:id?; changed component from CurrentChatsRoute to OmnichannelDirectoryRouter.
Router Hook Introduction
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts
New hook wrapping useRouter with omnichannel-specific validation and navigation logic.
Directory Navigation Updates
apps/meteor/client/views/omnichannel/directory/*, apps/meteor/client/views/omnichannel/hooks/useOmnichannelCloseRoute.ts
Replaced useRoute-based navigation with useOmnichannelDirectoryRouter across ChatsContextualBar, ContactContextualBar, OmnichannelDirectoryPage, ChatsTable*, ContactTable*, ContactItemMenu, and closeRoute hook.
Admin Menu Navigation
apps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsx, apps/meteor/client/sidebar/header/actions/hooks/useAdministrationItems.tsx
Changed omnichannel navigation target from /omnichannel/current to /omnichannel.
Sidebar Item Updates
apps/meteor/client/views/omnichannel/sidebarItems.tsx
Changed icon from "message" to "address-book", label from "Current_Chats" to "Contact_Center", permission from view-livechat-current-chats to view-omnichannel-contact-center.
Room Header Navigation
apps/meteor/client/views/room/HeaderV2/Omnichannel/BackButton.tsx, apps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsx
Added route params (tab, context) to omnichannel-directory navigation; switched OmnichannelRoomHeader to use previousRouteName instead of currentRouteName.
E2E Test Page Objects
apps/meteor/tests/e2e/page-objects/omnichannel-current-chats.ts, apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts, apps/meteor/tests/e2e/page-objects/home-omnichannel.ts, apps/meteor/tests/e2e/page-objects/index.ts
Deleted OmnichannelCurrentChats; created OmnichannelChats with new ConfirmRemoveChat modal and methods; updated HomeOmnichannel to reference chats instead of currentChats; updated index re-export.
E2E Tests
apps/meteor/tests/e2e/omnichannel/*
Updated test references from OmnichannelCurrentChats to OmnichannelChats, changed URLs from /omnichannel/current/{id} to /omnichannel/current/chats/info/{id}, updated test descriptions to "Contact Center", and adapted removal flow to use new API.
Internationalization (All Locales)
packages/i18n/src/locales/*.i18n.json
Removed Current_Chats, view-livechat-current-chats, and view-livechat-current-chats_description translation keys across 60+ locale files.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Areas requiring extra attention:

  • Routing parameter reordering (apps/meteor/client/views/omnichannel/routes.ts): Verify the new parameter order /omnichannel/current/:tab?/:context?/:id? does not break existing client-side routing logic or deep-link handling.
  • useOmnichannelDirectoryRouter implementation (directory/hooks/useOmnichannelDirectoryRouter.ts): Ensure route name validation and fallback behavior correctly handle edge cases and all calling sites pass compatible parameters.
  • Navigation consistency across directory components: Confirm all usages of the new router hook in ChatsContextualBar, ContactContextualBar, ChatsTableRow, ContactTableRow, ContactItemMenu, and ContactTable follow the same pattern and pass required tab/context/id parameters.
  • Database migration (v331.ts): Verify migration safely removes the permission without foreign key violations or cascading issues.
  • E2E test refactoring: Validate that OmnichannelChats page object correctly implements all methods previously in OmnichannelCurrentChats and that new removeChatByName method integrates properly with ConfirmRemoveChat modal.
  • Locale file consistency: Spot-check a few locale files to ensure all three translation keys (Current_Chats, view-livechat-current-chats, view-livechat-current-chats_description) were removed where applicable.

Possibly related PRs

Suggested labels

stat: ready to merge, stat: QA assured

Poem

🐰 Hop away, old chats—your time has come and gone,
To Contact Center now, where new conversations dawn!
Reroute the paths, rewrite the scenes,
No more deprecated dreams—just fresh routines!
Translation keys rest, permissions fade,
The directory shines where old code obeyed.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'feat!: Remove omnichannel current chats panel' clearly and concisely summarizes the main objective of the changeset—removing the deprecated Current Chats panel in favor of Contact Center.
Linked Issues check ✅ Passed The code changes fully address the linked issue CORE-1442 objective: removing the deprecated Current Chats Panel, implementing Contact Center routing at the current-chats route, and adding the useOmnichannelDirectoryRouter hook for unified navigation.
Out of Scope Changes check ✅ Passed All changes are directly related to removing the Current Chats panel and integrating the Contact Center at the current-chats route; no unrelated modifications or scope creep detected.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/remove-oc-current-chats

📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between cbbe217 and 3180b76.

📒 Files selected for processing (2)
  • apps/meteor/app/authorization/server/constant/permissions.ts (0 hunks)
  • apps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsx (1 hunks)
💤 Files with no reviewable changes (1)
  • apps/meteor/app/authorization/server/constant/permissions.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsx

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

❤️ Share

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

@dougfabris dougfabris changed the title chore: Remove Omnichannel current chats panel chore: Remove omnichannel current chats panel Dec 2, 2025
@dougfabris dougfabris added this to the 8.0.0 milestone Dec 2, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 2, 2025

📦 Docker Image Size Report

📈 Changes

Service Current Baseline Change Percent
sum of all images 1.1GiB 1.1GiB +7.6MiB
rocketchat 355MiB 347MiB +7.9MiB
omnichannel-transcript-service 132MiB 132MiB -90KiB
queue-worker-service 132MiB 132MiB -91KiB
ddp-streamer-service 126MiB 126MiB -38KiB
account-service 113MiB 113MiB -41KiB
authorization-service 111MiB 111MiB -36KiB
presence-service 110MiB 110MiB -37KiB

📊 Historical Trend

---
config:
  theme: "dark"
  xyChart:
    width: 900
    height: 400
---
xychart
  title "Image Size Evolution by Service (Last 30 Days + This PR)"
  x-axis ["11/15 22:28", "11/16 01:28", "11/17 23:50", "11/18 22:53", "11/19 23:02", "11/21 16:49", "11/24 17:34", "11/27 22:32", "11/28 19:05", "12/01 23:01", "12/02 21:57", "12/03 21:00", "12/04 18:17", "12/05 21:56", "12/08 20:15", "12/09 22:17", "12/10 23:26", "12/11 21:56", "12/12 22:45", "12/13 01:34", "12/15 22:31", "12/16 22:18", "12/17 21:04", "12/18 20:41", "12/18 21:11 (PR)"]
  y-axis "Size (GB)" 0 --> 0.5
  line "account-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "authorization-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "ddp-streamer-service" [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]
  line "omnichannel-transcript-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
  line "presence-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "queue-worker-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
  line "rocketchat" [0.36, 0.36, 0.35, 0.35, 0.35, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.35]
Loading

Statistics (last 24 days):

  • 📊 Average: 1.5GiB
  • ⬇️ Minimum: 1.2GiB
  • ⬆️ Maximum: 1.6GiB
  • 🎯 Current PR: 1.1GiB
ℹ️ About this report

This report compares Docker image sizes from this build against the develop baseline.

  • Tag: pr-37673
  • Baseline: develop
  • Timestamp: 2025-12-18 21:11:02 UTC
  • Historical data points: 24

Updated: Thu, 18 Dec 2025 21:11:02 GMT

@ggazzo ggazzo force-pushed the release-8.0.0 branch 5 times, most recently from 169b783 to 73d9200 Compare December 2, 2025 23:22
@dougfabris dougfabris force-pushed the chore/remove-oc-current-chats branch 3 times, most recently from 74d1c6e to b32f41a Compare December 8, 2025 22:21
@dougfabris dougfabris force-pushed the chore/remove-oc-current-chats branch 2 times, most recently from 899dccf to fc61139 Compare December 9, 2025 15:27
@dougfabris dougfabris force-pushed the chore/remove-oc-current-chats branch from fc61139 to 859a91f Compare December 11, 2025 18:03
@RocketChat RocketChat deleted a comment from coderabbitai bot Dec 12, 2025
@dougfabris
Copy link
Member Author

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 12, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx (1)

12-23: Avoid mutating channels prop via in-place .sort().
channels?.sort(...) mutates the prop array; copy first.

- const latestChannel = channels?.sort((a, b) => {
+ const latestChannel = (channels ? [...channels] : undefined)?.sort((a, b) => {
    if (a.lastChat && b.lastChat) {
      return a.lastChat.ts > b.lastChat.ts ? -1 : 1;
    }
    return 0;
  })[0];
🧹 Nitpick comments (5)
apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts (1)

22-22: Consider renaming variable for consistency.

The variable poCurrentChats still references the old "Current Chats" terminology. For consistency with the refactoring, consider renaming it to poChats or poContactCenter throughout this file.

Apply this pattern throughout the file:

-	let poCurrentChats: OmnichannelChats;
+	let poChats: OmnichannelChats;

Also applies to: 285-285

apps/meteor/client/views/omnichannel/directory/contacts/ContactItemMenu.tsx (1)

21-33: Prefer a block body for handleContactEdit and pass it directly as onClick.

- const handleContactEdit = useEffectEvent((): void =>
-   omnichannelDirectoryRouter.navigate({
-     tab: 'contacts',
-     context: 'edit',
-     id: _id,
-   }),
- );
+ const handleContactEdit = useEffectEvent((): void => {
+   omnichannelDirectoryRouter.navigate({
+     tab: 'contacts',
+     context: 'edit',
+     id: _id,
+   });
+ });

  const menuOptions: GenericMenuItemProps[] = [
    {
      id: 'edit',
      icon: 'edit',
      content: t('Edit'),
-     onClick: () => handleContactEdit(),
+     onClick: handleContactEdit,
      disabled: !canEditContact,
    },

Also applies to: 38-45

apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx (1)

22-30: Minor: avoid calling getRouteName() twice; store it once for clarity.

 useEffect(() => {
-  if (!omnichannelDirectoryRouter.getRouteName() || (omnichannelDirectoryRouter.getRouteName() && !!tab)) {
+  const routeName = omnichannelDirectoryRouter.getRouteName();
+  if (!routeName || !!tab) {
     return;
   }

   omnichannelDirectoryRouter.navigate({ tab: 'chats' });
 }, [omnichannelDirectoryRouter, tab]);
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (2)

29-33: Optional: memoize the returned object to reduce identity churn.
If consumers pass this router object through props/context and rely on referential equality, { ...router, ... } will trigger avoidable rerenders. Consider useMemo around the return object.


10-19: Consider a dedicated method name instead of overriding navigate to prevent accidental misuse when passing this router around.

The hook spreads router and overrides navigate with a signature that differs from IRouter.navigate (it takes params and search directly instead of a route object with name property). While this works correctly in isolation, there's no explicit return type annotation to prevent the modified router from being mistakenly used as a drop-in IRouter replacement elsewhere in the codebase. Renaming to navigateDirectory makes the intent explicit and avoids potential confusion.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 73945b9 and cbbe217.

📒 Files selected for processing (96)
  • apps/meteor/app/authorization/server/constant/permissions.ts (0 hunks)
  • apps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsx (1 hunks)
  • apps/meteor/client/sidebar/header/actions/hooks/useAdministrationItems.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsx (0 hunks)
  • apps/meteor/client/views/omnichannel/currentChats/CurrentChatsRoute.tsx (0 hunks)
  • apps/meteor/client/views/omnichannel/currentChats/CustomFieldsList.tsx (0 hunks)
  • apps/meteor/client/views/omnichannel/currentChats/FilterByText.tsx (0 hunks)
  • apps/meteor/client/views/omnichannel/currentChats/Label.tsx (0 hunks)
  • apps/meteor/client/views/omnichannel/currentChats/RemoveAllClosed.tsx (0 hunks)
  • apps/meteor/client/views/omnichannel/directory/ChatsContextualBar.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/ContactContextualBar.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx (2 hunks)
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableFilter.tsx (2 hunks)
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx (3 hunks)
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactItemMenu.tsx (2 hunks)
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx (2 hunks)
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx (3 hunks)
  • apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1 hunks)
  • apps/meteor/client/views/omnichannel/hooks/useOmnichannelCloseRoute.ts (1 hunks)
  • apps/meteor/client/views/omnichannel/routes.ts (2 hunks)
  • apps/meteor/client/views/omnichannel/sidebarItems.tsx (1 hunks)
  • apps/meteor/client/views/room/Header/Omnichannel/BackButton.tsx (1 hunks)
  • apps/meteor/client/views/room/Header/Omnichannel/OmnichannelRoomHeader.tsx (2 hunks)
  • apps/meteor/client/views/room/HeaderV2/Omnichannel/BackButton.tsx (1 hunks)
  • apps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsx (1 hunks)
  • apps/meteor/server/startup/migrations/index.ts (1 hunks)
  • apps/meteor/server/startup/migrations/v331.ts (1 hunks)
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts (6 hunks)
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts (1 hunks)
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts (6 hunks)
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts (3 hunks)
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts (4 hunks)
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts (3 hunks)
  • apps/meteor/tests/e2e/page-objects/index.ts (1 hunks)
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (2 hunks)
  • apps/meteor/tests/e2e/page-objects/omnichannel-current-chats.ts (0 hunks)
  • packages/i18n/src/locales/af.i18n.json (0 hunks)
  • packages/i18n/src/locales/ar.i18n.json (0 hunks)
  • packages/i18n/src/locales/az.i18n.json (0 hunks)
  • packages/i18n/src/locales/be-BY.i18n.json (0 hunks)
  • packages/i18n/src/locales/bg.i18n.json (0 hunks)
  • packages/i18n/src/locales/bs.i18n.json (0 hunks)
  • packages/i18n/src/locales/ca.i18n.json (0 hunks)
  • packages/i18n/src/locales/cs.i18n.json (0 hunks)
  • packages/i18n/src/locales/cy.i18n.json (0 hunks)
  • packages/i18n/src/locales/da.i18n.json (0 hunks)
  • packages/i18n/src/locales/de-AT.i18n.json (0 hunks)
  • packages/i18n/src/locales/de-IN.i18n.json (0 hunks)
  • packages/i18n/src/locales/de.i18n.json (0 hunks)
  • packages/i18n/src/locales/el.i18n.json (0 hunks)
  • packages/i18n/src/locales/en.i18n.json (0 hunks)
  • packages/i18n/src/locales/eo.i18n.json (0 hunks)
  • packages/i18n/src/locales/es.i18n.json (0 hunks)
  • packages/i18n/src/locales/fa.i18n.json (0 hunks)
  • packages/i18n/src/locales/fi.i18n.json (0 hunks)
  • packages/i18n/src/locales/fr.i18n.json (0 hunks)
  • packages/i18n/src/locales/he.i18n.json (0 hunks)
  • packages/i18n/src/locales/hi-IN.i18n.json (0 hunks)
  • packages/i18n/src/locales/hr.i18n.json (0 hunks)
  • packages/i18n/src/locales/hu.i18n.json (0 hunks)
  • packages/i18n/src/locales/id.i18n.json (0 hunks)
  • packages/i18n/src/locales/it.i18n.json (0 hunks)
  • packages/i18n/src/locales/ja.i18n.json (0 hunks)
  • packages/i18n/src/locales/ka-GE.i18n.json (0 hunks)
  • packages/i18n/src/locales/km.i18n.json (0 hunks)
  • packages/i18n/src/locales/ko.i18n.json (0 hunks)
  • packages/i18n/src/locales/ku.i18n.json (0 hunks)
  • packages/i18n/src/locales/lo.i18n.json (0 hunks)
  • packages/i18n/src/locales/lt.i18n.json (0 hunks)
  • packages/i18n/src/locales/lv.i18n.json (0 hunks)
  • packages/i18n/src/locales/mn.i18n.json (0 hunks)
  • packages/i18n/src/locales/ms-MY.i18n.json (0 hunks)
  • packages/i18n/src/locales/nb.i18n.json (0 hunks)
  • packages/i18n/src/locales/nl.i18n.json (0 hunks)
  • packages/i18n/src/locales/nn.i18n.json (0 hunks)
  • packages/i18n/src/locales/pa-IN.i18n.json (0 hunks)
  • packages/i18n/src/locales/pl.i18n.json (0 hunks)
  • packages/i18n/src/locales/pt-BR.i18n.json (0 hunks)
  • packages/i18n/src/locales/pt.i18n.json (0 hunks)
  • packages/i18n/src/locales/ro.i18n.json (0 hunks)
  • packages/i18n/src/locales/ru.i18n.json (0 hunks)
  • packages/i18n/src/locales/sk-SK.i18n.json (0 hunks)
  • packages/i18n/src/locales/sl-SI.i18n.json (0 hunks)
  • packages/i18n/src/locales/sq.i18n.json (0 hunks)
  • packages/i18n/src/locales/sr.i18n.json (0 hunks)
  • packages/i18n/src/locales/sv.i18n.json (0 hunks)
  • packages/i18n/src/locales/ta-IN.i18n.json (0 hunks)
  • packages/i18n/src/locales/th-TH.i18n.json (0 hunks)
  • packages/i18n/src/locales/tr.i18n.json (0 hunks)
  • packages/i18n/src/locales/ug.i18n.json (0 hunks)
  • packages/i18n/src/locales/uk.i18n.json (0 hunks)
  • packages/i18n/src/locales/vi-VN.i18n.json (0 hunks)
  • packages/i18n/src/locales/zh-HK.i18n.json (0 hunks)
  • packages/i18n/src/locales/zh-TW.i18n.json (0 hunks)
  • packages/i18n/src/locales/zh.i18n.json (0 hunks)
💤 Files with no reviewable changes (67)
  • packages/i18n/src/locales/eo.i18n.json
  • packages/i18n/src/locales/cs.i18n.json
  • packages/i18n/src/locales/az.i18n.json
  • packages/i18n/src/locales/km.i18n.json
  • packages/i18n/src/locales/pa-IN.i18n.json
  • packages/i18n/src/locales/sl-SI.i18n.json
  • packages/i18n/src/locales/sr.i18n.json
  • packages/i18n/src/locales/ku.i18n.json
  • packages/i18n/src/locales/cy.i18n.json
  • apps/meteor/app/authorization/server/constant/permissions.ts
  • packages/i18n/src/locales/ro.i18n.json
  • packages/i18n/src/locales/tr.i18n.json
  • packages/i18n/src/locales/ko.i18n.json
  • packages/i18n/src/locales/id.i18n.json
  • packages/i18n/src/locales/ug.i18n.json
  • packages/i18n/src/locales/de-IN.i18n.json
  • packages/i18n/src/locales/de.i18n.json
  • packages/i18n/src/locales/pl.i18n.json
  • packages/i18n/src/locales/hr.i18n.json
  • packages/i18n/src/locales/fr.i18n.json
  • packages/i18n/src/locales/vi-VN.i18n.json
  • packages/i18n/src/locales/bs.i18n.json
  • packages/i18n/src/locales/sk-SK.i18n.json
  • packages/i18n/src/locales/sv.i18n.json
  • packages/i18n/src/locales/ru.i18n.json
  • packages/i18n/src/locales/zh-HK.i18n.json
  • packages/i18n/src/locales/mn.i18n.json
  • packages/i18n/src/locales/ja.i18n.json
  • packages/i18n/src/locales/th-TH.i18n.json
  • packages/i18n/src/locales/fi.i18n.json
  • packages/i18n/src/locales/lv.i18n.json
  • apps/meteor/client/views/omnichannel/currentChats/CurrentChatsRoute.tsx
  • packages/i18n/src/locales/de-AT.i18n.json
  • packages/i18n/src/locales/en.i18n.json
  • packages/i18n/src/locales/ar.i18n.json
  • apps/meteor/client/views/omnichannel/currentChats/Label.tsx
  • packages/i18n/src/locales/ta-IN.i18n.json
  • packages/i18n/src/locales/he.i18n.json
  • packages/i18n/src/locales/sq.i18n.json
  • apps/meteor/client/views/omnichannel/currentChats/FilterByText.tsx
  • packages/i18n/src/locales/nb.i18n.json
  • packages/i18n/src/locales/ms-MY.i18n.json
  • packages/i18n/src/locales/hi-IN.i18n.json
  • packages/i18n/src/locales/pt-BR.i18n.json
  • packages/i18n/src/locales/af.i18n.json
  • packages/i18n/src/locales/da.i18n.json
  • packages/i18n/src/locales/be-BY.i18n.json
  • packages/i18n/src/locales/zh-TW.i18n.json
  • apps/meteor/client/views/omnichannel/currentChats/CustomFieldsList.tsx
  • packages/i18n/src/locales/fa.i18n.json
  • apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsx
  • apps/meteor/client/views/omnichannel/currentChats/RemoveAllClosed.tsx
  • packages/i18n/src/locales/nl.i18n.json
  • packages/i18n/src/locales/bg.i18n.json
  • apps/meteor/tests/e2e/page-objects/omnichannel-current-chats.ts
  • packages/i18n/src/locales/ka-GE.i18n.json
  • packages/i18n/src/locales/pt.i18n.json
  • packages/i18n/src/locales/ca.i18n.json
  • packages/i18n/src/locales/uk.i18n.json
  • packages/i18n/src/locales/it.i18n.json
  • packages/i18n/src/locales/lo.i18n.json
  • packages/i18n/src/locales/el.i18n.json
  • packages/i18n/src/locales/nn.i18n.json
  • packages/i18n/src/locales/hu.i18n.json
  • packages/i18n/src/locales/zh.i18n.json
  • packages/i18n/src/locales/es.i18n.json
  • packages/i18n/src/locales/lt.i18n.json
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js}

📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)

**/*.{ts,tsx,js}: Write concise, technical TypeScript/JavaScript with accurate typing in Playwright tests
Avoid code comments in the implementation

Files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactItemMenu.tsx
  • apps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsx
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/server/startup/migrations/v331.ts
  • apps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsx
  • apps/meteor/client/views/omnichannel/directory/ContactContextualBar.tsx
  • apps/meteor/client/views/room/HeaderV2/Omnichannel/BackButton.tsx
  • apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/client/views/omnichannel/directory/ChatsContextualBar.tsx
  • apps/meteor/client/views/omnichannel/hooks/useOmnichannelCloseRoute.ts
  • apps/meteor/client/sidebar/header/actions/hooks/useAdministrationItems.tsx
  • apps/meteor/server/startup/migrations/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/client/views/room/Header/Omnichannel/OmnichannelRoomHeader.tsx
  • apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx
  • apps/meteor/client/views/omnichannel/sidebarItems.tsx
  • apps/meteor/client/views/room/Header/Omnichannel/BackButton.tsx
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/client/views/omnichannel/routes.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableFilter.tsx
apps/meteor/tests/e2e/page-objects/**/*.ts

📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)

Utilize existing page objects pattern from apps/meteor/tests/e2e/page-objects/

Files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts
apps/meteor/tests/e2e/**/*.{ts,spec.ts}

📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)

apps/meteor/tests/e2e/**/*.{ts,spec.ts}: Store commonly used locators in variables/constants for reuse
Follow Page Object Model pattern consistently in Playwright tests

Files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts
**/*.spec.ts

📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)

**/*.spec.ts: Use descriptive test names that clearly communicate expected behavior in Playwright tests
Use .spec.ts extension for test files (e.g., login.spec.ts)

Files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
apps/meteor/tests/e2e/**/*.spec.ts

📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)

apps/meteor/tests/e2e/**/*.spec.ts: All test files must be created in apps/meteor/tests/e2e/ directory
Avoid using page.locator() in Playwright tests - always prefer semantic locators such as page.getByRole(), page.getByLabel(), page.getByText(), or page.getByTitle()
Use test.beforeAll() and test.afterAll() for setup/teardown in Playwright tests
Use test.step() for complex test scenarios to improve organization in Playwright tests
Group related tests in the same file
Utilize Playwright fixtures (test, page, expect) for consistency in test files
Prefer web-first assertions (toBeVisible, toHaveText, etc.) in Playwright tests
Use expect matchers for assertions (toEqual, toContain, toBeTruthy, toHaveLength, etc.) instead of assert statements in Playwright tests
Use page.waitFor() with specific conditions instead of hardcoded timeouts in Playwright tests
Implement proper wait strategies for dynamic content in Playwright tests
Maintain test isolation between test cases in Playwright tests
Ensure clean state for each test execution in Playwright tests
Ensure tests run reliably in parallel without shared state conflicts

Files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
🧠 Learnings (22)
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/page-objects/**/*.ts : Utilize existing page objects pattern from `apps/meteor/tests/e2e/page-objects/`

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.{ts,spec.ts} : Follow Page Object Model pattern consistently in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Utilize Playwright fixtures (`test`, `page`, `expect`) for consistency in test files

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Group related tests in the same file

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : All test files must be created in `apps/meteor/tests/e2e/` directory

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.{ts,spec.ts} : Store commonly used locators in variables/constants for reuse

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Ensure tests run reliably in parallel without shared state conflicts

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
  • apps/meteor/tests/e2e/page-objects/home-omnichannel.ts
📚 Learning: 2025-12-10T21:00:54.909Z
Learnt from: KevLehman
Repo: RocketChat/Rocket.Chat PR: 37091
File: ee/packages/abac/jest.config.ts:4-7
Timestamp: 2025-12-10T21:00:54.909Z
Learning: Rocket.Chat monorepo: Jest testMatch pattern '<rootDir>/src/**/*.spec.(ts|js|mjs)' is valid in this repo and used across multiple packages (e.g., packages/tools, ee/packages/omnichannel-services). Do not flag it as invalid in future reviews.

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Maintain test isolation between test cases in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Ensure clean state for each test execution in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/page-objects/index.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Avoid using `page.locator()` in Playwright tests - always prefer semantic locators such as `page.getByRole()`, `page.getByLabel()`, `page.getByText()`, or `page.getByTitle()`

Applied to files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `test.step()` for complex test scenarios to improve organization in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-11-19T18:20:37.116Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: apps/meteor/server/services/media-call/service.ts:141-141
Timestamp: 2025-11-19T18:20:37.116Z
Learning: In apps/meteor/server/services/media-call/service.ts, the sendHistoryMessage method should use call.caller.id or call.createdBy?.id as the message author, not call.transferredBy?.id. Even for transferred calls, the message should appear in the DM between the two users who are calling each other, not sent by the person who transferred the call.

Applied to files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `expect` matchers for assertions (`toEqual`, `toContain`, `toBeTruthy`, `toHaveLength`, etc.) instead of `assert` statements in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Prefer web-first assertions (`toBeVisible`, `toHaveText`, etc.) in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Implement proper wait strategies for dynamic content in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
📚 Learning: 2025-09-23T19:22:59.217Z
Learnt from: dougfabris
Repo: RocketChat/Rocket.Chat PR: 36987
File: apps/meteor/tests/e2e/page-objects/fragments/room-toolbar.ts:10-20
Timestamp: 2025-09-23T19:22:59.217Z
Learning: In Playwright e2e tests, prefer stable selectors like data-qa-id attributes over localized text in getByRole() or getByText() calls to prevent test failures when UI language changes. Test translations separately by validating actual text content after ensuring UI interactions work with stable selectors.

Applied to files:

  • apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts
📚 Learning: 2025-11-17T22:38:48.631Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37505
File: packages/i18n/src/locales/en.i18n.json:3765-3765
Timestamp: 2025-11-17T22:38:48.631Z
Learning: Rocket.Chat i18n copy: Keep sentence case for the value of "Notification_Desktop_show_voice_calls" in packages/i18n/src/locales/en.i18n.json (“Show desktop notifications for voice calls”) per design directive; do not change to Title Case even if nearby labels differ.

Applied to files:

  • apps/meteor/client/views/omnichannel/sidebarItems.tsx
📚 Learning: 2025-11-19T18:20:07.720Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: packages/i18n/src/locales/en.i18n.json:918-921
Timestamp: 2025-11-19T18:20:07.720Z
Learning: Repo: RocketChat/Rocket.Chat — i18n/formatting
Learning: This repository uses a custom message formatting parser in UI blocks/messages; do not assume standard Markdown rules. For keys like Call_ended_bold, Call_not_answered_bold, Call_failed_bold, and Call_transferred_bold in packages/i18n/src/locales/en.i18n.json, retain the existing single-asterisk emphasis unless maintainers request otherwise.

Applied to files:

  • apps/meteor/client/views/omnichannel/sidebarItems.tsx
📚 Learning: 2025-11-27T17:56:26.050Z
Learnt from: MartinSchoeler
Repo: RocketChat/Rocket.Chat PR: 37557
File: apps/meteor/client/views/admin/ABAC/AdminABACRooms.tsx:115-116
Timestamp: 2025-11-27T17:56:26.050Z
Learning: In Rocket.Chat, the GET /v1/abac/rooms endpoint (implemented in ee/packages/abac/src/index.ts) only returns rooms where abacAttributes exists and is not an empty array (query: { abacAttributes: { $exists: true, $ne: [] } }). Therefore, in components consuming this endpoint (like AdminABACRooms.tsx), room.abacAttributes is guaranteed to be defined for all returned rooms, and optional chaining before calling array methods like .join() is sufficient without additional null coalescing.

Applied to files:

  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to **/*.spec.ts : Use descriptive test names that clearly communicate expected behavior in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `page.waitFor()` with specific conditions instead of hardcoded timeouts in Playwright tests

Applied to files:

  • apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts
🧬 Code graph analysis (14)
apps/meteor/client/views/omnichannel/directory/contacts/ContactItemMenu.tsx (2)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
packages/ui-contexts/src/index.ts (1)
  • usePermission (57-57)
apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
apps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsx (1)
apps/meteor/client/views/room/Header/Omnichannel/BackButton.tsx (1)
  • BackButton (8-39)
apps/meteor/client/views/omnichannel/directory/ContactContextualBar.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (2)
packages/ui-contexts/src/index.ts (1)
  • useRouter (63-63)
packages/ui-contexts/src/RouterContext.ts (2)
  • RouteParameters (19-19)
  • SearchParameters (20-20)
apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx (2)
packages/rest-typings/src/v1/omnichannel.ts (1)
  • ILivechatContactWithManagerData (4555-4557)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (1)
apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts (1)
  • HomeOmnichannelContent (7-68)
apps/meteor/client/views/omnichannel/directory/ChatsContextualBar.tsx (2)
packages/ui-contexts/src/index.ts (2)
  • useRouter (63-63)
  • useRouteParameter (65-65)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
apps/meteor/client/views/omnichannel/hooks/useOmnichannelCloseRoute.ts (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts (2)
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (1)
  • OmnichannelChats (23-112)
apps/meteor/tests/e2e/utils/omnichannel/rooms.ts (1)
  • createConversation (103-123)
apps/meteor/tests/e2e/page-objects/home-omnichannel.ts (1)
apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (1)
  • OmnichannelChats (23-112)
apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableFilter.tsx (1)
apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)
  • useOmnichannelDirectoryRouter (5-34)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: 📦 Meteor Build (coverage)
🔇 Additional comments (36)
apps/meteor/server/startup/migrations/index.ts (1)

39-39: Migration registration looks correct; keep v331 ordering consistent.
Importing ./v331 here is the expected registration mechanism; placing it after v330 matches sequential ordering (helps avoid “missing migration” confusion).

apps/meteor/server/startup/migrations/v331.ts (1)

1-11: Good, idempotent cleanup migration; API confirmed.
Permissions.deleteOne is inherited from the standard IBaseModel interface and is used consistently across migrations (v305, v315) for removing obsolete permissions. Pattern is correct and safe to re-run.

apps/meteor/client/views/room/Header/Omnichannel/OmnichannelRoomHeader.tsx (3)

31-34: LGTM! Route name subscription updated correctly.

The switch from currentRouteName to previousRouteName aligns with the back-button logic, which needs to know where the user navigated from to determine whether to display the back button.


45-45: LGTM! BackButton prop updated consistently.

The prop correctly passes previousRouteName to maintain consistency with the routing logic changes.


51-51: LGTM! Dependency array updated correctly.

The useMemo dependency array properly includes previousRouteName instead of currentRouteName, ensuring the memoization works correctly.

apps/meteor/client/views/omnichannel/sidebarItems.tsx (1)

10-15: All verification checks confirm the code is correct.

The permission view-omnichannel-contact-center is properly defined in the permissions file, the i18n key Contact_Center exists across all major locales, and the icon address-book is valid and consistently used across related omnichannel components. The changes appropriately transition this sidebar item from "Current Chats" to "Contact Center" while repurposing the existing /omnichannel/current route.

apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts (1)

63-63: LGTM! Page object reference updated correctly.

The change from currentChats to chats aligns with the PR's objective to remove the Current Chats UI and adopt Contact Center terminology.

apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts (1)

139-140: LGTM! Chat navigation and URL assertions updated consistently.

The changes correctly update page object references from currentChats to chats and adjust URL expectations to the new routing pattern /omnichannel/current/chats/info/${roomId}. The updates are applied consistently across both Monitor and Manager role test suites.

Also applies to: 182-183, 227-228, 364-365, 407-408, 452-453

apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts (3)

115-115: Test description updated to reflect new terminology.

The test name correctly updates from "Current Chats" to "Contact Center" to align with the UI refactoring.


120-122: Page object references updated consistently.

All references correctly changed from currentChats to chats, and the URL assertion now uses the deeper routing path /omnichannel/current/chats/info/${roomA._id}.

Also applies to: 126-127


159-160: Removal flow simplified with helper method.

The test now uses removeChatByName which encapsulates the modal confirmation flow, improving maintainability and reducing duplication.

apps/meteor/tests/e2e/page-objects/omnichannel-contact-center-chats.ts (3)

8-21: Well-structured modal abstraction.

The ConfirmRemoveChat modal class properly extends the Modal base class and encapsulates the confirmation flow with confirm() and waitForDismissal(), following the page object pattern.


49-75: Locator strategy follows Playwright best practices.

The input getters appropriately use data-qa attributes for stable element selection, which aligns with the learning that stable selectors should be preferred over localized text. Based on learnings.


77-111: Action methods provide clean test interface.

The action methods (selectServedBy, addTag, removeTag, etc.) encapsulate interaction patterns and provide a clean API for tests. The removeChatByName method properly uses the confirmation modal abstraction.

apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts (1)

166-179: Test updated consistently to Contact Center terminology.

All references correctly updated from currentChats to chats, test description renamed to "Contact Center", and URL assertions updated to the new routing pattern. The changes maintain test logic while aligning with the UI refactoring.

Also applies to: 213-214, 226-228, 244-246, 254-256, 263-263, 266-266

apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts (3)

6-6: Test descriptions and imports updated correctly.

The imports, test descriptions, and class instantiations are properly updated to use OmnichannelChats and "Contact Center" terminology throughout the file.

Also applies to: 17-17, 21-21, 110-110, 144-144, 149-149, 252-252, 262-262, 273-273, 283-283, 308-308


256-256: URL assertions updated to new routing pattern.

The URL expectations correctly reflect the new deeper routing structure /omnichannel/current/chats/info/${room._id}.

Also applies to: 266-266, 315-315


275-275: Removal flow improved with helper method.

Using removeChatByName simplifies the test and improves maintainability by encapsulating the modal confirmation flow.

apps/meteor/tests/e2e/page-objects/index.ts (1)

19-19: Export path updated correctly.

The export statement now references the renamed page object file omnichannel-contact-center-chats, maintaining consistency with the refactoring.

apps/meteor/tests/e2e/page-objects/home-omnichannel.ts (1)

7-7: Page object updated to use new OmnichannelChats class.

The import, property declaration, and initialization are all correctly updated to use OmnichannelChats from the new module path. The property is renamed from currentChats to chats, aligning with the Contact Center refactoring.

Also applies to: 40-40, 63-63

apps/meteor/client/sidebar/header/actions/hooks/useAdministrationItems.tsx (1)

42-47: Omnichannel admin item now routes to the correct entry point.

Switching the Omnichannel action from /omnichannel/current to /omnichannel matches the feature removal and avoids dead navigation.

apps/meteor/client/views/room/HeaderV2/Omnichannel/BackButton.tsx (1)

14-36: Back navigation now preserves the intended Omnichannel “chats/info” destination.

Overriding tab/context after ...router.getRouteParameters() is a good way to ensure a consistent return target.

apps/meteor/client/views/room/HeaderV2/Omnichannel/OmnichannelRoomHeader.tsx (2)

14-17: Correct signal source: use previous route name for back-button behavior.

This looks like the right pivot for “back to list” UX from the room header.


21-32: BackButton rendering condition is now aligned with navigation history.

Using previousRouteName in the slot condition and dependency array should prevent showing a back button in unrelated entry flows.

apps/meteor/client/views/omnichannel/routes.ts (1)

158-161: Route now correctly points “current” to the directory router.

This matches the “Current Chats panel removed” direction while keeping the route name/path alive.

apps/meteor/client/NavBarV2/NavBarSettingsToolbar/hooks/useAdministrationMenu.tsx (1)

45-49: Omnichannel menu entry updated to the new base route.

Keeps the Manage menu from linking into a removed/deprecated screen.

apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx (1)

7-10: Import updated to the new hook location.

Looks consistent with the feature removal / folder reorg.

apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx (1)

21-50: Good migration to the directory-router abstraction for navigation.

navigate({ tab: 'contacts', context: 'new' }) is clearer than pushing raw routes and keeps navigation consistent across directory surfaces.

apps/meteor/client/views/room/Header/Omnichannel/BackButton.tsx (1)

12-34: Header BackButton behavior now matches the updated Omnichannel route shape.

Consistent tab/context targeting should reduce “back lands on wrong subview” cases.

apps/meteor/client/views/omnichannel/directory/ChatsContextualBar.tsx (1)

4-15: Routing migration looks consistent here.
handleClose moving to useOmnichannelDirectoryRouter matches the directory-wide pattern and keeps handleOpenRoom untouched.

apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableFilter.tsx (2)

68-73: Navigation change to navigate({ tab: 'chats', context: 'filters' }) is clean.


16-28: Verify invalidateQueries({ queryKey: ['current-chats'] }) is the correct key.

Unable to locate the file or confirm the current state of this invalidation pattern in the codebase. Search the omnichannel chats query definitions to confirm the queryKey matches the one being invalidated. If the query key was renamed (e.g., to 'omnichannel-chats' or 'livechat-chats'), this invalidation will silently fail to refresh the UI.

apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx (1)

25-31: Row click handler change is an improvement (no render-time invocation).

Also applies to: 42-43

apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx (1)

16-46: Routing migration for row click looks consistent and low-risk.

apps/meteor/client/views/omnichannel/directory/OmnichannelDirectoryPage.tsx (1)

46-52: Mac-limit Callout integration is straightforward and nicely contained.

apps/meteor/client/views/omnichannel/directory/hooks/useOmnichannelDirectoryRouter.ts (1)

5-9: No action required. The omnichannel-current-chats route is currently defined and actively used throughout the codebase (registered at apps/meteor/client/views/omnichannel/routes.ts:159, referenced in navigation handlers and header logic). The route allowlist in the hook is correct and needs no updates.

@dougfabris dougfabris force-pushed the chore/remove-oc-current-chats branch from 196c7d9 to cc99ba6 Compare December 15, 2025 19:09
@dougfabris dougfabris force-pushed the chore/remove-oc-current-chats branch 3 times, most recently from 9d4aa52 to d5066b7 Compare December 16, 2025 04:01
@ggazzo ggazzo force-pushed the release-8.0.0 branch 2 times, most recently from 5ace0ee to 76cf16f Compare December 17, 2025 18:49
@dougfabris dougfabris force-pushed the chore/remove-oc-current-chats branch from 343b104 to 2c3edb3 Compare December 18, 2025 18:47
@dougfabris dougfabris force-pushed the chore/remove-oc-current-chats branch from 2c3edb3 to 3180b76 Compare December 18, 2025 20:40
@dougfabris dougfabris marked this pull request as ready for review December 18, 2025 21:41
@dougfabris dougfabris requested review from a team as code owners December 18, 2025 21:41
@ggazzo ggazzo added the stat: QA assured Means it has been tested and approved by a company insider label Dec 18, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Dec 18, 2025
@ggazzo ggazzo merged commit e284310 into release-8.0.0 Dec 18, 2025
43 of 45 checks passed
@ggazzo ggazzo deleted the chore/remove-oc-current-chats branch December 18, 2025 22:02
gaolin1 pushed a commit to gaolin1/medsense.webchat that referenced this pull request Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stat: QA assured Means it has been tested and approved by a company insider stat: ready to merge PR tested and approved waiting for merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants