Live thread updates, and reactions that are actually reachable

Featurekamo-internal
Shipped
September 6, 2026 at 10:07 PM UTC
Author
Kamo
Commit
3ddf75c

Two halves of the thread were built and then left unconnected. The server has published every comment and status event to `chat.session.{guid}` since the feature landed, and nothing subscribed — so the transcript only moved when the reader posted something themselves, and two people triaging the same report saw different histories until one of them reloaded. It now subscribes through the same context `TicketChat` uses, after the first load has settled so a frame arriving mid-fetch is not overwritten by the page already in flight. It re-reads the page rather than appending the frame, which is the opposite of what chat does and deliberate: a chat runs to hundreds of messages, a bug thread is a handful, and the frame carries neither the reply quote nor the reaction list — an appended row would render without its quote until something else forced a reload. The reactions endpoint was worse: server, service and DTO field all shipped, and no client could reach any of it. There was no route, no api method and nothing drawn. It has all three now, and `isReacted` travels as the state being ASKED FOR rather than a delta, so a racing double-click converges instead of flipping twice; the server's answer replaces the row's list rather than merging into it. Four emoji, offered inline. A bug thread is not a chat — the useful reactions are "I hit this too", "looking at it" — and a full picker would be more control than the conversation has uses for. Unused chips are drawn only on hover of their comment, so ten comments are not forty grey buttons. The tests fake the websocket context on purpose: the real one's DEFAULT is a no-op that only warns, so a test without a provider in scope would have passed while the subscription was absent entirely.

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