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

Map external customer address blocks into AccountAddress on pull

Add AdapterAddressMapper helper that converts a JSON address node from any provider into an EmbAddress and attaches it to an Account as a typed AccountAddress (...

Kamo·6mo ago
Featurekamo-internal

/account/new copy-from-lead UX, full name fields, dual phones, address; account-level address management

Frontend: - /account/new: per-section "Copy from Lead" buttons + header "Copy all from Lead" button (when leadId param) - Name section: prefix, first, middle, l...

kamo·6mo ago
FeatureSecurityService

Support nested name/email/phoneNumbers + address management endpoints

- AccountController accepts nested name/email/phoneNumbers JSON on POST/PUT - Initial address on POST creates SHIPPING (and BILLING when useAsBillingToo set), s...

Kamo·6mo ago
Featurekamo-internal

Production-grade History + Voicemail tabs with media-player tool

History tab (SoftphoneHistoryTab.tsx): - Infinite scroll via IntersectionObserver inside the panel's scroll container - Filter chips: All / Inbound / Outbound /...

kamo·6mo ago
FeatureInitializerService

Migration runner for Recording provider-lookup columns + VM archive columns

Adds RECORDINGS.provider_instance_id (UUID) and provider_external_id (VARCHAR(64)) plus the composite idx_recordings_provider_lookup index used by the softphone...

Kamo·6mo ago
FeatureConversionService

Persist providerInstanceId + providerExternalId on Recording at ingest

Threads asterisk-support's X-Phone-Server-Id and X-Asterisk-Unique-Id (already in UnprocessedRecording) onto the new RecordingMetadata fields so call/voicemail ...

Kamo·6mo ago
FeatureDocsService

Add **************** with HTTP Range support

Generic streaming endpoint for audio/video imaging assets, used by the kamo-internal MediaPlayer tool. Reuses ImageService authorization (same as /download/...)...

Kamo·6mo ago
FeatureVOIPService

Recording playback, voicemail archive, paginated voicemail, history enrichment

- New RecordingController with bulk lookup, range-streamed audio for master + per-channel tracks, and metadata for the media-player tool window - CallController...

Kamo·6mo ago
Featurekamo-shared-library

Provider lookup keys on Recording, voicemail archive, MinIO range streaming

- Recording: add providerInstanceId + providerExternalId for joining provider call-history / voicemail rows back to imaging assets - PhoneVoicemail: add isArchi...

Kamo·6mo ago
Featurekamo-internal

Add History tab — paginated audit timeline with search and filters

- LeadHistoryPanel: sticky filter toolbar with debounced search, **************** filters, MUI table with pagination, color-coded event chips, member-name resol...

kamo·6mo ago
FeatureSecurityService

Add GET /{id}/history and /{id}/history/filters endpoints

Paginated, filterable, searchable lead-history endpoint with batch actor loading (no N+1). Filters endpoint returns distinct used fields, all registry fields, d...

Kamo·6mo ago
Featurekamo-shared-library

Add lead-history audit log — entity, registry, service, DTO, LeadService hooks

- LeadHistory entity (UUID PK, plain Long FKs — no FK constraints to allow lead deletion/conversion) - LeadHistoryEventType enum with human-readable labels - Le...

Kamo·6mo ago
Featurekamo-internal

Dynamic member type label in My Account page title

Title now reads "My {Member|Team Member} Account" using the org-configured behavior labels, switching automatically once the member's type is loaded.

kamo·6mo ago
Featurekamo-internal

Move Create Document button into DocManager toolbar

The button was only available on /doc/manager via the actions prop. Moved all logic (state, handler, DOC_TYPES, menu) into DocManager so it appears on every emb...

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

Add international support — Lead country/subdivision/timezone, Org language, CountryType isProvince

- CountryType: add PROVINCE_NAMES set, isProvince(), getSubdivisionLabel() - Organization: add language (LanguageType) field - Lead: add country (CountryType), ...

Kamo·6mo 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·6mo ago
Featurekamo-shared-library

Add ASSIGN_LEADS right (ID 137) under CRM section

Kamo·6mo 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·6mo ago
Featurekamo-asterisk-support

Emit recordedAt + per-file extension in upload manifest

- Watcher: every emitted Recording carries RecordedAt, derived from the EPOCH segment of our managed **************** filename, falling back to file mtime f...

Kamo·6mo ago
FeatureConversionService

Pass Recording metadata to imaging — ffprobe length + manifest parsing

- **************** runs ffprobe -show_entries format=duration on the master Opus/WebM, returns ms. 0 = unknown (not fatal). - **************** now: * runs p...

Kamo·6mo ago
Featurekamo-shared-library

Recording + RecordingExt entities, RecordingImagingService writes them

- New Recording entity (UUID id, IMG_ID, IS_MASTER, IS_VM, EXTENSION, MEMBER_ID, LENGTH, DATE_RECORDED, DATE_CREATED [DB-defaulted via @CreationTimestamp]). ...

Kamo·6mo 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·6mo 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·6mo 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·6mo ago
Featurekamo-marketing

Add Go logo to BUILT WITH banner

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

Add call features API — call forward + auto-answer wired through provider abstraction

- Add CallFeaturesDto and SetCallFeaturesRequest POJOs - Add callForward/autoAnswer flags to ProviderCapabilities - Add default getCallFeatures/setCallFeatures ...

Kamo·6mo ago
Featurekamo-asterisk-support

Initial commit — FreePBX recording uploader (GO)

Watches **************** for finished WAV recordings, groups multi-leg call legs by Asterisk UNIQUEID, and uploads each batch to APIService /api/voip/recordings...

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

System-config recording stats + recording-processing tunables

- GET **************** returns the four counters exposed on the kamo-internal Settings → Platform → Configuration → VoIP/SMS tab (vmPending, callPending, vm...

Kamo·6mo ago
FeatureDaemonService

RecordingProcessorJob + NATS shortcut for fresh uploads

- New Quartz job RecordingProcessorJob ticks every minute, dispatches independent VM and call batches concurrently to ConversionService **************** usi...

Kamo·6mo ago
FeatureConversionService

Recording ingest + FFmpeg processing pipeline

- New **************** endpoint stages multipart uploads forwarded by APIService into MinIO bucket **************** and creates an UnprocessedRecording stag...

Kamo·6mo ago
FeatureAPIService

VoipRecordingUploadController for kamo-asterisk-support uploads

POST /api/voip/recordings/upload accepts multipart bodies from kamo-asterisk-support running on FreePBX hosts. Validates the X-Api-Key has the new VOIP_RECORDIN...

Kamo·6mo ago
Featurekamo-shared-library

UnprocessedRecording staging entity, ImgDat track tracks, recording imaging service

- Fix ImageAssocType ID collision: VM_RECORDING=8, CALL_RECORDING=9 (were both duplicating MY_DOCS at 4). - Add **************** so a master recording can car...

Kamo·6mo ago
Featurekamo-asterisk-support

Initial commit — FreePBX recording uploader (GO)

Watches **************** for finished WAV recordings, groups multi-leg call legs by Asterisk UNIQUEID, and uploads each batch to APIService /api/voip/recordings...

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