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.