Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

17,991
Total Changes
4,651
Features
4,558
Fixes
32
Projects
Filter by project
All Projects17,991AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService386InitializerService303KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,530TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,601kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,328kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,651Fix4,558Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
August 26, 2026
Fixkamo-internal

Row honors showPresence, and formats a TEXT preview's E.164 sender

Two whole-branch-review findings against this component: - ConversationRow always read **************** directly. Mounted inside the switcher column (a sibli...

kamo·2w ago
Fixkamo-internal

Give the Chats tab pane a definite height, not just min-height

The chats-tab motion.div had `height: undefined` (only `minHeight: '100%'`), so its containing block was auto-height and ConversationsPane's own `height: 100%` ...

kamo·2w ago
Fixkamo-internal

Close review round 1 on the chat-switcher column

- ChatSwitcherColumn: move the collapse preference's PUT out of the setCollapsed updater into the click handler itself. The updater was impure (it fired a f...

kamo·2w ago
Refactorkamo-internal

One window per session, and the shared column

AI chat was the only tool deriving "maximized" from a ResizeObserver threshold instead of reading the flag every other tool reads, and the only one switching co...

kamo·2w ago
Featurekamo-internal

A conversation switcher beside every maximized chat

ChatSwitcherColumn mounts ConversationsPane beside a maximized chat window's own content, so a member can switch conversations without leaving the window. ToolD...

kamo·2w ago
Fixkamo-internal

Stop the fallback-bucket flash, guard the double-click

Review found the pane had dropped the old chats-list component's prefsLoaded gate: activeBucket started at initialBucket/DEFAULT_BUCKET and was handed to useCon...

kamo·2w ago
Fixkamo-internal

A restored maximized window remembers where it came from

A snapshot written while a window was maximized used to lose what that window would return to, so a restored session's first conversation-switch dropped it in t...

kamo·2w ago
Docskamo-internal

Close out SW3

Thirteen departures from plan. The two that mattered most: OrderLineItem .discountType should never have been a String, and exporting the DDL before applying it...

kamo·2w ago
Testkamo-internal

Pin toSessionType and backendCategoryFor

Neither had a single caller in this file before now, despite being exactly the class of function its own header warns about: a one-character typo ('Text' for 'T...

kamo·2w ago
Fixkamo-internal

Stop the text branch's retry storm, pin the observer re-root

voipApi.getConversations goes through apiCall, which throws on any non-2xx — unlike loadMore's other two branches, which fetch() directly and check res.ok. The ...

kamo·2w 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·2w ago
Fixkamo-shared-library

Pin ServiceJob's join columns to INT8

Exporting the table's DDL showed org_id, engagement_id and customer_uid each emitted as INT8 DEFAULT unique_rowid() — inherited from the referenced key. Three f...

Kamo·2w ago
Fixkamo-internal

Stop the previous commit's CRLF rewrite of memberColor

The previous commit's one-word doc-comment edit (dropping the ChatsList reference) rewrote the whole memberColor function from LF to CRLF: this file mixes line ...

kamo·2w ago
Refactorkamo-internal

Render the shared pane, and widen to 550

NavTopPanel's Chats tab now renders ConversationsPane instead of the old ChatsList, keeping its own search field and passing **************** so members keep th...

kamo·2w ago
Featurekamo-shared-library

The first FulfillmentPolicy implementation

FulfillmentPolicy has declared supports/createFromCommitment since it was written and a repo-wide grep returned exactly one line: the declaration. Its work was ...

Kamo·2w ago
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·2w 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·2w 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·2w 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·2w ago
Chorekamo-internal

Take @kamo/tool-core 0.1.3

Brings setMaximized, ToolWindow.preMaximize and ToolOpenDetail.maximized — the store API the conversation switcher column swaps windows through.

kamo·2w ago
Fixkamo-shared-library

Stop discarding status changes and answering 200

updateWorkOrder parsed the requested status inside catch (Exception ignored), saved the entity unchanged, and returned 200 with a DTO showing the old value. The...

Kamo·2w 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·2w ago
Fixkamo-internal

Stop deriving the org's theme domain, and freeze the form while it works

The wizard derived the new org's domain from GET /org/{id}. That endpoint returns the entity, and its `domains` is LAZY — serialized as null outside a transacti...

kamo·2w 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·2w 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·2w 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·2w 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·2w ago
Fixkamo-internal

Stop the tracking-link strip clipping its own text

Marketing Tools -> Tracking Codes drew the member's link strip with the eyebrow cut through its capitals, the icon sliced top and bottom, and the line under it ...

kamo·2w ago
Docskamo-internal

Correct SW3's ServiceJob imports and pin the PROCUREMENT trap

Task 2 imported dao.beans.account.Account and dao.beans.organization .Organization. The real packages are accounts and orgs — it would not have compiled. Task ...

kamo·2w 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·2w ago
FixVOIPService

Give the text-conversations coder a tiebreaker so tied timestamps aren't dropped

lastActivityAt, so a conversation sharing that exact timestamp was excluded from the lost from the list permanently, not just misordered. Reachable in practice ...

Kamo·2w ago
Docskamo-internal

Correct the SW3 plan's policy-template claim

Task 6 pointed at RetailInventoryPolicy as the implemented member of the policy family to copy an injection shape from. It is never instantiated and never injec...

kamo·2w 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·2w ago
Docskamo-internal

Plan SW3, the Service Work domain core

ServiceJob 1..N ServiceVisit as a sibling of FulfillmentOrder, a filled ServiceLineItem, the four classification axes, and a status machine that throws instead ...

kamo·2w 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·2w 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·2w ago
Docskamo-internal

Close out SW2

Four tasks, five departures from plan. The sharpest: the plan's own restrictionMask snippet filtered out null dayOfWeek, which means 'every day' — it would have...

kamo·2w ago
Refactorkamo-shared-library

Lift the free/busy engine out of the webinar feature

The interval arithmetic — expand, restrictionMask, candidateStarts, and the whole of AvailabilityInterval — was never webinar-specific. All the coupling sat in ...

Kamo·2w ago
RefactorMediaService

Use the shared availability engine

MemberAvailabilityService keeps the CRUD and becomes a BusySource; the arithmetic it used to own now lives in kamo-shared-library. Call sites are unchanged — th...

Kamo·2w ago
Stylekamo-internal

The widget controls take the org's colour too

Follows 0c97c900, which did the masthead shortcuts. The same rule reaches the controls inside the panes: anything that carries a background wears var(--color-pr...

kamo·2w ago
Fixkamo-internal

The new workspace opens once, ready, and as itself

Three faults with one cause, reported after creating Carl's Jr: the new tab said ?org=kamocrm.com, showed Kamo's logo and none of the org's colours — while its ...

kamo·2w ago
Testkamo-shared-library

Parse every core repository query against the real mapping

Spring Data validates an annotated @Query at bean creation, so a bad JPQL path ships green and crash-loops the consuming service instead of failing CI. The clin...

Kamo·2w ago
Fixkamo-shared-library

Delete findConflictingEvents, which never returned a row

Four independent defects, any one of which emptied the result set: it filtered e.user.id while both callers pass a member id and the two columns never coincide;...

Kamo·2w ago
FixEmailService

Conflict detection now finds conflicts

Delegates to findBusyForMemberInRange and excludes the event being edited in Java, where a null exclusion cannot poison a SQL predicate. The test it replaces m...

Kamo·2w ago
Docskamo-internal

Correct two errors in the SW2 plan

The rsync recipe used a bare 'rsync -a', which preserves mtimes — a file restored to an earlier version arrives older than the .class already compiled from a la...

kamo·2w ago
Fixkamo-internal

Remove the recurrence control, which discarded what it collected

The switch, frequency select and occurrence count rendered on the calendar page and reached no payload: composeDraft never read them and onSave never sent them....

kamo·2w 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·2w 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·2w ago
Fixkamo-internal

Settle the loading gate on the gate, not on a "load started" flag

Two follow-ups to the session store, one of them a real defect. ensureLoaded decided foreground-vs-background from an `everLoaded` flag set when the first fore...

kamo·2w ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing