KamoCRM

Live Change Log

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

18,414
Total Changes
6,545
Features
5,540
Fixes
30
Projects
Filter by project
All Projects18,414AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService623InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,999TranslateService62VOIPService265VectorService11kamo-apps27kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,701kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,828kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,545Fix5,540Other1,001Performance174Refactor282Revert23Style45Test175Upgrade1
March 31, 2026
Fixkamo-internal

Connect WebSocket directly to vector.{domain} subdomain

Next.js rewrites don't proxy WebSocket upgrade requests. Connect directly to the VectorService via its own subdomain, same pattern as media WebSocket.

kamo·7mo ago
Fixkamo-internal

Update service references to vectorservice

kamo·7mo ago
Featurekamo-internal

Add image-to-SVG conversion pipeline with reusable modal component

- New ImageToSVGConverter modal component with 3-step flow: Crop → Process → Review - WebSocket hook (useImagePipeline) for streaming pipeline communication - C...

kamo·7mo ago
March 30, 2026
FixRAGService

Lower embedding batch size to 8 to match model backend limit

The TEI backend forces max_batch_requests=8 regardless of client config. Batches of 32 were still failing with connection errors.

Kamo·7mo ago
FixRAGService

Batch embedding requests to respect model's max batch size of 32

The embedding model rejects requests with more than 32 inputs, but articles with large content produce 46-198 chunks. All embedding attempts were failing with 4...

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

Defer NATS event publishing until after transaction commits to prevent RAG race condition

Events were firing inside @Transactional methods, causing RAGService to read stale data from CockroachDB before the commit. Also auto-defaults aiVisibleToMember...

Kamo·7mo ago
Fixkamo-internal

Add missing Docs nav item to NavPri sidebar

kamo·7mo ago
FixKlusterServices

JVB_ADVERTISE_IPS must be public IP, not Wireguard IP

Was 10.8.1.1 (Wireguard private) — guests' browsers can't reach this. Changed to 75.83.113.11 (public IP). This is why guests kept getting ICE restarts every ~1...

Kamo·7mo ago
FixKlusterServices

Disable mod_token_verification via custom plugin override to stop guest kicks

The MUC token_verification module re-validates tokens and demotes guests from PARTICIPANT to VISITOR after ~60 seconds, causing Jicofo to kick them. The module ...

Kamo·7mo ago
FixKlusterServices

Add guest domain to token_verification_allowlist, increase smacks timeout

Guests authenticate via Meet-anonymous on guest.meet.Meet but the MUC token_verification module was re-checking them and demoting their role from PARTICIPANT to...

Kamo·7mo ago
FixKlusterServices

Disable Jicofo auth module to prevent 1-minute participant kick

Jicofo's AbstractAuthAuthority has a hardcoded 1-minute auth session lifetime that ignores the config file setting. After 60 seconds, Prosody demotes participan...

Kamo·7mo ago
FixKlusterServices

Use room names (not full JIDs) for all brewery MUC configs

Both Jicofo and JVB Docker images append @XMPP_INTERNAL_MUC_DOMAIN to the brewery room name automatically. Using full JIDs like **************** caused double-d...

Kamo·7mo ago
FixKlusterServices

Use TCP probe on port 9090 for JVB health checks instead of HTTP on 8080

JVB's REST API port 8080 conflicts with CockroachDB's admin UI on the same hostNetwork. The JVB_OHTTP_SERVER_PORT env var is not recognized by this JVB image ve...

Kamo·7mo ago
FixKlusterServices

Resolve JVB crash loop — wrong MUC JID + port 8080 conflict

Two issues causing JVB to crash in a loop for 43+ hours: 1. JVB_BREWERY_MUC was **************** (full JID) but JVB appends XMPP_INTERNAL_MUC_DOMAIN automat...

Kamo·7mo ago
FixKlusterServices

JVB_BREWERY_MUC should be room name only, not full JID

Was **************** which caused JVB to construct a double-domain JID **************** with an @ in the domain part — crashing JVB with XmppStringprepException...

Kamo·7mo ago
FixSecurityService

Query avatar_photos extension via SQL instead of Hibernate proxy

avatarRepository.findById() returns a Hibernate proxy (Avatar$HibernateProxy) that fails instanceof AvatarPhoto check. This caused the file extension to always ...

Kamo·7mo ago
Featurekamo-internal

Add date/time scheduler to Start Meeting dialog

Adds a Now/Schedule pill toggle to the meeting creation dialog. When Schedule is selected, an MUI DateTimePicker slides in with 15-minute intervals and a format...

kamo·7mo ago
FixSecurityService

Store full avatar relative path in session instead of bare file hash

The login SQL now also fetches avatar_type and file_extension from avatar_photos so the session stores a complete relative path like **************** or *******...

Kamo·7mo ago
FeatureMediaService

Include org static background images in meet virtual backgrounds

Fetch backgroundImageCount from the org's theme config.json and generate URLs for /img/bg/{n}.webp so org-level static backgrounds appear alongside meet-specifi...

Kamo·7mo ago
FeatureSecurityService

Add first name, last name, and avatar hash to *** session

Include memberFirstName, memberLastName, and memberAvatarUrl in Redis session data so cross-domain services like KamoMeet can display proper user identity witho...

Kamo·7mo ago
Fixkamo-internal

Handle meetReturn redirect to send users back to meeting after login

- Detect meetReturn query param on home page (from KamoMeet auth redirect) - Generate OTK and redirect authenticated users back to meet with token - Use session...

kamo·7mo ago
FixMediaService

Resolve org theme backgrounds not appearing in meet virtual backgrounds

- Add domain-based theme URL resolution for internal K8s service-to-service calls - getPublicBackgrounds now accepts optional domain param to derive correct the...

Kamo·7mo ago
FixMediaService

Upload meet backgrounds to public MinIO bucket with hash-based naming

Was uploading to private 'imaging-meet-recordings' bucket via **************** which caused: - MinIO region mismatch errors on the primary node - Connection tim...

Kamo·7mo ago
March 29, 2026
Fixkamo-internal

Remove client-side OTK from multipart upload, add upload debug logging

The client was generating a wasted OTK before upload (the Next.js route generates its own server-side OTK for the backend). Removed the client OTK to simplify t...

kamo·7mo ago
Otherkamo-internal

Add logging to meet backgrounds POST handler

kamo·7mo ago
FixMediaService

Return serialization-safe Maps instead of raw JPA entities in MeetConfigController

All config/background endpoints were returning raw JPA entities with @ManyToOne(fetch=LAZY) Organization references. Jackson failed to serialize the Hibernate p...

Kamo·7mo ago
Fixkamo-internal

Simplify NavTop display name lookup and correct MediaService URL scheme

- Remove usernameAlias lookup from getDisplayName, use member record directly - Fix MediaService K8s URL from https:8443 to http:80

kamo·7mo ago
Fixkamo-internal

Use forwardToApi for meet background uploads instead of manual fetch

The manual fetch with FormData forwarding was breaking multipart boundaries. Now reconstructs FormData and uses forwardToApi which handles headers correctly.

kamo·7mo ago
Fixkamo-shared-library

Use subquery to find org theme backgrounds by user membership instead of direct member join

The previous INNER JOIN on tb.member excluded backgrounds where member was NULL, which is most user-level backgrounds. Now uses a subquery through User→Member→O...

Kamo·7mo ago
FeatureMediaService

Add public config and backgrounds endpoints for sidecar consumption

GET /api/meet/public-config?domain= returns org meet config by domain. GET **************** returns combined virtual backgrounds. Both endpoints are unauthentic...

Kamo·7mo ago
FixMediaService

Remove duplicate endpoints from MeetController, add org-themes to MeetConfigController

MeetConfigController already handled config/background endpoints. The duplicate endpoints in MeetController caused ambiguous mapping. Added org-theme background...

Kamo·7mo ago
FeatureMediaService

Add config CRUD, background management, and org-theme endpoints

All endpoints enforce MANAGE_MEET_SETTINGS privilege. Config auto-creates with defaults on first access per org. Background uploads go to MinIO with SHA-256 has...

Kamo·7mo ago
Featurekamo-internal

Add org theme backgrounds to meets settings and remove deprecated fields

- Add GET route for org theme backgrounds **************** - Update meetApi.ts: remove whoCanCreate and emailInvitesEnabled from MeetConfig, add OrgThemeBackgro...

kamo·7mo ago
Fixkamo-internal

Fetch signature template directly from EmailService with OTK auth, add debug logging

forwardToApi for /api/email/signature-templates went through APIService gateway instead of the Next.js email proxy. Now fetches directly from EmailService with ...

kamo·7mo ago
Fixkamo-internal

Read session from Redis directly (same as /api/user-info), use forwardToApi for all service calls

Root cause: the sender profile showed 'Your colleague' because the session fetch called a non-existent SecurityService endpoint. Signature was malformed because...

kamo·7mo ago
Fixkamo-internal

Replicate exact email composer data flow for meeting invite emails

The previous implementation only filled 8 of 20+ SignatureContent fields, causing malformed signatures with no images, name, or contact info. Now replicates th...

kamo·7mo ago
Fixkamo-internal

Clean up meeting invite email — remove logo, fix subject/host, embed custom message properly

Template changes: - Removed logo image (signature template header handles branding) - Removed 'Hi, Your colleague has invited you' — replaced with custom mess...

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