23-Jun-2026 — real message-time ordering, reconnect button, and mobile density #293
- Conversation list and thread messages now sort by the message's actual
receivedAt/sentAt rather than the time it was imported. Thread firstSeenAt/
lastSeenAt are derived from the message time with $max/$min so the latest and
earliest message win regardless of import order. Previously every imported
thread carried the import timestamp, which displayed the wrong time and made
the ordering meaningless.
- Promoted the Newest/Oldest sort toggle to the top button row so one control
governs both the conversation list and the messages within a thread.
- Added a Reconnect button on a connected Gmail mailbox so a revoked or expired
token can be re-authorised in place, preserving the mailbox settings and the
Pub/Sub watch. The connect button previously only appeared when no token was
stored, leaving no way to reconnect a mailbox whose token had died.
- Mobile: hide the redundant Conversations heading and the count line (shown
only while searching), give the scrollable list more height, and make the
search box padding symmetric.