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
September 6, 2026
Fixkamo-register

Mint a visitor id when a referral code arrives without one

RegisterFlow already read `?discount=` for visitors who reached the form without passing through the marketing middleware — a code pasted into an ad, an email o...

Kamo·3w ago
Fixkamo-marketing

Stop losing referral attribution on the marketing site

Two ways a member's referral was being dropped, both silent. 1. Every register/login CTA was the string literal `https://register.kamocrm.com`, while this s...

Kamo·3w ago
Fixkamo-internal

Give the member Careers tab the route its own gate asks for

The tab was invisible to every team member in every organization, including one looking at an open posting. Not a rights problem, though it was shaped exactly l...

Kamo·3w ago
Fixkamo-internal

Stop the header eating the priority badge in a narrow window

The ticket number and both badges sit in one nowrap row, and none of the three can give way. The number is a 19-digit int64 that must not be abbreviated. The ba...

Kamo·3w ago
Fixkamo-internal

Stop a hover control giving the message list a scrollbar

The support chat window drew a horizontal scrollbar under a conversation that had nothing to scroll sideways to. Each message's reply button is absolutely posi...

Kamo·3w ago
Chorekamo-apps

Drop the homepage and the BlueLeven demo images

These were deleted in the working tree but never committed, so the repository still carried them and any fresh checkout brought them back. app/page.tsx was the...

Kamo·3w ago
Featurekamo-apps

Range the application against the rail instead of centring it

The form column's content was centred in its half, which left a wide margin on both sides and no relationship between the questions and the rail that numbers th...

Kamo·3w ago
Fixkamo-apps

Let the document scroll, so the scrollbar is the browser's own

Third attempt at this, and the first two were aimed at the wrong thing because the harness was lying. Puppeteer launches Chrome with --hide-scrollbars by defaul...

Kamo·3w ago
Featurekamo-internal

Show the member Careers tab on team membership and an open role

Two conditions, and no right among them: the viewer is a team member, and the organization has at least one posting open and taking applications. The second ch...

Kamo·3w ago
FeatureDocsService

Gate the member board on being a team member with a role open

The member Careers tab now appears on two conditions and no right among them: the viewer is a team member, and the organization has at least one posting open an...

Kamo·3w ago
Fixkamo-internal

Make /settings/member/me the real address three callers already assume

RestrictedMembershipGuard builds it when the session's member id has not settled, the sign page's back link builds it, and kamo-login now lands a candidate on i...

Kamo·3w ago
Featurekamo-register

Carry the job advert to the sign-in link

Plenty of people who press Apply on the careers board already have an account and come here only to discover that. The "Sign in" link now carries the advert the...

Kamo·3w ago
Featurekamo-login

Carry the job advert through a sign-in, and land on the Careers tab

Somebody who presses Apply on the public careers board and already has an account reaches the register page, follows the sign-in link, and used to arrive on a d...

Kamo·3w ago
FeatureSecurityService

Record the advert for a candidate who signs in instead of registering

Registration already wrote recentlyAppliedForId when an account was CREATED. This is the other half of the same funnel: plenty of people who press Apply on the ...

Kamo·3w ago
FixMediaService

Let a manager accept the web chat they were just paged about

Clicking Accept on a web-chat request closed the popup and reopened it a moment later, unassigned and with no chat window — the same card, over and over, with n...

Kamo·3w ago
Fixkamo-internal

Give the right-click menu the copy and paste it never had

Suppressing the browser's context menu (734f68cb) took the only copy/paste the terminal window actually had. That is not what it looked like — there are Copy an...

Kamo·3w ago
Fixkamo-apps

Put the scrollbar where the artwork cannot paint over it

The last fix reserved the scrollbar's space but it still could not be seen, and the reason was not the scrollbar. BackgroundStage is `position: fixed` with the ...

Kamo·3w ago
Fixkamo-internal

One refused request no longer ends the call and the session

The last way a member could lose a live call and everything in their tool windows without doing anything wrong. `authenticatedFetch` answered EVERY 401 with `w...

Kamo·3w ago
Fixkamo-apps

Give the pane a real scrollbar, and the gap the lender's colour

The scroller had an OVERLAY scrollbar: Chrome's default for an inner scroll container, taking no layout space and fading out when idle. On a document you tolera...

Kamo·3w ago
Featurekamo-register

Frost the whole pane, and let the surface on it turn back to glass

The pane was an opaque white card. It is a sheet of glass now, in two places that do different jobs. .kamo-pane itself goes slightly translucent, so the stage'...

Kamo·3w ago
TestMediaService

Pin which support queue a stranger's chat lands in

resolveTopic decides where a visitor from a customer's website reaches a person, and every way it can go wrong goes wrong silently — a chat filed under a plausi...

Kamo·3w ago
FixMediaService

Don't file chats into a support topic the org deactivated

resolveTopic honoured a configured topic by id alone, so deactivating one left the integration still pointing at it and new website chats still landing there — ...

Kamo·3w ago
Featurekamo-register

One surface, a level-gauge step rail, and chrome the tenant colours

The /team and /member screens were two near-identical slabs of glass stacked with a gap, a MUI Stepper in its default grey, and a progress pill floating inside ...

Kamo·3w ago
Fixkamo-apps

Pin the background and the support bubble, and point the way on

The pane could not both anchor `position: fixed` children and scroll them, and was being asked to do both. Its transform is what makes it their containing block...

Kamo·3w ago
Featurekamo-internal

Choose the support topic a website's chats are filed under

The add/edit dialogs had no way to say which support queue a website's chats belong in, because the setting didn't exist — the widget sent a hardcoded "General ...

Kamo·3w ago
FeatureMediaService

File a website's chats under the topic its integration chose

createSupportSession took the topic from whatever title the visitor's browser sent — the widget hardcodes "General Inquiry" — and when no topic matched that nam...

Kamo·3w ago
Featurekamo-shared-library

Let an integration say which support queue its chats belong in

A web-chat integration had no support topic. The visitor's browser sent a hardcoded topic title instead, so an org whose topics aren't named "General Inquiry" —...

Kamo·3w ago
Featurekamo-internal

Park the swarm at the bottom-left, against the nav rail

The home cluster's default spot moves from the bottom-right corner to the bottom-left, sitting one padding clear of the primary rail's right edge — collapsed at...

Kamo·3w ago
Fixkamo-internal

Every tool window keeps what the member typed, not just one

Follow-up to c45b3857, which fixed the bug/improvement window and left four others named in a "known gaps" list. That list was the wrong answer: a gap recorded ...

Kamo·3w ago
September 5, 2026
FixMediaService

Tell the widget the org's name so it stops speaking as Kamo

The public-chat bootstrap payload carried orgId but no org name, so the widget had nothing to brand the assistant with and fell back to a hardcoded "Kamo AI". A...

Kamo·3w ago
Featurekamo-apps

The mortgage application sits in a pane, under its own ribbon

Ports the shell from kamo-login and kamo-register: a card inset 15px from the browser edge with a 14px radius, a soft shadow, and a red ribbon across its top-ri...

Kamo·3w ago
Featurekamo-internal

Send a new starter to the board, and open the advert they came for

A team member whose employment is not ACTIVE is already confined to the restricted tier, and the home screen already bounced them somewhere. It now matters WHER...

Kamo·3w ago
Featurekamo-register

Carry the applied-for job onto the account being created

The careers board sends candidates to /team?jobId=<uid>. That uid is parked in an apex cookie as before, but it is now READ BACK at submit and sent in the regis...

Kamo·3w ago
FeatureDocsService

Retire applying without an account, and notify both sides of one that lands

The public board's Apply button is now a link into registration, so this drops the endpoints behind the old form: /{orgRef}/apply/{uid} in both content types, /...

Kamo·3w ago
FeatureSecurityService

Record the advert a candidate registered for, and welcome them when hired

Registration on the /team path now accepts appliedJobId — the uid kamo-register parked when the careers board sent the candidate to /team?jobId= — and writes it...

Kamo·3w ago
Featurekamo-shared-library

Apply from inside the workspace, and say so to both sides

The public careers board's Apply button is now a link into registration, so every application is filed against a session. Two fields carry the candidate from th...

Kamo·3w ago
Featurekamo-apps

The chat bubble knows the applicant's name as they type it

Somebody who has just filled in "First name" and opens the chat to ask a question should not be asked who they are a second time, and the agent picking that con...

Kamo·3w ago
FixSecurityService

Publishing an application opens its chat key to the page it is on

The support widget on a published application loaded with Kamo's default config instead of the org's: it auto-opened on desktop with auto-open turned off, wore ...

Kamo·3w ago
Testkamo-internal

Pin the right-click to one menu

The handler itself is already in — swept into 734f68cb by a concurrent commit in a shared checkout, under an unrelated message. This is the test it was written ...

Kamo·3w ago
Fixkamo-internal

The scrollers styled with classes rather than sx get the bar too

Reported against /hr/overview, and the page itself is innocent — it declares no overflow at all. Its scroller is one line in app/hr/layout.tsx: <div classN...

Kamo·3w ago
Fixkamo-internal

A populated bug report survives a page change

Reported again: a fully filled-in bug/improvement window came back empty after switching to /hr, and again from the analytics nav icon. The window was never los...

Kamo·3w ago
Fixkamo-internal

The rail's own scrollbar is not an exit from the rail

The previous attempt at this fixed the wrong handler. It taught the reconcile in useNavHoverPeek to see through the bar, which was worth doing and was not what ...

Kamo·3w ago
Fixkamo-internal

Resting on the rail's own scrollbar no longer flaps it open and shut

Reported as the rail switching between expanded and collapsed rapidly with the pointer held still over its scrollbar, which is exactly what it did. useNavHover...

Kamo·3w ago
Fixkamo-internal

Give the expanded rail back the width the scrollbar took

The rail is the one place where the app's scrollbar was paid for out of somebody else's layout. Expanded, it has always reserved a gutter — 20px, for the bar it...

Kamo·3w ago
Fixkamo-internal

The scrollbar moves the content over instead of sitting on it

Painting the bar over the last 32px is fine over a background — the launchpad's wallpaper does not mind — and wrong everywhere else. In a chat log it lands on t...

Kamo·3w ago
Featurekamo-register

Seat every screen in the same pane, under a per-step ribbon

Ports kamo-login's shell: every route now renders inside .kamo-pane, a card inset 15px from the browser edge with a 14px radius, a soft shadow and overflow:hidd...

Kamo·3w ago
Featurekamo-apps

The support bubble uses the key its product was published with

The chat key is per-PRODUCT, not per-deployment. A lender picks a web chat integration when they publish an application, and the public endpoint resolves that i...

Kamo·3w ago
Featurekamo-internal

Publishing an application is a decision, and it comes with a chat

**Vendors & Products no longer prints a link for every product it has.** It printed one for every mortgage product the moment that product existed, which meant ...

Kamo·3w ago
FeatureSecurityService

Publish an application deliberately, and give its page a chat key

`PUT **************** publishes or retires a product's public page and records which web chat its support widget speaks through. Enabling without one is refused...

Kamo·3w ago
FeatureMediaService

Let an integration carry a key a hosted Kamo page can resolve

`publicSiteKey` was persisted only for SPECIFIC_AGENT integrations, because the multi-tenant MLOS portal was the only page that had to resolve its key by Host r...

Kamo·3w 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