KamoCRM

Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

April 18, 2026
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·17h ago
CISecurityService

Rebuild to pick up getOrganizationByDomain simplification

Kamo·17h ago
Refactorkamo-shared-library

Remove eager feature-loading from getOrganizationByDomain

Features are an org-level concern unrelated to most callers of this method (e.g. registration, login domain resolution). Force-loading them via setFeatures() re...

Kamo·17h ago
CISecurityService

Rebuild to pick up kamo-shared-library OrganizationService fix

Kamo·17h 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·17h 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·17h 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·17h ago
Featurekamo-register

Match kamo-internal avatar storage — 3 sizes, MinIO, separate upload step

Crop dialog now produces three PNG blobs (50/150/350px) via canvas, identical to kamo-internal's AvatarManager. After registration returns userId, the blobs are...

Kamo·17h ago
FeatureSecurityService

Add register-photo endpoint for unauthenticated post-registration avatar upload

POST **************** accepts userId + file/fileSm/fileMd/fileLg without a session. Guards: user must be unverified and have no avatar yet, preventing abuse aga...

Kamo·17h ago
Featurekamo-login

Replace EMAIL_NOT_VERIFIED error with rich verification card

When login fails with EMAIL_NOT_VERIFIED the login card is now replaced by a polished "Check your inbox" screen: animated envelope SVG with opening flap and flo...

Kamo·17h ago
Featurekamo-register

Extend photo upload to support AVIF and SVG formats

Adds image/avif and image/svg+xml to the file input accept list and validation regex. Updates the hint label to list all six formats. kamo-internal already acce...

Kamo·18h ago
Featurekamo-register

Add react-easy-crop photo editor to registration upload step

Mirrors the PhotoCropDialog from kamo-internal's AvatarManager: - crop dialog opens immediately after file selection - pan by dragging, zoom via scroll or slide...

Kamo·18h 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·18h 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·18h 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·18h ago
Refactorkamo-register

Replace Redis session caching with direct Java API fetch in org route

Kamo·18h 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·18h 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·18h 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·18h ago
Fixkamo-marketing

Update all register links to /member path

Kamo·18h ago
Featurekamo-register

Add /api/geoip route and wire country auto-detection

Proxies client IP to SecurityService GeoLite2 lookup, then sets the detected country in FormMyCountry automatically on page load.

Kamo·18h ago
FeatureSecurityService

Add GET /api/security/geoip/me for client IP country lookup

Reads real client IP from X-Forwarded-For / X-Real-IP headers, does a GeoLite2 lookup, and returns { country_code, country_name }. Used by kamo-register's count...

Kamo·18h ago
Chorekamo-register

Add CAPCHA_SERVICE_URL to k8s configmap

Kamo·19h 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·19h 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·19h ago
Chorekamo-register

Remove h*** env var, delete unused capchta demo component

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

Correct Capcha listener cleanup and reset verified state on step exit

Kamo·19h ago
FixESigService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixTranslateService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixRAGService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixMediaService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixMCPGatewayService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixKBService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixEmailService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixDocsService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixDaemonService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixConversionService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixBillingService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
FixAIService

Bump kamo-shared-library to 1.4.0

Kamo·19h ago
Fixkamo-shared-library

Restore DocumentNotFoundException dropped between 1.0.0 and 1.4.0

Kamo·19h ago
Featurekamo-register

Replace h*** with kamo-capcha-widget inline in Finish step

Kamo·19h ago
Featurekamo-register

Add /api/capcha/challenge proxy route

Kamo·19h 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·19h 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·19h 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·19h ago
Featurekamo-register

SP6 register wizard refactor — split PersonalInfo, add real registration API

- Replace FormPersonalInfo with FormName (name fields) and FormAvatar (Avatar Creator generator with generate/upload/skip modes for 13+) - Delete FormRecoveryEn...

Kamo·19h ago
FeatureInitializerService

SP5 migrate KamoCRM agereq to ALL_WORK_ELIGIBLE

Add KamoCRMAgeReqUpdateRunner (order 10) — conditional idempotent UPDATE on startup; WHERE clause checks old value so re-runs are no-ops. Errors are swallowed s...

Kamo·20h 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·20h ago
FeatureSecurityService

Implement SP4 email verification and registration wiring

- Delete legacy email/VerificationEmail.java (hardcoded SMTP stub) - Add **************** (mirrors recovery package pattern) - Add **************** — token gene...

Kamo·20h ago
Live Change Log | KamoCRM | KamoCRM