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

  • Removals
    • Removed the FreeSwitch VoIP integration: related settings, management endpoints, and statistics are no longer available.
  • Chores
    • Database migration to remove deprecated FreeSwitch configuration entries.
  • Localization
    • UI text updated to remove FreeSwitch-specific wording and generalize VoIP setup messaging.

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

ggazzo and others added 30 commits November 18, 2025 15:46
@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: 14743c8

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

Removed the FreeSwitch-based VoIP integration: services, REST endpoints, models, types, parsers, client/ESL layers, package configs, migrations, settings, translations, tests, and related exports across the monorepo.

Changes

Cohort / File(s) Summary
EE API & Routes
apps/meteor/ee/app/api-enterprise/server/...
Deleted voip-freeswitch.ts and removed its import from index.ts, removing four enterprise API routes related to FreeSwitch extensions.
Server services & startup
apps/meteor/ee/server/local-services/voip-freeswitch/service.ts, apps/meteor/ee/server/startup/services.ts
Removed VoipFreeSwitchService implementation and its registration from startup services.
Statistics
apps/meteor/app/statistics/server/lib/{getEEStatistics.ts,getVoIPStatistics.ts}
Deleted getVoIPStatistics.ts and removed VoIP aggregation/inclusion from getEEStatistics.ts.
Settings & Migrations
apps/meteor/ee/server/settings/voip.ts, apps/meteor/server/startup/migrations/{index.ts,v325.ts}
Removed FreeSwitch-specific settings and added migration v325 to delete them from DB.
App dependency
apps/meteor/package.json
Removed workspace dependency @rocket.chat/freeswitch.
Models (server)
apps/meteor/server/models.ts
Removed registration/imports for FreeSwitch channel/event/delta models.
Models (packages)
packages/models/src/models/*, packages/models/src/modelClasses.ts, packages/models/src/index.ts
Deleted FreeSwitchChannel, FreeSwitchChannelEvent, FreeSwitchChannelEventDelta model implementations and removed their exports/proxified accessors.
Model typings
packages/model-typings/src/models/*
Removed IFreeSwitchChannelModel, IFreeSwitchChannelEventModel, IFreeSwitchChannelEventDeltaModel interfaces.
User model methods
packages/models/src/models/Users.ts, packages/model-typings/src/models/IUsersModel.ts
Removed FreeSwitch-related user methods (findOneByFreeSwitchExtensions, setFreeSwitchExtension, findAssignedFreeSwitchExtensions, findUsersWithAssignedFreeSwitchExtensions).
Core services & types
packages/core-services/src/index.ts, packages/core-services/src/types/IVoipFreeSwitchService.ts
Removed IVoipFreeSwitchService interface and proxified VoipFreeSwitch service export.
Core typings (voip)
packages/core-typings/src/voip/*
Deleted FreeSwitch-related typings: FreeSwitchExtension, IFreeSwitchChannel, IFreeSwitchChannelEvent, IFreeSwitchChannelEventDelta and removed their re-exports.
Freeswitch package removal
packages/freeswitch/*
Entire package removed or stripped: src (ESL client, apiClient, commands, eventParser, utils, logger, options), package.json, tsconfig, jest/eslint configs, CHANGELOG, tests.
Event parsing utilities
packages/freeswitch/src/eventParser/*
Removed parsers and helpers: parseEventData, parseEventLeg, parseEventExtensions, parseEventCallId, computeChannelFromEvents, computeChannelProfiles, extractChannelChangesFromEvent, insertDataIntoEventProfile, filterOutMissingData, filterStringList, parseTimestamp, parseChannelKind, parseChannelUsername.
ESL client & API
packages/freeswitch/src/esl/*
Removed FreeSwitchESLClient, FreeSwitchEventClient, FreeSwitchApiClient and their re-exports.
Commands & utils
packages/freeswitch/src/commands/*, packages/freeswitch/src/utils/*
Removed getDomain, getExtensionList, getExtensionDetails, getUserPassword, mapUserData, parseUserList, parseUserStatus and related exports.
REST typings (voip-freeswitch)
packages/rest-typings/src/v1/voip-freeswitch/*, packages/rest-typings/src/index.ts
Deleted VoipFreeSwitch request/validator types and removed VoipFreeSwitchEndpoints from exported Endpoints.
I18n
packages/i18n/src/locales/{en,nb,nn,pt-BR,sv}.i18n.json
Removed FreeSwitch-specific translation keys and updated VoIP_TeamCollab_Description to remove FreeSwitch mention.
Client UI tweak
apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx
Simplified callout text/title logic; removed FreeSwitch-specific message branching.
Tests removed
apps/meteor/tests/unit/server/lib/freeswitch.tests.ts, packages/freeswitch/tests/**/*
Deleted FreeSwitch-related unit/integration tests and test utilities.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

  • Focus review on:
    • Deep dependency removal impact (models, proxified services, public typings)
    • Migration v325 correctness and potential collateral effects
    • Any remaining references to removed APIs/types across the repo
    • Client/API consumers that relied on the deleted REST endpoints and user model methods

Possibly related PRs

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • ggazzo

Poem

🐰 I hopped through code, a tidy spree,
FreeSwitch footprints cleared by me.
Tests and types now softly go,
Quiet paths replace the show.
A lighter branch for devs to see 🥕✨

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore!: remove old freeswitch integration' clearly and concisely summarizes the main change of the PR, which is the removal of the deprecated FreeSwitch integration components.
Linked Issues check ✅ Passed The PR removes all FreeSwitch-related code, models, API endpoints, services, settings, dependencies, and localization strings as expected for removing deprecated Voice architecture, fully addressing CORE-1522.
Out of Scope Changes check ✅ Passed All changes are directly scoped to removing FreeSwitch integration. Minor UI simplification in TeamsVoipConfigModal is a necessary consequence of removing VoIP module detection logic.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ 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

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 4 times, most recently from 169b783 to 73d9200 Compare December 2, 2025 23:22
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.