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
November 5, 2025
FixKlusterServices

Split port ranges to avoid conflicts

- Coturn relay: 52000-65535 (13,536 ports) - Avoids: Janus RTP (10000-49151) and WireGuard (51820-51821) - No overlap between services

snadjafinia·11mo ago
FixKlusterServices

Adjust relay port range to avoid WireGuard/VPN ports

- Changed max-port from 65535 to 51800 to avoid conflicts - Avoids WireGuard on UDP 51820 and other VPN services on 51821 - Provides 2,649 ports (49152-51800) f...

snadjafinia·11mo ago
FixKlusterServices

Resolve CrashLoopBackOff by fixing probes and config

- Replace netstat-based health probes with TCP socket checks (netstat not available in coturn/coturn:latest Alpine image) - Remove conflicting no-stdout-log dir...

snadjafinia·11mo ago
FixMediaService

Use full Kubernetes CRD provider name for ServersTransport reference

Traefik requires the @kubernetescrd suffix when referencing CRD resources like ServersTransport.

snadjafinia·11mo ago
FixMediaService

Simplify MediaService WebSocket IngressRoute configuration

Remove media-websocket-upgrade middleware that was forcing headers and causing WebSocket handshake issues. Traefik automatically handles WebSocket upgrade when ...

snadjafinia·11mo ago
Fixkamo-internal

Skip WebSocket transport in SockJS to avoid HTTP/2 issues

- Use xhr-streaming and xhr-polling transports instead of websocket - These transports work with both HTTP/1.1 and HTTP/2 without requiring WebSocket upgrades -...

snadjafinia·11mo ago
FixMediaService

Add end anchor to WebSocket path regex pattern

- Add $ to end of PathRegexp to ensure exact match - Fixes regex parsing error in Traefik - /ws/info is now working (200 OK) but WebSocket upgrade route needs p...

snadjafinia·11mo ago
FixMediaService

Only apply WebSocket upgrade middleware to actual WebSocket paths

- Change route match from PathPrefix(/ws/) to **************** - /ws/info is a regular HTTP request, not a WebSocket upgrade - Adding Upgrade header to /ws/info...

snadjafinia·11mo ago
FixKlusterServices

Add Connection: Upgrade header to WebSocket upgrade middleware

- Add Connection: Upgrade header along with Upgrade: websocket - Both headers are required for proper WebSocket upgrade handshake - This ensures HTTP/2 Extended...

snadjafinia·11mo ago
FixMediaService

Add separate route for WebSocket paths with upgrade middleware

- Create separate route matching /ws/** paths with media-websocket-upgrade middleware - This ensures Upgrade: websocket header is added for WebSocket upgrade re...

snadjafinia·11mo ago
FixMediaService

Use ServersTransport to disable HTTP/2 for WebSocket connections

- Create ServersTransport resource with disableHTTP2: true - Reference ServersTransport in IngressRoute service configuration - Remove invalid disableHTTP2 fiel...

snadjafinia·11mo ago
FixMediaService

Disable HTTP/2 for MediaService backend connection

- Add disableHTTP2: true to force HTTP/1.1 for backend connections - HTTP/2 Extended CONNECT is not properly converting Upgrade header - WebSocket upgrades requ...

snadjafinia·11mo ago
FixMediaService

Configure IngressRoute service scheme for WebSocket support

- Set scheme: http to ensure proper HTTP/1.1 handling for WebSocket upgrades - HTTP/2 Extended CONNECT needs proper conversion to HTTP/1.1 Upgrade header - This...

snadjafinia·11mo ago
FixMediaService

Remove invalid handshake handler and fix SockJS configuration

- Remove invalid DefaultHandshakeHandler override (method doesn't exist) - Remove invalid setSupressCors call (method doesn't exist) - Keep HttpSessionHandshake...

snadjafinia·11mo ago
FixMediaService

Add WebSocket handshake logging and SockJS configuration

- Add handshake handler and interceptor logging to diagnose WebSocket connection issues - Configure SockJS to suppress CORS (handled by Spring Security) and dis...

snadjafinia·11mo ago
Fixkamo-internal

Configure SockJS transports to handle HTTP/2 WebSocket upgrade issues

- Explicitly configure SockJS transport order to prefer WebSocket, then fallback to xhr-streaming/xhr-polling - HTTP/2 WebSocket upgrades may fail, so SockJS wi...

snadjafinia·11mo ago
FixMediaService

Remove media-cors middleware from IngressRoute to allow WebSocket connections

- media-cors middleware was clearing CORS headers which interfered with WebSocket upgrades - WebSocket connections require direct pass-through without header mo...

snadjafinia·11mo ago
November 4, 2025
FixMediaService

Remove invalid Spring Security pattern /ws/**/info

- PatternParseException: No more pattern data allowed after {*...} or ** - /ws/** already covers all paths under /ws including /ws/info - This was causing 500 e...

snadjafinia·11mo ago
FixMediaService

Apply media-cors middleware to MediaService IngressRoute

- Apply media-cors middleware to allow CORS headers for WebSocket connections - Matches the pattern used for theme domains

snadjafinia·11mo ago
FixMediaService

Explicitly permit OPTIONS requests for CORS preflight

- Add explicit permit for OPTIONS method on all paths - Add explicit permit for /ws/info endpoint (SockJS handshake) - This ensures CORS preflight requests reac...

snadjafinia·11mo ago
FixMediaService

Make CORS configuration more permissive for WebSocket connections

- Explicitly handle '*' wildcard for origins, methods, and headers - Add WebSocket-related headers to exposed headers - Add logging to verify CORS configuration...

snadjafinia·11mo ago
FixMediaService

Add logging and configure SockJS heartbeat/disconnect settings

- Add logging to verify WebSocket endpoint registration - Configure SockJS heartbeat and disconnect delay - This should help diagnose why SockJS handshake isn't...

snadjafinia·11mo ago
Fixkamo-internal

Ensure messages route is recognized by Next.js

- Added logging to verify route is being hit - Route file exists and structure is correct for Next.js 15

snadjafinia·11mo ago
Fixkamo-internal

Remove non-existent 'active' property from STOMP Client logging

- STOMP Client doesn't have an 'active' property - Only check 'connected' property which is the correct state indicator

snadjafinia·11mo ago
Fixkamo-internal

Remove unsupported onWebSocketError handler from STOMP client

- onWebSocketError is not a valid property in ClientOptions - SockJS error handlers (onerror, onclose) already provide error handling

snadjafinia·11mo ago
Fixkamo-internal

Improve connection timeout handling with ref cleanup

snadjafinia·11mo ago
Fixkamo-internal

Add comprehensive WebSocket error handling and logging

- Added SockJS error handlers (onopen, onerror, onclose) to catch connection failures - Added connection timeout detection (10 seconds) to identify silent failu...

snadjafinia·11mo ago
FixMediaService

Remove duplicate WebSocket endpoint registration and improve logging

- Removed duplicate /ws endpoint registration (SockJS already handles native WebSocket) - Added null check for payload in subscribeToSession - This may fix WebS...

snadjafinia·11mo ago
FixMediaService

Remove invalid Spring Security path pattern /ws/**/websocket

- Spring Security does not allow path segments after /** pattern - /ws/** already matches all paths under /ws including websocket endpoints - This fixes Pattern...

snadjafinia·11mo ago
Fixkamo-internal

Remove incorrect HTTPS agent workaround

- Reverted changes that bypassed certificate validation - Certificates are issued by auto-cert service (Let's Encrypt), not self-signed - Need to investigate wh...

snadjafinia·11mo ago
Fixkamo-internal

Use HTTPS with agent that accepts self-signed certificates

- Reverted to always use HTTPS (not HTTP) - Added HTTPS agent with rejectUnauthorized: false for self-signed certs - This allows server-side Next.js routes to c...

snadjafinia·11mo ago
Fixkamo-internal

Use Kubernetes service name for MediaService to avoid SSL cert issues

- Server-side Next.js routes now use **************** - This avoids self-signed certificate errors when connecting to https://media.kamocrm.com - Client-side re...

snadjafinia·11mo ago
Fixkamo-internal

Remove old /api/security/media/ routes that were intercepting requests

- Old routes were forwarding to APIService which no longer has media endpoints - All media requests should go through /api/media/ routes directly to MediaServic...

snadjafinia·11mo ago
Fixkamo-internal

Add actions/checkout@v4 to deploy_k1m1 job as well

snadjafinia·11mo ago
Fixkamo-internal

Revert to actions/checkout@v4 to match other Next.js projects

- Remove complex manual checkout logic that was causing hangs - Use standard actions/checkout@v4 like kamo-login and kamo-register - Simplify Docker build conte...

snadjafinia·11mo ago
Fixkamo-internal

Use shallow clone with timeout to prevent hanging

- Use --depth 1 for faster cloning - Add timeout (120s for shallow, 300s for full) - Fallback to full clone if shallow fails - Fetch specific commit if needed a...

snadjafinia·11mo ago
Fixkamo-internal

Change to valid directory before git clone to avoid working directory error

- Change to /tmp or / before removing/cloning workspace - Only remove directory if it exists but is not a git repo - Prevents 'Unable to read current working di...

snadjafinia·11mo ago
Fixkamo-internal

Use hardcoded repository URL and set GITHUB_WORKSPACE env var

- Use direct repository URL to avoid DNS/hostname resolution issues - Set GITHUB_WORKSPACE environment variable for subsequent steps - Use env var in Docker bui...

snadjafinia·11mo ago
Fixkamo-internal

Use git clone directly instead of relying on empty workspace

- Clone repository using git directly with repository URL - Handle both fresh clone and existing repository cases - Use working-directory for Docker build actio...

snadjafinia·11mo ago
Fixkamo-internal

Simplify all checkout steps - remove git operations that hang

- Remove git fetch/reset/clean from deploy jobs - Forgejo runner already has code checked out - Just verify GITHUB_WORKSPACE is valid

snadjafinia·11mo ago
Fixkamo-internal

Simplify checkout step - remove git clone that was hanging

- Remove git clone logic that was causing 20+ minute hangs - Forgejo runner already has code checked out, just verify directory - Remove unnecessary git fetch/r...

snadjafinia·11mo ago
Fixkamo-internal

Improve checkout and Docker build context handling

- Add proper repository cloning if not already checked out - Verify Dockerfile exists before building - Use absolute paths for Docker build context - Fix workin...

snadjafinia·11mo ago
Fixkamo-internal

Replace actions/checkout with manual git checkout to avoid DNS issues

- Replace actions/checkout@v4 with manual git checkout commands - Forgejo runner already has code checked out, just need to ensure clean state - Fixes DNS looku...

snadjafinia·11mo ago
FixSecurityService

Explicitly permit WebSocket endpoints in Spring Security

- Added explicit permitAll for /ws/** endpoints - WebSocket upgrade requests need explicit permission even in development mode - Fixes issue where WebSocket con...

snadjafinia·11mo ago
Fixkamo-shared-library

Search for existing chat sessions by participant membership, not just session owner

- Changed findOrCreateChatSession to search MediaSessionMember records instead of MediaSession.member - Now searches sessions where creator is a participant (me...

snadjafinia·11mo ago
FixSecurityService

Add detailed logging for message member ID retrieval

- Added logging to trace member ID for each message being returned - Logs member class name to detect proxy/stub issues - Logs distinct member IDs in response t...

snadjafinia·11mo ago
Fixkamo-shared-library

Add JOIN FETCH to eagerly load member in message queries

- Added JOIN FETCH m.member to both findBySessionAndIsRemovedFalse queries - Ensures member entity is eagerly loaded to avoid lazy loading issues - Fixes issue ...

snadjafinia·11mo ago
Fixkamo-shared-library

Automatically create NATS JetStream stream if it doesn't exist

- Added createStreamIfNotExists method to check and create the CHAT_MESSAGES stream - Stream is created with subjects from configuration (chat.>) - Fixes 'No ma...

snadjafinia·11mo ago
Fixkamo-internal

Extract large IDs from raw JSON to prevent JavaScript precision loss

- Extract memberID, userID, orgID, and securityOrgId from raw JSON string before parsing - Prevents precision loss for IDs > Number.MAX_SAFE_INTEGER (9007199254...

snadjafinia·11mo 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