Show error icon when a message fails to translate
When the per-message translate call returns translated:false, errors out, or times out, the chat bubble now renders an AlertTriangle icon in red with tooltip "F...
Show error icon when a message fails to translate
When the per-message translate call returns translated:false, errors out, or times out, the chat bubble now renders a small red ErrorOutline icon in place of th...
Stream translations newest-first for visitor history
When the visitor lands on a non-English locale and the support chat has existing English messages, every bubble flagged needsTranslation by the backend now show...
Stream message translations newest-first on language switch
When the user picks a new language (or opens an existing chat in a language different from the messages' source), every bubble that needs translation immediatel...
Auto-translate visitor and agent messages
Live agent replies arriving in a language other than the visitor's URL locale now show a "Translating…" bubble while the TranslateService call resolves, then sw...
Translate chat messages into the viewer's language
Adds a "My Language" flag picker in NavTop (left of the email tool, separated by a vertical rule). Selecting a language writes back to Member.language and syncs...
Proxy support-message translate endpoint
Adds a passthrough route for the new MediaService endpoint that translates a single support-chat message into the visitor's URL locale. The marketing-side chat ...
On-demand translation for chat and support messages
Captures the source language for every chat / support message and adds an optional ?lang=XX param on the message-fetch endpoints plus a per-message POST /transl...
Translation cache for chat messages
Adds the MediaObjMsgTranslation entity (one row per (message, language) pair) and an optional sourceLanguageId column on MediaObjMsg so chat messages can be tra...
Add Personal + Chat/Docs/Notes/KB/HRS sections
The /settings index showed no sections to non-admins because every existing section was gated on an admin right (CONFIGURE_SYSTEM, MANAGE_*_SETTINGS, MANAGE_ACC...
Rotate goal opening based on viewport aspect ratio
The goal frame now tilts by atan2(viewportH, viewportW) so its open right side aims toward the viewport diagonal — for 16:9 monitors the opening points ~29° sou...
Throw-to-remove goal with score/miss celebrations
A 132×132 goal frame appears in the upper-left whenever a head is in solo-drag or active-throw, offset 56px from the corner so heads can miss past or behind it....
Throw physics with pool-table collisions and comet trail
Flicking a head past the throw threshold launches it across the viewport under explicit physics (friction, edge bounce, head-vs-head elastic collisions). Slow d...
Use server-minted OTK to switch into new org
Prefer the otk returned by POST /api/security/org over the follow-up /api/security/enter-as round-trip. The server now mints a fresh owner session as part of or...
Mint owner ***+OTK on org create
After createOrganizationOwner, mint a fresh *** bound to the new owner TeamMember and return its OTK alongside id/members. Without this the creator stays on the...
Self-heal unprovisioned COMP orders on startup
On @PostConstruct, scan all APPROVED COMP orders and provision any that lack an AccountSubscription. Idempotent — find-or-create means safe to run repeatedly.
Move availability status dropdown to left side before My Businesses
Relocates the status pill from the right action bar to the left welcome section, placing it between the greeting separator and My Businesses with a divider. Rem...
Add targetOrganizationId to SubscriptionOrder types and createSubscriptionOrder
Add provision-comp endpoint to activate COMP subscription from approved order
POST **************** calls **************** then invalidates entitlements for the target org via EntitlementService.
COMP order approval auto-provisions AccountSubscription and assigns license
- SubscriptionOrder: add targetOrganization (nullable FK to orgs) - **************** add targetOrganizationId string - AccountRepository: add findByPrimaryMembe...
Replace click-to-open with action popover + size controls
Clicking a hex head now opens a polished glass-morphism popover with contextual actions instead of immediately opening its tool window. Member chat heads expose...
Add MEMBER_UI_PREFERENCES table (order 60)
Idempotent CREATE for the generic per-member UI-preference store backing the hex-head popover size selector and future per-member UI settings. Schema mirrors th...
Add MemberUiPreferenceController for per-member UI settings
Backs the new hex-head popover size selector and any future small per- member UI preference. Endpoints under /api/security/members/me/ui- preferences resolve th...
Add MemberUiPreference entity for per-member UI prefs
Generic per-member UI preference store (memberId, prefKey, JSONB value) for small persisted UI settings. First consumer is the hex-head popover size selector.
Wire FeaturesManager to platform subscription for child-org gating
FeaturesManager was calling legacy **************** which throws (ungated fallback) instead of reading the real platform subscription. Now calls **************...
Add platform-subscription endpoint for cross-org feature gating
Child-org admins (like GNosia's owner Daniel) have their COMP subscription orders on the root KamoCRM org, not on their own org. FeaturesManager was querying t...
Use translated aria-label for SettingsView tabs
Reads **************** from next-intl.
I18n for legacy hub content/sidebar via settingsLegacyHub
Replace hard-coded English with next-intl. Introduces stable topic id constants; activeTopic is compared against ids instead of translated display strings.
Wire landing page to settingsLanding translations
Replace hardcoded feature cards and section copy with useTranslations- backed strings from **************** including ICU branch label for branch types cards. C...
Move translations to kamo-translation-dictionary
All 22 locale files move to the centralized kamo-translation-dictionary repo. The CI now clones that repo and copies the kamo-marketing/ folder into messages/ b...
Move translations to kamo-translation-dictionary
All 22 locale files move to the centralized kamo-translation-dictionary repo. The CI now clones that repo and copies the kamo-internal/ folder into messages/ be...
Wire MUI Tooltip titles through common.actions and common.tooltips
Replace literal single-line Tooltip title strings with tCommon("actions.*") or tCommon("tooltips.*"), merge keys into messages/en.json, and fix nested component...
Tooltip wave — AccountManager, ModernColorPicker, SMS tabs
Account grid View/Delete via common.actions; color picker and SMS tooltips via common.tooltips (pickColorFromScreen, resetToDefault, crmIntegrationComingSoon, e...
Tooltip wave — TeamMemberManager actions
Wire grid tooltips to **************** and common.tooltips.resetFilters. i18n: audit tooltip literals 217→209.
Tooltip wave — DocManager grid and row actions
Internationalize all literal Tooltip titles in DocManager via common.tooltips and common.actions (download, share, delete, refresh). Merge fragment into en.json...
Tooltip wave — lead list icons and email template blocks
Wire Lead ID column icons via leads.list.tooltips; email block reorder/delete via **************** i18n:audit tooltip literals 236→230.
Common tooltips wave — subscription invoices, billing tab, activity IP, avatar delete
Replace literal Tooltip titles with common.actions.send, common.tooltips.markPaid, blockThisIp, addBillingAccount, and actions.delete; merge fragment into en.js...
Localize CRM account, leads, procurement, and phone extension tooltips
Add common.alerts wave for alert() literals
Introduce **************** with shared alert strings under common.alerts, merge into en.json, and replace literal alert('...') calls across clubhouse, documents...
Wire components.ui.placeholders across tools, contacts, SMS, tasks
Replace literal input placeholders with **************** in calculator modes, message tool, AI chat search, notes, contact dialogs, SMS tabs, and task sidebar. ...
Merge UI placeholders fragment and wire account, messages, email blocks
Wire settings placeholders and scoped translation hooks
Replace literal TextField/MUI placeholders under settings with next-intl keys, add useTranslations in nested components where needed (dialogs, sub-views, manual...
Merge settings placeholder catalog and wire essential/security/AI MCP tabs
Adds **************** in messages via fragment merge and replaces literal placeholders in DepartmentManager, JobTitleManager, LabelManager, SecurityRoleManager,...
Wire pipeline tab placeholders to next-intl
Add components.pipeline.shared keys and tab-specific placeholders via merge fragments; replace literal placeholder strings across pipeline TSX with useTranslati...
Expand English strings and align UI components across modules
Updates message catalogs and wires translations through calendar, chat, messages, POS/market settings, subscriptions, support tickets, esign, and related pages.
Move Credits link from nav to Lead Browser toolbar
Remove Credits from NavTop and add Lead Credits beside Add Lead on /leads, same CRM + VIEW_LEADS visibility and /leads/allotments destination.
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.