From 62157b148b24af2a46621869c7b85a6b544e9e3d Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 23:19:08 +0000 Subject: [PATCH] fix(webapp): sort active team members alphabetically The active team members list in organization settings is now sorted alphabetically instead of appearing in an arbitrary order. Members are sorted case-insensitively by their display name, falling back to their email address when no name is set. The pending invites list on the same page is now sorted alphabetically by email too. Mono-RevId: 38df496ffef4cf31f8956c4c3cd38387e06e4519 --- .server-changes/sort-team-members-alphabetically.md | 6 ++++++ apps/webapp/app/models/member.server.ts | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 .server-changes/sort-team-members-alphabetically.md diff --git a/.server-changes/sort-team-members-alphabetically.md b/.server-changes/sort-team-members-alphabetically.md new file mode 100644 index 00000000000..2bc8bdbf45b --- /dev/null +++ b/.server-changes/sort-team-members-alphabetically.md @@ -0,0 +1,6 @@ +--- +area: webapp +type: fix +--- + +Team members and pending invites on the organization Team page are now listed in alphabetical order. diff --git a/apps/webapp/app/models/member.server.ts b/apps/webapp/app/models/member.server.ts index 99b757e32a5..2452f9f25f7 100644 --- a/apps/webapp/app/models/member.server.ts +++ b/apps/webapp/app/models/member.server.ts @@ -101,7 +101,17 @@ export async function getTeamMembersAndInvites({ return null; } - return { members: org.members, invites: org.invites }; + // Prisma can't express "order by name, falling back to email when unset" + // case-insensitively in a single nested orderBy, so sort in JS here. + const byDisplayName = (a: string, b: string) => + a.localeCompare(b, undefined, { sensitivity: "base" }); + + const members = [...org.members].sort((a, b) => + byDisplayName(a.user.name ?? a.user.email, b.user.name ?? b.user.email) + ); + const invites = [...org.invites].sort((a, b) => byDisplayName(a.email, b.email)); + + return { members, invites }; } export async function inviteMembers({