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
July 16, 2026
Featurekamo-shared-library

Borrower section read methods for other-income/expense/REO/gift capture

The per-borrower repeating sections were write-only; add read projections **************** so the borrower capture UIs can hydrate existing rows via GET endpoin...

Kamo·3mo ago
Fixkamo-shared-library

**************** (was findById)

VendorOrder extends BaseUuidEntity (key = uid, not id); the derived-query parse failed at boot ("No property 'id' for VendorOrder"), crash-looping MLOSVendorSer...

Kamo·3mo ago
Featurekamo-shared-library

VendorOrder + VendorOrderEvent entities for WS3 vendor-order spine

The greenfield 3rd-party order-of-record **************** SCRA). VendorOrder = partial-WORM async order (ClosingArtifact idiom: opaque vendorKey/externalRef, fr...

Kamo·3mo ago
Featurekamo-shared-library

MortgageAmortization — monthly P&I from loan terms (WS6 support)

The one PITI component not stored on the loan. Standard fully-amortizing formula P·r·(1+r)^n/((1+r)^n−1); zero rate degrades to straight-line; non-positive prin...

Kamo·3mo ago
Featurekamo-shared-library

ClosingReadinessEvaluator — loan-level clear-to-close gate

Rolls a loan's obligations up to the funding question the end-to-end gap analysis raised ("service the loan all the way to funding"): clear-to-close iff zero ad...

Kamo·3mo ago
Featurekamo-shared-library

QualifyingRatioEngine — the reproducible dti keystone (WS6)

Composes the four cores (income, liabilities, PITI/DTI, reserves) into ONE QualifyingSnapshot: qualifying income, reconciled monthly debt, assembled PITIA, fron...

Kamo·3mo ago
Featurekamo-shared-library

ReservesCalculator — eligible-asset haircuts → PITIA months (WS6)

Derives reserve months from actual assets with standard agency haircuts — liquid deposits 100%, brokerage 70%, vested retirement 60%, gift/borrowed excluded — d...

Kamo·3mo ago
Featurekamo-shared-library

PitiDtiCalculator — PITI assembly + front/back DTI (WS6)

Pure ratio core completing the DTI trio with LiabilityReconciler + the income core: PITIA = P&I + taxes + HOI + HOA + MI + flood; front = PITIA / income; back =...

Kamo·3mo ago
Featurekamo-shared-library

QualifyingIncomeCalculator — base + variable core (WS5)

Pure/deterministic income core: base salaried = conservative lowest-of available evidence (paystub / W-2 / VOE); variable = 2-yr average with a declining-income...

Kamo·3mo ago
Featurekamo-shared-library

LiabilityReconciler — agency payment-inclusion rules (WS6 core)

Pure/stateless computer turning each liability into the monthly payment that counts against DTI, with a cited rationale: omitted/paid-off excluded, leases alway...

Kamo·3mo ago
Featurekamo-shared-library

Explicit-period quantity spec for delta successors

RequirementQuantity gains an explicit periods list (+ deltaJson builder); when present it IS the required set, so a successor can be scoped to "just send August...

Kamo·3mo ago
Featurekamo-shared-library

**************** as the single period-key source

Adds periodKeyFor(date) so the write-path (satisfier stamping) and the coverage evaluator key periods identically; evaluator now delegates to it. Pure/additive,...

Kamo·3mo ago
Featurekamo-shared-library

Period-coverage primitives for period-aware document collection

The pure, additive foundation of period-aware collection (doc 06 §4) — the first slice of the bank-statement "collect only the months I don't have yet" fix. Zer...

Kamo·3mo ago
Featurekamo-shared-library

Add software white-label branding columns to Organization

Kamo·3mo ago
Featurekamo-shared-library

Add ALLOW_MOBILE_ACCESS (167) general right for Mobile Copilot

New RoleRightType (serviceType=null → General group) gating the 'Setup Mobile Access' interaction-center tab. RoleRightsSyncService backfills it to all roles on...

Kamo·3mo ago
July 15, 2026
Featurekamo-shared-library

Add anon usage count query for public web-chat quota

Kamo·3mo ago
Featurekamo-shared-library

Device-token + push-registration entities, HMAC stream-token codec

hashed secret, rotation grace, sliding expiry), push_device_registrations (one push destination per device+org+kind), and StreamTokenCodec — short-lived HMAC to...

Kamo·3mo ago
Featurekamo-shared-library

Multi-pass closed-loan training — pass counter + corpus upsert key

The closed-loan trainer now re-reads a loan on successive passes until its extraction reproduces the loan outcome, so: - LeadLosLink.closedLoanPasses drives a p...

Kamo·3mo ago
Featurekamo-shared-library

Status-preserving progress write for the closed-loan trainer

run is RUNNING, without touching status. An operator pause (status → PAUSED) can no longer be clobbered by a full-row save from the pool thread — the guarded up...

Kamo·3mo ago
Featurekamo-shared-library

Harden closed-loan trainer — run lock + per-loan idempotency

- ClosedLoanTrainingRun.claim(): atomic conditional UPDATE that takes ownership of a run only when it is not already RUNNING or its heartbeat is stale (prev...

Kamo·3mo ago
Featurekamo-shared-library

Org-scoped loan roster query for the closed-loan trainer

**************** gives the trainer every LOS-linked loan for an org+provider, each carrying the externalLoanName it reads status + documents for.

Kamo·3mo ago
Featurekamo-shared-library

Closed-loan auto-trainer foundation (MeridianLink ground truth)

Foundation for training document extraction against funded loans (the answer key): - ClosedLoanTrainingRun entity+repo — per-org run control + live counters - E...

Kamo·3mo ago
Featurekamo-shared-library

Plain-language borrower messages for document rejections

RejectionReasonType was a bare enum (the borrower literally saw "ILLEGIBLE"). Each value now carries a borrowerMessage() remediation string + a messageFor() map...

Kamo·3mo ago
July 14, 2026
Featurekamo-shared-library

Platform-wide QC review (cross-tenant labeling for the shared model)

A document is a document — extraction and the model are platform-level, not per lender. Adds a cross-tenant NEEDS_REVIEW queue + QcReviewService.platformReview ...

Kamo·3mo ago
Featurekamo-shared-library

Platform Document-AI config on SystemConfiguration + cross-org corpus

Adds **************** (default 0.85) + EXTRACTION_MODEL_ID to the platform SystemConfiguration singleton — the platform-wide levers for the QC gate and the regi...

Kamo·3mo ago
Featurekamo-shared-library

Org-wide QC queue (employee review portal)

Adds an org-scoped NEEDS_REVIEW query + QcReviewService.orgQueue so employees can work every loan's low-confidence extractions from one portal, not one loan at ...

Kamo·3mo ago
Featurekamo-shared-library

Confidence-gated QC box + labeled training data + gift/self-employment reconcile

QC engine (Phase 4 core): - VerifiedFact gains first-class EXTRACTION_CONFIDENCE, DOC_TYPE_CODE, QC_STATE columns (QcState: **************** Reconciliation ...

Kamo·3mo ago
Featurekamo-shared-library

Reconcile otherIncome.* facts into OtherIncome rows

Extends fact reconciliation with an otherIncome.* branch: award/benefit documents (Social Security, pension/retirement, child support) land a real OtherIncome r...

Kamo·3mo ago
Featurekamo-shared-library

Capture + encrypt full SSN on the borrower application

The application posture needs the borrower's REAL Social, not a last-4 (a lender can't do anything with 4 digits). Borrower.ssnEncrypted existed but was never w...

Kamo·3mo ago
Fixkamo-shared-library

Drop message-body preview paragraph from missed-message email templates

Security: notification emails no longer render any message content; the member signs in to read messages. Sender + count + CTA only.

Kamo·3mo ago
July 13, 2026
Featurekamo-shared-library

Missed-message email notification ledger + canonical templates

MessageEmailNotice entity (MESSAGE_EMAIL_NOTICES, unique recipient+sourceKey+channel) with PENDING/SENT suppression states, repository incl. sudo-safe markRead/...

Kamo·3mo ago
Featurekamo-shared-library

GraphMessageIdMap entity for Microsoft 365 Graph mail id mapping

Maps opaque Microsoft Graph message ids to stable synthetic numeric UIDs per mailbox, so Graph mailboxes flow through the existing numeric-uid mail contract (co...

Kamo·3mo ago
July 12, 2026
Featurekamo-shared-library

CitySceneProfile entity + GeoLite city-lookup indexes for city-based portal scenes

- CitySceneProfile (city_scene_profile): per-city environmental scene factors (terrain/relief/silhouette, climate/koppen, hydrology, RESOLVE ecoregion + flo...

Kamo·3mo ago
July 11, 2026
Fixkamo-shared-library

The servlet guard must define the SERVLET bean — Boot conditions on the type, not the registration

f8bcc82's ServletRegistrationBean alone name-collided with the auto-config **************** WebServicesAutoConfiguration's bean is **************** Define the s...

Kamo·3mo ago
Fixkamo-shared-library

Disabled MessageDispatcherServlet registration — kills the multi-servlet landmine for real

Removing the web-services STARTER (55eae0a) was not enough: spring-ws-core itself carries MessageDispatcherServlet, and Boot's WebServicesAutoConfiguration cond...

Kamo·3mo ago
Fixkamo-shared-library

Spring-ws CLIENT-ONLY — the server starter made every consuming service multi-servlet

**************** auto-registers a MessageDispatcherServlet in EVERY service that depends on shared-lib; with Spring Security 6 that breaks any string requestMat...

Kamo·3mo ago
Fixkamo-shared-library

UpdateLoanFile PATCH must not null absent fields — status-only patch wiped loanNumber/dates

Any partial loan-file patch (the portal's submit sends only {statusId:2}) unconditionally overwrote loanNumber, channelId, and every lifecycle date with null. G...

Kamo·3mo ago
July 10, 2026
Fixkamo-shared-library

Bound IP block lookup to a single indexed row

findByIpInRange's two-sided range predicate forced CockroachDB to scan every block with networkStart <= ip whenever the IP fell in a gap (private/bogon/ spoofed...

Kamo·3mo ago
Otherkamo-shared-library

MortgageProviderResolver deps → ObjectProvider — was crash-looping MediaService

The @Service is component-scanned by every com.kamo service, but mlos.config repositories only exist where @EnableJpaRepositories registers them. Hard construct...

Kamo·3mo ago
Fixkamo-shared-library

CreateFromLead saved Declarations against a transient Borrower — save the app graph first

Same latent TransientPropertyValueException the blank create() fixed at its first caller; createFromLead's first real caller is the portal promote seam (caught ...

Kamo·3mo ago
Fixkamo-shared-library

AccountGuid insert always violated FIRST_SEEN_AT NOT NULL — ZERO portal leads ever created

Hibernate includes every mapped column in INSERT (no @DynamicInsert), so the unset timestamp went out as explicit NULL and the DB default never applied. Every v...

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