KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

18,391
Total Changes
6,526
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,391AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService619InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,995TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,691kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,824kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,526Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
November 11, 2026
Featurekamo-internal

The lender words its own text-message consent in Borrower Guide settings

A 'Text Message Consent Wording' field beside the guide's name and opening line, with help for a first-time admin and a preview of the checkbox exactly as a bor...

KamoΒ·5h ago
FeatureSecurityService

APR beside a locked rate, an explicit clear for "I'm Not Sure", the lender's consent wording, and team photos that load on any portal domain

- Workspace rate lock: when the loan officer recorded an APR on the pricing snapshot behind a loan-desk lock with the SAME rate, the posture carries it as a...

KamoΒ·5h ago
Featurekamo-shared-library

A gift saves as a true PATCH, the lender words its own text consent, and a borrower's full consent wording is kept

- AppMortgageService.patchGift merges the request over the stored gift, so saving one field no longer clears the amount, donor and recipient. - LenderProfile....

KamoΒ·5h ago
FixSecurityService

The loan and property endpoints are true PATCHes

KamoΒ·6h ago
Fixkamo-shared-library

Saving the property's address keeps its purchase price, and saving a loan amount keeps the loan's purpose

**************** merge the request over the stored loan and property before the whole-record update.

KamoΒ·6h ago
FixSecurityService

The portal's job, account, debt, other-income and expense edits are true PATCHes

Each endpoint now merges the request over the stored row (shared library patch* methods), so changing a job's title no longer fails on the NOT NULL employment t...

KamoΒ·6h ago
Fixkamo-shared-library

Editing one field of a job, account, debt, other income or expense keeps the rest of the row

Those updates replaced every column, and EMPLOYMENT_TYPE_ID is NOT NULL, so the portal's one-field edits either failed or blanked the rest. **************** mer...

KamoΒ·7h ago
FeatureEmailService

Sample values for the co-borrower request and its one-time code, so the admin preview renders them

Rebuilds EmailService onto the shared library that carries the MICRO_ACTION_REQUEST and MICRO_ACTION_CODE templates (an org seeds a missing template on first se...

KamoΒ·7h ago
FeatureSecurityService

Co-borrower requests and phone capture links, borrower saves as true PATCH, and document readings that say which page they came from

- MicroActionService + PortalMicroActionController (/portal/micro/{token}): a signed, single-use link. A request to the other borrower (confirm income, check ...

KamoΒ·7h ago
Featurekamo-shared-library

A micro action remembers the last document a phone capture uploaded

DDL (last_document_id UUID) applied by hand as the owner role before this push.

KamoΒ·7h ago
Featurekamo-shared-library

Borrower PATCH keeps what a screen did not send, declarations read and save under their URLA names, and single-use co-borrower requests

- BorrowerPatchMerge + **************** the request is laid over the stored borrower, so saving Your Info no longer wipes citizenship, dependents, housing or ...

KamoΒ·7h ago
Featurekamo-internal

Void Invoice, Email Receipt, and a retail order's Invoice tab

The work order's Invoice tab becomes RecordInvoice (app/components/invoices), generic over its record: the record (a work order or a retail order), whether it c...

KamoΒ·7h ago
FeatureEmailService

Preview variables for the invoice and invoice receipt emails

commerce.invoice_sent and the new commerce.invoice_receipt (a paid work order or order invoice's receipt) get sample variables, so the template editor's preview...

KamoΒ·7h ago
FeatureSecurityService

Void Invoice, Email Receipt, and a retail order's Invoice tab

RecordInvoiceController is the Invoice tab's door for any record - list, Create Invoice, read, PDF, Record Payment, Void Invoice, delivery, send, link - with on...

KamoΒ·7h ago
Featurekamo-shared-library

Void records who, an order's invoices on an index, and the invoice receipt template

**************** (VOIDED_BY_MEMBER_ID) so a voided invoice shows who voided it; IX_INVOICE_ORDER and **************** for a retail order's Invoice tab; ********...

KamoΒ·7h ago
TestSecurityService

The application read names persona, selectedProgramCode, ownsNoRealEstate and realEstateOwnedCount

Pins the wire names the borrower portal reads, and rebuilds SecurityService onto the shared library that added them (a shared-library-only change deploys nothin...

KamoΒ·8h ago
Featurekamo-shared-library

The application shows its persona and chosen program, and a borrower can say they own no real estate

The application read now carries persona and selectedProgramCode (enum names, read-only). A borrower can answer URLA section 3 "I do not own any real estate" (o...

KamoΒ·8h ago
Fixkamo-internal

The saved-audience estimate takes the hook's null selection

useAudienceEstimates hands its fetcher null for nothing chosen yet, and AudienceCard and AudienceEditor pass audienceApi.estimate as that fetcher, which only to...

KamoΒ·8h ago
Featurekamo-shared-library

Record lead events for drips that start when someone enters a saved audience

AUDIENCE_ENTERED drips listen to lead created, status changed, reassigned and credit assigned, so an existing lead that comes to match the audience is noticed.

KamoΒ·8h ago
FeatureEmailService

Audience filters on every trigger, account and loan triggers, enroll by filter

TriggerConfig gains leadFilter, accountFilter, loanFilter, loanStatuses, audienceId and includeExisting; a drip saved with the flat market/vendor/ product/state...

KamoΒ·8h ago
Fixkamo-internal

CapabilityCheck takes options whose capabilities may be absent

AccountFilterSection passes AudienceOptionsLike, where capabilities is optional, and the build failed type-checking on it. hasCapability already reads a missing...

KamoΒ·8h ago
FeatureSecurityService

Borrower consents are recorded as evidence, submit needs them, and each signer opens only their own link

A borrower now gives five consents in the portal, each its own versioned text per lender (default v1 seeded with its hash on first touch, a lender overrides wit...

KamoΒ·8h ago
FeatureSecurityService

The borrower's workspace knows their loan team, lock, rate watch and what happened

A new /mortgage-apps/{uid}/workspace surface for the MLOS borrower portal, gated like the application's own reads (staff who see the loan, or a party to it): - ...

KamoΒ·8h ago
FeatureSecurityService

A borrower's own "text me updates" tick records SMS consent on their lead

The borrower portal's save-my-spot form now offers an optional text-message consent checkbox. When the borrower ticks it and gives a phone number, the lead gets...

KamoΒ·8h ago
FixSecurityService

Talk It Through no longer 500s when the portal sends no flow

Set.of(...).contains(null) throws, so a request without a flow hint (the funnel before a purpose is chosen) answered 500. Found by a live probe after deploy. fl...

KamoΒ·8h ago
Featurekamo-internal

Who Qualifies on every trigger, saved-audience/account/loan triggers, and enroll by filter

- Every lead trigger narrows with the shared Audience Builder's lead section ("Who Qualifies"), saved as config.leadFilter; old drips' flat market/vendor/prod...

KamoΒ·9h ago
Featurekamo-internal

Drag the widget tiles in the home page drawing, not the list

The drag belongs on the "Your home page" grid at the top of My Widgets, so that is now where it lives. Widget tiles are dragged exactly like panes on the launch...

KamoΒ·9h ago
Featurekamo-internal

Email Invoice and the customer's link on the Invoice tab, and an account's invoices

The Invoice tab gets a Send to Customer card: Email Invoice (recipient prefilled from the account and editable, an optional note, and the email exactly as the c...

KamoΒ·9h ago
Featurekamo-internal

A Borrower Guide tab β€” the lender names and pictures the one guide on its borrower portal

Owner decision 2026-11-11: one guide per lender, in the lender's colours. The MORTGAGE market gets a Borrower Guide tab (?tab=borrower-guide): the guide's pictu...

KamoΒ·9h ago
FeatureSecurityService

Email a work order's invoice, and its customer link on the signer's invoice page

The public "view your invoice online" page already exists for subscription invoices: the signer app's sign.<org domain>/<locale>/i/<token>, branded, phone-ready...

KamoΒ·9h ago
FeatureSecurityService

The lender names its borrower guide, and the portal can Talk It Through (SI)

Owner decisions 2026-11-11 (KamoMLOS borrower-portal overhaul, stream S5). Borrower guide (one per lender): - BorrowerGuideService stores the guide's name, gre...

KamoΒ·9h ago
Featurekamo-shared-library

Keep a borrower's ITIN or passport, and add the consent scopes the portal records

A borrower without a Social Security number can now give an ITIN or a passport number, or choose to give it to their loan officer. Each number is encrypted at r...

KamoΒ·9h ago
Fixkamo-internal

The loan filter's Loan Purpose lists a loan's own purposes

A loan's purpose ids (the URLA list) differ from a lead's, so the loan section reads the options' loanFilePurposes rather than the lead list.

KamoΒ·9h ago
Featurekamo-shared-library

A work order invoice's customer links and sends, and an index for an account's subscription invoices

CommerceInvoiceLink (commerce_invoice_links): one view-online link per row, stored as the SHA-256 of a 256-bit token, never the invoice id; expires_at, revoked_...

KamoΒ·9h ago
Featurekamo-shared-library

A borrower can keep a rate watch on their loan, and a deal can have a closer

BorrowerRateWatch (mlos_borrower_rate_watch, created by hand as the owner role) holds a borrower's opt-in "tell me if rates drop" preference for one application...

KamoΒ·9h ago
FixEmailService

Keep filter subqueries on their row-key indexes, and test them

EXPLAIN against the live catalog showed the planner driving callback, loan status and rate lock subqueries from their status indexes (every such row on the plat...

KamoΒ·9h ago
Featurekamo-shared-library

The lender profile names and pictures the borrower guide

Owner decision 2026-11-11: one guide per lender on the KamoMLOS portal, named and pictured by the lender. Three nullable columns on mlos_lender_profile β€” guide_...

KamoΒ·9h ago
Featurekamo-internal

One Audience Builder for leads, accounts and loans, and Saved Audiences

- Shared Audience Builder **************** lead, account and loan sections driven by AudienceOptions; a control shows only when the server lists its capabil...

KamoΒ·9h ago
Docskamo-internal

The Notification Center lists every current kind

Adds Sales Floor, Remote monitoring, Request to share, Invoice, Confirm it was you, SI Assistant answer, the three Antivirus kinds, Contact request and decision...

KamoΒ·9h ago
FeatureEmailService

Lead/account/loan audience filters, saved audiences and audience options

Extends LeadAudienceFilter with status/sub status (include or exclude), assignment, source, created/assigned/last-activity date rules, callback, birthday, loan ...

KamoΒ·10h ago
Featurekamo-internal

Drag and drop to reorder widgets on My Widgets

The widgets page is now split into On Your Home Page (in the order the launchpad draws it) and Not On Your Home Page. The first list is sortable: drag a card an...

KamoΒ·10h ago
Featurekamo-internal

Domain Setup can send as the domain itself, extends SPF instead of replacing it, and offers extra protection

- Add a domain: step 2 chooses between a separate sending name (recommended) and the domain itself. For the domain itself, the senders its SPF already lets ...

KamoΒ·10h ago
Fixkamo-internal

The preview is the whole page

Page picker and device widths are gone. Refresh, Ask for a Change and Open Full Screen take the status pill's place in the header on the Preview tab, and the we...

KamoΒ·10h ago
Featurekamo-internal

The bill pill turns red when due and shouts when overdue

DUE was a muted amber with a slow breath and read as a notice, not a bill. Both warning states are now red and differ in intensity: DUE breathes a glow and ping...

KamoΒ·10h ago
FeatureEmailService

Send bulk mail from the domain itself, and extend SPF instead of replacing it

- A sending domain can now be the domain itself (acme.com), not only a name of its own (news.acme.com): create/lookup take root=true. Its records are SPF, D...

KamoΒ·10h 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