KamoCRM

Live Change Log

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

17,584
Total Changes
6,043
Features
5,305
Fixes
30
Projects
Filter by project
All Projects17,584AIService258APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService582InitializerService329KBService151KlusterServices744MCPGatewayService260MediaService602RAGService79SecurityService1,862TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,373kamo-login339kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,672kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore775Docs3,257Feature6,043Fix5,305Other994Performance165Refactor278Revert23Style42Test162Upgrade1
August 26, 2026
Featurekamo-internal

Visit preparation, cancellation, and vaccine lot recall

The last endpoints without a screen. CANCEL, beside no-show on the day. They were one action short of each other and they are not the same thing: somebody TOLD...

kamo·2mo ago
Featurekamo-internal

Problems, open orders and results

The clinician's working views. The endpoints existed; the chart showed a summary and nothing you could work from. THE PRESCRIBING BANNER IS THE POINT OF THE PA...

kamo·2mo ago
Featurekamo-internal

A patient's insurance, claims, and the self-pay restriction

Practice-wide revenue cycle already lives under /commerce; the PER-PATIENT half had no screen — the front desk could not see who pays before a visit, and nothin...

kamo·2mo ago
Featurekamo-internal

Register a patient, with the duplicate check first

The Register button switched tabs to Find and did nothing else — PatientSearchPanel took an onRegister callback that nothing ever passed, so a practice could no...

kamo·2mo ago
Featurekamo-internal

Booking, and the notes-to-sign worklist

The two things a practice does all day that the app could not do. Both APIs have been on the server the whole time; neither had a screen, so the front desk coul...

kamo·2mo ago
Featurekamo-shared-library

ServiceJob and ServiceVisit

A sibling of FulfillmentOrder, not a widening of it: FulfillmentOrder is a shipment with a tracking number and a carrier, and retail depends on it. Job 1..N vi...

Kamo·2mo ago
Featurekamo-internal

Work the cross-practice match queue

The last exchange surface with no screen, and the one that decides whether the connection produces anything at all. A held match is another practice saying one...

kamo·2mo ago
Featurekamo-internal

The screens the backend was missing

An audit of every EHR endpoint against its frontend callers turned up surfaces that shipped server-side and could not be reached from the app at all. HEALTHCAR...

kamo·2mo ago
Featurekamo-shared-library

Fill ServiceLineItem and its four classification axes

ServiceLineItem shipped as an empty 18-line subclass whose only reference in the whole corpus was its own declaration, so a service sold through POS persisted a...

Kamo·2mo ago
Featurekamo-internal

Quality and Records office

Two sections for surfaces that had none. QUALITY. The rate is the headline; the care gap is the product. A practice shown "67% controlled" can do nothing with ...

kamo·2mo 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·2mo ago
Featurekamo-shared-library

The patient portal's identity model

A patient is NOT a Member, and this is deliberately not the workforce identity. Reusing the staff login would mean a patient held a principal that every interna...

Kamo·2mo ago
Featurekamo-internal

The record's Communications tab shows communications

It rendered the record's media stream alone — the internal notes people write about a job. Useful, and not what anybody means by "the communications about this ...

kamo·2mo 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·2mo 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·2mo ago
Featurekamo-shared-library

A real credential for exchange partners, and retrieved documents

The responder endpoints have no user session — the caller is another organization's server — so a bearer credential this practice issues at onboarding is the ON...

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

The quality measure model, and the row that makes it useful

MeasurePatientResult is the point of this commit. A practice shown "67% controlled" can do nothing with it; a practice shown the 41 NAMED patients in the denomi...

Kamo·2mo ago
Featurekamo-internal

Mirror the Service Work rights into TypeScript

VIEW_SERVICE_WORK, VIEW_OWN_SERVICE_WORK, MANAGE_SERVICE_WORK, ASSIGN_SERVICE_WORK and COMPLETE_SERVICE_WORK land at ids 268-272, not the 265-269 the plan assum...

kamo·2mo 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·2mo ago
Featurekamo-shared-library

Give Service Work its first five rights

ServiceType.SERVICE(28) shipped with zero rights, so its nine endpoints were gated only by whether the caller had a session. Ids start at 268 rather than the p...

Kamo·2mo ago
Featurekamo-shared-library

Bulk FHIR export and C-CDA, and the rights that gate them

Two things a practice cannot operate without, and neither is a bigger version of reading a chart. BULK EXPORT (clinical/bulk). The FHIR Bulk Data model: a job,...

Kamo·2mo ago
Featurekamo-shared-library

Count DISTINCT events across a rollup's owners

A phone number can be a contact point on more than one owner at once, and two leads on one account sharing one is the ORDINARY case — they are commonly the same...

Kamo·2mo ago
Featurekamo-internal

Gate the line window per member, and show which mode you are in

The rollout control. Default off, opt-in per member from Phone Settings, nested under the VOIP switch because it means nothing for a member with no line. One h...

kamo·2mo ago
FeatureVOIPService

Read and write the line-window gate

GET surfaces lineWindowEnabled; PUT accepts it as a nullable Boolean so that absent means "not mentioned" and preserves the stored value. Every existing caller ...

Kamo·2mo ago
Featurekamo-shared-library

Map LINE_WINDOW_ENABLED on MemberVoipConfig

The per-member gate for the dedicated softphone line window. Version pin stays at 1.6.0 — adding a field needs no bump, and a split pin would break CI for every...

Kamo·2mo ago
FeatureInitializerService

DDL for the per-member line-window gate

Adds **************** defaulting to false. A column rather than a feature flag because there is no flag system here and MemberCapabilities is a closed, fail-cl...

Kamo·2mo ago
Featurekamo-internal

An AI sub-tab in the Interaction Center

AI sessions live in AIService and are not MediaSessions, so this bucket gets its own loader in front of the /api/media/sessions/chat fetch the other four share,...

kamo·2mo ago
Featurekamo-internal

The dedicated line window

The call now lives in a window a refresh of the workspace cannot touch. SoftphoneProvider becomes owner-or-follower. Only the owner REGISTERs and opens the STO...

kamo·2mo ago
Featurekamo-internal

A communications tab that rolls up the account's leads

The level most people mean when they say "this customer's calls". Several leads commonly hang off one account precisely because they are the same person enquiri...

kamo·2mo ago
FeatureKlusterServices

Bounce a bare visit to the Kamo login, and end the session on tab close

Closing the KamoDesktop tab left a live session sitting on the machine. Guacamole keeps its auth token in localStorage (GUAC_AUTH), which survives closing the t...

Kamo·2mo ago
Featurekamo-internal

Line ownership, the bridge, and the no-yank handover rule

Three pure modules with no consumers yet, so this ships inert. lineOwnership elects exactly one SIP registrar per browser via Web Locks. That is mandatory here...

kamo·2mo ago
Featurekamo-internal

The tab title counts everything waiting, not just chat

The tab strip has room for one number, and 'chat and support only' stopped being what a member is waiting on once SMS, AI, missed calls and unreviewed reports e...

kamo·2mo ago
Featurekamo-internal

Badge the AI option with unreviewed replies

kamo·2mo ago
Featurekamo-internal

A total on the phone icon, the breakdown in the menu

This icon carried no badge at all, so a missed call while the softphone was closed reached the member nowhere. Opening the phone clears the missed count.

kamo·2mo ago
Featurekamo-internal

A total on the icon, the breakdown in the menu

pendingCount was the whole badge, so unreviewed bug reports and webinars booked on somebody's behalf had no way to reach anyone. Opening the webinar row stamps ...

kamo·2mo ago
Featurekamo-internal

The chat badge counts chats

It was silently chat plus support, so a ticket lit the chat bell and nothing distinguished the two. Support has its own icon now; social joins chat, because a s...

kamo·2mo ago
Featurekamo-internal

Let a dropdown row carry its own count

The icon shows the sum and the rows show the breakdown — the point of splitting the indicators is seeing WHICH thing wants you without opening anything.

kamo·2mo ago
Featurekamo-internal

Thump on arrival, with the glow dissipating outward

Its own layer inside .hex-scale: that element already animates transform for the hover grow, and two animations on one element do not compose — the second repla...

kamo·2mo 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·2mo ago
Featurekamo-shared-library

Let an account roll up its leads' communications

Several leads commonly hang off one account precisely because they are the same person enquiring twice, and each of their calls was matched to whichever lead he...

Kamo·2mo ago
Featurekamo-internal

One context for the four indicators' counts

Composes what exists and owns the three that had no home: unreviewed bug reports, unreviewed webinars, and the phone's missed calls and voicemails. The 60s for...

kamo·2mo ago
Featurekamo-internal

The drop beacon reports which path ICE actually chose

The beacon shipped iceCandidateType as a permanently-null field. That is worse than omitting it: it makes the telemetry look more informative than it is, and th...

kamo·2mo ago
Featurekamo-internal

One day picker, shared by the calendar and the settings tab

The two surfaces had each grown their own answer to "which days?". The settings tab put Workweek Days, Weekend Days and Every Day behind a dropdown; the calenda...

kamo·2mo ago
Featurekamo-internal

Badge a minimized window with its server unread count

The one component that sees both the window list and the unread maps — the engine knows nothing about conversations and the unread context knows nothing about w...

kamo·2mo ago
Featurekamo-internal

Set an absolute unread count from the server

Replaces hexhead:incoming, which nothing ever dispatched. Its +1 would have counted a re-delivered snapshot as a new message, and its spawn-if-missing branch wo...

kamo·2mo ago
Featurekamo-internal

Messages and calls, on the existing timeline component

CommunicationsTimeline and EmailEntry take an optional endpointBase and keep the lead path as the default, so every existing call site is byte-for- does not car...

kamo·2mo 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·2mo ago
Featurekamo-internal

Stop losing calls to session expiry, teardown and stale devices

Four guardrails that share two files, so they share a commit. A live call now counts as session activity. ClientActivityTracker equated presence with input eve...

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