KamoCRM

Live Change Log

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

17,411
Total Changes
5,924
Features
5,262
Fixes
30
Projects
Filter by project
All Projects17,411AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService593RAGService79SecurityService1,835TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,333kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,641kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,924Fix5,262Other993Performance165Refactor278Revert23Style42Test159Upgrade1
April 29, 2026
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·6mo 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·6mo ago
Chorekamo-internal

Trigger CI/CD

kamo·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo ago
Chorekamo-internal

Update locale translations and hash [skip ci]

Kamo CI·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo ago
ChoreTranslateService

Trigger redeploy for shared library update

Kamo·6mo ago
ChoreConversionService

Trigger redeploy for shared library update

Kamo·6mo ago
ChoreDocsService

Trigger redeploy for shared library update

Kamo·6mo ago
ChoreVOIPService

Trigger redeploy for shared library update

Kamo·6mo ago
ChoreDaemonService

Trigger redeploy for shared library update

Kamo·6mo ago
ChoreMCPGatewayService

Trigger redeploy for shared library update

Kamo·6mo ago
ChoreEmailService

Trigger redeploy for shared library update

Kamo·6mo ago
ChoreRAGService

Trigger redeploy for shared library update

Kamo·6mo 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