KamoCRM

Live Change Log

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

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
October 22, 2026
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·23h ago
Fixkamo-marketing

A missing locale file renders English instead of throwing

i18n/request.ts and message-locales.ts imported messages/<locale>.json bare, so a build made while the dictionary had no file for a locale turned that locale's ...

Kamo·23h ago
FixBillingService

Read Stripe events from any API version, and replay the ones that failed

The live webhook endpoint renders events at 2026-03-25.dahlia; stripe-java pins 2024-12-18.acacia, so every invoice, payment and subscription event since has fa...

Kamo·23h ago
FixKlusterServices

Write Romanian with comma-below s and t

The model mixes the legacy cedilla forms into Romanian (6 of 90 such letters in the chat widget's regenerated file) and the dictionary's earlier Romanian did to...

Kamo·1d ago
ChoreKlusterServices

Drop the old engines' deploy steps, apply MADLAD's alias Services, update audit and docs

Completes 56b37fa, which removed the manifests: without this the workflow still ran steps for directories that no longer exist. The workflow now applies madlad/...

Kamo·1d ago
ChoreKlusterServices

Remove LibreTranslate, Bergamot and IndicTrans; MADLAD serves every pair

TranslateService speaks only to madlad now (translateservice 5c7605b), verified end to end: every Kamo locale including Tamil and Swahili, inbound ru->en and ta...

Kamo·1d ago
FeatureTranslateService

One engine, MADLAD-400, for every language pair

Replaces the LibreTranslate, Bergamot and IndicTrans providers with MadladProvider (klusterservices madlad/). Their languages did not overlap, and a pair none o...

Kamo·1d ago
PerformanceKlusterServices

Beam 4 only for labels, beam 2 up to 64 tokens

Cost is tokens x beam. Measured in the cluster with the old engines still running: one stream 77 chars/s and two 115 chars/s on short strings at beam 4. Sentenc...

Kamo·1d ago
FeatureKlusterServices

One translation engine for every pair, MADLAD-400-3B on CPU

Replaces LibreTranslate (Argos), Bergamot and Kamo IndicTrans, whose language sets did not overlap and whose gaps came back as English. MADLAD-400-3B-MT (Apache...

Kamo·1d ago
FixKBService

One pod translates an article, not every pod at once

The sweep's fleet-wide lock is held only while it queues work, which takes milliseconds, so each pod ran its own sweep a minute or two apart and queued the same...

Kamo·1d ago
FixTranslateService

Never send an engine a text longer than it takes

IndicTrans answers a request over 20,000 characters with a permanent HTTP 413, so a long help article could never be translated into Tamil; a LibreTranslate wor...

Kamo·1d ago
FixKBService

Translate an article's words, not its Lexical JSON

contentJson was sent to the translation engines as if it were a sentence. On 2026-10-22 one sentence of it came back from Russian with the sentence gone and the...

Kamo·1d ago
FixKlusterServices

Memory limit 14Gi -> 20Gi, request 10Gi -> 12Gi

Seven-day peak working set was 13.8 and 13.1 GiB against the 14Gi limit, so the kernel reclaimed the mmapped argos models and en->ru on a help article paid cold...

Kamo·1d ago
FixSecurityService

Creating a MORTGAGE market gives the organization its lender profile at once

A MORTGAGE market's lender profile (and its five config rows) was only created by the boot-time self-heal, so a market created while SecurityService was running...

Kamo·1d ago
October 21, 2026
Featurekamo-internal

The Pipeline's loan officer filter shows faces and opens the member card

Each officer in the filter's options, and the one selected, is their avatar and name wrapped in the shared MemberHoverCard. A click still selects.

Kamo·1d ago
Featurekamo-internal

The Pipeline's loan officer opens the shared member card

The loan officer on each deal is wrapped in MemberHoverCard, the popup every other surface uses for a member. It opens on hover and keyboard focus; a click stil...

Kamo·1d ago
Fixkamo-internal

Open deals are always expanded, the loan officer shows their photo, and the loan count reads one way

- Open view: every deal shows its loans, with no expand/collapse control. Past and All stay collapsed by default and expandable. - The loan officer avatar was...

Kamo·2d ago
Featurekamo-internal

A full-width, full-height HMDA LAR page; readable brand buttons on the loan page

- HMDA LAR: the register is an AG Grid that takes the whole width and every pixel under the header, and scrolls inside itself — the page no longer scrolls. Is...

Kamo·2d ago
Fixkamo-internal

Back from a loan returns to the screen it was opened from, and a loan always shows its full number

- The loan page's Back was hard-coded to /commerce, which opens the first market's home. Every opener (Pipeline, Board, document queue, applications tab) now ...

Kamo·2d ago
Featurekamo-internal

A new mortgage Pipeline — open deals first, past ones a click away, and every deal managed from its card

The Pipeline tab under a mortgage market is rebuilt around transactions: - Open | Past | All views (past = completed or cancelled), with counts - headline numb...

Kamo·2d ago
PerformanceSecurityService

The mortgage pipeline loads in a handful of queries, and a deal can be renamed and take a second loan

The pipeline's two reads were N+1 on the round trip: - GET /mortgage-apps loaded plain AppMortgage rows, and each one then fired a SELECT per inverse @OneToO...

Kamo·2d ago
Fixkamo-internal

A tool menu stays selected on any of its pages and the pages beneath them

The last change lit a tool menu (Mail, Docs, Support, IoT, Settings, Cameras) only when a row's href was exactly the page open, and most rows carried no href at...

Kamo·2d ago
Fixkamo-internal

Numbers and addresses open their popups, unseen records in plain words, plain labels, rights cases

Approval follow-up 2026-10-21 (controller review of the approvals pane). - The headline draws every phone number and email address the card names (card.conta...

Kamo·2d ago
FeatureSecurityService

Approve and always allow checks the rights a tool needs in one case only

Approval follow-up 2026-10-21: the Tool Plane's card now names the rights a tool's service enforces in some cases only (alwaysAllow.rightsWhen: a colleague's le...

Kamo·2d ago
FixMCPGatewayService

Declare every right a tool's service enforces; plain words for unseen records and numbers

Approval follow-up 2026-10-21 (controller review of the approvals UI). Rights (item 4): an audit of every tool's declared rights against the rights its downstr...

Kamo·2d ago
Featurekamo-internal

Corner ribbons on every edge, on tabs, and on the top bar's open pages

Following the left-edge round, the other three edges get the same treatment, on a fixed mapping: a top rule becomes a top-left ribbon, a right rule a bottom-rig...

Kamo·2d ago
Fixkamo-internal

A charter item's tool is behavior; its grant provenance is not

CharterItem gained toolName and the standing-permission provenance (53e6e2cd6), so the compile-time check that every field is listed failed the build. toolName ...

Kamo·2d ago
FeatureSecurityService

S-I1 accepts REPLACED, so IoTService revokes a superseded Alexa link's grant

Owner 2026-10-21. KamoOAuthRevokeReason.REPLACED already exists (STRING-persisted, no CHECK on revoked_reason), so no shared-lib or DDL change; the internal rev...

Kamo·2d ago
Featurekamo-internal

Corner ribbons replace every left-edge accent rail

The System Bugs page went first. This change does the rest of kamo-internal: about 120 files where an item was marked by a coloured rule down its left edge — a ...

Kamo·2d ago
Featurekamo-internal

Approve and always allow, the named why, the SI's own picture, the org's own colours

Always allow: from the decision bar, the approver picks just this action or the whole kind (in plain words), reads exactly what changes in the SI's job descript...

Kamo·2d ago
FeatureMCPGatewayService

Honour standing permissions; offer Approve and always allow on the card

CharterPolicy reads resolved.toolApprovals and each rule's standing flag. A member's rule about one tool stands for its class's rule for that tool; a standing p...

Kamo·2d ago
FeatureSecurityService

Approve and always allow, from an SI's approval

GET **************** POST **************** {approvalId, scope TOOL|CLASS, grantRights?} DELETE **************** (Ask me again) The approval names the tool and...

Kamo·2d ago
Featurekamo-shared-library

Standing permissions from an approval (Approve and always allow)

A member's own APPROVAL item may now name one tool (tool_name) and record the approval it came from, who granted it and when (item_origin APPROVAL). The resolve...

Kamo·2d ago
Featurekamo-internal

Corner ribbons replace the left-edge accent rails on System Bugs

CornerRibbon is the indicator form of kamo-login's sign-in pane ribbon: a thin shaded diagonal band across an item's top-left corner, in any colour, at three si...

Kamo·2d ago
Featurekamo-marketing

Announce IoT Devices — the /features category, the capabilities group and /device-compatibility go live (SP14 T+0)

IoT Devices was published on 2026-10-21 03:47 UTC (catalog override COMPLETED + available, owner-approved). The compatibility page reads the live feed: 8 servic...

Kamo·2d ago
Featurekamo-internal

Plain-language approval cards and a premium approvals inbox

Owner order 2026-10-20: the Interaction Center's Approvals tab and the approval popups showed members GUIDs and JSON. Every approval now reads as a card a non-t...

Kamo·2d ago
Docskamo-internal

The Devices (IoT) menu counts open alarms and pulses until they are acknowledged

Completes 0ee2be7b3 (IoT close-out F12).

Kamo·2d ago
Featurekamo-internal

The Devices (IoT) nav option badges open alarms, pulses while one waits, and its menu leads to Alarms

Owner, 2026-10-20 (IoT close-out F12): IoT alerts stay e-mail only; alarms reach people in the app. - Devices (IoT) is a menu (toolKey iot) of its pages, the ta...

Kamo·2d ago
FixMCPGatewayService

An approval card sends every parameter its phrase names

next-intl refuses an ICU select or plural with no value, so a phrase about an argument the SI left out (a contact with no formatted name, a new document categor...

Kamo·2d ago
FixMCPGatewayService

An approval about a record the reader may not see never leaves a dangling 'for'

Phrases that named a patient, a customer, a purchaser, an envelope or a document after a preposition now say 'for a patient' (or nothing) when the reader may no...

Kamo·2d ago
FixKlusterServices

Desktop alerts go by e-mail only; the MediaService chat leg is gone

Owner, 2026-10-20 (IoT close-out F12): no chat sender. A chat thread needs a sender member besides the recipient and the platform organization has none by desig...

Kamo·2d ago
FixMCPGatewayService

Approval cards say SI in every label, write phone numbers and choices as people do, and keep a note beside an action a field

A humanised field name said 'Ai companion…' (now SI, with a guard that no phrase, label, noun or risk sentence says AI); a US number reads (512) 555-0142 in the...

Kamo·2d ago
FeatureInitializerService

KamoCameras is included in Business and up, and on every universe's Premium rung and above

Owner, 2026-10-20 (IoT close-out F11): Business, Enterprise and their equivalents in the other universes. - PlatformTierMatrixMigration: Business gains KAMO_CAM...

Kamo·2d ago
FixVOIPService

A carrier-only organization can hold text threads again (SITP CARRIERSMS)

VOIP_CONVERSATIONS.INSTANCE_ID was NOT NULL in production, although the entity and **************** both say an org that texts through a carrier and runs no pho...

Kamo·2d ago
FixInitializerService

Stop forcing a phone server onto every text conversation (SITP CARRIERSMS)

MultiInstancePhoneMigration runs on every KamoInitializer start. Its conversation step deleted each voip_conversations row without an instance (and that thread'...

Kamo·2d 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