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
September 27, 2026
FixMediaService

A transcript download answers 409 NOT_READY while the transcript is still being written

M7's errors are M6's plus INVALID_FORMAT (spec 4.4.1). A PENDING or TRANSCRIBING transcript answered 200 with an empty body for vtt and txt; it now answers 409 ...

Kamo·3w ago
Fixkamo-internal

AA text colours and named progress bars on the Computers and Capacity tabs

The state chip's "Ready" was --commerce-success as text (2.2:1) and the error text --commerce-error (3.8:1); they now use the AA colours the AI workstation pane...

Kamo·3w ago
FixMediaService

The roster, participants, history and send survive a database conflict too

Completes 279a389. After it shipped, production logged the same YugabyteDB 40001 "Restart read required" on Exec2Exec's roster (09-27 16:00Z, and three times ea...

Kamo·3w ago
Fixkamo-internal

Filter approval changes before the org-change debounce (SP10)

useOrgChanges coalesces a burst and hands onChange only its last frame, so testing isApprovalChange on that frame lost an APPROVAL followed within 400 ms by the...

Kamo·3w ago
FixDaemonService

Place the KamoAI voice cron keys clear of SP05's and SP10's

SP05's Tool Plane jobs add their cron fields after leadLedgerReconcileCron and their ConfigMap entries after kamoai-hire-steps, and SP10's tick adds its field a...

Kamo·3w ago
Fixkamo-asterisk-support

One recording subroutine; file names keep the call's UNIQUEID; AMI reads call events

[kamo-record] now does the recording for every path: the trunk and voicemail predial hooks here call it, and so will the attendant, direct, agent, internal and ...

Kamo·3w ago
Fixkamo-internal

A message that did not go stays in the box and says why

A failed send was swallowed in useChatConversation.onSend ("matching the old ChatBox"). The core removed the optimistic bubble, the Composer took the resolved p...

Kamo·3w ago
FixMediaService

A conversation loads and a message sends on the first try

Chat has been failing in two ways a member notices at once: opening a conversation showed "Couldn't load messages" until Retry was pressed, and a sent message s...

Kamo·3w ago
FixEmailService

A meeting invite answers with a summary, not the entity graph

Sending or updating a meeting invite answered with the CalendarEvent entity. Its attendees point back at their event, so Jackson recursed until the stack overfl...

Kamo·3w ago
FixKBService

A deleted task takes back its comment notifications too

Deleting a task (or clearing done tasks, or deleting their list) withdrew only its TASK_ASSIGNED and TASK_DUE notices. Every TASK_COMMENTED about it stayed in i...

Kamo·3w ago
FixEmailService

A composer's meeting invite goes into the organizer's own calendar

MeetingInviteController handed MeetingInviteService.sendInvite the session's member id in the user-id slot, and sendInvite looked the calendar up with findByUse...

Kamo·3w ago
Fixkamo-internal

Caption a producer's button from the whole dictionary, not as its key path

KBService's task notifications name their button with the full dictionary path **************** (SP06 spec 4.11). The deck and the notification centre read prod...

Kamo·3w ago
Fixkamo-internal

A dry run through the web proxy stays a dry run

The /api/email/** proxy builds its own headers for the hop to EmailService and relayed only Range, so X-Kamo-Dry-Run never arrived: a member's dry run of a send...

Kamo·3w ago
FixMediaService

The media.* host no longer reaches MediaService's server-to-server endpoints

The media-route IngressRoute sends every path on a media.* host straight to MediaService, past the API gateway, so the gateway's carve-outs (master spec section...

Kamo·3w ago
Fixkamo-internal

A composer names its last draft only through the mailbox that holds it

The composer kept the last saved draft as {folder, uid} and sent it as replacesDraft with whatever mailboxId the From was on at the time. EmailService expunges ...

Kamo·3w ago
September 25, 2026
FixEmailService

A signature's icons do not put a paperclip on the message

"kamo Marketing teaser" listed with a paperclip and opened with nothing to download. It has no file: the two parts it carries are the 14px phone and email icons...

Kamo·4w ago
FixAIService

Hugging Face chat sends the tools and returns the tool calls

message.tool_calls, but HuggingFaceAdapter sent no tools (so tool_choice was dropped too) and never read tool_calls. Every HUGGINGFACE model therefore failed th...

Kamo·4w ago
Fixkamo-internal

A create Arive refused offers Resend at once, with Arive's reason

When the Create Loan Zap reports loan_create_failed the server keeps Arive's reason as the link's error and clears its pending clock. The header no longer spins...

Kamo·4w ago
FixSecurityService

A loan Kamo creates now links, and a refused one says why on the lead

Ian's Create Loan reached Arive, was refused inside the Zap, and Kamo never knew: Zapier had already answered 200, and Arive fires no new_loan for a loan made t...

Kamo·4w ago
FixAIService

The boot backfill counts row-less-by-design models apart

Every AIService start logged 'capability rows written for 21 model(s)' though completions models no capability Kamo uses (ruling SP01-T21), so they stay row-les...

Kamo·4w ago
Fixkamo-shared-library

Send Arive the language CODE, not its name — every Create Loan was refused

Arive's Zapier field shows language names but its API takes ISO 639-2 codes (chi, eng, kor, spa, tgl, vie; zxx for Other). Kamo sent "English", so Arive answere...

Kamo·4w ago
FixAIService

A model list anyone can read no longer passes a wrong key

The Hugging Face router and OpenRouter answer GET /v1/models with 200 for no key and for a wrong key, so Test connection read OK and sync reconciled 140 models ...

Kamo·4w ago
FixSecurityService

A hire-step owner answering 401 has not shipped yet, so the step waits

VOIPService and ComputeService answer any path they do not serve from their session layer with 401, so Ava's EXTENSION and WORKSTATION steps went FAILED before ...

Kamo·4w ago
FixAIService

Auto routing never picks a row-less model the catalogue says Kamo cannot call

The legacy router let a model with no capability rows through on the name rule legacy-completions *-instruct) get no rows by design, and their names pass the A...

Kamo·4w ago
FixAIService

An AI session or the System User holds no platform right in AIService

Master §11 'SP02 final fixes': a session whose intelligenceType is ARTIFICIAL resolves no platform right by any route (owner flag, god window, administrator row...

Kamo·4w ago
FixSecurityService

An AI member never founds an organization

The second door to IMPORTANT-1 of the SP02 final review. POST /api/security/organizations needs no right for a standalone organization: any signed-in user may c...

Kamo·4w ago
FixEmailService

A calendar message's plain-text part says what its HTML says

The text/plain alternative of every calendar message was "You've been invited to: " + subject, so an instance cancellation read "You've been invited to: Cancell...

Kamo·4w ago
Fixkamo-internal

The member rights tab never offers to make an AI member an owner

SecurityService now answers 400 AI_NOT_OWNER when PATCH **************** sets isOrganizationOwner on an ARTIFICIAL member (SP02 final fix). The Organization Own...

Kamo·4w ago
FixSecurityService

Security-model writes require CONFIGURE_SYSTEM

Closes the SP02 final review's IMPORTANT-2. POST /api/security/models, PUT and DELETE /api/security/models/{id} and PUT /api/security/master-model only resolved...

Kamo·4w ago
FixSecurityService

An AI member is never an owner or a platform operator

Closes the door around the AI never-grantable floor that the SP02 final review found (IMPORTANT-1). Platform rights and the owner flag are not RoleRightTypes, s...

Kamo·4w ago
Fixkamo-shared-library

An AI member is never promoted to organization owner

**************** refuses isOrganizationOwner=true for an ARTIFICIAL target. The owner flag grants every platform right in the top-level organization and opens o...

Kamo·4w ago
FixEmailService

Let the WebDAV verbs through Spring Security's firewall

StrictHttpFirewall admits only GET, HEAD, POST, PUT, PATCH, DELETE and OPTIONS, and answered every PROPFIND, PROPPATCH, REPORT, MKCOL and MKCALENDAR to /dav/** ...

Kamo·4w ago
Fixkamo-internal

The Repeat field says what a series save does; no repeat for a lead callback

The repeat now follows a move of the start's date, as the calendar service moves a series: a weekly repeat's days move with it, and an existing series' end date...

Kamo·4w ago
FixEmailService

A moved series keeps its days, its end and its exceptions; a lead callback never repeats

A whole-series move (ALL, or THIS_AND_FOLLOWING) now carries the rule with it (spec D-9): UNTIL moves by the same local step, so the last instance stays; a week...

Kamo·4w ago
FixAIService

Family calls speak HTTP/1.1 on cleartext, never an h2c upgrade

The JDK client defaults to HTTP/2 and sends "Upgrade: h2c" with the first request to an http:// host. uvicorn (httptools) refuses the upgrade and drops the requ...

Kamo·4w ago
FixKlusterServices

Size the reranker's TEI thread pools to its 1-CPU limit

The reranker runs embedding-model's TEI 1.9.4 under the same 1-CPU limit, so it takes the same sizing (KamoAI SP00 final review I-1): one tokenization worker, a...

Kamo·4w ago
Fixkamo-internal

Member initials in the ink that reads on their fill, and My tasks' scope toggle at 4.5:1

axe on the SP06 task screens (drawer, My tasks, lead Tasks tab) found white initials on memberColor's 55%-lightness fills at 2:1 (cyan) and 4.1:1 (magenta) - wh...

Kamo·4w ago
Fixkamo-internal

The Repeat field wears the event dialog's field style

The Repeat select, the interval and unit fields and the end date and count fields were stock MUI outlined fields (16px on white, square) inside a dialog whose e...

Kamo·4w ago
FixKlusterServices

Record live kontak.kamocrm.com, desktop-1 sizing and the Docs host list

A .forgejo/ change makes the next deploy a full reconcile, which applies every manifest over live state. Four had drifted from live by hand or by another repo's...

Kamo·4w ago
FixEmailService

CalDAV reads are authorised, bodies are generated, and a phone's PUT is parsed

Calendars are listed as calendar collections of events, resources are named by the UID their calendar-data states (encoded in hrefs), writes pass the read gate,...

Kamo·4w ago
FixEmailService

The email.* host no longer reaches EmailService's server-to-server endpoints

The email-route IngressRoute sends every path on an email.* host straight to EmailService, past the API gateway, so the gateway's carve-outs (master spec sectio...

Kamo·4w ago
FixSecurityService

A verification resend that names its account goes to the account's own org

An organization with no domain has no register host of its own, so its members land on register.<platform apex>, whose host names the platform. The resend endpo...

Kamo·4w ago
FixEmailService

An organization with no domain still sends its letters

A domain is optional when an organization is created, but every transactional letter such an org sent threw "has no domains; cannot build NoReply from-address" ...

Kamo·4w ago
FixEmailService

Ics import and export work — rows in, rows out, series included

Import upserts each UID group (master, canonical rule, EXDATEs, edited and cancelled instances) with no reminders and no invitations; E11 reports {created, upda...

Kamo·4w ago
FixKlusterServices

Size every TEI thread pool to the 1-CPU limit, and let probes outlast a batch

TEI 1.5's ONNX backend starts one inference thread per physical host core (24 on k1m1) and reads no thread setting, so under the pod's 1-CPU quota the CFS throt...

Kamo·4w 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