KamoCRM

Live Change Log

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

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
August 20, 2026
FeatureAPIService

Forward the tracking beacon to MediaService

Clones forwardPublicWebinar rather than the generic forward(): that method prints every URI, header map and body length to stdout with no level, and a visitor b...

Kamo·2mo ago
August 10, 2026
ChoreAPIService

Rebuild against shared-library @Lob LONGVARCHAR fix

Hibernate's PostgreSQL dialect read @Lob String columns as OIDs via getLong(). Affects notes, contacts, calendar, OAuth tokens, IMAP passwords, email campaign b...

Kamo·2mo ago
FeatureAPIService

Point at YugabyteDB and use PostgreSQLDialect

CockroachDB has been replaced by YugabyteDB. Connection strings move from cockroachdb-public:26257 to yb-tserver-service:5433, and the Hibernate dialect from **...

Kamo·2mo ago
August 9, 2026
CIAPIService

Mirror Maven Central through the Google GCS copy

Every Docker stage starts from a cold ~/.m2 and refetches the whole dependency tree, so Central sees the full weight of every concurrent service build. It answe...

Kamo·2mo ago
August 7, 2026
FixAPIService

Encode the decoded token exactly once on the way upstream

21670e5 routed SocialWebhookController through UpstreamUri's FULLY-PRE-ENCODED entry point, but its URL is a hybrid: `token` is an @PathVariable, so Spring hand...

Kamo·2mo ago
FixAPIService

Forward the caller's query bytes on the public-facing proxies

The gateway stopped double-encoding forwarded query strings in 3c24d32, but four other proxies in this service still concatenated already-percent-encoded bytes ...

Kamo·2mo ago
FixAPIService

Forward the caller's query bytes instead of encoding them twice

Every URL this gateway builds is assembled from getRequestURI() and getQueryString() — both already percent-encoded — and was then handed to RestTemplate as a S...

Kamo·2mo ago
August 5, 2026
FeatureAPIService

Enforce tenant access rules at the gateway

This filter has been inert since it was written. resolveOrgId read org:domain:<host> from Redis, nothing ever wrote that key, and the null return fell through t...

Kamo·2mo ago
FeatureAPIService

Route the meeting provider OAuth callback

Zoom and Microsoft redirect the browser to this gateway after an org authorises Kamo's app. The popup lands here with no tenant session — the org travels in ?st...

Kamo·2mo ago
August 3, 2026
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·2mo ago
July 19, 2026
FeatureAPIService

Proxy the public AI->human handoff route

Adds POST **************** proxied to MediaService alongside its createSupportSession sibling. Without this the handoff feature was dead on arrival: MediaServi...

Kamo·3mo ago
July 16, 2026
FeatureAPIService

Route /api/email + /api/support through the api host

(EmailService) and Support (MediaService, same upstream as /api/media) were unrouted → 404. Add both forwards and fix email.service.url from a localhost default...

Kamo·3mo ago
FeatureAPIService

GET /api/public-chat/bootstrap gateway route

Add bootstrap endpoint that reuses the existing proxyWithAuth pipeline (key validation + opt-in origin + PUBLIC_CHAT scope + rate-limit + X-Public-Chat-Key-Hash...

Kamo·3mo ago
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·3mo 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·3mo 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·3mo 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·3mo 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·3mo 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·4mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo ago
April 12, 2026
RevertAPIService

Remove incorrectly added esig gateway route

Kamo·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo 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·6mo ago
April 1, 2026

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