KamoCRM

Live Change Log

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

17,379
Total Changes
5,896
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,379AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,823TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,635kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,896Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
August 22, 2026
Featurekamo-shared-library

Count an event's guests without loading them

Kamo·2mo ago
Featurekamo-internal

Three more widgets — unread mail, leads needing action, today's timecard

The widget system paid for itself: each of these is a registry entry and a component, inheriting the grid, the drag, the ordering, the per-member show/hide, the...

kamo·2mo ago
FeatureSecurityService

Seed the mail and lead widgets, and add a universal seed for the timecard one

The mail and lead widgets follow their data rights exactly as the calendar ones do — ACCESS_MAIL and VIEW_LEADS — so a holder gains no data they could not alrea...

Kamo·2mo ago
FeatureEmailService

Serve the home-page unread digest from the index, never from IMAP

A widget on the home page is on screen for everyone all day, whether or not anybody is reading mail — and a member's IMAP connections are a shared budget of ten...

Kamo·2mo ago
Featurekamo-shared-library

Three more home widgets, and the one that cannot have a parent

Unread mail hangs off ACCESS_MAIL and leads-needing-action off VIEW_LEADS, both by the same rule as the calendar widgets: a widget is gated by the right that go...

Kamo·2mo ago
Featurekamo-internal

Search departments and job types alongside people

kamo·2mo ago
Featurekamo-internal

Model an event's guest audience on the client

kamo·2mo ago
FeatureEmailService

Publish and accept an event's guest audience

Kamo·2mo ago
FeatureEmailService

Resolve an event's guest audience into people

Kamo·2mo ago
Featurekamo-shared-library

Map an event's guest audience and each attendee's source

Kamo·2mo ago
FeatureInitializerService

Add the DDL for an event's guest audience

Kamo·2mo ago
Featurekamo-internal

Put live widgets on the launchpad, starting with two calendar strips

A widget is a live pane that shares the grid, the drag and the ordering with the app cards rather than sitting beside them. Adding the next one is a single regi...

kamo·2mo ago
FeatureSecurityService

Seed the calendar widgets to everyone who can already read the calendar

Both widgets show a member exactly what /calendar already shows them, so a calendar reader gains no data they could not reach — which is what makes this a safe ...

Kamo·2mo ago
FeatureEmailService

Serve and announce the home-page calendar widgets

CalendarWidgetService answers what a widget actually needs and the calendar page hasEarlier/hasLater so an arrow greys out instead of offering an empty page. Th...

Kamo·2mo ago
Featurekamo-shared-library

Give every home widget a five-right policy, and page the calendar for it

Ten rights arrive as two five-right blocks — one per widget — hanging off VIEW_CALENDAR, because a widget must be gated by the right that governs the data it sh...

Kamo·2mo ago
Featurekamo-internal

Add the Policies tab, and stop offering chats the backend refuses

Four views over one draft ruleset, because there are four different questions and no single layout answers them all. Rules is what each rule does, Matrix is wha...

kamo·2mo ago
August 21, 2026
FeatureInitializerService

Create the chat policy schema

Six tables: the versioned ruleset, its rules and their clauses, the reply grants behind "reply only while their window is open", and the trail of what the polic...

Kamo·2mo ago
FeatureSecurityService

Annotate the member roster with its chat policy verdict

SecurityService serves the roster the chat UI is built from, so it has to answer with the same verdicts MediaService enforces with -- one shared evaluator, or t...

Kamo·2mo ago
FeatureMediaService

Enforce the org chat policy, and close two holes it sat on

Applies the policy at the three places a conversation can start or continue: session creation, member adds, and the send path. A room is not policed pair by pai...

Kamo·2mo ago
Featurekamo-shared-library

Add the org chat policy engine

Decides whether one member may open a conversation with another, and whether they may send into one that exists. Rules are an ordered list over ordered pairs an...

Kamo·2mo ago
Featurekamo-internal

Reorder the tabs and paint Binders and Uploads

The strip reads Originals | Modified | Common | Binders | Uploads, which puts the three views of the documents together and the two destinations after them. Bin...

kamo·2mo ago
Featurekamo-internal

Say when a selected document could not be added

The Selected Docs binder skips a document it cannot legally hold rather than failing the whole sync, which is right — but it did so silently, so a binder holdin...

kamo·2mo ago
Featurekamo-internal

Fold the Modify tab into Binders

The strip is now Originals | Binders | Modified | Common | Uploads. Modify is gone: everything it did — arrange the checked documents, preview them, merge them ...

kamo·2mo ago
FeatureDocsService

Serve and sync the Selected Docs binder

POST /api/docs/binders/scratch fetches the caller's Selected Docs binder for one collection, creating it on first use, and replaces its documents with the grid ...

Kamo·2mo ago
FeatureInitializerService

Add binders.is_scratch

Four statements rather than one ALTER: binders is populated, and Yugabyte rejects the whole ADD COLUMN … NOT NULL statement rather than the clause, so the colum...

Kamo·2mo ago
Featurekamo-shared-library

Mark the member's auto-managed Selected Docs binder

binders.is_scratch flags the one binder per (owner, collection) whose documents are the DocManager grid selection rather than a curated list. It is an ordinary ...

Kamo·2mo ago
Featurekamo-internal

Assemble the lead record instead of holding it behind a spinner

The Details tab's loading state was one card of fourteen grey MUI pulse rows — a shape the pane never takes, on a per-element clock, replaced wholesale by a lay...

kamo·2mo ago
FeatureSecurityService

Ask EmailService to back-fill a lead's past e-mail

Implements the shared library's LeadEmailBackfillTrigger, so ticking "Associate Past E-Mails w/ Lead" on a lead save reaches the only service that can read mail...

Kamo·2mo ago
FeatureEmailService

Scan the org's mailboxes for a lead's past e-mail on request

Serves the "Associate Past E-Mails w/ Lead" tick-box. Given a lead and the address just recorded on it, read INBOX and Sent of every mailbox in that lead's orga...

Kamo·2mo ago
Featurekamo-shared-library

Let a lead claim mail that predates its e-mail address

Matching is point-in-time by design — a contact point only claims traffic inside its window, so editing a lead cannot retroactively rewrite history. The cost is...

Kamo·2mo ago
Featurekamo-internal

Offer to associate past e-mail when a lead's address is set

Mail is matched to a lead strictly point-in-time: an address only claims traffic from the moment it is recorded, so that editing a lead today cannot rewrite who...

kamo·2mo ago
Featurekamo-internal

One agent picker for assignment, reservations and the filter

The Assigned Agent control on a lead's assignment pane was a local component in LeadViewClient. Two other places wanted exactly it, so it moves to *************...

kamo·2mo ago
FeatureSecurityService

Accept a reservation raised for another agent

POST **************** now honours onBehalfOfMemberId, gated on EDIT_OPPORTUNITIES — the right that gates managing opportunities on the reserved list, and alread...

Kamo·2mo ago
FeatureInitializerService

Add ****************

Records who filed a reservation when that is not the agent it names, so somebody managing opportunities can raise one on a sales agent's behalf without the reco...

Kamo·2mo ago
Featurekamo-shared-library

Let a manager raise a reservation for an agent

Somebody who manages opportunities can now file a reservation request on a sales agent's behalf. CreateReservationRequest carries onBehalfOfMemberId for it. Th...

Kamo·2mo ago
Featurekamo-internal

Hide the balance controls that free-for-all cannot use

Credit Balance, Daily Allotment and Max Balance all act on a granted balance, and an FFA product has none — acceptance there mints and spends its own credit. Le...

kamo·2mo ago
Featurekamo-shared-library

Make free-for-all acceptance spendable, so it can be capped

FFA bypassed the credit system outright, which left a manager with no lever over it: Max Daily Spend sat behind if (!ffa) and could not cap an FFA product, and ...

Kamo·2mo ago
Featurekamo-internal

Name the requestor, move the org line, shorten the Open Org button

Three adjustments to the support surfaces. "Open org as System User" is now "Open Org", sitting immediately after assign/reassign rather than at the end of the...

kamo·2mo ago
Featurekamo-internal

Say which clock the event dialog is on, and show the start time

Four things the composer got wrong, on /calendar and on the lead page alike. The zone was the browser's. That is a fact about the laptop, not about the member:...

kamo·2mo ago
FeatureSecurityService

Publish Hibernate statement counts to Prometheus

/actuator/prometheus already carried jdbc_* and hikaricp_* but no hibernate_*, because Spring Boot 3 only auto-configures those metrics when **************** is...

Kamo·2mo ago
Featurekamo-internal

Show the requestor's photo on each support chat row

Every row in Chats → Support wore the same blue support glyph, which is no help at all when the list is what you scan to decide what to pick up. The face is now...

kamo·2mo ago
FeatureMediaService

Put the requestor's face and name on each support chat row

A Chats → Support row showed the same support glyph on every line, so a queue of them was a wall of identical blue circles. The face people actually scan for is...

Kamo·2mo ago
Featurekamo-internal

Pool count on the product header, accepted-today per member

Leads Available was rendered in every member row of a product group, but it is a property of the (product, market) pool — the same number repeated down the colu...

kamo·2mo ago
Featurekamo-shared-library

Resolve a member's photo URL from the shared library

The Chats → Support list is about to show the requestor's face, and a support requestor is — on the platform's own desk — always somebody else's member. Every o...

Kamo·2mo ago
FeatureSecurityService

Return each member's accepted-today count per product

Manage-Credits shows Max Daily Spend but nothing about how much of it is used, so a manager could not tell whether a member was one lead from their cap or had n...

Kamo·2mo ago
Featurekamo-shared-library

Count today's spend across a member's products in one query

Manage-Credits wants to show, per member, how many leads they have accepted so far today — the running total the Max Daily Spend cap is compared against. ******...

Kamo·2mo ago
Featurekamo-shared-library

Count the assignable pool for every vendor product at once

countAssignablePool answers for one product, so a caller can only ask about products it already holds. Manage-Credits was iterating allotments to decide what to...

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