Skip to content

Conversation

@pierre-lehnen-rc
Copy link
Contributor

@pierre-lehnen-rc pierre-lehnen-rc commented Dec 1, 2025

Proposed changes (including videos or screenshots)

Issue(s)

CORE-1522
CORE-1520

Steps to test or reproduce

Further comments

Summary by CodeRabbit

Release Notes

  • Removals
    • Removed VoIP integration with FreeSwitch, including extension management APIs and configuration options.
    • Discontinued collection of VoIP statistics related to FreeSwitch connections and extensions.
    • Removed associated configuration settings for FreeSwitch server details.

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

@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Dec 1, 2025

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

  • This PR is missing the 'stat: QA assured' label

Please fix the issues and try again

If you have any trouble, please check the PR guidelines

@changeset-bot
Copy link

changeset-bot bot commented Dec 1, 2025

⚠️ No Changeset found

Latest commit: f852b25

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

Walkthrough

This pull request systematically removes the entire FreeSwitch-based VoIP integration from the Rocket.Chat codebase. The changes span removal of the @rocket.chat/freeswitch package, VoIP service implementation, REST API endpoints, database models, type definitions, configuration settings, and internationalization strings.

Changes

Cohort / File(s) Summary
FreeSwitch Core Package
packages/freeswitch/...
Deleted entire FreeSwitch ESL client package including: ESL client, API client, event client, command handlers (getDomain, getExtensionDetails, getExtensionList, getUserPassword), event parser utilities, and all supporting infrastructure. Includes removal of configuration (tsconfig.json, jest.config.ts, package.json, .eslintrc.json) and test suites.
VoIP Service Layer
apps/meteor/ee/server/local-services/voip-freeswitch/service.ts, apps/meteor/ee/server/startup/services.ts
Removed VoipFreeSwitchService class with FreeSwitch connection lifecycle management, event handling, and extension/domain retrieval. Removed service registration from startup sequence.
VoIP Statistics
apps/meteor/app/statistics/server/lib/getEEStatistics.ts, apps/meteor/app/statistics/server/lib/getVoIPStatistics.ts
Removed VoIP statistics aggregation and retrieval functions from EE statistics pipeline.
REST API Endpoints
apps/meteor/ee/app/api-enterprise/server/voip-freeswitch.ts, apps/meteor/ee/app/api-enterprise/server/index.ts
Deleted four enterprise API routes: voip-freeswitch.extension.list, voip-freeswitch.extension.assign, voip-freeswitch.extension.getDetails, and voip-freeswitch.extension.getRegistrationInfoByUserId, plus their imports.
FreeSwitch Models
packages/models/src/models/FreeSwitchChannel.ts, packages/models/src/models/FreeSwitchChannelEvent.ts, packages/models/src/models/FreeSwitchChannelEventDelta.ts, apps/meteor/server/models.ts
Removed FreeSwitchChannelRaw, FreeSwitchChannelEventRaw, and FreeSwitchChannelEventDeltaRaw model implementations with all data access methods and indexes. Deregistered models from startup.
Model Type Definitions
packages/model-typings/src/models/IFreeSwitchChannel*, packages/models/src/modelClasses.ts, packages/model-typings/src/index.ts
Removed IFreeSwitchChannelModel, IFreeSwitchChannelEventModel, and IFreeSwitchChannelEventDeltaModel interfaces and related model typings exports.
Core Type Definitions
packages/core-typings/src/voip/FreeSwitchExtension.ts, packages/core-typings/src/voip/IFreeSwitchChannel.ts, packages/core-typings/src/voip/IFreeSwitchChannelEvent.ts, packages/core-typings/src/voip/IFreeSwitchChannelEventDelta.ts, packages/core-typings/src/voip/index.ts
Removed all FreeSwitch type definitions (FreeSwitchExtension, IFreeSwitchChannel, IFreeSwitchChannelEvent, IFreeSwitchChannelEventDelta) and their re-exports.
Service Typings & Core Services
packages/core-services/src/types/IVoipFreeSwitchService.ts, packages/core-services/src/index.ts
Removed IVoipFreeSwitchService interface with methods for extension/domain/password retrieval and the proxified VoipFreeSwitch service export.
REST Endpoint Typings
packages/rest-typings/src/v1/voip-freeswitch/..., packages/rest-typings/src/index.ts
Removed VoipFreeSwitchEndpoints interface and all request/response types (VoipFreeSwitchExtensionListProps, VoipFreeSwitchExtensionAssignProps, VoipFreeSwitchExtensionGetDetailsProps, VoipFreeSwitchExtensionGetInfoProps) and validators.
User Model Extensions
packages/models/src/models/Users.ts, packages/model-typings/src/models/IUsersModel.ts
Removed FreeSwitch extension-related methods: findOneByFreeSwitchExtensions, findAssignedFreeSwitchExtensions, findUsersWithAssignedFreeSwitchExtensions, setFreeSwitchExtension.
VoIP Configuration
apps/meteor/ee/server/settings/voip.ts
Removed VoIP_TeamCollab_FreeSwitch settings section (Host, Port, Password, Timeout, WebSocket_Path).
Package Dependencies
apps/meteor/package.json
Removed @rocket.chat/freeswitch workspace dependency.
Internationalization
packages/i18n/src/locales/{en,nb,nn,pt-BR,sv}.i18n.json
Removed FreeSwitch-specific i18n keys (FreeSwitch_setup_required, VoIP_TeamCollab_FreeSwitch*) and updated VoIP_TeamCollab_Description to remove FreeSwitch references.
Migrations & Tests
apps/meteor/server/startup/migrations/index.ts, apps/meteor/tests/unit/server/lib/freeswitch.tests.ts, packages/freeswitch/tests/...
Added v325 migration import; deleted all FreeSwitch-related unit tests and test utilities (mapUserData, parseUserList, parseUserStatus, etc.).
UI Components
apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx
Simplified callout logic in VoIP config modal by removing VoIP module availability branching.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Areas requiring extra attention during review:

  • Completeness verification: Ensure no orphaned imports or references to removed modules remain across the codebase (particularly checks for FreeSwitchChannel, VoipFreeSwitch, or voip-freeswitch endpoints in any remaining files)
  • Migration consistency: Verify the v325 migration file added to apps/meteor/server/startup/migrations/index.ts is complete and properly handles the removal
  • Package cleanup: Confirm the removal of @rocket.chat/freeswitch from apps/meteor/package.json and workspace resolution are complete
  • Model layer cleanup: Check that the three model removals (FreeSwitchChannel, FreeSwitchChannelEvent, FreeSwitchChannelEventDelta) have no lingering database collections or cleanup logic needed
  • User model impact: Verify that the four removed User model methods (FreeSwitch extension lookups/setters) have no remaining call sites

Possibly related PRs

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • pierre-lehnen-rc
  • gabriellsh

Poem

🐰 Farewell, FreeSwitch, with your channels so bright,
We've unplugged your extensions from morning to night,
The models are gone, the endpoints deleted,
Our codebase now lighter, the migration completed!
VoIP streams flow through different paths now—
Simpler and cleaner, we've figured out how.

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 title accurately describes the main change: removal of the old FreeSwitch integration from the codebase.
Linked Issues check ✅ Passed The PR successfully removes FreeSwitch integration components (service, API endpoints, settings, types, models) addressing CORE-1522, and removes deprecated admin settings and UI strings addressing CORE-1520.
Out of Scope Changes check ✅ Passed All changes are focused on removing FreeSwitch integration and related settings. A minor simplification to TeamsVoipConfigModal is related to removed FreeSwitch settings.
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/remove-freeswitch-integration

📜 Recent 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 14743c8 and f852b25.

📒 Files selected for processing (2)
  • apps/meteor/app/statistics/server/lib/getEEStatistics.ts (0 hunks)
  • apps/meteor/app/statistics/server/lib/getVoIPStatistics.ts (0 hunks)
💤 Files with no reviewable changes (2)
  • apps/meteor/app/statistics/server/lib/getVoIPStatistics.ts
  • apps/meteor/app/statistics/server/lib/getEEStatistics.ts
⏰ 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). (3)
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build

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.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 1, 2025

📦 Docker Image Size Report

📈 Changes

Service Current Baseline Change Percent
sum of all images 1.1GiB 1.1GiB +36MiB
rocketchat 366MiB 347MiB +19MiB
omnichannel-transcript-service 141MiB 132MiB +8.7MiB
queue-worker-service 141MiB 132MiB +8.7MiB
ddp-streamer-service 127MiB 127MiB +44KiB
account-service 114MiB 114MiB +50KiB
authorization-service 111MiB 111MiB +51KiB
presence-service 111MiB 111MiB +53KiB

📊 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 15:29", "12/02 16:22 (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]
  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]
  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]
  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.14]
  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]
  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.14]
  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.36]
Loading

Statistics (last 11 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-37657
  • Baseline: develop
  • Timestamp: 2025-12-02 16:22:03 UTC
  • Historical data points: 11

Updated: Tue, 02 Dec 2025 16:22:04 GMT

@pierre-lehnen-rc pierre-lehnen-rc added this to the 8.0.0 milestone Dec 1, 2025
@pierre-lehnen-rc pierre-lehnen-rc marked this pull request as ready for review December 1, 2025 23:18
@pierre-lehnen-rc pierre-lehnen-rc requested review from a team as code owners December 1, 2025 23:18
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: 1

Caution

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

⚠️ Outside diff range comments (2)
packages/i18n/src/locales/en.i18n.json (1)

5695-5696: Generalize FreeSWITCH reference to SIP server terminology

This key is actively used in apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx (line 46) and exists across all locale files. Since the code still expects it, deletion is not an option. Update the message to remove the FreeSWITCH reference:

-  "VoIP_available_setup_freeswitch_server_details": "VoIP is available but the FreeSwitch server details need to be set up from the team voice call settings.",
+  "VoIP_available_setup_freeswitch_server_details": "VoIP is available but the SIP server details need to be set up from the team voice call settings.",

Apply the same change across all locale files (sv.i18n.json, nn.i18n.json, pt-BR.i18n.json, nb.i18n.json).

packages/i18n/src/locales/sv.i18n.json (1)

2280-2280: Remove unused FreeSWITCH strings from all locale files for consistency.

The i18n keys FreeSwitch_setup_required and VoIP_available_setup_freeswitch_server_details are not referenced in active UI code and appear across all locale files (sv, nb, nn, pt-BR, en). These should be removed to prevent UI copy drift and avoid orphaned settings.

Apply deletions to all affected locale files at:

  • FreeSwitch_setup_required (e.g., line 2279 in sv.i18n.json)
  • VoIP_available_setup_freeswitch_server_details (e.g., line 5580 in sv.i18n.json)
🧹 Nitpick comments (3)
apps/meteor/server/startup/migrations/v325.ts (1)

5-22: Migration logic is correct for breaking change.

The migration properly removes obsolete FreeSwitch settings as part of the comprehensive removal. The one-way migration (no down() function) is acceptable for this breaking change targeting release-8.0.0.

Consider capturing the deletion result for observability:

 	async up() {
-		await Settings.deleteMany({
+		const result = await Settings.deleteMany({
 			_id: {
 				$in: [
 					'VoIP_TeamCollab_FreeSwitch',
 					'VoIP_TeamCollab_FreeSwitch_Host',
 					'VoIP_TeamCollab_FreeSwitch_Port',
 					'VoIP_TeamCollab_FreeSwitch_Password',
 					'VoIP_TeamCollab_FreeSwitch_Timeout',
 					'VoIP_TeamCollab_FreeSwitch_WebSocket_Path',
 				],
 			},
 		});
+		console.log(`Migration v325: Removed ${result.deletedCount} FreeSwitch settings`);
 	},
packages/i18n/src/locales/en.i18n.json (1)

5675-5675: Tighten copy for clarity

“in Team collaboration” reads awkward. Suggest “for team collaboration.”

-  "VoIP_TeamCollab_Description": "Set up VoIP in Team collaboration",
+  "VoIP_TeamCollab_Description": "Set up VoIP for team collaboration",
packages/i18n/src/locales/nb.i18n.json (1)

5657-5657: Minor copy polish for natural Bokmål

Consider “for teamsamarbeid” instead of “i teamsamarbeid” for a more idiomatic phrasing.

-  "VoIP_TeamCollab_Description": "Sett opp VoIP i teamsamarbeid",
+  "VoIP_TeamCollab_Description": "Sett opp VoIP for teamsamarbeid",
📜 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 94daba9 and a080689.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (90)
  • apps/meteor/app/statistics/server/lib/getEEStatistics.ts (0 hunks)
  • apps/meteor/app/statistics/server/lib/getVoIPStatistics.ts (0 hunks)
  • apps/meteor/ee/app/api-enterprise/server/index.ts (0 hunks)
  • apps/meteor/ee/app/api-enterprise/server/voip-freeswitch.ts (0 hunks)
  • apps/meteor/ee/server/local-services/voip-freeswitch/service.ts (0 hunks)
  • apps/meteor/ee/server/settings/voip.ts (0 hunks)
  • apps/meteor/ee/server/startup/services.ts (0 hunks)
  • apps/meteor/package.json (0 hunks)
  • apps/meteor/server/models.ts (0 hunks)
  • apps/meteor/server/startup/migrations/index.ts (1 hunks)
  • apps/meteor/server/startup/migrations/v325.ts (1 hunks)
  • apps/meteor/tests/unit/server/lib/freeswitch.tests.ts (0 hunks)
  • packages/core-services/src/index.ts (0 hunks)
  • packages/core-services/src/types/IVoipFreeSwitchService.ts (0 hunks)
  • packages/core-typings/src/voip/FreeSwitchExtension.ts (0 hunks)
  • packages/core-typings/src/voip/IFreeSwitchChannel.ts (0 hunks)
  • packages/core-typings/src/voip/IFreeSwitchChannelEvent.ts (0 hunks)
  • packages/core-typings/src/voip/IFreeSwitchChannelEventDelta.ts (0 hunks)
  • packages/core-typings/src/voip/index.ts (0 hunks)
  • packages/freeswitch/.eslintrc.json (0 hunks)
  • packages/freeswitch/CHANGELOG.md (0 hunks)
  • packages/freeswitch/jest.config.ts (0 hunks)
  • packages/freeswitch/package.json (0 hunks)
  • packages/freeswitch/src/FreeSwitchOptions.ts (0 hunks)
  • packages/freeswitch/src/commands/getDomain.ts (0 hunks)
  • packages/freeswitch/src/commands/getExtensionDetails.ts (0 hunks)
  • packages/freeswitch/src/commands/getExtensionList.ts (0 hunks)
  • packages/freeswitch/src/commands/getUserPassword.ts (0 hunks)
  • packages/freeswitch/src/commands/index.ts (0 hunks)
  • packages/freeswitch/src/esl/apiClient.ts (0 hunks)
  • packages/freeswitch/src/esl/client.ts (0 hunks)
  • packages/freeswitch/src/esl/eventClient.ts (0 hunks)
  • packages/freeswitch/src/esl/index.ts (0 hunks)
  • packages/freeswitch/src/eventParser/computeChannelFromEvents.ts (0 hunks)
  • packages/freeswitch/src/eventParser/computeChannelProfiles.ts (0 hunks)
  • packages/freeswitch/src/eventParser/extractChannelChangesFromEvent.ts (0 hunks)
  • packages/freeswitch/src/eventParser/filterOutMissingData.ts (0 hunks)
  • packages/freeswitch/src/eventParser/filterStringList.ts (0 hunks)
  • packages/freeswitch/src/eventParser/insertDataIntoEventProfile.ts (0 hunks)
  • packages/freeswitch/src/eventParser/parseChannelKind.ts (0 hunks)
  • packages/freeswitch/src/eventParser/parseChannelUsername.ts (0 hunks)
  • packages/freeswitch/src/eventParser/parseEventCallId.ts (0 hunks)
  • packages/freeswitch/src/eventParser/parseEventData.ts (0 hunks)
  • packages/freeswitch/src/eventParser/parseEventExtensions.ts (0 hunks)
  • packages/freeswitch/src/eventParser/parseEventLeg.ts (0 hunks)
  • packages/freeswitch/src/eventParser/parseTimestamp.ts (0 hunks)
  • packages/freeswitch/src/index.ts (0 hunks)
  • packages/freeswitch/src/logger.ts (0 hunks)
  • packages/freeswitch/src/utils/mapUserData.ts (0 hunks)
  • packages/freeswitch/src/utils/parseUserList.ts (0 hunks)
  • packages/freeswitch/src/utils/parseUserStatus.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/computeChannelFromEvents.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/computeChannelProfiles.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/extractChannelChangesFromEvent.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/filterOutMissingData.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/filterStringList.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/insertDataIntoEventProfile.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/parseChannelKind.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/parseChannelUsername.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/parseEventCallId.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/parseEventExtensions.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/parseEventLeg.test.ts (0 hunks)
  • packages/freeswitch/tests/eventParser/parseTimestamp.test.ts (0 hunks)
  • packages/freeswitch/tests/mapUserData.test.ts (0 hunks)
  • packages/freeswitch/tests/parseUserList.test.ts (0 hunks)
  • packages/freeswitch/tests/parseUserStatus.test.ts (0 hunks)
  • packages/freeswitch/tests/utils/makeFreeSwitchResponse.ts (0 hunks)
  • packages/freeswitch/tsconfig.json (0 hunks)
  • packages/i18n/src/locales/en.i18n.json (1 hunks)
  • packages/i18n/src/locales/nb.i18n.json (1 hunks)
  • packages/i18n/src/locales/nn.i18n.json (1 hunks)
  • packages/i18n/src/locales/pt-BR.i18n.json (1 hunks)
  • packages/i18n/src/locales/sv.i18n.json (1 hunks)
  • packages/model-typings/src/index.ts (0 hunks)
  • packages/model-typings/src/models/IFreeSwitchChannelEventDeltaModel.ts (0 hunks)
  • packages/model-typings/src/models/IFreeSwitchChannelEventModel.ts (0 hunks)
  • packages/model-typings/src/models/IFreeSwitchChannelModel.ts (0 hunks)
  • packages/model-typings/src/models/IUsersModel.ts (0 hunks)
  • packages/models/src/index.ts (0 hunks)
  • packages/models/src/modelClasses.ts (0 hunks)
  • packages/models/src/models/FreeSwitchChannel.ts (0 hunks)
  • packages/models/src/models/FreeSwitchChannelEvent.ts (0 hunks)
  • packages/models/src/models/FreeSwitchChannelEventDelta.ts (0 hunks)
  • packages/models/src/models/Users.ts (0 hunks)
  • packages/rest-typings/src/index.ts (0 hunks)
  • packages/rest-typings/src/v1/voip-freeswitch/VoipFreeSwitchExtensionAssignProps.ts (0 hunks)
  • packages/rest-typings/src/v1/voip-freeswitch/VoipFreeSwitchExtensionGetDetailsProps.ts (0 hunks)
  • packages/rest-typings/src/v1/voip-freeswitch/VoipFreeSwitchExtensionGetInfoProps.ts (0 hunks)
  • packages/rest-typings/src/v1/voip-freeswitch/VoipFreeSwitchExtensionListProps.ts (0 hunks)
  • packages/rest-typings/src/v1/voip-freeswitch/index.ts (0 hunks)
💤 Files with no reviewable changes (83)
  • apps/meteor/package.json
  • packages/core-typings/src/voip/FreeSwitchExtension.ts
  • packages/freeswitch/src/FreeSwitchOptions.ts
  • packages/models/src/modelClasses.ts
  • packages/freeswitch/src/eventParser/filterStringList.ts
  • packages/freeswitch/package.json
  • apps/meteor/ee/server/startup/services.ts
  • packages/freeswitch/tests/parseUserList.test.ts
  • packages/rest-typings/src/index.ts
  • packages/freeswitch/src/utils/parseUserStatus.ts
  • packages/freeswitch/tests/eventParser/filterOutMissingData.test.ts
  • packages/freeswitch/src/eventParser/parseChannelUsername.ts
  • packages/freeswitch/tests/mapUserData.test.ts
  • packages/core-services/src/index.ts
  • packages/model-typings/src/index.ts
  • packages/freeswitch/jest.config.ts
  • packages/freeswitch/src/commands/getExtensionList.ts
  • packages/freeswitch/src/eventParser/parseChannelKind.ts
  • packages/freeswitch/tests/eventParser/filterStringList.test.ts
  • packages/core-typings/src/voip/IFreeSwitchChannel.ts
  • packages/freeswitch/src/esl/index.ts
  • packages/freeswitch/src/commands/getDomain.ts
  • packages/freeswitch/src/index.ts
  • apps/meteor/app/statistics/server/lib/getEEStatistics.ts
  • packages/freeswitch/src/logger.ts
  • packages/model-typings/src/models/IUsersModel.ts
  • packages/freeswitch/src/commands/index.ts
  • packages/core-typings/src/voip/IFreeSwitchChannelEventDelta.ts
  • packages/freeswitch/src/utils/mapUserData.ts
  • apps/meteor/tests/unit/server/lib/freeswitch.tests.ts
  • packages/freeswitch/tests/eventParser/computeChannelProfiles.test.ts
  • packages/freeswitch/tsconfig.json
  • packages/freeswitch/src/esl/apiClient.ts
  • packages/models/src/models/FreeSwitchChannelEvent.ts
  • packages/freeswitch/src/commands/getUserPassword.ts
  • packages/freeswitch/tests/eventParser/extractChannelChangesFromEvent.test.ts
  • packages/models/src/models/Users.ts
  • packages/freeswitch/src/eventParser/computeChannelFromEvents.ts
  • packages/model-typings/src/models/IFreeSwitchChannelEventDeltaModel.ts
  • packages/freeswitch/src/esl/client.ts
  • packages/freeswitch/src/eventParser/parseEventData.ts
  • packages/freeswitch/src/eventParser/computeChannelProfiles.ts
  • packages/freeswitch/src/utils/parseUserList.ts
  • packages/models/src/models/FreeSwitchChannelEventDelta.ts
  • packages/freeswitch/tests/utils/makeFreeSwitchResponse.ts
  • apps/meteor/ee/server/local-services/voip-freeswitch/service.ts
  • packages/rest-typings/src/v1/voip-freeswitch/VoipFreeSwitchExtensionGetDetailsProps.ts
  • apps/meteor/ee/app/api-enterprise/server/index.ts
  • packages/models/src/index.ts
  • packages/freeswitch/tests/eventParser/parseEventLeg.test.ts
  • packages/freeswitch/tests/eventParser/insertDataIntoEventProfile.test.ts
  • packages/core-typings/src/voip/index.ts
  • packages/freeswitch/src/eventParser/parseTimestamp.ts
  • apps/meteor/ee/server/settings/voip.ts
  • packages/rest-typings/src/v1/voip-freeswitch/VoipFreeSwitchExtensionAssignProps.ts
  • packages/freeswitch/tests/eventParser/parseEventCallId.test.ts
  • packages/freeswitch/src/eventParser/parseEventCallId.ts
  • packages/freeswitch/src/eventParser/filterOutMissingData.ts
  • packages/freeswitch/CHANGELOG.md
  • apps/meteor/server/models.ts
  • packages/freeswitch/.eslintrc.json
  • packages/rest-typings/src/v1/voip-freeswitch/VoipFreeSwitchExtensionGetInfoProps.ts
  • packages/freeswitch/tests/eventParser/parseEventExtensions.test.ts
  • packages/freeswitch/src/eventParser/extractChannelChangesFromEvent.ts
  • packages/freeswitch/tests/eventParser/parseChannelUsername.test.ts
  • packages/core-services/src/types/IVoipFreeSwitchService.ts
  • packages/freeswitch/src/eventParser/parseEventLeg.ts
  • packages/freeswitch/src/eventParser/insertDataIntoEventProfile.ts
  • packages/rest-typings/src/v1/voip-freeswitch/index.ts
  • packages/freeswitch/src/esl/eventClient.ts
  • packages/freeswitch/src/commands/getExtensionDetails.ts
  • packages/freeswitch/tests/eventParser/computeChannelFromEvents.test.ts
  • packages/model-typings/src/models/IFreeSwitchChannelEventModel.ts
  • apps/meteor/ee/app/api-enterprise/server/voip-freeswitch.ts
  • packages/rest-typings/src/v1/voip-freeswitch/VoipFreeSwitchExtensionListProps.ts
  • packages/freeswitch/tests/parseUserStatus.test.ts
  • packages/freeswitch/tests/eventParser/parseChannelKind.test.ts
  • apps/meteor/app/statistics/server/lib/getVoIPStatistics.ts
  • packages/core-typings/src/voip/IFreeSwitchChannelEvent.ts
  • packages/model-typings/src/models/IFreeSwitchChannelModel.ts
  • packages/models/src/models/FreeSwitchChannel.ts
  • packages/freeswitch/src/eventParser/parseEventExtensions.ts
  • packages/freeswitch/tests/eventParser/parseTimestamp.test.ts
🧰 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/server/startup/migrations/index.ts
  • apps/meteor/server/startup/migrations/v325.ts
🧠 Learnings (5)
📓 Common learnings
Learnt from: rodrigok
Repo: RocketChat/Rocket.Chat PR: 36991
File: apps/meteor/server/services/federation/infrastructure/rocket-chat/adapters/Settings.ts:219-221
Timestamp: 2025-09-19T15:15:04.642Z
Learning: The Federation_Matrix_homeserver_domain setting in apps/meteor/server/services/federation/infrastructure/rocket-chat/adapters/Settings.ts is part of the old federation system and is being deprecated/removed, so configuration issues with this setting should not be flagged for improvement.
📚 Learning: 2025-11-19T12:32:29.696Z
Learnt from: d-gubert
Repo: RocketChat/Rocket.Chat PR: 37547
File: packages/i18n/src/locales/en.i18n.json:634-634
Timestamp: 2025-11-19T12:32:29.696Z
Learning: Repo: RocketChat/Rocket.Chat
Context: i18n workflow
Learning: In this repository, new translation keys should be added to packages/i18n/src/locales/en.i18n.json only; other locale files are populated via the external translation pipeline and/or fall back to English. Do not request adding the same key to all locale files in future reviews.

Applied to files:

  • packages/i18n/src/locales/en.i18n.json
  • packages/i18n/src/locales/pt-BR.i18n.json
📚 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:

  • packages/i18n/src/locales/en.i18n.json
  • packages/i18n/src/locales/pt-BR.i18n.json
  • packages/i18n/src/locales/nn.i18n.json
  • packages/i18n/src/locales/nb.i18n.json
📚 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:

  • packages/i18n/src/locales/en.i18n.json
  • packages/i18n/src/locales/pt-BR.i18n.json
  • packages/i18n/src/locales/nn.i18n.json
  • packages/i18n/src/locales/nb.i18n.json
📚 Learning: 2025-09-19T15:15:04.642Z
Learnt from: rodrigok
Repo: RocketChat/Rocket.Chat PR: 36991
File: apps/meteor/server/services/federation/infrastructure/rocket-chat/adapters/Settings.ts:219-221
Timestamp: 2025-09-19T15:15:04.642Z
Learning: The Federation_Matrix_homeserver_domain setting in apps/meteor/server/services/federation/infrastructure/rocket-chat/adapters/Settings.ts is part of the old federation system and is being deprecated/removed, so configuration issues with this setting should not be flagged for improvement.

Applied to files:

  • apps/meteor/server/startup/migrations/v325.ts
🧬 Code graph analysis (1)
apps/meteor/server/startup/migrations/v325.ts (2)
packages/core-services/src/index.ts (1)
  • Settings (182-182)
packages/models/src/index.ts (1)
  • Settings (194-194)
🔇 Additional comments (8)
apps/meteor/server/startup/migrations/index.ts (1)

33-33: LGTM!

The import correctly includes the new v325 migration and follows the established sequential pattern.

packages/i18n/src/locales/en.i18n.json (1)

2339-2341: This i18n key is actively used and should not be removed

"FreeSwitch_setup_required" is currently used in apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx and is maintained across multiple language locales (en, sv, pt-BR, nn, nb). It is not obsolete. The proposed "VoIP_Setup_Required" key does not exist in the codebase. Removing this key would break the VoIP configuration modal. No action is needed.

Likely an incorrect or invalid review comment.

packages/i18n/src/locales/pt-BR.i18n.json (2)

5534-5534: LGTM on wording update

Removing “FreeSwitch” from VoIP_TeamCollab_Description is consistent with the PR’s goal.

Please confirm the same source text was updated in packages/i18n/src/locales/en.i18n.json to keep locales in sync.


2270-2270: These FreeSWITCH translation keys are actively used; do not delete

The flagged keys are actively referenced in code:

  • FreeSwitch_setup_required is used in UI callout at app/client/views/admin/team/TeamSetupWithFreeSwitch.tsx:94
  • VoIP_available_setup_freeswitch_server_details is returned from app/client/views/admin/team/TeamSetupWithFreeSwitch.tsx:46

These are not stale references. The strings should remain in the locale files to support FreeSWITCH configuration UI flows.

packages/i18n/src/locales/sv.i18n.json (1)

5569-5569: Good: description no longer mentions FreeSWITCH.

Swedish copy aligns with the FreeSWITCH removal intent. No ICU tokens affected.

packages/i18n/src/locales/nn.i18n.json (2)

5142-5142: Verify whether FreeSWITCH strings should remain or be removed from locales.

The FreeSWITCH-specific strings flagged in this review do exist and are actively used in code:

  • FreeSwitch_setup_required (line 2233 in nn.i18n.json) is referenced in apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx:94
  • VoIP_available_setup_freeswitch_server_details (line 5148 in nn.i18n.json) is referenced in apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx:46

These keys exist across all locale files (en, sv, pt-BR, nb, nn). If the PR goal is to remove FreeSWITCH integration, these strings and their usages in TeamsVoipConfigModal.tsx need to be removed or replaced with provider-agnostic alternatives. If FreeSWITCH support is being maintained, the strings can remain as-is.


2234-2234: This key is actively used in the codebase and should not be removed. The "FreeSwitch_setup_required" key is referenced in apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx (line 94), where it's displayed as a Callout title in the VoIP configuration modal. The key is not stale and serves a live UI function.

Likely an incorrect or invalid review comment.

packages/i18n/src/locales/nb.i18n.json (1)

2323-2323: The FreeSWITCH integration is not being removed in this PR—do not delete these translation keys.

FreeSWITCH remains actively used in the codebase: the freeSwitchExtension field persists in user models, database methods continue to reference it, and UI components still provide VoIP configuration. Both translation keys still exist in the authoritative en.i18n.json file and are not marked for removal. Additionally, per the i18n workflow, other locale files like nb.i18n.json are auto-populated from or fall back to English—removing keys from a non-English locale while they remain in the source file would be incorrect.

Likely an incorrect or invalid review comment.

@pierre-lehnen-rc pierre-lehnen-rc requested a review from a team as a code owner December 2, 2025 15:53
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: 1

📜 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 a080689 and 14743c8.

📒 Files selected for processing (6)
  • apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx (2 hunks)
  • packages/i18n/src/locales/en.i18n.json (1 hunks)
  • packages/i18n/src/locales/nb.i18n.json (1 hunks)
  • packages/i18n/src/locales/nn.i18n.json (1 hunks)
  • packages/i18n/src/locales/pt-BR.i18n.json (1 hunks)
  • packages/i18n/src/locales/sv.i18n.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/i18n/src/locales/pt-BR.i18n.json
  • packages/i18n/src/locales/sv.i18n.json
🧰 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/room/contextualBar/TeamsVoipConfigModal.tsx
🧠 Learnings (3)
📚 Learning: 2025-11-19T12:32:29.696Z
Learnt from: d-gubert
Repo: RocketChat/Rocket.Chat PR: 37547
File: packages/i18n/src/locales/en.i18n.json:634-634
Timestamp: 2025-11-19T12:32:29.696Z
Learning: Repo: RocketChat/Rocket.Chat
Context: i18n workflow
Learning: In this repository, new translation keys should be added to packages/i18n/src/locales/en.i18n.json only; other locale files are populated via the external translation pipeline and/or fall back to English. Do not request adding the same key to all locale files in future reviews.

Applied to files:

  • packages/i18n/src/locales/nb.i18n.json
  • packages/i18n/src/locales/nn.i18n.json
📚 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:

  • packages/i18n/src/locales/nb.i18n.json
  • packages/i18n/src/locales/en.i18n.json
  • packages/i18n/src/locales/nn.i18n.json
📚 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:

  • packages/i18n/src/locales/nb.i18n.json
  • packages/i18n/src/locales/en.i18n.json
  • packages/i18n/src/locales/nn.i18n.json
  • apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.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). (3)
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build
🔇 Additional comments (5)
apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx (2)

37-43: LGTM! Simplified logic aligns with FreeSWITCH removal.

The streamlined getCalloutWarning function correctly reflects the unified VoIP offering (subscription add-on only). The conditional now cleanly separates admin (contact sales) vs. non-admin (contact workspace admin) paths.


90-90: LGTM! Unified callout title reflects simplified VoIP offering.

Hardcoding the title to Subscription_add-on_required is correct given the removal of FreeSWITCH self-hosted options. This simplifies the UI and aligns with the add-on-only VoIP model.

packages/i18n/src/locales/nn.i18n.json (2)

5141-5141: Copy neutralized from provider to generic — LGTM.

The updated “VoIP_TeamCollab_Description” removes provider coupling and matches the PR intent to drop FreeSWITCH.


5139-5151: Clarify FreeSWITCH scope: it's still active in the codebase.

The verification found 221 references to FreeSWITCH across the codebase (user model properties, services, changelogs, tests). The freeSwitchExtension property remains an active part of the user schema and is used in multiple services. The removed key VoIP_available_setup_freeswitch_server_details is correctly gone, and en.i18n.json has the proper updated description for locale fallback. If the intent is to remove only specific FreeSwitch configuration settings (not the entire FreeSWITCH VoIP extension system), that's working as intended; if broader FreeSWITCH removal is planned, that's a separate, larger effort.

packages/i18n/src/locales/nb.i18n.json (1)

5656-5656: LGTM — FreeSWITCH mention removed from description

The localized copy update is correct and consistent with the removal of the FreeSWITCH integration. Non-English locales are managed by the external translation pipeline and will automatically reflect the English source changes.

@ggazzo ggazzo requested review from a team as code owners December 2, 2025 21:26
@ggazzo ggazzo force-pushed the release-8.0.0 branch 5 times, most recently from 590f91c to 538b89b Compare December 9, 2025 13:32
@pierre-lehnen-rc pierre-lehnen-rc force-pushed the chore/remove-freeswitch-integration branch from 14743c8 to 3207003 Compare December 9, 2025 13:55
@ggazzo ggazzo force-pushed the chore/remove-freeswitch-integration branch from 3207003 to f852b25 Compare December 9, 2025 14:26
@pierre-lehnen-rc pierre-lehnen-rc removed request for a team December 9, 2025 14:49
@ggazzo ggazzo merged commit dcff17e into release-8.0.0 Dec 9, 2025
23 checks passed
@ggazzo ggazzo deleted the chore/remove-freeswitch-integration branch December 9, 2025 14:50
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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants