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
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Β·7h 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
November 10, 2026
Fixkamo-shared-library

A bankruptcy answer that is not a clear yes or no stays unset

The generic boolean reader treats every word it does not know as false, so a vendor's 'maybe' or 'n/a' became 'no bankruptcy' - a wrong claim about the borrower...

KamoΒ·1d ago
November 8, 2026
Fixkamo-shared-library

Job numbers from a locked per-org counter, never a count; payments on a commerce invoice

Work order numbers were COUNT(jobs)+1, so two jobs raised at once could share one, and jobs raised from a paid order (ServiceFulfillmentPolicy) got no number at...

KamoΒ·3d ago
Fixkamo-shared-library

Finicity and Truv links get their own connection types

Finicity links were recorded as PLAID_AUTH and Truv as ARGYLE, the 'nearest peer' mapping. A lender switching asset provider from Plaid to Finicity would have h...

KamoΒ·3d ago
Fixkamo-shared-library

A hold verdict that beats the upload's commit no longer strands the document

Found in the live HOLD-path test: with the engines ready, a brief hold is judged in milliseconds and the antivirus.hold.verdict event arrived ~30 ms BEFORE the ...

KamoΒ·3d ago
Fixkamo-shared-library

A customer added or edited in market settings keeps its name, email and phone

**************** ignored firstName, lastName, email and phone, so the market Customers tab created empty accounts and its edits to the person never saved. Prese...

KamoΒ·3d ago
Fixkamo-shared-library

A reseller credit pull records a vendor instead of failing to save

Connection.VENDOR is NOT NULL, but CreditOrderService only stamped a vendor when the key was a direct bureau. Every reseller key (Xactus, Credit Plus, MeridianL...

KamoΒ·3d ago
Fixkamo-shared-library

A subscription can only be ordered or priced from a catalog on offer to the org

createOrder and calculatePrice looked a plan up by id alone, so a member of one tenant could order, or read the pricing of, another tenant's plan. A plan is now...

KamoΒ·3d ago
Fixkamo-shared-library

BLAKE3-256 that is 32 bytes on every BouncyCastle on the classpath

new Blake3Digest(256) is 256 BITS on bcprov 1.78 but 256 BYTES on bcprov-jdk15on 1.70, which this library brings and which loads FIRST in services that also dec...

KamoΒ·3d ago
November 4, 2026
Fixkamo-shared-library

An updated invoice keeps its due date; an overdue one takes no new charges

Re-sending an updated invoice moved its due date forward, which quietly forgave what the customer already owed late. It now keeps its date and only restarts rem...

KamoΒ·1w ago
November 2, 2026
Fixkamo-shared-library

A stage move names itself, and a rate change can start a stream

A status set off a call wrote its contact attempt as a CALL, so a stage move into a Contacted stage read "Call Β· Conversation". The attempt now says STAGE_MOVE ...

KamoΒ·1w ago
Fixkamo-shared-library

View Loan Revenue & Cost hangs off own loans

Hanging off the whole pipeline made the own-loans rule unreachable: a holder without View Mortgage Pipeline lost the right at sign-in.

KamoΒ·1w ago
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-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-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-shared-library

Keep LeadImportRequest's line endings

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
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
October 31, 2026
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
October 28, 2026
Fixkamo-shared-library

A final outcome set in Kamo obeys "push stage from Kamo" too

With the setting off, a person marking a loan denied or withdrawn in Kamo still sent ADVERSE_LOAN to Arive. Off now means nothing a person does to the status in...

KamoΒ·2w ago
Fixkamo-shared-library

The LAR is filed in HMDA codes β€” sex no longer reversed, refinance split, real edit checks

HmdaLarService wrote the application's own (URLA-order) values straight onto the Loan Application Register. The filing file was wrong in ways the HMDA platform ...

KamoΒ·2w ago
October 26, 2026
Fixkamo-shared-library

Retry the pipeline board read on a Yugabyte read restart; ignore impossible Arive dates

The board loads every loan over several statements; a concurrent write (the Arive import) made Yugabyte fail a later one with 40001, shown to the user as a raw ...

KamoΒ·2w ago
Fixkamo-shared-library

Use the org's own mortgage market, whatever it is titled

ensureMortgageMarket matched only the title "Residential Mortgage Loans", so an org that had renamed its market ("Loans", "KamoMLOS") got a second, empty mortga...

KamoΒ·2w ago
October 23, 2026
Fixkamo-shared-library

Invoice links keep working after a resend or reminder; a late-sent invoice is not chased the same hour

Every send and reminder minted a new view-online token and replaced the old one, so the link in the first email Harmony received read "no longer available" once...

KamoΒ·2w ago
Fixkamo-shared-library

The invoice link's token hash never serializes

KamoΒ·2w ago
October 22, 2026
Fixkamo-shared-library

Approving a card order grants paid access too

AUTO_BILL orders waited for a Stripe checkout that subscription invoicing no longer uses; the ledger charges the saved card on each billing day instead.

KamoΒ·2w ago
Fixkamo-shared-library

Subscription events store JSON states; billing steps run one row per transaction

**************** are jsonb, and every caller wrote a bare status like ACTIVE - an invalid JSON insert that rolled back whatever it was auditing (order activatio...

KamoΒ·2w ago
Fixkamo-shared-library

Name the organization that owns a subscription catalog row

The catalog update/delete methods take a uid alone, so a caller holding the catalog right in any organization could edit another organization's plans, prices, a...

KamoΒ·2w ago
October 19, 2026
Fixkamo-shared-library

A dat's object key also asks the inbound MMS parts that hold it (SITP MMS)

VOIPService now keeps the pictures and files people text in (VOIP_MESSAGE_ATTACHMENT) through storeContentAddressed, with no Img row. storageExtension found a d...

KamoΒ·3w ago
Fixkamo-shared-library

A god-mode window is open only until its stamped end (SessionPlatformFacts)

godModeActive() now also needs godModeExpiresAt (epoch millis, number or string) to be after now. SecurityService masks an elapsed window only for its own gates...

KamoΒ·3w ago
October 18, 2026
Fixkamo-shared-library

Clinical audit rows keep purpose/basis/patient; updated_at stamped on every save (SITP TP23FU)

PhiAccessRecorder stamped occurredAt by rebuilding each event from a field list written before the clinical columns existed, and no caller sets occurredAt, so e...

KamoΒ·3w ago
Fixkamo-shared-library

Deleting a mortgage application no longer 500s, and a received one is kept (SITP TP21FU)

DELETE **************** failed for every application: AppMortgageService.delete removed the borrowers through the JPA cascade while borrower_declarations / borr...

KamoΒ·3w ago
Fixkamo-shared-library

IotConnectionCheck is append-only without @Immutable (every link failed with a 500)

Hibernate 6.5 reads the database-generated checked_at back after the INSERT and then sets a lock mode on the entry; an immutable entry refuses it **************...

KamoΒ·3w ago
Fixkamo-shared-library

Keep hook-token and share-token hashes out of JSON; the OAuth secret prefix is a label

**************** was red on main: **************** and previousHookTokenHash, **************** and previousHookTokenHash, and IotShare.tokenHash had no @JsonIgn...

KamoΒ·3w ago
October 14, 2026
Fixkamo-shared-library

Seat an organization's existing staff when its subscription is set up

A comp, like a first purchase, created its seats UNASSIGNED and seated the owner alone. Everyone else waited for the owner to hand seats out in Billing, which n...

KamoΒ·3w ago
Fixkamo-shared-library

The default Live Support welcome no longer promises someone 'shortly'

Nobody on the team is notified until the visitor sends their first message, so the default now says that: send a message to reach the team, they're notified whe...

KamoΒ·3w ago
Fixkamo-shared-library

SubscribeQueueBatch binds a WorkQueue stream with DeliverPolicy.All

IOT_EVENTS is a WorkQueue stream (IoT SP00-D6) and NATS refuses any other deliver policy there (10101), so iot-service crashlooped at boot. The policy is read f...

KamoΒ·3w ago
Fixkamo-shared-library

An Img keeps the extension its content is stored under β€” on dedup and on rename

fileExt is part of the storage key (<imgDatId>.<ext>) every reader builds, but dedup matches on the BYTES. Content already held arriving under another name (a ....

KamoΒ·3w ago
Fixkamo-shared-library

Vet and pin every webhook target, return only failure categories, encrypt signing secrets

The outbound webhook worker POSTed to whatever URL a subscriber stored, from inside the cluster, with no egress control - a subscription aimed at **************...

KamoΒ·4w ago
Fixkamo-shared-library

Read the bulk-export and exchange-document sweeps instead of reporting 0

OrgObjectStorageSweep writes BULK_EXPORTS and EXCHANGE_DOCUMENTS rows into object_storage_days, but OrgStorageAggregator only read that table for BRANDING and D...

KamoΒ·4w ago
October 13, 2026
Fixkamo-shared-library

A market save rejects a missing or unknown custom form

Both association loops skipped a null form id, or one the organization does not own, and the save still returned success. That is how every market lost its form...

KamoΒ·4w 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