diff --git a/frontend/src/components/list/MessageList.tsx b/frontend/src/components/list/MessageList.tsx index 0bd6233..cc094fe 100644 --- a/frontend/src/components/list/MessageList.tsx +++ b/frontend/src/components/list/MessageList.tsx @@ -119,9 +119,13 @@ export function MessageList({ const selected = selectedId === thread.id; const checked = checkedIds.has(thread.id); const dimmed = dimmedIds?.has(thread.id) ?? false; + // `participants` is from + to + cc, newest message first — so the first + // entry is the sender and the rest are recipients (usually just you). + // The list shows the sender only. const primary = thread.participants[0]; - const names = - thread.participants.map((p) => p.name || p.email).join(", ") || "(no one)"; + const names = primary ? primary.name || primary.email : "(no one)"; + // The badge still counts everyone involved — the name is narrowed, the + // "how many people are in this" signal is not. const extra = Math.max(0, thread.participants.length - 1); const avatarBg = `hsl(${hue(primary?.email || primary?.name || "?")} 45% 45%)`; const stop = (fn: () => void) => (e: React.MouseEvent) => {