KamoCRM

Live Change Log

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

18,399
Total Changes
6,534
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,399AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService621InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,996TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,694kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,826kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,534Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
September 25, 2026
Fixkamo-internal

A create Arive refused offers Resend at once, with Arive's reason

When the Create Loan Zap reports loan_create_failed the server keeps Arive's reason as the link's error and clears its pending clock. The header no longer spins...

Kamo·1mo ago
FixSecurityService

A loan Kamo creates now links, and a refused one says why on the lead

Ian's Create Loan reached Arive, was refused inside the Zap, and Kamo never knew: Zapier had already answered 200, and Arive fires no new_loan for a loan made t...

Kamo·1mo ago
FixAIService

The boot backfill counts row-less-by-design models apart

Every AIService start logged 'capability rows written for 21 model(s)' though completions models no capability Kamo uses (ruling SP01-T21), so they stay row-les...

Kamo·1mo ago
Fixkamo-shared-library

Send Arive the language CODE, not its name — every Create Loan was refused

Arive's Zapier field shows language names but its API takes ISO 639-2 codes (chi, eng, kor, spa, tgl, vie; zxx for Other). Kamo sent "English", so Arive answere...

Kamo·1mo ago
FixAIService

A model list anyone can read no longer passes a wrong key

The Hugging Face router and OpenRouter answer GET /v1/models with 200 for no key and for a wrong key, so Test connection read OK and sync reconciled 140 models ...

Kamo·1mo ago
FixSecurityService

A hire-step owner answering 401 has not shipped yet, so the step waits

VOIPService and ComputeService answer any path they do not serve from their session layer with 401, so Ava's EXTENSION and WORKSTATION steps went FAILED before ...

Kamo·1mo ago
FixAIService

Auto routing never picks a row-less model the catalogue says Kamo cannot call

The legacy router let a model with no capability rows through on the name rule legacy-completions *-instruct) get no rows by design, and their names pass the A...

Kamo·1mo ago
FixAIService

An AI session or the System User holds no platform right in AIService

Master §11 'SP02 final fixes': a session whose intelligenceType is ARTIFICIAL resolves no platform right by any route (owner flag, god window, administrator row...

Kamo·1mo ago
FixSecurityService

An AI member never founds an organization

The second door to IMPORTANT-1 of the SP02 final review. POST /api/security/organizations needs no right for a standalone organization: any signed-in user may c...

Kamo·1mo ago
FixEmailService

A calendar message's plain-text part says what its HTML says

The text/plain alternative of every calendar message was "You've been invited to: " + subject, so an instance cancellation read "You've been invited to: Cancell...

Kamo·1mo ago
Fixkamo-internal

The member rights tab never offers to make an AI member an owner

SecurityService now answers 400 AI_NOT_OWNER when PATCH **************** sets isOrganizationOwner on an ARTIFICIAL member (SP02 final fix). The Organization Own...

Kamo·1mo ago
FixSecurityService

Security-model writes require CONFIGURE_SYSTEM

Closes the SP02 final review's IMPORTANT-2. POST /api/security/models, PUT and DELETE /api/security/models/{id} and PUT /api/security/master-model only resolved...

Kamo·1mo ago
FixSecurityService

An AI member is never an owner or a platform operator

Closes the door around the AI never-grantable floor that the SP02 final review found (IMPORTANT-1). Platform rights and the owner flag are not RoleRightTypes, s...

Kamo·1mo ago
Fixkamo-shared-library

An AI member is never promoted to organization owner

**************** refuses isOrganizationOwner=true for an ARTIFICIAL target. The owner flag grants every platform right in the top-level organization and opens o...

Kamo·1mo ago
FixEmailService

Let the WebDAV verbs through Spring Security's firewall

StrictHttpFirewall admits only GET, HEAD, POST, PUT, PATCH, DELETE and OPTIONS, and answered every PROPFIND, PROPPATCH, REPORT, MKCOL and MKCALENDAR to /dav/** ...

Kamo·1mo ago
Fixkamo-internal

The Repeat field says what a series save does; no repeat for a lead callback

The repeat now follows a move of the start's date, as the calendar service moves a series: a weekly repeat's days move with it, and an existing series' end date...

Kamo·1mo ago
FixEmailService

A moved series keeps its days, its end and its exceptions; a lead callback never repeats

A whole-series move (ALL, or THIS_AND_FOLLOWING) now carries the rule with it (spec D-9): UNTIL moves by the same local step, so the last instance stays; a week...

Kamo·1mo ago
FixAIService

Family calls speak HTTP/1.1 on cleartext, never an h2c upgrade

The JDK client defaults to HTTP/2 and sends "Upgrade: h2c" with the first request to an http:// host. uvicorn (httptools) refuses the upgrade and drops the requ...

Kamo·1mo ago
FixKlusterServices

Size the reranker's TEI thread pools to its 1-CPU limit

The reranker runs embedding-model's TEI 1.9.4 under the same 1-CPU limit, so it takes the same sizing (KamoAI SP00 final review I-1): one tokenization worker, a...

Kamo·1mo ago
Fixkamo-internal

Member initials in the ink that reads on their fill, and My tasks' scope toggle at 4.5:1

axe on the SP06 task screens (drawer, My tasks, lead Tasks tab) found white initials on memberColor's 55%-lightness fills at 2:1 (cyan) and 4.1:1 (magenta) - wh...

Kamo·1mo ago
Fixkamo-internal

The Repeat field wears the event dialog's field style

The Repeat select, the interval and unit fields and the end date and count fields were stock MUI outlined fields (16px on white, square) inside a dialog whose e...

Kamo·1mo ago
FixKlusterServices

Record live kontak.kamocrm.com, desktop-1 sizing and the Docs host list

A .forgejo/ change makes the next deploy a full reconcile, which applies every manifest over live state. Four had drifted from live by hand or by another repo's...

Kamo·1mo ago
FixEmailService

CalDAV reads are authorised, bodies are generated, and a phone's PUT is parsed

Calendars are listed as calendar collections of events, resources are named by the UID their calendar-data states (encoded in hrefs), writes pass the read gate,...

Kamo·1mo ago
FixEmailService

The email.* host no longer reaches EmailService's server-to-server endpoints

The email-route IngressRoute sends every path on an email.* host straight to EmailService, past the API gateway, so the gateway's carve-outs (master spec sectio...

Kamo·1mo ago
FixSecurityService

A verification resend that names its account goes to the account's own org

An organization with no domain has no register host of its own, so its members land on register.<platform apex>, whose host names the platform. The resend endpo...

Kamo·1mo ago
FixEmailService

An organization with no domain still sends its letters

A domain is optional when an organization is created, but every transactional letter such an org sent threw "has no domains; cannot build NoReply from-address" ...

Kamo·1mo ago
FixEmailService

Ics import and export work — rows in, rows out, series included

Import upserts each UID group (master, canonical rule, EXDATEs, edited and cancelled instances) with no reminders and no invitations; E11 reports {created, upda...

Kamo·1mo ago
FixKlusterServices

Size every TEI thread pool to the 1-CPU limit, and let probes outlast a batch

TEI 1.5's ONNX backend starts one inference thread per physical host core (24 on k1m1) and reads no thread setting, so under the pod's 1-CPU quota the CFS throt...

Kamo·1mo ago
Fixkamo-login

No anonymous write to the session Redis, and no session id in the sign-out log

POST /api/session stored any JSON under any KS= key, with a caller-chosen TTL and no authentication, through a Redis client pair of its own. The session Redis r...

Kamo·1mo ago
Fixkamo-internal

The grids' empty sticky-row strips are no Tab stop on a phone

Chrome makes a scroller with nothing focusable inside a Tab stop of its own; at phone width ag-Grid's sticky-top strip (these grids have no sticky rows) took th...

Kamo·1mo ago
Fixkamo-internal

The filter rail fits the screen with twenty kinds

The rail beside the notification history is sticky on wide screens. With the nine KamoAI kinds it lists up to twenty kinds (848px), taller than the 608px a 1440...

Kamo·1mo ago
Fixkamo-internal

What the screens showed — readable chips and filters, labels clear of units, whole rail tabs, grids a keyboard can use

Found by rendering every SP01 screen at 1280 and 390 px with axe (Task 35): - warning chips (Degraded, Missing, Available, not verified) in amber ink, 5.0:1 - m...

Kamo·1mo ago
Fixkamo-internal

A hot reassign always carries its call note; the note-less menu path is gone

Hot Reassign now makes one call: the note travels in the body of mark-reassignment, where SecurityService writes it and the mark together and refuses the mark w...

Kamo·1mo ago
Fixkamo-internal

Security Models reads and saves real lists; the chat picker's choice is the conversation's

The access-policy BFF passes AIService's answers through unchanged, so a refused save shows its own reason.

Kamo·1mo ago
Fixkamo-internal

No-seat banner's Plans & billing link takes its own line on a phone

At 390 px the Alert action squeezed the button into a three-line column ("PLANS / & / BILLING") beside the sentence. On xs the Alert now wraps and the action ta...

Kamo·1mo ago
FixAIService

A QUERY key reaches the provider encoded once

ChatAuth.url returns a URI. WebClient reads a String as a URI template and encoded the already-encoded key again (+ became %252B), so any key holding +, /, = or...

Kamo·1mo ago
FixSecurityService

A hot reassign's first note creates the lead's stream linked to the lead

The stream is created for the lead, as the lead view's feed creates it, so its MEDIA_SESSION_POST row carries LEAD_ID and POST_CREATED goes to media.feed.lead.<...

Kamo·1mo ago
FixDaemonService

Pin DaemonService to k3m1, where the earthdata drive lives [skip ci]

k1m1 reaches /mnt/worldchunks only through a hard NFS mount of k3m1. That mount has hung, so the kubelet on k1m1 cannot stat the earthdata hostPath. A rollout t...

Kamo·1mo ago
FixKlusterServices

Transcribe realtime turns over the pod's own loopback

Speaches 0.9.0-rc.3 posts every realtime turn to /v1/audio/transcriptions. With LOOPBACK_HOST_URL unset it makes that call in-process through httpx's ASGITransp...

Kamo·1mo ago
Fixkamo-internal

The calendar's radios wear the organisation's colour

The Repeat field and the scope dialog bring the calendar its first radios. CalendarThemeScope painted buttons, checkboxes and switches in --color-primary but no...

Kamo·1mo ago
September 24, 2026
Fixkamo-internal

Signature icons reach the recipient as small PNG parts

The signature's social-network icons, contact-line icons and header decorations are percent-encoded SVG data: URIs. extractInlineImages only decodes base64, so ...

Kamo·1mo ago
FixConversionService

Logo-variants runs ffmpeg single-threaded, one logo at a time

The first boot backfill OOM-killed BOTH ConversionService pods (23:04:39 and 23:05:47Z): a 3919x1373 PNG logo and a 4096-wide seeded SVG. ffmpeg gives every fil...

Kamo·1mo ago
Fixkamo-internal

Draw member photos at the variant their size calls for

Every uploaded member photo has _sm (50px), _md (150px) and _lg (350px) beside the original, but surfaces picked them ad hoc: MemberAvatar drew _sm up to 40px (...

Kamo·1mo ago
FixKlusterServices

Reserve 768M for the OS so --memory 3G fits in the 4Gi pod

Seastar keeps max(1.5 GiB, 7%) of the cgroup limit plus ~94 MiB per shard back for the OS and refuses to start when --memory does not fit in what is left. With ...

Kamo·1mo ago
FixVOIPService

Mint a RingCentral webhook verificationToken RingCentral accepts

RingCentral refuses a deliveryMode.verificationToken longer than 32 characters with CMN-101 "Parameter **************** value is invalid" (measured against the ...

Kamo·1mo 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