KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

15,120
Total Changes
5,169
Features
4,935
Fixes
30
Projects
Filter by project
All Projects15,120AIService197APIService161BillingService143ConversionService107DaemonService129DocsService215ESigService88EmailService518InitializerService318KBService105KlusterServices697MCPGatewayService85MediaService546RAGService71SecurityService1,658TranslateService55VOIPService205VectorService11kamo-apps25kamo-asterisk-support24kamo-capcha17kamo-capcha-widget4kamo-internal6,937kamo-login330kamo-marketing625kamo-nowww20kamo-register213kamo-shared-library1,455kamo-signer-monorepo53kamolos108
Filter by type
All TypesBuild11CI523Chore738Docs2,167Feature5,169Fix4,935Other986Performance157Refactor274Revert23Style42Test94Upgrade1
April 29, 2026
Fixkamo-internal

Restore NavPri panel labels and LeadHistory column headers

NavPri: salvage-keys grabbed href URLs as label values and swapped label/description pairs for Accounts, KB, and Notes nav panels. LeadHistoryPanel: MUI bgcolo...

kamo·5mo ago
Featurekamo-internal

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...

kamo·5mo ago
Fixkamo-internal

Show platform domain context when no custom domain is set

Surface the active *.kamocrm.com hostname in the domain entry form so users can see their current platform domain instead of a blank entry screen. Also fixes ve...

kamo·5mo ago
Otherkamo-internal

Revert "chore(messages): add wave3 translation merge fragments (JSON)"

This reverts commit ****************

kamo·5mo ago
Otherkamo-internal

Revert "feat(setup-dns): show platform kamocrm domain on custom domain entry"

This reverts commit ****************

kamo·5mo ago
Chorekamo-internal

Add wave3 translation merge fragments (JSON)

kamo·5mo ago
Featurekamo-internal

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.

kamo·5mo ago
Fixkamo-internal

Checkpoint translations per chunk and per locale on main

Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...

kamo·5mo ago
Fixkamo-internal

Checkpoint translations per chunk and per locale on main

Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...

kamo·5mo ago
April 28, 2026
Fixkamo-internal

Disable Docker BuildKit cache so every pipeline run does a full rebuild

Sets no-cache on both image build steps so npm ci and npm run build always run, even when the source tree is unchanged.

kamo·5mo ago
Fixkamo-internal

Bust Docker BuildKit cache per commit so npm run build runs every push

Identical checkout trees (e.g. empty commits) reused cached layers and skipped a real Next build. Pass GIT_COMMIT from the workflow and label the image revision...

kamo·5mo ago
Chorekamo-internal

Blank commit to kick CI/CD

kamo·5mo ago
Fixkamo-internal

Add missing chat meet button labels

kamo·5mo ago
FixEmailService

Sync members.email when primary mailbox is assigned, changed, or removed

When a mailbox was assigned to a member in a KAMO_MAIL org, members.email was never updated, causing EmailCredentialService to fail to resolve IMAP credentials ...

Kamo·5mo ago
FixSecurityService

Prevent duplicate root domains and fix primary domain display

ONE_DOMAIN_PER_ORG check incorrectly excluded .kamocrm.com web-alias domains, allowing an org to accumulate multiple root domains (and 10 aliases each) by retry...

Kamo·5mo ago
Fixkamo-internal

Serialize member-security and members PUT calls to avoid CockroachDB conflict

Two concurrent writes to the same `members` row caused a serializable isolation conflict — member-security read the row while the members endpoint wrote to it (...

kamo·5mo ago
Fixkamo-internal

Double scrollbar width from 6px to 12px

kamo·5mo ago
FixSecurityService

Reduce org creation latency and fix translation cascade failures

- OrganizationController: replace ensureTeamMembersForAllOrgs (full org table scan) with ensureTeamMemberForOrg (single org) — eliminates the ~400ms×N DB ro...

Kamo·5mo ago
Fixkamo-shared-library

Widen commit_log_translations.title to TEXT to match DB column

The column was VARCHAR(512) in both the annotation and the DB, causing translation inserts to fail for long translated titles. The DB column is now STRING (appl...

Kamo·5mo ago
Chorekamo-internal

Trigger CI/CD

kamo·5mo ago
Fixkamo-internal

Unwrap catalog and calculation from backend response envelope

getSubscriptionCatalog returned { catalog: {...} } but was cast directly as SubscriptionCatalog, leaving catalog.plans undefined and the plan selection step bla...

kamo·5mo ago
FixBillingService

Add @JsonProperty to is*-prefixed boolean DTO fields

Lombok generates isXxx() is-getters for boolean fields named isXxx. Jackson strips the leading 'is' from is-getters and serializes them as 'xxx' rather than 'is...

Kamo·5mo ago
Fixkamo-internal

Use ss instead of fuser to kill stale port-forward (fuser not on k0m1)

fuser and lsof are not installed on the runner host. Use ss -tlnp with grep to extract the PID holding port 18080 and kill it directly. Also switch pkill to SIG...

kamo·5mo ago
Fixkamo-internal

Clean up stale port-forward so cancelled translate job doesn't block next run

Bash doesn't forward signals to backgrounded processes, so kubectl port-forward outlived cancelled workflow runs and held port 18080, blocking every subsequent ...

kamo·5mo ago
Fixkamo-internal

Restore all broken placeholder values across pages

Salvage-keys script had grabbed CSS classNames, inline styles, and JS template literals instead of the original English text for 114 message keys spanning notes...

kamo·5mo ago
Featurekamo-internal

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....

kamo·5mo ago
Fixkamo-internal

Restore leads page hero title and subtitle from git history

heroTitle was 'Hero Title' (placeholder), heroSubtitle was 'flex gap-2' (salvage-keys accidentally grabbed the adjacent CSS class name). Correct values recovere...

kamo·5mo ago
FeatureSecurityService

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 ...

Kamo·5mo ago
Fixkamo-register

Enable Finish button by polling widget.getState() and switching to auto=onload

The statechange event listener was not reliably enabling the Finish button after *** verification. Two root causes: 1. The drain logic read widgetAny.state whi...

Kamo·5mo ago
FixBillingService

Include subscription-targeting accounts in org list

listForOrg now also returns accounts whose subscriptions target the requested org — not just accounts directly owned by it. In the multi-org model the paying Ac...

Kamo·5mo ago
Fixkamo-internal

Add statusWindow labels namespace and fix all setting placeholders

- Add **************** (50 keys) so the settings nav sidebar shows real text instead of key paths - Fix branchTypesLabel ICU format: \${branchLabel} → {branch...

kamo·5mo ago
Chorekamo-internal

Update locale translations and hash [skip ci]

Kamo CI·5mo ago
Featurekamo-internal

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...

kamo·5mo ago
Fixkamo-internal

Match other tool windows' size + color scheme

- defaultSize and minSize now 320x650, resizable: false (matches Softphone, Chat, Calculator, SMS, AI Chat) - Switched from dark slate gradient to the standard ...

kamo·5mo ago
Featurekamo-internal

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...

kamo·5mo ago
Fixkamo-internal

Forward Range header so audio playback can scrub

Without this the VOIPService recording-streaming endpoint always returns the full file (Range header is dropped by buildForwardHeaders), which works for play-fr...

kamo·5mo ago
Refactorkamo-register

Drop language search filter on My Language step

The supported language list is short enough to scan visually; the search input added complexity without user value.

Kamo·5mo ago
FixKlusterServices

Rewrite /etc/odbc.ini to point at $MARIADB_HOST on every boot

The escomputers/freepbx:17 image bakes /etc/odbc.ini with Server=db (the docker-compose link target). On this Kubernetes deployment MariaDB lives at \$MARIADB_H...

Kamo·5mo ago
FeatureVOIPService

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...

Kamo·5mo ago
Featurekamo-shared-library

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 ...

Kamo·5mo ago
FixVOIPService

Resolve member→extension before VM/CDR provider lookup

CallController was passing memberId where FreePBX (and other PBX-style providers) expect an extension number — voicemail listing returned empty because no PBX e...

Kamo·5mo ago
Chorekamo-internal

Drop dead masterAccountHolder/isMaster UI, refresh stale comments

Account schema no longer carries masterAccountHolder or per-member isMaster flags — those were removed alongside the Account-as-billing-principal refactor. Acco...

kamo·5mo ago
FixSecurityService

Auto-assign first seat, Free as floor, broader org invalidation

BillingSetupService now activates the first open license slot for the creator when seeding a sub-org subscription (and same for promote-to-billing-owner) — othe...

Kamo·5mo ago
Chorekamo-shared-library

Drop stale BillingGroup-era comment + unused SubscriptionMember query

Strips the leftover doc block in AppliedModelEnforcementService that referred to the long-gone BillingGroup concept, and removes **************** after consolid...

Kamo·5mo ago

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.

Start Free ForeverView Pricing