Quote the feed queries' aliases, and stop counting your own support messages against you

Fixkamo-shared-library
Shipped
August 12, 2026 at 10:16 PM UTC
Author
Kamo
Commit
2746ad0

Two independent defects in the Chats feed, both invisible from the Java side. The native chat/support/social queries aliased columns in camelCase without quoting them. The rows come back as a Map keyed by alias; Hibernate takes those keys from **************** which is whatever the server reported, and YugabyteDB folds an unquoted identifier to lower case. TupleMetadata then looks the alias up in a case-SENSITIVE map, misses, and Spring's TupleBackedMap swallows the IllegalArgumentException and answers null. So map.get("ticketId") was null with no exception, no log line and nothing to notice. A support row with no ticket id cannot be opened at all — a support conversation is addressed by ticket, not by session — so every row in Chats -> Support was inert. lastActivityAt died the same way, silently costing the merged Support unread counting assumed that in a support session the visitor and the agent share one member id. That is true only of the public web-chat widget, where an anonymous visitor has no member record and writes under the org's system member. It is false for an in-app ticket — and the fallback it justified, counting every message in the session including your own, meant filing a support request put an unread badge on the asker's own chat indicator: creation writes a CREATED system event authored by the requestor, routing writes ASSIGNED, and both were counted against them for a conversation nobody had replied to yet. The ambiguity is now detected precisely (a public-chat session, viewed by the member it is written under) instead of assumed for every support session. Also: support conversations are listed by session membership rather than by assignment, because a ticket can be worked by more than one agent — the previous assignee stays on through a handover, and an agent may join from the queue — and keyed on assignment the conversation vanished from everyone but the current assignee. And findSupportSessionsToAutoOpen gives support the durable re-open record chat already had, so a reply lands even for someone who closed the window.

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