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
December 5, 2025
Fixkamo-internal

Use passed systemFields for field mapping interface grouping

- FieldMappingInterface: Fixed getSystemFieldsByCategory to use passed-in systemFields prop instead of default BASE_SYSTEM_FIELDS - FieldMappingInterface: Added...

snadjafinia·10mo 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·10mo ago
Fixkamo-shared-library

Add eager loading for repository queries to fix lazy loading issues

- CustomFormRepository: Added LEFT JOIN FETCH for stacks and fields in findByIdAndOrganizationId - LeadMarketRepository: Added LEFT JOIN FETCH for marketCustomF...

snadjafinia·10mo 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·10mo ago
Fixkamo-internal

Reset state on market data load failure to prevent stale data

- Added state reset in else block when response.ok is false - Ensures selectedMarketConfig and customFields are cleared on failed market load - Maintains consis...

snadjafinia·10mo ago
Chorekamo-internal

Minor whitespace cleanup

snadjafinia·10mo ago
Fixkamo-internal

Fix syntax error and add debug logging for market field loading

- Fixed syntax error in complex type assertion by breaking into proper interfaces - Added debug logging to track market data, salesSubType, and custom form load...

snadjafinia·10mo ago
Fixkamo-internal

Use salesSubType for mortgage field detection in manual import

- Updated LeadMarket interface to match DTO structure (customForms only has basic info initially) - Fixed comment to clarify salesSubType is used for mortgage d...

snadjafinia·10mo ago
Featurekamo-shared-library

Add salesSubType field to LeadMarketDTO for mortgage field detection

- Added salesSubType field to distinguish between parent SaleType and sub-types - When SaleType has a parent (e.g., RESIDENTIAL_MORTGAGE), salesType becomes the...

snadjafinia·10mo ago
OtherKlusterServices

Add complete Kamo logo SVG with all 14 paths

Embed full SVG content directly instead of partial paths

snadjafinia·10mo ago
OtherKlusterServices

Use CSS-only approach for Kamo logo

Removed broken SVG file mount, using CSS background-image to load external logo directly on #logo element

snadjafinia·10mo ago
OtherKlusterServices

Fix logo.svg to reference external Kamo logo URL

Use SVG image element to embed external logo instead of complex paths with broken transforms

snadjafinia·10mo ago
OtherKlusterServices

Replace Roundcube logo.svg with Kamo logo SVG

Mount custom logo.svg to **************** to replace the Roundcube watermark/background logo

snadjafinia·10mo ago
OtherKlusterServices

Add custom CSS file to override Roundcube watermark logo

- Created custom.css with watermark override - Mount CSS file to /var/www/html/custom.css - Configure Roundcube to load additional_stylesheets

snadjafinia·10mo ago
OtherKlusterServices

Replace all Roundcube logos with Kamo logo including watermark

Updated skin_logo config to array format to cover: - Main header logo - Small collapsed header logo - Inbox watermark/background logo

snadjafinia·10mo ago
OtherKlusterServices

Add mail subdomain to auto-cert SUBDOMAINS list

Enables automatic SSL certificate creation for mail.kamocrm.com

snadjafinia·10mo ago
OtherKlusterServices

Expose Postfix ports 25 and 587 via hostPort for inbound mail

Required for receiving external SMTP connections on K1M1

snadjafinia·10mo ago
Featurekamo-internal

Add missing Next.js API routes for leads endpoints

- Added /api/security/leads route for GET (all leads) and POST (create lead) - Added /api/security/leads/[id] route for GET, PUT, DELETE operations - Added ****...

snadjafinia·10mo ago
OtherKlusterServices

Configure Roundcube to use Mailgun SMTP directly

Bypassing local Postfix for outgoing mail, connecting directly to smtp.mailgun.org with TLS on port 587

snadjafinia·10mo ago
OtherKlusterServices

Switch Postfix to Alpine-based deployment with MySQL support

Similar to Dovecot, using Alpine 3.18 with postfix-mysql package installed at runtime for reliable MySQL virtual maps support

snadjafinia·10mo ago
OtherKlusterServices

Fix postfix command to use apt-get instead of apk

boky/postfix is Debian-based, not Alpine

snadjafinia·10mo ago
OtherKlusterServices

Add postfix-mysql support for MySQL virtual maps

Installed postfix-mysql package at container startup to enable MySQL dictionary lookups for virtual domains/users/aliases

snadjafinia·10mo ago
OtherKlusterServices

Add auth debugging and ensure MySQL driver packages for Dovecot

- Enable auth_debug, auth_debug_passwords, auth_verbose - Add dovecot-mysql package for proper SQL support - Add mariadb-connector-c for MySQL protocol compatib...

snadjafinia·10mo ago
OtherKlusterServices

Add MySQL auth fix job for MariaDB client compatibility

Changes kamo user from caching_sha2_password to mysql_native_password Required for Dovecot (Alpine/MariaDB) to connect to MySQL 8

snadjafinia·10mo ago
OtherKlusterServices

Replace Roundcube logo with Kamo logo

Added skin_logo config pointing to **************** Updated deployment annotation to trigger pod restart

snadjafinia·10mo ago
OtherKlusterServices

Fix MySQL auth: change kamo user to mysql_native_password

Alpine's MariaDB client doesn't support caching_sha2_password plugin This prevents Dovecot from connecting to MySQL for authentication

snadjafinia·10mo ago
OtherKlusterServices

Force Roundcube pod restart to pick up ConfigMap change

Added annotation to trigger pod recreation since ConfigMap with subPath doesn't auto-update in running pods

snadjafinia·10mo ago
Fixkamo-internal

Remove 'name' property reference in updateLead function

- Lead interface only has 'primaryContact', not 'name' - Removed fallback to patch.name in updateLead - Completes the fix for type safety

snadjafinia·10mo ago
Fixkamo-internal

Remove non-existent 'name' property references in leadsApi

- Lead interface only has 'primaryContact', not 'name' - Removed fallback to leadData.name in createLead and updateLead - Ensures type safety and correct API be...

snadjafinia·10mo ago
OtherKlusterServices

Fix Roundcube redirect loop - disable force_https

Traefik handles TLS termination, so internal traffic is HTTP Setting force_https=true caused Roundcube to redirect to HTTPS internally creating an infinite redi...

snadjafinia·10mo ago
OtherKlusterServices

Reference kamocrm.com wildcard cert in mail IngressRoute

The certificate secret is in kamo namespace, copied to mail namespace tls.secretName explicitly references wildcard-kamocrm-com

snadjafinia·10mo ago
OtherKlusterServices

Fix mail IngressRoute to use auto-cert service

Changed tls from certResolver: letsencrypt to tls: {} This allows the auto-cert service to automatically generate certs when mail.kamocrm.com is accessed

snadjafinia·10mo ago
OtherKlusterServices

Fix Roundcube readiness probe - use TCP socket instead of HTTP

Roundcube redirects / to login page (302), failing HTTP readiness probe TCP socket check on port 80 works correctly

snadjafinia·10mo ago
Fixkamo-internal

Replace remaining Grid closing tags with GridLegacy in CreateLeadClient

- Fixed all remaining </Grid> tags that should be </GridLegacy> - Ensures proper closing of GridLegacy item components - Resolves JSX syntax error

snadjafinia·10mo ago
OtherKlusterServices

Switch to Alpine 3.18 with Dovecot 2.3.20 for stable SQL auth

Dovecot 2.4 has incompatible configuration changes without clear docs Alpine 3.18 has Dovecot 2.3.20 which uses traditional well-documented syntax - mail_locati...

snadjafinia·10mo ago
December 4, 2025
Fixkamo-internal

Replace Grid with GridLegacy for item prop in CreateLeadClient

- MUI v7 moved 'item' prop to GridLegacy component - Updated all Grid item instances to GridLegacy - Required for compatibility with MUI v7

snadjafinia·10mo ago
Fixkamo-internal

Add missing 'email' property to Lead interface

- leadsApi.createLead expects email as a separate property - Email is also available in primaryContact.email but API needs it at Lead level - Required for lead ...

snadjafinia·10mo ago
Fixkamo-internal

Cast customFormData to correct type in CreateLeadClient

- TypeScript was complaining about type mismatch between Record<string, Record<string, unknown>> and Record<string, CustomFormData> - Added type assertion to ma...

snadjafinia·10mo ago
OtherKlusterServices

Remove address setting from inet_listener - not valid in Dovecot 2.4.2

The listen = * at top level handles binding to all interfaces

snadjafinia·10mo ago
Fixkamo-internal

Add missing 'vendorLeadID' property to Lead interface

- Property exists in Java Lead bean but was missing from TypeScript interface - Required for lead creation and import functionality

snadjafinia·10mo ago
OtherKlusterServices

Fix Dovecot 2.4.2 config: mail_location renamed to mail_path

In Dovecot 2.4.2: - mail_location is now mail_path (top-level setting, no blocks) - Added dovecot_storage_version = 2.4.2 (required) - Updated SQL user_query to...

snadjafinia·10mo ago
Fixkamo-internal

Add missing 'languages' property to primaryContact in CreateLeadClient

- Contact interface requires 'languages' property - Initialize with empty array to satisfy type requirements

snadjafinia·10mo ago
Fixkamo-internal

Use GridLegacy for Grid component with item prop in MortgageFieldsComponent

- MUI v7 moved Grid with item prop to GridLegacy - Update import to use GridLegacy to fix TypeScript error

snadjafinia·10mo ago
OtherKlusterServices

Fix Dovecot 2.4 config syntax - use mail{} and ssl{} blocks

- Put mail_location, uid, gid settings inside mail { } block (Dovecot 2.4 requirement) - Put ssl settings inside ssl { } block - Add initContainer to create mai...

snadjafinia·10mo ago
Fixkamo-internal

Use GridLegacy for Grid component with item prop in CustomFormFieldsComponent

- MUI v7 moved Grid with item prop to GridLegacy - Update import to use GridLegacy to fix TypeScript error

snadjafinia·10mo ago
Otherkamo-internal

Fix TypeScript type error in CustomFormFieldsComponent

snadjafinia·10mo ago
Fixkamo-internal

Replace all 'any' types with proper TypeScript types

- Replace Record<string, any> with Record<string, unknown> - Replace any parameter types with unknown or specific types - Remove unused imports (authenticatedFe...

snadjafinia·10mo ago
FixKlusterServices

Remove heredoc whitespace issue - use echo commands and ConfigMap

The heredocs had leading whitespace from YAML indentation causing parse errors - Use echo commands to create dovecot.conf without leading whitespace - Mount aut...

snadjafinia·10mo ago
OtherKlusterServices

Go back to args with external SQL config file - mysql blocks don't work

The mysql { } block syntax causes 'Unknown section name: mysql' error Use passdb sql { driver = sql; args = **************** } External file has correct format:...

snadjafinia·10mo 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