Seat the whole desk on every chat, show who is on it, close the chat feeds

FeatureMediaService
Shipped
September 10, 2026 at 7:49 PM UTC
Author
Kamo
Commit
02639c4

- Standing membership: every explicit EXEC2EXEC_ACCESS holder sits on every Exec2Exec conversation. Exec2ExecDeskReconciler seats and unseats from the grants on securityservice's exec2exec.desk.changed event, a 5-minute sweep, startup, and whenever a chat is opened or back-filled; the desk is re-read per conversation so a sweep cannot undo a grant another pod just applied. - GET /chat/{id}/participants lists the KamoCRM executives on a chat (memberId, userId, name, jobTitle). - Sender lines carry senderPhone (the top-level org's Phone (Main)) and senderPhoneExt (the enabled VOIP extension, else the team-member one) for KamoCRM staff. The welcome is always signed by god. - Roster rows carry awaitingDesk (the customer spoke last) for the console's sign-in sweep. - Security: /topic/chat/incoming/{memberId} and /topic/chat/unread/{memberId} may now be subscribed only by that member and never sent to by a client. Both were unguarded, so any signed-in client could follow any member's arrivals and unread by id. - The generic add/remove/leave/rename member routes refuse Exec2Exec sessions (409 MEMBERSHIP_MANAGED): the reconciler owns that membership. - Offline email: a customer's message mails the desk, an executive's reply mails only the customer, instead of every executive about everything. - Back Fill greets and seats in the transaction that opens a chat, so a customer's first reply is never marked read for the desk.

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