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.
Update availability endpoints to use MemberAvailabilityStatus enum
Replace isAvailable boolean with MemberAvailabilityStatus enum
Enrich upload manifests with Asterisk CDR caller-ID data
Adds optional MySQL CDR enrichment so the softphone history tab can display who called (or was called). When ASTERISK_CDR_DSN is configured as a Forgejo repo se...
Parse CDR caller-ID fields from upload manifest
When kamo-asterisk-support includes a cdr{} section in the upload manifest (populated when ASTERISK_CDR_DSN is configured), ConversionService extracts callerIdN...
Add CDR caller-ID columns to recordings table (order 40)
Adds caller_id_num, caller_id_name, call_direction, and call_result columns to the recordings table so the softphone history tab can display who called without ...
Add CDR caller-ID fields to Recording entity
Adds callerIdNum, callerIdName, callDirection, and callResult columns to the Recording entity so kamo-asterisk-support can store Asterisk CDR metadata alongside...
Add COMP payment method option to subscription order wizard
COMP is a valid backend PaymentMethod enum value for complimentary platform-admin grants, but was missing from the frontend type and wizard UI — only INVOICE an...
Show platform kamocrm domain on custom domain entry
Surface the active *.kamocrm.com hostname on the add-domain flow and detect custom domains by excluding kamocrm URLs instead of default-flag alone.
Show Manage Domain button for top-level org owners and system members
Show Set Up Billing button for org owners with no account
When an org owner opens the plans-billing tab and no billing accounts exist, display a bootstrap prompt instead of the generic "contact your org owner" message....
Add bootstrap-billing endpoint for pre-existing orgs
POST **************** triggers the same idempotent setup as the sub-org creation hook (BillingSetupService .setupForSubOrgCreation) but can be called on-demand ...
Wave 3 conversions, fallback fix, and auto-translate CI
- Replace all hardcoded English strings with t() calls across wave 3 components (chat, clubhouse, support, notes, pipeline, leads, nav, etc.) - Merge wave 3 f...
Wire next-intl with member.language as locale source
Adds next-intl-based internationalization across kamo-internal without URL locale prefixes. Active locale is read from the kamo-locale cookie, which mirrors the...
Fall back to imaging recordings for call history + voicemails
FreePBX 17 doesn't expose voicemail messages over REST or GraphQL on this install (the GraphQL voiceMail type returns mailbox config, not messages, and /admin/a...
Paginated Recording lookup by (instance, extension, isVm)
Used by the softphone tabs as the canonical source of truth for call recordings and voicemails when the upstream provider can't list them — e.g. FreePBX 17 has ...
Auto-provision KamoCRM seat on sub-org creation; promote-billing-owner endpoint
EntitlementService walks SubscriptionMember (not AccountMember) to compute member entitlements — the union of features across active licensee subs, plus the Fre...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
