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
September 29, 2026
FixMediaService

Chat cards queue boundedly, give up on a hung EmailService in seconds, and never double a mention

SP98-D-7: ChatNoticeDispatcher ran on two threads with an unbounded queue while MemberNotificationClient waited up to 5 s + 30 s (the letter client's chat.email...

Kamo·3w ago
FixMediaService

A send looks up its AI turn limit and its sender's photo before its transaction opens

SP98-D-5 and D-9. A chat send asked SecurityService for an AI member's charter limit (up to 1 s + 2 s) inside the open send transaction, and read the sender org...

Kamo·3w ago
September 28, 2026
FixMediaService

A recording's action item is never due before its meeting

Live (SP14 Task 31, Step 9), a recording made on 2026-09-28 said 'by October second' and the model wrote 'due 2024-10-02' into the summary emailed to the partic...

Kamo·3w ago
FixMediaService

A stored recording is transcribed, under the id it was saved with

MeetingRecording.id is @GeneratedValue, so save() of the entity whose id ingest had set by hand merged it and the row got an id of its own. The pipeline was han...

Kamo·3w ago
FeatureMediaService

Meeting-provider connects send the api.kamouniverse.com redirect

The owner added **************** to the platform Microsoft app and kept the api.kamocrm.com one. Both hosts serve the path, so a connect started under either co...

Kamo·3w ago
FixMediaService

The bridge dials the room Meet uses; an AI joins a future meeting at its start; an AI that heard nobody is dialled again

- The dial-in resolver (I1), KM2's roomName and M1's join.roomName name the room Meet uses (the Kamo Meet provider's own room, else the typed name cleaned the...

Kamo·3w ago
FixMediaService

OAuth return URLs accept both platform consoles; webinar cancel links keep the page that exists

kamouniverse.com is now the platform's primary apex (kamo-shared-library 0e8cf90f): OrgLinkHosts falls back to it, and ROOT_PREFERENCE makes it the platform org...

Kamo·3w ago
FixMediaService

The viewer's theme host is read before the transaction, never inside it

The Exec2Exec roster, its participant list and every conversation's faces read the viewer's organization's domains lazily, as a late statement of a read-only tr...

Kamo·3w ago
TestMediaService

A group chat of two AI members with identical columns holds both (SP10)

SP10 T47, live: chat_find_or_create_dm for the owner, Ava and Ben answered 400 "one or more memberIds not found": TeamMember's value equality kept one of the tw...

Kamo·3w ago
FeatureMediaService

Relay media.feed.<orgId> to /topic/media/feed/<orgId>, guarded by org

A new post or lead note is announced on media.feed.<orgId>, and kamo-internal's MediaStream (a lead's Notes, the Clubhouse feed) listens on /topic/media/feed/<o...

Kamo·3w ago
FixMediaService

An AI invite settles the caller's authority before it looks at the target

invite() answered 409 NOT_AN_ACTIVE_AI_MEMBER before 403 NOT_ALLOWED_TO_INVITE, so a member who could reach M1 but not invite could tell an active AI's member i...

Kamo·3w ago
FixMediaService

An impersonating admin may not set the member's status text

PUT /api/media/presence/status accepted a sudo session. It is now refused 403: unlike the heartbeat, which nobody chose to send and is ignored quietly, setting ...

Kamo·3w ago
FixMediaService

A session type without its own gate takes no messages, and a session is described only to its readers

POST **************** authorized CHAT, SUPPORT_TICKET and SOCIAL and then simply ended, so a POST, SYSTEM_BUG or EXEC2EXEC session fell through every gate: any ...

Kamo·3w ago
FixMediaService

Another org's agent, topic or AI member is a 400 naming the field

The sales agent and support topic checks threw a bare IllegalArgumentException that nothing caught, so saving one the org does not own answered 500. They, and t...

Kamo·3w ago
FixMediaService

One call per AI per meeting — a dial is claimed before kamoai-service is asked

Two overlapping requests to dial the same AI into the same meeting (a double click, two organizers, a person and the auto-join sweep) could each pass the not-li...

Kamo·3w ago
FeatureMediaService

Meeting history, meeting detail with dial-in and transcripts, inviteable AI members

M3 GET /api/meet/ai-candidates, M4 GET /api/meet/meetings, M5 GET /api/meet/meetings/{id} (spec §4.4.1). Every answer is application/json; a page never splits m...

Kamo·3w ago
September 27, 2026
FixMediaService

A transcript download answers 409 NOT_READY while the transcript is still being written

M7's errors are M6's plus INVALID_FORMAT (spec 4.4.1). A PENDING or TRANSCRIBING transcript answered 200 with an empty body for vtt and txt; it now answers 409 ...

Kamo·3w ago
FeatureMediaService

Encrypted meeting transcripts and summaries, companion upload, downloads, retention

M6-M9 answer JSON whatever the client accepts and ignore unknown body fields (MediaService's bare ObjectMapper fails on them); M6 is NOT_READY while a transcrip...

Kamo·3w ago
FixMediaService

The roster, participants, history and send survive a database conflict too

Completes 279a389. After it shipped, production logged the same YugabyteDB 40001 "Restart read required" on Exec2Exec's roster (09-27 16:00Z, and three times ea...

Kamo·3w ago
FixMediaService

A conversation loads and a message sends on the first try

Chat has been failing in two ways a member notices at once: opening a conversation showed "Couldn't load messages" until Retry was pressed, and a sent message s...

Kamo·3w ago
FixMediaService

The media.* host no longer reaches MediaService's server-to-server endpoints

The media-route IngressRoute sends every path on a media.* host straight to MediaService, past the API gateway, so the gateway's carve-outs (master spec section...

Kamo·3w ago
September 25, 2026
FeatureMediaService

MediaService announces its own webinar writes

Kamo·4w ago
FeatureMediaService

Relay notification frames to the phone; voicemail gets its own topic

Every pod relays core-NATS email.notify.<memberId> to /topic/notifications/<memberId> on its own broker, for KamoMobile's notification centre. voip.voicemail.* ...

Kamo·4w ago
FeatureMediaService

Every chat sender goes through the one fan-out

Alerts, web-chat visitors, the AI Sales Agent, inbound social messages and the Exec2Exec desk now announce through ChatFanoutService: alerts reach the recipient...

Kamo·4w ago
FeatureMediaService

One fan-out for every chat sender

Kamo·4w ago
FeatureMediaService

Never send a missed-chat email to an AI member

Kamo·4w ago
September 24, 2026
FeatureMediaService

Image attachments are drawn from a 480px preview, not the original

A chat bubble draws an image at most 240x240 CSS px and every viewer downloaded the original to do it — 3-8 MB per phone photo. GET **************** now answers...

Kamo·4w ago
FixMediaService

Stream the recording, and run the summary after commit — it ran inside the upload

Jibri's upload read the whole recording into heap (file.getBytes()) on the pod that also serves chat; a two-hour meeting is over a gigabyte. It is now streamed ...

Kamo·4w ago
FixMediaService

Accept a short-lived otk on the WebSocket handshake, alongside ***

kamo-internal is moving the *** session id out of browser JavaScript: it currently sits in sessionStorage and rides every WebSocket URL as `?***=<128-hex id>`, ...

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