KamoCRM

Live Change Log

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

15,120
Total Changes
5,169
Features
4,935
Fixes
30
Projects
Filter by project
All Projects15,120AIService197APIService161BillingService143ConversionService107DaemonService129DocsService215ESigService88EmailService518InitializerService318KBService105KlusterServices697MCPGatewayService85MediaService546RAGService71SecurityService1,658TranslateService55VOIPService205VectorService11kamo-apps25kamo-asterisk-support24kamo-capcha17kamo-capcha-widget4kamo-internal6,937kamo-login330kamo-marketing625kamo-nowww20kamo-register213kamo-shared-library1,455kamo-signer-monorepo53kamolos108
Filter by type
All TypesBuild11CI523Chore738Docs2,167Feature5,169Fix4,935Other986Performance157Refactor274Revert23Style42Test94Upgrade1
September 29, 2026
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·8h 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·8h 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·16h 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·18h 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·22h 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·1d 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·3d 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·3d 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·4d 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·5d ago
Testkamo-internal

Fictional people in the correspondent-name tests

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

Kamo·5d ago
TestEmailService

Fictional people in the correspondent-name tests

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

Kamo·5d ago
TestEmailService

Fictional people in the correspondent-name tests

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

Kamo·5d 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·5d 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·5d 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·5d 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·1w 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·1w 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·1w 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·2w 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·2w 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·2w 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·2w 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·2w 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·2w 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·2w 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·2w 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·2w 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·2w 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·2w 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·2w ago
September 7, 2026
Testkamo-internal

Pin the storage meter to white, and ship the fix past a dead runner

A source-level guard rather than a rendered assertion, because none of what went dark is visible to a rendered one. Three of the four faults were dark for only ...

Kamo·3w ago
Testkamo-internal

Fail the build on a character the bitmap font cannot draw

A codepoint Press Start 2P lacks does NOT render as tofu. The browser silently falls back to a system font, so the character appears, correctly shaped, and mere...

Kamo·3w ago
TestMediaService

Parse every declared query, not the two somebody remembered

The three queries this feature added were never parsed by anything. That matters more than a wrong predicate would: Spring Data validates every @Query while it ...

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

The /myplan to console journey, end to end

The preselect landed across two sessions and two files, so the thing worth pinning is the journey rather than either half: a plan chosen on /myplan arrives sele...

Kamo·3w ago
Testkamo-internal

Pin KamoCRM's own sales details, and that no org can change them

The address and number are constants a single edit away from becoming a tenant lookup, which would route a customer asking about a KamoCRM plan back to their ow...

Kamo·3w ago
Testkamo-internal

Type the nav-option fixture the shelf tests hand the launcher

The helper took { id: string }[], so every fixture with a kind, an href or a toolKey on it was a type error the test run never saw and tsc did.

Kamo·3w ago
TestConversionService

Assert the contract the service actually has

**************** asserted that an image already inside the box comes back byte-identical to what went in. It has been failing since afee6fd in July, and the cod...

Kamo·3w ago
TestMediaService

Pin which support queue a stranger's chat lands in

resolveTopic decides where a visitor from a customer's website reaches a person, and every way it can go wrong goes wrong silently — a chat filed under a plausi...

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

Pin the right-click to one menu

The handler itself is already in — swept into 734f68cb by a concurrent commit in a shared checkout, under an unrelated message. This is the test it was written ...

Kamo·3w ago
Testkamo-internal

Cover the arrangement the Gmail sidebar actually asks for

The classification is tested in folderTargets; this is the call the sidebar makes with it. None of Gmail's well-known folders is a root and none is named anythi...

Kamo·3w ago
TestEmailService

Pin the two rules that let an OAuth grant and typed-in DAV credentials share a row

An org-level ContactIntegration holds either a typed-in DAV URL and password or an OAuth grant, and the CalDAV/CardDAV tab writes to that one row from two indep...

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

Guard the provider catalog's interpolated i18n keys

check-i18n-keys.mjs reads literal t('...') calls, and the catalog builds its keys by interpolation — **************** and oauthClients.field.${labelKey} — so no...

Kamo·3w ago
September 3, 2026
Testkamo-shared-library

Wire the accept-gate mock into the FFA spend test

acceptNextLead consults LeadAcceptEligibilityService before it reaches any of the credit logic these cases are about, and the test builds the service by reflect...

Kamo·3w ago
TestKlusterServices

Drive a real PTY and a real socket through the terminal pump

The existing tests pin argv and framing in isolation; these four prove the pieces actually move bytes. A shell is forked under a genuine pty.fork and pumped ove...

Kamo·3w ago
September 2, 2026
TestSecurityService

Hold withTermsUnchanged to carrying every field

The method rebuilds UpdateQuoteRequest positionally, so a field added to that record and forgotten here is dropped from every save by a member without EDIT_QUOT...

Kamo·3w 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