KamoCRM

Live Change Log

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

18,406
Total Changes
6,537
Features
5,540
Fixes
30
Projects
Filter by project
All Projects18,406AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService622InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,997TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,699kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,826kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,537Fix5,540Other1,001Performance174Refactor282Revert23Style45Test175Upgrade1
August 3, 2026
FixSecurityService

Harden the kubectl download against flaky egress [skip ci]

dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...

Kamo·3mo ago
FixMediaService

Harden the kubectl download against flaky egress [skip ci]

dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...

Kamo·3mo ago
FixAPIService

Harden the kubectl download against flaky egress [skip ci]

dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...

Kamo·3mo ago
Fixkamo-signer-monorepo

Make the kubectl install resilient to flaky egress

With the PATH bug fixed, the deploy then failed on a transient TLS drop while downloading kubectl: curl: (56) OpenSSL SSL_read: error:0A000119:decryption fail...

Kamo·3mo ago
Fixkamo-signer-monorepo

Invoke kubectl by absolute path in the step that installs it

Root cause of deploy_k1m1 never succeeding. The install step did: echo "$BIN" >> "$GITHUB_PATH" kubectl version --client but $GITHUB_PATH only applies to SU...

Kamo·3mo ago
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·3mo 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·3mo 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·3mo 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·3mo 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·3mo 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·3mo 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·3mo 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·3mo 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·3mo 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·3mo 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·3mo ago
July 30, 2026
FixInitializerService

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

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

Kamo·3mo 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·3mo 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·3mo ago
July 28, 2026
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·3mo 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·3mo 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·3mo 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·3mo ago
July 27, 2026
FixDaemonService

Notify the ASSIGNED steward of a routed decision, via email

DECISION_ROUTED's steward notification was a record-only no-op: StewardNotifier fanned out over SMS to a static CSV **************** that is empty by default, a...

Kamo·3mo ago
July 26, 2026
FixKlusterServices

Pin CockroachDB to v24.2.4 to avoid v24.3 no-license txn throttle

v24.3 (and 24.2.5+) enforce the new CockroachDB Software License; with no license key the cluster throttles to 5 concurrent open transactions cluster-wide. A v2...

Kamo·3mo ago
July 23, 2026
FixSecurityService

Pin RDP color-depth so KamoDesktop SSO reuses one xrdp session

The god-via-kamo-internal SSO path defines its Guacamole connection inline in the json-auth token, so the color-depth pin must live here too (kept in sync with ...

Kamo·3mo ago
FixKlusterServices

Pin RDP color-depth + reap xrdp sessions so god reuses one desktop

xrdp 0.9.24 keys sessions on <user,bpp> (Policy=Default) and never reaps disconnected ones (KillDisconnected=false, DisconnectedTimeLimit=0). The RDP user is al...

Kamo·3mo ago
Fixkamo-shared-library

Register WELCOME_MEMBER + WELCOME_TEAM_MEMBER canonical keys

Both templates ship as resource pairs on disk (welcome-member.{json,html}, **************** with matching templateKeys, and EmailService already has their sampl...

Kamo·3mo ago
July 22, 2026
Fixkamo-internal

Render member photos on avatars inside the chat window

The small avatar icons in a chat popup — the per-message sender avatar (MessageBubble) and the seen-receipt list (SeenIndicator) — all read SessionMember.avatar...

kamo·3mo ago
Fixkamo-internal

Show member avatars in chat tool window title bars

The tool-window title bar renders its icon from the window STORE props — ToolDock passes `avatarSrc={w.toolId === 'chat' ? w.props.avatarSrc : undefined}` and f...

kamo·3mo ago
Fixkamo-internal

Surface real upload errors, sync god mode to session

"Save failed: Full logo upload failed" discarded the status and body, so a 403 from the branding gate read identically to a MinIO outage. The server's own messa...

kamo·3mo ago
FixSecurityService

Make org branding authz reachable (owner, god mode, or right)

Uploading a logo to a child org 403'd with no way to succeed: canManageOrgBranding only admitted the org owner, and the isGodModeActive fallback could never ret...

Kamo·3mo ago
Fixkamo-shared-library

A suspended loan can be resumed, and is no longer offered to itself

SUSPENDED is deliberately not terminal — LoanFileStatus.isTerminal excludes it, because a loan is suspended for a fixable reason. But it had no forward arrow, s...

Kamo·3mo ago
Fixkamo-shared-library

Bound MlosAiClient with explicit connect and read timeouts

The client field-initialized a bare `new RestTemplate()`, so no timeout applied on any AI call and no builder could reach it. A hung provider blocked the caller...

Kamo·3mo ago
Fixkamo-internal

Stop the promote preview overcounting rows the server will reject

The "N approved row(s) will publish" caption counted a row whenever an APPROVED note_rate and base_price candidate existed for it, ignoring the values. A price ...

kamo·3mo ago
FixAIService

Classify vision failures so the retry loop and circuit breaker actually work

Two bugs in visionComplete, both of which defeated machinery built to handle them. A blank-content response was returned as SUCCESS and ended the retry loop. E...

Kamo·3mo ago
FixSecurityService

Thread orgId into the rate-sheet version-spine read

The gateway relayed only investorId, so the upstream had nothing to scope by and returned another tenant's version spine for a foreign investor id. Its siblings...

Kamo·3mo ago
Fixkamo-internal

Use the full page width; make renaming an agent visible

Two things I got wrong. **Width.** The brief was explicit — use the full width of the page, do not waste real estate — and I capped the studio at a centred 880...

kamo·3mo ago
Fixkamo-internal

Stop the lead view crashing on a lead with no name

/leads/view/{id} died with "Cannot read properties of null (reading 'preferredName')". LeadDTO.toDTO() only builds primaryContact inside `if (lead.getName() != ...

kamo·3mo ago
Fixkamo-internal

Retry an upload with the MIME type the server actually detected

The upload validates the multipart part's Content-Type against the type the server detects from the bytes, and that part type comes from the browser's File.type...

kamo·3mo ago
FixAIService

Never route vision to an adapter that cannot send an image

AiProvider.supportsVision is a hand-editable database flag, and routing trusted it alone. The HuggingFace and Cohere adapters never read imageUrls at all, and t...

Kamo·3mo ago
FixMediaService

Mount the live per-host cert instead of the expired wildcard secret

The cert-converter init container built its PKCS12 keystore from wildcard-kamocrm-com, a legacy multi-SAN secret that cert-manager orphaned when its Certificate...

Kamo·3mo ago
FixVOIPService

Stop pinning the expired wildcard-kamocrm-com secret

wildcard-kamocrm-com was a legacy multi-SAN secret that cert-manager orphaned when its Certificate was repointed at a per-host secret. Nothing renewed it and it...

Kamo·3mo ago
FixSecurityService

Stop pinning the expired wildcard-kamocrm-com secret

wildcard-kamocrm-com was a legacy multi-SAN secret that cert-manager orphaned when its Certificate was repointed at a per-host secret. Nothing renewed it and it...

Kamo·3mo ago
FixConversionService

Stop pinning the expired wildcard-kamocrm-com secret

wildcard-kamocrm-com was a legacy multi-SAN secret that cert-manager orphaned when its Certificate was repointed at a per-host secret. Nothing renewed it and it...

Kamo·3mo ago
FixDocsService

Stop pinning the expired wildcard-kamocrm-com secret

wildcard-kamocrm-com was a legacy multi-SAN secret that cert-manager orphaned when its Certificate was repointed at a per-host secret. Nothing renewed it and it...

Kamo·3mo ago
FixKlusterServices

Stop expired/orphaned secrets shadowing live per-host certs

update_tls_store() rebuilt the TLSStore from a plain Secret listing, bucketed only on name prefix and type, with no check that a Certificate still owned the sec...

Kamo·3mo ago
July 19, 2026
FixMediaService

Reject cross-org sales agents; widen bootstrap cache busting

salesAgentId was persisted from the request body unchecked, so a cross-org or dangling agent id could be stored on a WebChatIntegration. It failed safe only bec...

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