KamoCRM

Live Change Log

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

15,120
Total Changes
5,169
Features
4,935
Fixes
30
Projects
Filter by project
All Projects15,120AIService197APIService161BillingService143ConversionService107DaemonService129DocsService215ESigService88EmailService518InitializerService318KBService105KlusterServices697MCPGatewayService85MediaService546RAGService71SecurityService1,658TranslateService55VOIPService205VectorService11kamo-apps25kamo-asterisk-support24kamo-capcha17kamo-capcha-widget4kamo-internal6,937kamo-login330kamo-marketing625kamo-nowww20kamo-register213kamo-shared-library1,455kamo-signer-monorepo53kamolos108
Filter by type
All TypesBuild11CI523Chore738Docs2,167Feature5,169Fix4,935Other986Performance157Refactor274Revert23Style42Test94Upgrade1
September 6, 2026
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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w 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·3w ago
Featurekamo-internal

Keep the dock clear of every scrollbar, and let members size it

Three things about the row of docked tool windows. **It stops covering scrollbars.** The dock reserves the viewport's right edge so it does not park a window o...

Kamo·3w ago
FeatureKlusterServices

Report each account's coder allowance to the console

The Linux Desktop menu is getting two meters — how much of the member's numbers. transcripts do not carry them, and neither OTel metric is about the subscripti...

Kamo·3w ago
Featurekamo-internal

Context menus for tool window title bars and hex heads

A member with a dozen windows open could only put them away one at a time, and the only bulk gesture that existed — throwing each hex head at the goal — is a ge...

Kamo·3w ago
Featurekamo-internal

Checkerboard behind the logo previews on Behavior & Labeling

The nine logo slots painted their artwork straight onto the card's own white, which hid the two things an admin is looking at: whether the file is actually tran...

Kamo·3w ago
Featurekamo-apps

Let the lender word the application ribbon

`t("application.ribbon")` becomes the FALLBACK rather than the answer. A lender can set its own wording on the labeling page, which reaches this site through th...

Kamo·3w ago
Featurekamo-register

Let the organization word the three ribbons, and own the tab icon

The route map in PaneRibbon stays exactly as it was and becomes the fallback layer: each of "/", "/member" and "/team" now pairs the wording this site ships wit...

Kamo·3w ago
Featurekamo-login

Let the organization word the ribbon, and own the tab icon

"Welcome Back!" moves out of the root layout into PaneRibbon, a client component, because the wording is now the organization's to choose and this site learns i...

Kamo·3w ago
Featurekamo-internal

Ribbon wording and a tab icon column on Behavior & Labeling

Two additions to the same page, each in the pane it belongs to. **Custom Labels** grows a Ribbon Messages box: five rows, one per public pane screen, in the or...

Kamo·3w ago
FeatureSecurityService

Deliver ribbon wording, and generate favicons from a tab icon

Provisioning learns two things: what an organization wants its public corner ribbons to say, and which artwork its browser-tab icons should be cut from. **Ribb...

Kamo·3w ago
Featurekamo-shared-library

Per-org ribbon wording and tab icons

Fourteen columns on `orgs`, and two small records to keep their shapes honest. RIBBON_MSG_* carry the corner-ribbon wording for the five public pane screens — ...

Kamo·3w ago
Featurekamo-apps

Range the application against the rail instead of centring it

The form column's content was centred in its half, which left a wide margin on both sides and no relationship between the questions and the rail that numbers th...

Kamo·3w ago
Featurekamo-internal

Show the member Careers tab on team membership and an open role

Two conditions, and no right among them: the viewer is a team member, and the organization has at least one posting open and taking applications. The second ch...

Kamo·3w ago
FeatureDocsService

Gate the member board on being a team member with a role open

The member Careers tab now appears on two conditions and no right among them: the viewer is a team member, and the organization has at least one posting open an...

Kamo·3w ago
Featurekamo-register

Carry the job advert to the sign-in link

Plenty of people who press Apply on the careers board already have an account and come here only to discover that. The "Sign in" link now carries the advert the...

Kamo·3w ago
Featurekamo-login

Carry the job advert through a sign-in, and land on the Careers tab

Somebody who presses Apply on the public careers board and already has an account reaches the register page, follows the sign-in link, and used to arrive on a d...

Kamo·3w ago
FeatureSecurityService

Record the advert for a candidate who signs in instead of registering

Registration already wrote recentlyAppliedForId when an account was CREATED. This is the other half of the same funnel: plenty of people who press Apply on the ...

Kamo·3w ago
Featurekamo-register

Frost the whole pane, and let the surface on it turn back to glass

The pane was an opaque white card. It is a sheet of glass now, in two places that do different jobs. .kamo-pane itself goes slightly translucent, so the stage'...

Kamo·3w ago
Featurekamo-register

One surface, a level-gauge step rail, and chrome the tenant colours

The /team and /member screens were two near-identical slabs of glass stacked with a gap, a MUI Stepper in its default grey, and a progress pill floating inside ...

Kamo·3w ago
Featurekamo-internal

Choose the support topic a website's chats are filed under

The add/edit dialogs had no way to say which support queue a website's chats belong in, because the setting didn't exist — the widget sent a hardcoded "General ...

Kamo·3w ago
FeatureMediaService

File a website's chats under the topic its integration chose

createSupportSession took the topic from whatever title the visitor's browser sent — the widget hardcodes "General Inquiry" — and when no topic matched that nam...

Kamo·3w ago
Featurekamo-shared-library

Let an integration say which support queue its chats belong in

A web-chat integration had no support topic. The visitor's browser sent a hardcoded topic title instead, so an org whose topics aren't named "General Inquiry" —...

Kamo·3w ago
Featurekamo-internal

Park the swarm at the bottom-left, against the nav rail

The home cluster's default spot moves from the bottom-right corner to the bottom-left, sitting one padding clear of the primary rail's right edge — collapsed at...

Kamo·3w 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