KamoCRM

Live Change Log

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

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
October 5, 2026
TestSecurityService

**************** — every charter owner table carries every CharterItem column and its owner, from the docs/sql files in order and a dated legacy baseline (KamoCollab CP03 T7)

The program's one cross-table charter DDL guard (master R1-12). It reads every docs/sql/*.sql in filename order and collects what the six owner tables (dept_req...

Kamo·2w ago
TestEmailService

MailSearchWiringTest registers the recipient-domain validator EmailController now takes (SP98 T26)

ec2c638 gave EmailController a RecipientDomainValidator; the wiring test's context did not have one, so it has failed on main since 2026-09-28 **************** ...

Kamo·2w ago
TestMediaService

Pin what an org with no active chat-policy set answers (KamoCollab CP00 final fix)

sp00verify's only chat-policy set is CP02 Task 6's enforced version 1, now an inactive history row. The new test pins the facts CP00 Task 12's restore rests on ...

Kamo·2w ago
TestSecurityService

Pin that a same-org Enter-As is refused before any audit row or session (KamoCollab CP00 final fix)

EnterAsController answers 400 'target is current session organization' before ImpersonationAudit.enteredAs runs, on both branches, so no same-org entry can writ...

Kamo·2w ago
TestAIService

Pin Luna's voice view before and after Task 21 sets her sex (SP96)

Sp96LunaVoiceExpectationsTest runs the resolver over production's inputs, read 2026-10-05: her migrated Eleven Flash v2.5 / Bella row and the five TTS voice lis...

Kamo·2w ago
TestMediaService

The wiring test no longer registers the legacy chat facts repository, which shared-lib removes (KamoCollab CP02 T18)

The CI image build compiles test sources (package -DskipTests), so this test must stop naming ChatPolicyFactsRepository before shared-lib drops it. It passes ag...

Kamo·2w ago
Testkamo-internal

The route guard expects twelve charter URLs now that SP96 dropped the voice catalogue (SP98 T23)

e844e7f2f removed charterApi.voices and its BFF route (an AI member's voice is chosen on its profile), so the client calls 12 charter URLs; the guard's sanity f...

Kamo·2w ago
Testkamo-internal

The route guard expects twelve charter URLs now that SP96 dropped the voice catalogue (SP98 T23)

e844e7f2f removed charterApi.voices and its BFF route (an AI member's voice is chosen on its profile), so the client calls 12 charter URLs; the guard's sanity f...

Kamo·2w ago
Testkamo-internal

Find the signature editor's Save by its dictionary key, and expect an AI line's outside-calls switch (SP98 T22)

The signature editor's Save label became a dictionary key in UI sweep C, and the test still looked for the English word; it is skipped without KAMO_SHARED_LIB, ...

Kamo·2w ago
Testkamo-internal

Find the signature editor's Save by its dictionary key, and expect an AI line's outside-calls switch (SP98 T22)

The signature editor's Save label became a dictionary key in UI sweep C, and the test still looked for the English word; it is skipped without KAMO_SHARED_LIB, ...

Kamo·2w ago
TestKlusterServices

Pin that the SP93 host patch keeps the first pre-image as its backup

The existing re-run test patches nothing on its second run, so it never reaches the backup and could not catch a script that overwrote it. The new test rolls th...

Kamo·2w ago
Testkamo-shared-library

Capture the rights and session-timeout waterfall goldens on unchanged main (CP01 T1)

RightsWaterfallGoldenTest (933 lines: cascade 588, templates 324, closure 18, AI 3) a94381d6 and checked in both fixture modes (lazy collections, bulk repositor...

Kamo·2w ago
October 4, 2026
TestSecurityService

SP96 the pin test's real controller takes the charter-change publisher

SP95 T6 (de022c1) added KamoaiEventPublisher to MemberCharterController's constructor after this test was written, so the rebased test no longer compiled (and C...

Kamo·2w ago
September 29, 2026
TestSecurityService

SP96 the charter's VOICE TTS pin is refused and resolves to nothing

SecurityService picks up the retired pin from shared-lib (Task 14); no SecurityService code read it. Pins the service's side: a member item naming voiceModelId/...

Kamo·3w ago
September 28, 2026
TestEmailService

Stopping the repeat from an edited instance leaves that instance as it showed

SP98-F-2. The count-exhausted way into a split that leaves one event was pinned by fdd44fc; this pins the other way in, an explicit stop from an edited instance...

Kamo·3w ago
TestEmailService

The OAuth-default guard reads the platform API host from the shared constant

Follows 8f68912. The guard asserted that the YAML defaults use the paths the settings screen advertises, but it hard-coded the api.kamocrm.com host. The default...

Kamo·3w ago
TestMediaService

A group chat of two AI members with identical columns holds both (SP10)

SP10 T47, live: chat_find_or_create_dm for the owner, Ava and Ben answered 400 "one or more memberIds not found": TeamMember's value equality kept one of the tw...

Kamo·3w ago
TestSecurityService

Pin the bare cookie domain against Tomcat's own cookie processor

bc54945 stopped logout clearing *** on ".kamocrm.com", which Tomcat's RFC 6265 processor refuses by throwing from addCookie: logout answered 500 after the sessi...

Kamo·3w ago
TestEmailService

OrgPrimaryDomain may read an organization's domains

It is the one rule the no-reply sending domain is chosen by, for the three files already allowed here; it builds no link. Completes e43179d.

Kamo·3w ago
September 27, 2026
Testkamo-internal

Hold the Inbox note and the task tone's copy to what they describe (KamoAI SP06)

The Inbox's locked note said its tasks could not be reordered while ChecklistBody lets them be dragged into a new order, and Settings -> Sounds described the ta...

Kamo·3w ago
September 25, 2026
TestEmailService

MailSearchWiringTest registers the outgoing composer EmailController takes

EmailController gained OutgoingMailComposer in 3908372; the wiring test's Docstor list did not, so it failed with UnsatisfiedDependencyException. OutgoingMailCo...

Kamo·4w ago
TestSecurityService

Accept either read-timeout message in the owner-client test

OkHttp arms the socket's SO_TIMEOUT ("Read timed out") and its own watchdog ("timeout") with the same 300 ms; either can fire first, so the assertion failed abo...

Kamo·4w ago
Testkamo-shared-library

Compose manifest, fixtures and 232 goldens from the legacy renderers

The fixtures carry the logo ladders (full: header rung with ?v=, a laddered logo badge; company: header and signature rungs without a revision) and the uploaded...

Kamo·4w ago
September 23, 2026
Testkamo-internal

Fictional people in the correspondent-name tests

They used a real lead's name and address from the report.

Kamo·4w ago
Testkamo-internal

Fictional people in the correspondent-name tests

They used a real lead's name and address from the report.

Kamo·4w ago
TestEmailService

Fictional people in the correspondent-name tests

They used a real lead's name and address from the report.

Kamo·4w ago
TestEmailService

Fictional people in the correspondent-name tests

They used a real lead's name and address from the report.

Kamo·4w ago
TestEmailService

StatusReasonAdviceTest's alias case also needs MANAGE_EMAIL_ACCOUNTS

Same shape as the AliasResponseMemberIsTextTest fix: this class's one shared session lacked the right, so createAlias's new gate answered 403 "MANAGE_EMAIL_ACCO...

Kamo·4w ago
TestBillingService

Growth Hub files are reported on their own line

This pins the GROWTH_HUB domain kamo-shared-library gained today. Before it, no domain claimed the Growth Hub's two associations, and the imaging pass dropped t...

Kamo·4w ago
TestEmailService

AliasResponseMemberIsTextTest's session carries the right createAlias now needs

The full suite caught what the targeted run alone would not have: this fixture's session had no rights on it, so createAlias's new MANAGE_EMAIL_ACCOUNTS gate 40...

Kamo·4w ago
September 17, 2026
TestEmailService

A shared mailbox response carries no IMAP login

GET /api/email/shared-mailboxes (and /my-access, create, update) return SharedMailboxEntity itself to any session in the organization. Until the library's crede...

Kamo·1mo ago
TestSecurityService

A search term reads the lead's email

Walks the grid specification's LIKE branches on the Hibernate this service runs (the HQL rendering leaves function arguments out, so it cannot show which column...

Kamo·1mo ago
September 16, 2026
TestEmailService

The sendToUser ratchet counts three overloads [skip ci]

TransactionalSendRatchetTest pinned sendToUser at two overloads, so that its first test provably inspects them rather than passing on none. c47fcf6 added the bl...

Kamo·1mo ago
September 12, 2026
Testkamo-shared-library

Count PLAY_CHESS, PLAY_HOLDEM and MANAGE_EMAIL_OPT_OUTS

The two game roots shipped without moving the audited shape, so RoleRightHierarchyTest had been red on main since. The opt-out right is a child of MANAGE_EMAIL_...

Kamo·1mo ago
TestSecurityService

MANAGE_OUTBOUND_EMAIL_HOSTS is enforced in EmailService

PlatformOutboundHostsController checks it through SessionPlatformFacts and the shared PlatformRightsResolver, so it is listed with the rights enforced elsewhere...

Kamo·1mo ago
TestEmailService

Spring can build the bulk-email, warm-up and delivery beans

Several of them have a second constructor taking a clock for tests, and with two constructors Spring needs to be told which to use or the whole context fails at...

Kamo·1mo ago
September 10, 2026
TestMediaService

Parse the desk's audience query at test time

findHolderMemberIdsOf lives in the shared library, so nothing in this package parsed it — and a mistyped path there crash-loops MediaService at boot, every endp...

Kamo·1mo ago
September 9, 2026
Testkamo-internal

Cover the topInset the maximized window already honours

ToolWindowShell has taken a topInset since the tab strip landed — it starts the window below the strip and stops it short by the same amount, or the strip is dr...

Kamo·1mo ago
TestESigService

Prove submit actually writes the signature date, and ignores the wire

The unit tests around this cover the pieces — the format, the type predicate, the required-field exclusion — and none of them can see the wiring. A signature_da...

Kamo·1mo ago
Testkamo-internal

The motion guard matched a form, and longhand opted out of it

The reduced-motion walker scanned for the `animation:` shorthand. Writing the same animation as `animationName:` plus longhand properties — the first refactor a...

Kamo·1mo ago
Testkamo-internal

Prove the chat window's menu consults the entitlement too

The companion to the MediaService endpoint test, at the second door. The chat games menu had the entitlement hole independently of the nav icon — it asked for t...

Kamo·1mo ago
Testkamo-internal

The ramp-order fallback was a branch no test took

The invariant added in 80aee0ee falls back to the whole allowance when `clockStages` reports no critical boundary — which happens when the clock opens critical ...

Kamo·1mo ago
Testkamo-internal

The two clock ramps are independent, but not unordered

The colour and the sound escalate on deliberately different beats — a rate and a state are different vocabularies, and each says something the other cannot. Tha...

Kamo·1mo ago
TestMediaService

Prove the endpoints actually CONSULT the entitlement, not just that it works

GamesEntitlementTest proves the gate answers correctly. Nothing proved the three controllers ask it — and that distinction is the entire defect this change set ...

Kamo·1mo ago
Testkamo-internal

Stop pinning setThemeSlug's argument list in a source assertion

`tabOrgResolution` was red on main. It asserts on the SOURCE of app/validate/page.tsx and required the literal text `setThemeSlug(orgRef)`, so `f9bd7621` — whic...

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