- Shipped
- April 25, 2026 at 10:44 PM UTC
- Author
- kamo
- Commit
- 7a4d812
Same root cause as the ChatWebSocketProvider hoist: SupportTicketWindow calls **************** and ChatBox calls useUnread().markAsRead(), but both tool windows render inside ToolDock which sits ABOVE PresenceWrapper. The providers were unreachable from the tool window subtree, so consumers got default no-op values and the badge counts grew indefinitely with no way to decrement. Move UnreadProvider and SupportCountProvider to app/layout.tsx wrapping ToolProviders. Both providers handle the unauthenticated case gracefully (fetch returns 401 silently; STOMP subscriptions only fire when connected).