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 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·1w ago
FixAPIService

The connector socket's client address is the right-most public X-Forwarded-For hop

CameraAgentWebSocketHandler took the FIRST X-Forwarded-For hop — the one a client can write itself — and that address is what KamoCameraService rate-limits unau...

Kamo·1w ago
FixEmailService

A meeting's updates and cancellations come from the address that invited its guests

The composer files a meeting under whatever its From said, an alias or a shared mailbox, and that address is the ORGANIZER in every ics. But updates, cancellati...

Kamo·1w ago
Fixkamo-internal

Attaching a custom form to a market now saves

The market dialog sent each form as Number(uuid). That is NaN, which JSON sends as null, and the service skips a null form id, so every save reported success wi...

Kamo·1w ago
Fixkamo-shared-library

Saving a form no longer rejects its own field IDs

updateForm replaces every stack and field, but the field-ID check compared the request against the rows already stored. The editor sends no field id, so each ke...

Kamo·1w ago
October 12, 2026
Fixkamo-internal

Disclosure history asks the list's source filter, so a REPORT ref or a Message-ID with a slash opens instead of a 400 (KamoCollab CP08 final fix)

The dialog put the record id in /source/{kind}/{id}. An id with a '/' (every REPORT ref, a GitHub or GitLab notification's root Message-ID) travels as %2F, whic...

Kamo·1w ago
Fixkamo-internal

Take Org Chart, Disclosure Log, Disclosure and Communication Policy off the admin bar

Owner: "Remove the Org Chart, Disclosure Log, Disclosure and Communication links off of the admin tool bar on the home page ... Discontinue adding links to the ...

Kamo·1w ago
Fixkamo-internal

Name every control on the communication policy tab

axe (wcag2a/aa) on the CP04 policy tab, now reachable from Security: - masthead: the default-effect select and the three switches (policy on, always allow a mem...

Kamo·1w ago
Fixkamo-internal

The chat-core adapter answers the conversation's own typing topic too

@kamo/realtime 0.1.3 subscribes typing on **************** (where MediaService publishes) instead of the retired bare /topic/chat/typing. The adapter matched on...

Kamo·1w ago
FixMCPGatewayService

An AUDIT hit of the communication policy is written once, as the call runs — not also when the charter asks a person first, and not for a decoderd approval (KamoCollab CP04 Task 31)

Found live in sp00verify: an SI's internal email under an AUDIT DENY rule, behind a charter approval (autonomy ceiling 1), wrote two chat_policy_event rows for ...

Kamo·1w ago
FixKBService

A release that keeps someone the note already named no longer fails with 500

The release reads the note's current NAMED audience before it writes, and the request keeps one persistence context (open-in-view), so those note_audience_membe...

Kamo·1w ago
FixEmailService

File a message's search-index row and lead link under its thread id, not the conversation row's surrogate

conversations.thread_id is generated (@GeneratedValue on ConversationEntity, primary key the thread id alone), so the row **************** returns carries a ran...

Kamo·1w ago
October 11, 2026
FixSecurityService

An SI's charter read is retried on a YugabyteDB conflict instead of answering 503

GET **************** (I1) resolves the charter in one read-only transaction of 15-25 queries. One "Restart read required" (40001) answered 503 CHARTER_UNAVAILAB...

Kamo·1w ago
FixVOIPService

A FreePBX voicemail deleted on the PBX stops counting on the phone badge

A deleted message is just absent from its mailbox's listing, so the sync never touched its row again and it stayed unread, badged for good. A row whose mailbox ...

Kamo·1w ago
Fixkamo-internal

A FreePBX voicemail can be marked read, archived and deleted, and the phone badge follows

The message id (mailbox/msgId) went into the URL path, so its slash made a route nobody served and the click failed with only a console error: the PBX kept the ...

Kamo·1w ago
FixVOIPService

Marking a FreePBX voicemail heard reaches the phone server, and the badge follows at once

A FreePBX message id is mailbox/msgId, so PUT /voicemail/{id}/read never matched a route for it and the PBX was never told: the message stayed in INBOX and the ...

Kamo·1w ago
Fixkamo-internal

A visiting note offers no "use with SI" switch either (SP97 T13)

The switch on another member's note, opened read-only from a link, toggled a setting that never saves.

Kamo·1w ago
Fixkamo-internal

"Open the minutes note" opens an SI member's minutes for the participant who supervises it (SP97 T13)

The minutes are the SI's own note, on no participant's wall, and /notes?id= opened only ids on the reader's wall, so the button landed on the reader's own notes...

Kamo·1w ago
Fixkamo-internal

A contact's spelled-out display name follows its edited name parts (SP97 T9)

Create Contact fills a blank display name from the name parts, and the saved contact then carried that name as its own. Editing it showed the name in the displa...

Kamo·1w ago
Fixkamo-internal

An open contact's panel fits a window narrower than 1200 px, so its Save is on screen (SP97 T9)

Below lg the panel is the row's full width so it stands in for the list, but from md the books sidebar stays beside it and the panel could not shrink: it ran 28...

Kamo·1w ago
FixMCPGatewayService

An SI's key, text or click aimed at an app reaches the window it is working in (SP97 T9)

The bridge sends a call that names only an app (app_id, wm_class or pid) to that app's first window, focusing it first. After a take-over, Kamo's old window sit...

Kamo·1w ago
FixAIService

The first-contact approval rule says it is about reaching out, not saving a contact

"Contacting someone for the first time" read to an SI as "creating a contact needs approval", and it deferred an owner's request to save a contact record. The b...

Kamo·1w ago
Fixkamo-internal

A new email, phone or address row keeps its field while you type in it

A row without a server id was keyed by its object, and every keystroke replaced that object, so the row got a new React key and its field was remounted on each ...

Kamo·1w ago
Fixkamo-internal

A new email, phone or address row keeps its field while you type in it

A row without a server id was keyed by its object, and every keystroke replaced that object, so the row got a new React key and its field was remounted on each ...

Kamo·1w ago
FixMCPGatewayService

Workstation_open_kamo says where Kamo opened and never to type a password (SP97 T9)

After a supervisor's take-over (which ends the SI's session) the older browser windows on an SI workstation show Kamo's sign-in page. On the next request Ava op...

Kamo·1w ago
Fixkamo-internal

An SI's supervisor can open the SI's profile and its workstation controls

The member page sent every viewer without a member-administration right back to their own profile, so an SI's supervisor (SUPERVISE_AI_MEMBERS) or a Workforce v...

Kamo·1w ago
Fixkamo-internal

An SI's supervisor can open the SI's profile and its workstation controls

The member page sent every viewer without a member-administration right back to their own profile, so an SI's supervisor (SUPERVISE_AI_MEMBERS) or a Workforce v...

Kamo·1w ago
Fixkamo-internal

A reload mid-rematch reopened the finished game and said "You won"

A chess window restores the game id saved in its props, and it only ever saved the id it was opened with. Play again, a game started from the empty panel and an...

Kamo·1w ago
Fixkamo-internal

A reload mid-rematch reopened the finished game and said "You won"

A chess window restores the game id saved in its props, and it only ever saved the id it was opened with. Play again, a game started from the empty panel and an...

Kamo·1w ago
Fixkamo-internal

An SI's approval task opens its approval

The approval task SP10 files for the approver ("Approve: …", link APPROVAL:<id>) showed its link chip without a target, so the approver had to find the approval...

Kamo·1w ago
Fixkamo-internal

An SI's approval task opens its approval

The approval task SP10 files for the approver ("Approve: …", link APPROVAL:<id>) showed its link chip without a target, so the approver had to find the approval...

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