KamoCRM

Live Change Log

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

17,539
Total Changes
6,013
Features
5,292
Fixes
30
Projects
Filter by project
All Projects17,539AIService257APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService581InitializerService329KBService151KlusterServices741MCPGatewayService253MediaService602RAGService79SecurityService1,854TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,358kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,666kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore775Docs3,255Feature6,013Fix5,292Other994Performance165Refactor278Revert23Style42Test162Upgrade1
September 5, 2026
FeatureKlusterServices

A coder terminal wears the name coder gave the conversation

running had long since been titled "Startup fee implementation and Harmony account adjustment". Two separate things were swallowing that name. **The listing.**...

Kamo·1mo ago
Featurekamo-internal

Show the sign-in lockout as a rule that cannot be switched off

SecurityService now applies a progressive sign-in lockout to every organization whether or not a row exists for it — five free attempts, then five seconds, then...

Kamo·1mo ago
Featurekamo-login

Show the progressive lockout, so a held sign-in explains itself

The server now refuses sign-ins on a ladder — five free attempts, then five seconds, then locks of five, fifteen and thirty minutes, then a permanent block. Wit...

Kamo·1mo ago
FeatureSecurityService

Progressive sign-in lockout, escalating to a permanent IP block

A wrong password now costs something, and the cost climbs. Counted since the subject's last successful sign-in: the first five failures are free, the sixth and ...

Kamo·1mo ago
September 4, 2026
Featurekamo-internal

Show a member the redirect URI on their own domain

This is the screen the whole change is for. A member setting up Google Workspace with their organization's own OAuth app comes here to find the address to paste...

Kamo·1mo ago
FeatureSecurityService

Serve each org the callback URL on its own domain

This endpoint is where a member finds the string they paste into Google's console, so it is the endpoint that was wrong: it returned only the redirect the org h...

Kamo·1mo ago
FeatureVOIPService

Fall back to the org's own hostname for the Teams redirect

A redirect the org typed into its own registration still wins outright — Microsoft requires the URI replayed on the token exchange to match the authorization by...

Kamo·1mo ago
FeatureMediaService

Send an org's own hostname as the meeting OAuth redirect

The same rule the mailbox flow now follows, for Zoom and Teams meetings: an organization on its OWN app registered that app against api.<its own domain>, so tha...

Kamo·1mo ago
FeatureEmailService

Send an org's own hostname as the mailbox OAuth redirect

An organization that brought its own Google or Entra app registered that app in its own account, under its own brand, and is now told on its settings screen to ...

Kamo·1mo ago
Featurekamo-shared-library

Address an org's OAuth callbacks to its own domain

An OAuth redirect URI is held by a third party. A member pastes it into Google's or Microsoft's console, and from then on the value the service sends on the aut...

Kamo·1mo ago
FeatureSecurityService

User-account details belong to their owner, or to an operator

One rule, in one place, for the three endpoints that write a USER account: the profile's member update, the profile's personal address, and the platform Users t...

Kamo·1mo ago
Featurekamo-shared-library

A detection rule an org cannot switch off, and the letter it sends

PROGRESSIVE_LOGIN_LOCKOUT joins DetectionRuleType. Every other value on that enum describes something a tenant opts into; this one describes a control SecurityS...

Kamo·1mo ago
Featurekamo-internal

An operator may set a personal address, and ask about the right account

Two changes to the member profile, both about the same confusion: which person a question is being asked about. The personal email card is no longer self-only....

Kamo·1mo ago
FeatureSecurityService

Let a god operator and the System User set somebody's address

The personal address was self-only. It is also the address an administrator has to be able to correct — a member who has lost the mailbox on their account canno...

Kamo·1mo ago
FeatureKlusterServices

Budget the last four services to gain a second replica

BillingService, EmailService, KamoLOS and SecurityService now run two pods, each having put its shared-effect scheduled sweeps behind a distributed lease first....

Kamo·1mo ago
FeatureSecurityService

Lock the shared sweeps, and run two pods

Sixteen of SecurityService's seventeen scheduled sweeps have a shared effect and now take a named distributed lease before running. There is no ShedLock anywher...

Kamo·1mo ago
Featurekamolos

Lock every cron job that moves money, and run two pods

KamoLOS ran one pod and its ten cron jobs were correct only because of it. There is no ShedLock anywhere on this platform, so a second replica would have run ea...

Kamo·1mo ago
FeatureEmailService

Lock the shared sweeps, and run two pods

Nine of EmailService's ten scheduled sweeps have a shared effect and now take a named lease before running. The most consequential is CampaignDispatcher: at two...

Kamo·1mo ago
FeatureBillingService

Lock every money-moving sweep, and run two pods

BillingService ran one pod and its seven scheduled sweeps were correct only because of it. There is no ShedLock anywhere on this platform, so a second replica w...

Kamo·1mo ago
FeatureKlusterServices

Budget the six services that just gained a second replica

AIService, KBService, ESigService, VOIPService, DocsService and TranslateService now run two pods, so a drain of either node must evict them one at a time rathe...

Kamo·1mo ago
FeatureTranslateService

Run two pods

The one @Scheduled method here, **************** populates a map held in this pod's own memory. It is supposed to run on every pod, there is nothing shared for ...

Kamo·1mo ago
FeatureDocsService

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
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

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