KamoCRM

Live Change Log

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

18,872
Total Changes
6,815
Features
5,696
Fixes
30
Projects
Filter by project
All Projects18,872AIService287APIService179BillingService166ConversionService121DaemonService152DocsService275ESigService103EmailService651InitializerService350KBService163KlusterServices778MCPGatewayService280MediaService629RAGService79SecurityService2,060TranslateService62VOIPService266VectorService11kamo-apps29kamo-asterisk-support29kamo-capcha17kamo-capcha-widget4kamo-internal8,878kamo-login346kamo-marketing642kamo-nowww20kamo-register216kamo-shared-library1,891kamo-signer-monorepo73kamolos115
Filter by type
All TypesBuild23CI528Chore798Docs3,294Feature6,815Fix5,696Other1,007Performance175Refactor286Revert23Style45Test181Upgrade1
April 18, 2026
Fixkamo-register

Redirect to /verification after registration instead of rendering inline

Keeps the URL accurate — browser shows /verification not /member.

Kamo·7mo ago
FixEmailService

Resolve root domain for NoReply from-address instead of bare subdomain

resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...

Kamo·7mo ago
FixSecurityService

Populate all EMAIL_VERIFICATION template variables

Was sending only {token, code} — template also needs orgName, firstName, verifyLink, and expiryMinutes. Load org and user to build the full vars map, and resolv...

Kamo·7mo ago
FixEmailService

Add internal.auth.secret to EmailService configmap

InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...

Kamo·7mo ago
FixEmailService

Allow transactional send on port-25 relay and auto-seed missing templates

Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...

Kamo·7mo ago
FixSecurityService

Use subdomain-aware SQL to match findByDomain JPQL logic

Org domain lookup in resendVerification was doing an exact-match query that failed for subdomains stored as child records (e.g. 'api' with parent 'kamocrm.com')...

Kamo·7mo ago
Fixkamo-login

Set Host/X-Forwarded-Host so APIService resolves correct org

APIService overwrites X-Forwarded-Host with request.getServerName(), which reads from the Host header. Without an explicit Host header the K8s internal service ...

Kamo·7mo ago
FixSecurityService

Correct EmailService URL port in configmap (4203 -> 80)

EmailService K8s service exposes port 80, not 4203. Verification emails were timing out on every registration attempt.

Kamo·7mo ago
FixSecurityService

Bypass JPA org lookup to avoid Hibernate cascade flush error

**************** triggers **************** which causes a Hibernate auto-flush. That flush fails because Organization.features was previously replaced with a pl...

Kamo·7mo ago
Fixkamo-shared-library

Mutate features collection in-place to avoid cascade orphanRemoval error

Calling org.setFeatures(newList) replaces the Hibernate-tracked persistent collection, causing JpaSystemException when any query triggers auto-flush in an open ...

Kamo·7mo ago
FixSecurityService

Use getReferenceById to avoid cascade orphanRemoval flush error on registration

Loading Organization via findById inside @Transactional caused Hibernate to detect the features collection was de-referenced during auto-flush, throwing JpaSyst...

Kamo·7mo ago
Fixkamo-login

Resend verification using email not userId, forward X-Forwarded-Host

SecurityService /register/resend-verification expects email in the body, not userId (which the login error response never includes). Also forward X-Forwarded-Ho...

Kamo·7mo ago
FixEmailService

Add dao.repositories to JPA scan so EmailTemplateRepository is found

Same pattern as KamoInitializerService — explicit basePackages overrides default scanning and must include every package that has repositories.

Kamo·7mo ago
Fixkamo-register

Pass upstream error body through security proxy instead of generic message

Previously returned {error: "Upstream error"} on non-2xx, losing the real error message from SecurityService. Now forwards status code and body directly.

Kamo·7mo ago
FixSecurityService

Align registration field names and response shape with frontend contract

Frontend sends nameFirst/nameLast but controller read firstName/lastName, causing 400 "First name is required". Success response now returns {status, userId, al...

Kamo·7mo ago
Fixkamo-register

Prevent stale ageReqType cache from showing age check incorrectly

- Org route: reduce Redis TTL from 24h to 5min and add ageReqTypeMember to stale detection so security fields stay fresh after DB changes - RegisterFlow: defa...

Kamo·7mo ago
FixSecurityService

Add SecurityService and dao.repositories to EnableJpaRepositories scan

UserPhoneLookupRepository in recovery package was not picked up because EnableJpaRepositories only listed dao.repos and commerce. Added the SecurityService base...

Kamo·7mo ago
Fixkamo-register

Set browser tab title to 'Register - {org name}'

DynamicMetaLoader now calls useThemeConfig and updates document.title to 'Register - {org.title}' once the org loads. Static fallback in layout.tsx changed from...

Kamo·7mo ago
Fixkamo-marketing

Update all register links to /member path

Kamo·7mo ago
Fixkamo-register

Resolve TS errors from steps used before declaration and Capcha style cast

Move **************** useMemos above the useEffects that depend on them; import CSSVariables type and use it for the Capcha-widget style prop.

Kamo·7mo ago
FixInitializerService

Add dao.repositories to EnableJpaRepositories scan

EmailTemplateRepository lives under dao.repositories.email, not dao.repos, so it was not picked up as a Spring bean.

Kamo·7mo ago
Fixkamo-shared-library

Add DEFAULT false to email_verified column definition

Hibernate's schema migrator generates ALTER TABLE without a default, failing on tables with existing rows. columnDefinition forces it to include DEFAULT false s...

Kamo·7mo ago
FixESigService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixTranslateService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixRAGService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixMediaService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixMCPGatewayService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixKBService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixEmailService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixDocsService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixDaemonService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixConversionService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixBillingService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixAIService

Bump kamo-shared-library to 1.4.0

Kamo·7mo ago
FixSecurityService

Resolve duplicate emailTemplateServiceClient bean conflict

**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...

Kamo·7mo ago
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·7mo ago
Fixkamo-register

Apply SP6 correctness and implementation quality fixes

C1: use NEXT_PUBLIC_H***_SITE_KEY env var instead of hardcoded placeholder C2: change RegisterResponse.userId and all API params from number to string (Cockroac...

Kamo·7mo ago
FixSecurityService

Address 4 code-review findings in registration and login paths

- Hide raw exception message in /register 500 path; log instead - Fail-closed (503) on email-verified DB check failure in login - verifyEmailToken throws if use...

Kamo·7mo ago
FixSecurityService

Append Z to dateCommitted so JS parses it as UTC

LocalDateTime.toString() produces no timezone designator, causing JavaScript's new Date() to treat the UTC value as local time and display timestamps 7-8 hours ...

Kamo·7mo ago
FixSecurityService

Convert PT midnight cutoff to UTC for today-count query

Commits are stored in UTC but the cutoff was a naive LocalDateTime in PT, causing yesterday-evening PT commits (00:00–06:59 UTC) to be counted as today.

Kamo·7mo ago
FixEmailService

Rename mailboxId→id and providerStatus→status in mailbox list response

Align field names with frontend expectations for member mailbox listings.

Kamo·7mo ago
Fixkamo-marketing

Replace all CSS-filter logo instances with white SVG

Navigation, SubNavigation, Footer, SubFooter, and Preloader all used the same broken filter brightness-0 invert pattern. Replaced with logo-full-white.svg acros...

Kamo·7mo ago
Fixkamo-marketing

Use white SVG logo in footer instead of CSS filter

Same fix as the nav — CSS filter on img inside backdrop-filter is unreliable on iOS Safari.

Kamo·7mo ago
Fixkamo-marketing

Guard color-scheme with !important against theme CSS override

DynamicMetaLoader can inject remote CSS that wins the cascade. Adding !important ensures color-scheme: dark can never be overridden by theme stylesheets.

Kamo·7mo ago
Fixkamo-marketing

Exclude footer and nav links from TouchOptimized min-height enforcement

TouchOptimized was setting minHeight:44px on all <a> elements shorter than 44px, including footer nav links (~20px tall). This ran during hydration on hard refr...

Kamo·7mo ago
Fixkamo-marketing

Use pre-rendered white SVG logo instead of CSS filter

CSS filter on img inside backdrop-filter is unreliable on iOS Safari. Generate logo-full-white.svg with all fills set to #ffffff and load it directly — no filte...

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