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 4, 2026
FeatureVOIPService

Lock the shared sweeps, and run two pods

Every @Scheduled sweep here whose effect is shared now takes a named distributed lease through SingletonTaskRunner before it does anything, so it runs once acro...

Kamo·1mo ago
FeatureKBService

Lock the shared sweeps, and run two pods

Every @Scheduled sweep here whose effect is shared now takes a named distributed lease through SingletonTaskRunner before it does anything, so it runs once acro...

Kamo·1mo ago
FeatureESigService

Lock the shared sweeps, and run two pods

Every @Scheduled sweep here whose effect is shared now takes a named distributed lease through SingletonTaskRunner before it does anything, so it runs once acro...

Kamo·1mo ago
FeatureAIService

Lock the shared sweeps, and run two pods

Every @Scheduled sweep here whose effect is shared now takes a named distributed lease through SingletonTaskRunner before it does anything, so it runs once acro...

Kamo·1mo ago
Featurekamo-internal

coder sessions beside the running shells, and a scrollbar that reaches both ends

## Terminals is now two views of one machine Sub-tabs rather than two top-level tabs, because they are not two destinations: a terminal is a shell that may be ...

Kamo·1mo ago
FeatureSecurityService

List a member's coder sessions, and open one in a terminal

Two endpoints beside the terminal ones, and they follow the same rule those do: the Linux account is resolved from the CALLER'S OWN SESSION and no account name ...

Kamo·1mo ago
FeatureKlusterServices

Measure whether a deploy actually costs anyone a request

Every fix in this programme is a claim about what happens during a rollout. Until now those claims were untested: MediaService shipped with strategy Recreate at...

Kamo·1mo ago
FeatureKlusterServices

coder sessions on the dev machine, listed and resumable

is here, because the machine is the only thing that knows any of it. ## The session index home, exactly as their terminals are whatever tmux is running. No ta...

Kamo·1mo ago
FeatureKlusterServices

Budget every drain, and fail a deploy that regresses rollout safety

PodDisruptionBudgets for the 25 Deployments that now genuinely run two replicas. minAvailable: 1 lets a drain evict one pod and wait for its replacement instead...

Kamo·1mo ago
FeatureRAGService

Share the indexing consumers, and run two pods

RAGService binds two JetStream durables of its own — rag-note-consumer and rag-kb-consumer — and a durable push consumer with no deliver group admits exactly ON...

Kamo·1mo ago
FeatureVectorService

Run two pods

replicas 1 -> 2. This service runs no @Scheduled work and binds no exclusive NATS durable, so a second pod duplicates nothing — it is stateless request serving,...

Kamo·1mo ago
FeatureConversionService

Run two pods

replicas 1 -> 2. This service runs no @Scheduled work and binds no exclusive NATS durable, so a second pod duplicates nothing — it is stateless request serving,...

Kamo·1mo ago
FeatureAPIService

Run two pods

replicas 1 -> 2. This service runs no @Scheduled work and binds no exclusive NATS durable, so a second pod duplicates nothing — it is stateless request serving,...

Kamo·1mo ago
Featurekamo-internal

Answer a readiness probe, and run two pods

This deployment had no readiness probe, so a pod counted as Ready the instant its container process started. With maxUnavailable 0 Kubernetes reads that as "the...

Kamo·1mo ago
Featurekamo-marketing

Drain on SIGTERM, and run two pods

Next handles SIGTERM with a bare process.exit(143), so every deploy severed whatever this pod had in flight — a form post, a server action, a streamed RSC paylo...

Kamo·1mo ago
Featurekamo-capcha

Run two pods

replicas 1 -> 2. Server-side state lives in Redis, not in the pod, and there is no scheduled work to duplicate, so a second replica changes nothing except that ...

Kamo·1mo ago
Featurekamo-register

Drain on SIGTERM, answer a readiness probe, and run two pods

Next handles SIGTERM with a bare process.exit(143), so every deploy severed whatever this pod had in flight — a form post, a server action, a streamed RSC paylo...

Kamo·1mo ago
Featurekamo-login

Drain on SIGTERM, answer a readiness probe, and run two pods

Next handles SIGTERM with a bare process.exit(143), so every deploy severed whatever this pod had in flight — a form post, a server action, a streamed RSC paylo...

Kamo·1mo ago
Featurekamo-nowww

Drain on SIGTERM, and answer a readiness probe

Next handles SIGTERM with a bare process.exit(143), so every deploy severed whatever this pod had in flight — a form post, a server action, a streamed RSC paylo...

Kamo·1mo ago
Featurekamo-shared-library

A distributed lock, so a scheduled sweep can survive a second replica

There is no ShedLock anywhere on this platform and there never has been. All 97 @Scheduled sweeps across 18 services are correct only because each service runs ...

Kamo·1mo ago
Featurekamo-register

Paint every logo on the sign-up site in the org's overlay colour

The org chooses "Register Site Logo Overlay" in kamo-internal beside the home page and loading screen overlays. One setting for the whole site: every step of th...

Kamo·1mo ago
Featurekamo-login

Paint every logo on the sign-in site in the org's overlay colour

The org chooses "Login Site Logo Overlay" in kamo-internal beside the home page and loading screen overlays. One setting for the whole site: the sign-in form, t...

Kamo·1mo ago
Featurekamo-internal

Choose a logo overlay for the sign-in and sign-up sites

A fourth and fifth surface beside the home page, loading screen and KamoMeets overlays, sharing their thirteen-token vocabulary and their live swatches. Both a...

Kamo·1mo ago
FeatureMediaService

Make MediaService correct on more than one pod, and run two

MediaService has only ever run a single replica, so a deploy of it was a total chat outage and an OOM was the same. It could not run two, for reasons that were ...

Kamo·1mo ago
FeatureSecurityService

Bake the sign-in and sign-up logo overlays into config.json

kamo-login and kamo-register run on their own hosts with no OrgContext, so this file is the only route their branding takes - the same one KamoMeet already uses...

Kamo·1mo ago
Featurekamo-shared-library

A logo overlay for the sign-in and sign-up sites

Two more columns in the vocabulary home_logo_overlay already established: a token, not a hex, so an org that rebrands keeps an overlay matching its new colours....

Kamo·1mo ago
Featurekamo-login

Answer the link in an address-change letter

/verify-email-change spends the token in a change-of-address letter and says what happened. It lives here rather than in the workspace because the letter goes t...

Kamo·1mo ago
Featurekamo-internal

Change your own address, and a platform tab for every account

Two surfaces, joined by one distinction the platform has never explained to anybody: a user account is the PERSON, and a member is one organization's relationsh...

Kamo·1mo ago
Featurekamo-shared-library

Add a queue-group subscribe, so work is shared rather than pinned to one pod

Companion to subscribeEphemeral. Two different jobs, two different consumers: subscribeEphemeral every pod must see every message (anything ending in a STO...

Kamo·1mo ago
Featurekamo-shared-library

Add an ephemeral subscribe, so more than one pod can serve a conversation

A durable push consumer admits exactly ONE subscriber. The second pod to bind the same name is refused with [SUB-90012] Consumer is already bound to a subscript...

Kamo·1mo ago
Featurekamo-internal

"What happened?" fills the window, so maximizing enlarges it

Every other field on the report form is sized by its content. The description is the one somebody is actually writing in, so it now takes whatever height is lef...

Kamo·1mo ago
FeatureSecurityService

Change a personal address by proving it, and administer accounts

Two surfaces on the USER account, which until now had no server of its own — the account's fields were reachable only through MemberController, an endpoint scop...

Kamo·1mo ago
Featurekamo-shared-library

The two reads the platform Users list is built on

A paged, searched finder over USERS, and a batched membership count. The finder is unfiltered by isFake on purpose. Reviewing and clearing that flag is part of...

Kamo·1mo ago
FeatureEmailService

Buzz a member's phone when mail arrives

MessageIndexer is already a durable consumer of email.inbox.> and already resolves the mailbox OWNER, so it is where this belongs — one notification per genuine...

Kamo·1mo ago
FeatureMediaService

An EMAIL type, and every push now names its org

EmailService raises the notification off IMAP IDLE and asks MediaService to deliver it through the internal dispatch endpoint that exists for exactly this — eve...

Kamo·1mo ago
FeatureEmailService

Preview variables for the two email-change letters

Both new canonical templates render in the console the moment this service is rebuilt onto the shared library that carries them; without a sampleVariables arm t...

Kamo·1mo ago
Featurekamo-shared-library

A right for user accounts, and a parked address for changing one

Three additions, all of them the shared half of work that lands in SecurityService and kamo-internal. PlatformRightType.MANAGE_USERS, appended. A user account ...

Kamo·1mo ago
Featurekamo-internal

Public rides the SEND TO AI row, and arms the hand-off for god

The Publish control was a bordered block of its own further down the form, carrying two lines of hint under the switch. It is now a compact toggle on the headin...

Kamo·1mo ago
Featurekamo-shared-library

Gate Publish on god ELIGIBILITY, not an open window

The Publish flag shipped gated on godModeActive — GD plus a deliberately opened 30-minute break-glass window. Every god-eligible operator then found the switch ...

Kamo·1mo ago
Featurekamo-internal

Ending a terminal takes its window and hexhead with it

Ending a terminal from the Interaction Center killed the shell and left the window behind, showing a red `closed` status over something that no longer exists. T...

Kamo·1mo ago
FeatureSecurityService

Read a domain's live SPF record and say what it actually needs

GET /api/security/domains/{id}/spf, for the SPF step on /setup/dns. The setup page cannot give one set of SPF instructions to everybody, because the right inst...

Kamo·1mo ago
Featurekamo-internal

Tell each domain what its SPF record actually needs

/setup/dns walked a customer through ownership, subdomains and SSL and then said nothing about the record that decides whether the mail we send for them is beli...

kamo·1mo ago
Featurekamo-internal

Copy your referral link from any public role

Referrals are the highest-converting channel a job board has, and what stops them here is friction rather than unwillingness: the careers site answers on a diff...

Kamo·1mo ago
FeatureDocsService

The CV reader, employee referral links, and the form shape on the public listing

Three things the public careers site needed from this service. The form shape now rides on the public listing (the twelve ask* settings, the additional-info pr...

Kamo·1mo ago
Featurekamo-shared-library

Three public transactional templates, and the org patch keys behind them

The careers site now writes to people who have no account, which is new for this platform: every other transactional template goes to a member. Three canonical ...

Kamo·1mo ago
Featurekamo-register

Carry the application claim token across the register handoff

A candidate can now apply from the public careers site without an account. The application is stored against the email address they typed, and the receipt carri...

Kamo·1mo ago
Featurekamo-internal

Benefits, the public funnel, the network opt-in, and claiming an application

Five changes, all of them the workspace half of something the public careers site now does. - Benefits & perks on the posting editor. It reaches the public adv...

Kamo·1mo ago
Featurekamo-internal

A Publish switch on a god-mode bug report

An operator with an open god-mode window filing a bug or enhancement now gets a Publish switch. It is off when the window opens and does not remember its last p...

Kamo·1mo ago
FeatureMediaService

Let a god-mode operator file a system bug privately

Posting a report now offers a Publish switch to an operator with an open god-mode window. It defaults to off: the report stays with god mode until somebody rele...

Kamo·1mo ago
Featurekamo-shared-library

The Publish flag on a system bug, and the query rule behind it

A system bug already crossed the tenancy line in one direction. This adds the second visibility rule on top of it: a report a god-mode operator filed privately ...

Kamo·1mo 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