Live Change Log

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

17,984
Total Changes
4,645
Features
4,557
Fixes
32
Projects
Filter by project
All Projects17,984AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService385InitializerService302KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,528TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,599kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,327kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,645Fix4,557Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
August 28, 2026
Featurekamo-internal

Create My Free Org widget

Ships the same CreateOrgForm the /network/create page renders, in its widget layout, as a home-launchpad widget (org.create) gated on CREATE_FREE_ORG_WIDGET. Re...

Kamo·2w ago
FeatureKlusterServices

Open Send To AI in a VS Code session tab, not a Konsole window

A dispatch now starts a BACKGROUND session and hands VS Code its session id, instead of running the CLI in a terminal window: Passing the prompt to the URI in...

Kamo·2w ago
Featurekamo-internal

/network/create is one page; the twelve steps move to /settings/wizard

CreateOrgForm.tsx is one component with two layouts (page/widget), built from Task 7/8's CreateOrgFields model, field groups and OrgBrandPreview. page.tsx is no...

Kamo·2w ago
Featurekamo-internal

Reusable field groups and the live brand preview

Extracts the inputs from BranchTypeStep, BasicsStep, LogoStep, ColorsStep, AppsStep and AgeRestrictionsStep into five controlled field components (OrgTypePicker...

Kamo·2w ago
Featurekamo-internal

Getting Started Configuration Wizard button with an attention border

Adds the launchpad's entry point into the setup wizard: an owner-only, rights-gated pill that reads "Getting Started Configuration Wizard (x/9 steps complete)",...

Kamo·2w ago
Featurekamo-internal

Getting Started wizard step model and client

Adds the client-side step model (app/lib/orgSetupWizard.ts), a thin API client for GET/PUT/DELETE /api/security/org-setup-wizard (app/lib/orgSetupWizardApi.ts),...

Kamo·2w ago
FeatureSecurityService

Add progress service and endpoints behind the Getting Started wizard

Org-scoped GET/PUT/DELETE under /api/security/org-setup-wizard track which of the nine Getting Started steps an organization has completed. A read never creates...

Kamo·2w ago
Featurekamo-internal

The maximized pane zooms into the conversation you picked

Switching conversations in the maximized view was an 8px nudge and a 180ms fade — close enough to nothing that the pane looked like it had simply repainted. It ...

Kamo·2w ago
Featurekamo-internal

Three-column widgets and per-widget minimum sizes

Widens WidgetWidth to 1 | 2 | 3 | 'full' and lets a WidgetDefinition declare minWidth/minHeight. widgetMinSize(definition) converts that into a PaneSize floor (...

Kamo·2w ago
Featurekamo-internal

Touch up a traced logo by hand, and download the converted file

Four things on the raster-to-vector converter and the simple logo slot. **The scroll bar on the raster options is three times wider.** 4px was a hard target to...

Kamo·2w ago
Featurekamo-internal

One-page field set and the defaults that replace the dropped steps

CreateOrgFields is what the new single-page /network/create form actually asks for: a branch type, name, alias, the app switches, and a handful of optional fiel...

Kamo·2w ago
Featurekamo-shared-library

Create My Free Org widget rights and Getting Started wizard progress

Adds RoleRightType 288-292 (CREATE_FREE_ORG_WIDGET and its four ADDED/OPTIONAL/ REQUIRED/MOVABLE policy children), hung off CREATE_CHILD_ORG (131). Adds OrgSetu...

Kamo·2w ago
Featurekamo-internal

Per-pane minimum size, applied on read as well as on drag

Threads an optional `min?: PaneSize | null` through clampPaneSize, the two resize-delta helpers, and the two preference read/write functions in the pure launchp...

Kamo·2w ago
FeatureSecurityService

Put a real time budget on resend-verification

The endpoint had no limit of any kind. The *** the register screen demanded before enabling its resend button was never read here — the request body is three fi...

Kamo·2w ago
Featurekamo-internal

The org's year established is optional, and unset renders as absent

Nothing on the server ever required it — the column is nullable, the create parser maps an empty value to null, and patchOrganization applies only the keys a PU...

Kamo·2w ago
Featurekamo-internal

Show a member only the tabs that are theirs to see

Three member-settings surfaces were open to people they cannot mean anything for. Each gate is on the MEMBER TYPE or the org's apps, never on checkRight — check...

Kamo·2w ago
Featurekamo-internal

Offer a member only the kinds they can receive

The notification centre and its settings drew every kind to everybody. A member with no Leads app was shown a "Lead callback" filter that could only ever return...

Kamo·2w ago
FeatureEmailService

A member is only told about apps they have

A notification kind belongs to an app — a lead callback is Leads, a meeting reminder is Meetings — but raise() asked only whether the member had muted it. So a ...

Kamo·2w ago
Featurekamo-internal

The console shows a reader what they may have, and no more

Two things the /kb page reported to anyone holding VIEW_KB_ARTICLES. The corpus. The audience chips an author ticks in the composer — Members, Team Members, Pu...

Kamo·2w ago
FeatureKBService

Enforce the audience chips on every human read

The composer has always offered an author three chips under "Visible to" — Members, Team Members, Public. They were written to the row and indexed into Qdrant s...

Kamo·2w ago
Featurekamo-internal

A group per app, a console to grant them, and master notes as widgets

Three changes that turned out to be one. THE HOME PAGE. "My Master Note" and "Our Master Note" were bespoke panes rendered straight out of page.tsx, gated on n...

Kamo·2w ago
FeatureSecurityService

Seed the master-note widgets from VIEW_NOTES

The two master-note panes shipped with no right at all — "My Master Note" and "Our Master Note" were on every member's launchpad unconditionally — and this is t...

Kamo·2w ago
Featurekamo-shared-library

A security group per app, and the master notes as widgets

Ten new rights, 278-287: NOTES_MASTER_MINE_WIDGET and NOTES_MASTER_OURS_WIDGET, each with the four policy children every home widget carries. Both hang off VIEW...

Kamo·2w ago
FeatureKlusterServices

Swap the voicemail greeting to KamoCRM-LeaveVM

24.9s, down from 27.9s. Uploaded alongside the previous recording rather than over it, so rolling back is a one-line change to KAMO_VOICEMAIL_GREETING plus a di...

Kamo·2w ago
Featurekamo-login

Let a signed-in member reach the sign-in form, and back out of the workspace picker

Two halves of the same problem: the login page was a one-way street. It validated any existing *** cookie on load and, when the session was still good, redirec...

Kamo·2w ago
August 27, 2026
Featurekamo-shared-library

The credit note, the only correction path for a finalized invoice

B3: Kamo owns everything before finalize() and the provider owns everything after, and every provider on the roadmap treats a finalized invoice as immutable. So...

Kamo·2w ago
Featurekamo-shared-library

The document counter, and a number that cannot fork

Every existing document number on this platform is a check-then-insert race with no unique constraint behind it: quote numbers are COUNT(...)+1, subscription in...

Kamo·2w ago
Featurekamo-shared-library

The invoice entity, with every tax field and no tax engine

Kamo's own invoice, written only by InvoicingService. Nothing on it is supplied by a caller: every figure is derived from the lines on every write, which is the...

Kamo·2w ago
Featurekamo-internal

Choose the KamoDesktop resolution, and stop hiding why a launch failed

The remote desktop tracks the browser window and always has, so there was no way to have MORE desktop than window. A picker now sets a fixed size, stored per br...

kamo·2w ago
FeatureSecurityService

Let the caller choose a fixed KamoDesktop resolution

The remote desktop was never locked to a resolution — it tracks the browser window, and always has. guacd honours the client's size and xorgxrdp resizes the X s...

Kamo·2w ago
FeatureInitializerService

The REVOKEs three entity javadocs already claimed existed

BillingWormGuard, BillingDispatch and BillingSyncIssue each cite "a REVOKE UPDATE, DELETE in the KamoInitializer migration". No such migration existed — the sta...

Kamo·2w ago
Featurekamo-internal

The billing proxy route, and MANAGE_BILLING_PROVIDER's four TS mirrors

Task 8, the kamo-internal half. Six mirrors of the rights architecture; four of them live here. 3. app/lib/rightsHierarchy.ts MANAGE_BILLING_PROVIDER ...

kamo·2w ago
FeatureSecurityService

The relay to InvoicingService, and the right that gates it

Task 8. SecurityService is the authorization boundary; InvoicingService is ClusterIP with no ingress, so this relay is the only way in. InvoicingServiceClient ...

Kamo·2w ago
Featurekamo-shared-library

MANAGE_BILLING_PROVIDER (277), a child of commerce settings

Task 8, mirror 1 of 6 (the Java enum) and mirror 2 (the parent(...) line). Id 277 was re-derived from origin/main immediately before allocating it, NOT taken f...

Kamo·2w ago
Featurekamo-internal

`?bug=<id>` opens that report's drawer

Where the new status-change email lands. It has to name the report rather than the tab: the status filter defaults to New, and that email is by definition about...

Kamo·2w ago
Featurekamo-internal

Glimmering unread cards, a live badge, and per-status counts

THE BADGE IS ABOUT YOU NOW, NOT ABOUT THE QUEUE. It counted every NEW report platform-wide, so it only ever fell when somebody moved a status — reading the queu...

kamo·2w ago
FeatureSecurityService

Tell the reporter when Send To AI moves their report

MediaService now emails a reporter whenever their bug or enhancement changes status, but a dispatch applies a status of its own — usually In Progress — through ...

Kamo·2w ago
FeatureEmailService

Preview variables for the bug-status-changed template

The admin preview renders a template against a sample variable map, and this one has no arm — so an org administrator opening SYSTEM_BUG_STATUS_CHANGED would se...

Kamo·2w ago
FeatureMediaService

Email the reporter when their bug or enhancement changes status

Triage was silent. Somebody filed a report and then had to keep opening the tab to find out whether anyone had looked at it — which is the same as not being tol...

Kamo·2w ago
FeatureMediaService

Per-viewer read state, a live badge, and per-status counts

THE BADGE WAS ABOUT THE QUEUE, NOT ABOUT YOU. /new-count counted every NEW report platform-wide, so it could only fall when somebody moved a status — reading th...

Kamo·2w ago
FeatureSecurityService

Announce the queue change when a report is dispatched to AI

A dispatch is the only thing that takes a report out of NEW from OUTSIDE MediaService, so without this it was the one transition the console's badge learned abo...

Kamo·2w ago
Featurekamo-shared-library

Per-viewer read state for system bug reports

SystemBugView is per VIEWER, not per bug — a firstViewedAt column on SystemBug would let whoever opened a report first clear it off every other manager's badge....

Kamo·2w ago
Featurekamo-shared-library

The canonical letter a bug reporter gets when their report moves

A member who files a bug or an enhancement had no way to learn what happened to it short of opening the tab and looking. This adds the template that tells them,...

Kamo·2w ago
FeatureInitializerService

System_bug_view — who has read which report

Per VIEWER, not per bug, and that is the whole reason it is a table rather than a first_viewed_at column on system_bug: triage is worked by several people at on...

Kamo·2w ago
FeatureBillingService

Per-server lines on the extensions summary

The phone server's extensions tab showed the organization-wide figure and nothing else, so an empty KamoPBX server displayed "21 billable extensions — $63.00 / ...

Kamo·2w ago
FeatureVOIPService

Keyword interception at step 0 on the RingCentral rail (MS1 Task 4)

Today a STOP to a number no MEMBER_VOIP_CONFIG row owns hits the "No member found for to-number" branch and vanishes — and that branch is EXACTLY where an opted...

Kamo·2w ago
FeatureVOIPService

SmsKeywordService — the one writer for inbound keywords (MS1 Task 3)

Closes the TODO Task 2 left behind. Until this commit a verified inbound STOP reached BulkTextInboundController, was recognised, was logged, and was then DROPPE...

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

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