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
May 15, 2026
Featurekamo-shared-library

Hash-chain LoanPipelineMilestone rows for tamper detection

LoanPipelineMilestone gains PREVIOUS_MILESTONE_SHA256. On every transition, LoanPipelineService computes the SHA-256 of the previous milestone's canonical form ...

Kamo·4mo ago
Featurekamo-internal

Surface HMDA LAR validation issues in the UI

HmdaLarRecordDTO now carries an issues array; HmdaLarClient renders: - an amber banner above the table summarising rows-with-issues (Σ errors / Σ warnings) ...

kamo·4mo ago
FeatureSecurityService

GET /mortgage-apps/hmda/lar/issues count summary

Aggregates validation issues across the LAR for the given year and returns {errors, warns, rowsWithIssues} so the UI can render a one-line banner before the ope...

Kamo·4mo ago
Featurekamo-shared-library

HMDA LAR pre-export validation

New HmdaLarValidationIssue DTO (ERROR/WARN severity, field name, message). HmdaLarService now annotates each row in buildLar() with a list of issues covering th...

Kamo·4mo ago
Refactorkamo-internal

Unify all dashed empty-state boxes into <EmptyState />

A dozen inline copies of "rounded-xl border-dashed border-white/10 bg-white/[0.015] …" across the section files, the kanban column, the HMDA LAR list, and the a...

kamo·4mo ago
Featurekamo-internal

Surface preTransitionLint warnings in TransitionDialog

Both TransitionDialog implementations (detail Pipeline section + kanban board) now fire the lint endpoint when the user picks a target status and render an ambe...

kamo·4mo ago
FeatureSecurityService

Expose GET ****************

Surfaces **************** as an advisory pre-flight check the TransitionDialog fires when the user picks a target status.

Kamo·4mo ago
Featurekamo-shared-library

PreTransitionLint advisory for APPLICATION_TAKEN

New @Transactional(readOnly) method on LoanPipelineService returning a list of human-readable warnings for the APPLICATION_TAKEN target: missing SSN (last 4), D...

Kamo·4mo ago
Featurekamo-internal

Global toast queue with provider + useToast hook

New ToastProvider at the layout level renders a Framer Motion stack of context-managed toasts and exposes a typed useToast() API (success/error/info/warn). Pipe...

kamo·4mo ago
Refactorkamo-internal

Promote ModalShell/ModalActions and SaveSpot to shared modules

Eight section files plus the webhooks admin page each defined their own copy of ModalShell + ModalActions and/or a SaveSpot save-state chip. All now live in [ui...

kamo·4mo ago
RefactorSecurityService

Consolidate controller session/rights/response helpers in BaseLosController

Six LOS-area controllers (MortgageApp, MortgagePipeline, MortgagePricing, MortgageDisclosure, MortgageHmda, WebhookSubscription) each copied the same ~80 lines ...

Kamo·4mo ago
Performancekamo-internal

Merge partial DTOs into local state, drop refetch-after-patch

Every edit-style autosave (name fields, employment, assets, liabilities, REO, declarations, military, HMDA demographics, originator) used to issue a full mortga...

kamo·4mo ago
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
ChoreSecurityService

Webhook consumer + worker config in configmap

Backs the JetStream durable consumer in WebhookDeliveryWorker. Env-var overrides for the durable name, deliver-policy (set to All to replay backlog one-time), m...

Kamo·4mo ago
Featurekamo-shared-library

Durable JetStream consumer, executor isolation, timestamped signatures

Three changes bundled because they all live in WebhookDeliveryWorker and make sense together: 1. Switch from core NATS dispatcher to a JetStream durable push ...

Kamo·4mo ago
Featurekamo-internal

Recover gracefully from CONCURRENT_MODIFICATION on transitions

Promotes API error handling to a MortgageApiError class that preserves the backend error code; transition handlers in PipelineSection and the pipeline kanban de...

kamo·4mo ago
FeatureSecurityService

Translate concurrent-modification IllegalStateException to 409 with code

Pairs with the shared-lib optimistic-lock change: when LoanPipelineService throws "Concurrent modification: refresh and retry", surface a structured {error, cod...

Kamo·4mo ago
Featurekamo-shared-library

Optimistic-lock LoanFile.status to prevent racing transitions

Concurrent "Advance" clicks could both write milestones. Adds @Version to LoanFile and an explicit flush in LoanPipelineService.transition so the OptimisticLock...

Kamo·4mo ago
Featurekamo-internal

Name display, REO lien editor, webhook admin, string cleanup

Polish pass aligning the frontend with the corresponding backend changes: - Components now render the resolved *MemberName fields from the backend (PipelineS...

kamo·4mo ago
FeatureSecurityService

REO lien endpoints + webhook subscription controller

- MortgageAppController: POST /{uid}/reos/{reoId}/liens, PATCH /{uid}/reo-liens/{id}, DELETE /{uid}/reo-liens/{id} — delegating to the new BorrowerSectionSe...

Kamo·4mo ago
Featurekamo-shared-library

Name resolution, REO liens, TRID holidays, webhook delivery, ESignTemplate link

Cross-cutting polish pass across all LOS sub-projects: Member display name resolution (MemberNameResolver): - Single shared resolver service that follows the s...

Kamo·4mo ago
Featurekamo-internal

Pricing, disclosures, HMDA LAR UI

Three more sub-projects shipped end-to-end: Sub-project 5 — Pricing & AUS section on the detail page: - Pricing snapshots list with add dialog (program, invest...

kamo·4mo ago
FeatureSecurityService

Controllers for pricing, disclosures, HMDA LAR

Three new REST controllers under /api/security/mortgage-apps: - MortgagePricingController: pricing snapshots, rate locks, AUS findings CRUD ({uid}/pricing, {...

Kamo·4mo ago
Featurekamo-shared-library

Pricing snapshots, rate locks, AUS findings, disclosures, TRID timers, HMDA LAR

Sub-projects 5, 6, and 7 backend shipped together: Sub-project 5 (pricing & locks): - LoanPricingSnapshot — append-only quotes (program, investor, rate, APR,...

Kamo·4mo ago
Featurekamo-internal

LOS pipeline UI — kanban, detail section, template admin

Sub-project 4 frontend, end-to-end: - /applications/pipeline (PipelineBoardClient): kanban grouped by LoanFileStatus with off-ramp lanes below the happy-path...

kamo·4mo ago
FeatureSecurityService

MortgagePipelineController + LOS_PIPELINE configmap entry

Exposes the LOS pipeline backend under /api/security/mortgage-apps: - GET /pipeline — kanban summary - GET /{uid}/pipe...

Kamo·4mo ago
Featurekamo-shared-library

Pipeline state machine, conditions, templates, NATS events

Sub-project 4 (LOS pipeline & workflow) backend: - New enum LoanConditionStatus (OPEN/CLEARED/WAIVED) - New entities: LoanPipelineMilestone (append-only transi...

Kamo·4mo ago
Featurekamo-internal

Originator & Submissions sections UI

Closes out Sub-project 3: the originator route gets a two-block editor (individual NMLS + organization NMLS + org address) wired to patchOriginator with the sta...

kamo·4mo ago
Featurekamo-internal

HMDA Demographics section UI

Replaces the Coming-Soon placeholder for the hmda route. Ethnicity uses the tri-state lookup with an inline sub-checkbox block when Hispanic is selected (Mexica...

kamo·4mo ago
Featurekamo-internal

Military Service section UI

Replaces the Coming-Soon placeholder for the military route. The everServed switch upserts via mortgageAppsApi.putMilitary; toggling it off also clears the serv...

kamo·4mo ago
Featurekamo-internal

Real Estate Owned section UI

Replaces the Coming-Soon placeholder for the REO route. Each property card edits the address, occupancy/status/intended-use, market value, monthly insurance+tax...

kamo·4mo ago
Featurekamo-internal

Liabilities & Expenses section UI

Replaces the Coming-Soon placeholder for the liabilities route. Section 2c liabilities track unpaid balance, monthly payment, months remaining, and the three UR...

kamo·4mo ago
Featurekamo-internal

Assets & Credits section UI

Replaces the Coming-Soon placeholder for the assets route. Splits the borrower's asset list into Section 2a (bank/retirement/other accounts, type id < 50) and S...

kamo·4mo ago
Featurekamo-internal

Employment & Income section UI

Replaces the Coming-Soon placeholder for the employment route with a full URLA Section 1d-1g editor. Per-borrower chip selector mirrors the declarations pattern...

kamo·4mo ago
Featurekamo-internal

URLA 2021 mortgage application UI

Adds the new /applications route group, the typed mortgageAppsApi client that talks to SecurityService /api/security/mortgage-apps, full TS types mirroring the ...

kamo·4mo ago
FeatureSecurityService

MortgageAppController for URLA 2021 REST surface

New REST controller exposing the full URLA application lifecycle: GET /api/security/mortgage-apps list (summary) GET ***************...

Kamo·4mo ago
Featurekamo-shared-library

URLA service layer (repos, DTOs, services, lookups)

Adds the full backend service layer for the URLA package introduced in the previous commit: repos/applications/ 20 JpaRepositories scoped per entity ...

Kamo·4mo ago
Featurekamo-shared-library

URLA 2021 schema foundation for residential mortgage

Refactor AppMortgage into a full URLA package root supporting multiple 1003s per loan with up to two borrowers per pair (married/joint or unmarried). Replaces t...

Kamo·4mo ago
May 12, 2026
Fixkamo-register

Resolve subdomain-tenant org bucket to its own MinIO folder

getThemePath() was reducing the hostname to apex+tld for both the themed host and the bucket folder, so subdomain tenants like gnosia.demo.kamocrm.com loaded th...

Kamo·4mo ago
Fixkamo-login

Resolve subdomain-tenant org bucket to its own MinIO folder

getThemePath() was reducing the hostname to apex+tld for both the themed host and the bucket folder, so subdomain tenants like gnosia.demo.kamocrm.com loaded th...

Kamo·4mo ago
Fixkamo-internal

Route NavTop picker through /me/language

The picker called the generic member PUT, which SystemUserGuard 403s for the System User signed into a sub-org. The catch logged silently, so the kamo-locale co...

kamo·4mo ago
FixSecurityService

Add /me/language endpoint that bypasses SystemUserGuard

The NavTop language picker did nothing for the System User signed into a sub-org: PUT **************** runs SystemUserGuard first, which 403s every System-User ...

Kamo·4mo ago
Fixkamo-internal

Resolve subdomain-tenant org bucket to its own MinIO folder

getThemePath() was reducing the hostname to apex+tld (mainDomain.tld) for both the themed host AND the bucket folder. For subdomain tenants like gnosia.demo.kam...

kamo·4mo ago
Fixkamo-internal

Stop clipping dark-variant color inputs in ModernColorGroup

Color picker rows had a hardcoded 280px wrapper inside a 1fr 1fr grid with overflow:hidden, so the input was chopped on narrow columns. Use flex:1 + minWidth:0 ...

kamo·4mo ago
Fixkamo-internal

Treat thrown subscription stub as no-subscription, not error

The legacy getCurrentSubscription stub throws by design so callers fall back to the ungated path. StatsManager was surfacing the throw as "Could not load subscr...

kamo·4mo ago
Fixkamo-internal

Return empty meters instead of null from getCurrentUsage

StatsManager rendered <UsageMeters usage={null}> when the legacy stub resolved to null, crashing on usage.meters. Return { meters: [] } so the component takes t...

kamo·4mo ago
Fixkamo-internal

Gate My Account slide-out section on CONFIGURE_SYSTEM

Hide the "My Account" menu from members who lack CONFIGURE_SYSTEM so they don't see links (Stats & Costs, Apps & Features, Branch Types, Automation Streams) tha...

kamo·4mo ago
Otherkamo-internal

Revert "fix(account-settings): auto-route child-org owners to their permitted org"

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

kamo·4mo ago
Fixkamo-internal

Auto-route child-org owners to their permitted org

When /settings/account loads for a user who lacks CONFIGURE_SYSTEM on the current org, the previous behavior was a silent redirect to /settings — a dead-end for...

kamo·4mo ago
Fixkamo-internal

Use full FQDN, not eTLD+1, when fetching org by domain

registrableDomainFromAlias strips any multi-label subdomain (e.g. "gnosia.demo.kamocrm.com") down to its eTLD+1 ("kamocrm.com"). That was fine for the API base ...

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