KamoCRM

Live Change Log

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

18,399
Total Changes
6,534
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,399AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService621InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,996TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,694kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,826kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,534Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
April 27, 2026
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
FeatureSecurityService

Explicit team status + name prefix/suffix catalogs

- GET **************** now returns namePrefixes and nameSuffixes, sourced from NamePrefixType and NameSuffixType so the Add Member / Add Team Member forms d...

Kamo·6mo ago
FeatureSecurityService

Make email + legal name optional for under-13 signups

The /api/security/register endpoint previously rejected any request missing email, first name, or last name. That made the under-13 path (KIDS_ONLY orgs, or ALL...

Kamo·6mo ago
FixSecurityService

Extend OTK TTL for enter-as validate hand-off

Kamo·6mo ago
April 23, 2026
FixSecurityService

Enforce /network enter rules server-side

Reject when target is current session org, custom domain SSL is not confirmed, or human target membership is inactive. Share domain-setup logic with my-networks...

Kamo·6mo ago
FixSecurityService

Require destination memberId and validate org membership

Enter-as now always builds the new *** with the client-supplied target member row; reject mismatched org/member. Improve session debug logging.

Kamo·6mo ago
RefactorSecurityService

Share PostAuth***Service between login and enter-as

Extract the post-authentication *** build (grant-all expansion, profile SQL, branch titles, createSession) into PostAuth***Service so enter-as uses the same cod...

Kamo·6mo ago
FixSecurityService

Enter-as session uses target org security provider and optional targetMemberId

Enter-as was setting Redis securityOrgId from the user global security_provider, while login sets it from the target org FQDN chain. That mismatch made cross-do...

Kamo·6mo ago
FixSecurityService

Resolve system-user session from OTK for BFF requests

SystemUserConfigController and SystemUserCapabilityController only read the *** cookie. kamo-internal forwards X-OTK without cookies, so SecurityService never s...

Kamo·6mo ago
FixSecurityService

Enter-as resolves session from X-OTK BFF auth

EnterAsController only read *** cookies; internal traffic uses OTKPreAuthFilter session attributes. Accept targetOrgId as string for large INT8 ids from JSON.

Kamo·6mo ago
FeatureSecurityService

Backfill, enter-as flow, mutation guards, config API

Self-heal provisioning: SystemUserBackfillService runs on every SecurityService boot (from DataLoader) to add the is_system_user column and system_user_access t...

Kamo·6mo ago
FeatureSecurityService

Collect phone + security questions during signup

Move phone-number and security-question collection into the self-service registration flow (where they were originally intended) rather than requiring a post-si...

Kamo·6mo ago
FeatureSecurityService

Add Member / Add Team Member creation flow

- New MemberCreateController exposes: * GET **************** — age-req, timezone, departments, job titles * GET **************** — debounced existence che...

Kamo·6mo ago
FeatureSecurityService

Add EntitlementService + SecurityModel commerce markets

- EntitlementService computes per-member feature grants by unioning active BillingGroupLicense plan features + KamoCRM Free-tier baseline. Caches 15-minute ...

Kamo·6mo ago
FixSecurityService

Return only team members from by-department endpoint

Interaction Center should list TeamMember rows, not base Member records.

Kamo·6mo ago
FeatureSecurityService

Interaction Center member line uses job titles

Replace RBAC role title with jobTitleOfficial, fallback to JobTitle catalog title for TeamMember, and the label Member for base Member records in the by-departm...

Kamo·6mo ago
FixSecurityService

Apply subscription gate to app routes and feature API

AppAvailabilityInterceptor now always uses isAppEffectivelyEnabled so FORCE_ENABLED respects subscription. FeatureController serializes enabled from the same ga...

Kamo·6mo ago
April 22, 2026
FixSecurityService

Harden default template copy for org provisioning

Use explicit source prefix for destination keys, skip S3 folder markers, and fail fast when the template prefix is empty so silent partial copies do not reach g...

Kamo·6mo ago
FixSecurityService

Include teamMember owner flag in *** for platform admin UI

Store teamMember { memberId, isOrganizationOwner } in Redis session at login so kamo-internal hasPlatformAdminAccess can satisfy the top-level org owner path. E...

Kamo·6mo ago
April 21, 2026
FixSecurityService

Drop mail from required DNS CNAME aliases

Remove mail from KnownAliases so verify-dns and onboarding no longer require mail.example.com; new custom domains also skip auto-creating the mail child alias.

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