KamoCRM

Live Change Log

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

18,406
Total Changes
6,537
Features
5,540
Fixes
30
Projects
Filter by project
All Projects18,406AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService622InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,997TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,699kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,826kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,537Fix5,540Other1,001Performance174Refactor282Revert23Style45Test175Upgrade1
September 6, 2026
Featurekamo-apps

Let the lender word the application ribbon

`t("application.ribbon")` becomes the FALLBACK rather than the answer. A lender can set its own wording on the labeling page, which reaches this site through th...

Kamo·2mo ago
Featurekamo-register

Let the organization word the three ribbons, and own the tab icon

The route map in PaneRibbon stays exactly as it was and becomes the fallback layer: each of "/", "/member" and "/team" now pairs the wording this site ships wit...

Kamo·2mo ago
Featurekamo-login

Let the organization word the ribbon, and own the tab icon

"Welcome Back!" moves out of the root layout into PaneRibbon, a client component, because the wording is now the organization's to choose and this site learns i...

Kamo·2mo ago
Featurekamo-internal

Ribbon wording and a tab icon column on Behavior & Labeling

Two additions to the same page, each in the pane it belongs to. **Custom Labels** grows a Ribbon Messages box: five rows, one per public pane screen, in the or...

Kamo·2mo ago
FeatureSecurityService

Deliver ribbon wording, and generate favicons from a tab icon

Provisioning learns two things: what an organization wants its public corner ribbons to say, and which artwork its browser-tab icons should be cut from. **Ribb...

Kamo·2mo ago
Featurekamo-shared-library

Per-org ribbon wording and tab icons

Fourteen columns on `orgs`, and two small records to keep their shapes honest. RIBBON_MSG_* carry the corner-ribbon wording for the five public pane screens — ...

Kamo·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo ago
September 5, 2026
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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo 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·2mo ago
Featurekamo-shared-library

A product's application is published, not assumed

`LeadVendorProduct` gains `applicationEnabled` and `webChatIntegrationId`. A product existing in the CRM is not a decision to publish a form the whole internet...

Kamo·2mo ago
Featurekamo-apps

Twenty-two languages, and the chat bubble

The application is the one surface on this platform whose reader has never signed in to anything and may not read English. It now offers the same twenty-two lan...

Kamo·2mo ago
Featurekamo-login

Fade the glimmer out at two corners, and cap it at half

The sheen now dies completely at the top-right and bottom-left corners and peaks, at half opacity, over the top-left and bottom-right. Each revolution reads as ...

Kamo·2mo ago
Featurekamo-login

Run a glimmer round the pane's gap every five seconds

A conic gradient centred on the pane, spun once per --glimmer-period, painted twice: a sweep filling the 15px gap, and a 2px rim on the pane's own border. The r...

Kamo·2mo ago
Featurekamo-apps

The mark returns to the rail, governed by the Apps Site Logo Overlay

Reverts the relocation in 47e6e39. The invisible-logo problem it worked around is real — a mark drawn in the company's own brand colour can vanish on a rail pai...

Kamo·2mo ago
Featurekamo-internal

One scrollbar, for every scroller in the app

The terminal tool window had a scrollbar worth keeping — 32px, with a button for each END of the scrollback as well as the usual step arrows, because in a long ...

Kamo·2mo ago
Featurekamo-apps

Send the first-time-buyer answer with the application

The question was on the form and the answer went nowhere — there was no column for it until the shared library gained one. It changes which programmes are worth...

Kamo·2mo ago
FeatureSecurityService

Serve the public mortgage application, addressed by product

Three unauthenticated endpoints under **************** plus the CRUD behind the organization's own state licences. **The organization is named by the PATH, nev...

Kamo·2mo ago
Featurekamo-shared-library

Record whether a borrower says this is their first home

A first-time buyer is eligible for programmes nobody else can use, so a lead that does not carry the answer costs the officer a call to ask it. The public appli...

Kamo·2mo ago
Featurekamo-apps

Rebuild the mortgage application as a real, white-labelled form

The page this replaces was a prototype wearing a production URL. It posted to `http://localhost:8082`, so no application it ever collected reached anything. It ...

Kamo·2mo ago
Featurekamo-login

Seat every screen in a rounded pane under a corner ribbon

Every route now renders inside .kamo-pane: a card inset 15px from the browser edge with a 14px radius, a soft shadow, and overflow:hidden, so a page's own conte...

Kamo·2mo ago
Featurekamo-shared-library

Give a lender somewhere to put the truth about itself

The public mortgage application page composed its legal footer out of nothing — a hardcoded California licence, an invented NMLS number, a fictional address — a...

Kamo·2mo ago
Featurekamo-internal

Publish the policy addresses, the real state licences, and a link per product

Three things the public loan-application site could not previously be told, and one it was told wrongly. **Company Info gains Privacy Policy Address and Terms ...

Kamo·2mo ago
Featurekamo-internal

Start a coder session from the Linux Desktop menu, at a model and effort you keep

The icon already opened a remote desktop and a remote terminal. The third thing people actually go to that machine for was reachable only by opening the Interac...

Kamo·2mo ago
Featurekamo-internal

Finish the personal calendars panel, and put it where a member can reach it

PersonalProviderSection was scaffolding that nothing rendered, and it would not have worked if it had: it read GET /member/{id}, a route that did not exist, so ...

Kamo·2mo ago
FeatureEmailService

Let a member connect their OWN calendars and contacts

The personal calendars panel asked for GET **************** which was never mapped -- so it failed on every open -- and for Google and Microsoft it had no way t...

Kamo·2mo ago
Featurekamo-internal

Gate the user account on platform rights, not on which org owns it

Authored in a concurrent session on this machine and committed here at the user's request; recorded so the provenance is not guessed at later. The user account...

Kamo·2mo ago
FeatureEmailService

Give every provider's folder tree the same shape before any client sees it

Reporting a folder's SPECIAL-USE attribute was not enough, because a server only sends one if it is configured to — and the KamoMail Dovecot in production sends...

Kamo·2mo ago
Featurekamo-internal

Make Connect via OAuth on the CalDAV/CardDAV tab actually connect

The button raised alert('OAuth flow not yet implemented - configure credentials manually via the API'). It now opens the real Google Workspace / Microsoft 365 c...

Kamo·2mo ago
FeatureEmailService

Connect Google and Microsoft calendars over OAuth, on the app the mailbox already uses

The CalDAV/CardDAV tab's Connect via OAuth button raised an alert saying the flow was not implemented and to configure credentials through the API. It now runs ...

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