KamoCRM

Live Change Log

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

18,392
Total Changes
6,527
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,392AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService619InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,995TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,692kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,824kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,527Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
November 1, 2026
Fixkamo-shared-library

A stream filter starts from the stream's runs, never the org's leads

On the largest org the planner drove the EXISTS from all 795,946 leads. The caller now reads the runs first.

Kamo·1w ago
Fixkamo-internal

A pipeline column paints thirty cards, then more on request

Every loan was an animated card, so a status holding thousands of loans stalled the browser after the data arrived.

Kamo·1w ago
FixSecurityService

The applications list reads scalar pipeline rows

The list behind /commerce hydrated the URLA graph to fill a twenty-column row. It now uses the shared AppMortgageSummaryReader, and the parse test guards the re...

Kamo·1w ago
Fixkamo-shared-library

Read pipeline rows as scalars, so a large lender's board loads

The kanban read every application as a plain AppMortgage. Hibernate cannot proxy or batch the inverse one-to-ones, so each row cost about four more round trips;...

Kamo·1w ago
Fixkamo-internal

The scoreboard fits a phone

Kamo·1w ago
Fixkamo-internal

Never offer an upgrade that does not exist

The Apps screen told Harmony, on the top plan, to upgrade to a higher plan. An add-on app now names its add-on, and an app nothing can unlock is left off the sc...

Kamo·1w ago
FixSecurityService

A paused seat loses its capabilities too

Kamo·1w ago
FixSecurityService

A paused seat does not count as a license

Kamo·1w ago
FixSecurityService

A paused seat grants nothing; the Apps screen says how an app can be had

A paused subscription's licenses stay assigned, ready for the resume, and grant nothing. Each app an organization lacks now carries how to get it: an add-on, a ...

Kamo·1w ago
FixBillingService

Nothing suspends or cancels a customer for owing money

DunningSweep took seats away after the grace period and cancelled the subscription at thirty days. Both are gone: a past-due bill is chased, and only a manual p...

Kamo·1w ago
Fixkamo-shared-library

Owing money never stops service; only a manual pause does

A past-due subscription stayed live for seven days and then lost everything on the clock. It now stays live for as long as it is past due. A manual pause was th...

Kamo·1w ago
Fixkamo-internal

Close the pipeline switch's slotProps

Kamo·1w ago
Fixkamo-shared-library

Keep LeadImportRequest's line endings

Kamo·1w ago
FixVOIPService

A text that may have gone is never called a refusal

Telnyx reported every ProviderException as REJECTED, and its client wraps a timeout in that type, so a timed-out text read as not sent and a stream's retry coul...

Kamo·1w ago
Fixkamo-shared-library

Do Not Contact's stop commits

LeadService runs it after its own commit, where a plain transactional call joins the finished transaction and the write is lost without an error. It now runs in...

Kamo·1w ago
FixEmailService

Only write to an owner about domains they have verified

An unverified domain is only a name someone typed in, and the letter's steps assume its owner controls the DNS. Such a domain now counts as nothing to do, so an...

Kamo·1w ago
FixMCPGatewayService

A floor duty's own bookkeeping asks no approval

A supervised SI asked a person to approve its briefing, which would mean an approval per email in triage. These writes are the duty the org set up; si_briefing_...

Kamo·1w ago
Fixkamo-shared-library

Going quiet also reads the communication record

The contact rollup has no history from before it was added, so every older lead read as quiet, including ones called this week. A lead is now quiet only when th...

Kamo·1w ago
Fixkamo-shared-library

No next action reads a lead's real tasks

The Tasks tab lists checklist items linked to the lead, and LEAD_TASK is the table those migrated from, so a lead with an open task still read as having nothing...

Kamo·1w ago
Fixkamo-shared-library

The two-systems guard finds a borrower by phone and email

Almost no lead carries an account, and a loan adopted from another system has no lead, so the guard follows the lead's phone and email to any borrower on a loan...

Kamo·1w ago
FixSecurityService

Automated and approved loan moves answer to the linked-loan rule

One LinkedLoanRule now decides for stage moves and for loan milestones. With no person a loan linked to an external LOS does not move. A review approval moves o...

Kamo·1w ago
FixEmailService

Send as an org's domain when its SPF or DKIM authenticates us

A published DKIM key now puts the org's domain on the From by itself, with the envelope left on the platform so a strict SPF record cannot sink the message. SPF...

Kamo·1w ago
FixSecurityService

Keep DKIM verified on a sweep, as SPF is

dkim_verified only moved when an owner reopened the DKIM card. It now decides whose name an org's mail carries, so a published record has to count by itself.

Kamo·1w ago
FixKlusterServices

Relay for an org domain whose SPF names us

An org that set up SPF correctly was refused by the relay's sender rule, so its NoReply mail fell back to the platform address. EmailService lists those domains...

Kamo·1w ago
Fixkamo-internal

Keep a consent mapping when an intake endpoint is saved and reopened

The mapping screen offered consent fields, but the save and load conversions read the fixed field list, so a consent mapping was dropped without a word.

Kamo·1w ago
Fixkamo-internal

Let the Contact rules tab take the props its page passes

The account settings page hands every tab its tab and title, and this panel declared no props, which failed the type check and blocked every kamo-internal deplo...

Kamo·1w ago
Fixkamo-internal

Show the loan status picker on mortgage markets

A mortgage market's sales type is SERVICE; RESIDENTIAL_MORTGAGE is its sub-type.

Kamo·1w ago
Fixkamo-internal

Offer a stage's loan status on a mortgage market

The settings read the market's sale type, which the server sends as SERVICE, so the loan status picker could never show. It reads the sub-type now. The missing ...

Kamo·1w ago
Fixkamo-internal

The loan status picker's empty choice type-checks

The Select holds a number or an empty string, and this comparison stopped the kamo-internal build.

Kamo·1w ago
Fixkamo-internal

Read the catalog and refusals as automation-service sends them

With the service deployed, its source showed the contract's prose left shapes open, and the canvas had guessed them differently. Each of these failed quietly ag...

Kamo·1w ago
October 31, 2026
FixInitializerService

Drop the full status range check on loan_files

0-19 was exactly full, and the next LoanFileStatus is ordinal 20. Applied by hand on 2026-10-31; listed here so a rebuilt database loses it too.

Kamo·1w ago
Fixkamo-shared-library

Canonical templates draw spacers without zero-size text

38 templates drew colour bands and gaps as font-size:0 cells holding  , which spam filters score as hidden text. EmailService rewrites these at send time f...

Kamo·1w ago
Fixkamo-internal

Add an alias domain through the mail-only door

The card posted to /api/security/domains, which refuses any organization that already has a domain, so adding one failed for everybody. It now uses ************...

Kamo·1w ago
FixEmailService

Sign calendar invitations from an org domain as well

EmailSmtpService.send carried no domain signer, only sendAsMember did, so an invitation sent from an alias domain left unsigned while the member's ordinary mail...

Kamo·1w ago
FixKlusterServices

An alias domain's senders may relay, and drop the dead Mailgun password

EmailService sends over port 25 from mynetworks without signing in, and relay_sender_domains refuses anything but kamocrm.com and kamouniverse.com with a 451. E...

Kamo·1w ago
October 29, 2026
FixSecurityService

Forget an invoice's expired card payment page

An abandoned Stripe Checkout page (it expires unpaid after 24 hours) stayed on the invoice for good, so the invoice looked mid-payment: it could not be updated ...

Kamo·1w ago
FixEmailService

Outbound mail stops looking like spam: a plain-text part, a real Message-ID, no unreachable Reply-To, no zero-font spacers

rspamd's scan of 76 recent kamouniverse.com messages, fixed where each is built: - MIME_HTML_ONLY (75/76): every body is now multipart/alternative with a text/...

Kamo·1w ago
FixEmailService

An explicit alias at the default alias domain keeps the member on it

personalMailboxes() leaves out the primary mailbox's copy on an alias domain when the member holds an explicit alias at that address. When that copy was the org...

Kamo·1w 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