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
September 3, 2026
Fixkamo-internal

A custom-rendered field can be edited again

Completes c20bac57. Field's `renderValue` was returning in place of the whole read view, which included the button that opens the editor. So any field that ren...

Kamo·2mo ago
Featurekamo-internal

Rebuild My Profile as a hero and five rooms

**************** was one 1,999-line component rendering thirteen identical cards down a single column. One SectionCard helper gave all of them the same radius, ...

Kamo·2mo ago
Featurekamo-internal

A real Linux terminal in a tool window, and a submenu to reach it

The Linux Desktop nav option becomes a menu instead of a launch — Remote Desktop with its sizes, Remote Terminal — exactly as the softphone owns call, voicemail...

Kamo·2mo ago
Featurekamo-internal

A fourth window state — float, drag to detach, drag to reorder

A popup tool window has had three states: docked in the row along the bottom, maximized over the viewport, or minimized to a chat head. This adds FLOATING — det...

Kamo·2mo ago
Fixkamo-internal

Name a company by its company, with the contact as the qualifier

A record that is both an organisation and a person is now labelled "Harmony Home Loans (Nickolas McGarry)" everywhere one string has to stand for it. Company on...

Kamo·2mo ago
Fixkamo-internal

Drop the scope line above the Communication View timeline

"Every call, text, e-mail, note and chat message with the 9 leads matching these filters." — the filter bar sits directly above this timeline and already says w...

Kamo·2mo ago
Featurekamo-internal

Communication View — the whole filtered book as one timeline

Three changes to /leads. Quick search moves into the hero, above the CRM Settings links. In the filter row it was the last control on a line of eleven dropdown...

Kamo·2mo ago
Fixkamo-internal

Static CSS in the overlay — 19 interpolations were hanging every build

kamo-internal has been unable to produce an image since b08f3b34. `next build` did not fail, it HUNG: no output, no error, no timeout. `.next` frozen at 1.3 MB ...

Kamo·2mo ago
Featurekamo-internal

Add JustCall as a phone server type

Adds JustCall to the picker at **************** with its API key and secret, a contacts-import toggle, credential status on the providers tab, and the logo. Th...

Kamo·2mo ago
CIkamo-internal

Reap superseded builds unconditionally — the sha check protected the orphan

The reaper added in 199e367e compared each container's commit against github.sha and KEPT the matches, on the theory that a matching sha meant "this run". That ...

Kamo·2mo ago
CIkamo-internal

Reap builds orphaned by cancel-in-progress — they were starving the real one

Builds had gone from 8 minutes to 30+. I blamed the heap and was wrong. Reading the runner instead of the numbers found it: THREE `next build` processes at 213%...

Kamo·2mo ago
Performancekamo-internal

Stop the inline image toolbar re-rendering on every scroll frame

measure() runs on each scroll and resize event and built a fresh state object every time, so the toolbar re-rendered whether or not anything about the image had...

Kamo·2mo ago
Fixkamo-internal

The Desktop size tooltip no longer covers its own options

The Tooltip wrapped the whole TextField, so it anchored to the same box the select's option list opens over — at the default bottom placement it landed directly...

Kamo·2mo ago
Buildkamo-internal

Give next build 8 GB, it has been thrashing against 4

Builds went from 7-9 minutes to 30+ a few commits ago and nobody had a reason why. Measured on the runner rather than guessed: `next build` sat at exactly 4.39 ...

Kamo·2mo ago
Fixkamo-internal

The upgrade offer no longer chases comped organizations

The pill suppressed itself for coverage.source === 'PAID' and nothing else, so a comped organization was shown "33% off your plan" — a discount on a price it do...

Kamo·2mo ago
Featurekamo-internal

A paper colour per block, and blocks that fit their text

BLOCKS NOW FIT THEIR CONTENT. The reader's blocks were all 200px tall whatever they held, because richTextExtension configures the editor with minHeight: 200px ...

Kamo·2mo ago
Featurekamo-internal

Add the JustCall provider logo

The VOIP logo folder had FreePBX, Microsoft and RingCentral but no JustCall mark, so any surface listing JustCall as a provider had nothing to render.

kamo·2mo ago
Fixkamo-internal

The order wizard must name the organization it entitles

The wizard collected a customer and never a target organization, so every order it wrote carried target_org_id NULL. On approval provisionCompSubscription falls...

Kamo·2mo ago
Fixkamo-internal

Never send a cid: the message is not carrying

Completes the inline-image work that landed inside b08f3b34, whose message describes only the KB and sales-scripts fix it was committed alongside. extractInlin...

Kamo·2mo ago
Fixkamo-internal

ReadOnly now actually stops you typing

REPORTED: the script blocks in the Interaction Center are editable. They were, and so is every other "read-only" rich-text surface in the app. `readOnly` on Kb...

Kamo·2mo ago
Stylekamo-internal

The org's colour, not indigo, and a real scrollbar

THE PURPLE WAS A HARDCODED ACCENT. Every tinted surface in the panel and the Sales Scripts pane drew from --accent-comms (#6366f1), so a white-labelled org got ...

Kamo·2mo ago
Fixkamo-internal

The composer is a sub-page, and collapsing no longer eats your text

Four reported problems, one of them destructive. COLLAPSING A PART DESTROYED IT. Collapse UNMOUNTED the editor, and KbArticleEditor is seeded once from a value...

Kamo·2mo ago
Fixkamo-internal

Impersonate was disabled on every row

Gated on canEnterOrg, which is the VIEWER's own membership — and a platform operator has no membership in the organizations impersonation exists for. So the but...

Kamo·2mo ago
Fixkamo-internal

Archived is a SUB-TAB of Sales Scripts, and pad the page

Two bugs, both mine. ARCHIVED WAS A PEER TAB. Active Scripts and Archived Scripts are two views of one screen, not two screens, and they belong as sub-tabs the...

Kamo·2mo ago
September 2, 2026
Featurekamo-internal

Impersonate, so an operator can open an org as one of its members

Shown beside Enter on every /network view for a platform administrator holding the new IMPERSONATE right. A different right from SYSTEM_USER and deliberately no...

Kamo·2mo ago
Fixkamo-internal

The owner can see the tab that grants the right

REPORTED: "I am also an admin and I don't see the new Sales Scripts tab under /settings/features/crm." Correct, and it was invisible to EVERY organization, not ...

Kamo·2mo ago
Fixkamo-internal

Un-skip the parity guards, and pin without blocking the page

TWO PARITY TESTS HAVE NEVER RUN. Both resolved RoleRightType.java through **************** — that is ~/Java/kamo-shared-library, while the checkout is *********...

Kamo·2mo ago
Fixkamo-internal

Price every line against the seat count, everywhere it is shown

The row Amount under 'What you are quoting' was still previewLineTotal, so the quantity cell showed the quote's seat count while the Amount beside it priced the...

Kamo·2mo ago
Fixkamo-internal

Reprice the live totals when the seat count changes

A line that opts into the quote's shared 'Seats / units' driver is priced against it, not against its own quantity. The editor's live rail summed the lines with...

Kamo·2mo ago
Fixkamo-internal

Putting a script back into use should not need a password

ConfirmationDialog always makes you type a challenge word. That is right for archiving — the script leaves every agent's panel mid-shift — and right for deletin...

Kamo·2mo ago
Fixkamo-internal

Mirror the two rights, and parent MANAGE on VIEW client-side

checkRight matches plain strings, so the gates worked without this — but the security role editor cascades grants through RIGHT_PARENT, and with the pair missin...

Kamo·2mo ago
Featurekamo-internal

Author scripts in CRM settings, read them on a call

Two CRM settings tabs behind MANAGE_SALES_SCRIPTS — the live scripts and the archive — plus a Sales Scripts tab in the Interaction Center behind VIEW_SALES_SCRI...

Kamo·2mo ago
Fixkamo-internal

Move a message's controls to the side facing the conversation

The hover rail sat on the message's outer edge — right for your own messages, left for everyone else's. It now sits on the inner side, the one facing the middle...

Kamo·2mo ago
Featurekamo-internal

Make the rectangle tool something you can hide things with

The rectangle tool has been in the annotation toolbar all along, but it drew an outline: fill="none" in every renderer. There was nothing to hide anything with,...

Kamo·2mo ago
Fixkamo-internal

Print the whole quote, not just its first page

The print stylesheet reset the Dialog's container and its Paper to static flow but left the Dialog ROOT alone — the element this component labels quote-print-po...

Kamo·2mo ago
Featurekamo-internal

Link the articles a draft names

The authoring convention is to name a sibling article by putting its title in italics — "Read *Security Roles Explained* before building them". 181 spans across...

Kamo·2mo ago
Fixkamo-internal

Save the Primary Contact country, state and time zone

The Primary Contact card's country, state and time zone are top-level Lead fields — neither members of primaryContact nor of addressMailing — and the two wire b...

Kamo·2mo ago
Fixkamo-internal

Read either address shape so the block cannot go blank

Reading only the new addressLines made the address disappear from the printed quote outright, because this shipped ahead of the API that sends it and a server s...

Kamo·2mo ago
Fixkamo-internal

Print the address as the lines it is written on

Splitting the suite into its own field left the street and the city still sharing a line, with the unit printed beneath them. The address now arrives already sp...

Kamo·2mo ago
Featurekamo-internal

A setup fee on a single-price quote, and the suite on its own line

The setup fee existed only on multi-option quotes, so 'One price' had no box for one — on the form or on the printed page. It now sits beside Shipping, appears ...

Kamo·2mo ago
Featurekamo-internal

Print the full line on the quote, and stop losing work at the mode switch

Two things a quote could not do. The printed line items inside an option card showed a name and an amount, nothing else — no quantity, no unit label, no rate, ...

Kamo·2mo ago
Featurekamo-internal

Re-issue a share link from its row, and stop losing the one-time URL

The Share links list offered no way to view or copy a link, and nothing explained why. Nothing can reveal an existing one — only the token's SHA-256 is stored, ...

Kamo·2mo ago
Fixkamo-internal

Re-derive the rail's hover-peek instead of trusting two events

The collapsed rail's peek state was written by exactly two things, pointerenter and pointerleave on the rail itself, and nothing ever re-derived it from where t...

Kamo·2mo ago
Fixkamo-internal

Send MUI's styles with the markup that needs them

internal.kamocrm.com was serving a 1.34 MB document containing 123 `css-xxxx` class names — `MuiBox-root css-e26q24` among them — and not one rule for any of th...

kamo·2mo ago
Fixkamo-internal

A reopened conversation is the one you were having

A member started a chat about KB articles, minimized it to its hexhead, went to their mail and brought the window back to a blank conversation — "having to star...

Kamo·2mo ago
Fixkamo-internal

Read a new lead's phone number against the country it is in

The New Lead form asks which country the lead is in, then ignored the answer when reading their phone number. Both PhoneField instances and the validator fell t...

Kamo·2mo ago
Fixkamo-internal

Do not follow a protocol-relative link in-app

"//example.com" starts with a slash but is another origin. The in-app branch matched it and would have handed router.push an off-site destination; it belongs in...

Kamo·2mo ago
Fixkamo-internal

Mirror the monthly-rate reading in the editor preview

previewOption divided the line-item sum down to a monthly figure the same way the server did, so the card and the print preview showed one month of any term. A ...

Kamo·2mo ago
Fixkamo-internal

Follow a link without losing the conversation

Reported alongside the KB links all pointing at one article: "when it is fixed and they will work, please let the AI chat still hover on top so you don't have t...

Kamo·2mo ago
Fixkamo-internal

Fix the Reports tab's folder heading nesting

The per-folder count Chip sat inside the heading Typography. MUI renders subtitle1 as an h6, which takes phrasing content, and a Chip is a div — so the count wa...

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