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 29, 2026
FixAIService

இதற்கு முன்பு தொடாத ஒரு தொடர்பு, அந்த அமைப்பின் மண்டலத்தில் அமைதியான நேரங்களுக்கு நடத்தப்படுகிறது

எஸ்பி98-ஏ-11. தொடர்பு கொள்ள முடியாதபோது ஒப்புதல் கிடைத்த உடனேயே அணுகல் வாயில் திரும்பியது மாநில வரிசை, எனவே ஒரு குளிர்ந்த முதல் தொடுதல் அமைதியான மணிநேரங்களைத் த...

Kamo·3h ago
FixAIService

ஒரு காப்பைலாட் கருவி அழைப்பின் ஐடெம்போடென்சி விசை அதன் திருப்பத்தைக் கொண்டுள்ளது

SP98-A-12. உறுப்பினர் அரட்டை ஒரு கருவி விமானம் அழைப்பு அரட்டை கீ: <அமர்வு வழிகாட்டி>: <கருவி அழைப்பு ஐடி>. ஒரு அழைப்பு ஐடி அதன் முறைக்குள் மட்டுமே தனித்துவமானது...

Kamo·3h ago
FixAIService

பதிவு-அனுப்பப்பட்ட மற்றும் பதிவு-தோல்வியுற்ற பதில் 400 போன்ற அழைப்பு பெயர்கள் அனுப்புபவர் இல்லாதபோது மதிப்பீடு செய்யுங்கள்

SP98-A-10. முகவரோ அல்லது உறுப்பினரோ இல்லாததால், இரண்டு பதிவு அழைப்புகளும் கீழே விழுந்தன ஒரு பூஜ்ய முகவருடன் ஆளுமை கிளை: ஒரு காரணமற்ற தொடுதல் எழுதப்பட்டது, மற்று...

Kamo·3h ago
FixAIService

ஒரு விட்ஜெட் திருப்பம் ஒரு பரிவர்த்தனை அல்ல, எனவே விழுங்கிய ரீட் இனி கமிட் நேரத்தில் அனுப்புவதில் தோல்வியடையாது

SP98-A-9. PublicAiChatService.sendMessage முழு பார்வையாளர் திருப்பத்தையும் ஒரே நேரத்தில் இயக்கியது @Transactional. கையடக்க கருவியின் விரிவாக்க தலைப்புகள் (ஆளுமை...

Kamo·3h 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·4h 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·4h 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·4h 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·4h 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·5h 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·5h 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·9h 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·16h 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·18h 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·18h 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·18h 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·18h 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·23h 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
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
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 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·3d 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·3d 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·3d 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·3d 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·3d 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·3d 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·4d ago
September 24, 2026
September 23, 2026
FixAIService

Pin kamo-shared-library 1.6.1, the only version that exists

The library moved to 1.6.1 and this service still asked for 1.6.0. There is no window in which both resolve: the library is never published to a remote, so the ...

Kamo·5d ago
FixAIService

MCP configs need MANAGE_AI_SETTINGS, provider/MCP urls can't reach the cluster, quota policies are enforced

Three independent findings, fixed together because the first two share files and a class. 1. AiMcpController had zero right checks on create/update/delete/test...

Kamo·6d ago
September 17, 2026
FixAIService

Provider API keys never leave AIService, and only MANAGE_AI_SETTINGS can change a provider

GET /api/ai/providers and GET /api/ai/providers/{id} answered with each provider's DECRYPTED API key. The list is what every member's AI chat model picker loads...

Kamo·1w ago
September 13, 2026
FixAIService

Accept OCI image indexes when resolving the built digest [skip ci]

The images are pushed as OCI image indexes, so asking the registry for a single image manifest only answered 404, the digest came back empty and the check faile...

Kamo·2w ago
FixAIService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
September 12, 2026
FixAIService

An address opted out of marketing is not written to by the sales agent either

The agent's email check was topic-less, so an address that had stopped newsletters and campaigns - but was not on the whole do-not-email list - could still get ...

Kamo·2w ago
September 5, 2026
FixAIService

Prove the deploy by digest, not by tag

The preceding commit stops `set image` being a silent no-op. This asserts the outcome: after the rollout, the tag is resolved to a digest at the registry and th...

Kamo·3w ago
FixAIService

A rebuild of the same commit deployed nothing and reported success

The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...

Kamo·3w ago
September 4, 2026
FixAIService

Let a rollout finish what the old pod was doing

Deploys replaced the only pod of each service with nothing to catch the requests in flight. Three settings, applied across the fleet: - preStop sleeps 10s befo...

Kamo·3w ago
September 2, 2026
FixAIService

A KB link goes to the article its text names

A member asked how to set their org up and got the setup checklist back, each step naming the article that explains it. All three links pointed at the same arti...

Kamo·3w ago
August 30, 2026
FixAIService

No upstream error text reaches a member, whichever provider failed

memberTextFor fell through to getMessage() for anything that was not an AiProviderException. Only the HuggingFace adapter classifies its refusals; every other o...

Kamo·4w ago
FixAIService

Retire a model the provider won't route, and stop quoting it at members

Follow-up to the router-catalogue fix. That stops unroutable models being LISTED; this stops one already in an org's catalogue from breaking the assistant and n...

Kamo·4w ago
August 29, 2026
FixAIService

List the Hugging Face models the router will actually serve

Chat goes to the Inference Providers router **************** but discoverModels asked the HUB for models that are "warm" somewhere — a different and much larger...

Kamo·4w ago
August 26, 2026
FixAIService

Remove the unreviewed-reply unread-count endpoints

Paired with the kamo-internal removal of the AI unread badge: the count never told the member anything actionable (no push channel backs it, so non-zero only ev...

Kamo·4w ago
August 16, 2026
FixAIService

Size the pod above its own JVM heap ceiling [skip ci]

The image starts the JVM with -XX:MaxRAMPercentage=70 -XX:+AlwaysPreTouch, so the heap alone may take 70% of the container limit and pre-touch keeps every commi...

Kamo·1mo ago
August 15, 2026
FixAIService

Administering models and reading usage take the rights that name them

AiModelController and AiUsageController checked organization ownership and no right. The 403s already in the model controller compare provider.getOrganizationId...

Kamo·1mo ago
August 11, 2026
FixAIService

Declare the object-storage secret the ConfigMap no longer carries

The MinIO key was moved out of the ConfigMap into the minio-app-credentials secret, but the envFrom that supplies it was only ever applied to the live deploymen...

Kamo·1mo ago
FixAIService

Stop shipping a shared credential as a config default

The platform's shared password was baked in as the fallback for DB_PASSWORD and MINIO_ROOT_PASSWORD, so it lived in this repo and in the built image as well as ...

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