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
September 28, 2026
FixKlusterServices

An AI's scroll scrolls Chrome

computer-use-linux 0.7.1 aims a scroll with ydotool, whose absolute move passes through 0,0 (the panel) on its way to the target, and sends the whole scroll as ...

Kamo·22h ago
FixSecurityService

Two more root-domain picks follow OrgDomains.primaryDomain

BranchTypeController's parentRootDomain (the create-branch wizard's web-alias zone) and PortalAccountController's api.<root> (borrower-portal sign-in) each took...

Kamo·23h ago
FixEmailService

An organization's NoReply domain is chosen by name, not by row order

The campaign From, the transactional Reply-To and the provider default domain each took "the first root org_domains row". Organization.getDomains() is unordered...

Kamo·23h ago
Fixkamo-internal

The MCP server form refuses an Expect header while it is typed

AIService's McpServerConfigs has refused an Expect header since SP05 Task 15, but the form's copy of that list (which says it is the same) lacked it, so the nam...

Kamo·1d ago
FixAPIService

Give a public chat's own turns the message rate limit, not the session one

Every public-chat path lives under /sessions/, so the limiter's contains("sessions") test put the conversation itself on the session-creation budget: 3 requests...

Kamo·1d ago
Fixkamo-shared-library

Keep the meeting transcript's ciphertext columns out of JSON

**************** has failed on main since f92765b1 added MeetingTranscript: transcriptTextCipher, transcriptVttCipher and summaryCipher had neither @JsonIgnore ...

Kamo·1d ago
FixAIService

Member chat offers the member's tools on Hugging Face models

HuggingFaceAdapter has sent tools and read tool calls since ff1f0ed, and the router routes TOOL_CALLING to it, but supportsToolUse() still answered false. ChatO...

Kamo·1d ago
FixMCPGatewayService

Name K3's NOT_ENROLLED and a missing phone system instead of misreading them

Found by SP05 Task 36 in production (sp00verify): - ApprovalClient read every 404 from K3 as "not deployed". SP10's K3 is deployed and answers 404 {reason:"N...

Kamo·1d ago
FixKlusterServices

Registry prune waits for CI before garbage-collect

garbage-collect sweeps every blob the tags didn't reference when it marked, so a push that lands mid-sweep keeps its tag and loses its manifest. On 2026-09-28 t...

Kamo·1d ago
FixMCPGatewayService

An approved action that met a "try again" answer keeps its approval

An approved re-execution on its original key that answered a notice (WORKSTATION_WAKING) or a definitive UNAVAILABLE/RATE_LIMITED released the key and its :appr...

Kamo·1d ago
FixAIService

E2's streamed usage chunk reports the metered usage, never zeros

Hugging Face, Google and Cohere text streams carry no usage event, so the assembled response counts 0 input and 0 output tokens. E2 built its stream_options.inc...

Kamo·1d ago
FixKlusterServices

The load verdict's budget is the amended acceptance bound, 9.0 s

Task 18 A-3 asked for p95 <= 4.0 s with 4 realtime streams and a batch. k3m1's Haswell CPU cannot reach it with faster-whisper-small: with the language given (S...

Kamo·1d ago
FixAIService

F1 takes back the auto it answers as its source language

A caller that echoes F1's from:"auto" is translated with detection instead of refused, and F2's placeholder name says why it exists. Ruling SP05-T32 (e).

Kamo·1d ago
FixConversionService

Claim a staged recording before processing it, so a long call is never stored twice

DaemonService hands ConversionService every row that is still unprocessed: on its poll tick, on every voip.recording.received message (which does not wait for a...

Kamo·1d ago
FixMediaService

One call per AI per meeting — a dial is claimed before kamoai-service is asked

Two overlapping requests to dial the same AI into the same meeting (a double click, two organizers, a person and the auto-join sweep) could each pass the not-li...

Kamo·1d ago
FixKlusterServices

Measure realtime load as SP13 calls it, and give each transcription 8 threads

The load probe's realtime sessions sent no language, so every turn paid Whisper's language detection (9.4 s alone at 3 threads on k3m1), a call shape no product...

Kamo·1d ago
FixKlusterServices

Run llama-server with one thread per core of its CPU limit

Ollama starts llama-server without --threads, so it counted k3m1's 24 physical cores and ran 24 compute threads inside the container's 8-core quota. The contain...

Kamo·1d ago
FixAIService

An AI member's own chat session routes, budgets and meters as actor AI

Member chat (/api/ai/sessions/**, /ws/ai-chat) routed every member as HUMAN, so an AI member's session (its SP11 workstation browser) reached UNVERIFIED models,...

Kamo·1d ago
September 27, 2026
FixKlusterServices

Ydotool's pointer lands where the AI aims it

ydotool 1.0 aims an absolute move by pushing its relative device to 0,0 and then by (x, y), and libinput's default adaptive profile doubled that second push. co...

Kamo·1d ago
Fixkamo-internal

A computer can be removed from the Computers tab

The remove dialog pins its challenge to the computer's own name ('Workstation'), and ConfirmationDialog upper-cased only what was typed before comparing, so no ...

Kamo·1d ago
FixKlusterServices

The gateway may frame its own resize sensor

Guacamole 1.5.5 notices a resize through an <object> that loads its own **************** The gateway's X-Frame-Options: DENY blocked it (ERR_BLOCKED_BY_RESPONSE...

Kamo·1d ago
FixKlusterServices

An AI workstation shows its organization's wallpaper

KubeVirt's console runs Xorg's VESA driver (RandR 1.1, no named output), so xfdesktop keys the AI desktop's backdrop by index, monitor0, and never read the moni...

Kamo·1d ago
FixKlusterServices

The AI's console X server takes the AI's clicks

LightDM's Xorg on :0, the AI workstation's desktop, adds udev input devices only through an input driver, and the golden image had none. It logged 'No input dri...

Kamo·1d ago
FixSecurityService

Watch and Take over open their connection in the gateway's client

Guacamole 1.5.5's client reads the #/client/<id> fragment with atob (one character per byte) and btoa's every connection name it lists, so a name outside Latin-...

Kamo·1d ago
Fixkamo-shared-library

An AI workstation's take-over and MCP token are written only by their own UPDATEs

control_member_id/_started_at and **************** are now updatable = false, and HostedComputerRepository gains the only writes they get: recordControl, clearC...

Kamo·1d ago
Fixkamo-internal

Keep the heading outline in order: section titles are h5, template names are not headings

The screenshot harness's axe pass found two heading-order faults. A job or persona template's name was an h6 inside its card's button (a heading may not sit ins...

Kamo·1d ago
Fixkamo-internal

The AI workstation panel says what is on screen only after the screen was read

ComputeService answers screen-state with 200 {state:'WAKING'} while the guest restarts after a wake or refuses the read, and {state:'ASLEEP'} just after a sleep...

Kamo·1d ago
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·1d 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·1d 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·1d 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·1d 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·1d 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·1d 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·1d 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·1d 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·1d 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·1d 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·1d 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·1d 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·1d 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·2d 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·2d 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·3d 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·3d 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·3d 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·3d 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