Live Change Log

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

17,987
Total Changes
4,647
Features
4,558
Fixes
32
Projects
Filter by project
All Projects17,987AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService386InitializerService302KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,528TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,600kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,328kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,647Fix4,558Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
August 27, 2026
Featurekamo-internal

Detach the chat navigator from the window it maximizes

The conversation navigator was a child prop of ToolWindowShell, rendered inside the maximized window's content box. Clicking a row in it opens that conversation...

kamo·2w ago
Featurekamo-internal

Company phone (main/toll free) on a member's signature, with their extension

The Content tab of **************** gains two switches: Company Phone (Main) and Company Phone (Toll Free). Enabled, they print the organization's published lin...

kamo·2w ago
FeatureEmailService

Persist the two company phone toggles

Reads and writes userCompanyPhoneMain / userCompanyPhoneTollFree on the signature field config, so the Content tab's new switches survive a save. saveFieldConf...

Kamo·2w ago
Featurekamo-shared-library

Attribute free extensions to the server they are on

An org running a busy FreePBX server beside a new, empty KamoPBX server saw "21 billable extensions — $63.00 / month" while looking at the KamoPBX one. Both num...

Kamo·2w ago
FeatureInitializerService

Land the company phone toggle columns before EmailService reads them

ADD COLUMN IF NOT EXISTS on **************** for user_company_phone_main and user_company_phone_toll_free. This service's ddl-auto: update would add both from ...

Kamo·2w ago
Featurekamo-shared-library

The company phone toggles an individual signature can carry

Two org-wide flags on email_signature_field_config: user_company_phone_main and user_company_phone_toll_free. They put the organization's published line on a me...

Kamo·2w ago
Featurekamo-shared-library

The inbound-keyword receipt, and re-key consent by campaign (MS1 Task 3)

Two things the consent ledger needs before an inbound STOP can be recorded tenant-scoped and exactly once. `SmsInboundReceipt` (comms_sms_inbound_receipt) is t...

Kamo·2w ago
Featurekamo-shared-library

The sync journal, and a terminal run that really is frozen

BL1 Task 5, shared-library half. Five journal enums, three entities and three repositories under **************** No stereotypes: BillingWormGuard is a plain fi...

Kamo·2w ago
FeatureVOIPService

Carrier-facing inbound SMS webhook (MS1 Task 2)

POST **************** -- form-encoded or JSON, guarded by the CARRIER'S OWN SIGNATURE. Why a new endpoint. /api/voip/webhook cannot receive a STOP and fails si...

Kamo·2w ago
Featurekamo-shared-library

E.164 normalizer and SMS keyword interpreter (MS1 Task 1)

Two pure classes with no I/O and no Spring stereotype, so every service can load them and SharedLibBeanSafetyTest stays green. E164.normalize(raw, defaultRegio...

Kamo·2w ago
Featurekamo-shared-library

The provider connection row, one per org

BL1 Task 1. A near-verbatim transliteration of the payroll provider enums and PayrollConnection into **************** Enums, one entity and one repository — no ...

Kamo·2w ago
FeatureKlusterServices

Give every kamocrm extension WebRTC, and gate outbound calling

All 21 kamocrm team members now hold an 8XXX extension on the k1m1 PBX (Chris renumbered off 7255 to 8134). Two changes here back that. WebRTC endpoint blocks ...

Kamo·2w ago
Featurekamo-internal

ServiceJobApi.createJob, and the back-link builder

Restores the client half of SW6c Task 2, which landed as 157fa714 and was dropped by a history rewrite in a concurrent session; the create screen itself survive...

kamo·2w ago
Featurekamo-internal

The service-request grid and client read the real endpoints

Restores the rest of SW6c Task 4, which landed as d58a6aba and was dropped by a history rewrite in a concurrent session; the detail page survived inside bddd361...

kamo·2w ago
Featurekamo-internal

Screenshots AND videos on a bug report

Reporters were describing screen recordings in prose and then posting the file into a chat, because the report form only took stills. It now takes MP4, MOV and ...

kamo·2w ago
FeatureMediaService

Attach a video to a bug report, not only a screenshot

A still cannot show the three clicks before the thing broke, so reporters were describing recordings in prose and posting the file into a chat instead. The atta...

kamo·2w ago
Featurekamo-internal

Restore the pipeline Quotes tab and wire quote conversion

`POST /quotes/{uid}/convert` shipped in SW4 and nothing has ever called it: `quotesApi` had ten methods and `convert` was not among them, so the endpoint was li...

kamo·2w ago
Featurekamo-marketing

Our price comes from the catalog, and can't be typed again

The comparison pages hardcoded KamoCRM at $29 Starter and $64 Business while the catalog sold them at $34 and $72. Nine files, forty-two mentions, and the build...

Kamo·2w ago
FeatureKlusterServices

Recorded-call notice on extension-to-extension calls

Completes the third call path. Staff-to-staff calls never touch the attendant — they go from-internal -> ext-local, where the Dial belongs to FreePBX — so [from...

Kamo·2w ago
FeatureSecurityService

POST /service-jobs, gated on MANAGE_SERVICE_WORK

The create verb the work-order surface never had. app/commerce/service/new is a seventeen-line placeholder because there was nothing to call. Gated on MANAGE_S...

Kamo·2w ago
Featurekamo-shared-library

CreateJob, so a work order can be raised without an order

The one verb the service-job surface was missing. Until now the only thing on the platform that could produce a ServiceJob row was **************** off a paid o...

Kamo·2w ago
Featurekamo-internal

Mirror VIEW/MANAGE_ORDERS and VIEW/MANAGE_PRICING

The client half of closing the order-mutation hole. SecurityService now gates 39 order, pricing and tax endpoints on four new rights; these are the two mirrors ...

kamo·2w ago
Featurekamo-shared-library

VIEW/MANAGE_ORDERS and VIEW/MANAGE_PRICING, ids 273-276

No order-mutation right existed anywhere. POSController's order endpoints and every pricing and tax handler in CommerceMarketController read the org off the ses...

Kamo·2w ago
FeatureKlusterServices

Recorded-call notice on direct-dialled extensions too

A caller who dials an extension over the greeting now hears the notice as well. That path went through from-did-direct, where the Dial belongs to FreePBX's ext-...

Kamo·2w ago
FeatureKlusterServices

Recorded-call notice to both parties at once, then a bridge tone

When an agent answers a queued call, the caller hears the client notice and the agent hears the agent notice at the same time, then a shared 1000Hz tone marks t...

Kamo·2w ago
FeatureInitializerService

4 GB per seat on every plan, and seats rather than users

Storage stops being a tier differentiator. The 2/4/5 ladder put one gigabyte between Starter and Business on a page that then had to explain what "pooled" meant...

Kamo·2w ago
Featurekamo-internal

The six work-order tabs persist

SW6b Task 4. Labour, parts, time, vendors, sign-off and notes were React `useState` on `commerce/service/[id]` and lost everything on reload. They now write to ...

kamo·2w ago
FeatureKlusterServices

Pass the advertised public IP to the media pod

Kamo·2w ago
FeatureSecurityService

Eight work-order endpoints for lines, notes, vendors, sign-off and the clock

SW6b Task 3, controller half. POST/PUT/DELETE /{jobUid}/lines/..., POST /{jobUid}/notes, POST/DELETE /{jobUid}/vendors/..., PATCH /{jobUid}/signoff and PATCH **...

Kamo·2w ago
Featurekamo-shared-library

Line, note, vendor, sign-off and clock writes on a job

SW6b Task 3, library half. Eight new operations on ServiceJobService, plus the wire records for them and the three reads the detail page needs. Three things th...

Kamo·2w ago
FeatureVOIPService

Implement KamoPBX extension, user and device management

The provider advertised extensionManagement, userManagement and deviceManagement as true while implementing none of them, so the UI would have shown buttons tha...

Kamo·2w ago
Featurekamo-shared-library

Job lines, notes and vendors so the work-order tabs can persist

Labour and parts become ServiceJobLine rows on the job rather than ServiceLineItem rows, because OrderLineItem.order is optional = false: a ServiceLineItem cann...

Kamo·2w ago
Featurekamo-internal

A failed clinical load must not render as an empty result

Two of these shipped before anyone noticed, and the guard found two more in the newest panel the moment it ran — failing to load what a patient's other practice...

kamo·2w ago
FeatureSecurityService

Expose platform settings through the system-config API

toDto is an explicit allowlist and updateConfig takes a typed body, so the seven new SYSTEM_CONFIGURATION columns would have been invisible and unsettable — the...

Kamo·2w ago
FeatureVOIPService

Decrypt the KamoPBX credential; test the refusal path

The master credential is stored as ciphertext by the platform settings UI, so it must be decrypted before use — handing ciphertext to the API as a password woul...

Kamo·2w ago
FeatureKlusterServices

Swap the inbound greeting to KamoCRM-Main-Intro-3

Third take, 40s (down from 60s). Uploaded alongside the previous two rather than over them, so rolling back to either is a one-line change to KAMO_ATTENDANT_INT...

Kamo·2w ago
FeatureInitializerService

Per-seat storage, and a flat Enterprise pool

2 GB per seat on Free, 4 on Starter, 5 on Business. Enterprise stops scaling with seats entirely - a flat 150 GB for the organization - which "N GB per seat" ca...

Kamo·2w ago
Featurekamo-internal

Platform settings card, and stop showing FreePBX copy

Three problems on the KamoPBX phone-server page, all mine: - The PHONE_SERVER_ID card was ungated, so every provider — KamoPBX, RingCentral and Teams include...

Kamo·2w ago
FeatureVOIPService

Read KamoPBX platform config from the database

Adding a KamoPBX phone server failed with a raw Kubernetes DNS error — 'I/O error on PUT ... **************** — shown to an organization admin who can neither r...

Kamo·2w ago
Featurekamo-shared-library

KamoPBX platform settings on SYSTEM_CONFIGURATION

KamoPBX is Kamo's own platform, so all of its configuration is platform-wide: base URL, master account id, account name, admin credential, SIP realm suffix and ...

Kamo·2w ago
FeatureInitializerService

Seed KamoPBX platform defaults

Hibernate ddl-auto adds the SYSTEM_CONFIGURATION columns; @ColumnDefault only applies to newly inserted rows, so the existing singleton needs backfilling. Seed...

Kamo·2w ago
Featurekamo-internal

The work-order grid reads real service jobs

Every row in this grid was a dead link by construction. generateMockWorkOrders minted ids String(8000 + i), the row click pushed /commerce/service/8001, and the...

kamo·2w ago
Featurekamo-marketing

Plan cards show what a tier ADDS, not everything it has

The cards listed every included feature - 16 on Free, 30 on Starter, 52 on Business, 57 on Enterprise. Four cards of wildly unequal height, each a wall of text,...

Kamo·2w ago
Featurekamo-internal

Pull a patient's history from the practices they used to attend

The outbound half of exchange, on the records tab beside the release surface — records leaving and records arriving are one person's job, and somebody who has j...

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

A line for documents retrieved from other organizations

Its own domain rather than a share of DOCUMENTS, for the reason bulk exports got one: a practice that queries a health information network routinely accumulates...

Kamo·2w ago
FeatureVOIPService

Provision a KamoPBX account when a phone server is created

Adding a KamoPBX phone server now creates the underlying account and writes the account id and realm back to configJson. Any configJson the client sent is DISCA...

Kamo·2w ago
Featurekamo-internal

KamoPBX is selectable

The provider is implemented in VOIPService, so the coming-soon gate comes off. Description no longer names the upstream project and says what actually matters t...

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

An org-scoped read/write API for service jobs

ServiceJob has been a mapped entity with repositories and passing tests and no way to read a row. This gives it the header the finished work-order UI already re...

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