Group the message list by conversation

Every list shows one row per conversation, Spark-style: the newest of its
emails in that list stands for it, with who wrote in it ("Sam, Hannah, me")
and a count badge once it has two or more. A row is unread, pinned or
priority if any email of the conversation is. Drafts stay one row each.

Rows and the thread toolbar act on the conversation. Done, Trash, Set Aside,
Snooze and drags onto the sidebar move its emails in the same place as the
row, so replies stay in Sent. Mark as Read reads all of it; Unread, Pin and
Priority mark the row's email, and turning Pin or Priority off clears it
from every email. Card and sub-list Done all take whole conversations, and
sidebar counters count conversations.

Settings > Appearance gets "Minimize old emails", on by default. Turned
off, every email of an opened conversation starts expanded.

The demo hike thread gains a second reply in the Inbox.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
958d2c2116Michael Rodriguez committed on 10/23/2026, 5:37:13 PMparent83b3904
8 files changedLine totals unavailable