- Shipped
- August 3, 2026 at 2:51 AM UTC
- Author
- kamo
- Commit
- 19538ad
Both list views keyed a row on its sender, so every row of the reader's own outbox showed the reader — their photo, their name, their address. The message list had no folder context at all, and the conversation list took participants[0] from a list that mixes both sides of the thread. The two views need different rules. A single message knows only its own headers, so it needs the folder: incoming shows the sender, outgoing shows the recipient. Folder names are matched by shape rather than exact string because providers disagree — "[Gmail]/Sent Mail", "Sent Items", "Sent". A conversation already carries both sides, so it needs no folder at all: the first participant who is not the reader is the other party, in Inbox and Sent alike. Both fall back to the reader rather than to nothing, so a note-to-self and a thread with a single participant still render. MessageBrowser already computed the reader's addresses for Reply All — that set is reused here rather than recomputed, so an alias or a shared mailbox is handled the same way in both places. Tests cover the folder-name variants, the reader-in-own-recipients case, and the degenerate fallbacks, plus the parsing this all keys on: the address is the cache key, and a disagreement between two call sites shows one person two ways on one screen and halves the hit rate.