KamoCRM

Live Change Log

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

17,500
Total Changes
5,986
Features
5,284
Fixes
30
Projects
Filter by project
All Projects17,500AIService251APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService576InitializerService329KBService151KlusterServices740MCPGatewayService251MediaService602RAGService79SecurityService1,847TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,349kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,657kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore774Docs3,254Feature5,986Fix5,284Other994Performance165Refactor278Revert23Style42Test160Upgrade1
August 15, 2026
FixAIService

Administering models and reading usage take the rights that name them

AiModelController and AiUsageController checked organization ownership and no right. The 403s already in the model controller compare provider.getOrganizationId...

Kamo·2mo ago
Fixkamo-internal

30 unenforced becomes 28 — voicemail is gated, call routing is kept

VIEW_VOICEMAIL and MANAGE_VOICEMAIL now gate VoipVoicemailController, which asked for a right only when playing back a recording in a PHI organization and for n...

kamo·2mo ago
FixVOIPService

Working with voicemail takes a right, not just handling PHI

VoipVoicemailController required VIEW_CALL_LOGS on exactly one path — playback, and only when the organization handles PHI. Listing voicemails with their transc...

Kamo·2mo ago
ChoreSecurityService

Rebuild against the shared-lib home_logo_overlay column

No source change here. SecurityService's CI clones kamo-shared-library at build time, so it only maps Organization.homeLogoOverlay once it is rebuilt — and unti...

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

32 unenforced becomes 30 — mailbox administration gated, email logs deleted

VIEW_EMAIL_ACCOUNTS now gates the administrative reads on MailboxController and MANAGE_EMAIL_ACCOUNTS gates every write. Both were client-only before: the whole...

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
FixEmailService

Mailbox administration takes a right, and three endpoints get a session

MailboxController enforced no right at all. MANAGE_EMAIL_ACCOUNTS existed only as a checkRight in the browser and VIEW_EMAIL_ACCOUNTS was referenced nowhere, so...

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

Keep a security model's app grants off the catalog

The Allowed Apps tab showed "Not Available" for every app and snapped back whenever another option was picked. loadModels() runs from a mount-only effect, so i...

kamo·2mo ago
FixConversionService

Gate platform uploads on MANAGE_PLATFORM_SOUNDS, not org ownership

An operator granted "Manage Platform Sounds" on the Platform Administrators page saw the Sounds tab — the console gates on the right — opened the upload dialog,...

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

37 unenforced becomes 32 — CRM contacts and leads are gated

Contacts: all 26 endpoints of EmailService's ContactRestController now take the verb that names them. They checked ownership carefully and no right at all, with...

kamo·2mo ago
FixEmailService

Every contact endpoint takes the verb that names it

ContactRestController checked ownership carefully — orgOf, userOf, assertBookIsMine, assertGroupIsMine, and 404 rather than 403 so somebody else's id is never c...

Kamo·2mo ago
FixSecurityService

Creating and deleting a lead take the rights that name them

LeadController is one of the better-gated controllers in the platform — VIEW_LEADS, EDIT_LEADS, ASSIGN_LEADS, REASSIGN_LEADS_MANUALLY, VIEW_UNASSIGNED_LEADS and...

Kamo·2mo ago
Fixkamo-internal

Stop the letter-fallback org logos from flashing

An org with no logo shows its initial, and on /network that initial blinked continuously. Three things stacked up. PlatformRightsProvider wraps the whole app, ...

kamo·2mo ago
Fixkamo-internal

41 unenforced becomes 37 — the document verbs are gated

CREATE, EDIT, DELETE_DOCUMENTS and MANAGE_STORAGE now gate DocsService's ImagingController and DocumentController and ConversionService's upload endpoints. The ...

kamo·2mo ago
FixConversionService

Uploading a file takes CREATE_DOCUMENTS, like every other way of making one

The document rights are enforced in DocsService as of this change, but the upload endpoints are not in DocsService — kamo-internal's app/api/imaging/upload prox...

Kamo·2mo ago
FixDocsService

The document verbs are enforced, as the org's security model resolves them

ImagingController checked ImageAccessLevelType and nothing else, and DocumentController checked only that a session existed. Access level is a real control but ...

Kamo·2mo ago
Docskamo-internal

Sixth cluster triaged — documents span four services, and must not be seeded

CREATE, EDIT, DELETE_DOCUMENTS and MANAGE_STORAGE all have real live features, so nothing here is deletable. VIEW_DOCUMENTS is client-only in navRegistry, the s...

kamo·2mo ago
Fixkamolos

A loan id is not a credential — scope every LoanController read to the org

LoanController.get(uid) took a loan id and returned whatever it found. Any caller who reached the service got the loan, balances and borrower included, whicheve...

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

43 unenforced becomes 41 — the two notes placeholders are deleted

Mirrors the shared-lib removal of SHARE_NOTES (72) and MANAGE_NOTES_SETTINGS (73): the TS constants and the registry array, the one parent-map edge in both righ...

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

Rebuild — the i18n guard raced the dictionary push

No source change. 9a5b5167 failed on eleven missing background-slideshow keys because the components reached main at 01:47 and the strings reached kamo-translat...

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
FixSecurityService

Renaming a member is an admin act, and now has a gate

The member profile's legal-name card was self-only, so an admin who typed a name wrong on the create form could never correct it — MemberCreateForm asks for pre...

Kamo·2mo ago
Fixkamo-internal

46 unenforced becomes 43 — the notes endpoints are gated

Fifth cluster. The Notes backend is KBService, not SecurityService: the entity sits under donotmodify/dao/beans/security/ and kamo-internal proxies /api/notes/*...

kamo·2mo ago
FixKBService

Every notes endpoint takes the right that names it, and hasRight fails closed

NotesController checked no right on any of its ten endpoints. VIEW_NOTES was enforced in exactly one place — navRegistry.ts, hiding the Notes app in the browser...

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

Stop a page-2 request from cancelling the folder you just opened

Junk, Trash, Archive and every custom folder showed the same mail — whatever was on screen before them. The server was not the problem: replaying listMessages a...

kamo·2mo ago
PerformanceSecurityService

Resolve each handler's platform annotation once

The interceptor is registered for /** so the annotation lookup ran on every request this service serves, sign-in included, and AnnotatedElementUtils walks the m...

Kamo·2mo ago
FixSecurityService

Close the add-path route around the platform-admin lockout guard

POST replaces an existing administrator's rights, so it can take them away as well as give them — but only the PUT and DELETE paths checked whether the edit wou...

Kamo·2mo ago
Fixkamo-internal

Let a granted administrator actually see Platform Administration

The section gate and the settings menu topic still asked useUserInfo's hasPlatformAdminAccess, which is owner-of-the-top-level-org or an open god-mode window an...

kamo·2mo ago
Fixkamo-internal

Send an operator with no Configuration tab somewhere real

SYSTEM_USER and MANAGE_UNIVERSE gate surfaces that are not tabs on this page, so somebody holding only those is a platform administrator the page guard admits a...

kamo·2mo ago
FixInitializerService

The meet seed recomputes applied rights instead of waiting for a boot

Granting the two rights on org_role_rights changes nothing anybody can observe. member_rights_applied is the flattened snapshot the session and the server-side ...

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

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