KamoCRM

Live Change Log

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

18,407
Total Changes
6,538
Features
5,540
Fixes
30
Projects
Filter by project
All Projects18,407AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService622InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,997TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,700kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,826kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,538Fix5,540Other1,001Performance174Refactor282Revert23Style45Test175Upgrade1
September 29, 2026
FeatureAIService

An AI member's remembered voice per speech model, and the resolver that keeps or re-picks it

The ai_member_voices store (JDBC, TransientDbRetry, compare-and-set re-picks, an hourly touch, the CHOSEN upsert and the one-statement preferred flag), the memb...

Kamo·1mo ago
FixKlusterServices

The platform main line survives a boot, and 8200 is the team line

Luna's go-live (2026-09-28) wrote [kamo-main-luna] into extensions_custom.conf and KAMO_LUNA_EXT / KAMO_LUNA_MAX_RING into globals_custom.conf by hand on the ho...

Kamo·1mo ago
Docskamo-internal

Ledger — 1 entries

Kamo·1mo ago
FixAIService

The brief words an action class it has no case for, so a new shared-lib class never breaks the build

CharterCompiler.actionClass gains default -> words(name): the enum name in lower-case words, first letter capitalised (PLACE_INTERNAL_CALL reads "Place internal...

Kamo·1mo ago
FeatureVOIPService

The DDL file for the phone server's team line

SP95 Task 2. **************** a nullable VARCHAR(20) that holds the extension an AI's unnamed transfer rings (the team line, 8200 on the k1m1 FreePBX). Hand-app...

Kamo·1mo ago
Docskamo-internal

SP94 phonetic org names — spec, plan, ledger, PROGRESS row, master §11 row

Plans the owner's 2026-09-28 request for phonetic spellings of an org's name and short name, spoken only by AIService's E5 speech API (a single-pass, case-insen...

Kamo·1mo ago
FeatureSecurityService

SP96 hire options to leave out the phone extension and the workstation

An AI hire's create body takes aiPhoneExtension and aiWorkstation (JSON booleans, true when absent). A step left out is created SKIPPED with NOT_REQUESTED_AT_HI...

Kamo·1mo ago
Docskamo-internal

SP98 T20 rulings (UI sweep A)

Kamo·1mo ago
Docskamo-internal

Ledger — 1 entries

Kamo·1mo ago
Docskamo-internal

Ledger — 1 entries

Kamo·1mo ago
Docskamo-internal

Ledger — 1 entries

Kamo·1mo ago
FixMCPGatewayService

A rejected guessed recipient tells the model to look the person up

EmailService now refuses a send whose recipient names one of the organization's own mail domains but matches no mailbox, alias or member (RECIPIENTS_UNKNOWN, a ...

Kamo·1mo ago
FixEmailService

Refuse a guessed recipient at the org's own domain before it reaches the mail server

Luna (AI member) asked to email the owner and guessed **************** instead of looking up the real address (sage@kamocrm.com). kamouniverse.com is one of the...

Kamo·1mo ago
FixAIService

A contact never touched before is held to quiet hours, in the organization's zone

SP98-A-11. The outreach gate returned right after consent when the contact had no state row, so a cold first touch skipped quiet hours (and the touch budget): a...

Kamo·1mo ago
FixAIService

A copilot tool call's idempotency key carries its turn

SP98-A-12. Member chat keyed a Tool Plane call chat:<session guid>:<tool call id>. A call id is unique only within its turn: HuggingFaceAdapter numbers id-less ...

Kamo·1mo ago
FixAIService

Record-sent and record-failed answer 400 like evaluate when the call names no sender

SP98-A-10. With neither agentId nor memberId, the two record calls fell into the persona branch with a null agent: an unattributed touch was written, and a send...

Kamo·1mo ago
FixAIService

A widget turn is not one transaction, so a swallowed read no longer fails the send at commit

SP98-A-9. PublicAiChatService.sendMessage ran the whole visitor turn in one @Transactional. The hand-off tool's escalation titles (the persona's version or agen...

Kamo·1mo ago
FeatureAIService

A voice's gender, from its record, a curated table or its style, and vendors' genders kept by the probe

SP96 Task 7. VoiceGender {FEMALE, MALE, NEUTRAL, UNKNOWN} with a lenient parse, and VoiceGenders.of(type, model, record) applying spec 5.3 in order: the convent...

Kamo·1mo ago
FeatureSecurityService

SP96 sex on the member profile and at creation, gated as personal data

GET /api/security/members/{id} names sex (FEMALE, MALE or null) only to a caller who may read it (MemberSexAccess, spec D3); the key is absent for anyone else. ...

Kamo·1mo ago
DocsMCPGatewayService

The Tool Plane needs per-member sticky routing before a second replica

The replicas comment said scaling needed only a PodDisruptionBudget. Since SP05 Task 31 each pod pools its own clients, and an AI workstation's bridge runs one ...

Kamo·1mo ago
FixMCPGatewayService

An AI's task without an assignee is its own

tasks_create without an assignee left an AI's task unassigned in its Inbox. SP02's TASK_HANDOFF moves only tasks assigned to the retiring AI, so self-planned wo...

Kamo·1mo ago
FixMCPGatewayService

An approved action runs past its run's call cap; a dry run names read-all

SP98-K-1 (SP05 final review M1): SP10 re-executes an approved action under the run id that asked for it. A run that worked on to its maxToolCallsPerRun answered...

Kamo·1mo ago
FixMCPGatewayService

Calendar_free_busy answers who is busy when, never what the block is called

A busy block's title (and its event id) can come from an outside invitation, and calendar_free_busy is not an untrusted tool (SP13's voice bookings call it, and...

Kamo·1mo ago
FixMCPGatewayService

An MCP server's refresh no longer closes the client calls are using

The 10-minute refresh (I3) and an admin's test evicted the pooled client before listing, which dropped a legacy SSE stream or DELETEd a Streamable HTTP session ...

Kamo·1mo ago
Docskamo-internal

Ledger — 1 entries

Kamo·1mo ago
Docskamo-internal

Ledger — 1 entries

Kamo·1mo ago
FixKlusterServices

An AI workstation sleeps with its desktop stopped, and wakes to a fresh one

Measured on a throwaway -ai4 workstation (SP98 Task 16), the wake stalled because Xorg does not survive a resume: with no KMS driver it drives the console throu...

Kamo·1mo ago
Featurekamo-shared-library

SP96 MemberSex, Member.sex and a gender on the voice record

members.sex is a nullable STRING column (FEMALE | MALE, null = not specified), so an AI member can speak with a matching voice. The TTS and REALTIME_AUDIO voice...

Kamo·1mo ago
FixMediaService

The missed-message sweep reads the recipient's link hosts before its transaction

SP98-D-9. prepareSend read the recipient organization's domain rows lazily, as a late statement of the sweep's transaction, to choose the letter's console host;...

Kamo·1mo ago
PerformanceMediaService

A turn-only fan-out reads no roster, ticket id or conversation title

SP98-D-6. ChatFanoutService.prepare resolved the roster, the support ticket's id and the conversation's title for every request, including the turn-only ones (a...

Kamo·1mo ago
FixMediaService

Chat cards queue boundedly, give up on a hung EmailService in seconds, and never double a mention

SP98-D-7: ChatNoticeDispatcher ran on two threads with an unbounded queue while MemberNotificationClient waited up to 5 s + 30 s (the letter client's chat.email...

Kamo·1mo ago
FixMediaService

A send looks up its AI turn limit and its sender's photo before its transaction opens

SP98-D-5 and D-9. A chat send asked SecurityService for an AI member's charter limit (up to 1 s + 2 s) inside the open send transaction, and read the sender org...

Kamo·1mo ago
FeatureAIService

The ai_member_voices table and the charter voice-pin migration, as hand-applied SQL

SP96 Task 2. The table remembers an AI member's voice per TTS model (spec 5.1); the migration moves every charter VOICE pin to a CHOSEN, MIGRATED, preferred row...

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