Show unseen messages on every queue row, not just joined ones

Featurekamo-internal
Shipped
August 13, 2026 at 2:36 AM UTC
Author
kamo
Commit
929cca9

The badge and the row tint were already here — they were simply never populated for most of the list. getUnreadFor read only the live per-session unread map, which is derived from the viewer's own membership row, so a ticket they had not joined could never light up. On this queue that is most of it, and the unassigned tickets nobody has picked up are both the majority and the rows that most need the flag. It now prefers the live map, which is authoritative for conversations the viewer is in and updates over STOMP the moment they read or a reply lands, and falls back to the server's per-ticket count for everything else. The two cannot be merged blindly: the live map only ever carries sessions that still have unread messages, so "read a second ago" and "never counted" are indistinguishable in it — hence the small set of conversations opened during this visit, which keeps a row the member is currently reading from staying lit until the next reload. The list also re-reads itself when the support pending count moves. For a conversation the viewer has not joined there is no live channel that would ever correct the snapshot — the unread topic only reaches people in the session, which on a queue is nobody — and pendingCount is the one signal that does reach every support-capable member of the org.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing