KamoCRM

Live Change Log

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

18,414
Total Changes
6,545
Features
5,540
Fixes
30
Projects
Filter by project
All Projects18,414AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService623InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,999TranslateService62VOIPService265VectorService11kamo-apps27kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,701kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,828kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,545Fix5,540Other1,001Performance174Refactor282Revert23Style45Test175Upgrade1
August 22, 2026
Fixkamo-internal

Restore the pane fill fix reverted by 006fea03

006fea03 was a DocManager change built from a tree that predated 791b99a5, so it carried all eight of that commit's files back to their previous blobs. Its own ...

kamo·2mo ago
Featurekamo-internal

One Modify menu, and Modified as its own records

"Open in Docs" and "Edit PDF" are gone. Each row has Modify, which offers "Edit In Form Fillable Mode" always and "Edit in Classic Mode" only where the LibreOff...

kamo·2mo ago
Fixkamo-internal

Let a pane's contents fill the size the member gave it

A resized widget grew its frame and left its contents the size they were. The cause was one missing declaration. Adding the colour control and the resize handl...

kamo·2mo ago
Featurekamo-internal

Resizable, recolourable panes — and pinned notes join the grid

FOUR THINGS, one grid. CUSTOM SIZING. A widget can now declare `custom`, and all five do. The registry's width and height stay the DEFAULT — custom adds a hand...

kamo·2mo ago
Fixkamo-internal

Send the event's instants, and keep the end after the start

The two datetime fields hold offsetless wall-clock text and the API binds them to a java.util.Date, so the server read them in ITS zone — UTC. A member setting ...

kamo·2mo ago
Fixkamo-internal

Widgets are configured by security rights, and nothing else

The timecard widget's rights mirror moves under MANAGE_TIMECARDS, so all five widgets have one shape. The availability-hook machinery is removed with it — useA...

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

Search departments and job types alongside people

kamo·2mo ago
Fixkamo-internal

Restore the CRLF line endings in calendar.ts

A scripted edit rewrote the file through a text API, which normalised every one of its 257 CRLF line endings to LF and turned a 45-line addition into a 559-line...

kamo·2mo ago
Featurekamo-internal

Model an event's guest audience on the client

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

Plan the event guest audience implementation

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

Design the org chat policy engine and its Policies tab

Rules are an ordered list over ordered member pairs; the first match decides, so every verdict names exactly one rule and the UI can always explain itself. Sele...

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

Removing from Selected Docs unchecks the row

The mirror ran one way. Removing a document deleted the binder item but left its checkbox ticked in the grid, so the next sync — on the very next visit to the t...

kamo·2mo ago
Fixkamo-internal

Stop rounding document ids into nothing

A document id is a 19-digit int64 — 1200096283020258886, some 133x past Number.MAX_SAFE_INTEGER. OrganizerTab joined the selection into a key so the effect woul...

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

A minimized chat is neither read nor silent

Two bugs that shared a cause: the only flag saying "this window is minimized" was pinned false, so everything that asked it silently did nothing. An arriving m...

kamo·2mo ago
Fixkamo-internal

A member chat's own reads clear its badge, and a reply counts as one

Two gaps left over from giving the support window this treatment. Sending a message cleared nothing. The chat core marks a conversation read when it starts, wh...

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

Stop flexbox crushing the When card down to its header

The start and end fields were not clipped by their own width. The card holding them was being shrunk to nothing. A flex item's automatic minimum size — `min-he...

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

Take leads-available from the server's per-product counts

leadsByProduct was derived from the allotment rows, which only cover products someone already holds a credit rule for. The grid lists products from the vendor c...

kamo·2mo ago
Fixkamo-internal

Give the composer its caret back after each send

Every chat box in a tool window locks itself while a message goes out — the input carries `disabled` so nothing typed mid-flight is discarded when the draft res...

kamo·2mo ago
Featurekamo-internal

Show the requestor's org, and offer the System User door to their agent

The support chat header now names the organization the request came from, to everyone working the conversation and to nobody else — the person who raised it wou...

kamo·2mo ago
August 20, 2026
Performancekamo-internal

Fetch one server-filtered page instead of the whole organisation

The grid fetched every lead in the org and narrowed it in a ~300-line useMemo. Measured on production 2026-08-20: 1,427 leads fetched so seven could be shown, 2...

kamo·2mo ago
Fixkamo-internal

Every country flag in the app was a blocked image

Eight more screens had the defect found in the marketing visitor drawer. The app is served under img-src 'self' data: blob: https://theme.kamocrm.com https:/...

kamo·2mo ago
Fixkamo-internal

Flags are emoji, because the CSP blocks every flag CDN

The visitor drawer painted a broken-image glyph where each country flag should be. react-country-flag's `svg` mode reads like a self-contained component and is ...

kamo·2mo ago
Featurekamo-internal

Offer Company Name as a mappable import field

leadFields.ts is the list the mapping canvas draws from, and it must mirror the backend switch in LeadImportController — a path missing from either side is acce...

kamo·2mo ago
Featurekamo-internal

Retitle Modified to Converted and fix two tab icons

Both tabs wore an icon that already means something else in this grid: the Modify tab used GetApp, the row-level download button, and Converted used EditNote, t...

kamo·2mo ago
Fixkamo-internal

Clear the unread badge for a conversation the member is reading

The badge was fed by two unordered sources — the REST unread read and MediaService's unread topic — and applied whichever landed last, with nothing ever re-read...

kamo·2mo ago
Featurekamo-internal

Choose which page a tracking link lands on

A code is not tied to a page — the marketing site captures it site-wide — so the only real question when sharing one is where the visitor should land. The produ...

kamo·2mo ago
Fixkamo-internal

Show the code as a handle, not 36 characters of hex

Moving the token to a UUID left the grid rendering the whole thing, which is correct in a URL and useless in a table: it cannot be scanned, compared against the...

kamo·2mo ago
Featurekamo-internal

Build the shared link as ?discount=<uuid>

buildTrackingLink emits the new parameter, and the link strip highlights the ?discount= segment it used to highlight as ?mrt=. The token itself is now an opaque...

kamo·2mo ago
Featurekamo-internal

Show when a visitor's credit moved to another link

The timeline gains ATTRIBUTION_MOVED, in the warn tone — not a conversion and not a failure, but the moment this visitor stopped being this member's to earn fro...

kamo·2mo ago
Featurekamo-internal

Move Windows Desktop and Master Machine into Platform Admins

Both are Guacamole targets that share one credential between everybody, which makes them operator tooling rather than a member's own workspace. They were top-ba...

kamo·2mo ago
Fixkamo-internal

A popup with nowhere to dock now overlaps instead of not opening

A tool window — the email composer, a support conversation, a chat, the softphone — would sometimes simply not appear, and be fine after a reload. Three silent ...

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