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
August 3, 2026
Fixkamo-signer-monorepo

Point the deploy kubeconfig at the LAN IP, not the k1m1 hostname

deploy_k1m1 had never succeeded (0/5 since the repo was created). The job rewrote the kubeconfig API server to https://k1m1:6443, but the runner's job container...

Kamo·1mo ago
CIkamo-signer-monorepo

Re-trigger deploy after fixing K1M1_KUBECONFIG_B64

The deploy_k1m1 job had never succeeded (0/5) because the secret held k1m1's on-host kubeconfig verbatim, whose server is https://127.0.0.1:6443 — reachable fro...

Kamo·1mo ago
FixEmailService

Add missing CampaignController REST endpoints for /api/email/campaigns

The bulk-email workspace/editor call GET/POST /api/email/campaigns etc., but only CampaignService (the @Service) was ever created — no @RestController exposed i...

Kamo·1mo ago
Featurekamo-signer-monorepo

Render signer dates in the recipient's resolved timezone

SigningSession gains a required `timeZone` (IANA id) that ESigService resolves from the recipient's member zone, then the org's, then UTC. WelcomeScreen now pas...

Kamo·1mo ago
FeatureESigService

Resolve signer display timezone from member, then org

Signing dates were rendered in whatever zone the client defaulted to, so an envelope expiring 2026-08-03T05:00Z could read "Aug 3" to a Pacific signer for whom ...

Kamo·1mo ago
FeatureInitializerService

Create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs

Mirrors the two new Organization fields, following the OrgBrandingFieldsMigration convention, so the columns are reproducible on any environment rather than onl...

Kamo·1mo ago
Featurekamo-shared-library

Persist handlesPhi and phiEffectiveDate on Organization

Backs PhiTenantGuard with a real column. HANDLES_PHI is NOT NULL DEFAULT FALSE following the **************** pattern, so every existing tenant is explicitly ou...

Kamo·1mo ago
Featurekamo-shared-library

PhiTenantGuard and the module compliance boundary

The keystone of the HIPAA compliance boundary: which modules a tenant may reach, given whether that tenant handles protected health information. Everything down...

Kamo·1mo ago
August 2, 2026
Fixkamo-signer-monorepo

Disable hreflang alternates header; make LANGUAGE_NAMES total

- routing.ts: set alternateLinks: false — the app is noindex/nofollow with no consumer for the Link: rel=alternate header next-intl emits by default for all...

Kamo·1mo ago
Otherkamo-shared-library

Revert "feat(phi): add the handlesPhi tenant flag and PhiTenantGuard"

This reverts commit ****************

Kamo·1mo ago
OtherInitializerService

Revert "feat(phi): create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs"

This reverts commit ****************

Kamo·1mo ago
FeatureInitializerService

Create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs

Mirrors the two new fields on the Organization entity in kamo-shared-library, following the OrgBrandingFieldsMigration convention. HANDLES_PHI is NOT NULL DEFAU...

Kamo·1mo ago
ChoreESigService

Gitignore superpowers SDD scratch directory

Kamo·1mo ago
FeatureESigService

Emit the signer locale segment in signing links

Extracts the byte-for-byte duplicated buildSignLink into SignLinkBuilder and adds a locale segment sourced from Organization.language, falling back to English f...

Kamo·1mo ago
CIkamo-signer-monorepo

Clone translations from the dictionary, stop tracking messages/

Adds the dictionary clone step before the Docker build and gitignores apps/kamo-signer/messages/, matching kamo-internal and kamo-marketing. Requires **********...

Kamo·1mo ago
Featurekamo-shared-library

Add the handlesPhi tenant flag and PhiTenantGuard

The keystone of the HIPAA compliance boundary: a per-organization flag plus a guard deciding which modules that organization may reach. Everything downstream ke...

Kamo·1mo ago
Featurekamo-signer-monorepo

Locale-aware date formatting and per-locale metadata

Kamo·1mo ago
FixDocsService

Require a session on POST ****************

The handler took an HttpServletRequest but never used it, carrying the comment "No auth required — internal admin maintenance endpoint". APIService relays /api/...

Kamo·1mo ago
FixConversionService

Require a session on POST /backfill-conversions

The handler was declared backfillConversions() — it took no request at all — under the comment "No auth — internal maintenance, mirrors /backfill-thumbnails". I...

Kamo·1mo ago
Featurekamo-signer-monorepo

Add language switcher to the signer top bar

Endonym-labelled menu over the 22 supported locales. Preserves the query string on switch — ?t= is the signer's only credential.

Kamo·1mo ago
Featurekamo-signer-monorepo

Mirror layout for RTL locales via stylis-plugin-rtl

The MUI theme direction alone flips component logic but leaves physical CSS properties untouched, so Arabic rendered with LTR spacing. Swaps the Emotion cache k...

Kamo·1mo ago
FixSecurityService

Gate DELETE /api/security/org/{id} behind active god mode

The handler was `public void **************** Long id)` — no HttpServletRequest parameter at all, calling straight through to a bare deleteById. With ResourceSe...

Kamo·1mo ago
Featurekamo-signer-monorepo

Route the signer under /{locale} with next-intl middleware

Adds i18n/routing.ts (localePrefix always), i18n/navigation.ts, and middleware.ts, and moves the route tree under src/app/[locale]/. request.ts now resolves fro...

Kamo·1mo ago
Fixkamo-internal

Delete /api/set-token and /api/get-jwt-token; add route guards

Both routes were dead — no caller anywhere in kamo-internal, kamo-login or kamo-register — and both leaked credentials. /api/set-token built its upstream URL f...

kamo·1mo ago
FixSecurityService

Require auth + org scope on job-title/department mutations

PUT and DELETE on /api/security/job-titles/{id} and /api/security/departments/{id} resolved no session at all — they read a UUID off the path and called straigh...

Kamo·1mo ago
Chorekamo-signer-monorepo

Gitignore superpowers SDD scratch directory

Kamo·1mo ago
Docskamo-signer-monorepo

Implementation plan for the kamo-signer i18n upgrade

Seven tasks across kamo-translation-dictionary, kamo-signer-monorepo and ESigService, ordered by the deploy constraint: dictionary must exist before CI clones i...

Kamo·1mo ago
Docskamo-signer-monorepo

Design for kamo-signer /{locale}/ i18n upgrade

Specifies bringing kamo-signer to platform i18n parity using the kamo-marketing /{locale}/ URL convention, as the prerequisite for hosting a localized public qu...

Kamo·1mo ago
July 31, 2026
Fixkamo-internal

Resolve template images from kept sources, not neighbouring slots

The composer re-resolved a template's image sources whenever the template config changed, and for 'member-avatar' it guessed the URL from whichever of signature...

kamo·2mo ago
FixSecurityService

Store and read avatars under one domain-independent prefix

Avatar object paths were prefixed with the domain of whatever host the request arrived on (getPublicBucketName → kamocrm-com, optionone-com, cluster-local, …), ...

Kamo·2mo ago
Featurekamo-internal

Blink the mail icon while an unread indicator is showing

The unread badge alone was easy to miss in the top bar. NavItemButton gains a blinkIcon prop that pulses the icon (and its badge) — kept distinct from the exist...

kamo·2mo ago
ChoreInitializerService

Starter maxSeats 5, Business maxSeats 25

Keeps the KamoCRM pricing seed in step with the live catalog after repositioning the published seat caps.

Kamo·2mo ago
Featurekamo-marketing

Starter capped at 5 users, Business at 25

Repositions the published seat caps on /pricing (and the calculator, JSON-LD offers, and llms.txt summaries) to match the subscription catalog: Starter 25 -> 5 ...

Kamo·2mo ago
Fixkamo-internal

Double vertical scrollbar width for easier dragging

Bump the nav options scroll container from a 6px to a 12px webkit scrollbar and widen the thumb radius to match, giving members a larger drag target. The collap...

kamo·2mo ago
July 30, 2026
FixInitializerService

Register **************** repositories

LeadService now eagerly wires MarketLosConnectionResolver, which requires the integrations.los repositories **************** KI's explicit @EnableJpaRepositorie...

Kamo·2mo ago
Featurekamo-internal

MeridianLink loan-officer credential card on member profile + lead-button LO pre-warn

Phase L3 of the MeridianLink LOS loan-officer mapping (per §3.4-3.6 of the design spec): - New member-scoped LOS-credential proxy **************** and type...

kamo·2mo ago
FeatureSecurityService

LO-scoped create (block if unmapped) + member MeridianLink credential API + market-config LO link status

Phase L2 of the MeridianLink loan-officer mapping design (kamo-internal **************** §3.3-3.6), built on the L1 shared-lib schema/resolver (MarketLosUserCre...

Kamo·2mo ago
Fixkamo-internal

Drop redundant "+" — pen now sets the balance both ways

The credit-balance pen is now an absolute set-to-N editor (backend mints when the value is raised, invalidates the excess when lowered), so the separate "+" dis...

kamo·2mo ago
FixSecurityService

Credit-balance pen sets an absolute target (mint up / invalidate down)

The Manage-Credits pen edit only ever LOWERED a balance: updateAllotment routed creditBalance to invalidateCreditsToTarget, which no-ops when target >= current....

Kamo·2mo ago
July 28, 2026
Chorekamo-internal

Re-trigger build for Bulk Email i18n (run 338 failed transiently)

Local `next build` compiles clean with the full dictionary (a95bc92); the prior CI build failed on a transient step, not on content. Re-triggering to bundle the...

kamo·2mo ago
Chorekamo-internal

Rebuild to bundle completed Bulk Email i18n strings

No code change — triggers CI to re-clone kamo-translation-dictionary (a95bc92) so the deploy bundles the 208 new **************** strings into messages/en.json ...

kamo·2mo ago
FixSecurityService

Master Machine SSO uses a VNC connection, not RDP

guacd cannot render KRdp's H.264-only RDP GFX. buildAutoConnectUrl now mints a vncConnection() for Master Machine (192.168.4.46:5900, shared password). Linux/Wi...

Kamo·2mo ago
FixKlusterServices

Master Machine uses VNC (x11vnc), not RDP

KRdp/RDP is incompatible with Guacamole: guacd has no RDP Graphics Pipeline (EGFX) and KRdp is H.264-only, so the connection authenticated but died with GRAPHIC...

Kamo·2mo ago
Fixkamo-internal

Add 'desktopMaster' to NavActionKey union — unblocks next build

The Master Machine launcher (navRegistry + NavOptionView + CommandPalette) references actionKey 'desktopMaster' but it was missing from the NavActionKey union, ...

kamo·2mo ago
FixEmailService

Remove ambiguous unsubscribe requestMatcher that crashed startup

EmailService mounts two servlets (MVC DispatcherServlet + Spring-WS MessageDispatcherServlet at /services/*), so a bare string requestMatchers( "/api/email/unsu...

Kamo·2mo ago
July 27, 2026
Featurekamo-internal

Bulk Email campaigns UI — grid, editor, provider tab, leads action

Adds the org-level bulk email marketing surface under /marketing/email: - Bulk Email tab (after Social Media) + campaigns AG Grid workspace with live status/s...

kamo·2mo 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