KamoCRM

Live Change Log

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

18,391
Total Changes
6,526
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,391AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService619InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,995TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,691kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,824kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,526Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
November 8, 2026
FixAIService

Describe A Change changes only what the request names (SIS14)

The drafting prompt now says a switch changes only when asked to turn it on or off (run/set/make never do) and every proposal quotes the request words that ask ...

KamoΒ·3d ago
November 7, 2026
FixAIService

An SI's budget alert opens its Workbench room (SIS10)

The deep link was the bare profile; it now names the SI's Workbench room, where its budget is.

KamoΒ·3d ago
FixAIService

Who Gets What says when a limit decided a value

A forced 'confirm every change' or 'memory off' answers source LIMIT in layers-preview instead of Kamo's default.

KamoΒ·3d ago
FixAIService

Drop the dead auto-select switch, and let the monthly budget default reach the job description's limit

SIS4. "Auto-select best available model" was saved and never read: the settings API no longer shows or changes it (the column stays, new rows keep its old defau...

KamoΒ·3d ago
November 6, 2026
FixAIService

A timed transcription walks only models that give segments

Owner report 2026-11-06: call transcripts "do not reflect the entirety of the call recordings". Measured on the platform org's calls: the router's first STT cho...

KamoΒ·4d ago
FixAIService

A proper 32-byte key for saved provider API keys, no default, no plaintext fallback (TPVAULT side fix)

AI_PROVIDER_KEY (Secret ai-provider-key, 32 random bytes) or the service will not start; new values are v2: + AES-256-GCM with associated data. The old padded-s...

KamoΒ·4d ago
October 28, 2026
FixAIService

Cite only the knowledge-base articles an answer used

Owner bug 2026-10-28: "Give me a taco recipe" answered with help-center articles under Sources. Retrieval runs before the model answers, so it always returns it...

KamoΒ·1w ago
FixAIService

'put me through to Nell' picks the one SI that may work, not every namesake

A retired or paused SI with the same name made the handoff ask 'Nell Wake or Nell Wake?' (sp00verify, live test). Only eligible SIs are candidates now; a true t...

KamoΒ·2w ago
FixAIService

The voice turn binds an EntityManager on its worker thread, as the chat's socket does

The voice turn runs the orchestration on a pool thread (it must outlive Alexa's deadline), where Open Session in View does not reach: the first live turn in sp0...

KamoΒ·2w ago
October 26, 2026
FixAIService

A failed confirmed action reads as the Tool Plane's sentence, never its JSON; guard the assistant beans' constructors

Live in sp00verify a confirmed send refused by the mail service came back to the chat as the refusal's JSON. The outcome now reads its message in plain words (i...

KamoΒ·2w ago
FixAIService

AssistantService names the constructor Spring uses, so new AIService pods start

8c28b82/32c04ee gave AssistantService two constructors without @Autowired; every new pod crash-looped (NoSuchMethodException AssistantService.<init>()) while th...

KamoΒ·2w ago
October 19, 2026
FixAIService

AiCaller judges the god-mode window at its own clock (shared SessionPlatformFacts expiry)

**************** now also needs godModeExpiresAt ahead (kamo-shared-library 1.6.1). AiCaller.fromSession(session, now) asked the shared reader at the system clo...

KamoΒ·3w ago
October 18, 2026
FixAIService

Stop logging the database password at startup

com.zaxxer.hikari at DEBUG makes HikariConfig print its whole configuration on every start, including dataSourceProperties {password=...} and password......; Pr...

KamoΒ·3w ago
October 14, 2026
October 12, 2026
October 11, 2026
FixAIService

The first-contact approval rule says it is about reaching out, not saving a contact

"Contacting someone for the first time" read to an SI as "creating a contact needs approval", and it deferred an owner's request to save a contact record. The b...

KamoΒ·4w ago
October 4, 2026
FixAIService

Note why the ulaw mapping is unreachable today

Review (el-format-review-1.md) flagged that AudioController.SPEECH_FORMATS has no "ulaw" entry, so nothing reaches that arm of ElevenLabsFamily's output_format ...

KamoΒ·1mo ago
September 29, 2026
FixAIService

ElevenLabs speaks the format a caller actually asked for

The adapter hard-coded output_format=mp3_44100_128 on every call, so a caller asking E5 for wav (or kamoai-voice asking for pcm, on every phone call) still got ...

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
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
FixAIService

An access policy and its lists are one write, and tenants never see a Kamo service's in-cluster address

SP98 Task 1 A-7 and A-8. - A-7: AccessPolicyWriter saves the policy and replaces its lists in one transaction, retried whole on a Yugabyte conflict (@RetryOnD...

KamoΒ·1mo ago
FixAIService

One verification run per provider across both pods

SP98 Task 1 A-6. A provider's verification (up to 200 probes on the tenant's key) holds a Redis lease, SET NX with a 10-minute TTL renewed before every probe an...

KamoΒ·1mo ago
FixAIService

Feedback only under its own conversation, no folder cycles, logged and key-free failures, and a visitor's conversation searches the public knowledge base

SP98 Task 1 (A-1 to A-5, and the controller's knowledge-audience addition): - A-1: rating a message answers 404 unless the message belongs to the {guid} conve...

KamoΒ·1mo ago
September 28, 2026
FixAIService

A reworded GPT-6 tool refusal is warned once, and a full effort memory forgets the oldest

Review follow-ups for the reasoning_effort none fix: - A 400/422 that names reasoning_effort and tools but is not the refusal ToolEffortFallback reads logs on...

KamoΒ·1mo ago
FixAIService

A chat turn that offers tools requires TOOL_CALLING, and a failed probe clears supports_tool_use

Member chat and the public widget routed TEXT_GENERATION only and attached tools afterwards, so gpt-6-luna (TOOL_CALLING FAILED) took every tool-bearing - The ...

KamoΒ·1mo ago
FixAIService

A GPT-6 tool call is asked once more at reasoning_effort none, and the model is learned

reasoning_effort "none" and refuse the default effort they apply when none is sent, so every TOOL_CALLING probe and agent step on gpt-6-luna/sol failed. - Reas...

KamoΒ·1mo ago
FixAIService

Spend a WebSocket one-time key with one GETDEL

spendOneTimeKey read the key and then deleted it, so two handshakes racing with the same key inside its 30 s life could both read it and both open a socket for ...

KamoΒ·1mo ago
FixAIService

A streamed member turn retries once without an optional parameter the provider refused

Member chat streams through the adapter itself, outside ProviderCallExecutor, so it had no ParameterFallback. Since SP99-T12 every Hugging Face stream asks for ...

KamoΒ·1mo ago
FixAIService

The streamed member turn runs the member's tools and cites its sources, and a browser can open it

The /ws/ai-chat turn was text only: no Tool Plane tools, no tool loop, no knowledge-base citations, and its handshake took only the raw session id, which kamo-i...

KamoΒ·1mo ago
FixAIService

An in-cluster model gets the time to read its prompt, inside the walk's budget

kamo-llm reads a prompt at about 110 tokens a second on k3m1 before it writes a word, so an E2 prompt past ~6k tokens spent E2's whole 60 s per-attempt bound (a...

KamoΒ·1mo ago
FixAIService

A Hugging Face text stream is metered as the router counted it

HuggingFaceAdapter streamed through the interface's text-only default: every chunk was read for its text and nothing else, so no usage ever reached the executor...

KamoΒ·1mo ago
FixAIService

An Ollama model's context is the window the server serves, not the trained one

OllamaDiscovery took model_info.*.context_length from /api/show: the window the model was TRAINED for. The registry listed granite4:tiny-h at 1 048 576 (and qwe...

KamoΒ·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo ago
September 25, 2026
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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo ago
FixAIService

A QUERY key reaches the provider encoded once

ChatAuth.url returns a URI. WebClient reads a String as a URI template and encoded the already-encoded key again (+ became %252B), so any key holding +, /, = or...

KamoΒ·1mo ago
September 24, 2026

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