Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

17,865
Total Changes
4,581
Features
4,512
Fixes
32
Projects
Filter by project
All Projects17,865AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService348InitializerService299KBService74KlusterServices539MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,553kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,581Fix4,512Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
September 6, 2026
FixVOIPService

A Telnyx phone server could send texts and never receive one

Telnyx is both a phone server and a carrier, and a Telnyx messaging profile has exactly one webhook URL. So an organization that added Telnyx as a PHONE SERVER ...

Kamo·4d ago
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·4d ago
Testkamo-internal

The /myplan to console journey, end to end

The preselect landed across two sessions and two files, so the thing worth pinning is the journey rather than either half: a plan chosen on /myplan arrives sele...

Kamo·4d ago
Fixkamo-internal

One price on the screen, and a purchase that cannot fail silently

The console showed a customer three different numbers for one plan and let them buy with no card. Rendering it against the live catalogue, Business at five seat...

Kamo·4d 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·4d ago
Docskamo-shared-library

What the thread design got wrong, as built

Two schema faults that only appeared on deploy — the hand-applied column that was flagged and not applied, and a frozen ddl-auto CHECK on media_sessions that wo...

Kamo·4d 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·4d 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·4d 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·4d ago
Fixkamo-internal

Stop the launchpad capping its own dropdowns under every scrollbar

The admin bar's dropdowns were painting under the App Shelf's scrollbar, and lowering the shelf's z-index last time did not help — because the number was never ...

Kamo·5d 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·5d 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·5d ago
FixBillingService

Charge what the screen says, and refuse rather than pretend

An audit of the Plans & Billing console against live Stripe keys found the seam between the screen and Stripe broken in every direction at once, and silent in a...

Kamo·5d 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·5d ago
Testkamo-internal

Pin KamoCRM's own sales details, and that no org can change them

The address and number are constants a single edit away from becoming a tenant lookup, which would route a customer asking about a KamoCRM plan back to their ow...

Kamo·5d ago
FixVOIPService

Populate a new number before persisting it, not after

save() built an empty OrgPhoneNumber, persisted it, and then filled in E164 and PHONE_CANON — both NOT NULL. It works today because the UUID generator needs no ...

Kamo·5d 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·5d ago
Fixkamo-internal

Attachments authenticate like chat's, instead of showing broken

Every attachment on a bug report rendered as a broken tile. In production: seven content requests, seven 401s, zero successes — while the report's own JSON load...

Kamo·5d 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·5d 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·5d ago
Fixkamo-internal

Anchor it to the first cell, and stop the scrollbar collapsing it

Three things, and two of them are the same mistake: asking a question about a portalled element as though it were a child. THE SCROLLBAR COLLAPSED THE PANE. Sc...

Kamo·5d 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·5d ago
Fixkamo-marketing

One source of truth, and a build that can actually reach it

Every price on this site had a second copy in the repo, and the second copy was the one being served. kamo-prices.ts said so in its own comment: the fallback t...

Kamo·5d 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·5d ago
FixInitializerService

Drop the frozen type_id CHECK that blocked every bug thread

`media_sessions` is created by Hibernate's ddl-auto, not by a migration, so it carries the constraint ddl-auto writes for an `@Enumerated(ORDINAL)` column — fro...

Kamo·5d 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·5d 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·5d ago
Fixkamo-internal

Quote the real price, and stop the Free plan looking like the best one

Two things on this page were wrong in a way that reaches customers. The price. bestRate() took the cheapest rate across all three terms and printed it as "per ...

Kamo·5d ago
Fixkamo-internal

The templates button called an endpoint that could not answer

Found by reading the controller rather than the code calling it, and it was broken twice over in a way that LOOKED fine: - The list asked for `status=ACTIVE`...

Kamo·5d 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·5d 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·5d 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·5d 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·5d ago
Fixkamo-internal

Two rows tall, and it opens by widening rather than by a second pane

The pane was 861px tall, not the 496 its two rows ask for. The launchpad grid is gridAutoRows: minmax(106px, auto), and an auto maximum sizes a track to its ite...

Kamo·5d 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·5d 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·5d ago
Fixkamo-internal

No explanation that lasts one frame, and a failure you can act on

A refused member was shown an info alert and redirected home in the same breath, so the message appeared for one frame and was replaced by the launchpad. That i...

Kamo·5d ago
FixSecurityService

Wire the god guard into the identity-rights test's policy

UserAccountEditPolicy took a third constructor argument and this test still built it with two, so test-compile failed — and CI runs `mvn package -DskipTests`, w...

Kamo·5d 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·5d ago
Refactorkamo-internal

One module owns the link from the plan page to the billing tab

Every action on /myplan is a link into Plans & billing, and it has to land on the right sub-tab or "Payment and invoices" opens on Subscriptions and looks broke...

Kamo·5d ago
Fixkamo-internal

The upgrade section said the opposite of the truth during a trial

A trialling organization's plan row really is FREE — the subscription points at it — while the trial has the whole catalogue switched on. The difference this se...

Kamo·5d 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·5d 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·5d ago
Testkamo-internal

Type the nav-option fixture the shelf tests hand the launcher

The helper took { id: string }[], so every fixture with a kind, an href or a toolKey on it was a type error the test run never saw and tsc did.

Kamo·5d 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·5d ago
Fixkamo-internal

Bridge SMS unread across the boundary the tool dock sits above

ToolDock is mounted in ToolProviders ABOVE AuthedChrome, deliberately, so it never unmounts across a navigation -- the single fact that keeps a member's typing ...

Kamo·5d ago
Fixkamo-internal

Clear the shelf's edge, cap the pane's height, and read apps from one source

Three things a real browser found that the tests could not: - The pane anchored to the shelf's inner content column, so it opened a dozen pixels INSIDE the w...

Kamo·5d 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·5d 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·5d 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·5d ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing