- Shipped
- August 12, 2026 at 10:17 PM UTC
- Author
- kamo
- Commit
- 6f19d8a
Closing a support window is not leaving the conversation, but it was treated as if it were. ChatNotificationListener returned early on every SUPPORT_TICKET notification — correctly, since a ticket must not open a plain chat window, but it left support with no live re-open at all. Whoever closed their panel, most often the person who asked for help once they had asked, simply never saw the reply. It now opens the support window instead, addressed by the ticket id the notification carries; the tool store dedupes on ticketId, so a window already up is focused rather than duplicated. AutoOpenUnreadSupportChats is the durable half, for a reply that arrived while they were signed out — the live push is core NATS with no replay. Deliberately separate from AssignedTicketOpener: that one answers "this work is now yours", this one answers "somebody said something to you", and for a requestor the first never happens at all. Both acknowledge through the same auto-opened record the chat path uses, so a second device does not replay what the first has shown. ChatsList now takes ticketId straight off the activity frame. Synthesizing a support row without one produced a row that could not be opened, so the list had to throw the frame away and re-read the whole page to get it.