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
August 8, 2026
FixInitializerService

Grandfather orgs already running a gated commerce market

Gating MORTGAGE behind MLOS made the gate unsatisfiable for tenants: MLOS is still PLANNING, and FeatureController.enable refuses a non-COMPLETED app for a chil...

Kamo·1mo ago
FixInitializerService

Seed app entitlement for every root, and stop inventing plan tiers

Two defects found by checking prod before flipping kamo.entitlement.fail-open. Sign Pink is a second entitlement root (isPlatformProduct, with its own FREE/BUS...

Kamo·1mo ago
FeatureInitializerService

Backfill app entitlement rows into the platform plan catalog

Entitlement now resolves on a typed service_type column, but no catalog row carried one, so every plan still resolved to 'everything included' via the fail-open...

Kamo·1mo ago
August 7, 2026
FeatureInitializerService

Mailbox pointers for departments and orgs, and backfill the departments

DEPTS.MAILBOX_ID and ORGS.CONTACT_MAILBOX_ID, both plain UUID with no FK to email_provider.mailboxes: mailboxes sync from external providers and can be removed ...

Kamo·1mo ago
FeatureInitializerService

Give a team member a manager

Adds MANAGER_ID to member_team_member, a nullable self-reference for the reporting line. Nothing is backfilled: no manager is a complete answer, both at the top...

Kamo·1mo ago
FeatureInitializerService

Add DEPTS.PARENT_DEPT_ID for nested departments

Nullable with no backfill -- null means top level, which is what every existing department was and most will stay. Declared plain UUID with an explicit DROP DE...

Kamo·1mo ago
FeatureInitializerService

Migration for the commission ledger and Stripe payout tables

Mirrors com.kamo.z.shared.commission. ddl-auto would create these from the annotations anyway; the explicit DDL is the house convention and is what makes the sh...

Kamo·1mo ago
August 6, 2026
FixInitializerService

Fail the run when a required UNIQUE index cannot be created

ensure() caught Exception and logged, so a failed CREATE UNIQUE INDEX reported success and the service booted with no uniqueness guarantee at all — the one outc...

Kamo·1mo ago
FeatureInitializerService

Land the legal package schema

Adds com.kamo.z.shared.hr.legal to the repository scan list and ensures the uniqueness and lookup indexes the entity mapping cannot express safely.

Kamo·1mo ago
FixInitializerService

Scope empty binders to (MY_DOCS, '') not the owner's member id

The My Docs DocManager never passes an assocObjectId prop, so it always resolves and queries (3, ''). BACKFILL_EMPTY_SQL was scoping empty binders to (3, member...

Kamo·1mo ago
FixInitializerService

Correct javadoc on Hibernate ddl-auto behavior for NOT NULL columns

CockroachDB rejects ADD COLUMN ... NOT NULL without a DEFAULT on a populated table, so Hibernate's ddl-auto attempt fails (logged, non-fatal) rather than no-opp...

Kamo·1mo ago
FeatureInitializerService

Backfill the collection each existing binder belongs to

Derives the scope from the first DOC item's Img; empty binders fall back to the owner's My Docs. Applies NOT NULL only after the backfill.

Kamo·1mo ago
August 5, 2026
FeatureInitializerService

Create the email search_vector column and its inverted index

**************** never existed. EmailService's own V1__email_metadata_schema.sql declares it, but that migration never ran -- the table came from this service's...

Kamo·1mo ago
ChoreInitializerService

Purge lead e-mail links whose lead-side address is the company's

Clears what the old company-address rule wrote before it read org_domains. Live production was purged by hand at the time (126 rows, 6 leads, one org); this exi...

Kamo·1mo ago
FeatureInitializerService

Schema and contact-point seed for lead communications

Hibernate creates the three new tables from the shared-lib entities; this adds what it cannot express — the partial unique index that keeps at most one open con...

Kamo·1mo ago
FeatureInitializerService

Schema for the multi-provider meeting layer

Creates **************** and org_meeting_oauth_tokens, adds the provider-identity columns to MEETING_RECORDS and MEETING_RECORDINGS and the Zoom/Teams-capable s...

Kamo·1mo ago
FeatureInitializerService

Reassignable primary agent on a reserved opportunity

PRIMARY_AGENT_MEMBER_ID is who holds the opportunity now; REQUESTED_BY_MEMBER_ID is left untouched forever. Nullable with no backfill on purpose — null means "n...

Kamo·1mo ago
August 4, 2026
FeatureInitializerService

Commission columns for reserved opportunities and market defaults

Six nullable columns: the overall commission agreed on a reserved opportunity, and the market default that pre-fills it at approval. NUMERIC(19,4) to match the ...

Kamo·1mo ago
ChoreInitializerService

Drop the quote recipient columns

The lead holds the client's name, address and phone; snapshotting them on the quote duplicated a record edited elsewhere. The columns existed only briefly and c...

Kamo·1mo ago
FeatureInitializerService

Tables for lead opportunity reservations

Mirrors LeadOpportunityReservation, LeadOpportunityCommissionSplit and **************** in kamo-shared-library. ddl-auto:update would create them from the entit...

Kamo·1mo ago
August 3, 2026
FixInitializerService

Repair the quote-option FK defaults ddl-auto cannot reach

The existing dynamic sweep only covers nullable FK columns that already carry a FOREIGN KEY constraint. commerce_quote_options.quote_id is NOT NULL, so it is ex...

Kamo·1mo ago
FeatureInitializerService

Create phi_access_log — the durable §164.312(b) audit trail

Until now PHI access was recorded only to a log stream with 14-day retention against a six-year obligation, and with no query surface. An accounting of disclosu...

Kamo·1mo ago
FeatureInitializerService

Create the second-factor tables

Backs UserMfaEnrollment and MfaRecoveryCode in kamo-shared-library — §164.312(d) Person or Entity Authentication, the gap the compliance assessment called disqu...

Kamo·1mo ago
FeatureInitializerService

Create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs

Mirrors the two new Organization fields, following the OrgBrandingFieldsMigration convention, so the columns are reproducible on any environment rather than onl...

Kamo·1mo ago
August 2, 2026
OtherInitializerService

Revert "feat(phi): create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs"

This reverts commit ****************

Kamo·1mo ago
FeatureInitializerService

Create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs

Mirrors the two new fields on the Organization entity in kamo-shared-library, following the OrgBrandingFieldsMigration convention. HANDLES_PHI is NOT NULL DEFAU...

Kamo·1mo ago
July 31, 2026
ChoreInitializerService

Starter maxSeats 5, Business maxSeats 25

Keeps the KamoCRM pricing seed in step with the live catalog after repositioning the published seat caps.

Kamo·1mo ago
July 30, 2026
FixInitializerService

Register **************** repositories

LeadService now eagerly wires MarketLosConnectionResolver, which requires the integrations.los repositories **************** KI's explicit @EnableJpaRepositorie...

Kamo·2mo ago
July 9, 2026
FeatureInitializerService

Originator/transaction-first columns (@Order 90)

Additive nullable columns + org-unique transaction-number index for the MLOS originator/transaction refactor: mlos_loan_transaction (transaction_number + assign...

Kamo·2mo ago
July 8, 2026
FeatureInitializerService

Add INVESTOR_PRICE column to rate_locks + loan_pricing_snapshots

@Order(80) idempotent ADD COLUMN IF NOT EXISTS (DECIMAL(9,4), matching the price-to-100 grids) so the MLOS RCE can record the true non-par investor execution pr...

Kamo·2mo ago
FeatureInitializerService

Partial-unique index enforcing one active closing package per loan (eClose double-close backstop)

CREATE UNIQUE INDEX uk_mlos_closing_pkg_active_loan ON mlos_closing_package (loan_file_uid) WHERE status <> 'CANCELLED'. Durable backstop behind the assembler's...

Kamo·2mo ago
FeatureInitializerService

Migration adds recordings.transcript TEXT column

Kamo·2mo ago
July 6, 2026
FixInitializerService

Mlos requirement single-live index keyed per-human (borrower_uid)

Drop the party-only **************** (it would reject a legitimate 2nd co-borrower requirement); create **************** on **************** Already applied to ...

Kamo·2mo ago
July 5, 2026
ChoreInitializerService

Scan **************** repos (P1 transaction entities)

Kamo·2mo ago
FeatureInitializerService

Seed the 17 real program rulesets (doc03 §9 Phase 1)

Migrates the authoritative ProgramRuleset data from the KamoMLOS client ruleset files into **************** (17 codes, extracted faithfully) and replaces Progra...

Kamo·2mo ago
July 4, 2026
ChoreInitializerService

Platform-singleton partial-unique index for mlos_governor_config (D4)

mlos_governor_config auto-creates via ddl-auto; add the partial expression unique index confining the platform-default (organization_id IS NULL) to a single row...

Kamo·2mo ago
FixInitializerService

Scan mlos.intake repos (§5.A) + drop orphan mlos_aus_connection_config (D40)

- Add com.kamo.z.shared.mlos.intake to @EnableJpaRepositories — the §5.A **************** was component-scanned but not a JPA repo, aborting KI startup befo...

Kamo·2mo ago
ChoreInitializerService

Drop **************** column (D39)

The coarse boolean is replaced by the per-program mlos_investor_delegation child; drop the removed NOT-NULL column so Hibernate INSERTs are not rejected.

Kamo·2mo ago
July 2, 2026
FeatureInitializerService

Codify §4.2 requirement-writer single-live partial-unique backstop

At most ONE LIVE requirement per (loan_file_uid, img_doc_type_id, party) obligation cell. **************** app-layer idempotency read cannot catch a concurrent ...

Kamo·2mo ago
July 1, 2026
ChoreInitializerService

Rebuild against latest kamo-shared-library

Kamo·3mo ago
ChoreInitializerService

Drop retired k2m1/k0m1 from MinIO node defaults

Kamo·3mo ago
June 30, 2026
FeatureInitializerService

NULLs-safe unique index for ClosingWorkflowTemplate versions (doc 05 §6.3)

One version per (organization_id, scope_level, scope_ref_id) grain. CRDB is NULLs-distinct, so split for the nullable scope_ref_id (mirrors mlos_aiptp_*): mlos_...

Kamo·3mo ago
FixInitializerService

Null-safe split of the AiPullThroughPolicy single-active index (doc 09 §8)

CRDB is NULLs-distinct, so the single (lender_profile_id, market_id) WHERE status='ACTIVE' index did NOT backstop the org-wide (market_id IS NULL) grain — two c...

Kamo·3mo ago
June 29, 2026
FeatureInitializerService

(loan_file_uid,type) native single-active partial-unique index (doc 11 §5.3/§6.2)

Closes a pre-existing double-active hole in the MLOS loan-identifier registry: index (a) **************** only constrains (org, type, VALUE) for the 10 REGISTRY...

Kamo·3mo ago
June 28, 2026
FeatureInitializerService

Anti-double-lock partial-unique index for RCE lock records (doc 08 §7.3)

SchemaCleanupRunner adds **************** — a partial UNIQUE index on mlos_lock_record (organization_id, loan_scenario_id) WHERE status IN **************** At m...

Kamo·3mo ago
FeatureInitializerService

§2.4 anti-AUS-shopping partial-unique index on mlos_aus_run

One ACTIVE (non-superseded, non-frozen) AusRun per (loan_file_uid, source_label) — "duplicates look like AUS-shopping" (doc 10 §2.4/§2.5). Safe to land now that...

Kamo·3mo ago
June 27, 2026
FeatureInitializerService

Register pkg + RCE/pull-through DDL (docs 08/09)

@EnableJpaRepositories += **************** SchemaCleanupRunner: **************** (partial-unique) + rce_commit_ai_decision_fk + rce_commit_lock_record_fk + rce_...

Kamo·3mo 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