KamoCRM

Live Change Log

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

18,614
Total Changes
6,684
Features
5,593
Fixes
30
Projects
Filter by project
All Projects18,614AIService282APIService179BillingService166ConversionService119DaemonService148DocsService259ESigService99EmailService632InitializerService345KBService162KlusterServices772MCPGatewayService277MediaService622RAGService79SecurityService2,029TranslateService62VOIPService265VectorService11kamo-apps29kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,769kamo-login343kamo-marketing642kamo-nowww20kamo-register214kamo-shared-library1,863kamo-signer-monorepo62kamolos115
Filter by type
All TypesBuild23CI527Chore794Docs3,288Feature6,684Fix5,593Other1,001Performance174Refactor284Revert23Style45Test177Upgrade1
August 25, 2026
Featurekamo-shared-library

The repository layer, with a harness that proves it boots

Repositories for patients, encounters, scheduling, the chart, notes, questionnaires, coverage and claims. Every query leads with tenantId because on YugabyteDB ...

Kamo·2mo ago
Docskamo-internal

Design for quiet hexheads and the per-surface notification spine

A minimized chat window re-opens itself on every arriving message. The hexhead should absorb it instead — count, thump, stay put — and only a conversation with ...

kamo·2mo ago
FixInitializerService

Drop the frozen ordinal CHECK constraints Hibernate froze at create

Hibernate writes CHECK (col >= 0 AND col <= N) over an @Enumerated(ORDINAL) column at CREATE TABLE, where N is the highest ordinal that existed that day, and dd...

Kamo·2mo ago
Featurekamo-shared-library

Insurance, claims, remittance and prior auth (SP14)

Coverage models ORDER, because a patient with two policies has a primary and a secondary and billing the wrong one first is a denial that costs a month and a re...

Kamo·2mo ago
Featurekamo-shared-library

Questionnaires that produce coded data, not form answers (SP8)

Deliberately not the platform's lead form builder, and the reason is the whole design. A capture form's job is to collect answers. A clinical questionnaire's jo...

Kamo·2mo ago
Featurekamo-shared-library

Patient identity, and chart documents on the EXISTING doc manager

The EHR gets no second document system and no second signature system. PATIENT_CHART is a new ImageAssocType keyed on the patient's logical id, so a chart is an...

Kamo·2mo ago
Fixkamo-internal

Close five gaps in the website brand suggestions

Five things found reading the first cut back, all of them real. The "Added below" badge lied. It tracked only which card had been clicked, so hitting Remove on...

kamo·2mo ago
Featurekamo-internal

Report form becomes a tool window; filter and status changes

REPORT FORM -> POPUP TOOL WINDOW. A modal was the wrong shape for the job. Reporting a defect means describing something you were just looking at, and a modal i...

kamo·2mo ago
Featurekamo-shared-library

Practice scheduling, waitlist and recall (SP6)

Availability stays as RULES. ScheduleBlock describes a provider's day and slots are computed for the window being viewed; pre-materialising five-minute slots fo...

Kamo·2mo ago
TestSecurityService

Baseline the desktop probe, which is guarded where the scan cannot see

**************** has been failing on main since ba3f85c. DesktopProbeController#probe is not unguarded — it checks X-Internal-Auth through authorized(auth), con...

Kamo·2mo ago
FeatureMediaService

Naming a site is optional

It was required, and requiring it was wrong. A site is a hint for whoever picks the report up — a member who is not certain which of five surfaces they were loo...

Kamo·2mo ago
FeatureInitializerService

Move status off the ordinal and onto the name

Adds STATUS_NAME / STATUS_APPLIED_NAME, fills them from the ordinals, then drops the ordinal columns — in that order, which is the only order that keeps the dat...

Kamo·2mo ago
Refactorkamo-shared-library

Retire Sent to AI, and store the status by name

Removing SENT_TO_AI is not a one-line enum edit. It sat at ordinal 3, and system_bug.status was an ORDINAL column: dropping it shifts AWAITING_INFO onto 3, CANN...

Kamo·2mo ago
Featurekamo-shared-library

Results, doses, procedures and the real medication list (SP7)

DiagnosticReport keeps the report AND its Observations, because results arrive as a report and are acted on as individual values and both views have to be true ...

Kamo·2mo ago
Featurekamo-internal

Suggest logo, colours and backgrounds from the member's site

The Basics step already asks for a website. This reads it and offers what it finds on the three branding steps that follow, as suggestions the member can take, ...

kamo·2mo ago
Featurekamo-shared-library

Append-only clinical notes with amendment and cosign (SP7)

Identity is split from content from the first row. ClinicalNote is what other records point at — an order raised from the note, an amendment to it, a disclosure...

Kamo·2mo ago
Fixkamo-internal

Enter as System Member no longer needs your own membership

The button was disabled by canEnterOrg, which asks whether the VIEWER holds a usable membership — so it was greyed out for exactly the orgs it exists to reach, ...

kamo·2mo ago
FixSecurityService

An unfinished domain picks a different host, not a refusal

Entering an org was refused outright unless its own custom domain had finished DNS and SSL. That was right while entering meant navigating to https://internal.<...

Kamo·2mo ago
Featurekamo-shared-library

Prescriptions and orders with real loop closure (SP7)

MedicationRequest keys the drug to RxCUI and never to a vendor identifier. FDB's GCN_SEQNO, Medi-Span's GPI, MEDID, HICL_SEQNO are the vendor's moat, and keying...

Kamo·2mo ago
Featurekamo-shared-library

Problem list, allergies and observations (SP7)

The three chart tables where a modelling mistake harms a patient rather than annoying a user. Condition carries TWO independent statuses because conflating the...

Kamo·2mo ago
Featurekamo-shared-library

The terminology store (SP4)

Releases, concepts, the precomputed hierarchy closure, value set definitions and expansions, concept maps, and per-tenant licence entitlement. Releases are nev...

Kamo·2mo ago
FeatureSecurityService

Expose the scan on /api/security/org/brand-scan

Its own controller rather than a method on OrganizationController, which already takes 25 constructor dependencies. The path still lands under the same prefix, ...

Kamo·2mo ago
FeatureSecurityService

Orchestrate the scan behind one cached, budgeted call

One response rather than three endpoints because it is one scan: the logo must be downloaded before its pixels can contribute a colour, and the colours are want...

Kamo·2mo ago
FeatureSecurityService

Take hero imagery, falling back to carousel slides

The fallback is conditional by design. A site with a hero has already chosen one picture to represent itself; sweeping its carousel too would bury that choice i...

Kamo·2mo ago
FeatureSecurityService

Reconcile brand colours from five independent sources

Five because each is authoritative on a different kind of site and silent on the rest: a design system states everything in CSS variables, a PWA in its manifest...

Kamo·2mo ago
FeatureSecurityService

Find a site's logo from twelve independent signals

Twelve rather than one because there is no single place a logo lives. A Shopify store declares it in JSON-LD; WordPress puts it in a header img; a React app ren...

Kamo·2mo ago
FeatureSecurityService

Index a site's CSS and parse its page once

A declaration scanner rather than a CSS grammar: the scan has three questions (custom properties, background images, colours) and none needs the cascade resolve...

Kamo·2mo ago
Featurekamo-internal

File a bug or an enhancement

The type leads the form, because it changes what the rest of it is asking: 'What happened?' for a defect, 'What would you like to see?' for a request. Two cards...

kamo·2mo ago
FeatureSecurityService

Start the 3-day trial on first entry into the org, not at creation

Creating an org and opening it are different events. An org can be created and left sitting, and one nobody has walked into must not have spent its evaluation —...

Kamo·2mo ago
FeatureSecurityService

Rank colours perceptually rather than by RGB frequency

Counting RGB values across a stylesheet elects the site's off-white page background every time -- it is the most-used colour on almost every site ever built. Wh...

Kamo·2mo ago
Featurekamo-shared-library

Two-phase transaction Bundle executor (SP3)

Phase 1 resolves every conditional reference and urn:uuid placeholder and touches nothing. Phase 2 writes and reads nothing. The split is the entire point. The...

Kamo·2mo ago
FeatureSecurityService

Read real image dimensions from the bytes

Nothing here trusts the page. An HTML width attribute is a layout instruction, not a fact about the file -- a 2400px logo is routinely declared width="180" and ...

Kamo·2mo ago
FeatureSecurityService

Ask for different work for a bug and an enhancement

A bug says 'find out why and fix it' and points at the logs; an enhancement says 'this already works, build the better version' and points at the current behavi...

Kamo·2mo ago
FeatureMediaService

File a bug or an enhancement

The type is refused rather than defaulted on a write: an enhancement quietly filed as a bug sends the AI session hunting for a fault that was never there. It is...

Kamo·2mo ago
Featurekamo-shared-library

A report is a bug or an enhancement

The distinction is not cosmetic — it decides what the AI session is asked to do. Pointing a session at logs hunting a fault that was never there wastes the whol...

Kamo·2mo ago
FeatureSecurityService

Guarded outbound fetching for the website brand scan

The member types the URL, so every request this issues is an SSRF primitive, and there is no egress NetworkPolicy and no forward proxy in this cluster -- Redis ...

Kamo·2mo ago
FixKlusterServices

Stop the canary crying wolf after every legitimate restart

session_durable treated a REJECTED token as a durability failure. That is not the outage it guards: a gateway restart, or Guacamole's own inactivity timeout, in...

Kamo·2mo ago
FixKlusterServices

Stop every deploy from throwing everyone off their desktop

"An error has occurred and this action cannot be completed" after leaving a desktop open was not an idle timeout and not a browser problem. It was CI. deploy-s...

Kamo·2mo ago
Featurekamo-shared-library

The FHIR search compiler (SP3)

Compiles a search into one SQL statement over the typed index tables. Every rule below fails by returning the WRONG ROWS rather than by raising anything, which ...

Kamo·2mo ago
Docskamo-internal

Plan the website brand scan implementation

kamo·2mo ago
FeatureInitializerService

A system report is a bug or an enhancement

ALTER rather than folded into the CREATE, because the table already exists everywhere this has reached. DEFAULT 0 is BUG, which is what every row filed before t...

Kamo·2mo ago
Docskamo-internal

Design the website brand scan

Where the /network/create Website field turns into logo, colour and background suggestions on the three branding steps. Records two things that are easy to get...

kamo·2mo ago
Featurekamo-internal

Remind the dispatched session to push its work

Matches the server copy in SystemBugAiDispatchService, which is what the dialog actually shows once the preflight lands — this one covers the moment before it. ...

kamo·2mo ago
FeatureSecurityService

Remind the dispatched session to push its work

A session that fixes a bug and leaves the change sitting on the dev machine has not fixed anything anybody else can see. The sentence is split out of the entit...

Kamo·2mo ago
Revertkamo-marketing

Drop the headline from the top banner

Removes "Running Your Business without Kamo is a Mistake." from the fixed top banner, as reported. Confirmed live before the change — the running pod served it ...

Kamo·2mo ago
FeatureSecurityService

Start the 3-day trial when the org is created

The trial was seeded pending and started on the owner's first sign-in, because an org was unreachable until its DNS verified — starting the clock at creation wo...

Kamo·2mo ago
FeatureKlusterServices

An access canary that actually logs in, and alerts that reach a person

Two gaps, both proven against the live cluster today. FIRST: every existing KamoDesktop alert measures whether a COMPONENT is alive. All four were green during...

Kamo·2mo ago
FeatureMediaService

Deliver cluster alerts into a member's chat thread

Alertmanager webhook receiver at /api/internal/alerts/chat, so a KamoDesktop alert reaches a person instead of a dashboard. This is the BEST-EFFORT leg. Email ...

Kamo·2mo ago
FeatureSecurityService

Internal probe endpoint so the access canary tests the real path

The KamoDesktop canary needs a link minted the way the icon mints one. It holds the same signing key, so it could build its own — and would then be testing itse...

Kamo·2mo ago
FixMediaService

Build the search pattern outside the query, and parse the query in a test

likePattern turns an absent search term into '%' so no null parameter ever reaches a string expression, and escapes % and _ in the term so a search for a litera...

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