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

Retire the SMS provider's test verdict when its credentials change

The same defect as the phone server's Overview tab, one screen across: saving new credentials left the previous Test Connection result on display, so a "Test fa...

Kamo·2mo ago
Fixkamo-internal

Catch the app credentials pasted into RingCentral's JWT box

Two things went wrong on the same screen, and together they produced a settings page showing a green "Credentials complete" chip above a red "RingCentral instan...

Kamo·2mo ago
Featurekamo-internal

Pick the model and effort before starting a coder session, once

Send To AI dialog has, and the two are the SAME choice rather than two. Somebody who has settled on Sonnet at High has settled on it. Re-picking in the other p...

Kamo·2mo ago
Featurekamo-internal

Name a hexhead after the window it stands for

A hexhead's tooltip read "User w12" — the head id, which is the window id, in a string written for member avatars. A dock of six minimized windows was six ident...

Kamo·2mo ago
Fixkamo-internal

Point the integrations proxy at the path EmailService serves

The Manage Sources dialog forwarded to /api/settings/integrations, which EmailService does not map — its controller is at **************** Every request from th...

Kamo·2mo ago
Fixkamo-internal

Say why a mailbox sync failed, and what key is on file

Two silences that made a working Google Workspace connection read as broken. The mailbox sync caught the provider's rejection and dropped it. Google refuses th...

Kamo·2mo ago
Featurekamo-internal

Show the sign-in lockout as a rule that cannot be switched off

SecurityService now applies a progressive sign-in lockout to every organization whether or not a row exists for it — five free attempts, then five seconds, then...

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

Show a member the redirect URI on their own domain

This is the screen the whole change is for. A member setting up Google Workspace with their organization's own OAuth app comes here to find the address to paste...

Kamo·2mo ago
Fixkamo-internal

Stop a password reset asking the operator to type ERASE

ConfirmationDialog described every action as a deletion. Left to itself it picked the type-to-confirm word at random from DELETE, REMOVE, DESTROY and ERASE, dre...

Kamo·2mo ago
Featurekamo-internal

An operator may set a personal address, and ask about the right account

Two changes to the member profile, both about the same confusion: which person a question is being asked about. The personal email card is no longer self-only....

Kamo·2mo ago
Fixkamo-internal

Stop asking for logos that were never uploaded

/network built each org's logo URL from its alias and requested it for every org on the page. An org whose theme folder was never provisioned has no img/logo.sv...

Kamo·2mo ago
Featurekamo-internal

coder sessions beside the running shells, and a scrollbar that reaches both ends

## Terminals is now two views of one machine Sub-tabs rather than two top-level tabs, because they are not two destinations: a terminal is a shell that may be ...

Kamo·2mo ago
Featurekamo-internal

Answer a readiness probe, and run two pods

This deployment had no readiness probe, so a pod counted as Ready the instant its container process started. With maxUnavailable 0 Kubernetes reads that as "the...

Kamo·2mo ago
Featurekamo-internal

Choose a logo overlay for the sign-in and sign-up sites

A fourth and fifth surface beside the home page, loading screen and KamoMeets overlays, sharing their thirteen-token vocabulary and their live swatches. Both a...

Kamo·2mo ago
Featurekamo-internal

Change your own address, and a platform tab for every account

Two surfaces, joined by one distinction the platform has never explained to anybody: a user account is the PERSON, and a member is one organization's relationsh...

Kamo·2mo ago
Featurekamo-internal

"What happened?" fills the window, so maximizing enlarges it

Every other field on the report form is sized by its content. The description is the one somebody is actually writing in, so it now takes whatever height is lef...

Kamo·2mo ago
Fixkamo-internal

Add the preStop hook the drain script was always missing

Deploys replaced the only pod of each service with nothing to catch the requests in flight. Three settings, applied across the fleet: - preStop sleeps 10s befo...

Kamo·2mo ago
Featurekamo-internal

Public rides the SEND TO AI row, and arms the hand-off for god

The Publish control was a bordered block of its own further down the form, carrying two lines of hint under the switch. It is now a compact toggle on the headin...

Kamo·2mo ago
Fixkamo-internal

Draw the Publish switch on god eligibility

Reported: "my user has god enabled, yet I still don't see the new publish field." The gate was isGodModeActive(), which is getIsGod() AND an open break-glass wi...

Kamo·2mo ago
Fixkamo-internal

The SPF card had no proxy route, so it never reached the API

The card shipped calling /api/security/domains/{id}/spf, and every request 404'd at Next.js before SecurityService ever saw it — which the card reported as "We ...

kamo·2mo ago
Featurekamo-internal

Ending a terminal takes its window and hexhead with it

Ending a terminal from the Interaction Center killed the shell and left the window behind, showing a red `closed` status over something that no longer exists. T...

Kamo·2mo ago
Featurekamo-internal

Tell each domain what its SPF record actually needs

/setup/dns walked a customer through ownership, subdomains and SSL and then said nothing about the record that decides whether the mail we send for them is beli...

kamo·2mo ago
Featurekamo-internal

Copy your referral link from any public role

Referrals are the highest-converting channel a job board has, and what stops them here is friction rather than unwillingness: the careers site answers on a diff...

Kamo·2mo ago
Featurekamo-internal

Benefits, the public funnel, the network opt-in, and claiming an application

Five changes, all of them the workspace half of something the public careers site now does. - Benefits & perks on the posting editor. It reaches the public adv...

Kamo·2mo ago
Featurekamo-internal

A Publish switch on a god-mode bug report

An operator with an open god-mode window filing a bug or enhancement now gets a Publish switch. It is off when the window opens and does not remember its last p...

Kamo·2mo ago
Testkamo-internal

Guard the provider catalog's interpolated i18n keys

check-i18n-keys.mjs reads literal t('...') calls, and the catalog builds its keys by interpolation — **************** and oauthClients.field.${labelKey} — so no...

Kamo·2mo ago
Fixkamo-internal

The navigator opened popups instead of switching

Clicking a row beside a maximized terminal opened a small window over the top of it. It was a launcher, not a switcher. `openConversation(row, { maximized: tru...

Kamo·2mo ago
Featurekamo-internal

Force KamoMobile Logout on a member's account activity

Force Logout deletes sessions, which ends a browser. It does not end a phone: KamoMobile holds a durable device token and mints a fresh session from it immediat...

Kamo·2mo ago
Fixkamo-internal

Handing back to Kamo's app writes only the switch

Choosing "use Kamo's application" sent the whole form with the disable, so an edit the member had typed and not saved was persisted by a choice they would not h...

Kamo·2mo ago
Refactorkamo-internal

Drop the unused dense prop from OrgOAuthAppSection

No call site passed it, and all eight embeds want the full header. A prop kept for a caller that does not exist is API surface someone has to reason about later...

Kamo·2mo ago
Featurekamo-internal

A switch per platform registration, and bring-your-own on the org side

Each OAuth2 card on Platform Configuration → Advanced gets an enable/disable switch in its top-right corner. It writes only the enabled flag, is unavailable unt...

Kamo·2mo ago
Featurekamo-internal

Start one from the Interaction Center tab

The tab listed terminals and gave a member no way to open one — the only starting points were the Linux Desktop submenu and the navigator's header, neither of t...

Kamo·2mo ago
Fixkamo-internal

Read the theme folder from the host on a white-label workspace

orgSlug reached DynamicMetaLoader only when the organization was named via ?org=, so on internal.<customer domain> - where the host names exactly one organizati...

Kamo·2mo ago
Featurekamo-internal

Publish an advert externally, and pick the candidate back up

Three changes, all in service of the new public job board at careers.<apex>. The posting editor gains "list on our public careers site". It sits with status an...

Kamo·2mo ago
September 3, 2026
Fixkamo-internal

The tab strip declared minHeight twice, so the build never type-checked

Adding icons to the panel tabs appended a second `minHeight` to the same `& .MuiTab-root` literal instead of replacing the old one. TypeScript rejects a duplica...

Kamo·2mo ago
Featurekamo-internal

Footer Badges — a row of images under the signature

The Content tab's 'Footer Image' was one picture chosen from three fixed sources and sized by a percentage. It is now 'Footer Badges': the same three plus anyth...

Kamo·2mo ago
Featurekamo-internal

Add the VOIP_CALL_EVENTS scope

Lets an org issue kamo-asterisk-support a key for reporting ringing extensions, separately from VOIP_RECORDING_UPLOADS. Uploading a recording after the fact and...

Kamo·2mo ago
Featurekamo-internal

Send to AI opens the terminal it runs in, and the tabs get icons

A dispatch now comes back naming a terminal, and the console opens it. That is not a courtesy view of something already underway — the hand-off is PREPARED on t...

Kamo·2mo ago
Fixkamo-internal

Apply in one request, and say why a role cannot be applied to

Follow-up to a review of my own commit. Six real findings. APPLYING IS NOW ONE REQUEST. The résumé used to upload after the application was created, and a fail...

Kamo·2mo ago
Fixkamo-internal

The navigator had no surface of its own, so it was transparent

ChatNavigatorPanel draws no background — it is a positioned, animated shell, and the column inside it is what makes it opaque. ChatSwitcherColumn supplies `bg-w...

Kamo·2mo ago
Featurekamo-internal

Jobs Available on /hr, and a Careers tab for every member

Two surfaces over one feature. /hr/careers is where HR writes the adverts and reads who applied; **************** is the internal board an employee browses and ...

Kamo·2mo ago
Featurekamo-internal

A list of your live shells, in the panel and beside the window

Terminals joins the Interaction Center to the right of Sales Scripts, gated on a provisioned dev machine — the same gate as the Linux Desktop nav option, read o...

Kamo·2mo ago
Fixkamo-internal

Composed mail broke lines mid-word, for every recipient

Quill 2's getSemanticHTML() -- the value react-quill-new hands to onChange, and so every byte of body a member types -- ends its text conversion with .replaceAl...

Kamo·2mo ago
Featurekamo-internal

A "why can't I accept?" override on the filter bar

Right-aligned on the /leads filter bar, wearing the Leads nav icon with the same prohibited emblem — so the thing on the nav that says "you are blocked" and the...

Kamo·2mo ago
Featurekamo-internal

A password shortcut in the hero, and a narrower gate

Two halves of the same subject. The shortcut. Changing your password was three rooms deep behind the rail — the one thing the room layout made genuinely harder...

Kamo·2mo ago
Fixkamo-internal

A new terminal could reattach to an old shell after a refresh

The shell was keyed on the tool window's id, and @kamo/tool-core builds those as `${toolId}-${++idCounter}` from a counter that RESETS on every page load. So th...

Kamo·2mo ago
Featurekamo-internal

Prohibited nav emblem, Assign to Myself, and obfuscated contact masking

**The Leads nav icon says when you cannot accept.** A member who holds leads they have not worked gets a red block emblem over the Leads icon and a tooltip nami...

Kamo·2mo ago
Featurekamo-internal

Flags on languages, and stop copying platform lists

Completes c20bac57. Languages now carry their flag, the same one the NavTop switcher shows and from the same source — the closed value as well as every row in ...

Kamo·2mo ago
Docskamo-internal

Record what the Remote Terminal deploy actually taught

Three defects, all the same shape: present in the tree, absent from the thing that serves requests — an IngressRoute in a directory nothing applies, a client pa...

Kamo·2mo ago
Fixkamo-internal

The ticket request had no route behind it

The window fetched **************** and nothing served it. There is no catch-all under /api/security — every area is proxied by a route file of its own, and the...

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