Skip to content

Conversation

@Dnouv
Copy link
Member

@Dnouv Dnouv commented Sep 25, 2025

Proposed changes (including videos or screenshots)

  • expose getUserRoomIds on the apps-engine user accessor and bridge
  • implement the Rocket.Chat bridge hook to fetch room IDs from subscriptions with debug
    logging
  • extend apps-engine unit tests and test doubles to cover the new method

Issue(s)

Steps to test or reproduce

const userRooms = await read
            .getUserReader()
            .getUserRoomIds(message.sender.id);
console.log("USER ROOMS", userRooms);

Further comments

RCAI6-8

Benchmark: getUserRoomIds (5 runs per sample)

Room count Run averages (ms) Raw timings (ms)
43 1.2 [2, 2, 1, 1, 0]
24_260 146 / 78.6 / 88.6 [436, 102, 76, 59, 57] / [95, 86, 91, 60, 61] / [112, 105, 99, 72, 55]
70_043 288.4 / 202 / 205.6 [697, 193, 188, 184, 180] / [303, 173, 172, 178, 184] / [274, 186, 228, 168, 172]
100_043 329.4 / 255.4 / 262.2 [715, 226, 238, 226, 242] / [308, 255, 247, 250, 217] / [308, 307, 228, 238, 230]

Looks like the first run on larger datasets pays a warm-up/cache cost, then stabilizes in the ~80–90 ms
range for ~24k rooms and ~200 ms for ~70k–100k rooms.

Summary by CodeRabbit

  • New Features

    • Experimental API allowing installed apps to retrieve the list of rooms a user belongs to, with enhanced debug logging for experimental interactions.
  • Tests

    • Updated test coverage to include the experimental read interface used by the new capability.
  • Chores

    • Minor version bumps to core app packages to support these changes.

@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Sep 25, 2025

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

  • This PR is targeting the wrong base branch. It should target 7.12.0, but it targets 7.11.0

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

🦋 Changeset detected

Latest commit: afd4374

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 43 packages
Name Type
@rocket.chat/apps-engine Minor
@rocket.chat/meteor Minor
@rocket.chat/apps Patch
@rocket.chat/core-services Patch
@rocket.chat/core-typings Minor
@rocket.chat/fuselage-ui-kit Major
@rocket.chat/rest-typings Minor
@rocket.chat/ddp-streamer Patch
@rocket.chat/presence Patch
rocketchat-services Patch
@rocket.chat/uikit-playground Patch
@rocket.chat/api-client Patch
@rocket.chat/cron Patch
@rocket.chat/ddp-client Patch
@rocket.chat/freeswitch Patch
@rocket.chat/gazzodown Major
@rocket.chat/http-router Patch
@rocket.chat/livechat Patch
@rocket.chat/model-typings Patch
@rocket.chat/ui-avatar Major
@rocket.chat/ui-client Major
@rocket.chat/ui-contexts Major
@rocket.chat/web-ui-registration Major
@rocket.chat/account-service Patch
@rocket.chat/authorization-service Patch
@rocket.chat/federation-service Patch
@rocket.chat/omnichannel-transcript Patch
@rocket.chat/presence-service Patch
@rocket.chat/queue-worker Patch
@rocket.chat/stream-hub-service Patch
@rocket.chat/federation-matrix Patch
@rocket.chat/license Patch
@rocket.chat/media-calls Patch
@rocket.chat/omnichannel-services Patch
@rocket.chat/pdf-worker Patch
@rocket.chat/models Patch
@rocket.chat/network-broker Patch
@rocket.chat/omni-core-ee Patch
@rocket.chat/mock-providers Patch
@rocket.chat/ui-video-conf Major
@rocket.chat/ui-voip Major
@rocket.chat/instance-status Patch
@rocket.chat/omni-core Patch

Not sure what this means? Click here to learn what changesets are.

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 25, 2025

Walkthrough

Adds an AppExperimentalBridge that returns room IDs for a user, wires it into RealAppBridges, updates reader tests to include the experimental accessor, and adds a changeset bumping @rocket.chat/apps-engine and @rocket.chat/meteor.

Changes

Cohort / File(s) Summary of changes
Versioning / Changeset
.changeset/chatty-foxes-attend.md
Adds a changeset with minor bumps for @rocket.chat/apps-engine and @rocket.chat/meteor; documents new experimental API to retrieve user room IDs.
Bridges wiring
apps/meteor/app/apps/server/bridges/bridges.js
Imports AppExperimentalBridge, initializes _experimentalBridge in RealAppBridges, and exposes getExperimentalBridge() accessor.
Experimental bridge implementation
apps/meteor/app/apps/server/bridges/experimental.ts
New AppExperimentalBridge (extends ExperimentalBridge) with constructor(orch: IAppServerOrchestrator) and protected getUserRoomIds(userId, appId) that logs via orchestrator, queries Subscriptions.findByUserId (projection rid), converts results to array and returns string[].
Tests / Accessor updates
packages/apps-engine/tests/server/accessors/Reader.spec.ts
Adds IExperimentalRead import and experimental fixture member; initializes and passes experimental into Reader in setup and tests to cover the new experimental accessor path.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant App as App (Marketplace/In-house)
  participant AE as Apps Engine
  participant XB as AppExperimentalBridge
  participant Orch as Orchestrator
  participant Subs as Subscriptions

  App->>AE: Request user room IDs (userId)
  AE->>XB: getUserRoomIds(userId, appId)
  XB->>Orch: debugLog("getUserRoomIds")
  XB->>Subs: findByUserId(userId, { projection: { rid: 1 } })
  Subs-->>XB: Cursor
  XB->>XB: toArray() → map to rid[]
  XB-->>AE: roomId[]
  AE-->>App: roomId[]
  note right of XB #D3E4CD: New experimental bridge path to read memberships
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • ggazzo

Poem

I thump my paws in coder’s light,
A tiny bridge hops into sight—
I fetch the rids, all tidy and spry,
Subscriptions whisper, answers fly.
Bumps applied — a joyful hop! 🥕

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.
Linked Issues Check ✅ Passed The code changes comprehensively address all primary objectives from RCAI6-8. The implementation includes a new AppExperimentalBridge class with the getUserRoomIds method RCAI6-8, integration into the apps system to expose the bridge accessor RCAI6-8, bridge logic that queries Subscriptions.findByUserId and maps results to room IDs with debug logging RCAI6-8, and updates to test doubles in Reader.spec.ts to cover the new experimental accessor RCAI6-8. The changeset entry documents the experimental API addition, confirming the feature is complete and ready for integration.
Out of Scope Changes Check ✅ Passed All changes in the pull request are directly aligned with the stated objectives in RCAI6-8. The modifications include the changeset documentation, the new AppExperimentalBridge implementation with getUserRoomIds logic, bridge integration in the apps system, and test double updates—each change is necessary and in-scope for delivering the experimental room IDs read bridge feature. No extraneous or unrelated modifications were introduced.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
Title Check ✅ Passed The title concisely reflects the addition of a new experimental bridge for reading member room IDs in the apps engine and clearly summarizes the primary change without extraneous details.
✨ 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 new/ae/roomIdreadbridge

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.

@Dnouv Dnouv added this to the 7.12.0 milestone Sep 25, 2025
@Dnouv
Copy link
Member Author

Dnouv commented Sep 25, 2025

@coderabbitai help

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 25, 2025

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

CodeRabbit commands

These commands are invoked using PR/Issue comments.

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai evaluate custom pre-merge check --instructions <custom-checks-instructions> --name <custom-checks-title> [--mode <error|warning>] to validate the custom pre-merge checks instructions. Defaults to error when --mode is omitted.
    • @coderabbitai ignore pre-merge checks to override pre-merge checks and get an approval on PR.
    • @coderabbitai run pre-merge checks to run pre-merge checks on the pull request.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve to resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit configuration file (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, support, documentation and community

  • Visit our status page to check the current availability of CodeRabbit.
  • Create a ticket on our support page for assistance with any issues or questions.
  • Visit our documentation site for detailed information on how to use CodeRabbit.
  • Join our Discord community to connect with other users and get help from the community.
  • Follow us on X/Twitter for updates and announcements.

@codecov
Copy link

codecov bot commented Sep 25, 2025

Codecov Report

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

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #37057      +/-   ##
===========================================
- Coverage    67.60%   67.60%   -0.01%     
===========================================
  Files         3341     3341              
  Lines       114016   114016              
  Branches     20669    20673       +4     
===========================================
- Hits         77086    77075      -11     
- Misses       34258    34260       +2     
- Partials      2672     2681       +9     
Flag Coverage Δ
e2e 57.33% <ø> (-0.03%) ⬇️
unit 71.55% <ø> (-0.01%) ⬇️

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.

@Dnouv Dnouv marked this pull request as ready for review September 25, 2025 09:31
@Dnouv Dnouv requested a review from a team as a code owner September 25, 2025 09:31
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: 4

🧹 Nitpick comments (4)
.changeset/chatty-foxes-attend.md (1)

6-6: Call out permission gating in the changeset note.

Mention that this API requires AppPermissions.user.read so app authors understand permission needs.

-Adds a user room ID bridge to the apps engine so apps can retrieve members’ room identifiers.
+Adds a user room ID bridge to the apps engine so apps can retrieve members’ room identifiers (requires AppPermissions.user.read).
packages/apps-engine/tests/test-data/bridges/userBridge.ts (1)

41-43: Prefer a harmless default over throwing in test double.

Returning an empty array keeps unrelated tests resilient if this stub gets exercised.

-	protected getUserRoomIds(uid: string, appId: string): Promise<Array<string>> {
-		throw new Error('Method not implemented.');
-	}
+	protected getUserRoomIds(uid: string, appId: string): Promise<Array<string>> {
+		return Promise.resolve([]);
+	}
apps/meteor/app/apps/server/bridges/users.ts (1)

172-178: Harden result shaping (strip _id; filter falsy rids).

Small improvements to projection and mapping safety.

-		const subscriptions = await Subscriptions.findByUserId(uid, { projection: { rid: 1 } }).toArray();
-
-		return subscriptions.map((subscription) => subscription.rid);
+		const subscriptions = await Subscriptions.findByUserId(uid, { projection: { rid: 1, _id: 0 } }).toArray();
+		return subscriptions.map((s) => s.rid).filter(Boolean) as Array<string>;
packages/apps-engine/tests/server/accessors/UserRead.spec.ts (1)

34-36: Mock looks good. Consider adding a permission-denied case.

Add a test where doGetUserRoomIds resolves to undefined to assert accessor behavior when permission is missing.

📜 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 c124c49 and 00f0c9c.

📒 Files selected for processing (7)
  • .changeset/chatty-foxes-attend.md (1 hunks)
  • apps/meteor/app/apps/server/bridges/users.ts (1 hunks)
  • packages/apps-engine/src/definition/accessors/IUserRead.ts (1 hunks)
  • packages/apps-engine/src/server/accessors/UserRead.ts (1 hunks)
  • packages/apps-engine/src/server/bridges/UserBridge.ts (2 hunks)
  • packages/apps-engine/tests/server/accessors/UserRead.spec.ts (3 hunks)
  • packages/apps-engine/tests/test-data/bridges/userBridge.ts (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
packages/apps-engine/tests/server/accessors/UserRead.spec.ts (1)
packages/apps-engine/tests/test-data/utilities.ts (1)
  • TestData (178-547)
🔇 Additional comments (1)
packages/apps-engine/src/server/bridges/UserBridge.ts (1)

76-77: Abstract remains non-optional (only called when permitted).

No change needed; signature is correct.

@Dnouv Dnouv added the stat: QA assured Means it has been tested and approved by a company insider label Sep 25, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Sep 25, 2025
@d-gubert d-gubert removed stat: QA assured Means it has been tested and approved by a company insider stat: ready to merge PR tested and approved waiting for merge labels Sep 30, 2025
Copy link
Member

@d-gubert d-gubert left a comment

Choose a reason for hiding this comment

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

I'm wondering about the API. When the app calls the getUserRoomIds it will get the room ids, but is this info enough for the use case? I'm thinking that if the app will always have to getUserRoomIds and then fetch the full room info, maybe we should fetch the whole room objects by default? What do you think?

@Dnouv
Copy link
Member Author

Dnouv commented Oct 1, 2025

For the target use case, only room IDs are required; no use of the whole room object.
Given we have a bridge, rooms.getById() possibly if there is a need, we could have a new bridge, room.getByIds([]ids).

@Dnouv Dnouv requested a review from d-gubert October 2, 2025 02:09
@d-gubert
Copy link
Member

d-gubert commented Oct 2, 2025

For the target use case, only room IDs are required; no use of the whole room object. Given we have a bridge, rooms.getById() possibly if there is a need, we could have a new bridge, room.getByIds([]ids).

That's ok for now, then. I'd say if we ever encounter a use case where the room objects are necessary, it is more advantageous to provide a batch reader to avoid N network roundtrips to fetch room objects. But we can cross that bridge when we get there

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)
apps/meteor/app/apps/server/bridges/bridges.js (1)

11-11: Import wiring looks correct; watch Biome’s parse warning

Import path is consistent with local module resolution used elsewhere in this file. The Biome “Illegal use of an import declaration outside of a module” hint appears to be a config false positive since this file already uses ESM imports throughout. Consider ensuring Biome treats these files as modules (e.g., set sourceType=module or add a per-path override) to avoid CI noise.

apps/meteor/app/apps/server/bridges/experimental.ts (1)

10-16: Tighten the return type and trim projection for efficiency

  • This implementation always returns an array (empty when no subs), so the return type can drop undefined to reflect behavior and the accessor’s contract.
  • Exclude _id from the projection to reduce payload for large result sets.

Based on learnings

Apply:

- protected async getUserRoomIds(userId: string, appId: string): Promise<string[] | undefined> {
+ protected async getUserRoomIds(userId: string, appId: string): Promise<string[]> {
   this.orch.debugLog(`The App ${appId} is getting the room ids for the user: "${userId}"`);

-  const subscriptions = await Subscriptions.findByUserId(userId, { projection: { rid: 1 } }).toArray();
+  const subscriptions = await Subscriptions.findByUserId(userId, { projection: { rid: 1, _id: 0 } }).toArray();

   return subscriptions.map((subscription) => subscription.rid);
 }
📜 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 a61029e and 5d7687a.

📒 Files selected for processing (2)
  • apps/meteor/app/apps/server/bridges/bridges.js (3 hunks)
  • apps/meteor/app/apps/server/bridges/experimental.ts (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: Dnouv
PR: RocketChat/Rocket.Chat#37057
File: packages/apps-engine/src/definition/accessors/IUserRead.ts:23-27
Timestamp: 2025-09-25T09:59:26.461Z
Learning: AppUserBridge.getUserRoomIds in apps/meteor/app/apps/server/bridges/users.ts always returns an array of strings by mapping subscription documents to room IDs, never undefined, even when user has no room subscriptions.
Learnt from: Dnouv
PR: RocketChat/Rocket.Chat#37057
File: packages/apps-engine/src/definition/accessors/IUserRead.ts:23-27
Timestamp: 2025-09-25T09:59:26.461Z
Learning: AppUserBridge.getUserRoomIds in apps/meteor/app/apps/server/bridges/users.ts always returns an array of strings (mapping subscription documents to room IDs), never undefined, even when user has no room subscriptions.
📚 Learning: 2025-09-25T09:59:26.461Z
Learnt from: Dnouv
PR: RocketChat/Rocket.Chat#37057
File: packages/apps-engine/src/definition/accessors/IUserRead.ts:23-27
Timestamp: 2025-09-25T09:59:26.461Z
Learning: AppUserBridge.getUserRoomIds in apps/meteor/app/apps/server/bridges/users.ts always returns an array of strings (mapping subscription documents to room IDs), never undefined, even when user has no room subscriptions.

Applied to files:

  • apps/meteor/app/apps/server/bridges/experimental.ts
📚 Learning: 2025-09-25T09:59:26.461Z
Learnt from: Dnouv
PR: RocketChat/Rocket.Chat#37057
File: packages/apps-engine/src/definition/accessors/IUserRead.ts:23-27
Timestamp: 2025-09-25T09:59:26.461Z
Learning: AppUserBridge.getUserRoomIds in apps/meteor/app/apps/server/bridges/users.ts always returns an array of strings by mapping subscription documents to room IDs, never undefined, even when user has no room subscriptions.

Applied to files:

  • apps/meteor/app/apps/server/bridges/experimental.ts
🧬 Code graph analysis (2)
apps/meteor/app/apps/server/bridges/bridges.js (1)
apps/meteor/app/apps/server/bridges/experimental.ts (1)
  • AppExperimentalBridge (5-17)
apps/meteor/app/apps/server/bridges/experimental.ts (1)
packages/apps-engine/src/server/bridges/index.ts (1)
  • ExperimentalBridge (49-49)
🪛 Biome (2.1.2)
apps/meteor/app/apps/server/bridges/bridges.js

[error] 10-11: Illegal use of an import declaration outside of a module

not allowed inside scripts

(parse)


[error] 11-12: Illegal use of an import declaration outside of a module

not allowed inside scripts

(parse)

⏰ 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 (4)
apps/meteor/app/apps/server/bridges/bridges.js (2)

174-176: Accessor addition LGTM

Getter aligns with existing pattern (one getter per private bridge field). No concerns.


63-63: Instantiation LGTM; AppBridges interface already defines getExperimentalBridge

apps/meteor/app/apps/server/bridges/experimental.ts (2)

1-4: Imports are appropriate

Types and models are correctly sourced; aligns with existing server bridge files.


5-9: Constructor DI pattern LGTM

Extends ExperimentalBridge and captures orchestrator for debug logging, matching other bridges’ style.

@d-gubert d-gubert changed the title feat: Member room IDs read bridge feat: experimental member room IDs read bridge Oct 15, 2025
@Dnouv
Copy link
Member Author

Dnouv commented Oct 16, 2025

LGTM!

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 1777f84 and 7a2957a.

📒 Files selected for processing (1)
  • .changeset/chatty-foxes-attend.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
.changeset/chatty-foxes-attend.md

[grammar] ~6-~6: Ensure spelling is correct
Context: ...etrieves the ids of rooms the user is a memeber of

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~6-~6: Ensure spelling is correct
Context: ...he ids of rooms the user is a memeber of

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

⏰ 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

@d-gubert d-gubert force-pushed the new/ae/roomIdreadbridge branch from 7a2957a to 863fa0a Compare October 16, 2025 13:45
@d-gubert d-gubert added the stat: QA assured Means it has been tested and approved by a company insider label Oct 16, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Oct 16, 2025
@d-gubert d-gubert changed the title feat: experimental member room IDs read bridge feat(apps): experimental member room IDs read bridge Oct 16, 2025
@kodiakhq kodiakhq bot merged commit c253db3 into develop Oct 17, 2025
49 checks passed
@kodiakhq kodiakhq bot deleted the new/ae/roomIdreadbridge branch October 17, 2025 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants