Inbox refactor#2045
Conversation
wesbillman
left a comment
There was a problem hiding this comment.
Two user-visible inconsistencies need correction before this is ready:
Show unread onlyonly filters feed conversations.Allstill appends every pending reminder and active draft, so enabling the toggle can leave a list full of rows that have no unread state and cannot be marked read. Either define/filter personal-row unread state or make the control's scope explicit and keep those rows out of the unread result; add an E2E assertion covering mixed messages + reminders + drafts.- Reminder detail renders DM context as a channel (
#Alice) while the All row correctly rendersIn DM with Alice, contradicting this PR's stated location semantics. Use the channel type in detail and cover the DM case.
The branch is also behind current main; after these changes, rebase and require fresh CI before the final approval gate.
04d71bf to
1b87f18
Compare
|
🤖 @delkc This is a thoughtful rework. I’d simplify the scope and ship the strongest parts directly. Let’s just ship thisLet’s remove the Activity experiment and make these improvements directly to the existing destination. Maintaining two paths adds implementation and testing complexity without much benefit. Restore title navigationPlease make the channel/DM title link to the canonical conversation again. The external-link icon can remain, but it shouldn’t replace the larger, expected navigation target. Avoid detail-pane churn when switching filtersPreserve the selected conversation when it remains valid in the destination filter. Otherwise, transition directly to the first result on wide layouts—or the list on narrow layouts—without flashing intermediate content. Coverage for both cases would help lock this in. What we’d keep
Follow-up opportunities
This leaves the PR with one clear thesis: ship a focused, conversation-oriented work feed without customization, preference persistence, or an experiment fork. |
7293394 to
28f552a
Compare
|
🤖 Updated Activity behavior and controls These replace the earlier experiment screenshots. Activity now ships directly, with Custom/default-view controls removed from this scoped pass. Current filtersThe focused message filters remain together. A subtle divider separates Reminders and Drafts, and their counts live beside the corresponding label instead of on the overall filter control. Current navigation and controlsThe primary destination uses the Activity label and bell icon. The overflow is back to two focused actions: Show unread only and Mark all as read. Consecutive DMsBefore: Three consecutive DMs produced three feed rows, and opening one showed only that standalone message. Current: The messages collapse into one conversation row. Opening it starts at the oldest unread DM and shows the full conversation with the existing New boundary. Thread contextBefore: The row and detail view anchored on the latest reply, requiring the user to scan backward for the beginning of unread activity. Current: The row still sorts and previews by latest activity, while opening it anchors on the oldest unread reply and preserves the familiar New boundary in the complete thread. |






Why
The current Inbox mixes overlapping feed categories with personal work queues, so All is not actually comprehensive and several filters do not make it clear why an item appears. Threads and DMs can produce one row per event instead of one row per conversation, drafts are hidden until selected, and reminders appear through multiple competing presentations.
This refactor makes Activity a focused, conversation-oriented place to catch up on work relevant to you. It is intentionally not a mirror of every unread event in every channel.
What changed
Filter model
Grouping, ordering, and state
In #channelorIn DM with <name>.Removed or narrowed
Risk assessment
Medium implementation risk because this changes composition, grouping, ordering, read behavior, and personal queues in a primary desktop view. The implementation is scoped to the desktop UI and its local activity projection; it does not change relay schemas or public APIs.
Testing
Update: July 24, 2026
This PR originally proposed a default-off experiment with Custom and default-view controls. Review feedback led us to simplify the first release: the focused Activity behavior now ships directly, and the customization layer has been removed. The remaining naming decision between Activity and Inbox can be evaluated independently from the behavior in this PR.
Generated with Codex