Skip to content

Conversation

@aleksandernsilva
Copy link
Contributor

@aleksandernsilva aleksandernsilva commented Nov 28, 2025

Proposed changes (including videos or screenshots)

This pull request adds a visual badge for invited users in the room members contextual. The changes also add a new story and snapshot test for rooms with invited members.

Screenshot 2025-12-01 at 10 22 51

Issue(s)

FB-63

Steps to test or reproduce

ℹ️ Currently invitation requests are only available for federated rooms.
ℹ️ You'll need two workspaces with federation enabled (I'll refer to them as ws-a and ws-b)

  • Create a room federated room (ws-a)
  • Invite an user from ws-b to the room (ws-a)
  • Send a message
  • Access members list in the room toolbox
  • Invited status should be displayed besides the inviter user

Further comments

Summary by CodeRabbit

  • New Features

    • Added a visual invitation badge indicator for invited members displayed in the room member list, improving clarity on member invitation status.
  • Tests

    • Added test coverage for invited member scenarios.

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

@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Nov 28, 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 Nov 28, 2025

⚠️ No Changeset found

Latest commit: 9c7345e

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 Nov 28, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This PR introduces support for displaying invited member status in the room members list. It extracts the RoomMemberUser type to a centralized location, adds a new InvitationBadge component to visually indicate invited members, and updates related components to pass and render the status appropriately.

Changes

Cohort / File(s) Summary
Type extraction
apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx, apps/meteor/client/views/room/contextualBar/RoomMembers/types.ts
Moved RoomMemberUser type definition from RoomMembers.tsx to a new centralized types.ts file; added optional status and roles fields to the type definition.
Component updates
apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx, apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersRow.tsx
Updated components to use centralized RoomMemberUser type; added status prop handling; RoomMembersItem conditionally renders InvitationBadge when status equals 'INVITED'.
New badge component
apps/meteor/client/views/room/contextualBar/RoomMembers/badges/InvitationBadge.tsx
New functional component rendering a mail icon with translated title and accessibility attributes for invited member status display.
Stories and translations
apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.stories.tsx, packages/i18n/src/locales/en.i18n.json
Added WithInvitedMember Storybook story with a member having INVITED status; added "Message_request" translation entry.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Straightforward type extraction and refactoring with consistent pattern application
  • New badge component is simple and focused
  • Conditional rendering logic is minimal
  • Changes follow existing patterns without structural complexity

Possibly related PRs

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • dougfabris
  • tassoevan

Poem

🐰 A badge for invitations, shiny and new,
With mail icons dancing in welcome view,
Types unified, components aligned,
Stories now show what members find,
Members invited, their status on display! 💌

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 feature: adding an invitation badge to the room members list, which aligns with the changeset.
Linked Issues check ✅ Passed The PR implements the room members list invited status badge FB-63 by adding InvitationBadge component, updating types, and creating stories for invited members.
Out of Scope Changes check ✅ Passed All changes are directly scoped to implementing the invitation badge feature: type consolidation, component updates, badge creation, and i18n translation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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.

@aleksandernsilva
Copy link
Contributor Author

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 1, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

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

🧹 Nitpick comments (2)
apps/meteor/client/views/room/contextualBar/RoomMembers/types.ts (1)

1-6: Shared RoomMemberUser type looks correct; consider reusing IUser['roles'] to avoid duplication

The alias cleanly centralizes the member shape and the status?: UserStatus | SubscriptionStatus union fits the invited-member use case.

You can make the roles typing more robust (and drop the IRole import) by reusing the existing IUser.roles definition instead of duplicating IRole['_id'][]:

-import type { IUser, IRole, SubscriptionStatus, UserStatus } from '@rocket.chat/core-typings';
-
-export type RoomMemberUser = Pick<IUser, 'username' | '_id' | 'name' | 'freeSwitchExtension' | 'federated'> & {
-	roles?: IRole['_id'][];
-	status?: UserStatus | SubscriptionStatus;
-};
+import type { IUser, SubscriptionStatus, UserStatus } from '@rocket.chat/core-typings';
+
+export type RoomMemberUser = Pick<IUser, 'username' | '_id' | 'name' | 'freeSwitchExtension' | 'federated'> &
+	Partial<Pick<IUser, 'roles'>> & {
+		status?: UserStatus | SubscriptionStatus;
+	};
apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.stories.tsx (1)

96-96: Clarify isABACRoom configuration.

Setting isABACRoom: true in the invited member story appears unrelated to the invitation feature. This should likely be false to isolate the invitation badge functionality, unless ABAC rooms have specific invitation behavior.

Consider applying this diff if ABAC is not relevant to the invitation scenario:

 	reload: action('reload'),
-	isABACRoom: true,
+	isABACRoom: false,
 };
📜 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 54a4be7 and cd472aa.

⛔ Files ignored due to path filters (1)
  • apps/meteor/client/views/room/contextualBar/RoomMembers/__snapshots__/RoomMembers.spec.tsx.snap is excluded by !**/*.snap
📒 Files selected for processing (7)
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.stories.tsx (1 hunks)
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx (2 hunks)
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx (3 hunks)
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersRow.tsx (2 hunks)
  • apps/meteor/client/views/room/contextualBar/RoomMembers/badges/InvitationBadge.tsx (1 hunks)
  • apps/meteor/client/views/room/contextualBar/RoomMembers/types.ts (1 hunks)
  • packages/i18n/src/locales/en.i18n.json (1 hunks)
🧰 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/RoomMembers/types.ts
  • apps/meteor/client/views/room/contextualBar/RoomMembers/badges/InvitationBadge.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.stories.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersRow.tsx
🧠 Learnings (7)
📚 Learning: 2025-09-25T09:59:26.461Z
Learnt from: Dnouv
Repo: RocketChat/Rocket.Chat PR: 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/client/views/room/contextualBar/RoomMembers/types.ts
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersRow.tsx
📚 Learning: 2025-09-25T09:59:26.461Z
Learnt from: Dnouv
Repo: RocketChat/Rocket.Chat PR: 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/client/views/room/contextualBar/RoomMembers/types.ts
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersRow.tsx
📚 Learning: 2025-10-28T16:53:42.761Z
Learnt from: ricardogarim
Repo: RocketChat/Rocket.Chat PR: 37205
File: ee/packages/federation-matrix/src/FederationMatrix.ts:296-301
Timestamp: 2025-10-28T16:53:42.761Z
Learning: In the Rocket.Chat federation-matrix integration (ee/packages/federation-matrix/), the createRoom method from rocket.chat/federation-sdk will support a 4-argument signature (userId, roomName, visibility, displayName) in newer versions. Code using this 4-argument call is forward-compatible with planned library updates and should not be flagged as an error.

Applied to files:

  • apps/meteor/client/views/room/contextualBar/RoomMembers/types.ts
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersRow.tsx
📚 Learning: 2025-11-17T15:07:13.273Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37398
File: packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx:357-363
Timestamp: 2025-11-17T15:07:13.273Z
Learning: In packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx, IconElement is a presentational, non-actionable element that does not require wrapping in AppIdProvider, similar to plain_text and mrkdwn renderers. Only actionable elements (those with actions, actionId, or interactive behavior) should be wrapped in AppIdProvider.

Applied to files:

  • apps/meteor/client/views/room/contextualBar/RoomMembers/badges/InvitationBadge.tsx
📚 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
📚 Learning: 2025-11-27T17:56:26.050Z
Learnt from: MartinSchoeler
Repo: RocketChat/Rocket.Chat PR: 37557
File: apps/meteor/client/views/admin/ABAC/AdminABACRooms.tsx:115-116
Timestamp: 2025-11-27T17:56:26.050Z
Learning: In Rocket.Chat, the GET /v1/abac/rooms endpoint (implemented in ee/packages/abac/src/index.ts) only returns rooms where abacAttributes exists and is not an empty array (query: { abacAttributes: { $exists: true, $ne: [] } }). Therefore, in components consuming this endpoint (like AdminABACRooms.tsx), room.abacAttributes is guaranteed to be defined for all returned rooms, and optional chaining before calling array methods like .join() is sufficient without additional null coalescing.

Applied to files:

  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx
  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx
📚 Learning: 2025-09-25T09:59:26.461Z
Learnt from: Dnouv
Repo: RocketChat/Rocket.Chat PR: 37057
File: packages/apps-engine/src/definition/accessors/IUserRead.ts:23-27
Timestamp: 2025-09-25T09:59:26.461Z
Learning: UserBridge.doGetUserRoomIds in packages/apps-engine/src/server/bridges/UserBridge.ts has a bug where it implicitly returns undefined when the app lacks read permission (missing return statement in the else case of the permission check).

Applied to files:

  • apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx
🧬 Code graph analysis (2)
apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx (2)
apps/meteor/client/views/room/contextualBar/RoomMembers/types.ts (1)
  • RoomMemberUser (3-6)
packages/core-typings/src/IRoom.ts (1)
  • IRoom (21-95)
apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersRow.tsx (1)
apps/meteor/client/views/room/contextualBar/RoomMembers/types.ts (1)
  • RoomMemberUser (3-6)
🔇 Additional comments (4)
apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersRow.tsx (1)

1-41: LGTM! Type refactoring is clean.

The migration from local type definition to centralized RoomMemberUser type improves maintainability, and the new status prop is correctly wired to RoomMembersItem.

apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.tsx (1)

1-12: LGTM! Type centralization is consistent.

Moving the RoomMemberUser type to a dedicated types module improves code organization and reusability.

apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx (1)

19-20: LGTM! Invitation badge integration is well-structured.

The component correctly:

  • Uses the centralized RoomMemberUser type
  • Conditionally renders InvitationBadge for invited members
  • Wraps the badge in OptionColumn for proper layout

The string literal comparison status === 'INVITED' should be verified to match the enum definition (see verification comment in the stories file).

Also applies to: 25-30, 37-37, 63-67

apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembers.stories.tsx (1)

82-82: Remove this comment—'INVITED' is a valid SubscriptionStatus value.

SubscriptionStatus is defined as type SubscriptionStatus = 'INVITED' in packages/core-typings/src/ISubscription.ts. The status value in the story correctly uses this type.

"Message_list": "Message list",
"Message_pinning": "Message pinning",
"Message_removed": "message removed",
"Message_request": "Message request",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Search for usages of the new i18n key
rg -n '"Message_request"' --glob '!**/dist/**' --glob '!**/build/**'

Repository: RocketChat/Rocket.Chat

Length of output: 149


🏁 Script executed:

# Search for InvitationBadge component and invitation-related code
fd -i 'InvitationBadge' --glob '!**/dist/**' --glob '!**/build/**'

Repository: RocketChat/Rocket.Chat

Length of output: 223


🏁 Script executed:

# Look for invitation-related i18n keys to compare naming patterns
rg -n '"Invite' packages/i18n/src/locales/en.i18n.json -A 1 -B 1

Repository: RocketChat/Rocket.Chat

Length of output: 1384


🏁 Script executed:

# Search for recent changes referencing message request or invitation badge
rg -n 'invitation.*badge|invited.*member' apps meteor packages -i --glob '!**/dist/**' --glob '!**/build/**' | head -30

Repository: RocketChat/Rocket.Chat

Length of output: 1008


🏁 Script executed:

cat -n apps/meteor/client/views/room/contextualBar/RoomMembers/badges/InvitationBadge.tsx

Repository: RocketChat/Rocket.Chat

Length of output: 601


🏁 Script executed:

# Check the context around where InvitationBadge is used
sed -n '15,70p' apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersItem.tsx

Repository: RocketChat/Rocket.Chat

Length of output: 2067


🏁 Script executed:

# Search more broadly for where Message_request might be used
rg -n 'Message_request' --type json --type tsx --type ts --type jsx --type js

Repository: RocketChat/Rocket.Chat

Length of output: 93


Use a label that accurately describes the invitation status; "Message request" doesn't match the feature.

The InvitationBadge component uses t('Message_request') for both title and aria-label of a mail icon shown when a room member has status === 'INVITED'. The label "Message request" is semantically mismatched with an invitation status badge. Use a clearer label like "Invited" or "Invitation pending" to accurately reflect the displayed state and improve accessibility.

🤖 Prompt for AI Agents
In packages/i18n/src/locales/en.i18n.json around line 3451, the label
"Message_request" is used for the InvitationBadge title/aria-label but does not
reflect an invitation state; change the key/value to a clear invitation label
(for example update key/value to "Invitation_pending": "Invitation pending" or
"Invited": "Invited") and then update the InvitationBadge usage to call the new
i18n key so the title and aria-label accurately describe the INVITED status for
accessibility.

@ggazzo ggazzo force-pushed the feat/invites branch 2 times, most recently from b2cc5c0 to 0d14b19 Compare December 3, 2025 18:49
@aleksandernsilva aleksandernsilva force-pushed the feat/members-list-invite-badge branch from cd472aa to 8316778 Compare December 3, 2025 19:42
@github-actions
Copy link
Contributor

github-actions bot commented Dec 3, 2025

📦 Docker Image Size Report

📈 Changes

Service Current Baseline Change Percent
sum of all images 1.2GiB 1.2GiB +12MiB
rocketchat 359MiB 347MiB +12MiB
omnichannel-transcript-service 132MiB 132MiB +18KiB
queue-worker-service 132MiB 132MiB +15KiB
ddp-streamer-service 126MiB 126MiB +22KiB
account-service 113MiB 113MiB +16KiB
stream-hub-service 111MiB 111MiB +13KiB
presence-service 111MiB 111MiB +21KiB
authorization-service 111MiB 111MiB +16KiB

📊 Historical Trend

---
config:
  theme: "dark"
  xyChart:
    width: 900
    height: 400
---
xychart
  title "Image Size Evolution by Service (Last 30 Days + This PR)"
  x-axis ["11/15 22:28", "11/16 01:28", "11/17 23:50", "11/18 22:53", "11/19 23:02", "11/21 16:49", "11/24 17:34", "11/27 22:32", "11/28 19:05", "12/01 23:01", "12/02 21:57", "12/03 21:00", "12/04 18:17", "12/05 21:56", "12/08 01:13 (PR)"]
  y-axis "Size (GB)" 0 --> 0.5
  line "account-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "authorization-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "ddp-streamer-service" [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]
  line "omnichannel-transcript-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
  line "presence-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "queue-worker-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
  line "rocketchat" [0.36, 0.36, 0.35, 0.35, 0.35, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.35]
  line "stream-hub-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
Loading

Statistics (last 14 days):

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

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

  • Tag: pr-37643
  • Baseline: develop
  • Timestamp: 2025-12-08 01:13:24 UTC
  • Historical data points: 14

Updated: Mon, 08 Dec 2025 01:13:25 GMT

@codecov
Copy link

codecov bot commented Dec 3, 2025

Codecov Report

❌ Patch coverage is 25.00000% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 53.96%. Comparing base (0d14b19) to head (8316778).

Additional details and impacted files

Impacted file tree graph

@@               Coverage Diff                @@
##           feat/invites   #37643      +/-   ##
================================================
- Coverage         54.20%   53.96%   -0.25%     
================================================
  Files              2639     2640       +1     
  Lines             50047    50051       +4     
  Branches          11200    11201       +1     
================================================
- Hits              27129    27010     -119     
- Misses            20774    20907     +133     
+ Partials           2144     2134      -10     
Flag Coverage Δ
e2e 57.26% <25.00%> (-0.04%) ⬇️
e2e-api 42.22% <ø> (-0.99%) ⬇️

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.

@aleksandernsilva aleksandernsilva force-pushed the feat/members-list-invite-badge branch 2 times, most recently from 60e7fc1 to 04782f5 Compare December 7, 2025 21:24
@aleksandernsilva aleksandernsilva force-pushed the feat/members-list-invite-badge branch from bc5722b to 9c7345e Compare December 8, 2025 00:59
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.

2 participants