KamoCRM

Live Change Log

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

17,532
Total Changes
6,009
Features
5,290
Fixes
30
Projects
Filter by project
All Projects17,532AIService255APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService581InitializerService329KBService151KlusterServices741MCPGatewayService252MediaService602RAGService79SecurityService1,853TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,356kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,665kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore775Docs3,255Feature6,009Fix5,290Other994Performance165Refactor278Revert23Style42Test161Upgrade1
April 27, 2026
Featurekamo-shared-library

Add **************** helpers to TeamMember

Kamo·6mo ago
Featurekamo-internal

Wire VAD + push-to-talk; remove unimplementable settings

- vadEnabled now passed as voiceActivityDetection in buildAudioConstraints so the browser honours the toggle when opening mic for a call - pushToTalk auto-mut...

kamo·6mo ago
April 26, 2026
Featurekamo-internal

Scrollable ringtone list with search filter

Make the ringtone catalog panel match the right-column height and scroll vertically when the list overflows, so members can navigate as more tones are added. Ad...

kamo·6mo ago
Featurekamo-internal

Add seven more ringtones to the catalog

Adds Battleship Horn, Demon Horn, Land Line, 1985 Ring, Office Phone, Ringing Old Phone, and Olé under /public/sounds/ringtones/ and wires them into RINGTONE_CA...

kamo·6mo ago
Featurekamo-internal

Add Sci-Fi and Buzzer ringtones to the catalog

Drops two new ringtone assets under /public/sounds/ringtones/ and registers them in RINGTONE_CATALOG so they appear in the Ringtones subtab and can be set as th...

kamo·6mo ago
Featurekamo-internal

Three-column audio layout, drop saved-banner, fill width

Lays the Audio subtab out as Microphone | Speaker | Advanced across the full row on lg+ screens (md still pairs them two-up, xs stacks). The Advanced card switc...

kamo·6mo ago
Featurekamo-internal

Split AV settings into Audio/Video/Ringtones subtabs

Reorganizes the Audio/Video tab into three internal subtabs and lays each one out horizontally so settings fit within the viewport without the wall of vertical ...

kamo·6mo ago
Featurekamo-internal

Add Audio / Video Settings tab and wire into softphone

Adds a per-device AV preferences store (localStorage, machine-specific, not roaming) plus a fully-featured tab on /settings/member/<id> for configuring and test...

kamo·6mo ago
Featurekamo-internal

Always-on SIP session with auto-popup + ringtone on inbound calls

The softphone used to register only while the popup tool window was open — close it and inbound calls were silently missed. Lift the session into a SoftphonePro...

kamo·6mo ago
FeatureKlusterServices

Seed pbx.k1.kluster.kamocrm.com as a static domain

The browser softphone needs SIP-over-WSS to land on a hostname with a real TLS cert. Add the FreePBX admin / WS hostname to STATIC_DOMAINS so the auto-cert seed...

Kamo·6mo ago
Featurekamo-register

Use org short name and description in HTML head

Replace org-API-based title logic with config.json siteNameShort so the title follows the same pattern as other sites: "Register - {siteNameShort}". Adds descri...

Kamo·6mo ago
Featurekamo-login

Use org short name and description in HTML head

DynamicMetaLoader now sets document.title to "Login - {siteNameShort}" and writes the org description into the meta description tag. Static layout.tsx fallback ...

Kamo·6mo ago
Featurekamo-internal

Use org short name and description in HTML head

DynamicMetaLoader now sets document.title to siteNameShort (was siteName) and writes the org description into the meta description tag. Static layout.tsx fallba...

kamo·6mo ago
FeatureSecurityService

Include org description in config.json

Add description field to buildConfigJson() and pass org.getDescription() from writeConfigFiles() so the themed config.json carries the org's description for fro...

Kamo·6mo ago
Featurekamo-internal

Add includeCompany to market popup and companyName to leads

Market add/edit popup (LeadMarketManager): - Radio control "Track Company Name" / "Individual Only" (required) - Defaults to unset on new market; pre-fills on e...

kamo·6mo ago
FeatureInitializerService

Add include_company and company_name columns

LeadCompanyColumnRunner (Order 40) idempotently adds: - lead_markets.include_company (BOOLEAN, nullable) — tracks whether a market requires company name on le...

Kamo·6mo ago
FeatureSecurityService

Expose includeCompany in intake-config and market-config responses

Both **************** and **************** now include the includeCompany flag so the frontend knows whether to show the company name field on lead creation.

Kamo·6mo ago
Featurekamo-shared-library

Add includeCompany to LeadMarket and companyName to Lead

- LeadMarket entity gets include_company (Boolean, nullable) - Lead entity gets company_name (String, max 50, nullable) - LeadMarketDTO, CreateLeadMarketRequest...

Kamo·6mo ago
Featurekamo-internal

Show sales type path in Add Lead subtitle

Append the market's Sales Type and Sub-Type to the "Adding to" line so the form mirrors the labels used in the Edit Market popup at **************** Renders as ...

kamo·6mo ago
Featurekamo-internal

Unified PhoneSdk supporting RingCentral + sip.js (FreePBX)

The softphone hook used to instantiate ringcentral-web-phone unconditionally, which threw on any FreePBX credential shape because that SDK is hard-coded to Ring...

kamo·6mo ago
FeatureVOIPService

WSS-aware SIP credentials for browser softphones

The /api/voip/sip/credentials endpoint now returns credentials a browser-side SIP stack can actually use: WSS transport, public domain, and a wsServers URL. - ...

Kamo·6mo ago
FeatureKlusterServices

Add WSS WebRTC transport for browser softphones

Asterisk's chan_pjsip now binds a plain WebSocket transport on 0.0.0.0:8089 and Traefik terminates TLS at **************** (port 443) so kamo-internal can regis...

Kamo·6mo ago
FeatureSecurityService

Add /names endpoint returning id→name for all members regardless of state

The by-department endpoint filters to active TeamMembers only, but extension assignments may reference base Members or inactive members. Use /names for ID→name ...

Kamo·6mo ago
Featurekamo-internal

Single-lead Add Lead form at /leads/new

Refactor Add Lead from an in-page multi-tab pane into a dedicated route at /leads/new so it can be linked directly. The current market is passed through as ?mar...

kamo·6mo ago
FeatureSecurityService

Add **************** endpoint

Returns salesType, subType, and customForms for a market by marketId so the Add Lead form can render sub-type fields and intake custom forms without first creat...

Kamo·6mo ago
Featurekamo-shared-library

Add isDisplayOnIntake to create/update request DTOs

Kamo·6mo ago
Featurekamo-shared-library

Expose isDisplayOnIntake in FormFieldDTO

Kamo·6mo ago
Featurekamo-shared-library

Add IS_DISPLAY_ON_INTAKE column to FormField entity

Kamo·6mo ago
Featurekamo-internal

Persist active mailbox in URL query params

Switching mailboxes now updates the URL (?mailboxType, ?mailboxId, ?mailbox) so refreshing the browser restores the same mailbox. MessageBrowser reads window.lo...

kamo·6mo ago
Featurekamo-marketing

Add Flowroute to integrations hub page

Kamo·6mo ago
Featurekamo-marketing

Add Flowroute to INTEGRATED WITH banner

Kamo·6mo ago
Featurekamo-internal

Show accurate provider connection status from isConnected field

Replaces the old logic that showed "Connected" for any provider with no sync error (including brand-new providers that were never tested). New three-state badg...

kamo·6mo ago
FeatureVOIPService

Persist connection test result to isConnected field

- test() endpoint saves isConnected=true/false to DB after every health check - update() resets isConnected to null when configJson changes (credentials may h...

Kamo·6mo ago
Featurekamo-shared-library

Add isConnected field to VoipProviderInstance

Nullable Boolean: null = never tested, true = last test passed, false = failed. Requires KamoInitializerService schema migration to add IS_CONNECTED column.

Kamo·6mo ago
Featurekamo-marketing

Show active offer banner with live millisecond countdown

Fetches the active promotion server-side on the home page and renders a HeroOfferBanner between the subheadline and the free-forever callout. The banner shows t...

Kamo·6mo ago
Featurekamo-internal

Wire Available/Unavailable switch to backend and fix OFFLINE presence bug

- Rename Paused/Active chip to Available/Unavailable in NavTop - Fetch initial availability on mount and persist toggles via new me/availability API - Add isAva...

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