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 11, 2026
FixSecurityService

Serialize imgId as String to prevent JavaScript precision loss

CockroachDB unique_rowid() IDs exceed Number.MAX_SAFE_INTEGER. Changed imgId from Long to String in UploadDocumentResponse and DocumentMetadata DTOs so Jackson ...

Kamo·7mo ago
FixSecurityService

Download converted PDF from MinIO instead of original file

The converted-pdf endpoint was calling imageService.downloadDocument() which returns the original file. Now downloads directly from MinIO using the convertedDat...

Kamo·7mo ago
April 4, 2026
FixSecurityService

Add internal auth secret for public catalog API proxy

Add **************** to the SecurityService deployment so the APIService can authenticate when proxying public subscription catalog and promotions requests.

Kamo·7mo ago
April 3, 2026
FixSecurityService

Pass includeInactive=true default for agreement templates endpoint

Templates management UI needs to see inactive templates too.

Kamo·7mo ago
FixSecurityService

Add missing vendor-categories endpoints to CommerceMarketController

GET/POST/PUT/DELETE /{marketId}/vendor-categories were missing, causing 404 when the Vendors tab tried to load categories.

Kamo·7mo ago
April 2, 2026
April 1, 2026
March 30, 2026
FixSecurityService

Query avatar_photos extension via SQL instead of Hibernate proxy

avatarRepository.findById() returns a Hibernate proxy (Avatar$HibernateProxy) that fails instanceof AvatarPhoto check. This caused the file extension to always ...

Kamo·7mo ago
FixSecurityService

Store full avatar relative path in session instead of bare file hash

The login SQL now also fetches avatar_type and file_extension from avatar_photos so the session stores a complete relative path like **************** or *******...

Kamo·7mo ago
March 27, 2026
FixSecurityService

Auto-provision completed-stage app features in org domain endpoint

Moves auto-provisioning from the FeatureController (only hit from the apps settings page) to the SecurityController org domain endpoint (hit on every page load ...

Kamo·7mo ago
FixSecurityService

Auto-provision missing completed-stage app features for existing orgs

When listing features, the controller now checks for missing OrgFeature rows for COMPLETED-stage apps and creates them. This ensures orgs created before new app...

Kamo·7mo ago
FixSecurityService

Catch all exceptions in FeatureController enable/disable endpoints

Prevents uncaught RuntimeExceptions from becoming opaque 500 errors. Now returns structured error messages for any failure.

Kamo·7mo ago
March 26, 2026
FixSecurityService

Prevent duplicate apps in features list by excluding all existing types

The available list was only excluding features with enabled=true, so a disabled feature (isActive=false) appeared in both the features array AND the available a...

Kamo·7mo ago
March 24, 2026
FixSecurityService

Recalculate member_rights_applied after role create/update/delete

The member_rights_applied table was never recalculated when roles were modified, causing all members to have 0 applied rights. Now calls **************** after ...

Kamo·7mo ago
March 23, 2026
FixSecurityService

Transparent server-side encryption with stable master key

- Add permanent notes.master-encryption-key to ConfigMap (was generating a random key on each pod restart, making old notes undecryptable) - Always encrypt ...

Kamo·7mo ago
FixSecurityService

Clear undecryptable note content and disable encryption flag

When server-side decryption fails (corrupted data or key mismatch), clear the content and set isEncrypted=false on the entity so the note stops showing cipherte...

Kamo·7mo ago
FixSecurityService

Decrypt encrypted notes in getAllNotes and searchNotes responses

getAllNotes and searchNotes were returning raw encrypted content for notes with isEncrypted=true. Now decrypts content server-side before returning, matching th...

Kamo·7mo ago
FixSecurityService

Use OTKPreAuthFilter attributes instead of re-validating OTK in NotesController

The OTKPreAuthFilter already consumes and validates the OTK, storing the session data in request attributes. NotesController was trying to re-validate the alrea...

Kamo·7mo ago
March 22, 2026
FixSecurityService

Remove GD check from ****************

The sed command that added the god-mode bypass incorrectly inserted it into all methods containing sessionData, not just hasRight. This caused 'return true' (bo...

Kamo·7mo ago
FixSecurityService

Allow god-eligible users to bypass access security permission checks

New rights (MANAGE_ACCESS_RULES, VIEW_ACCESS_LOGS, etc.) aren't granted to any existing role yet, so all users get Forbidden. God-eligible users (GD=true in ses...

Kamo·7mo ago
March 20, 2026
FixSecurityService

Resolve remaining Long/UUID type mismatches in controllers and beans

Fixes LeadVendorController, LeadMarketController, LeadImportController, ImagingController, AccountController, MediaStreamController, POSController, MemberContro...

Kamo·7mo ago
March 17, 2026
FixSecurityService

COALESCE type mismatch on security_level — column is varchar not int

The SQL query for user details during session creation was failing with 'incompatible COALESCE expressions: expected 0 to be of type varchar' because **********...

Kamo·7mo ago
March 16, 2026
March 13, 2026
FixSecurityService

Add auth check and sanitize input on POST /org

- Return 401 if no authenticated user (prevents orphan orgs) - Build Organization from allowed fields only (prevents mass-assignment) - Fix colors field name (w...

Kamo·8mo ago
FixSecurityService

Include member title labels and shortTitle in org domain response

The /org/domain/{domain} endpoint was missing memberTitlePlural, memberTitleNonPlural, teamMemberTitlePlural, teamMemberTitleNonPlural, and shortTitle fields fr...

Kamo·8mo ago
March 12, 2026
FixSecurityService

Move loginOrgOpt declaration outside try block to fix scope error

The variable was declared inside the first try block but referenced in the second try block for parent branch title resolution.

Kamo·8mo ago
March 11, 2026
FixSecurityService

Add kamo.commerce.enabled=true to k8s configmap

This is the file the CI pipeline actually applies (k8s/configmap.yaml). Required for CommerceService and EngagementLifecycle to load under the new @ConditionalO...

Kamo·8mo ago
FixSecurityService

Add KAMO_COMMERCE_ENABLED=true to k8s configmap

Required for CommerceService and EngagementLifecycle to load now that they use @ConditionalOnProperty instead of @ConditionalOnBean.

Kamo·8mo ago
FixSecurityService

Enable commerce beans via kamo.commerce.enabled property

CommerceService and EngagementLifecycle now use @ConditionalOnProperty instead of @ConditionalOnBean. Set kamo.commerce.enabled=true so they load in SecuritySer...

Kamo·8mo ago
March 10, 2026
FixSecurityService

Save sessionTimeoutMinutes on member update

Kamo·8mo ago
March 9, 2026
FixSecurityService

Remove duplicate session timeout system from Redis records

Session expiry is now managed solely by the Redis key TTL. The internal createdAt/expiresIn fields stored inside the Redis value have been removed — they formed...

Kamo·8mo ago
February 12, 2026
FixSecurityService

Enable commerce JPA repos for POSController/CommerceService

SecurityService POSController depends on CommerceService which uses engagement, order, intent, etc. repositories. These live in com.kamo.z.shared.commerce.* but...

Kamo·9mo ago
February 11, 2026
FixSecurityService

Resolve Map type inference in POS controllers for CI compilation

- Use explicit Map<String, Object> in ResponseEntity Map.of() calls - Fixes 'incompatible types: inference variable V has incompatible bounds' when mixing DTO...

Kamo·9mo ago
February 3, 2026
December 17, 2025
FixSecurityService

Update NATS and MinIO configuration to use new VPN IPs

- Update NATS URLs from old Tailscale IPs (100.64.x.x) to Kubernetes service DNS - Update MinIO IPs from old Tailscale IPs to new VPN IPs (10.8.x.x) - Fixes NAT...

snadjafinia·10mo ago
December 12, 2025
December 5, 2025
FixSecurityService

Reload market after create/update to initialize lazy collections

- Updated createMarket and updateMarket to reload market using getMarketById - This ensures all lazy collections (marketCustomForms, vendorProducts) are initial...

snadjafinia·11mo ago
FixSecurityService

Correct path handling for mortgage fields and custom form data in lead imports

- Fixed mortgage fields to use 2-part paths (mortgageFields.loanAmount) in setNestedFieldOnCreateRequest - Fixed custom form data to use 3-part paths **********...

snadjafinia·11mo ago
FixSecurityService

Make email/username login case-insensitive

- Normalize input username/email to lowercase before comparison - Use LOWER() function on database column for case-insensitive matching - Fixes issue where user...

snadjafinia·11mo ago
December 3, 2025
FixSecurityService

Cast getOrDefault to Boolean in formatEmail method

- Fix compilation error: incompatible types Object to boolean - Add explicit Boolean cast for toLowerCase and trim config options

snadjafinia·11mo ago
November 29, 2025
November 28, 2025

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