KamoCRM

Live Change Log

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

17,395
Total Changes
5,910
Features
5,260
Fixes
30
Projects
Filter by project
All Projects17,395AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,830TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,328kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,637kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,910Fix5,260Other993Performance165Refactor278Revert23Style42Test159Upgrade1
June 30, 2026
FixKlusterServices

Correct FPBXCONF heredoc + repoint universe Scylla

- freepbx: the FPBXCONF here-document closing delimiter was indented (8 spaces); bash requires <<WORD delimiters at column 0, so startup.sh died with 'unexpec...

Kamo·3mo ago
FixSecurityService

Canonicalize webhook repo name to public-projects casing

After the cluster migration the Forgejo repos were recreated lower-cased (securityservice), but historical rows and the public-projects filter use canonical cas...

Kamo·3mo ago
FixDocsService

Node-local MinIO + failover template read + ImgDat dedup (fixes new-doc about:blank)

New-document creation hung ~5 min and the new tab stayed at about:blank. Root cause: DocsService pods scheduled on k3m1 read the blank template from MinIO at th...

Sage·3mo ago
FixSecurityService

Generate favicons via multi-node logo read, not single-node exists()

generateAndUploadFavicons() gated on minioService.exists(), which only stats the current MinIO host. When the simple logo was written to (or only replicated ont...

Kamo·3mo ago
Fixkamo-internal

Re-apply live stylesheet after branding save so new colors show without hard reload

DynamicMetaLoader injects the org globals.css only once on mount, so after a color save (which correctly re-provisions globals.css + bumps themeRevision) the pa...

kamo·3mo ago
FixKlusterServices

Pin kamo Traefik to k1m1; make auto-cert single-cluster

SSL errors: kamo Traefik is a LoadBalancer with externalIPs 192.168.4.22 (k1m1) + externalTrafficPolicy=Local, so it MUST run on k1m1 — the pod rebalance moved ...

Kamo·3mo ago
FixInitializerService

Null-safe split of the AiPullThroughPolicy single-active index (doc 09 §8)

CRDB is NULLs-distinct, so the single (lender_profile_id, market_id) WHERE status='ACTIVE' index did NOT backstop the org-wide (market_id IS NULL) grain — two c...

Kamo·3mo ago
June 28, 2026
FixDaemonService

Recreate deploy strategy so NATS durable consumers rebind on deploy

DaemonService binds EXCLUSIVE JetStream durable consumers (daemon-sync-trigger, **************** [the §2.8 breach loop], daemon-recording-received) in @PostCons...

Sage·3mo ago
FixDaemonService

Enable OutboxRelay @Scheduled backstop + @Async hot path

DaemonService activates the MLOS transactional outbox (mlos.outbox.enabled) and produces events (the compliance-timer breach emitter), but lacked @EnableSchedul...

Sage·3mo ago
FixDaemonService

Register com.kamo.z.shared.mlos.event repos (OutboxWriter dep)

Enabling mlos.outbox activates OutboxWriter, which requires MlosOutboxEventRepository (+ ProcessedEvent /DeadLetter) from com.kamo.z.shared.mlos.event — add tha...

Sage·3mo ago
June 26, 2026
Fixkamo-shared-library

PublishAck is in io.nats.client.api, not io.nats.client

Test-only import fix that was breaking shared-lib compilation (caught by the now-required local mvn install). Main code was unaffected (OutboxRelay ignores the ...

Kamo·4mo ago
June 25, 2026
FixKlusterServices

Indent heredoc bodies so the startup.sh configmap is valid YAML

The startup.sh block scalar embedded 5 shell heredocs (rtp.conf, http.conf, an SQL block, WebRTC endpoints, freepbx.conf) whose bodies sat at column 0 — less in...

Sage·4mo ago
FixDocsService

Point Docs deployment at k1m1 registry

The Docs-online image host was the bogus **************** (Redis DNS, never a registry), so every DocsService deploy re-applied an unpullable image. Point it at...

Kamo·4mo ago
Fixkamo-internal

Page reflects superseded edt + road-less transport cells honestly

The Services tab read as incomplete for two stages that are actually done: - edt showed an empty 0% bar though EDT4 (hydro) supersedes the EDT2 base and the p...

Sage·4mo ago
June 20, 2026
Fixkamo-internal

Show the live heartbeat tile count, not the stale per-pass value

Progress read status.have first, which the initial 'running' event sets to 0 — and `0 ?? count` keeps 0, so the live count never showed (and hydro mis-counted a...

Sage·4mo ago
Fixkamo-internal

Add Universe to the settings slide-out (NavPri)

The Universe page was registered on the settings landing cards but not in the SettingsStatusWindow slide-out that NavPri actually opens, so it didn't appear und...

Sage·4mo ago
June 16, 2026
FixSecurityService

Expose GD (god eligibility) in /user-info for kamo-universe

The session stores the GD flag (KSessionService) but /user-info never returned it, so kamo-universe's KamoIdentity always deserialized is_god=false and the god/...

Kamo·4mo ago
FixEmailService

Don't save transactional NoReply sends to a Sent folder

NoReply is a send-only address with no mailbox, but every transactional send still attempted an IMAP append to its Sent folder, producing a noisy AUTHENTICATION...

Kamo·4mo ago
FixSecurityService

Case-insensitive email lookup so reset emails send

Password recovery lowercased the input but findByEmailEmail does a case-sensitive match against the stored email (e.g. Sage@KamoCRM.com), so the user was never ...

Kamo·4mo ago
June 15, 2026
Fixkamo-login

Proxy password-reset to SecurityService internal DNS

The /api/recover proxy defaulted to api.kamocrm.com, which Traefik routes to APIService (no recover controller) → 404 → "Something went wrong" on /reset-passwor...

Kamo·4mo ago
FixKlusterServices

Move Dovecot maildirs to a local-path PVC (off rclone/MinIO FUSE)

Maildirs were on hostPath /mnt/shared-files/email/mail — the rclone FUSE mount backed by MinIO object storage, which can't safely host a maildir (no atomic rena...

Kamo·4mo ago
FixKlusterServices

Put MySQL datadir on a local-path PVC instead of rclone/MinIO FUSE

The mail MySQL datadir (and maildirs) were on hostPath /mnt/shared-files, an rclone FUSE mount backed by MinIO object storage, which cannot durably or consisten...

Kamo·4mo ago
FixEmailService

Mailbox list API returns UI-shaped ****************

GET /api/email/mailboxes returned the raw entity (providerStatus, lastSyncedAt, no member count). The settings UI reads **************** so status was always un...

Kamo·4mo ago
FixSecurityService

Carry impersonation audit trail across org jumps

When the caller is already an impersonation session (a god admin acting as another member, carrying SUDO_MEMBER_ID), entering another org from /network minted t...

Kamo·4mo ago
FixEmailService

Authorize privilege-based mailbox access for read + send-as

resolveForMailbox only granted access via a direct MemberMailbox assignment, so mailboxes surfaced through **************** rights threw NoSuchElementException ...

Kamo·4mo ago
Fixkamo-internal

Stop gating pages on the *** cookie in proxy middleware

proxy.ts (Next middleware) redirected every page request with no *** cookie to /logout. Since the session id now lives in sessionStorage — which a document requ...

kamo·4mo ago
Fixkamo-internal

Stop touching cookies; send token explicitly on auth calls

Rip out all the legacy-cookie clearing/migration. The token lives in sessionStorage (key ***) and travels as the X-***-Token header, which the backend already p...

kamo·4mo ago
Fixkamo-internal

Don't adopt the legacy *** cookie; clear it instead

Right after the sessionStorage switch ships, every browser still has its old *** cookie. The migration adopted that value into sessionStorage (and the server co...

kamo·4mo ago
Fixkamo-internal

Fall back to my-networks when all-networks 403s

hasPlatformAdminAccess is derived client-side (owner-of-session-org AND host-org-is-top-level). A child-org owner whose session lands on the top-level host is m...

kamo·4mo ago
June 14, 2026
June 13, 2026
June 12, 2026
June 10, 2026
FixBillingService

Register esign repositories for the meter submission bean

EsignMeterSubmissionService needs EsignUsageRecordRepository, but @EnableJpaRepositories didn't scan com.kamo.z.shared.esign.repos, so the context failed to sta...

Kamo·4mo ago
FixBillingService

Back metered add-on prices with a Billing Meter

Stripe (>= 2025-03-31.basil) rejects the legacy usage_type+aggregate_usage metered model ('metered prices must be backed by meters'), so USAGE_BASED add-on pric...

Kamo·4mo ago
FixSecurityService

Select the SUBSCRIPTION market for platform setup

KamoCRM owns several markets **************** so resolveProductMarket must pick the SUBSCRIPTION-type (platform-access) market rather than the first active one....

Kamo·4mo ago
Fixkamo-shared-library

Product root = owns SUBSCRIPTION market, not any market

A customer org (e.g. BluEleven) owns its OWN business markets (RETAIL/MORTGAGE) to run its company while remaining a customer of the KamoCRM platform — its memb...

Kamo·4mo ago
June 9, 2026
Fixkamo-internal

Keep org list on background refetch; dedupe session calls

/network re-fired fetchNetworks on every background session refresh and hid the whole list on any fetch error, so a transient blip or a stale hasPlatformAdminAc...

kamo·4mo ago
Fixkamo-internal

Revert email link click handlers, isolate cause

User reports email-preview link clicks still do nothing AND text selection is killed mid-drag. Right-click and hover both work, so the anchor element is intact ...

kamo·4mo ago
June 8, 2026
FixSecurityService

Regenerate favicons on labeling save; sniff real logo type

provisionUpdate (run on every custom-labeling save) wrote config/css/manifest but never regenerated favicons — those were only produced by provisionFull. An org...

Kamo·4mo ago
FixSecurityService

Seed globals.css from template when org folder lacks it

provisionUpdate (run on every color save) rewrote the org's css/globals.css in place, but that object only exists once provisionFull has copied it from the defa...

Kamo·4mo ago
Fixkamo-internal

Show full logo with its real extension, not hardcoded .svg

The branding tab built logoFullUrl as logo-full.svg on mount, ignoring the org's logoFullExt. Full logos uploaded as png/jpg/etc. live at logo-full.{ext} in Min...

kamo·4mo ago
FixKlusterServices

Refresh TLSStore every loop so newly-issued certs get served

update_tls_store() only ran at startup and on shared-storage imports, so a cert freshly issued by cert-manager (HTTP-01) was Ready with a tls-* secret but never...

Kamo·4mo ago
FixKlusterServices

Give redirect-only route a backend so Traefik v3 enables it

Traefik v3 disables an IngressRoute router with services: [] when allowEmptyServices is off (as it is here), so the domain-agnostic HTTP->HTTPS redirect router ...

Kamo·4mo ago
FixKlusterServices

Redirect all HTTP hosts to HTTPS + gate auto-cert to real org domains

Custom org domains (e.g. login.sign.pink) returned Traefik's bare "404 page not found" over plain HTTP: the only port-80 redirect router was hardcoded to *.kamo...

Kamo·4mo ago
FixConversionService

Persist conversion_error instead of failing silently

Both the template and regular upload conversion pipelines swallowed Docs conversion failures (logged only), leaving is_converted=false with no recorded reason —...

Kamo·4mo ago
June 7, 2026
Fixkamo-signer-monorepo

Install turbo via npm in Docker pruner stage; pin pnpm; add .dockerignore

The pruner stage ran `pnpm add -g turbo` before any package.json existed, so corepack grabbed pnpm 11 and failed with "global bin directory /pnpm/bin not in PAT...

Kamo·4mo ago
May 29, 2026
Fixkamolos

Default empty STRIPE_CONNECT_WEBHOOK_SECRET so KamoLOS boots

The configmap referenced **************** without a default, so Spring's placeholder resolver threw before reaching the Java-level **************** which alread...

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