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
July 16, 2026
FeatureSecurityService

Extract self-employment income from K-1 and P&L statements

K1 and PL_STMT previously returned DOC_TYPE_NOT_SUPPORTED; add vision prompts (employment.employerName + employment.wagesAnnual) so a self-employed borrower's K...

Kamo·2mo ago
FeatureSecurityService

Borrower request-rate-lock → steward pipeline queue

POST **************** (party-gated): the borrower asks to lock their rate; recorded as an OPEN non-blocking PRICING LoanCondition so it lands in the steward's p...

Kamo·2mo ago
FeatureSecurityService

Borrower rate-lock status endpoint (LOCKED/FLOATING)

GET /mortgage-apps/{uid}/rate-lock (party-gated) → the loan's SAFE lock posture: LOCKED (rate + expiry) when an active, non-expired commitment exists, else FLOA...

Kamo·2mo ago
Featurekamo-shared-library

Lock lookup by loan file (join through scenario)

**************** — locks key on scenario, so resolve a loan's locks via MlosLoanScenario.loanFileUid. Backs the borrower/steward 'is this loan rate-locked?' rea...

Kamo·2mo ago
FeatureSecurityService

Steward rate-lock proxy — lock-decision + commit an eligible result

MlosCapitalMarketsController gains POST /lock-decision (preview) and POST /locks (commit) via MlosCapitalMarketsClient; the commit is a deliberate HUMAN steward...

Kamo·2mo ago
FixSecurityService

Mirror native e-sign completion to the disclosure stub + fix sent status

(1) BorrowerSignatureService now mirrors a terminal native envelope status back onto the locked disclosure stub (doc 05 §4.2 map) on the borrower's my-signature...

Kamo·2mo ago
FeatureSecurityService

Borrower e-signature surface — real native sign links, no stub

GET **************** (party-gated) lists the loan's real KAMO_NATIVE disclosure/closing envelopes + recipient status via ESigService; POST **************** mint...

Kamo·2mo ago
FeatureESigService

Internal mint-sign-link primitive for first-party signing surfaces

POST **************** re-mints a recipient's access token and RETURNS the signing deep-link (no invite-email round-trip), so the MLOS borrower portal can hand a...

Kamo·2mo ago
FeatureSecurityService

WS3 vendor-order proxy — steward places/reads third-party orders

Add MlosVendorClient (X-Internal-Auth → MLOSVendorService /api/vendor) + mlos.vendor.url config, and app-scoped endpoints: GET /{uid}/vendor-orders (operator vi...

Kamo·2mo ago
FeatureSecurityService

Borrower-safe my-conditions projection for the portal conditions view

GET /{uid}/my-conditions (party- or operator-gated) returns a narrow BorrowerConditionView **************** — never the internal actor/notes fields the steward ...

Kamo·2mo ago
FeatureSecurityService

Per-borrower section GET endpoints to hydrate the capture UIs

Add listPerBorrower (requireView, party-gated) + GET list endpoints for **************** returning {rows:[...]}. These back the new URLA borrower capture sectio...

Kamo·2mo ago
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·2mo 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·2mo ago
FeatureSecurityService

Full credit-vendor abstraction + real reseller adapters

Production tri-merge credit rail. The abstraction now passes the FULL 9-digit SSN (decrypted at order time from the borrower's encrypted record) + co-borrower f...

Kamo·2mo ago
FixSecurityService

Revive soft-deleted member pref on upsert instead of 500

Per-member UI preferences (nav layout, hex-head sizes, etc.) are stored one row per (member_id, pref_key) in MEMBER_UI_PREFERENCES, guarded by the unique constr...

Kamo·2mo ago
FeatureSecurityService

Borrower clear-to-close proxy

GET **************** — party-gated; resolves loanFileUid from the app and relays MLOSDocService's clear-to-close readiness.

Kamo·2mo ago
FixAIService

Allow SWITCH_MODEL to reset a session to Auto

handleSwitchModel always UUID-parsed modelId and errored on null, so a session could never be reverted to automatic model selection mid-chat. Parse modelId as a...

Kamo·2mo ago
FeatureEmailService

Accept X-***-Token for mobile clients in OTKPreAuthFilter

per-tab session id as X-***-Token (matching **************** When present (and no X-OTK), resolve the session non-consumingly and set the same request attribute...

Kamo·2mo ago
FeatureAPIService

Route /api/email + /api/support through the api host

(EmailService) and Support (MediaService, same upstream as /api/media) were unrouted → 404. Add both forwards and fix email.service.url from a localhost default...

Kamo·2mo ago
FeatureSecurityService

Steward-triggered agency-AUS run proxy

Adds POST **************** — the steward "Run AUS" trigger the read-only underwriting console lacked. Gated on operator (GD); the organizationId and acting memb...

Kamo·2mo ago
FixKlusterServices

Explicit priority so the OTA updates route wins over the general theme route

Traefik ranks by rule-string length; the general /public/ theme route is longer, so the expo-updates header injection never ran. priority:100000 forces the win.

Kamo·2mo ago
FeatureKlusterServices

Self-hosted expo-updates headers for Mobile Copilot OTA

expo-protocol-version:1 + expo-sfv-version:0 response headers that the expo-updates client requires and static MinIO cannot emit. Longer path prefix wins over t...

Kamo·2mo 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·2mo ago
FeatureSecurityService

Stamp document own-date to freshness clock (WS1 activation)

After vision extraction, propagate the document's own effective date (asset.statementPeriodEnd for bank/broker/retirement, employment.payPeriodEnd for paystubs)...

Kamo·2mo ago
Refactorkamo-internal

Consume @kamo/* shared libs, delete duplicated web copies

kamo-internal now imports the shared TS packages it originally seeded (one - avatarUrlTransform → re-exports @kamo/media-core (getAvatarSizedUrl, transformAva...

kamo·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo ago
Featurekamo-marketing

Replace forked chat with hosted <kamo-chat> embed; delete legacy proxy widget

Swaps the forked AI/live-support React chat (PublicChatWidget + AiChatPanel + LiveSupportPanel + the /api/chat/** server proxy routes) for the hosted, self-them...

Kamo·2mo ago
FixSecurityService

Accept X-***-Token header on my-networks + all-networks

getMyNetworks/getAllNetworks only read the OTK request-attr or the *** cookie, — no org beyond the device-exchanged primary ever loaded, and the active org had ...

Kamo·2mo ago
Refactorkamo-internal

I18n the LabelManager software-identity labels via next-intl

Replace literal strings with **************** keys (added to the translation dictionary). English fallback covers locales pending translation.

kamo·2mo ago
Featurekamo-internal

Add install-QR (self-hosted APK) to Setup Mobile App tab

Install/Sign-in toggle: "Install" shows a QR to the signed release APK on the new phone can download+sideload it; "Sign in" keeps the password-gated OTK flow.

kamo·2mo ago
Featurekamo-internal

Web Chat Integration design customizer + live preview

Adds a Customize dialog to the Web Chat Integration tab: an editor form (colors, copy, layout, behavior, AI prompt) on the left and an instant, non-interactive ...

kamo·2mo ago
Featurekamo-internal

Web Chat Integration tab — list, create, snippet (BFF + UI)

Phase 2 core of the Web Chat Integration settings tab: BFF routes proxying to the Phase-1a MediaService CRUD, a typed client, and the /settings/features/chat ta...

kamo·2mo ago
Featurekamo-register

Kamo-register honors software auth logo + name

- DynamicMetaLoader: read software identity + auth selectors from config.json, resolve tab title, persist auth logo/name state to sessionStorage - brand.ts + ...

Kamo·2mo ago
Featurekamo-login

Kamo-login honors software auth logo + tab title

- DynamicMetaLoader: read software identity + auth selectors from config.json, set tab title from resolved name (authNameBrandSource), persist auth-logo state...

Kamo·2mo ago
Featurekamo-internal

LabelManager software identity UI + internal tab title

- Company Info: software name/short-name + login/register name + tab-title selectors - Branding: software full/simple logo uploads, override toggles, and per-su...

kamo·2mo ago
Featurekamo-internal

3-stage org onboarding guidance (create → finish DNS → enter)

Generalize the first-org hero into a single stage-aware guidance panel keyed on the member's owned-org count + DNS status (from /api/security/org/my-networks): ...

kamo·2mo ago
Featurekamo-internal

Dual company/software resolver + delivery + consumption

- Organization.ts: deliver software identity + per-surface selectors via OrgContext - brand.ts: **************** (+ vitest, 8 cases) - ThemeLogo: logoSoftware/l...

kamo·2mo ago
FeatureSecurityService

Software logo upload types + config.json bake

- uploadLogo: explicit object-key switch **************** with rejecting default so a software upload can never clobber the company logo.svg - copyFolder: pre...

Kamo·2mo ago
Featurekamo-shared-library

Add software white-label branding columns to Organization

Kamo·2mo ago
Featurekamo-internal

First-org CTA hero for members on the platform org

Show an onboarding hero at the top of the home launchpad inviting a KamoCRM-platform member (not a team member) who hasn't yet created a child org to spin up th...

kamo·2mo 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