The conversation list draws one row per conversation (static/src/xml/conversation_view.xml, the o_mailpro_item loop). Outlook expands the selected conversation in place: a caret on the row, and under it one small row per message in the thread, with the sender, the time, a Sent badge on our own mail, and the message you click opening in the conversation pane.
What exists today is the per-message stack in the conversation pane (#139, newest first since #185). Nothing has ever put those rows in the conversation list.
Scope if built:
- caret on the row, expanded state per conversation, not stored between sessions
- one row per message: avatar/initials, correspondent, time, Sent marker for outgoing
- clicking a message row selects the conversation and opens that message in the conversation pane
tools/ui_check.py step + screenshot, per CLAUDE.md
Open question before building: two lists of the same messages (list rows and the pane's stack) is a second copy of one thing, the same argument that rejected the chevron in the mailbox list plan. Decide whether the expansion replaces the pane's own history rows or is accepted as duplication.
The conversation list draws one row per conversation (
static/src/xml/conversation_view.xml, theo_mailpro_itemloop). Outlook expands the selected conversation in place: a caret on the row, and under it one small row per message in the thread, with the sender, the time, a Sent badge on our own mail, and the message you click opening in the conversation pane.What exists today is the per-message stack in the conversation pane (#139, newest first since #185). Nothing has ever put those rows in the conversation list.
Scope if built:
tools/ui_check.pystep + screenshot, per CLAUDE.mdOpen question before building: two lists of the same messages (list rows and the pane's stack) is a second copy of one thing, the same argument that rejected the chevron in the mailbox list plan. Decide whether the expansion replaces the pane's own history rows or is accepted as duplication.