KamoCRM

Live Change Log

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

17,393
Total Changes
5,908
Features
5,260
Fixes
30
Projects
Filter by project
All Projects17,393AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,829TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,327kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,637kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,908Fix5,260Other993Performance165Refactor278Revert23Style42Test159Upgrade1
August 15, 2026
Featurekamo-internal

A solid-colour overlay for the loading screen logo too

Adds "Loading Screen Logo Overlay" directly under the home page one on **************** with the same thirteen options, applying to the logo on the screen shown...

kamo·2mo ago
FeatureInitializerService

Add the loading_logo_overlay column

Second surface for the logo overlay feature: the loading screen shown between page navigations, alongside the home page masthead. Both ALTERs live in the one r...

Kamo·2mo ago
Featurekamo-shared-library

Carry the loading screen logo overlay on Organization

The same overlay vocabulary as homeLogoOverlay, applied instead to the logo on the loading screen shown between page navigations, plus its branch in the generic...

Kamo·2mo ago
Featurekamo-internal

Pick the assigned agent from the directory, not a dropdown

The Assigned Agent field is now the same control as Manager on a member's profile: a read-only field that opens the searchable member picker. A dropdown could o...

kamo·2mo ago
FeatureSecurityService

Narrow the member search to holders of a given right

The lead assignment picker needs the directory to return only people who can actually work a lead, so /team-members/search takes a requiredRight. An unrecognise...

Kamo·2mo ago
Featurekamo-shared-library

Let the directory filter by right, and let a lead be unassigned

Two things the assignment picker needs. The directory queries take an allowed-id set so a caller can narrow the search to the people a thing may actually be gi...

Kamo·2mo ago
Featurekamo-internal

The editors say "Enforced as MANAGE_TIMECARDS" instead of "Not yet enforced"

One chip was carrying two different truths and misleading in opposite directions. Unbuilt means nothing checks the right and granting it does nothing. Supersede...

kamo·2mo ago
Featurekamo-shared-library

Carry the home page logo overlay on Organization

The solid colour an org can paint over the masthead logo on the kamo-internal home page, plus its branch in the generic patch path so the existing PUT /org/{id}...

Kamo·2mo ago
FeatureInitializerService

Add the home_logo_overlay column

Backs the Home Page Logo Overlay setting: the solid colour an org can paint over the masthead logo on the kamo-internal home page. Holds a token rather than a ...

Kamo·2mo ago
Featurekamo-internal

Let an org paint the home page logo a solid colour

Adds "Home Page Logo Overlay" to Branding on **************** directly above Background Watermark: No Overlay, White, Black, and every step of the org's own pri...

kamo·2mo ago
FeatureInitializerService

Purge VIEW_EMAIL_LOGS rows, and stop a test rotting when ordinals shift

VIEW_EMAIL_LOGS (64) was deleted from RoleRightType today for naming a feature that was never built. This removes what it left behind — measured at 42 role rows...

Kamo·2mo ago
Featurekamo-shared-library

Delete VIEW_EMAIL_LOGS, which names a feature nobody built

No email log exists anywhere in the platform: no table in any schema, no endpoint among EmailService's 21 controllers, no UI, and no reference in the frontend —...

Kamo·2mo ago
Featurekamo-internal

Put the note composer at the top of All Communications

The composer only existed on the Notes sub-tab, so writing a note about what you were reading meant leaving the tab you were reading it on. All now carries the ...

kamo·2mo ago
Featurekamo-internal

Choose the new org's apps while creating it

Adds an Apps & Features step between Type and Basics. It lists the apps the chosen branch type's security model actually offers -- the forced ones as "Always in...

kamo·2mo ago
FeatureSecurityService

Let the creator choose the new org's apps

The network-create wizard gains an Apps & Features step, and this is the half that makes it real. /branch-types/creatable now describes the apps each branch ty...

Kamo·2mo ago
Featurekamo-shared-library

Rewrite the app catalog copy for the people who read it

The display name and description on ServiceType are the only description of an app most people ever see: an org admin on Settings -> Apps & Features, a parent-o...

Kamo·2mo ago
FeatureSecurityService

Protect god accounts on the platform administrator list

A god account's platform rights may be changed only by another god, and a god account can never be removed from the list — by anyone, including another god. Go...

Kamo·2mo ago
Featurekamo-internal

God accounts are protected on the platform admins list

Two rules the server enforces and this only mirrors: a god account's platform rights can be changed by another god and nobody else, and a god account can never ...

kamo·2mo ago
FeatureSecurityService

Bake the org's background order into config.json

kamo-login, kamo-register, the marketing site and KamoMeet all read the theme bucket's config.json for backgroundImageCount; backgroundOrder now rides alongside...

Kamo·2mo ago
Featurekamo-shared-library

Background_order column for the public slideshow order

Nullable VARCHAR; null resolves to sequential on every client, which is what every org had before the column existed. Plain String rather than an enum so a late...

Kamo·2mo ago
FeatureInitializerService

Purge the stored rows for the two retired notes rights

SHARE_NOTES (72) and MANAGE_NOTES_SETTINGS (73) were deleted from RoleRightType today for having no feature to gate. This removes what they left behind, counted...

Kamo·2mo ago
Featurekamo-shared-library

Delete SHARE_NOTES and MANAGE_NOTES_SETTINGS, which name nothing

Notes are real, and as of today fully gated — VIEW, CREATE, EDIT and DELETE are enforced on every endpoint of KBService's NotesController. These two had nothing...

Kamo·2mo ago
FeatureInitializerService

Add orgs.background_order

Nullable VARCHAR(20), no backfill and no DEFAULT — every client resolves an absent value to sequential, which is the behaviour every org had before the column e...

Kamo·2mo ago
Featurekamo-marketing

Read the org's real background count and play order

The hero probed for bg/1.webp and then hardcoded three frames, so an org with more never showed them and the rotation modulo'd by LOCAL_BGS.length regardless of...

Kamo·2mo ago
Featurekamo-register

Honour the org's sequential/shuffle slideshow order

Same config.json contract as kamo-login: backgroundOrder drives all three registration backgrounds, absent key stays sequential.

Kamo·2mo ago
Featurekamo-login

Honour the org's sequential/shuffle slideshow order

config.json now carries backgroundOrder alongside backgroundImageCount. Shuffle re-randomises on every advance and never repeats the frame on screen; an absent ...

Kamo·2mo ago
FeatureSecurityService

All-networks follows the System User right

Seeing every organization and being able to enter one are the same decision — the list exists so an operator can find the organization they are about to support...

Kamo·2mo ago
Featurekamo-internal

Platform Admins console gates every platform surface

Renames the System User tab to Platform Admins and turns it into what it was always standing in for: a list of the people who may operate the platform, each hol...

kamo·2mo ago
FeatureInitializerService

Stand up the platform administrator list

Backfills it from the retired system_user_access grants so nobody who could operate the System User before this deploy loses it: direct member grants map one-to...

Kamo·2mo ago
FeatureBillingService

Decide platform access with the shared resolver

@PlatformAdminOnly now names the platform right it requires (defaulting to MANAGE_ORGANIZATIONS, which is what this service's platform surface is about) and the...

Kamo·2mo ago
FeatureSecurityService

Enforce platform rights on every platform surface

@RequirePlatformRight + PlatformRightInterceptor replace three hand-rolled "is the caller a top-level-org owner" gates that were copies of each other, one per p...

Kamo·2mo ago
FeatureInitializerService

Seed the meet rights before the gate can lock anyone out

MediaService now requires START_MEETING to create a meeting and VIEW_MEETINGS to resolve one. Measured on production before writing this: 42 security roles acro...

Kamo·2mo ago
FeatureMediaService

Creating and resolving a meeting take the rights that name them

/api/meet/create checked only that you had a session, so every authenticated member of every organization could create a meeting with the org's provider — START...

Kamo·2mo ago
Featurekamo-shared-library

Platform rights as a spine of their own

Who may operate the platform has been three different answers in three different places — a system_user_access grant table, an owner check copied into each plat...

Kamo·2mo ago
Featurekamo-internal

Drop the Reset Filters button from the leads list

kamo·2mo ago
Featurekamo-internal

Move the callback marker beside the contact name, add a Callback filter

The marker sits with the name because that is who the call is to, rather than in the id column where it pushed the ids out of line. The filter offers All / Sch...

kamo·2mo ago
Featurekamo-internal

Upload your own sound effects, at all three layers

The system could only ever play the thirty-nine tones it shipped with. Now any layer can add its own file — the platform's catalogue, an organization's, a membe...

kamo·2mo ago
FeatureSecurityService

List, rename, retire and stream uploaded sound effects

Bytes arrive through ConversionService (which owns ffmpeg and the scanner); everything afterwards is here, where the session and the scoping rules already live....

Kamo·2mo ago
FeatureConversionService

Transcode uploaded sound effects to Opus

Extends the ffmpeg wrapper the VoIP recording pipeline already had — this image installs ffmpeg with libopus for it, so putting a second ffmpeg in another image...

Kamo·2mo ago
Featurekamo-shared-library

Uploaded sound effects, and the storage domain that counts them

EVENT_SOUND_ASSETS: a sound file somebody uploaded, ready to be assigned. Scope mirrors EVENT_SOUND_PROFILES exactly — same three layers, same SCOPE_ID conventi...

Kamo·2mo ago
Featurekamo-internal

Let the sender edit the meeting invite email subject

The invitation subject was fixed at "<host> from <org> invited you to a meeting" and built inside the send route, so nobody could say what the meeting was actua...

kamo·2mo ago
Featurekamo-internal

Gate the personal-loan proxy on the PLOS rights

KamoLOS enforces nothing — no rights check anywhere in its source — so this proxy is the authorization boundary for the module, the position denyUnless occupies...

kamo·2mo ago
Featurekamo-shared-library

A kind for the meeting that is about to start

MEETING_REMINDER, so MediaService can raise the start-time nudge as a notification instead of a popup only it knows about. Its own kind rather than CALENDAR_EV...

Kamo·2mo ago
August 14, 2026
Featurekamo-internal

Subscribe to the course count instead of asking for it every minute

NavTop sums two counts into one obligation badge, and only the legal half was live. A member assigned a course — or excused from one by HR — kept the old number...

kamo·2mo ago
FeatureMediaService

Relay the outstanding-course count onto the member's own topic

The twin of the legal relay, because NavTop sums the two counts into one badge and a pair of halves that behaved differently would give the member chrome that w...

Kamo·2mo ago
FeatureDocsService

The outstanding-course badge moves when the course does, not a minute later

The NavTop obligation badge sums two counts — packages to sign and courses to take — and only one of them was live. The legal half has pushed since its NATS blo...

Kamo·2mo ago
FeatureEmailService

Publish every change of state, not only arrivals

A member has this open in more than one tab about as often as not, and often on a phone as well. Each of those holds its own socket and draws its own bell, and ...

Kamo·2mo ago
Featurekamo-internal

The bell tells the truth in every tab, not just the one you clicked in

The nav-top bell was live for arrivals and nothing else. Reads, dismissals, snoozes and deletions were applied to whichever tab the member clicked in and announ...

kamo·2mo ago
Featurekamo-internal

Drop the three chat-channel rights from the frontend

Mirrors the shared-lib deletion: the enum mirror, its registry array, both hierarchy edges (ACCESS_CHAT -> CREATE_CHANNELS -> MANAGE_CHANNELS and ACCESS_CHAT ->...

kamo·2mo 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