KamoCRM

Live Change Log

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

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
April 29, 2026
CISecurityService

Scope concurrency to build jobs, not Kubernetes deploys

Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...

Kamo·5mo ago
FeatureSecurityService

Add AvailabilityPublisher for member status updates

Kamo·5mo ago
FixSecurityService

Allow elevated access on getDomainById and verify-dns endpoints

Top-level org owners and system members were getting 403 on getDomainById and verify-dns because those endpoints checked isUserMemberOfOrg directly. Adds hasEle...

Kamo·5mo ago
April 28, 2026
FixSecurityService

Prevent duplicate root domains and fix primary domain display

ONE_DOMAIN_PER_ORG check incorrectly excluded .kamocrm.com web-alias domains, allowing an org to accumulate multiple root domains (and 10 aliases each) by retry...

Kamo·5mo ago
FixSecurityService

Reduce org creation latency and fix translation cascade failures

- OrganizationController: replace ensureTeamMembersForAllOrgs (full org table scan) with ensureTeamMemberForOrg (single org) — eliminates the ~400ms×N DB ro...

Kamo·5mo ago
FeatureSecurityService

Add bootstrap-billing endpoint for pre-existing orgs

POST **************** triggers the same idempotent setup as the sub-org creation hook (BillingSetupService .setupForSubOrgCreation) but can be called on-demand ...

Kamo·5mo ago
FixSecurityService

Auto-assign first seat, Free as floor, broader org invalidation

BillingSetupService now activates the first open license slot for the creator when seeding a sub-org subscription (and same for promote-to-billing-owner) — othe...

Kamo·5mo ago
FixSecurityService

Top-level org members get platform-owner plan, bypass billing gates

KamoCRM (top-level) org members are not subject to the billing system — they get the OWNER_UNLIMITED plan's feature matrix outright (with Free as a defensive fa...

Kamo·5mo ago
FeatureSecurityService

Auto-provision KamoCRM seat on sub-org creation; promote-billing-owner endpoint

EntitlementService walks SubscriptionMember (not AccountMember) to compute member entitlements — the union of features across active licensee subs, plus the Fre...

Kamo·5mo ago
April 27, 2026
OtherSecurityService

AccountGroup -> AccountTier; endpoints /groups -> /tiers

Account-group endpoints (customer segmentation tiers, not billing) renamed throughout to use "tier" terminology consistently with the shared-lib rename: - /api/...

Kamo·5mo ago
RefactorSecurityService

Drop users/masterAccountHolder, use Account.members + primaryMember

AccountController now reflects the Account-as-group model: - computeDisplayName / extractEmail / extractPhone resolve through the primaryMember (Member) inste...

Kamo·5mo ago
FeatureSecurityService

Persist member language/timezone/currency on signup

The /register endpoint now accepts language, timezone, and defaultCurrency alongside the existing country field. RegistrationService sets country and timezone o...

Kamo·5mo ago
RefactorSecurityService

Move from BillingGroup to Account-based licenses

EntitlementService resolves member entitlements against AccountLicense records owned by the member's billing Account. The MemberEntitlements shape now exposes a...

Kamo·5mo 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·5mo 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·5mo ago
ChoreSecurityService

Trigger redeploy for ASSIGN_LEADS right self-heal

Kamo·5mo ago
RevertSecurityService

Remove VOIP extension backfill from SecurityService

Kamo·6mo ago
OtherSecurityService

Change to configmap to add kamo-asterisk-support

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

Add diagnostic logging to /names endpoint

Log orgId, member count, and per-member name resolution to diagnose why the assigned-member name is not resolving correctly.

Kamo·6mo ago
FixSecurityService

Prioritize real first/last name over usernameAlias for display

usernameAlias is functionally a login handle (often equal to username), not a display name. Real human-readable names live on User.name (EmbNameFull). Apply to ...

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

Resolve display name with correct priority in by-department endpoint

Priority: member.usernameAlias → user.name.formatFull() → user.alias → user.username

Kamo·6mo ago
April 25, 2026
OtherSecurityService

Add logging to uploadBackground endpoint

Log org/index, file info, userId, auth decisions, and MinIO staging key to trace why background uploads are not appearing in staging bucket.

Kamo·6mo ago
ChoreSecurityService

Rebuild to pick up Member JsonIdentityInfo fix from kamo-shared-library

kamo-shared-library b57d156 fixes @JsonIdentityInfo(property = "uniqueId") → "id" on Member, resolving 400 errors on PUT /api/security/org/{id}.

Kamo·6mo ago
FixSecurityService

Remove duplicate CorsFilter bean causing double Access-Control-Allow-Origin header

The explicit CorsFilter bean caused a second CORS filter alongside Spring Security's built-in CORS support (which uses CorsConfigurationSource). Both filters re...

Kamo·6mo ago
FixSecurityService

Allow system user to manage org branding and fix logo auth

- Add system user bypass as first guard in canManageOrgBranding so platform system user has full branding control over all non-parent orgs - Fix uploadLogo en...

Kamo·6mo ago
April 24, 2026
FeatureSecurityService

System-config + platform-overview endpoints

Platform-wide configuration surface, gated by the existing top-level-owner guard (matches SystemUserConfigController's requireTopLevelOwner pattern). Endpoints...

Kamo·6mo ago
FixSecurityService

Surface real reason behind GoDaddy 400 error

GoDaddy now returns HTTP 400 with code=UNABLE_TO_AUTHENTICATE and body "Bad Request : Bad Request" when an account does not meet their current production Domain...

Kamo·6mo ago
FeatureSecurityService

Add GET /api/security/org/all-networks for platform admins

Top-level org owners can now fetch all organizations in the system with membership info relative to the caller. Orgs where the caller has a member record get is...

Kamo·6mo ago
RefactorSecurityService

Drop teamMemberPayFeesSetting parameter

Mirrors the shared-library change — SecurityModelController, MasterModelController, and AppliedModelController no longer read/write teamMemberPayFeesSetting. Th...

Kamo·6mo ago
FixSecurityService

Eager-load domains via findByIdWithDomains, drop @Transactional

@Transactional on a controller method keeps a DB connection open across the entire MinIO upload, and also risks LazyInitializationException if the inner getOrga...

Kamo·6mo ago
FeatureSecurityService

Alias visibility filtering + auto-verify subdomain ownership

OrganizationController: - Web-alias org creation now auto-marks ownershipVerified=true and isDnsVerified=true on the created OrgDomain — no TXT record needed ...

Kamo·6mo ago
FixSecurityService

Upload directly to public/{domain-folder}/img/ instead of staging bucket

The uploadLogo endpoint was writing to a hardcoded 'sumtingwong' placeholder (unfilled setting) instead of the org's actual public theme path. Logos now go dire...

Kamo·6mo ago
FixSecurityService

Remove downed k2m1 node from edge-nodes default

k2m1 (10.8.2.1) is permanently down. Leaving it in the failover list caused upload retries to hang until the new OkHttp timeout fires. Default is now k1m1-only;...

Kamo·6mo ago
FeatureSecurityService

Org-level config, GoDaddy client, and web-alias org create path

Wires the new Subdomain Branches feature end-to-end on the backend: - SubdomainBranchesController for org-level enable + GoDaddy creds (live-verified) - GoD...

Kamo·6mo ago
RefactorSecurityService

Drop SMS verification for the phone field on signup

The phone number collected during self-service registration is now a plain optional text field — no /register/phone/initiate, no SMS code, no /register/phone/ve...

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