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 7, 2026
Featurekamo-internal

Show the URL a carrier has to be told to post to

Adding a text provider covers sending. Receiving needs the carrier told where to deliver, which happens in the carrier's own console — and the form never said w...

Kamo·1mo ago
FeatureVOIPService

Serve the inbound webhook URL, from one definition

An administrator adding a text provider has to paste Kamo's inbound URL into the carrier's own console, and nothing told them what it was. Missing that step has...

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

One setting that covers every number on a phone system

The approved routing design had three tiers and only two of them were reachable. A number could name its own text provider, and failing that the phone server wa...

Kamo·1mo ago
Featurekamo-internal

React to a status change, not only to a comment

"🎉" on a Fixed event is the single most natural thing anybody wants to say in a bug thread, and offering reactions only on comments meant typing one to say it....

Kamo·1mo ago
Featurekamo-internal

Live thread updates, and reactions that are actually reachable

Two halves of the thread were built and then left unconnected. The server has published every comment and status event to `chat.session.{guid}` since the featu...

Kamo·1mo ago
FeatureMediaService

The thread page names its reader, and drops an unused helper

`viewerMemberId` on the thread page, so the console can tell the viewer's own reactions from everybody else's without a second call to /api/user-info. A ref fil...

Kamo·1mo ago
FeatureVOIPService

Actually create the Telnyx account setup, carry MMS, and let a carrier-only org hold threads

Three gaps, and the first was the feature not working at all. TELNYX PROVISIONING WAS DEFINED AND CALLED BY NOTHING TelnyxProvider.provision(), ensureMemberCr...

Kamo·1mo ago
Featurekamo-shared-library

A text conversation can exist without a phone server

VOIP_CONVERSATIONS.INSTANCE_ID was NOT NULL, which quietly decided that every text thread belongs to a PBX. An organization that buys numbers and messaging from...

Kamo·1mo ago
Featurekamo-internal

The plan you picked travels to the page that sells it

"Move to Business" opened the billing console with nothing selected. The choice the person had just made was dropped on the floor and they were asked to make it...

Kamo·1mo ago
Featurekamo-shared-library

The two letters a customer gets when their card fails

BillingService has wanted to send these since DunningNotifier was written. It posted them to **************** — an endpoint that has never existed on EmailServi...

Kamo·1mo ago
Featurekamo-internal

A plan card says what it adds to the one below it

The picker gave a price, a seat ceiling and one sentence. Choosing between $46 and $80 a seat on that is a decision with one obvious answer, and for most teams ...

Kamo·1mo ago
Featurekamo-internal

One way to reach sales, and a seat control that knows the plan's limit

ContactSalesDialog holds KamoCRM Inc.'s own details — Sales@KamoCRM.com and (949) 298-9960 x1 — as constants, deliberately. Every other address on this platform...

Kamo·1mo ago
Featurekamo-internal

A Numbers screen, so calls and texts can come from different companies

An organization buys its numbers from one company and answers the calls with another. That is ordinary, and Kamo could not describe it: texting was a property o...

Kamo·1mo ago
FeatureVOIPService

Route texts by NUMBER, and add Telnyx on both sides of it

An organization can buy its DIDs and its texting from one company and answer the calls with another. Kamo could not express that: a member's texting was a prope...

Kamo·1mo ago
Featurekamo-shared-library

Telnyx, the first provider that is both a phone server and a carrier

Telnyx sells SIP trunking, DIDs and messaging, and an organization can buy those halves independently. The case this is for: DIDs and texts bought from Telnyx, ...

Kamo·1mo ago
Featurekamo-internal

The shelf replaces the per-app cards, and four fixes to its rows

The launchpad was a wall of one card per app. The App Shelf lists every one of those apps in a single pane, with what each does and everything inside it, so the...

Kamo·1mo ago
FeatureBillingService

A plan's startup fee, and the live offer, on the wire

PlanDto carried only the recurring rate, so every surface quoting a plan quoted a price the customer would not be charged: KamoCRM's startup fee is $99 a seat, ...

Kamo·1mo ago
Featurekamo-internal

The report's thread in the drawer, shelving, and Issue Persists

`SystemBugThread` renders everything anybody has said about a report and every status it has passed through, under the current-status callout: the callout answe...

Kamo·1mo ago
FeatureEmailService

Preview variables for SYSTEM_BUG_COMMENT

Without them the template editor renders the new letter with holes where the report number, the sender and the button go, which reads as a broken template rathe...

Kamo·1mo ago
FeatureInitializerService

System_bug.media_session_guid, and its lookup index

The column behind a report's comment thread, matching **************** — VARCHAR(36), because MEDIA_SESSIONS.GUID is itself a 36-character string column and a t...

Kamo·1mo ago
FeatureSecurityService

Send To AI tells everybody on the thread, not just the reporter

The dispatch sends the same letter MediaService does, so its audience has to move the same way: every participant in the report's thread minus whoever acted, ea...

Kamo·1mo ago
FeatureMediaService

The thread behind a report, and the two statuses that need one

`SystemBugThreadService` is the whole feature: a report's MediaSession, the status events written into it with the reason their author gave, the comments anybod...

Kamo·1mo ago
Featurekamo-shared-library

Shelving, failed fixes, and a report's whole comment history

A report kept exactly one sentence. `system_bug.denial_reason` was overwritten by every subsequent status move, so a bug that was denied, explained, reopened, f...

Kamo·1mo ago
Featurekamo-internal

A document outline, and a skeleton in the page's own shape

Only the hero was a real heading. Everything else — the ledger's nine categories, the account panels, the covenant, each upgrade option — was a styled div, so a...

Kamo·1mo ago
Featurekamo-internal

Draw the god rules the server now holds

The Users tab locked every god row for everybody, and both halves were wrong. Too loose, because the lock lived only in this component — the endpoints behind it...

Kamo·1mo ago
FeatureSecurityService

Only a god may administer a god, and no god is impersonable

MANAGE_USERS reached the break-glass identity. UserAdminController guarded only the System User, so a non-god holder could disable a god account and revoke its ...

Kamo·1mo ago
Featurekamo-internal

Staff can write the sentence the customer reads

The customer-visible note had a column, a DTO field and a plan page ready to render it, and no way for anyone to set it — so Harmony's was the only one that wou...

Kamo·1mo ago
Featurekamo-internal

The softphone gets an inbox, and an SMS window is one thread

The SMS tool window opened on a twelve-key dialpad and then became a three-tab window -- Chat / Templates / CRM -- titled "Conversation #a3f1c8de-...". None of ...

Kamo·1mo ago
Featurekamo-internal

A Free Plan pill, and a page at /myplan behind both pills

The trial pill lived twice — the nav rail and the launchpad — with the countdown, the member-type gate and the styling copied between them. Both gated on a live...

Kamo·1mo ago
FeatureBillingService

One endpoint behind the customer's own plan page

GET /api/billing/self/plan answers everything /myplan renders: the plan, what the organization can actually use, the catalogue to compare against, seats and the...

Kamo·1mo ago
FeatureSecurityService

Say which plan an organization is on, and who may change it

The console could tell that a trial was running and nothing else. entitlementSource is "TRIAL" or null, so free, expired-trial, paid and comped organizations we...

Kamo·1mo ago
Featurekamo-shared-library

A customer-readable note on a negotiated agreement

The internal `notes` field is where staff record what was conceded and to whom. The customer's own plan page needs prose it can show them, and one careless sent...

Kamo·1mo ago
Featurekamo-internal

The shelf, its slide-out pane, and its place on the first row

Every app the member may open, with a pin, a search, and a pane that slides out of whichever side has room for it. Locked to the launchpad's first row by lib/ho...

Kamo·1mo ago
Featurekamo-internal

First-row arithmetic for a pane locked to row one

Kamo·1mo ago
Featurekamo-marketing

Dress the site for eighteen days of the year

On ~84 days a year the marketing site now decorates itself, automatically, from the reader's own calendar. Snow falls through December and settles on the cards ...

Kamo·1mo ago
Featurekamo-internal

Fix Verified, a reason on every denial, and a Requires Verification filter

The status menu on /support?tab=system-bugs leads with "Requires Verification" and a rule, then the individual statuses. It stands for NEW, IN_PROGRESS and FIXE...

Kamo·1mo ago
FeatureInitializerService

Add denial_reason, and sweep the three retired status names

status_name holds a NAME read back through @Enumerated(STRING), so a row still saying TRIAGED after the constant is gone does not read as a default — it throws ...

Kamo·1mo ago
FeatureMediaService

Let the reporter confirm their own fix, and carry a denial's reason

Adds POST /{id}/verify-fix — the one status change in this feature that is not gated on MANAGE_SYSTEM_BUGS. A separate endpoint rather than a hole in the one be...

Kamo·1mo ago
Featurekamo-shared-library

Retire three statuses, name what Verified verified, and record why a report was denied

Removes TRIAGED, AWAITING_INFO and CANNOT_REPRODUCE. Each described how confident an operator felt rather than where the report had got to, and none of them mov...

Kamo·1mo ago
Featurekamo-internal

Lock the platform rights an operator may not grant

SecurityService now refuses to grant a right the caller does not hold themselves — an administrator may create a peer or a lesser, never a superior. The Manage ...

Kamo·1mo ago
FeatureSecurityService

An administrator may grant a peer or a lesser, never a superior

MANAGE_PLATFORM_ADMINS is the right to administer the platform's access list, not a right to invent access. Without a ceiling it was silently every right at onc...

Kamo·1mo ago
FeatureMediaService

Relay coder usage onto a per-member topic

menu subscribes to over the existing chat STOMP connection. Built as a twin of the training relay — same subject shape, same single-token rule, same core-NATS-...

Kamo·1mo ago
Featurekamo-shared-library

List every provisioned account on one dev machine

findEnabledProvisioned asks existsEnabledProvisioned's two conditions of a can put one question to the agent per tick rather than one per member.

Kamo·1mo ago
FeatureSecurityService

Sweep the dev machine for coder usage and publish what moved

Feeds the two meters the Linux Desktop menu now draws — how much of a member's A sweep rather than a push, because the numbers are born on the machine and stat...

Kamo·1mo ago
Featurekamo-internal

Show how much coder allowance is left, live, in the Linux Desktop menu

windows is left, which window resets when, and whether what is on screen is current. It is the fact that decides whether starting a session is worth doing, so i...

Kamo·1mo ago
Featurekamo-marketing

Carry the no-credit-card mark on the nav Start Free too

The hero CTA changed but the nav button kept a Rocket, so the same action wore two different marks on the same screen — and the nav one is the button a reader s...

Kamo·1mo ago
Featurekamo-internal

A tab per open window above the maximized pane

A maximized tool window with a navigator down its left side now gets a row of tabs across the top of the column beside it — one per OPEN window of the type the ...

Kamo·1mo ago
Featurekamo-marketing

Swap the Start Free arrow for a no-credit-card mark

The hero CTA carried a generic ArrowRight, which told a reader nothing they did not already know from the button being a button. The objection it has to answer ...

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