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 28, 2026
Fixkamo-internal

Stop the form column stretching to the grid row height

The two-column layout gave the form column no align-self, so it stretched to the row height — and the row is as tall as the TALLER column. Once the form flows i...

Kamo·2w ago
Fixkamo-internal

One scrollbar, and actually use the full content width

AuthedChrome already owns the ONE scroll container for a page (.kamo-page-scroll, overflow:auto; height:100%), and PageWrapper exists specifically to stop a pag...

Kamo·2w ago
Fixkamo-internal

Next/link for Back to home, not a raw anchor

check-client-navigation fails the image build on a raw <a> to an internal route: a hard navigation tears down every open tool popup window and any unsent email ...

Kamo·2w ago
Fixkamo-internal

Whole-branch review fixes — provisioning, reachability, label data loss, a11y, dead code, org-context race, hex case

Seven findings from the final whole-branch review of the org-launch and Getting Started wizard feature, fixed together since several interact: - B1: **********...

Kamo·2w ago
Fixkamo-internal

Resolve the shared "skip" string against its full key

Six step components called t("skip") against an unscoped useTranslations(), which requests a top-level "skip" key that doesn't exist — next-intl then renders th...

Kamo·2w ago
Fixkamo-internal

Close the wizard Save-without-validation hole (review round 1)

Four findings from spec/code review, addressed: 1. CRITICAL - nothing gated the shell's Save button on step validity, so a member could blank the organizati...

Kamo·2w ago
Fixkamo-internal

Inert, not aria-hidden + pointer-events-none, for gated sections

CreateOrgForm's section() helper hid the four sections gated on "no branch type chosen yet" with aria-hidden plus a pointer-events-none className. aria-hidden o...

Kamo·2w ago
Fixkamo-internal

Dropping a gathered honeycomb in the goal removes every head in it

Jiggling mid-drag fires the gather gesture, which pulls every same-size head into the dragged head's cluster and anchors the honeycomb on the head under the poi...

Kamo·2w ago
FixSecurityService

Require an open god-mode window, not eligibility alone, for CONFIGURE_SYSTEM

hasRight was granting the bypass on the raw GD session flag, which SessionPlatformFacts's own javadoc names as the exact anti-pattern it exists to prevent: GD i...

Kamo·2w ago
Fixkamo-internal

Gate the web-alias path on parent context, not model alone

withBranchType previously turned useWebAlias on whenever the SELECTED MODEL allowed ROOT or a custom alias, ignoring the three parent-org preconditions BasicsSt...

Kamo·2w ago
FixVectorService

Stop treating an already-transparent background as black, and remove the region not the colour

Two reported faults with one root cause: colour-based removal overwrote the alpha channel outright and never read the incoming one. An HTML canvas stores premu...

Kamo·2w ago
Fixkamo-internal

Switching conversations no longer stacks windows behind the maximized pane

Takes @kamo/tool-core 0.1.5, where leaving the maximized pane became two gestures instead of one. A navigator row click hands the pane to another conversation a...

Kamo·2w ago
Fixkamo-register

Restore the verification screen's wallpaper, drop its ***, modernise its status plate

Three things wrong with /verification, all visible on one screen. The wallpaper never loaded. PostCompletionScreen called **************** but that parameter i...

Kamo·2w ago
Fixkamo-internal

Give the new tab a session, instead of one that bounces to login

"Open in new tab" was `window.open(location.href, '_blank', 'noopener,noreferrer')`. The session id is not in a cookie — it lives in sessionStorage, per tab, be...

Kamo·2w ago
FixInitializerService

Let a seeded org omit its year established

createOrg took the year as a primitive int, so every seed had to supply one even though YEAR_EST is nullable and the field is optional platform-wide. Integer, s...

Kamo·2w ago
Fixkamo-register

YearEst is optional on the org, so admit the null that arrives

Year established is nullable on the Organization entity and SecurityService serializes the null explicitly, so the declared `number` was never the whole wire sh...

Kamo·2w ago
FixRAGService

KB audience tiers are cumulative, matching KbReaderScope

The retrieval filter matched a reader's tier exactly: a TEAM_MEMBER had to match aiVisibleToTeamMembers and nothing else. So an article an author had deliberate...

Kamo·2w ago
Fixkamo-internal

Centre the launchpad tiles that are only an icon and a name

A leaf app pane in its compact form shows no sub-item rows and no description, so the icon/title row was heading a column with nothing in it — pinned to the top...

Kamo·2w ago
Fixkamo-internal

Restore the image-proxy and wallpaper work 266357d0 reverted, and land the permissions change it was meant to carry

266357d0 was built with the wrong index. Its tree came from a stale local HEAD rather than from the staged one, so it carried none of the permissions work its m...

Kamo·2w ago
FixKBService

GET /master takes VIEW_NOTES, like every other read here

It was the one read in this controller that took no right, deliberately: the two master notes were called fixtures of the home launchpad rather than the Notes a...

Kamo·2w ago
FixInitializerService

The invoice takes REVOKE DELETE, not REVOKE UPDATE

attachPdf writes PDF_BLOB_ID after the finalize transaction commits, on purpose: rendering inside it would hold the document-counter row lock across a MinIO rou...

Kamo·2w ago
August 27, 2026
Fixkamo-internal

Stop force-cache pinning "this org has no wallpapers" forever

The console backdrop and the member Wallpaper editor both read the tenant's `config.json` for `backgroundImageCount`, and both asked for it with `cache: 'force-...

Kamo·2w ago
Fixkamo-internal

The grid fetched every page twice, then blanked itself to do it

Opening /leads showed the rows, dropped back to a loading state, and showed them again. It was fetching twice. STOMP raises onConnect on the INITIAL connect ex...

Kamo·2w ago
Fixkamo-internal

Stop the image proxy serving an hour-old copy of another org's branding

Theme asset URLs are stable and say nothing about their contents: an org's simple logo is always `<alias>/img/logo.svg`. Every org is also seeded with the base ...

Kamo·2w ago
FixSecurityService

Make seeded and uploaded branding revalidate, so an org stops being served the base theme it was seeded with

A new organization is seeded with the base theme — the platform's own logo and backgrounds copied to the new org's keys — and those keys never change when the o...

Kamo·2w ago
Fixkamo-internal

Format every phone number a signature prints

The company lines went out as whatever the org record stored — "5555555555" — next to a member's line in the same block, so a signature could show a formatted n...

kamo·2w ago
Fixkamo-internal

One formatter for every number, US and international alike

The formatter every phone surface shared kept the LAST TEN DIGITS of whatever it was handed and dressed them as a NANP number, so "+44 20 7946 0958" rendered as...

kamo·2w ago
Fixkamo-internal

A window only announces its own conversation

The messageReceived handler dispatches chat:message-received, which is what makes ChatNotificationListener raise a chat window, and plays the arrival tone. Neit...

kamo·2w ago
FixMediaService

A relay only forwards its own conversation

ChatSessionSubscriptionManager publishes to a topic named after the session it subscribed FOR, never after the session the frame came from. That is safe only wh...

Kamo·2w ago
Fixkamo-shared-library

Filter every durable consumer to its own subject

A durable created through NatsMessageService.subscribe carried no filter subject, so it received the WHOLE stream regardless of the subject it was asked for. Th...

Kamo·2w ago
FixInitializerService

State the company phone column defaults where IF NOT EXISTS cannot swallow them

The 2026-08-27 run proved the ADD COLUMN ... DEFAULT FALSE never applied: ddl-auto builds the SessionFactory before any CommandLineRunner, so Hibernate had alre...

Kamo·2w ago
Fixkamo-internal

Show what THIS phone server costs, not just the org total

The extensions tab showed only the organization-wide figure, so an empty KamoPBX server displayed "21 billable extensions — $63.00 / month". The 21 were on a Fr...

kamo·2w ago
FixVOIPService

One source of truth for the platform settings

"Test connection" reported "no master account id" on a phone server whose provisioning had just succeeded, minutes earlier, using that same id. Two sources dis...

Kamo·2w ago
Fixkamo-internal

Offer Finish setup on a KamoPBX server that was never provisioned

The card told the admin their phone system was "still being set up" and to wait. That was never going to clear: KamoPBX provisioning runs synchronously when the...

kamo·2w ago
FixVOIPService

A half-provisioned phone server could never be finished, and said the wrong thing

An org's KamoPBX server has been reporting Error: Phone provider instance not found: **************** since it was created. The instance was never missing —...

Kamo·2w ago
FixKlusterServices

Set the VM's MTU to the pod network's, and let the desktop apply updates

Two separate reasons the "Code" update could not be installed. THE UPDATE COULD NOT BE DOWNLOADED. enp1s0 came up at MTU 1500 while every other workload on thi...

Kamo·2w ago
Fixkamo-internal

Format the numbers in call history

The History tab was the one softphone surface rendering a raw provider number: the incoming-call banner and every number in SoftphoneCRM already run through for...

kamo·2w ago
FixKlusterServices

Stop unattended upgrades restarting xrdp under a live session

The black screen was apt. apt-daily-upgrade.service upgraded xrdp at 06:49 UTC on 2026-08-27 and restarted it while a desktop from 2026-08-25 was running. xrdp-...

Kamo·2w ago
Fixkamo-internal

Keep long app descriptions inside the Apps & Features row

The collapsed accordion summary already set nowrap + ellipsis on the description, but nothing in the flex chain could shrink: a flex item defaults to min-width:...

kamo·2w ago
Fixkamo-internal

Remove the vendors tab, which could only ever show its own mocks

The three pickers classified vendors by id range — 200s appraiser, 300s title, 400s escrow. `commerce_vendors.uid` is INT8 DEFAULT unique_rowid(), about 19 digi...

kamo·2w ago
FixKlusterServices

Keep FreeSWITCH's log readable while it is crash-looping

FreeSWITCH runs with -nc, so mod_logfile is the only record of what it did, and on the container filesystem that record dies with the container — precisely when...

Kamo·2w ago
Fixkamo-internal

Tighten the masthead band and sit both sides on the bottom edge

The launchpad's first band was costing more height than it earned. The page container's uniform inset gave the masthead a 40px top gutter, and the header carrie...

kamo·2w ago
Fixkamo-internal

Call history names the far side, not the member themselves

A history row exists to answer "who was this call with", and that side flips with the direction. HistoryRow read `fromName || fromNumber` unconditionally, so ev...

kamo·2w ago
FixVOIPService

Outbound external calls were missing from FreePBX call history

On an outbound external call FreePBX rewrites the CDR `src` to the trunk's outbound caller ID — the org's own DID — so a call ext 8080 placed to 9493747110 is r...

Kamo·2w ago
Fixkamo-internal

One back-link that resolves, instead of four that never did

Every service screen's back button was `/commerce?tab=service`. There has never been a tab with that id: `PipelineView.tsx:69-70` builds them as `market-${marke...

kamo·2w ago
FixSecurityService

A video on a report never reaches an AI dispatch

file and cannot watch one. The desktop agent already magic-byte-checks every attachment, but it refuses the DISPATCH rather than the one file — so a single vide...

kamo·2w ago
Fixkamo-internal

The browser tab is named after the workspace, not the host

Enter Wienerschnitzel or Wendy's and the tab read "KamoCRM", while nothing inside the workspace said KamoCRM anywhere. ABC Mortgage was correct, which made it l...

kamo·2w ago
FixInitializerService

Volume bands stop pricing seats the plan does not sell

Starter admits 5 seats and Business 25, but the bands ran to 25 and 100 — four of the six priced seat counts nobody could reach. Starter's 10%-off-at-11 tier wa...

Kamo·2w ago
FixInitializerService

KI would not compile against the shared library on main

VendorDTO.uid became a String — a Long in the database, a string on the wire — and this call site still handed it to **************** which is a server-side req...

Kamo·2w ago
FixKlusterServices

Stop offering 8 unroutable ICE candidates on every call

Callers hear several seconds of one-way audio at the start of a call — the other party says "hi" three or four times before the softphone user hears anything. ...

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