KamoCRM

Live Change Log

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

18,392
Total Changes
6,527
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,392AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService619InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,995TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,692kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,824kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,527Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
April 27, 2026
FixVOIPService

Capture newExtNumber as final for lambda capture in MemberVoipConfigController

newExtNumber is conditionally reassigned inside the if (isVoipEnabled && ...) block, which makes it not effectively final. The TeamMember sync block reads it fr...

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
April 26, 2026
FixVOIPService

Don't wipe member assignment on sync from providers that lack metadata

**************** unconditionally overwrote PhoneExtension.assignedMemberId with whatever the provider returned. FreePBX (and any provider that doesn't track whi...

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
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
FixVOIPService

Use extensionId as external ID, not Relay node id

FreePBX returns the same Relay id (ZXh0ZW5zaW9uOg== = "extension:") for every extension because the id field is not populated. Using it caused all extensions to...

Kamo·6mo ago
FixVOIPService

Rewrite all GQL queries/mutations against live schema introspection

Verified every field name and type against the actual FreePBX 17 schema. Full set of corrections: Queries: - fetchAllExtensions: remove non-existent 'voicemail...

Kamo·6mo ago
FixVOIPService

Correct GraphQL field name to fetchAsteriskDetails

FreePBX API returns "Did you mean fetchAsteriskDetails?" — rename the health check query and its data path accessor accordingly.

Kamo·6mo ago
FixVOIPService

Add XHR/Accept headers and String response parsing to GraphQL client

Same pattern as FreePBXTokenCache: add X-Requested-With + Accept: application/json to suppress FreePBX's HTML redirect responses, and switch all three call site...

Kamo·6mo ago
FixVOIPService

Add Accept+XHR headers and raw-string response parsing for token endpoint

FreePBX was returning text/html when called via cluster DNS because the Host header didn't match the configured PBX_HOSTNAME. Adding Accept: application/json an...

Kamo·6mo ago
FixVOIPService

Correct OAuth2 scope strings for FreePBX API

FreePBX scopes are top-level identifiers: 'gql' (all GraphQL) and 'rest' (all REST). The format 'gql:read' means GQL for a module named 'read', which doesn't ex...

Kamo·6mo ago
April 24, 2026
ChoreVOIPService

Drop stray VOIPService spec md from repo

Per project convention (.md files don't ship with services).

Kamo·6mo ago
FixVOIPService

Include com.kamo.z.shared.commerce in repository scan

Latest kamo-shared-library propagates **************** (donotmodify.dao.services) which has a constructor dependency on **************** **************** The se...

Kamo·6mo ago
FeatureVOIPService

Per-instance resource controllers + org aggregate + internal sync

Per-instance resource CRUD (extensions / users / devices / voicemail): - VoipExtensionsController at **************** - VoipUsersController at /api/voip/instanc...

Kamo·6mo ago
FeatureVOIPService

Multi-instance provider refactor + full FreePBX + Flowroute SMS

Core model change: one org → many VoipProviderInstances (was: one per org). Every provider API call is now instance-scoped. PhoneProvider interface: - New meth...

Kamo·6mo ago
April 21, 2026
April 20, 2026
April 19, 2026
ChoreVOIPService

Rebuild for kamo-shared-library update (CREATE_CHILD_ORG right + apply-to flags)

Pulls the new RoleRightType.CREATE_CHILD_ORG (id 131), the three apply-to flags on ChildOrgSecurityModel, the two 13-arg service overloads, and the AppliedModel...

Kamo·6mo ago
ChoreVOIPService

Rebuild for kamo-shared-library update (appConfig upsert-only fix)

Pulls the hardened **************** that no longer deletes appConfig rows whose service types are absent from the caller's payload — prevents silent data loss w...

Kamo·6mo ago
ChoreVOIPService

Rebuild for kamo-shared-library update (effective-feature resolver)

Picks up the new AppliedModelEnforcementService methods (computeAvailabilitiesMap, isAppEffectivelyEnabled, getEffectivelyEnabledAppTypes, computeEffectiveFeatu...

Kamo·6mo ago
ChoreVOIPService

Bump kamo-shared-library to 1.5.0 for applied-model enforcement

Brings this service onto kamo-shared-library 1.5.0 so it picks up the new AppliedModelEnforcementService, ChildOrgSecurityModelAppConfig entity, ServiceAvailabi...

Kamo·6mo ago
ChoreVOIPService

Rebuild for kamo-shared-library update (runtime force rules + DEFAULT fallback in MemberRightsAppliedService)

Triggers a rebuild so this service picks up the updated **************** that applies template force rules and DEFAULT-template fallbacks on top of the existing...

Kamo·6mo ago
ChoreVOIPService

Rebuild for kamo-shared-library update (master model, default role templates, force-rule resolver)

Triggers a rebuild so this service pulls the new kamo-shared-library revision containing Organization.branchTypeID, Organization.masterModelID, ****************...

Kamo·6mo ago
April 18, 2026
FixVOIPService

Bump kamo-shared-library to 1.4.0

Docker Stage 1 builds kamo-shared-library main (now 1.4.0) and installs it to the local .m2; the service pom still referenced 1.0.0 which Maven could not find, ...

Kamo·6mo ago
March 24, 2026
CIVOIPService

Rebuild with latest kamo-shared-library

Kamo·7mo ago
March 20, 2026
FeatureVOIPService

Add BulkTextProviderFactory with tests

Kamo·7mo ago
FeatureVOIPService

Add MMS attachment support — multipart send, base64 storage, image display

- RingCentralProvider: override sendSms with multipart/form-data MMS path - VoipMessageService: accept attachment bytes, store base64 data URL in attachmentUrl ...

Kamo·7mo ago
FixVOIPService

Explicitly stringify Long IDs in SmsController responses

**************** Long-as-string approach was not taking effect. Directly call .toString() on all Long IDs in the controller flat-map responses to guarantee no J...

Kamo·7mo ago
March 19, 2026
FixVOIPService

Serialize Long IDs as strings to prevent JS precision loss

CockroachDB unique_rowid() generates 64-bit integers larger than Number.MAX_SAFE_INTEGER (2^53-1). JS JSON.parse silently rounds them, causing conversation ID m...

Kamo·7mo ago
FixVOIPService

Return flat map from send endpoint to prevent LazyInitializationException

VoipMessage.conversation is FetchType.LAZY; after @Transactional commits, Jackson serializing the entity would throw LazyInitializationException causing a 500, ...

Kamo·7mo ago
FixVOIPService

Fall back to org mainPhoneNumber when member has no VOIP config

Members without an individual MemberVoipConfig (or no fromPhoneNumber set) now use the org's mainPhoneNumber from VoipProviderConfig as the outbound number, ins...

Kamo·7mo ago
FixVOIPService

Remove getJwtKey() from WebhookController after OAuth migration

Signature validation used jwtKey as HMAC secret which no longer exists on VoipProviderConfig. Skip validation for now consistent with ****************

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