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
August 27, 2026
FeatureSecurityService

The outbound half of TEFCA — ask, don't only answer

Everything built so far answers other people's queries: discovery, document query, document retrieve, the match-review queue, the accounting. A practice could b...

Kamo·4w ago
FeatureSecurityService

Right-gated service job API

**************** — list, get, update, and PATCH status. Copies ServiceTaskBookController's idiom: orgId(req) or 401, a right check or 403, a String path variabl...

Kamo·4w ago
FixSecurityService

A picture-frame image whose bytes are gone answers 410, not 500

The frame stream caught everything as stream_failed and returned 500, so a photo whose object is not in storage rendered as a broken image with no explanation -...

Kamo·4w ago
FeatureSecurityService

Withhold Enterprise pricing from the catalog

Enterprise is negotiated with KamoCRM directly, so its rate is not ours to publish. Every surface that quotes a plan price reads this one endpoint - the public ...

Kamo·4w ago
FeatureSecurityService

Check the chart before writing a prescription

Prescribing was added with the allergy table, the interaction-checking query and a "safety context" endpoint all sitting beside it, unread. A system that record...

Kamo·4w ago
FixSecurityService

A CCD preview is not a disclosure

Previewing a summary recorded a disclosure naming the recipient — so a patient asking who has their record under §164.528 would be told it went to somebody who ...

Kamo·4w ago
ChoreSecurityService

Rebuild for SubscriptionPlanFeatureDTO.unit

The catalog stores a unit per feature and the DTO now carries it, so the pricing page can render "15 GB per user" instead of a bare 15. Shared-lib reaches a ser...

Kamo·4w ago
RefactorSecurityService

One request-body parser, not three

The three clinical write controllers each grew their own string/uuid/integer/ date helpers within a week of each other — identical except for which ones each fi...

Kamo·4w ago
BuildSecurityService

Rebuild against the storage dedup fix

Picks up kamo-shared-library d21e01ce. uploadDocument — the path behind member documents, mortgage disclosures, picture frames and media streams here — created ...

Kamo·4w ago
ChoreSecurityService

Rebuild against kamo-shared-library for the SW5 task book

An empty commit. ServiceTaskBookService and the four task-book entities live in the shared library; ServiceTaskBookController cannot resolve them until Security...

Kamo·4w ago
FeatureSecurityService

Right-gated task book API

SW5 Task 3, controller half. CRUD for books, categories, tasks and options, plus GET /{bookUid}/tasks/by-code/{code} - the lookup a quote or work order performs...

Kamo·4w ago
FeatureSecurityService

Find a claim by the number a payer quotes

Posting a remittance needs the claim it settles, and a remittance carries no internal id — only the number the practice sent. Without this lookup, applying mone...

Kamo·4w ago
FixSecurityService

Nothing returned an account id, so nothing could be withdrawn

Withdrawing portal access and granting a proxy both take an account id, and no endpoint ever returned one. A practice could invite a patient to the portal and t...

Kamo·4w ago
ChoreSecurityService

Rebuild against shared-lib PricingModel.PER_EXTENSION

The running image predates the enum value, so reading the two seeded PBX catalog rows (pricing_model = 'PER_EXTENSION') throws on enum parse - and because Subsc...

Kamo·4w ago
August 26, 2026
FeatureSecurityService

Edit demographics, set up the schedule, bill and post

The last four rights that named operations which did not exist. EDIT_PATIENT_DEMOGRAPHICS: a patient's details could be entered once and never corrected. A fie...

Kamo·4w ago
ChoreSecurityService

Rebuild against kamo-shared-library for SW4 quote conversion

An empty commit. QuoteConversionService, QuoteConversionBilling and the five quote defect fixes all live in the shared library, and none of them reaches anyone ...

Kamo·4w ago
FeatureSecurityService

POST /quotes/{uid}/convert

On QuoteController rather than POSController: this controller enforces a right on every handler, POSController enforces none on any order endpoint, and it resol...

Kamo·4w ago
FeatureSecurityService

Prescribe, order and immunise

The chart could display medications, orders and vaccinations and could produce none of them. The read paths, the FHIR renderers and the safety queues were all b...

Kamo·4w ago
FixSecurityService

22 of the 26 clinical rights were never enforced

Only the four population-level rights — bulk export, quality measures, portal administration and EHR settings — were ever checked. Prescribe, sign, cosign, plac...

Kamo·4w ago
FixSecurityService

An organization can be looked up by the reference ?org= carries

GET /org/ref/{ref} — the same projected record as /org/domain/{host}, for an organization named by its id or its web alias. Nothing could answer for one. The s...

Kamo·4w ago
FeatureSecurityService

The config body carries a scalar, and absence means unchanged

updatePOSConfig bound Map<String, List<String>>, a shape that cannot carry quoteConversionBilling at all. Widened to Map<String, Object>. A key that is absent ...

Kamo·4w ago
FixSecurityService

Actually measure the bulk-export bucket

StorageDomain.BULK_EXPORTS shipped declared, documented as "measured by scanning the object store", and referenced by nothing. It reported zero for every practi...

Kamo·4w ago
FeatureSecurityService

Provision an organization's branding under its alias, and migrate what exists

The folder every logo, colour, favicon and background is written to was the organization's hostname with the dots turned into dashes. A domain is optional now, ...

Kamo·4w ago
FeatureSecurityService

$everything records a disclosure when a recipient is named

The whole chart in one response is the largest single thing this system hands out, and until now it wrote a PHI audit row and nothing else. That was right for t...

Kamo·4w ago
ChoreSecurityService

Rebuild against kamo-shared-library for the SW3 service work domain

An empty commit. A shared-library change reaches nobody until its consumers rebuild, and SecurityService hosts POSController and the order path — so without thi...

Kamo·4w ago
FixSecurityService

Create returns the domain its theme is provisioned under

The caller cannot work this out and must stop trying. GET /org/{id} answers with the entity, whose `domains` is LAZY and serializes as null outside a transactio...

Kamo·4w ago
FeatureSecurityService

The patient portal — sign-in, records, and proxy access

The §164.524 right of access, made real: a patient signs in and reads their own problems, medications, allergies, immunisations and appointments, and can downlo...

Kamo·4w ago
FeatureSecurityService

Commerce records as owners, and one place for the matching rules

The third owner the spine was widened for, and the one that was still defined and unused. A record's documents already hang off it through the document manager'...

Kamo·4w ago
FixSecurityService

A push token may be claimed by one device row, not every past sign-in

Companion to MediaService 8a809b3, which stopped members getting the same chat message three-plus times on their phone. That change made dispatch collapse dupli...

Kamo·4w ago
FeatureSecurityService

The TEFCA responder — discovery, document query, document retrieve

The three operations a partner actually calls, expressed over FHIR rather than SOAP: IHE's XCPD and XCA shapes, on the QHIN Technical Framework's FHIR path, bec...

Kamo·4w ago
FeatureSecurityService

Five real quality measures, and the engine that runs them

Measures are Java rather than CQL, and the trade is worth stating. The eCQM specifications are published in Clinical Quality Language, and an engine would let a...

Kamo·4w ago
FixSecurityService

Recover a lost background count from the images themselves

commitBackgroundOrder writes the images to STAGING, and imageBgCount is only a record of how many it wrote — which made that one column a single point of failur...

Kamo·4w ago
FixSecurityService

Gate the nine Service Work endpoints on a right

They shipped checking only that the caller had a session, so any member of an org could read and mutate every work order in it regardless of role. ASSIGN_SERVI...

Kamo·4w ago
FixSecurityService

Drop the nine Service Work endpoints from the unguarded baseline

They are gated as of e6e1d02, so their baseline entries no longer match an unguarded endpoint and **************** fails on the stale lines. Requiring the remov...

Kamo·4w ago
FixSecurityService

Stop the customer **************** rights reading every tenant's rows

Every endpoint that accepted a VIEW_OWN_* right as an OR-alternative loaded its record by primary key alone, never checking who it belonged to: getSubscription,...

Kamo·4w ago
FeatureSecurityService

Bulk export, C-CDA, and one accounting that covers every channel

BULK EXPORT. Kickoff answers 202 with a Content-Location and no body; polling answers 202 while running and 200 with the manifest when done. Returning a friendl...

Kamo·4w ago
FixSecurityService

Serve a tenant's assets from a host that resolves, and stop deleting its backgrounds

Two faults found while working out why a new org opened with no logo and no colours. THEME DELIVERY. Assets were requested from theme.<the org's own domain>. A...

Kamo·4w ago
FixSecurityService

Show one call once in a rollup, and stop 500ing on unworked leads

Two fixes the account rollup made visible. A phone number can be a contact point on more than one owner at the same time, and two leads on one account sharing ...

Kamo·4w ago
RefactorSecurityService

Map the account timeline beside the account's other things

Everything belonging to an account already lives under **************** — its leads, orders, members, notes and history. Communications was the one at a plural ...

Kamo·4w ago
FixSecurityService

Make the KamoDesktop SSO link redeemable exactly once

The link is delivered as a URL, so it lands in browser history and in the reopen-closed-tab list, where it long outlives the session it was minted for. Until no...

Kamo·4w ago
FixSecurityService

The account rollup must not widen what a reader may see

The account timeline I added last commit was a way around the per-lead read gate. A member refused a lead's messages on the page that names the lead could open ...

Kamo·4w ago
FeatureSecurityService

An account-level communications timeline

The level most people mean when they say "this customer's calls". The spine is already keyed on an owner, so the account endpoint is the same merged, component ...

Kamo·4w ago
FeatureSecurityService

A patient's calls, texts and email — on the platform's own spine

Not a second timeline. LeadCommunicationsService now takes a CommsSubject and the lead overload delegates to it, so /leads keeps its exact behaviour drift. A pa...

Kamo·4w ago
FeatureSecurityService

The sign-in response carries each workspace's logo

The picker drew two letters per row because the response held a name and an alias and no image. A list of workspaces is read by mark long before it is read by n...

Kamo·4w ago
August 25, 2026
ChoreSecurityService

Pin kamo-shared-library 1.6.0

The library moved to 1.6.0 while consumers stayed on 1.5.0. Consumer CI builds the library from a fresh clone into a cold ~/.m2 and ci-settings.xml mirrors Mave...

Kamo·4w ago
FeatureSecurityService

The visit and its documentation — the loop a practice runs on

Starting a visit is what grants the clinician the chart, and that is the design rather than a side effect. A clinician about to see a patient has no relationshi...

Kamo·4w ago
FeatureSecurityService

The FHIR R4 endpoint, with the same access rules as the chart

An interoperability endpoint is where a system is most likely to acquire a quiet bypass: it is machine-to-machine, nobody watches it, and "the integration needs...

Kamo·4w ago
FixSecurityService

/org/current stops depending on a live Hibernate session

This endpoint is what the workspace shell loads before it renders, and the client refuses a record it cannot read — Organization.fromJSON throws without a domai...

Kamo·4w ago
FeatureSecurityService

The revenue cycle worklists, and the one restriction that outranks them

Every list here exists because its failure mode is a MISSING row rather than a wrong one, which is why none of them show up in an ordinary report. A claim a cl...

Kamo·4w ago
FixSecurityService

A failed workspace selection no longer destroys the sign-in

Reported as being thrown back to the email field with "Your sign-in timed out. Please sign in again." after clicking Continue. The timeout had not happened — th...

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