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
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Β·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
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
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
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
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
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
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
Fixkamo-internal

The same header and tabs as every other app, and no ribbon on the website

Manage Marketing Site now wears the gradient hero and underline tab bar that Marketing, HR and IoT use, instead of its own compact header with icon tabs. The co...

KamoΒ·10h ago
Fixkamo-internal

Full-width pages, and the preview is just the website

Preview drops the intro, the publish card and the being-built notice; the header's status chip and the Publish tab already say all three. Changes, Publish, Doma...

KamoΒ·11h ago
FixSecurityService

No read-only transaction around multi-read views; retry the edge routing read

YugabyteDB answered the edge's routing read with 'Restart read required' β€” a restart-read cannot be retried mid-transaction. Each read now runs as its own state...

KamoΒ·11h ago
Fixkamo-internal

Stream a request's pictures through the proxy as bytes

The relay read every success as text, which corrupts an image. GET **************** now passes the upstream body straight through, like source.zip.

KamoΒ·11h ago
FixKlusterServices

Record the 2026-10-30 public-IP hand patches so a full reconcile keeps them

coturn, MediaMTX, FreePBX (kamo-meet ACL + fail2ban) and KamoPBX were switched to k1m1's eno1 addresses 76.81.227.154/.155 by hand on 2026-10-30, and dovecot-im...

KamoΒ·12h ago
FixKlusterServices

Only known preview hosts under the wildcard sites.kamouniverse.com zone

*.sites.kamouniverse.com resolves here (wildcard A), and kamouniverse.com is an always-allow apex, so any scanner label or browser-only sibling ****************...

KamoΒ·12h ago
November 10, 2026
FixSecurityService

Accept-gate refusal no longer says both a note and a status are needed

The requirement is per market now.

KamoΒ·19h ago
Fixkamo-internal

Add HandCoins to the studio icon-name union

KamoΒ·1d ago
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
FixSecurityService

A failed request tells the caller to try again, not what the exception said

25 controllers returned e.getMessage() to the browser, which can name tables, columns and internal hosts. They now answer with a plain 'please try again' and lo...

KamoΒ·1d ago
FixDaemonService

The retail sync job calls the orchestrator's scheduled entry point again

**************** became syncNow(UUID, trigger) in the shared library (05bd1ad5, Nov 8), which stopped DaemonService compiling - and so deploying - since then.

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

One scroller for the whole rail, lower options seated at its foot

Revert the Settings fly-out. The lower options sit at the bottom of the SAME NavOverflowScroller (margin-top: auto): the top ones push down as they open, the bo...

KamoΒ·2d ago
Fixkamo-internal

Keep the lower options pinned at the foot; Settings opens as a fly-out

The rail scroller holds only the movable options again. Settings, which sits in the footer, opens its tree to the right of its row (NavToolButton flyout) instea...

KamoΒ·2d ago
Fixkamo-internal

One rail scroller for every option, not a second scrollbar for the lower ones

Mobile app, My Branches and Settings now live inside the NavOverflowScroller with the movable options; the ad-hoc capped overflow box is gone.

KamoΒ·2d ago
Fixkamo-internal

No padding around the buttons or the bar

The thumb fills the bar's full thickness and each button fills its cell.

KamoΒ·2d ago
FixAIService

Describe A Change changes only what the request names (SIS14)

The drafting prompt now says a switch changes only when asked to turn it on or off (run/set/make never do) and every proposal quotes the request words that ask ...

KamoΒ·3d ago
FixMediaService

A YugabyteDB restart-read while the upload commits is retried, not fatal

Third live finding on the removed-after-hold path: the relay's lookup raced the upload's commit and got 40001 "Restart read required", which aborted the relay. ...

KamoΒ·3d ago
FixMediaService

The live chat relay also finds a refused hold's attachment

Found by the live removed-after-hold re-test: findByBlake3AndSize is a dedup lookup and skips is_missing dats, and a refused hold's dat stays missing forever, s...

KamoΒ·3d ago
FixMediaService

The live chat relay waits for an attachment whose verdict beat its commit

Found by the live removed-after-hold test (sp00verify): a held EICAR variant was judged ~260 ms before the visitor's upload answered; the hold completer's refus...

KamoΒ·3d ago
FixEmailService

Index backfill candidate query without a '::' cast

Hibernate's native-query parser read ':text' in ARRAY[]::text[] as a named parameter and the first live run answered 500. (attachment_types IS NULL OR NOT (mark...

KamoΒ·3d ago
FixSecurityService

The store sync schedule tells Spring which constructor to use

With a second (test) constructor and no @Autowired, the new pod failed to start: "No default constructor found". The running pods were untouched.

KamoΒ·3d ago
Fixkamo-internal

Live chat verdicts match by imgId or message link (completes aa060187d)

ATTACHMENT_SCAN now names the file (imgId) and its message links (objImgIds; mediaservice 5e5d837). The store keeps both, and the chip looks up its imgId first,...

KamoΒ·3d ago
FixMediaService

ATTACHMENT_SCAN names the attachment the way rows do (imgId + objImgIds)

Completes 27c9644. Found by the live test: message rows carry objImgId = the MediaObjImg link id and imgId = the Img id; the frame sent the Img id under objImgI...

KamoΒ·3d ago
FixDocsService

A held photo's PDF rendition is marked converted by a targeted update

Found by the live held-JPEG test: on LegalHeldUploads' background thread the stored rendition ImgDat is detached, and save() merged its orphan-removal 'images' ...

KamoΒ·3d ago
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
FixSecurityService

A staff vendor-document upload files under the requirement's document type

ImageService refuses a LOAN image without an ImgDocType, and uploadLoanDocument passed none (the doc type's name went into the description), so every staff vend...

KamoΒ·3d 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