fad8a52da4
#1 Last seen still read "Offline": last_seen is a NEW column, so every existing user was NULL until they happened to reconnect. Backfill it from the newest message each user sent (best evidence we already have), and also stamp it on message send — not just on connect/disconnect — so it stays fresh if a socket never closes cleanly. #3 Past-meetings filter is a report filter now: presets (Today, Yesterday, Last 7/30 days, This month, Year to date, All time) plus a Custom range that uses the SAME branded calendar popup as the scheduler. The raw <input type=date> looked foreign and behaved differently per browser. #4 Hover action row overflowed off-panel on SHORT received messages: it's wider than the bubble and was anchored to the bubble's right edge, so it ran off the left. Received bubbles now anchor it from the left (growing into the empty space); own messages keep the right anchor. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>