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 29, 2026
Fixkamo-internal

Wrap meeting invite emails with org signature template (header/footer/signature) and include custom message

Now replicates the exact same email wrapping as the email composer: 1. Fetches signature template from EmailService (USER scope, COMPANY fallback) 2. Fetches se...

kamo·7mo ago
FixMediaService

Update health probes to HTTP port 80 to match new server config

Startup, readiness, and liveness probes were still pointing to port 8443 with HTTPS scheme, causing pod restart loops.

Kamo·7mo ago
Fixkamo-internal

Send meeting invite emails DIRECTLY to EmailService, not through APIService gateway

Root cause: forwardToApi routes through APIService's Java gateway which doesn't preserve multipart FormData boundaries correctly. The email composer works becau...

kamo·7mo ago
Fixkamo-internal

Use subtle background tints on calendar page header and sidebar

Match the leads/allotments page styling with light color-mix backgrounds instead of heavily saturated primary colors.

kamo·7mo ago
FixMediaService

Switch MediaService to HTTP port 80 — TLS termination at Traefik

Internal cluster traffic doesn't need HTTPS. Traefik handles TLS for external clients. This aligns MediaService with all other services.

Kamo·7mo ago
Fixkamo-internal

Clear stale hexheads on page refresh instead of restoring orphaned state

Minimized tool windows don't survive refresh, so restoring hexhead positions created orphaned heads with missing icons and non-functional click handlers. Now cl...

kamo·7mo ago
Refactorkamo-internal

Rewrite HexHead placement system with deterministic layout engine

Replaces the buggy collision-avoidance system (spiralSearch, resolveCollisions, flyToHomeRow, dock/group RAF loops) with a single deterministic reflow() functio...

kamo·7mo ago
Featurekamo-internal

Add typing indicator to AI chat while waiting for response

The streaming bubble only showed when content was already being streamed, leaving no visual feedback during the REST wait. Added bouncing dots indicator that di...

kamo·7mo ago
Fixkamo-internal

Hide member-specific tabs when memberID is "new" to prevent BAD_REQUEST errors

The /settings/member/new URL (from "Add Team Member" button) is caught by the [memberID] dynamic route, causing AccountActivityTab, MembershipPermissionsTab, an...

kamo·7mo ago
Fixkamo-internal

60s OTK TTL for meet windows, independent chat/email invites that don't block on backend

ROOT CAUSE: The OTK had a 10-second TTL. By the time the kamo-meet page loaded all its assets and branding/overrides.js ran to validate the OTK, it had already ...

kamo·7mo ago
Fixkamo-internal

Send chat invites via existing chat session API, email invites via multipart to EmailService

Chat invites: creates/gets a chat session via POST /api/media/sessions/chat then sends the meeting invite as a text message in that session. Uses the exact same...

kamo·7mo ago
FixAPIService

Use getServerName() instead of getHeader(Host) for original host resolution

ForwardedHeaderFilter consumes X-Forwarded-Host and adapts getServerName() accordingly, while getHeader(Host) returns the raw HTTP Host which may be a K8s inter...

Kamo·7mo ago
FixMediaService

Send chat invites to correct WebSocket topic /topic/chat/incoming/{memberId}

Was publishing to /topic/chat/member/{id} but kamo-internal subscribes to /topic/chat/incoming/{id}. Also fixed Member entity field access **************** inst...

Kamo·7mo ago
Fixkamo-internal

Forward all meeting fields (sendChatInvite, sendEmailInvite, customMessage, roomAlias, joinUrl) to backend

The Next.js API route was stripping sendChatInvite, sendEmailInvite, customMessage, and roomAlias — only forwarding roomName and inviteMemberIds. Backend receiv...

kamo·7mo ago
FeatureMediaService

Implement chat WebSocket and email invite sending for meetings

MeetController now reads sendChatInvite, sendEmailInvite, and customMessage from the create request body and triggers async invite sending. MeetService.sendInv...

Kamo·7mo ago
Featurekamo-internal

Pass availableMembers to all MeetingDialog instances and self-fetch when not provided

- MemberList passes availableMembers to each MemberItem - MemberItem passes availableMembers to its MeetingDialog - MeetingDialog self-fetches members from ****...

kamo·7mo ago
Fixkamo-login

Forward visitor IP and User-Agent to backend for accurate account activity logging

The Next.js API routes were not forwarding X-Forwarded-For, X-Real-IP, or User-Agent headers to the Java backend, causing account activity to log the Next.js po...

Kamo·7mo ago
FixAPIService

Use HTTP on port 80 for meet service URL to match other services

The HTTPS endpoint on 8443 causes SSL cert mismatch when routing through K8s internal DNS. All other services use HTTP on port 80.

Kamo·7mo ago
Featurekamo-internal

Add custom message textarea to MeetingDialog for chat/email invitations

Shows a multiline text input when at least one notification option is enabled, allowing the meeting creator to add a personal note to the invitation. Hidden whe...

kamo·7mo ago
Fixkamo-internal

Show MeetingDialog for per-member meetings instead of bypassing directly

Both MemberItem (Interaction Center) and ChatBox (chat tool window) now open the MeetingDialog with the target member pre-selected, allowing the user to set the...

kamo·7mo ago
Fixkamo-internal

Route meet config API through APIService instead of direct MediaService

The existing meet/create route uses forwardToApi (APIService), which proxies to MediaService. The new config/background routes must follow the same pattern to w...

kamo·7mo ago
Fixkamo-internal

Move New Tab button after Chat Now as icon-only, remove duplicate Notes link

New Tab is now an icon button (no label) placed to the right of Chat Now. Notes removed from NavTop since it's already in NavPri.

kamo·7mo ago
FeatureKlusterServices

Configure Prosody, Jicofo, and secrets for Jibri recording support

Enable recording in Prosody, add Jibri XMPP passwords to secrets, and configure Jicofo brewery MUC for Jibri instance discovery.

Kamo·7mo ago
FeatureKlusterServices

Add Jibri deployment manifests for Meet meeting recording

Kubernetes deployment, service, and configmap for Jibri (Meet Broadcasting Infrastructure) to enable meeting recording with MinIO storage integration.

Kamo·7mo ago
Featurekamo-internal

Add /settings/features/meets page with 5 tabs for org-level video conferencing config

New settings page with General, Security & Access, Recording, Branding, and Notifications tabs. Includes meetApi client, MediaService proxy routes, logo variant...

kamo·7mo ago
FeatureMediaService

Add MeetConfigController and MeetConfigService for org-level meet settings

REST endpoints for CRUD on OrgMeetConfig and MeetBackground entities. Supports config get/update, background upload/delete/reorder via MinIO storage.

Kamo·7mo ago
Featurekamo-shared-library

Add OrgMeetConfig entity, MeetBackground entity, MEET_RECORDING ImageAssocType, and meet permissions

Adds org-level video conferencing configuration with defaults for lobby, guest access, recording, branding, and notifications. New permissions: RECORD_MEETINGS ...

Kamo·7mo ago
Fixkamo-shared-library

Add explicit @JsonProperty annotations to KbArticle AI visibility fields

Ensure Jackson serializes/deserializes aiEnabled, aiVisibleToPublic, aiVisibleToMembers, aiVisibleToTeamMembers with correct field names.

Kamo·7mo ago
Fixkamo-internal

Prevent infinite re-render loop in MeetingDialog caused by default prop array references

The useEffect had preSelectedMembers (defaulting to []) as a dependency, creating a new array on every render and triggering an infinite setState loop. Fixed by...

kamo·7mo ago
Chorekamo-internal

Trigger deploy for MUI 7 fix

kamo·7mo ago
Fixkamo-internal

Make Chat Now icon white, sync email badge with message list, use CSS color-mix for theme colors

- NavTop: change ForumIcon color to white to match Chat Now label - MessageBrowser/MailButton: coordinate WebSocket email refresh via custom event so badge coun...

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