KamoCRM

Live Change Log

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

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
April 21, 2026
FixSecurityService

Write globals.css before cleanup; run cleanup async

Reorder provisionUpdate so writeConfigFiles (colors, config, manifest) runs before background file cleanup. Reload org from DB for fresh colors. Run cleanupExt...

Kamo·6mo ago
FixSecurityService

Apply committed org colors to MinIO globals.css

Reload Organization from the DB at the start of async provision so writeConfigFiles sees colors saved by PATCH /colors (controller snapshot could be stale). Nul...

Kamo·6mo ago
FixEmailService

Fall back to org_domains when no email_provider_domains default set

KamoMailDomainValidator was hard-failing with 403 for orgs that have a DNS-verified domain in org_domains but never added it to the email provider domain regist...

Kamo·6mo ago
Fixkamo-internal

Use getMemberIdString() in NavTop to prevent int64 precision loss

getMemberId() converts the CockroachDB unique_rowid to a JS number, truncating IDs > MAX_SAFE_INTEGER (e.g. 1168485658174423046 → ...000). Switch all NavTop mem...

kamo·6mo ago
FixSecurityService

Mark DNS-verified custom domains as isDefault in domain API

Previously only *.kamocrm.com subdomains were marked isDefault, so orgs with a verified custom apex domain (e.g. kamocrm.com) always got defaultDomain=null and ...

Kamo·6mo ago
Fixkamo-internal

Send avatar UUID strings to member PUT, not parseInt

Avatar IDs are UUIDs; parseInt produced NaN or truncated values so member avatar updates were skipped or wrong after refresh. Use string IDs for upload, Avatar ...

kamo·6mo ago
FixSecurityService

Mint missing ownership TXT token on read

Kamo·6mo ago
FixSecurityService

Allow branding when user is org owner TeamMember

Theme provisioning and logo/background uploads only checked Organization.owner FK; the app UI treats organization owner as TeamMember.isOrganizationOwner, which...

Kamo·6mo ago
Fixkamo-internal

Show message when photo crop source image is missing

Helps when storage files were removed but the avatar row still exists.

kamo·6mo ago
FixSecurityService

Clear user and member FKs before deleting avatar row

Deleting an avatar failed with a DB constraint when it was still the active user avatar or a member-specific override, which matched broken MinIO blobs where us...

Kamo·6mo ago
Fixkamo-internal

Handle provision-theme HTTP errors and reset provisioning UI

Await POST /provision-theme after branding and background saves; on non-202 show the API error and clear the panel. Increment themeProvisionSession for backgrou...

kamo·6mo ago
FixSecurityService

Resolve theme folder host without strict DNS verification

Theme provisioning required isDnsVerified for every domain, so orgs using only the default kamocrm.com subdomain never started async work (400, no STOMP). Fall ...

Kamo·6mo ago
Fixkamo-internal

Connect STOMP before POST to avoid lost progress

WebSocket was only started when provisioning became true, while provision-theme fired in the same turn; async backend could publish before STOMP subscribed. Con...

kamo·6mo ago
FixMediaService

Relay theme provision from core NATS

Match SecurityService core publish: subscribe with Dispatcher on security.theme.provision.* instead of JetStream (stream only covers chat).

Kamo·6mo ago
FixSecurityService

Publish theme provision progress on core NATS

JetStream CHAT_MESSAGES stream is configured for chat.> only, so publishes to **************** failed stream validation and the UI saw no progress. Use Connecti...

Kamo·6mo ago
Fixkamo-internal

Use string org IDs for security org API and theme WS

getOrgId() coerced orgID with Number(), corrupting int64 Cockroach IDs in /api/security/org/{id}/* URLs (404/failed saves). Add getOrgIdString(), use it in Labe...

kamo·6mo ago
Fixkamo-internal

Restore Modify DNS for current org owners

kamo·6mo ago
FixSecurityService

Parse create-org JSON without @RequestBody to avoid 415

Spring returns Unsupported Media Type when Content-Type is missing or not accepted for @RequestBody. Read bytes and use ObjectMapper instead so APIService/Next ...

Kamo·6mo ago
Fixkamo-internal

Normalize JSON Content-Type and surface Spring error fields

Force a single application/json header for JSON proxy bodies; org route always sets it. Map Problem Details title/detail in createOrganization errors.

kamo·6mo ago
FixAPIService

Set application/json for JSON bodies forwarded to SecurityService

RestTemplate to upstream could leave Content-Type incompatible with Spring @RequestBody, causing 415. After reading the raw body, force APPLICATION_JSON when th...

Kamo·6mo ago
Fixkamo-internal

Ensure JSON Content-Type when proxying to SecurityService

Organization creation returned 415 Unsupported Media Type because upstream Spring expects application/json for @RequestBody. Node fetch could omit or default Co...

kamo·6mo ago
April 20, 2026
Fixkamo-internal

Hide Enter for org matching session org id

kamo·6mo ago
Fixkamo-internal

Compare member IDs as strings for self-check and redirect

User-info API returns memberID as string to preserve int64 precision. isSelf used Number() and strict equality with mixed types, so viewing your own /settings/m...

kamo·6mo ago
Fixkamo-internal

Repair TicketChat real-time updates after load race

Defer STOMP subscription until initial message fetch finishes so setMessages from the API cannot wipe messages delivered during load. Clear messages when sessio...

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