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 14, 2026
FixMediaService

Every attachment of stored content records the key it was stored under, via the library

The chat-only StoredContentExtension (299a911) becomes ImageService.storageExtension in the shared library, and the other MediaService paths that attach content...

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

The lit Settings row follows the page's own tab

The rail lit the row the member last clicked, so switching tabs inside a settings page (Docs -> General from the page's tab strip) left the light on the old row...

Kamo·1w ago
FixKBService

An SI that sends a note with no level the internal default back changes nothing

CP97 Task 17's Luna compare found a live SI's own My Master Note, written before KamoCollab, carrying sensitivity MEMBER after one of her own appends in an AUDI...

Kamo·1w ago
FixMCPGatewayService

An AUDIT org's SI is shown the record-link kinds every SI saw before KamoCollab

CP97 Task 17's Luna compare found her tools/list changed by KamoCollab: CP05 Task 7 appended TASK, DOCUMENT, KB_ARTICLE, MEMBER, AI_RUN and SMS_THREAD to Record...

Kamo·1w ago
Fixkamo-internal

Reopening a field shows the settings just saved

The stack's sorted field list was memoized on each field's id and order only, so a change from Save Field (Display on Intake, title, required…) never rebuilt it...

Kamo·1w ago
FixSecurityService

Run the sign-in detection rules, and make their responses real

SuspiciousDetectionService was injected into SecurityController and evaluate() was never called, so every rule an organization configured on the Security screen...

Kamo·1w ago
FixSecurityService

Encrypt legacy signing secrets at boot; a refused target URL is a 400

The service side of kamo-shared-library e58f1a93 (target vetting + DNS pinning, failure categories, encrypted signing secrets). - **************** (re-runnable...

Kamo·1w ago
Fixkamo-internal

GD alone no longer grants every right on proxy routes

ksemHasRight treated GD (god-mode ELIGIBILITY) as an all-rights bypass, so every god-eligible operator held every right on the 18 proxy routes that use it, with...

Kamo·1w ago
FixSecurityService

Seal Google/Microsoft calendar OAuth tokens at rest; re-seal legacy rows at boot

GoogleCalendarService and MicrosoftOutlookService stored the access and refresh tokens on third_party_integrations as the provider issued them, although the ent...

Kamo·1w ago
FixVOIPService

Seal member VoIP credentials at rest with PlatformSecretCipher; re-seal legacy rows at boot

**************** held each member's access token, refresh token (Teams, RingCentral OAuth) and RingCentral JWT assertion exactly as the provider issued them. Ev...

Kamo·1w ago
Fixkamo-internal

Never relay a browser-set X-God-Mode-Active

God mode is SERVER-owned. The billing and LOS proxies copied the browser's X-God-Mode-Active onto the upstream call, and BillingService treated it plus users.is...

Kamo·1w ago
FixBillingService

God mode comes from the caller's own session window, never a header

BillingService took X-God-Mode-Active plus users.is_god as god mode, and kamo-internal copied that header straight off the browser, so a god-eligible operator h...

Kamo·1w ago
FixMediaService

Meeting-provider OAuth state is an opaque one-time Redis token; refresh is locked and committed on its own

state was base64 JSON {orgId, nonce, provider} built by the caller, the nonce was never stored or checked, and the sessionless callback trusted the decoded orgI...

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

/api/voip/webhook answers a form post 415 and a non-JSON body 400, never a silent 200

A form-encoded post (Twilio, Sinch, Vonage pointed at the wrong address) fell into readTree(), failed, and was answered 200, so the carrier never retried and th...

Kamo·1w ago
FixAPIService

No literal internal-auth secret fallback — a blank public-chat secret answers 503

Seven @Value sites and application.yml fell back to the literal dev-secret-change-in-prod when **************** was missing, so a pod without its Secret sent a ...

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

Deleting a public API key needs MANAGE_ACCESS_RULES, like creating one

Any member of an org could delete the org's public chat / integration keys: deleteKey checked only that the key belonged to the caller's org.

Kamo·1w ago
FixSecurityService

Save answers before the rights fan-out, not after it

Saving a security model (e.g. its Default Security Roles) re-seeded and recalculated member rights for every org using the model before it responded. A model sh...

Kamo·1w ago
FixMCPGatewayService

Stamp a communication-policy refusal of a tool with no intent COLLAB_DENY interaction:<ruleId>

An SI's chat_find_or_create_dm refused by the interaction policy answered COLLAB_DENIED INTERACTION_POLICY but left its audit row's policy_decision and policy_r...

Kamo·1w ago
Fixkamo-internal

The tours really do start by themselves at sign-in

They never had, for anybody. The trigger waited for userInfo.tokenId, which the type declares but the web app's /api/user-info never sends — so it returned befo...

Kamo·1w ago
Fixkamo-internal

An image attachment that has not drawn holds a placeholder, and one that never answers fails over

An <img> reports load or error and nothing in between, so a request that never answered left an unsized element at 0x0 — a chat bubble with nothing in it. A mem...

Kamo·1w ago
FixMediaService

An attachment whose bytes were already stored keeps the extension they were stored under

The content-addressed key is <imgDatId>.<ext>, and every reader builds it from the attaching Img's own fileExt. Dedup matches on the bytes, so the same screensh...

Kamo·1w ago
Fixkamo-internal

A docked chess window is as wide as its board

The window opened at a fixed 560 while the row decided its height, so at the default 690 row the board was 346px square in a 540px column: 97px of empty table e...

Kamo·1w ago
Fixkamo-internal

Drag-selecting up or left out of a text field scrolls it

WebKit (Safari, DuckDuckGo on macOS — the reporter's browser) only autoscrolls a text field toward the END of its text during a drag-select: dragging up out of ...

Kamo·1w ago
Fixkamo-internal

The Settings rail keeps your place in its tree

Choosing a row in the expanded rail ran close(), which also emptied every expanded branch, so each click folded Settings back to its own row and the next sub-to...

Kamo·1w ago
Fixkamo-internal

A card taller than the room it has scrolls instead of running off the screen

Opened from a name low on a laptop screen (the Interaction Center's "..." on a roster row), the member card was placed below it at full height; once "More" open...

Kamo·1w ago
FixSecurityService

The profile save stores the member's address

The My Profile Address card posted { address, addressDetails, locality, subdivision, postalCode, country } and PUT /members/{id} never read the key, so every sa...

Kamo·1w ago
Fixkamo-internal

Related-article rows open the article

The Related Articles list under an open article drew each link as a plain box with no href or click handler, so nothing happened when a reader clicked one. A re...

Kamo·1w ago
Fixkamo-internal

Tiles recover on their own, a manager's Watch shows the camera, cloud logins never stored in clear

From an independent review of the shipped Cameras screens. Viewer: - A Settings "Watch" of a camera not shared with the manager showed "unavailable": the windo...

Kamo·1w ago
Fixkamo-internal

Nothing dials by itself any more, and four red tests on main go green

The softphone never places a call for the member (owner rule, 2026-10-13): - The lead header's Call work / Call personal now fill the dialpad and stop, like eve...

Kamo·1w ago
Fixkamo-internal

Tours show for members signed in before them, and survive a failed progress read

Two reasons the first deploy showed no tour, not even on the App Shelf: - The progress read was attempted once per page, and every tour surface waited on it. ...

Kamo·1w ago
FixSecurityService

The guided-tours read answers the member's CURRENT Show Tour rights

A session carries the rights it was issued with and the routine refresh does not re-read them, so everyone signed in before the Show Tour rights existed saw no ...

Kamo·1w ago
FixSecurityService

The boot-time rights sync inserts a role's missing rights in ONE statement

b8014ab3's deploy never became ready. The 31 Show Tour rights made the row-at-a-time insert loop 31 YugabyteDB round trips per role — ~3.5 s a role, ~490 s acro...

Kamo·1w ago
Fixkamo-internal

Display on Intake now saves

The form editor built each field for the save request without isDisplayOnIntake, so the server stored false for every field that was not required. The toggle re...

Kamo·1w ago
October 13, 2026
FixAPIService

The connector relay never sends a reserved close code

When KamoCameraService rolled, the backend socket closed without a close frame (1006) and the relay passed 1006 to the connector; 1005, 1006 and 1015 only descr...

Kamo·1w ago
FixEmailService

An SI's HIGH chat card is raised even while an unread-chat card stands

A person with an undismissed CHAT_MESSAGE card was never told of an SI's NOTIFY (KamoCollab CP12 D14): the announce-once rule dropped the HIGH card too, while t...

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