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
July 16, 2026
FixAPIService

Defer mandatory-origin to Phase 1 — OriginMatcher opt-in (empty allow-list / missing Origin allowed)

Phase-0 widgets still call via their server-side proxy, so origin-locking has no benefit yet and every live public-chat key has an empty allow-list. Strict enfo...

Kamo·2mo ago
July 15, 2026
FixAPIService

Only cache-invalidate genuinely-invalid keys, not origin-denied (prevents valid-key DoS)

On a cold Redis cache, a valid public-chat key with a wrong/absent Origin was cached as INVALID for 60s, denying the correct origin's requests for that window. ...

Kamo·2mo ago
FixAPIService

Bind WS relay handshake to Origin + add cold-cache key validation fallback

Extracts PublicChatController's private validateViaDownstream() into a shared PublicChatKeyResolver bean so PublicChatWebSocketHandler can reuse the same downst...

Kamo·2mo ago
July 14, 2026
FeatureAPIService

Proxy GET /lo-presence to MediaService

The support-session proxy already forwards the raw body, so the merged widget's preferredAgentMemberId reaches MediaService untouched. Add the presence proxy so...

Kamo·2mo ago
July 7, 2026
FeatureAPIService

Public passthrough for email OAuth provider callback

Forward GET **************** to EmailService sessionlessly (strips auth, no redirect following), mirroring the RingCentral OAuth callback. This is the fixed pub...

Kamo·2mo ago
July 3, 2026
June 26, 2026
June 13, 2026
June 10, 2026
FeatureAPIService

Public programmatic e-sign API gateway (API_SIGNATURE scope)

Add /api/public/esign/** to PublicApiController: validates the org API key, requires the API_SIGNATURE scope, rate-limits, and forwards to ESigService's interna...

Kamo·3mo ago
April 30, 2026
FeatureAPIService

Proxy support-message translate endpoint

Adds a passthrough route for the new MediaService endpoint that translates a single support-chat message into the visitor's URL locale. The marketing-side chat ...

Kamo·5mo ago
April 29, 2026
CIAPIService

Scope concurrency to build jobs, not Kubernetes deploys

Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...

Kamo·5mo ago
ChoreAPIService

Trigger CI/CD pipeline

Kamo·5mo ago
April 27, 2026
FixAPIService

Carve /api/voip/recordings/** out of the wildcard VOIP forwarder

The /api/voip/** catch-all in APIGatewayController was shadowing the dedicated VoipRecordingUploadController POST /api/voip/recordings/upload mapping when Sprin...

Kamo·5mo ago
FeatureAPIService

VoipRecordingUploadController for kamo-asterisk-support uploads

POST /api/voip/recordings/upload accepts multipart bodies from kamo-asterisk-support running on FreePBX hosts. Validates the X-Api-Key has the new VOIP_RECORDIN...

Kamo·5mo ago
April 26, 2026
FixAPIService

Raise file upload size limit to 500MB

Spring Boot defaults cap multipart parts at 1MB, causing background image uploads to fail with 500 in request.getParts(). Match SecurityService's existing 500MB...

Kamo·5mo ago
April 25, 2026
FixAPIService

Move CORS to Traefik via kamo-middlewares, remove in-app CorsFilter

The CorsFilter @Bean in the Spring app was silently not applying headers after WebConfig.java was removed. CORS is now handled entirely at the Traefik layer by ...

Kamo·5mo ago
FixAPIService

Remove duplicate CorsFilter and strip upstream CORS headers in gateway

WebConfig.java defined a second CorsFilter bean competing with CorsConfig.java's bean, risking duplicate header writes. Deleted it so only one CorsFilter exists...

Kamo·5mo ago
April 21, 2026
FixAPIService

Set application/json for JSON bodies forwarded to SecurityService

RestTemplate to upstream could leave Content-Type incompatible with Spring @RequestBody, causing 415. After reading the raw body, force APPLICATION_JSON when th...

Kamo·5mo ago
April 19, 2026
April 17, 2026
FeatureAPIService

Add Stripe webhook forwarding and billing API gateway routing

- POST /api/billing/webhooks/stripe receives Stripe webhooks and forwards to BillingService with Stripe-Signature header preserved - /api/billing/** gateway r...

Kamo·5mo ago
April 16, 2026
CIAPIService

Add concurrency group to prevent duplicate workflow runs

When a push triggers a workflow and workflow_dispatch is also fired (or two pushes arrive in quick succession), both runs would execute simultaneously. Adding a...

Kamo·5mo ago
FeatureAPIService

Add public lead intake endpoint for 3rd-party lead submission

Adds LeadIntakePublicController at /api/public/lead-intake/{token} that accepts lead data in any format (JSON, form-urlencoded) from 3rd-party vendors and forwa...

Kamo·5mo ago
April 12, 2026
RevertAPIService

Remove incorrectly added esig gateway route

Kamo·5mo ago
FeatureAPIService

Add /api/esig/** gateway routing to ESigService

Route all /api/esig/** requests through the existing API gateway to the dedicated ESigService (kamowsesig-service) instead of the non-existent proxy target. Add...

Kamo·5mo ago
April 11, 2026
FixAPIService

Validate Forgejo HMAC-SHA256 signature instead of plain secret header

Forgejo sends webhook secret as X-Gitea-Signature / X-Forgejo-Signature HMAC-SHA256 hash, not as a plain header value. Read body, verify HMAC, then forward to S...

Kamo·5mo ago
FeatureAPIService

Expose changelog webhook through APIService with secret key auth

Adds POST /api/changelog/webhook route that validates *** header before forwarding to SecurityService. Secret configured via CHANGELOG_WEBHOOK_SECRET env var / ...

Kamo·5mo ago
April 4, 2026
FeatureAPIService

Enforce PUBLIC_WEBINAR scope on public webinar endpoints

Adds scope validation check before forwarding public webinar requests to MediaService, returning 403 if the API key lacks PUBLIC_WEBINAR scope.

Kamo·5mo ago
FeatureAPIService

Add webinar gateway routes for authenticated and public endpoints

Routes /api/webinar/** to MediaService for authenticated webinar operations and /api/public/webinar/** with API key validation for public scheduling and cancell...

Kamo·5mo ago
FixAPIService

Include SUBSCRIPTION_CATALOG in default scopes fallback

When MediaService doesn't return scopes in the validation response, default to including both PUBLIC_CHAT and SUBSCRIPTION_CATALOG scopes. This ensures public c...

Kamo·5mo ago
April 1, 2026
FeatureAPIService

Add public chat gateway with API key validation, rate limiting, and WebSocket proxy

Adds public chat endpoints at /api/public-chat/** for anonymous website chat. Includes API key validation (SHA-256 hashed, Redis-cached), per-key and per-IP rat...

Kamo·6mo ago
March 29, 2026
FixAPIService

Use getServerName() instead of getHeader(Host) for original host resolution

ForwardedHeaderFilter consumes X-Forwarded-Host and adapts getServerName() accordingly, while getHeader(Host) returns the raw HTTP Host which may be a K8s inter...

Kamo·6mo ago
FixAPIService

Use HTTP on port 80 for meet service URL to match other services

The HTTPS endpoint on 8443 causes SSL cert mismatch when routing through K8s internal DNS. All other services use HTTP on port 80.

Kamo·6mo ago
March 28, 2026
ChoreAPIService

Trigger build

Kamo·6mo ago
ChoreAPIService

Rebuild for MEET COMPLETED stage

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