Skip to content

Conversation

@gabriellsh
Copy link
Member

@gabriellsh gabriellsh commented Dec 16, 2025

Proposed changes (including videos or screenshots)

Moving component so that it can be reused in other packages.

Issue(s)

VGA-112

Steps to test or reproduce

Further comments

Summary by CodeRabbit

  • Refactor

    • Consolidated table components and pagination utilities from local modules to centralized UI client package for improved maintainability.
  • Chores

    • Updated ESLint configuration to exclude server and distribution directories from linting.

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

@gabriellsh gabriellsh added this to the 7.14.0 milestone Dec 16, 2025
@gabriellsh gabriellsh requested a review from a team as a code owner December 16, 2025 14:09
@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Dec 16, 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 16, 2025

⚠️ No Changeset found

Latest commit: dafe537

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 16, 2025

Walkthrough

This PR consolidates GenericTable components and hooks from local apps/meteor/client/components/GenericTable into the centralized @rocket.chat/ui-client package. It updates ~70 files to import these components from the new location, adds barrel exports in ui-client, includes a new GenericNoResults Storybook story, and expands the CustomEmoji component's public API to include an onClick handler.

Changes

Cohort / File(s) Summary
ESLint & Configuration
apps/meteor/.eslintrc.json
Adds **/server/** and /dist/** to ESLint ignorePatterns.
Storybook Stories
apps/meteor/client/components/GenericNoResults/GenericNoResults.stories.tsx
New file; exports NoResults story with filter UI and GenericNoResults component integration.
ui-client Package Exports
packages/ui-client/src/components/index.ts, packages/ui-client/src/components/GenericTable/index.ts, packages/ui-client/src/components/GenericTable/hooks/index.ts
Adds barrel exports for GenericTable components and hooks to public API surface.
ui-client GenericTable Updates
packages/ui-client/src/components/GenericTable/GenericTable.tsx, packages/ui-client/src/components/GenericTable/GenericTable.stories.tsx
Replaces CustomScrollbars import from external to local path; removes NoResults story.
CustomEmoji Component
apps/meteor/client/views/admin/customEmoji/CustomEmoji.tsx
Expands public props to include onClick handler in addition to existing reload ref.
Device Management Tables
apps/meteor/client/components/deviceManagement/DeviceManagementTable/DeviceManagementTable.tsx, apps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountRow.tsx, apps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountTable.tsx, apps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/\\*
Updates GenericTable imports from local paths to @rocket.chat/ui-client.
Admin Views - Tables
apps/meteor/client/views/admin/customSounds/CustomSoundsTable/\\*, apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/\\*, apps/meteor/client/views/admin/emailInbox/\\*, apps/meteor/client/views/admin/integrations/\\*, apps/meteor/client/views/admin/invites/\\*, apps/meteor/client/views/admin/moderation/\\*, apps/meteor/client/views/admin/oauthApps/\\*, apps/meteor/client/views/admin/permissions/\\*, apps/meteor/client/views/admin/rooms/\\*, apps/meteor/client/views/admin/settings/groups/VoipGroupPage/\\*, apps/meteor/client/views/admin/users/\\*
Multiple admin view table components updated to import GenericTable components and hooks from @rocket.chat/ui-client.
Account & Audit Views
apps/meteor/client/views/account/tokens/AccountTokensTable/\\*, apps/meteor/client/views/audit/components/\\*
Updates table component imports to use @rocket.chat/ui-client exports.
Directory & Marketplace Views
apps/meteor/client/views/directory/tabs/\\*, apps/meteor/client/views/marketplace/\\*
Consolidates table and pagination hook imports to @rocket.chat/ui-client.
Omnichannel Views
apps/meteor/client/views/omnichannel/agents/\\*, apps/meteor/client/views/omnichannel/businessHours/\\*, apps/meteor/client/views/omnichannel/cannedResponses/\\*, apps/meteor/client/views/omnichannel/currentChats/\\*, apps/meteor/client/views/omnichannel/customFields/\\*, apps/meteor/client/views/omnichannel/departments/\\*, apps/meteor/client/views/omnichannel/directory/\\*, apps/meteor/client/views/omnichannel/managers/\\*, apps/meteor/client/views/omnichannel/monitors/\\*, apps/meteor/client/views/omnichannel/priorities/\\*, apps/meteor/client/views/omnichannel/queueList/\\*, apps/meteor/client/views/omnichannel/reports/\\*, apps/meteor/client/views/omnichannel/slaPolicies/\\*, apps/meteor/client/views/omnichannel/tags/\\*, apps/meteor/client/views/omnichannel/triggers/\\*, apps/meteor/client/views/omnichannel/units/\\*
Extensive omnichannel table and pagination component import migrations to @rocket.chat/ui-client.
Room & Teams Views
apps/meteor/client/views/room/webdav/\\*, apps/meteor/client/views/teams/\\*
Updates table component imports to centralized UI client package.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Areas requiring extra attention:

  • CustomEmoji.tsx — Public component signature expanded with new onClick prop; verify all call sites are compatible and that the prop is used correctly.
  • GenericTable.tsx in ui-client — CustomScrollbars import source changed to local path; ensure this doesn't create circular dependencies or break the package boundary.
  • New barrel exports in ui-client — Verify that the new re-exports (export * from './hooks' in GenericTable/index.ts and components/index.ts) don't inadvertently expose internal or conflicting symbols.
  • Scale of changes — ~70+ files with import updates; spot-check a few representative files from different directories (admin, omnichannel, directory) to confirm consistency.

Possibly related PRs

  • RocketChat/Rocket.Chat#37619 — Modifies CustomScrollbars and related UI component export/import paths through ui-client package, affecting GenericTable's CustomScrollbars resolution.
  • RocketChat/Rocket.Chat#37184 — Touches GenericTable pagination exports (usePagination/useSort) and updates table pagination usage in UsersInRole and permissions components.

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • MartinSchoeler
  • dougfabris

Poem

🐰 Tables dance from local to ui-client's keep,
Hooks and components in exports leap,
Seventy files march in import's refrain,
One emoji clicks new—a feature's gain! 🎉

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the main objective: moving the GenericTable component to the ui-client package.
Linked Issues check ✅ Passed The changes successfully address VGA-112 by moving GenericTable and related hooks to ui-client, updating all imports across 70+ files, and re-exporting from the package.
Out of Scope Changes check ✅ Passed All changes are directly related to moving GenericTable to ui-client. Minor updates like CustomEmoji's onClick prop are necessary adjustments from the refactoring.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ 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/moveGenericTable

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.

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: 0

🧹 Nitpick comments (3)
apps/meteor/client/components/GenericNoResults/GenericNoResults.stories.tsx (1)

17-23: Remove unnecessary fragment wrapper.

The outer fragment wrapping the single Box element is unnecessary and can be removed for cleaner code.

Apply this diff to simplify the code:

-const filter = (
-	<>
-		<Box mb={16} is='form' display='flex' flexDirection='column'>
-			<TextInput flexShrink={0} placeholder='Search...' addon={<Icon name='magnifier' size='x20' />} />
-		</Box>
-	</>
-);
+const filter = (
+	<Box mb={16} is='form' display='flex' flexDirection='column'>
+		<TextInput flexShrink={0} placeholder='Search...' addon={<Icon name='magnifier' size='x20' />} />
+	</Box>
+);
apps/meteor/client/views/audit/components/AuditLogEntry.tsx (1)

28-28: Consider adding click handler or removing role='link'.

The role='link' with tabIndex={0} makes this row keyboard-focusable and announces it as a link, but there's no click handler to provide the expected interactive behavior. This can confuse keyboard and screen reader users.

If the row should be clickable, add an onClick handler:

-<GenericTableRow key={_id} tabIndex={0} role='link'>
+<GenericTableRow key={_id} tabIndex={0} role='link' onClick={() => {/* navigate or open details */}}>

Otherwise, remove the link semantics:

-<GenericTableRow key={_id} tabIndex={0} role='link'>
+<GenericTableRow key={_id}>
apps/meteor/client/views/omnichannel/cannedResponses/modals/CannedResponsesTable.tsx (1)

20-20: Consider moving GenericNoResults to @rocket.chat/ui-client.

This component has no meteor-specific dependencies and is built solely on centralized libraries (@rocket.chat/fuselage, @rocket.chat/icons, react-i18next). It's used across 20+ meteor components and would benefit from centralization for reuse across packages, consistent with the refactoring pattern applied to other generic components.

📜 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 be679f4 and 109eaf4.

📒 Files selected for processing (99)
  • apps/meteor/.eslintrc.json (1 hunks)
  • apps/meteor/client/components/GenericNoResults/GenericNoResults.stories.tsx (1 hunks)
  • apps/meteor/client/components/deviceManagement/DeviceManagementTable/DeviceManagementTable.tsx (1 hunks)
  • apps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountRow.tsx (1 hunks)
  • apps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountTable.tsx (1 hunks)
  • apps/meteor/client/views/account/tokens/AccountTokensTable/AccountTokensRow.tsx (1 hunks)
  • apps/meteor/client/views/account/tokens/AccountTokensTable/AccountTokensTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/customEmoji/CustomEmoji.tsx (1 hunks)
  • apps/meteor/client/views/admin/customSounds/CustomSoundsTable/CustomSoundRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/customSounds/CustomSoundsTable/CustomSoundsTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/DeviceManagementAdminRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/DeviceManagementAdminTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/emailInbox/EmailInboxTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/emailInbox/SendTestButton.tsx (1 hunks)
  • apps/meteor/client/views/admin/import/PrepareContacts.tsx (1 hunks)
  • apps/meteor/client/views/admin/integrations/IntegrationRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/integrations/IntegrationsTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/integrations/outgoing/history/OutgoingWebhookHistoryPage.tsx (1 hunks)
  • apps/meteor/client/views/admin/invites/InviteRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/invites/InvitesPage.tsx (1 hunks)
  • apps/meteor/client/views/admin/moderation/ModerationConsoleTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/moderation/ModerationConsoleTableRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/moderation/UserReports/ModConsoleUserTableRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/moderation/UserReports/ModConsoleUsersTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/permissions/PermissionsPage.tsx (1 hunks)
  • apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionsTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/permissions/PermissionsTable/RoleCell.tsx (1 hunks)
  • apps/meteor/client/views/admin/permissions/PermissionsTable/RoleHeader.tsx (1 hunks)
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRolePage.tsx (1 hunks)
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTableRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/rooms/RoomRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/rooms/RoomsTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/AssignAgentButton.tsx (1 hunks)
  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/RemoveAgentButton.tsx (1 hunks)
  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/VoipExtensionsPage.tsx (1 hunks)
  • apps/meteor/client/views/admin/users/AdminUsersPage.tsx (1 hunks)
  • apps/meteor/client/views/admin/users/UsersTable/UsersTable.tsx (1 hunks)
  • apps/meteor/client/views/admin/users/UsersTable/UsersTableRow.tsx (1 hunks)
  • apps/meteor/client/views/admin/users/hooks/useFilteredUsers.ts (1 hunks)
  • apps/meteor/client/views/audit/components/AuditLogEntry.tsx (1 hunks)
  • apps/meteor/client/views/audit/components/AuditLogTable.tsx (1 hunks)
  • apps/meteor/client/views/audit/components/SecurityLogsTable.tsx (1 hunks)
  • apps/meteor/client/views/directory/tabs/channels/ChannelsTable/ChannelsTable.tsx (1 hunks)
  • apps/meteor/client/views/directory/tabs/channels/ChannelsTable/ChannelsTableRow.tsx (1 hunks)
  • apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTable.tsx (1 hunks)
  • apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTableRow.tsx (1 hunks)
  • apps/meteor/client/views/directory/tabs/users/UsersTable/UsersTable.tsx (1 hunks)
  • apps/meteor/client/views/directory/tabs/users/UsersTable/UsersTableRow.tsx (1 hunks)
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppInstances/AppInstances.tsx (1 hunks)
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/AppLogs.tsx (1 hunks)
  • apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTableRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/businessHours/BusinessHoursRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/businessHours/BusinessHoursTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/cannedResponses/RemoveCannedResponseButton.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/cannedResponses/modals/CannedResponsesTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/customFields/CustomFieldsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/AgentRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/DepartmentAgentsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/departments/DepartmentsTable/DepartmentsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/calls/CallTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/calls/CallTableRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/managers/ManagersTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/managers/RemoveManagerButton.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/monitors/MonitorsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/priorities/PrioritiesTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/priorities/PrioritiesTableRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/queueList/QueueListTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/reports/components/AgentsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/reports/hooks/useAgentsSection.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/slaPolicies/RemoveSlaButton.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/slaPolicies/SlaTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/tags/TagsTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/triggers/TriggersRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/triggers/TriggersTable.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/units/UnitTableRow.tsx (1 hunks)
  • apps/meteor/client/views/omnichannel/units/UnitsTable.tsx (1 hunks)
  • apps/meteor/client/views/room/webdav/WebdavFilePickerModal/WebdavFilePickerModal.tsx (1 hunks)
  • apps/meteor/client/views/room/webdav/WebdavFilePickerModal/WebdavFilePickerTable.tsx (1 hunks)
  • apps/meteor/client/views/teams/ChannelDesertionTable/ChannelDesertionTable.tsx (1 hunks)
  • apps/meteor/client/views/teams/ChannelDesertionTable/ChannelDesertionTableRow.tsx (1 hunks)
  • apps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTable.tsx (1 hunks)
  • apps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTableRow.tsx (1 hunks)
  • packages/ui-client/src/components/GenericTable/GenericTable.stories.tsx (0 hunks)
  • packages/ui-client/src/components/GenericTable/GenericTable.tsx (1 hunks)
  • packages/ui-client/src/components/GenericTable/hooks/index.ts (1 hunks)
  • packages/ui-client/src/components/GenericTable/index.ts (1 hunks)
  • packages/ui-client/src/components/index.ts (1 hunks)
💤 Files with no reviewable changes (1)
  • packages/ui-client/src/components/GenericTable/GenericTable.stories.tsx
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{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/client/views/admin/users/hooks/useFilteredUsers.ts
  • packages/ui-client/src/components/index.ts
  • apps/meteor/client/views/admin/integrations/IntegrationRow.tsx
  • apps/meteor/client/views/omnichannel/businessHours/BusinessHoursRow.tsx
  • apps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTableRow.tsx
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTableRow.tsx
  • apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.tsx
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppInstances/AppInstances.tsx
  • packages/ui-client/src/components/GenericTable/index.ts
  • apps/meteor/client/components/deviceManagement/DeviceManagementTable/DeviceManagementTable.tsx
  • apps/meteor/client/views/omnichannel/reports/hooks/useAgentsSection.tsx
  • apps/meteor/client/views/admin/invites/InvitesPage.tsx
  • apps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTable.tsx
  • apps/meteor/client/views/directory/tabs/users/UsersTable/UsersTableRow.tsx
  • apps/meteor/client/views/omnichannel/cannedResponses/RemoveCannedResponseButton.tsx
  • apps/meteor/client/views/admin/users/UsersTable/UsersTableRow.tsx
  • apps/meteor/client/views/directory/tabs/channels/ChannelsTable/ChannelsTable.tsx
  • apps/meteor/client/views/directory/tabs/channels/ChannelsTable/ChannelsTableRow.tsx
  • apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusTable.tsx
  • apps/meteor/client/views/admin/rooms/RoomsTable.tsx
  • apps/meteor/client/views/omnichannel/units/UnitTableRow.tsx
  • apps/meteor/client/views/admin/invites/InviteRow.tsx
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTableRow.tsx
  • apps/meteor/client/views/audit/components/SecurityLogsTable.tsx
  • apps/meteor/client/views/teams/ChannelDesertionTable/ChannelDesertionTable.tsx
  • apps/meteor/client/views/admin/users/UsersTable/UsersTable.tsx
  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/RemoveAgentButton.tsx
  • apps/meteor/client/views/omnichannel/priorities/PrioritiesTableRow.tsx
  • apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionRow.tsx
  • packages/ui-client/src/components/GenericTable/hooks/index.ts
  • apps/meteor/client/views/admin/emailInbox/SendTestButton.tsx
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactTable.tsx
  • apps/meteor/client/views/admin/integrations/IntegrationsTable.tsx
  • apps/meteor/client/views/omnichannel/directory/calls/CallTable.tsx
  • apps/meteor/client/views/account/tokens/AccountTokensTable/AccountTokensTable.tsx
  • apps/meteor/client/views/omnichannel/directory/contacts/ContactTableRow.tsx
  • apps/meteor/client/views/room/webdav/WebdavFilePickerModal/WebdavFilePickerTable.tsx
  • apps/meteor/client/views/omnichannel/priorities/PrioritiesTable.tsx
  • apps/meteor/client/views/audit/components/AuditLogEntry.tsx
  • apps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/DeviceManagementAdminRow.tsx
  • apps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTableRow.tsx
  • apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/AgentRow.tsx
  • apps/meteor/client/views/omnichannel/businessHours/BusinessHoursTable.tsx
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx
  • apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/DepartmentAgentsTable.tsx
  • apps/meteor/client/views/admin/moderation/UserReports/ModConsoleUsersTable.tsx
  • apps/meteor/client/views/admin/customSounds/CustomSoundsTable/CustomSoundRow.tsx
  • apps/meteor/client/views/admin/import/PrepareContacts.tsx
  • apps/meteor/client/views/admin/moderation/ModerationConsoleTable.tsx
  • apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTable.tsx
  • apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionsTable.tsx
  • apps/meteor/client/views/admin/permissions/PermissionsTable/RoleCell.tsx
  • apps/meteor/client/views/omnichannel/queueList/QueueListTable.tsx
  • apps/meteor/client/views/admin/moderation/UserReports/ModConsoleUserTableRow.tsx
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTable.tsx
  • apps/meteor/client/views/omnichannel/monitors/MonitorsTable.tsx
  • apps/meteor/client/views/omnichannel/reports/components/AgentsTable.tsx
  • apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusRow.tsx
  • apps/meteor/client/views/account/tokens/AccountTokensTable/AccountTokensRow.tsx
  • apps/meteor/client/views/omnichannel/managers/RemoveManagerButton.tsx
  • apps/meteor/client/views/teams/ChannelDesertionTable/ChannelDesertionTableRow.tsx
  • apps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountRow.tsx
  • apps/meteor/client/views/directory/tabs/users/UsersTable/UsersTable.tsx
  • packages/ui-client/src/components/GenericTable/GenericTable.tsx
  • apps/meteor/client/views/omnichannel/slaPolicies/RemoveSlaButton.tsx
  • apps/meteor/client/views/room/webdav/WebdavFilePickerModal/WebdavFilePickerModal.tsx
  • apps/meteor/client/views/omnichannel/directory/calls/CallTableRow.tsx
  • apps/meteor/client/views/admin/emailInbox/EmailInboxTable.tsx
  • apps/meteor/client/views/admin/permissions/PermissionsPage.tsx
  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/VoipExtensionsPage.tsx
  • apps/meteor/client/views/omnichannel/triggers/TriggersTable.tsx
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/AppLogs.tsx
  • apps/meteor/client/views/admin/permissions/PermissionsTable/RoleHeader.tsx
  • apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx
  • apps/meteor/client/views/account/deviceManagement/DeviceManagementAccountTable/DeviceManagementAccountTable.tsx
  • apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.tsx
  • apps/meteor/client/views/admin/customSounds/CustomSoundsTable/CustomSoundsTable.tsx
  • apps/meteor/client/views/omnichannel/managers/ManagersTable.tsx
  • apps/meteor/client/views/omnichannel/slaPolicies/SlaTable.tsx
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRolePage.tsx
  • apps/meteor/client/views/admin/rooms/RoomRow.tsx
  • apps/meteor/client/views/admin/users/AdminUsersPage.tsx
  • apps/meteor/client/views/admin/integrations/outgoing/history/OutgoingWebhookHistoryPage.tsx
  • apps/meteor/client/views/omnichannel/triggers/TriggersRow.tsx
  • apps/meteor/client/views/audit/components/AuditLogTable.tsx
  • apps/meteor/client/components/GenericNoResults/GenericNoResults.stories.tsx
  • apps/meteor/client/views/admin/deviceManagement/DeviceManagementAdminTable/DeviceManagementAdminTable.tsx
  • apps/meteor/client/views/omnichannel/units/UnitsTable.tsx
  • apps/meteor/client/views/omnichannel/customFields/CustomFieldsTable.tsx
  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/AssignAgentButton.tsx
  • apps/meteor/client/views/admin/customEmoji/CustomEmoji.tsx
  • apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTableRow.tsx
  • apps/meteor/client/views/omnichannel/tags/TagsTable.tsx
  • apps/meteor/client/views/omnichannel/cannedResponses/modals/CannedResponsesTable.tsx
  • apps/meteor/client/views/admin/moderation/ModerationConsoleTableRow.tsx
  • apps/meteor/client/views/omnichannel/departments/DepartmentsTable/DepartmentsTable.tsx
  • apps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTable.tsx
🧠 Learnings (6)
📚 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/client/views/omnichannel/currentChats/CurrentChatsPage.tsx
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppInstances/AppInstances.tsx
  • apps/meteor/client/views/admin/invites/InvitesPage.tsx
  • apps/meteor/client/views/admin/rooms/RoomsTable.tsx
  • apps/meteor/client/views/omnichannel/units/UnitTableRow.tsx
  • apps/meteor/client/views/admin/users/UsersTable/UsersTable.tsx
  • apps/meteor/client/views/teams/contextualBar/info/DeleteTeam/ChannelDeletionTable/ChannelDeletionTableRow.tsx
  • apps/meteor/client/views/omnichannel/businessHours/BusinessHoursTable.tsx
  • apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx
  • apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTable.tsx
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRoleTable/UsersInRoleTable.tsx
  • apps/meteor/client/views/omnichannel/monitors/MonitorsTable.tsx
  • apps/meteor/client/views/directory/tabs/users/UsersTable/UsersTable.tsx
  • apps/meteor/client/views/admin/permissions/PermissionsPage.tsx
  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/VoipExtensionsPage.tsx
  • apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/AppLogs.tsx
  • apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx
  • apps/meteor/client/views/omnichannel/slaPolicies/SlaTable.tsx
  • apps/meteor/client/views/admin/permissions/UsersInRole/UsersInRolePage.tsx
  • apps/meteor/client/views/admin/users/AdminUsersPage.tsx
  • apps/meteor/client/views/omnichannel/units/UnitsTable.tsx
  • apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTableRow.tsx
  • apps/meteor/client/views/omnichannel/agents/AgentsTable/AgentsTable.tsx
📚 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/.eslintrc.json
  • apps/meteor/client/views/directory/tabs/teams/TeamsTable/TeamsTable.tsx
📚 Learning: 2025-10-28T16:53:42.761Z
Learnt from: ricardogarim
Repo: RocketChat/Rocket.Chat PR: 37205
File: ee/packages/federation-matrix/src/FederationMatrix.ts:296-301
Timestamp: 2025-10-28T16:53:42.761Z
Learning: In the Rocket.Chat federation-matrix integration (ee/packages/federation-matrix/), the createRoom method from rocket.chat/federation-sdk will support a 4-argument signature (userId, roomName, visibility, displayName) in newer versions. Code using this 4-argument call is forward-compatible with planned library updates and should not be flagged as an error.

Applied to files:

  • apps/meteor/client/views/admin/rooms/RoomsTable.tsx
  • apps/meteor/client/views/admin/rooms/RoomRow.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/admin/rooms/RoomsTable.tsx
  • apps/meteor/client/views/admin/rooms/RoomRow.tsx
📚 Learning: 2025-10-30T19:30:46.541Z
Learnt from: MartinSchoeler
Repo: RocketChat/Rocket.Chat PR: 37244
File: apps/meteor/client/views/admin/ABAC/AdminABACRoomAttributesForm.spec.tsx:125-146
Timestamp: 2025-10-30T19:30:46.541Z
Learning: In the AdminABACRoomAttributesForm component (apps/meteor/client/views/admin/ABAC/AdminABACRoomAttributesForm.tsx), the first attribute value field is mandatory and does not have a Remove button. Only additional values beyond the first have Remove buttons. This means trashButtons[0] corresponds to the second value's Remove button, not the first value's.

Applied to files:

  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/RemoveAgentButton.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/directory/calls/CallTableRow.tsx
  • apps/meteor/client/views/admin/settings/groups/VoipGroupPage/VoipExtensionsPage.tsx
⏰ 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). (2)
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build

@github-actions
Copy link
Contributor

github-actions bot commented Dec 16, 2025

📦 Docker Image Size Report

📈 Changes

Service Current Baseline Change Percent
sum of all images 1.2GiB 1.2GiB +12MiB
rocketchat 358MiB 347MiB +12MiB
omnichannel-transcript-service 132MiB 132MiB +401B
queue-worker-service 132MiB 132MiB -1.8KiB
ddp-streamer-service 126MiB 126MiB -769B
account-service 113MiB 113MiB +261B
stream-hub-service 110MiB 110MiB -160B
presence-service 110MiB 110MiB -5B
authorization-service 110MiB 110MiB +176B

📊 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 15:45", "12/16 18:15 (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]
  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]
  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]
  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]
  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]
  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]
  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.35]
  line "stream-hub-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]
Loading

Statistics (last 22 days):

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

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

  • Tag: pr-37830
  • Baseline: develop
  • Timestamp: 2025-12-16 18:15:41 UTC
  • Historical data points: 22

Updated: Tue, 16 Dec 2025 18:15:41 GMT

Copy link
Member

@MartinSchoeler MartinSchoeler left a comment

Choose a reason for hiding this comment

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

gave good

@codecov
Copy link

codecov bot commented Dec 16, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 67.63%. Comparing base (d77cd2f) to head (dafe537).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #37830      +/-   ##
===========================================
- Coverage    67.74%   67.63%   -0.11%     
===========================================
  Files         3457     3457              
  Lines       113708   113662      -46     
  Branches     20903    20952      +49     
===========================================
- Hits         77026    76879     -147     
- Misses       34547    34654     +107     
+ Partials      2135     2129       -6     
Flag Coverage Δ
e2e 57.31% <ø> (-0.07%) ⬇️
e2e-api 42.26% <ø> (-1.00%) ⬇️

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.

@gabriellsh gabriellsh added the stat: QA assured Means it has been tested and approved by a company insider label Dec 16, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Dec 16, 2025
@kodiakhq kodiakhq bot merged commit f3dc2c1 into develop Dec 16, 2025
86 of 88 checks passed
@kodiakhq kodiakhq bot deleted the chore/moveGenericTable branch December 16, 2025 19:21
gaolin1 pushed a commit to gaolin1/medsense.webchat that referenced this pull request Jan 6, 2026
@dougfabris dougfabris modified the milestones: 7.14.0, 8.0.0 Jan 19, 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.

4 participants