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 19, 2026
Performancekamo-shared-library

Index member_notifications by (source_type, source_id) for withdrawal across members (IoT close-out F15)

The withdraw-by-source read (findBySourceTypeAndSourceId) and the IoT alarm's withdraw-by-prefix (StartingWith -> LIKE 'x%') had only the member-led index, so b...

KamoΒ·4d ago
October 11, 2026
Performancekamo-shared-library

VISIBLE as one id IN (… UNION ALL …), so every visible note read is index scans bounded by a key, not a scan of every note (KamoCollab CP05 Task 15)

Yugabyte, with bitmap scans off, answers the three ORed branches across different columns of notes with a sequential scan (EXPLAIN in production, the pre-CP05 t...

KamoΒ·1w ago
September 23, 2026
Performancekamo-shared-library

CommitLog carries a maintained translation_count

Adds CommitLog.translationCount and **************** the library side of replacing the changelog translation-backfill sweep's GROUP BY .. HAVING scan with a pla...

KamoΒ·4w ago
Performancekamo-shared-library

Member_rights_applied writes only the difference, and reads roles in bulk

Two related fixes to MemberRightsAppliedService, both in the same file: 1. **************** (via recalcChunk) and **************** unconditionally deleted a...

KamoΒ·4w ago
Performancekamo-shared-library

Stop eager-fetching LeadVendorProduct's org chain for a single-id read

findById() on LeadVendorProduct pulls its default-EAGER vendor, which itself eager-fetches its own org AND its market (which eager-fetches ITS org again) β€” and ...

KamoΒ·4w ago
Performancekamo-shared-library

Batch two translation lookups the planner was doing badly per row

kbservice's public KB endpoints and its translation-retry sweep both asked KbArticleTranslationRepository one row at a time. Production's pg_stat_statements sho...

KamoΒ·4w ago
Performancekamo-shared-library

Leads available and credit balances read a ledger instead of counting rows

"Leads available" was COUNT(*) over the assignable pool, and one org's pool holds ~796k leads: ~7.8 s per (market, product) count and ~11 s for the grouped one ...

KamoΒ·4w ago
September 16, 2026
Performancekamo-shared-library

Check pool eligibility with an unordered sample, not a full-pool sort

hasEligibleAssignableLead only needs to know whether any pool lead is one the member may take, but it read a page of findAssignablePool, whose ORDER BY assigned...

KamoΒ·1mo ago
August 21, 2026
Performancekamo-shared-library

Index the two shapes geolite_locations is actually queried by

Country alone was the only index on an 80,429-row table, and neither real query used it well. Measured on production: city resolution (country + subdivision)...

KamoΒ·2mo ago
Performancekamo-shared-library

Index member_rights_applied, bound the intake claim, aggregate changelog stats

Three findings from an endpoint-by-endpoint audit, each measured against production rather than inferred. member_rights_applied declared no indexes at all whil...

KamoΒ·2mo ago
August 20, 2026
Performancekamo-shared-library

Filter and page the grid in the database, batch the PHI audit trail

Loading /leads took 23.3 s at 1,427 leads. 23.3 s of that was the HIPAA audit trail: recordLeadList writes one phi_access_log row per lead returned, and each on...

KamoΒ·2mo ago
August 12, 2026
Performancekamo-shared-library

Fetch the summary slices' to-one associations and count instead of scanning

The Overview's attention and recent slices read a title per row off a LAZY @ManyToOne, costing up to 16 extra selects per block under open-session-in-view. All ...

KamoΒ·2mo ago
August 10, 2026
Performancekamo-shared-library

Geolite range index must be ASC, not YugabyteDB's default HASH

The IP lookup is a range scan: WHERE network_start <= ? ORDER BY network_start DESC LIMIT 1 YugabyteDB partitions the LEADING index column by HASH unless tol...

KamoΒ·2mo ago
August 9, 2026
Performancekamo-shared-library

Match stored content on BLAKE3 alone, so a browser can afford to ask

Proving possession required both hashes, and a browser has no fast SHA3-256 β€” js-sha3 is pure JavaScript at ~25 MB/s. Measured on a 358 MB video that was ~20 se...

KamoΒ·2mo ago
Performancekamo-shared-library

Read the latest snapshot date without loading the history

A summary needs one date. It was reading it by loading a two-year range of snapshots and taking the max β€” five domains times every day of history, on every page...

KamoΒ·2mo ago
August 8, 2026
Performancekamo-shared-library

Answer the plan-matrix question for every app in one pass

The Apps & Features tab asks whether each app appears in the plan matrix, and the per-app form scans the plan-feature and add-on tables once per app β€” two dozen...

KamoΒ·2mo ago
July 6, 2026
May 28, 2026
Performancekamo-shared-library

Paged repo queries + countByStatus for hot paths

- LoanRepository: countByStatus / countByOrganizationAndStatus + Page<Loan> findByStatus(...) / **************** / **************** + **************** for...

KamoΒ·4mo ago
May 15, 2026
Performancekamo-shared-library

Collapse pipeline kanban N+1 to a single grouped count query

listForOrganization() used to issue one condition-fetch per loan (201 queries at 200 loans). Now a single grouped JPQL aggregate keyed by loanFile.uid projects ...

KamoΒ·5mo ago
April 25, 2026
Performancekamo-shared-library

Add findBySessionGuidIn for bulk loading

Used by the support-ticket list endpoint to fetch all visitors for a page in one query instead of N separate findBySessionGuid calls.

KamoΒ·6mo ago
March 12, 2026
Performancekamo-shared-library

Fetch parent message in same query to eliminate reply N+1

Alias m.msg and LEFT JOIN FETCH msg.parent so that threaded reply messages have their parent loaded in the initial query rather than triggering a separate SELEC...

KamoΒ·7mo ago
Performancekamo-shared-library

Fix N+1 query and add composite index for chat message loading

- Add LEFT JOIN FETCH m.msg to both repository queries to eagerly load MediaObjMsg in the same query, eliminating up to 100 extra SQL queries per chat windo...

KamoΒ·7mo ago
March 11, 2026
Performancekamo-shared-library

Eliminate full-table scan and N+1 queries on leads endpoint

- LeadRepository: add findByOrganizationId JPQL query (uses ORG_ID index) instead of loading entire LEADS table and filtering in Java - LeadCustomFormDataRepo...

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