KamoCRM

Live Change Log

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

15,120
Total Changes
5,169
Features
4,935
Fixes
30
Projects
Filter by project
All Projects15,120AIService197APIService161BillingService143ConversionService107DaemonService129DocsService215ESigService88EmailService518InitializerService318KBService105KlusterServices697MCPGatewayService85MediaService546RAGService71SecurityService1,658TranslateService55VOIPService205VectorService11kamo-apps25kamo-asterisk-support24kamo-capcha17kamo-capcha-widget4kamo-internal6,937kamo-login330kamo-marketing625kamo-nowww20kamo-register213kamo-shared-library1,455kamo-signer-monorepo53kamolos108
Filter by type
All TypesBuild11CI523Chore738Docs2,167Feature5,169Fix4,935Other986Performance157Refactor274Revert23Style42Test94Upgrade1
April 27, 2026
Fixkamo-internal

Restore organization import removed by accident

organization.id is still needed in the handleCreateDocument request body; only the isDocsEditor condition should have been removed.

kamo·5mo ago
Fixkamo-internal

Show Create Document button to all logged-in members

The org feature flag check (isDocsEditor → isDocs → hasFeature DOCS) was returning false because org features use deprecated key types. The button is now shown ...

kamo·5mo ago
Featurekamo-internal

International support — CountrySelect, LanguageSelect, SubdivisionField across all forms

- Add reusable CountrySelect (207 countries, flag icons), LanguageSelect (26 languages, flag icons), SubdivisionField (US state dropdown with flags; other cou...

kamo·5mo ago
Fixkamo-internal

Remove datagrid field-level filters and floating filter row

Disabled all column filters and the floating filter input row so the grid shows only column headers and data rows. Also removed the Filters tool panel from the ...

kamo·5mo ago
Fixkamo-internal

Move Upload button into DocManager toolbar

The Upload trigger was only in the /doc/manager page's actions prop, making it invisible when DocManager is embedded in other pages. Moved the Upload button dir...

kamo·5mo ago
Fixkamo-internal

Allow upload options to scroll in embedded DocManager

Uploads tab container was overflow:hidden, clipping per-file options (description, folder, doc type, access level) in height-constrained embedded contexts. Chan...

kamo·5mo ago
Fixkamo-internal

Fix 400 feed error and add communications sub-tabs with URL params

Fix double-? bug in MediaStream where feedEndpoint already contained query params but the fetch appended ?page=... instead of &page=..., causing a malformed URL...

kamo·5mo ago
Fixkamo-internal

Make 'All Leads' a real menu item with icons in agent filter

- Replace placeholder empty-value item with __ALL__ so the dropdown never shows blank when All Leads is selected - Add Group icon to All Leads and PersonOff i...

kamo·5mo ago
Featurekamo-internal

ASSIGN_LEADS right, agent filter unassigned option, grid column cleanup

- Gate 'Unassigned Leads' agent filter option behind ASSIGN_LEADS right - 'All Leads' excludes unassigned leads for members without the right - Remove Street, P...

kamo·5mo ago
Featurekamo-internal

Add Assign To field to Market & Assignment section on /leads/new

- Fetches active team members from **************** on mount - Groups members by department with alphabetically sorted departments and members - Formats names a...

kamo·5mo ago
Featurekamo-internal

Update Platform Administration cards to match unified tab structure

Replace the two stale cards (Organizations standalone page + Configuration) with five cards matching the actual tabs: General, Organizations, VOIP & SMS, System...

kamo·5mo ago
Featurekamo-internal

Full-width grid layout and move sync trigger from Advanced tab

- Redesign VOIP & SMS tab to use full content-area width: pipeline stats span the top row, Recording Processing and Global Sync Schedule sit side by side in...

kamo·5mo ago
Featurekamo-internal

Merge Organizations into Configuration page with unified tab nav

- Add Organizations as a tab in **************** (General · Organizations · VOIP & SMS · System User · Advanced order) - Delete **************** standalone page...

kamo·5mo ago
Featurekamo-internal

Surface PHONE_SERVER_ID on phone-instance overview tab

Operators configuring kamo-asterisk-support on a FreePBX host need to paste the matching VoipProviderInstance UUID into the helper's config file as PHONE_SERVER...

Kamo·5mo ago
Featurekamo-internal

Wire call features settings end-to-end through provider abstraction

- voipApi: add CallFeaturesDto type, getCallFeatures() and setCallFeatures() API calls - useSoftphone: add **************** state loaded from API on startup; ...

kamo·5mo ago
Featurekamo-internal

VOIP_RECORDING_UPLOADS scope + recording pipeline counters/tunables

- APIManager: new VOIP_RECORDING_UPLOADS scope option (used by kamo-asterisk-support on FreePBX hosts to upload voicemail and call recordings via APIService)....

Kamo·5mo ago
Featurekamo-internal

Replace mock contacts tab with fully-featured SoftphoneContacts

Extracts a new SoftphoneContacts component that wires the softphone contacts tab to the real contacts API via useContacts(). Replaces 4 hardcoded mock contacts ...

kamo·5mo ago
Fixkamo-internal

Cast voiceActivityDetection to bypass missing TS DOM type

voiceActivityDetection is a valid WebRTC MediaTrackConstraints property but is absent from TypeScript's DOM lib, causing a type error at build time.

kamo·5mo 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·5mo ago
April 26, 2026
Otherkamo-internal

debug+fix(softphone): inspect <audio> element state, auto-recover when bytes arrive but sound stays silent

WebRTC stats from a recent call showed inboundBytes=39680 / receivers unmuted / ICE pair succeeded — the bridge was delivering audio to the browser — yet the op...

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

Dump WebRTC state again 5s after Established + track all state changes

The Established-time dump always shows receivers with muted=true because DTLS handshake and SRTP keying haven't completed yet. To diagnose "call connects but no...

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

Dump WebRTC negotiation state on Established

To diagnose "call connects but no audio between parties", log the peer-connection state (ice / dtls / signaling) along with sender and receiver tracks (kind / e...

kamo·5mo ago
Fixkamo-internal

Live audio that survives load-interrupts, centered spinner, outbound ringback

Three coordinated fixes for the in-call audio path: 1. AbortError on remoteAudio.play() (visible in production console as "The play() request was interrupte...

kamo·5mo ago
Fixkamo-internal

Hangup tears down ALL live sessions, not just the primary

Self-call edge case left a session leaked: dialing your own extension creates an outbound session, then Asterisk loops the call back as a second inbound session...

kamo·5mo ago
Fixkamo-internal

Instant connecting feedback on outbound dial

Same problem the inbound Answer button had: clicking Call kicked off the SIP INVITE round-trip (1-3 seconds) but the button kept its idle "Call" appearance the ...

kamo·5mo ago
Fixkamo-internal

Connecting animation + audio that actually plays + ringtone unlock

Three coordinated fixes for the inbound-call path: 1. Visual feedback while accepting. Clicking Answer left both buttons responsive-looking but unresponsive...

kamo·5mo ago
Fixkamo-internal

Mount SoftphoneProvider above ToolDock so tool windows can read it

Opening the Softphone popup crashed the page with "This page couldn't load" because tool windows mount inside ToolDock, which lives in ToolProviders — a SIBLING...

kamo·5mo ago
Fixkamo-internal

Use Grid size prop so AV panels fill the row

MUI v7's Grid is flexbox-based, so the gridColumn sx I'd been using was a no-op — items rendered at their natural width and left empty space on the right. Switc...

kamo·5mo ago
Fixkamo-internal

Migrate stale ringtone IDs to default on load

If a user's saved AV preferences reference a ringtone that no longer exists in the catalogue (e.g. 'classic' from before the catalogue was trimmed), the Rington...

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

Dialpad digits now register on touch devices

The dialpad buttons called e.preventDefault() in both onTouchStart and onTouchEnd. That stops the browser from firing the synthetic click event that follows a t...

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

Separate globe presence for marketing live chat vs members

Public Chat widget tickets keep org placeholder as requestorId; use only media session presence for those rows. Internal and other tickets use member presence (...

kamo·5mo ago
Otherkamo-internal

Pipe sip.js init steps to server log via beacon

The browser-side SDK init failure is currently invisible — the popup just says "Phone SDK failed to initialize" with no message, the WebSocket never opens, and ...

kamo·5mo ago
Fixkamo-internal

Globe uses media session presence for marketing visitors

Request public-chat session GUIDs in presence snapshot; treat online if either session or requestor member is connected. Handle snapshot envelope and sessionGui...

kamo·5mo ago
Refactorkamo-internal

Ticket requestor presence via WebSocket only

kamo·5mo ago
Otherkamo-internal

Surface SIP.js init/transport errors to browser console

Empty "Phone SDK failed to initialize" messages were hiding the actual failure from sip.js. Turn on logBuiltinEnabled so the library writes its transport / regi...

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