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
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·1mo 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·1mo 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·1mo 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·1mo 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·2mo 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·2mo 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·2mo 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·2mo ago
August 3, 2026
FixAIService

Scan the shared MFA repositories

MfaEnrollmentService is a @Service in kamo-shared-library, so the wildcard @ComponentScan("com.kamo") in this application constructs it whether or not this serv...

Kamo·2mo ago
FixAIService

Harden the kubectl download against flaky egress [skip ci]

dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...

Kamo·2mo ago
July 22, 2026
FixAIService

Classify vision failures so the retry loop and circuit breaker actually work

Two bugs in visionComplete, both of which defeated machinery built to handle them. A blank-content response was returned as SUCCESS and ended the retry loop. E...

Kamo·3mo ago
FixAIService

Never route vision to an adapter that cannot send an image

AiProvider.supportsVision is a hand-editable database flag, and routing trusted it alone. The HuggingFace and Cohere adapters never read imageUrls at all, and t...

Kamo·3mo ago
July 19, 2026
FixAIService

Anthropic dropped every system message but the last

buildRequestBody assigned rather than accumulated the system field, so with more than one system message only the final one reached the model. In practice that ...

Kamo·3mo ago
FixAIService

Locked rules survive a section or whole-document override

An author taking over a rule section by hand replaced the entire section body, which silently discarded the locked pack rules inside it - so 'never quote a rate...

Kamo·3mo ago
July 18, 2026
FixAIService

Streamed replies were dropped, persisting blank assistant messages

Every successful chat completion came back as an EMPTY assistant bubble. The assistant rows were being saved with content_len=0 and is_error=false, so there was...

Kamo·3mo ago
FixAIService

Try the next model when a vision model rejects the image

Probing production again after the modality fix, routing moved from a text-to-speech model to o3-mini — an o-series reasoning model that also takes no image inp...

Kamo·3mo ago
FixAIService

Stop routing vision to text-to-speech models

Found by probing production: org 1188756624575266822's vision calls resolved to gpt-4o-mini-tts-2025-03-20 — a TEXT-TO-SPEECH model — so every vision call retur...

Kamo·3mo ago
July 17, 2026
FixAIService

Load history images via query, not lazy getImages() (WS path)

**************** runs on the WebSocket path (called from AiChatWebSocketHandler), which is NOT an HTTP request, so open-session-in-view does not apply. Iteratin...

Kamo·3mo ago
July 16, 2026
FixAIService

Allow SWITCH_MODEL to reset a session to Auto

handleSwitchModel always UUID-parsed modelId and errored on null, so a session could never be reverted to automatic model selection mid-chat. Parse modelId as a...

Kamo·3mo ago
July 8, 2026
FixAIService

Robust vision provider/model selection across vendors

Two-pass selectVisionProvider: prefer any org provider that has an active vision-capable model adapter already emits image_url content and reports supportsVisio...

Kamo·3mo ago
July 1, 2026
April 18, 2026
FixAIService

Bump kamo-shared-library to 1.4.0

Kamo·6mo ago
March 30, 2026
FixAIService

Lower RAG min-score threshold from 0.5 to 0.25 to stop filtering relevant KB results

The 0.5 threshold was silently discarding valid results from the embedding model, especially for domain-specific content with smaller 384-dim vectors.

Kamo·6mo ago
March 20, 2026
March 18, 2026
FixAIService

Add response body and request logging to RagClient for debugging

Log the RAG search request URL, orgId, query, and response body on error to diagnose 500 responses from RAGService.

Kamo·7mo ago
March 17, 2026
FixAIService

Use non-streaming chat completion for REST endpoint

Streaming over REST with blockLast() was producing empty responses because WebClient's SSE parsing doesn't work reliably with bodyToFlux(String.class). Added ha...

Kamo·7mo ago
FixAIService

Add detailed error logging to HuggingFaceAdapter for debugging 400 errors

Captures and logs the actual HF error response body instead of just status code.

Kamo·7mo ago
FixAIService

Switch HuggingFace to router.huggingface.co (api-inference is deprecated)

HF returns 410 on api-inference.huggingface.co with message to use router.huggingface.co instead.

Kamo·7mo ago
FixAIService

Use HuggingFace OpenAI-compatible endpoint with model in request body

HF's /v1/chat/completions endpoint takes the model ID in the JSON body, not in the URL path. Switched from per-model URL routing to standard

Kamo·7mo ago
FixAIService

Add model count to provider list, switch HF to router endpoint

- Include modelCount in provider list GET response - Switch Hugging Face default base URL to router.huggingface.co - Support both api-inference and router URL f...

Kamo·7mo ago
FixAIService

Return full decrypted API key in provider responses

Users need to see and edit the full key, not a masked version.

Kamo·7mo ago
FixAIService

Normalize base URL to prevent /v1/v1 duplication

Strips trailing /v1 from base URL before appending /v1/chat/completions, so users can enter base URLs with or without the /v1 suffix.

Kamo·7mo ago
FixAIService

Restructure test connection to discover models first, handle rate limits gracefully

- Model discovery (lightweight GET) runs before chat test (POST) - Rate limit (429) errors show user-friendly warning instead of failing - Auth errors (401/403)...

Kamo·7mo ago
FixAIService

Use provider-specific test model instead of hardcoded gpt-4o-mini

Each provider type now uses an appropriate model for connection testing

Kamo·7mo ago
FixAIService

Serialize entity IDs as strings to prevent JavaScript precision loss

CockroachDB unique_rowid() generates INT8 values that exceed JavaScript's Number.MAX_SAFE_INTEGER, causing ID corruption in the frontend.

Kamo·7mo ago
March 16, 2026
FixAIService

Add OTK authentication support matching SecurityService pattern

- Add OTKPreAuthFilter to validate X-OTK header and resolve to *** session - Update SessionHelper to read from request attributes set by filter - Update all con...

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