Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

17,989
Total Changes
4,649
Features
4,558
Fixes
32
Projects
Filter by project
All Projects17,989AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService386InitializerService302KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,529TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,601kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,328kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,649Fix4,558Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
March 17, 2026
Fixkamo-internal

Align branch-setup and automation tabs with billing tab design

Standardize layout patterns across settings tabs: consistent padding, shared EmptyState component, matching table structure and header styles.

kamo·5mo ago
Fixkamo-internal

Use shared EmailWebSocketContext for real-time unread badge updates

MailButton was creating a duplicate WebSocket connection via useEmailWebSocket() and optimistically incrementing the unread count. Now uses the shared useEmailW...

kamo·5mo ago
Fixkamo-internal

Route media feed WebSocket through media.* subdomain with retry limit

useMediaFeedWebSocket was connecting to same-origin /ws (404) instead of media.kamocrm.com. Fix URL construction to match useChatWebSocket pattern and add MAX_R...

kamo·5mo ago
Fixkamo-internal

Correct KB article field names to match backend entity

Frontend was using wrong field names (dateModified, content, authorName) instead of the actual backend fields (dateUpdated, contentJson, authorMemberId). Also r...

kamo·5mo ago
FixSecurityService

COALESCE type mismatch on security_level — column is varchar not int

The SQL query for user details during session creation was failing with 'incompatible COALESCE expressions: expected 0 to be of type varchar' because **********...

Kamo·5mo ago
Fixkamo-internal

Remove debug logging, add email WS retry limit, proxy email WS through k8s DNS

Remove verbose console.log statements from useUserInfo, NavTop, NavPri, MemberListProvider, SessionManager, sessionMonitor, avatarUtils, and useChatWebSocket th...

kamo·5mo ago
FixKBService

Correct hasRight to match flat rights array format and honor god mode

Session rights are stored as ["VIEW_DASHBOARD", ...] not [{name, setting}]. Also bypass right checks when GD (god mode) is true.

Kamo·5mo ago
FixRAGService

Rename qdrant config properties to avoid K8s env var collision

Kubernetes auto-creates QDRANT_PORT env var from the qdrant Service, which overrides the Spring property with 'tcp://ip:port' instead of an integer. Renamed to ...

Kamo·5mo ago
FixRAGService

Make NATS consumer startup resilient with retry logic

Consumer now retries subscription in a background thread with backoff if KB_EVENTS stream doesn't exist yet. Prevents crash loop when KBService hasn't published...

Kamo·5mo ago
FixKBService

Accept parentGuid from frontend in article creation

Frontend sends parentGuid (string) not parentId (numeric). Resolve GUID to ID server-side via lookup.

Kamo·5mo ago
Fixkamo-shared-library

Add @JsonIgnore to KB entity lazy collections and back-references

Prevents LazyInitializationException and circular serialization when returning KB entities via REST endpoints.

Kamo·5mo ago
Fixkamo-internal

Add KNOWLEDGE_BASE to AppType and Organization.isKnowledgeBase getter

Without these, the KB sidebar entry and home card were hidden since organization.isKnowledgeBase was undefined.

kamo·5mo ago
Fixkamo-internal

Wire up sidebar session history, folders, search, and remove duplicate header icon

- Fix wrapped API response parsing for sessions and folders - Fix folder create to use parentFolderId field name - Fix session/folder updates to use PUT (backen...

kamo·5mo ago
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·5mo 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·5mo 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·5mo 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·5mo ago
Fixkamo-internal

Fetch all provider models on edit, pre-populate active selections

- Fetch provider details with all models (active+inactive) when clicking Edit - Pre-populate editing.models with IDs of active models - Show full model list wit...

kamo·5mo 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·5mo ago
Fixkamo-internal

Add isError to AiChatMessage interface

kamo·5mo ago
FixAIService

Return full decrypted API key in provider responses

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

Kamo·6mo ago
Fixkamo-internal

Stay in edit mode after creating provider, show test and model buttons

- After creating a new provider, stay in edit mode with the returned ID so user can immediately test connection and add models - Fix id checks from === undefi...

kamo·6mo 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·6mo 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·6mo ago
Fixkamo-internal

Move message to Junk folder when reporting as spam

After flagging a message as spam via spamApi, also call batchApi.move to move it to Junk (or back to INBOX when marking as not spam). Applies to both single and...

kamo·6mo 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·6mo ago
Fixkamo-internal

Switch AI chat from WebSocket to REST mode until WS proxy is available

Reports as 'connected' so the UI is usable. Messages sent via REST POST to **************** instead of WebSocket.

kamo·6mo ago
Fixkamo-internal

Remove duplicate minimize/maximize/close buttons from AI chat header

The tool window shell already provides these controls.

kamo·6mo 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·6mo ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing