KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

15,120
Total Changes
5,169
Features
4,935
Fixes
30
Projects
Filter by project
All Projects15,120AIService197APIService161BillingService143ConversionService107DaemonService129DocsService215ESigService88EmailService518InitializerService318KBService105KlusterServices697MCPGatewayService85MediaService546RAGService71SecurityService1,658TranslateService55VOIPService205VectorService11kamo-apps25kamo-asterisk-support24kamo-capcha17kamo-capcha-widget4kamo-internal6,937kamo-login330kamo-marketing625kamo-nowww20kamo-register213kamo-shared-library1,455kamo-signer-monorepo53kamolos108
Filter by type
All TypesBuild11CI523Chore738Docs2,167Feature5,169Fix4,935Other986Performance157Refactor274Revert23Style42Test94Upgrade1
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·5d 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·5d 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·5d 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·5d 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·6d 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·1w 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·1mo 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·1mo 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·1mo 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·1mo 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·1mo 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·1mo 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·1mo 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·1mo 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·4mo 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·5mo 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·6mo 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·6mo 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·6mo 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