Repository navigation
feat(chat): group DMs behind group_messages flag - #14749
Merged
Merged
Conversation
🦋 Changeset detectedLatest commit: 6ea2727 The changes in this PR will be included in the next version bump. This PR includes changesets to release 4 packages
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 |
dylanjeffers
force-pushed
the
feat/group-dms
branch
from
November 11, 2026 21:19
6435c74 to
7fc8534
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New-message modal multi-select, group inbox rows and header, member list, leave group, and sender name/avatar on group messages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Multi-select in the new-message screen, group inbox rows and header, members screen, leave group drawer, and sender name/avatar on group messages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dylanjeffers
force-pushed
the
feat/group-dms
branch
from
November 11, 2026 21:31
7fc8534 to
6ea2727
Compare
dylanjeffers
added a commit
that referenced
this pull request
Nov 13, 2026
Since #14749 (group DMs), a message that is only a track or playlist link renders as a narrow card showing just the artwork and repost count, in 1:1 chats too. Messages with text plus a link look fine because the text sets the bubble's width. Prod predates #14749, so it only shows on RC. **Cause:** #14749 wrapped every bubble in a `Flex` row so the group sender's avatar can sit beside it. That row is a shrink-to-fit flex item of the message column, so the link-only bubble's `width: min(448px, 100%)` resolves against the row's content width instead of the list. **Fix:** the row is now `w='100%'`, justified `flex-end` for your own messages and `flex-start` for others. Text bubbles keep their content width (`max-width` is unchanged). **Checked:** in a static reproduction of the bubble CSS, the current layout gives the link-only bubble 354px (and less with the real unfurl contents), and the fix restores 448px, matching the pre-#14749 layout. Author bubbles stay right-aligned and a text-only bubble keeps its 172px content width. Not yet checked in the running app: please look at a link-only message on RC after merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Group DMs on web and mobile, behind a new
group_messagesflag (on in dev, off in prod). The flag only gates creating groups; a group someone else made always renders correctly. Backend: AudiusProject/api#1067. Push copy: AudiusProject/pedalboard#109.Changes
SDK (changeset: minor)
chats.createwith more than one invitee makes a group with agrp_<ulid>id (optionalchatIdparam). 1:1 ids are unchanged.chats.leave({ chatId })→chat.leaveRPC.UserChat.is_group, plus themakeGroupChatId/isGroupChatIdhelpers.Common
FeatureFlags.GROUP_MESSAGES.createChat({ userIds })with 2+ users creates a group, or reuses an already-loaded group with exactly the same members. On failure it backs out of the optimistic navigation and shows a group-specific toast.leaveChat({ chatId })saga.useCanSendMessagealways allows sending in groups.useCanCreateChatandgetUserListignore group chats, so sharing a group never counts as an existing 1:1.useIsGroupChat,formatGroupChatTitle("Ann, Bo & 2 others"),isFirstInSenderRun, andMAX_GROUP_CHAT_MEMBERS(10, matches the api).Web
Mobile: the same set.
ChatMembersroute).Test plan
packages/common:vitest run src/store/pages/chat src/utils src/hooks/chats→ 106 passed. New saga tests cover a new group id, reusing a group with the same members, the 1:1 id staying deterministic, and leave.packages/web:tsc --noEmit, eslint on changed files, chat-page vitest (9 passed).packages/mobile:tsc --noEmit, eslint on changed files.VITE_API_URL=http://localhost:1323; four local-only test wallets, nothing on prod):grp_…and opened a header reading "Local Cy & Local Bo · 3 members".a:bchat, not the group, and sent normally.Rollout
Merge api#1067 first. Keep
group_messagesoff in prod until mobile has been checked on a device.Not in this PR
chats.invite, but the api has nochat.invitehandler.🤖 Generated with Claude Code