Skip to content

Conversation

@ricardogarim
Copy link
Contributor

@ricardogarim ricardogarim commented Sep 22, 2025

Summary by CodeRabbit

  • Bug Fixes
    • Direct message rooms now display the other participant’s username to avoid self-named DMs.
    • Federated non-DM rooms use consistent display names including origin info for reliable cross-server recognition.
    • Removed unreliable fallback naming that could produce blank or incorrect room names.
    • Improved room creation when no existing mapping exists to ensure consistent names and metadata.

@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Sep 22, 2025

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

  • This PR is missing the 'stat: QA assured' label
  • This PR is missing the required milestone or project

Please fix the issues and try again

If you have any trouble, please check the PR guidelines

@changeset-bot
Copy link

changeset-bot bot commented Sep 22, 2025

⚠️ No Changeset found

Latest commit: abb1fa1

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 Sep 22, 2025

Walkthrough

Updates federation Matrix invite handling to compute DM room names from the other participant’s username, derive non-DM roomName and fname from Matrix room name and origin when no internal mapping exists (including stripping leading '!' and replacing ':' with '_'), and set extraData.fname only for non-DM rooms.

Changes

Cohort / File(s) Summary
Federation Matrix invite handling
ee/packages/federation-matrix/src/api/_matrix/invite.ts
- Removed previous fallback try/catch that derived roomName when internalMappedRoomId was missing
- DM: compute roomName as the other participant’s username (matrixRoom.name === senderUser.username ? inviteeUser.username : senderUser.username) and call Room.create with extraData: { federated: true } (no fname)
- Non-DM (no internal mapping): set roomFname = \${matrixRoom.name}:${matrixRoom.origin}`; derive roomNamefrominviteEvent.roomIdby stripping leading'!'and replacing':'with'_'; call Room.createwithname: roomNameandextraData.fname = roomFname(plusfederated: true`)

Sequence Diagram(s)

sequenceDiagram
  participant Matrix as Matrix Homeserver
  participant Invite as Invite Handler
  participant Room as Room.create

  Matrix->>Invite: inviteEvent (roomId, matrixRoom.name, origin, participants)
  alt Direct Message (DM)
    Note over Invite: roomName = other participant's username\n(matrixRoom.name === sender ? invitee : sender)
    Invite->>Room: create({ name: roomName, extraData: { federated: true } })
  else Non-DM (no internalMappedRoomId)
    Note over Invite: roomId <- inviteEvent.roomId (strip leading '!' and replace ':' with '_')\nroomFname <- `${matrixRoom.name}:${matrixRoom.origin}`\nroomName <- transformed roomId
    Invite->>Room: create({ name: roomName, extraData: { federated: true, fname: roomFname } })
  end

  Note over Invite: removed previous fallback try/catch name derivation
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • feat: DMs #36762 — Modifies federation Matrix invite/DM handling in the same file; overlaps in invite/DM creation and naming logic.
  • fix: dm check on invite #37012 — Also changes DM detection/handling in ee/packages/federation-matrix/src/api/_matrix/invite.ts; related to DM naming adjustments.

Suggested reviewers

  • ggazzo

Poem

I twitched my whiskers, tuned the name,
Unsnarled colons, softened fame.
DMs now call the other by name,
Non-DMs wear origin’s frame.
Hop on — the bridge is tame. 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Linked Issues Check ❓ Inconclusive The PR implements adding the room origin for non-DM rooms by setting extraData.fname and adjusting roomName, which aligns with FDR-113's intent to avoid cross-server name clashes, but the DM path still omits fname and the linked issue text provides no explicit acceptance criteria, so it is unclear whether the change fully satisfies the ticket for all room types. Please confirm whether FDR-113 requires origin to be added for DM rooms as well; if so, extend the change to the DM flow and add tests or update the PR description to state that DMs are intentionally excluded and why.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Out of Scope Changes Check ✅ Passed All modifications are localized to ee/packages/federation-matrix/src/api/_matrix/invite.ts and directly pertain to room naming and extraData handling to include origin, with no unrelated files or features altered, so I detect no out-of-scope changes.
Title Check ✅ Passed The title succinctly and accurately describes the main change — adding the origin to room names to prevent cross-server conflicts — and this aligns with the raw_summary and PR objectives. It is concise, specific, and clear enough for a reviewer scanning the repository history.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/federation-room-name-conflict

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

@ricardogarim ricardogarim marked this pull request as ready for review September 22, 2025 23:13
@ricardogarim ricardogarim requested review from a team as code owners September 22, 2025 23:13
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 (2)
ee/packages/federation-matrix/src/api/_matrix/invite.ts (1)

268-270: DM naming logic needs clarification.

The current implementation determines the DM room name by checking if matrixRoom.name === senderUser.username, but this approach seems fragile. The TODO comment indicates this needs reconsideration.

Consider implementing a more robust DM naming strategy that doesn't rely on comparing room names with usernames, which could break if naming conventions change.

packages/rest-typings/src/v1/rooms.ts (1)

818-818: Endpoint signature inconsistency with type definition.

The endpoint signature shows federationEnabled: boolean as required, but the type definition GETRoomsNameExists shows it as optional (federationEnabled?: boolean). This creates a mismatch between the API contract and implementation.

-		GET: (params: { roomName: string; federationEnabled: boolean }) => {
+		GET: (params: { roomName: string; federationEnabled?: boolean }) => {
📜 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 a8e33e7 and c67512d.

📒 Files selected for processing (5)
  • apps/meteor/app/api/server/v1/rooms.ts (1 hunks)
  • apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx (1 hunks)
  • ee/packages/federation-matrix/src/FederationMatrix.ts (1 hunks)
  • ee/packages/federation-matrix/src/api/_matrix/invite.ts (3 hunks)
  • packages/rest-typings/src/v1/rooms.ts (3 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: rodrigok
PR: RocketChat/Rocket.Chat#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-09-19T15:15:04.642Z
Learnt from: rodrigok
PR: RocketChat/Rocket.Chat#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/app/api/server/v1/rooms.ts
  • ee/packages/federation-matrix/src/FederationMatrix.ts
🧬 Code graph analysis (1)
ee/packages/federation-matrix/src/FederationMatrix.ts (2)
ee/packages/federation-matrix/src/events/room.ts (1)
  • room (6-64)
packages/models/src/index.ts (3)
  • MatrixBridgedRoom (216-216)
  • Rooms (200-200)
  • Subscriptions (206-206)
🔇 Additional comments (7)
apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx (1)

141-141: LGTM! Federation context now properly passed to name validation.

The addition of federationEnabled: federated to the name existence check correctly provides federation context to the backend, enabling server-side federation-aware name validation.

ee/packages/federation-matrix/src/FederationMatrix.ts (2)

202-204: Updated federation room naming strategy implemented correctly.

The new naming approach creates distinct local display names:

  • roomName: ${room.name}_${this.serverName} for unique identification
  • roomFname: ${room.name} @ ${this.serverName} for user-friendly display
  • matrixRoomName: Used for the actual Matrix room creation

This prevents cross-server name conflicts while maintaining user experience.


217-218: Local room state properly synchronized with federation naming.

The code correctly updates both the local room record and user subscription with the new federation-aware names, ensuring consistent display across the application.

ee/packages/federation-matrix/src/api/_matrix/invite.ts (1)

285-287: Federation-aware room naming properly implemented.

The implementation correctly creates federation-aware room names:

  • roomName: ${matrixRoom.name}_${matrixRoom.origin} for unique identification
  • roomFname: ${matrixRoom.name} @ ${matrixRoom.origin} for display

This aligns with the broader federation naming strategy to prevent cross-server conflicts.

packages/rest-typings/src/v1/rooms.ts (2)

447-447: API typing correctly extended for federation support.

The addition of the optional federationEnabled parameter properly extends the API contract while maintaining backward compatibility.


456-458: Schema validation properly updated for federation parameter.

The schema correctly defines federationEnabled as an optional boolean, maintaining API contract consistency.

apps/meteor/app/api/server/v1/rooms.ts (1)

111-121: Verify federation domain extraction — avoid split('//')[1] assumption

split('//')[1] assumes Federation_Service_Domain includes a protocol; repo search shows only this use at apps/meteor/app/api/server/v1/rooms.ts:114. Confirm the setting format. Recommend normalizing the value before use (strip leading https?:// and any path, e.g. value?.replace(/^https?:///, '').split('/')[0]) so room name construction is robust.

@codecov
Copy link

codecov bot commented Sep 22, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 67.32%. Comparing base (a8e33e7) to head (abb1fa1).
⚠️ Report is 3 commits behind head on chore/federation-backup.

Additional details and impacted files

Impacted file tree graph

@@                     Coverage Diff                     @@
##           chore/federation-backup   #37034      +/-   ##
===========================================================
- Coverage                    67.34%   67.32%   -0.03%     
===========================================================
  Files                         3342     3342              
  Lines                       113379   113376       -3     
  Branches                     20657    20650       -7     
===========================================================
- Hits                         76358    76328      -30     
- Misses                       34421    34444      +23     
- Partials                      2600     2604       +4     
Flag Coverage Δ
e2e 56.92% <ø> (-0.02%) ⬇️
unit 71.23% <ø> (-0.04%) ⬇️

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.

@ricardogarim ricardogarim force-pushed the fix/federation-room-name-conflict branch from c67512d to 63ffa50 Compare September 23, 2025 00:05
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 (1)
ee/packages/federation-matrix/src/api/_matrix/invite.ts (1)

268-270: Validate DM room name before deriving the other participant

matrixRoom.name can be arbitrary or empty — explicitly check whether it equals senderUser.username or inviteeUser.username and pick the other participant only in those cases; if neither matches, fall back to a deterministic name (e.g. ${senderUser.username}_${inviteeUser.username}) or another safe fallback. File: ee/packages/federation-matrix/src/api/_matrix/invite.ts lines 268–270.

📜 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 c67512d and 63ffa50.

📒 Files selected for processing (1)
  • ee/packages/federation-matrix/src/api/_matrix/invite.ts (3 hunks)
⏰ 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 (3)
ee/packages/federation-matrix/src/api/_matrix/invite.ts (3)

268-270: LGTM! DM room naming logic is clear and functional.

The DM-specific room naming logic correctly determines the room name by selecting the non-sender participant. The implementation handles the case where matrixRoom.name might be either the sender or invitee username.


285-286: LGTM! Origin-based naming prevents cross-server conflicts effectively.

The implementation correctly addresses the PR objective by incorporating the origin into both the internal room name (roomName) and display name (roomFname). This approach should effectively prevent naming conflicts between rooms from different federated servers.

  • roomName: Uses underscore separator for internal consistency
  • roomFname: Uses @ symbol for human-readable display

297-297: Verify Room.create API supports extraData.fname parameter.

The code adds fname to the extraData object for non-DM rooms, but I want to ensure this parameter is properly supported by the Room.create API.

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 (1)
apps/meteor/client/lib/rooms/roomTypes/direct.ts (1)

56-77: Guard against federated name collisions and avoid bypassing admin preference.

Always preferring fname can (a) ignore the UI_Use_Real_Name admin setting and (b) hide the origin suffix used to disambiguate federated DMs, leading to identical-looking entries when two remote users share the same display name. Recommend falling back to name (with origin) when a collision is detected in federated rooms, and consider retaining the admin preference for non‑federated rooms.

Apply this minimal disambiguation in-place:

-			return subscription.fname || subscription.name;
+			const displayName = subscription.fname || subscription.name;
+
+			// For federated DMs, if another DM shares the same display name, show the unique username (with origin).
+			if (isRoomFederated(roomData as IRoom) && displayName) {
+				const collision = Subscriptions.state.find(
+					(s) =>
+						s.t === 'd' &&
+						s.rid !== roomData._id &&
+						((s.fname || s.name) === displayName),
+				);
+				if (collision) {
+					return subscription.name || displayName;
+				}
+			}
+
+			return displayName;

Optional (if product wants to keep honoring admin preference for non‑federated): use settings to prefer fname only when UI_Use_Real_Name is true.

Please confirm intended behavior: should DMs ignore UI_Use_Real_Name, and should federated origins remain visible when needed for disambiguation?

📜 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 63ffa50 and dab710f.

📒 Files selected for processing (1)
  • apps/meteor/client/lib/rooms/roomTypes/direct.ts (1 hunks)
⏰ 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

@ricardogarim ricardogarim force-pushed the fix/federation-room-name-conflict branch 3 times, most recently from 648fdbc to 878b1db Compare September 23, 2025 02:21
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: 2

Caution

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

⚠️ Outside diff range comments (1)
ee/packages/federation-matrix/src/api/_matrix/invite.ts (1)

131-144: Backoff timing mixes seconds and milliseconds; retry schedule is broken.

delay is treated as seconds in math/logs but passed to setTimeout as milliseconds, while the next call receives delay * 1000 (ms) as “seconds”, exploding the schedule.

Apply this diff to fix units and cap growth at 625s:

 async function runWithBackoff(fn: () => Promise<void>, delaySec = 5) {
   try {
     await fn();
   } catch (e) {
-    const delay = delaySec === 625 ? 625 : delaySec ** 2;
-    console.log(`error occurred, retrying in ${delay}ms`, e);
-    setTimeout(() => {
-      runWithBackoff(fn, delay * 1000);
-    }, delay);
+    const nextDelaySec = Math.min(delaySec === 625 ? 625 : delaySec ** 2, 625);
+    const delayMs = delaySec * 1000;
+    console.log(`error occurred, retrying in ${delaySec}s`, e);
+    setTimeout(() => {
+      void runWithBackoff(fn, nextDelaySec);
+    }, delayMs);
   }
 }
📜 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 8ca02f9 and 878b1db.

📒 Files selected for processing (1)
  • ee/packages/federation-matrix/src/api/_matrix/invite.ts (3 hunks)
⏰ 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 (2)
ee/packages/federation-matrix/src/api/_matrix/invite.ts (2)

298-298: Good call adding extraData.fname.

This preserves the human-friendly title while keeping the unique, origin-qualified name.


289-301: Mapping persisted — no action required.

invite.ts calls MatrixBridgedRoom.createOrUpdateByLocalRoomId(...) after Room.create, so the non‑DM path writes the federated mapping (ee/packages/federation-matrix/src/api/_matrix/invite.ts:316).

@ricardogarim ricardogarim force-pushed the fix/federation-room-name-conflict branch from 878b1db to c9cd34c Compare September 23, 2025 02:37
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

Caution

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

⚠️ Outside diff range comments (1)
ee/packages/federation-matrix/src/api/_matrix/invite.ts (1)

134-143: Fix backoff: seconds vs milliseconds; next delay passed incorrectly.

delay is treated as seconds but logged/scheduled as ms, and the squared value is passed to the next call as ms. This explodes the delay and mislabels logs.

Apply:

 async function runWithBackoff(fn: () => Promise<void>, delaySec = 5) {
   try {
     await fn();
   } catch (e) {
-    const delay = delaySec === 625 ? 625 : delaySec ** 2;
-    console.log(`error occurred, retrying in ${delay}ms`, e);
-    setTimeout(() => {
-      runWithBackoff(fn, delay * 1000);
-    }, delay);
+    const nextDelaySec = delaySec === 625 ? 625 : Math.min(delaySec ** 2, 625);
+    console.log(`error occurred, retrying in ${nextDelaySec}s`, e);
+    setTimeout(() => {
+      void runWithBackoff(fn, nextDelaySec);
+    }, nextDelaySec * 1000);
   }
 }
🧹 Nitpick comments (1)
ee/packages/federation-matrix/src/api/_matrix/invite.ts (1)

285-288: Prefer existing getValidRoomName; sanitize origin; anchored '!' removal; add fname fallback.

  • Replace the three lines with safer parsing + fname fallback and use the repo's canonical room-name helper (it enforces slug/validation/max-length/UTF8 settings): apps/meteor/app/utils/server/lib/getValidRoomName.ts (also exposed via apps/meteor/server/services/room/service.ts).
  • Minimal replacement (conceptual):
    • const [rawLocal] = inviteEvent.roomId.split(':');
    • const roomId = rawLocal.replace(/^!/, '');
    • const roomFname = matrixRoom.name ? ${matrixRoom.name}:${matrixRoom.origin} : ${roomId}:${matrixRoom.origin};
    • const roomName = await getValidRoomName(${roomId}_${String(matrixRoom.origin)});
  • Rationale: getValidRoomName already handles name sanitization/slug rules (limax/UTF8 settings) and prevents reimplementing validation/length rules; anchored '!' removal avoids accidental removal of other characters.

File: ee/packages/federation-matrix/src/api/_matrix/invite.ts (around lines 285–288).

📜 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 878b1db and c9cd34c.

📒 Files selected for processing (1)
  • ee/packages/federation-matrix/src/api/_matrix/invite.ts (3 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-09-16T13:33:49.237Z
Learnt from: cardoso
PR: RocketChat/Rocket.Chat#36890
File: apps/meteor/tests/e2e/e2e-encryption/e2ee-otr.spec.ts:21-26
Timestamp: 2025-09-16T13:33:49.237Z
Learning: The im.delete API endpoint accepts either a `roomId` parameter (requiring the actual DM room _id) or a `username` parameter (for the DM partner's username). Constructing slug-like identifiers like `user2${Users.userE2EE.data.username}` doesn't work for this endpoint.

Applied to files:

  • ee/packages/federation-matrix/src/api/_matrix/invite.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
🔇 Additional comments (2)
ee/packages/federation-matrix/src/api/_matrix/invite.ts (2)

268-283: DM roomName picks “self”; name DMs after the other participant (inviter).

Current ternary returns our own username half the time. For DMs, just use the inviter’s (sender) username; also set a friendly fname with origin to avoid cross‑server ambiguity.

-// TODO: Rethink room name on DMs
-// get the other user than ourself
-const roomName = matrixRoom.name === senderUser.username ? inviteeUser.username : senderUser.username;
+// TODO: Rethink room name on DMs
+// Name DM after the other participant (inviter)
+const roomName = senderUser.username;
@@
   extraData: {
     federated: true,
+    fname: `${senderUser.username}@${matrixRoom.origin}`,
   },

298-298: Setting extraData.fname looks good.

Populating fname aligns with the PR goal; with the fallback/sanitization above, this is solid.

Please confirm UI escapes fname (no HTML injection) and whether there’s a display length cap to avoid truncation.

@ricardogarim ricardogarim force-pushed the fix/federation-room-name-conflict branch from c9cd34c to abb1fa1 Compare September 23, 2025 02:46
@ggazzo ggazzo changed the title fix: add origin to room name to prevent cross-server conflicts feat: add origin to room name to prevent cross-server conflicts Sep 23, 2025
@ggazzo ggazzo merged commit d2d81d2 into chore/federation-backup Sep 23, 2025
50 of 52 checks passed
@ggazzo ggazzo deleted the fix/federation-room-name-conflict branch September 23, 2025 03:35
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.

4 participants