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
August 10, 2026
Fixkamo-internal

Give each account tab the default order it should open in

The three tabs opened in whatever order the API happened to return, which for members meant the newest sign-ups were buried and for team members meant no order ...

kamo·1mo ago
Fixkamo-internal

Scope the default-lead-source readiness banner to Residential Mortgage markets

The vendors/products tab showed the "Finish the mortgage vertical to designate a default lead source" warning on every market tab, including Product/Service and...

kamo·1mo ago
Fixkamo-internal

Centre the selection bar on the contact list, not the page

The bar that appears when rows are selected is absolutely positioned at left 50% with a translateX(-50%), but its nearest positioned ancestor was the whole page...

kamo·1mo ago
Fixkamo-internal

Stop defaulting new contacts into the shared org book

The create dialog targeted the book flagged isOrgDefault, so every member's contacts landed in the one book the whole organisation could read — half of why the ...

kamo·1mo ago
August 9, 2026
Featurekamo-internal

Split the access log and its detection rules into sub-tabs

The rules that decide what gets flagged were an accordion below the grid — collapsed by default, so the configuration was something you had to know was there, a...

kamo·1mo ago
Fixkamo-internal

Administrator bar panels rendered their key paths, not their copy

TipPanel took the panel's DOM id in a prop called `id` and then built its message keys from that same `id`, so every panel asked for **************** and next-i...

kamo·1mo ago
Fixkamo-internal

Let the access log fill its pane and page from the server

The tab bar already says "System Access Logs", so the h4 above the stats was the page's name twice. Dropping it also lets the pane use the shell every other Sec...

kamo·1mo ago
Featurekamo-internal

Back-to-home arrow on the main workspace headers

Carries the settings-page arrow across the rest of the app: Accounts, Leads, Commerce, Marketing (all four tabs, via the shared layout), Knowledge Base, HR, Net...

kamo·1mo ago
Fixkamo-internal

Stop the list scrolling when it already fits

Three things added height that was not content, so a list short enough to fit still got a scrollbar: - the infinite-scroll sentinel was rendered unconditionall...

kamo·1mo ago
Featurekamo-internal

Explanatory panels on every administrator bar link

Somebody who created their organization ten minutes ago meets nine links they have no way to read. Hovering or focusing one now unfurls a panel that answers, in...

kamo·1mo ago
Fixkamo-internal

Restore the administrator bar changes reverted by 3926d1d8

3926d1d8 carried AdminQuickLinks.tsx back to its ae45fc9c^ blob, undoing the org plural label, the short Blocks/Logs names and the gap removal. Same content as ...

kamo·1mo ago
Fixkamo-internal

String row ids, org-coloured controls, page icon, centred error bar

Creating a book and selecting it answered "Not found". CockroachDB unique_rowid() ids are 64-bit — a real one is 1200081912680906758 — and JSON.parse rounds any...

kamo·1mo ago
Featurekamo-internal

Tighten the administrator bar — org label, short audit names, no gap

Three changes to how the bar reads at nine links: The team-members entry now wears the org's own plural label from Behavior & Labeling, so an org that calls th...

kamo·1mo ago
Featurekamo-internal

Back-to-home arrow left of every settings page title

Settings pages had no way back to the launchpad short of the nav rail. SettingsView's optional backHref now defaults to home and renders unconditionally, so the...

kamo·1mo ago
Featurekamo-internal

The rest of essential setup on the administrator bar

Security Roles, Departments and Job Titles join the configuration group, left of the audit pair. They are the three Essential Setup tabs the bar was missing — B...

kamo·1mo ago
Featurekamo-internal

Access blocks in the administrator bar, audit links to the trailing edge

Access Blocks and System Access Logs are the two screens on the bar that answer 'who got in and who did not' rather than configuring anything, so they group tog...

kamo·1mo ago
Featurekamo-internal

Name and edit address books, and rebuild the page around them

Adding a book POSTed a hard-coded placeholder name with no prompt, and nothing anywhere could rename one — so every book an org had was called the same thing, p...

kamo·1mo ago
Featurekamo-internal

Administrator bar above the launchpad cards

Five screens an org administrator opens constantly — team members, behavior & labeling, stats & costs, apps & features, system access logs — each two or three c...

kamo·1mo ago
Fixkamo-internal

Stop /api/user-info renewing the TTL for idle users

This route writes the *** TTL straight to Redis, so it bypassed the gating in SecurityService, MediaService and ChatService entirely — and useUserInfo polls it ...

kamo·1mo ago
Performancekamo-internal

Hash with BLAKE3 only, so skipping the upload actually saves time

Dedup worked — the server logged 'linked WITHOUT upload' and 358 MB never left the machine — but the member still waited, because computing SHA3-256 alongside B...

kamo·1mo ago
Featurekamo-internal

Skip the upload when the platform already has the file

Sending the same video to three people meant three full uploads. Dedup collapsed them into one stored object, but only once each transfer had finished — so the ...

kamo·1mo ago
Featurekamo-internal

Show generated preview storage as its own line

Thumbnails and preview images now count toward the organization's total, so the client should be able to see what they cost rather than find them folded into an...

kamo·1mo ago
Fixkamo-internal

Recover a received attachment whose first request was rejected

A video arriving in a conversation could not be played until the page was reloaded, while a video the member had just sent always played. Both copies were byte-...

kamo·1mo ago
Featurekamo-internal

Let a member keep a video or audio attachment, not just play it

The player answers one intention. Wanting the file on disk is a different one, and video and audio were the two attachment kinds with no way to do it — a docume...

kamo·1mo ago
Featurekamo-internal

Show branding and Docstive document storage

Both are written straight to the object store with no size recorded in the database, so they read as zero until a sweep measures them. They now have their own l...

kamo·1mo ago
Featurekamo-internal

Show text message attachment storage

MMS attachments live inline in the database as data: URIs rather than as files, so they had no size record and were never counted. They now have their own line.

kamo·1mo ago
Featurekamo-internal

Show every storage category separately

Call recordings, voicemails, chat attachments, HR resources and marketing materials each get their own line instead of sharing one "Documents and images" row wi...

kamo·1mo ago
Featurekamo-internal

Say why mailbox storage can read zero

Mailbox bytes count only the mail Kamo actually hosts. An organization on Microsoft 365 or Google Workspace has its messages on that provider's disks, so its Ma...

kamo·1mo ago
Featurekamo-internal

Show storage usage on the account stats tab

The tab said "No usage data available for this period" for every organization. billingApi.getCurrentUsage() is a stub returning { meters: [] }, and UsageMeters ...

kamo·1mo ago
Fixkamo-internal

Popover X closes the window, not just the popover

Dismissing the popover already had two affordances (click outside, Escape), so an X that only dismissed it was a duplicate and left no way to get rid of the hea...

kamo·1mo ago
Fixkamo-internal

Split Available on the catalog verdict, and stop Stage publishing an app

The account Apps tab derived Available / Not Available from development stage, so it contradicted the platform catalog the moment an operator published or withh...

kamo·1mo ago
Featurekamo-internal

Split Apps & Features into Available / Not available / Deprecated

One flat list mixed apps the platform offers with ones it does not and ones it has retired, so the operator had to read every chip to tell them apart. The buck...

kamo·1mo ago
Fixkamo-internal

Load Allowed Apps from an endpoint tenants can actually read

appCatalogApi.list() is platform-owner-only, so on any tenant org the Branch Types editor showed no apps and the save guard — which exists to stop an empty cata...

kamo·1mo ago
August 8, 2026
CIkamo-internal

Rebuild after the Apps & Features strings reached the dictionary

Run 545 failed the i18n key guard on 60 keys. Not a code defect — the kamo-internal commit was pushed at 14:10 and the dictionary strings landed at 14:18, so th...

kamo·1mo ago
Chorekamo-internal

Drop the unused stageLabel helper

Stage names are rendered from message keys, so the English-only helper had no caller left.

kamo·1mo ago
Otherkamo-internal

Route the Apps & Features copy through next-intl

kamo-internal serves 22 locales and every user-facing string has to come from a message key — hardcoded English breaks every non-English operator. The tab and t...

kamo·1mo ago
Featurekamo-internal

Add an Apps & Features tab and fix the Allowed Apps list

The new tab, to the right of Organizations, controls what every organization is offered: availability, development stage, display name, description, an operator...

kamo·1mo ago
Fixkamo-internal

Show negotiated pricing instead of $0.00 for enterprise-only add-ons

The origination add-ons carry no list price — they are negotiated per agreement — and formatCurrency(null) renders $0.00, advertising an enterprise module as fr...

kamo·1mo ago
Docskamo-internal

Design the platform app catalog behind an Apps & Features tab

Apps on /settings/account?tab=apps are compile-time constants in the ServiceType enum, so "Available" (stage == COMPLETED), the stage itself, the display name a...

kamo·1mo ago
Featurekamo-internal

Server-paginated organizations console

The tab loaded every organization in one request and rendered a card each, with the backend fanning out per org, then per account, then per subscription. Search...

kamo·1mo ago
Docskamo-internal

Implementation plan for the platform organizations console

17 TDD tasks across BillingService, the translation dictionary and kamo-internal. Physical table names verified against the live cluster -- the org table is 'or...

kamo·1mo ago
Featurekamo-internal

Rename LOS to MLOS, add Personal Loan Origination System, gate commerce verticals

Apps tab now shows 'Commerce: Mortgage Loan Origination System' (the title is served from the backend enum, not the TS mirror) and a new 'Commerce: Personal Loa...

kamo·1mo ago
Docskamo-internal

Design for the platform organizations console

Redesigns **************** from an unbounded card list into a server-paginated console. The current tab loads every org at once and PlatformAdminService fans o...

kamo·1mo ago
Fixkamo-internal

Raise the Next body cap that was truncating every large upload

THE cause of the failing 3 GiB attachments, and it was ours, not the network. **************** was '500mb'. It is not a rewrite/middleware setting: Next wraps ...

kamo·1mo ago
Fixkamo-internal

Stop a dead upload spinning forever, and say what 100% means

A stalled upload sat at 100% with the bar full and no way out. Three separate reasons, all of them mine. XMLHttpRequest has no useful read timeout: when bytes ...

kamo·1mo ago
Fixkamo-internal

Let an in-flight upload finish instead of dying on a rollout

A 2 GiB chat attachment reached 100% and then failed with 'Bad Gateway' because a deploy landed on top of it: the pod took SIGTERM at 03:34:36 and the transfer,...

kamo·1mo ago
Featurekamo-internal

Email a member from their row

Adds a mail action beside chat, call and profile on a member row, opening the Messages tool with the recipient already filled in. It is hidden unless the org ha...

kamo·1mo ago
Fixkamo-internal

Make a failed upload say what happened, and log enough to diagnose it

A 2 GiB attachment failed at the end of a four-minute transfer with 'Upload failed: upload failed Internal Server Error' — a doubled prefix wrapped around a mes...

kamo·1mo ago
Fixkamo-internal

Apply custom status labels to the status tabs

Every other status display on /leads resolves its description through resolveLabel() from useStatusLabels — the grid cell renderers, both filter dropdowns, and ...

kamo·1mo ago
August 7, 2026
Fixkamo-internal

Report user idle time so an abandoned tab can expire

The client activity tracker only ever gated whether we asked to extend; it never told the backend anything. SecurityService renewed the session TTL on every req...

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