- Shipped
- July 18, 2026 at 7:20 PM UTC
- Author
- Kamo
- Commit
- d2b1c9f
- createSupportSession takes a signed routingToken (not preferredAgentMemberId); verified via ChatRoutingTokenCodec + cluster internal.auth.secret, enforces token.orgId == org, routes only when integration.assignmentMode == SPECIFIC_AGENT. Hard cut of the bare browser-supplied member-id path. - persist leadUid on SupportTicket + PublicChatVisitor (durable borrower-lead link) - ChatRoutingConsumer: on security.chat.routing.>, reassign the borrower's open ticket(s) by leadUid to the new officer (reuses assignToPreferredAgent) - lo-presence org-scoped: cross-org/unknown member -> online:false (no leak) - WebChatIntegration CRUD/bootstrap carry assignmentMode; store publicSiteKey for SPECIFIC_AGENT integrations