The executive channel's foundation

Featurekamo-shared-library
Shipped
September 10, 2026 at 6:27 AM UTC
Author
Kamo
Commit
f2d91da

One standing conversation between a customer executive and the KamoCRM executives, keyed on the USER rather than on a member — which is what lets it follow somebody who owns four organizations from whichever one they are signed into, while every party is still stored as a member id so each message records which organization its author wrote it from. - MediaSessionType.EXEC2EXEC(5) — appended, never inserted; the column is @Enumerated(ORDINAL). Not shaped like SUPPORT_TICKET: no status, no queue, no assignment, nothing that closes. - **************** — appended last, because getSortOrder() returns ordinal(). It gates who ANSWERS the desk, never who is entitled to one; conflating the two would hand every executive the desk. - Exec2ExecChat, a satellite on the MediaSession spine the way SystemBug is, with UNIQUE on USER_ID: "there is only ever one Exec2Exec chat" is a database fact rather than a convention, which is what settles the race between the NavTop button and the auto-open resolving the same chat on one sign-in. - ChatMessageDto gains **************** The relay copies from an allowlist, so a field it does not declare reaches no browser at all — history would read correctly while live messages showed a bare name. - **************** the greeting the platform sends first. - findChatMembershipsByMemberId names EXEC2EXEC. That query is an ALLOWLIST, and leaving the type out of it is the whole reason a social conversation could once never show an unread count anywhere.

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