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
October 21, 2026
PerformanceSecurityService

The mortgage pipeline loads in a handful of queries, and a deal can be renamed and take a second loan

The pipeline's two reads were N+1 on the round trip: - GET /mortgage-apps loaded plain AppMortgage rows, and each one then fired a SELECT per inverse @OneToO...

KamoΒ·2d ago
September 23, 2026
PerformanceSecurityService

Maintain commit_logs.translation_count at write time

DDL: **************** (column + partial-friendly index, applied to production already) and **************** (one-time catch-up, already run β€” 19,373 rows, all l...

KamoΒ·4w ago
PerformanceSecurityService

Use the lean LeadVendorProduct reads, not the 8-way eager findById

Caller half of the kamo-shared-library fix: switches every findById() call on LeadVendorProductRepository in securityservice to whichever lean method matches wh...

KamoΒ·4w ago
PerformanceSecurityService

Read the public changelog's commit counts from a ledger, not COUNT(*)

pg_stat_statements: `SELECT COUNT(c) FROM CommitLog c WHERE c.project IN (:~33 public projects) [AND c.commitTypeId = :t]` ran ~140K times a day at 100-200 ms e...

KamoΒ·4w ago
PerformanceSecurityService

An entry page reads three rows, not the whole public changelog

pg_stat_statements put the public changelog's single-entry reads at the top of the database by a distance: the slug lookup and the two neighbour lookups ran ~90...

KamoΒ·4w ago
PerformanceSecurityService

Manage-Credits and Leads-Available read the lead ledgers once instead of counting per row

/leads/credits (GET /api/security/credits/manage) counted the lead pool once per allotment row β€” ~8 s apiece against one org's 796k-lead pool β€” then once more g...

KamoΒ·4w ago
August 21, 2026
PerformanceSecurityService

Stop scanning every market x product after the answer is known

/leads/available-summary returns three things β€” hasAcceptable, hasAcceptableCredit and one example product β€” but visited every market x product pair regardless,...

KamoΒ·2mo ago
PerformanceSecurityService

Count in the database instead of hydrating every commit

GET /changelog/public/stats loaded all 16,571 commit logs as entities and tallied them in a Java loop to produce two small maps and a total. It takes no authent...

KamoΒ·2mo ago
August 20, 2026
PerformanceSecurityService

Page the grid endpoint and take the PHI audit write off the request thread

GET /api/security/leads returned every lead in the organisation. It now takes page/size/sort plus the filters the grid actually uses, and returns a page with a ...

KamoΒ·2mo ago
August 15, 2026
PerformanceSecurityService

Resolve each handler's platform annotation once

The interceptor is registered for /** so the annotation lookup ran on every request this service serves, sign-in included, and AnnotatedElementUtils walks the m...

KamoΒ·2mo ago
August 8, 2026
PerformanceSecurityService

One plan-matrix scan per app-catalog request

Also drops the now-unused DevelopmentStageType import and corrects the auto-provision comment, which still described the stage rule the catalog replaced.

KamoΒ·2mo ago
March 11, 2026
PerformanceSecurityService

Batch-load custom form data in getAllLeads (eliminate N+1)

Replace per-lead getCustomFormDataForLead calls (N+1 queries) with a single batch load via getCustomFormDataForLeads, grouped by lead ID using a Map lookup when...

KamoΒ·7mo ago
December 12, 2025
PerformanceSecurityService

Refactor to parallel deployment for k1m1 and k2m1

- Split build and deployment into separate jobs - Deploy to k1m1 and k2m1 in parallel after build completes - Reduces total deployment time significantly

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