- Shipped
- September 5, 2026 at 11:57 PM UTC
- Author
- Kamo
- Commit
- fb8a187
The public-chat bootstrap payload carried orgId but no org name, so the widget had nothing to brand the assistant with and fell back to a hardcoded "Kamo AI". A visitor on a lender's own website was being told the vendor's name for software they never asked about. Resolves the short brand name first, then the full title, then the alias — the same precedence SecurityService's OrgThemeProvisionService writes into a lender's config.json, and the alias is the only name an org is guaranteed to have. Null for an org with no name at all, which the widget reads as "use the neutral fallback" rather than rendering an empty label. Safe on a public, site-key-scoped endpoint: this is the company whose own site embeds the widget, so the visitor is already reading the name off the page around it. bootstrap() is now @Transactional(readOnly=true) because it dereferences the LAZY organization. open-in-view would cover that today, but it's a Spring default this method shouldn't quietly depend on.