KamoCRM

Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

July 18, 2026
FeatureSecurityService

Identifier gateway — steward can resolve an external number to its loan

MLOSIdentifierService had no gateway, so the typed identifier plane (the routing gate every inbound vendor/agency/AUS/e-sign callback uses) was unreachable from...

Kamo·3h ago
Featurekamo-shared-library

Value-keyed AUS case-file + e-sign envelope finders for identifier owner-delegation

Completes the owner-column lookups the MLOS identifier plane needs to route inbound callbacks: **************** (DU/LP/GUS run handle) and **************** Both...

Kamo·3h ago
Featurekamo-shared-library

Value-keyed loan-identity finders for identifier owner-delegation

The MLOS identifier plane resolves an inbound vendor/agency callback back to a loan; for OWNED_ELSEWHERE types the authoritative value lives on the OWNER's colu...

Kamo·3h ago
Featurekamo-shared-library

CONDITION_ADDED / CONDITION_CLEARED canonical email templates

The borrower-facing half of the conditions loop: two generic checklist templates for the new condition notification consumer. Added to CANONICAL_KEYS with their...

Kamo·4h ago
July 17, 2026
FixMediaService

Exclude non-ACTIVE members from chat participation & routing

A non-ACTIVE **************** member must not appear as, or be targeted as, a live chat participant. Gate every chat path on the shared-lib **************** pre...

Kamo·21h ago
FixSecurityService

Enforce ACTIVE member status on every session & off-boarding path

The ACTIVE-member login gate previously lived only in the password-login controller. Extend it to every session-minting path via the shared-lib ****************...

Kamo·21h ago
Fixkamo-shared-library

Gate live sessions & participation on ACTIVE member status

Add **************** as the single source of truth for the "only ACTIVE members may sign in or appear as a live participant" invariant: base members must be rec...

Kamo·21h ago
FeatureSecurityService

Public pre-auth trial-status endpoint for login/register pill

GET **************** resolves the org by hostname (alias-fallback) and reports whether its account is in an active native trial, reusing **************** (now p...

Kamo·21h ago
Featurekamo-register

Show TRIAL USE ONLY pill above Powered-by for trial orgs

Refactors PoweredByKamo into a fixed column stack and self-fetches /api/trial-status/{host} (proxy to SecurityService public trial-status endpoint), rendering a...

Kamo·21h ago
Featurekamo-login

Show TRIAL USE ONLY pill above Powered-by for trial orgs

Self-fetches /api/trial-status (proxy to SecurityService public trial-status endpoint, resolved by login host) and renders an amber pill above the Powered-by pi...

Kamo·21h ago
FeatureSecurityService

Per-loan third-party (LOAN) document viewer — appraisal/title/flood

Completes the doc-review byte path started with the vault viewer. LOAN-collection imgs (appraisal/title/flood) are refused by the generic imaging endpoints (per...

Kamo·1d ago
FeatureSecurityService

Per-party vault document viewer — bytes were write-only, now review-able

Uploaded vault documents (pay stub / Gov ID / bank statement) were write-only: the generic imaging byte endpoints refuse ACCOUNT_MEMBER_VAULT (per-party PII loc...

Kamo·1d ago
FeatureSecurityService

Catalog gateway — the missing proxy that blocked tenant pricing

Catalog was the ONLY MLOS bounded context with no SecurityService gateway, so a tenant's catalog could never be authored/seeded from the console and BorrowerQuo...

Kamo·1d ago
FixAIService

Load history images via query, not lazy getImages() (WS path)

**************** runs on the WebSocket path (called from AiChatWebSocketHandler), which is NOT an HTTP request, so open-session-in-view does not apply. Iteratin...

Kamo·1d ago
FeatureDaemonService

Durable consumer forwards investor purchase to loan-file FUNDED

MlosLoanFundedConsumer subscribes **************** (durable daemon-mlos-loan-funded) and forwards each purchase to SecurityService's /funded pipeline endpoint v...

Kamo·1d ago
FeatureSecurityService

Loan-sale desk proxy + CLOSED->FUNDED pipeline seam

- **************** generalized the eClose seam to a shared advance() + added POST /funded (CLOSED -> FUNDED on investor purchase). Same idempotent/at-least-on...

Kamo·1d ago
Featurekamo-shared-library

Commitment boardedAt + loan-funded event type (loan-sale desk)

- MlosCommitment.boardedAt: in-system marker for a PURCHASED commitment's loans boarded to servicing (the external servicing-system handoff is the blocked leg...

Kamo·1d ago
Featurekamo-shared-library

Commitment/loan-sale desk entities (runtime consumer for the shipped investor config)

Slice 2 foundation for the capital-markets loan-sale desk (doc 08) — the terminal origination stage. The shipped **************** had NO runtime consumer; these...

Kamo·1d ago
FeatureDaemonService

Durable consumer forwards eClose completion to the loan-file pipeline

The DaemonService half of the eClose -> loan-file status seam. New MlosClosingCompletedConsumer subscribes **************** (durable daemon-mlos-closing-complet...

Kamo·1d ago
FeatureSecurityService

EClose completion advances the loan-file status machine (CLEAR_TO_CLOSE -> CLOSED)

Closes the terminal lifecycle seam: a fully executed/notarized/sealed eClose package emitted **************** but NOTHING consumed it, so the loan sat at CLEAR_...

Kamo·1d ago
Featurekamo-shared-library

ClosingArtifact provenance = one-time null->value stamp (enables after-commit eClose dispatch)

Splits the ClosingArtifact @PreUpdate WORM guard so the eClose vendor dispatch can move OUT of the assemble/advance transaction (doc 05 §6): the node commits FI...

Kamo·1d ago
FeatureSecurityService

Proxy the per-loan lock recommendation (read-only)

GET **************** (operator+org gated, org server-stamped) -> the RCE per-loan LOCK/WAIT/BLOCKED recommendation. The commit stays the existing human /locks a...

Kamo·1d ago
Featurekamo-shared-library

EClose vendor categories (RON/ENOTE/EVAULT/MERS) + artifact-by-externalRef finder

- VendorCategory gains the four notarized-leg rails so the integrations tab can configure a per-org RON/eNote/eVault/MERS vendor (additive STRING enum, no CHE...

Kamo·1d ago
FixSecurityService

Rate-lock commit gate + cross-org loan resolution + borrower vendor-order projection

Verified defects from the session review: - CRITICAL: commitLock hardcoded **************** which the RCE commit engine rejects with a 400 (only LOCK_ELIGIBLE...

Kamo·1d ago
FeatureSecurityService

Proxy signed-doc download, delegation passthrough, vendor events, AUS waiver/validation write, non-QM detail, condition-template write

- Disclosure: GET **************** (steward, LOS_VIEW_PIPELINE) + GET **************** (borrower party-scoped), both byte-relaying the executed PDF from ESi...

Kamo·1d ago
FeatureESigService

Internal signed-document download + recipient delegation fields

- GET **************** streams the executed (flattened) PDF for an org-owned envelope (404 until fully signed). - RecipientSummary carries **************** ...

Kamo·1d ago
FeatureSecurityService

Proxy the org product catalog for the run-trigger picker

GET **************** (operator+org gated; org-scoped by the downstream query, passthrough) → MLOSPricingService product list.

Kamo·1d ago
FeatureSecurityService

Steward disclosure void + status-sync + resend (native eSign)

- Void (#3): POST /esign-envelopes/{id}/void voids the live KAMO_NATIVE envelope in ESigService THEN mirrors the local stub to EsignStatus.VOIDED (stub demote...

Kamo·1d ago
FeatureSecurityService

Proxy vendor-order cancel (staff, loan-bound)

Expose POST **************** — staff-only, org resolved server-side, and the order must belong to THIS application's loan (verified against the loan's order lis...

Kamo·1d ago
July 16, 2026
FeatureESigService

Surface recipient decoder reason + internal resend endpoint

- RecipientSummary now carries decoderReason + decoderdAt (persisted by the decoder ceremony but previously omitted from every projection), so a compliance-...

Kamo·1d ago
FeatureSecurityService

Proxy steward write/read gaps — AUS **************** lock lifecycle events, LLPA blast-radius, eClose RON-fallback + workflow-template publish/detail, loan clearability

Closes the SecurityService side of a batch of verified proxy gaps where an MLOS engine capability existed but no browser-reachable proxy did: - underwriting: G...

Kamo·1d ago
FeatureSecurityService

Proxy closing-package retry-step + cancel (org-ownership checked)

Kamo·1d ago
FeatureSecurityService

Proxy closing-package assemble (light up the eClose write side)

POST **************** (operator-gated, org-stamped) → MLOSDocOrchestration assembler: resolves the tenant closing-workflow template as of the closing date + mat...

Kamo·1d ago
FeatureSecurityService

Transparent loan close-readiness endpoint (real milestones)

GET /mortgage-apps/{uid}/readiness (party-gated) → a weighted composite of REAL, explainable milestones (submitted / documents satisfied / conditions cleared / ...

Kamo·1d ago
FeatureSecurityService

Carry mortgageInsuranceOmitted into the borrower payment view

Kamo·1d ago
FeatureSecurityService

Borrower payment-estimate endpoint (full PITIA, safe subset)

GET **************** (party-gated) → the borrower's estimated full monthly housing payment + components, a BORROWER-SAFE subset of the underwriting qualificatio...

Kamo·1d ago
FeatureSecurityService

Proxy the loan qualification read (operator-gated)

Kamo·1d ago
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·1d 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·1d 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·1d 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·1d 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·2d 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·2d 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·2d 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·2d 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·2d 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·2d 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·2d 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·2d 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·2d ago
Live Change Log | KamoCRM | KamoCRM