Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

17,987
Total Changes
4,647
Features
4,558
Fixes
32
Projects
Filter by project
All Projects17,987AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService386InitializerService302KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,528TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,600kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,328kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,647Fix4,558Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
November 7, 2025
Fixkamo-internal

Auto-scroll chat to bottom on load and new messages

Track previous message count and scroll smoothly when new messages arrive; scroll immediately on initial load or when un-minimizing

snadjafinia·10mo ago
November 6, 2025
Fixkamo-internal

Frontend WebSocket persistence - match backend timing and faster reconnect

Heartbeat: 4s -> 20s to match backend, reconnect delay: 5s -> 1s, add 30s connection timeout

snadjafinia·10mo ago
FixMediaService

WebSocket persistent connection with aggressive keepalive

Idle timeout set to 0, heartbeat 20s, disconnect delay 30s, match frontend timing

snadjafinia·10mo ago
Fixkamo-internal

Optimize softphone to fit all content without scrolling at 680px height

CHATBOX HEIGHT: 550px -> 680px (optimal balance) PHONE DISPLAY: Reduced minHeight (100/75 -> 85/65), padding (14/16 -> 12/14) CALL CONTROLS: All 9 buttons - p...

snadjafinia·10mo ago
Fixkamo-internal

Reduce ChatBox height to more comfortable 550px

Changed from 85% viewport (750-850px) to fixed 550px for better UX WebRTC call controls remain fully intact and functional

snadjafinia·10mo ago
Fixkamo-internal

Make softphone fully visible without scrolling - comprehensive compact layout

CHATBOX HEIGHT: - Changed from fixed 600px to 85% of viewport height - Uses Math.floor(window.innerHeight * 0.85) for responsive sizing - Provides much more ver...

snadjafinia·10mo ago
Fixkamo-internal

Eliminate horizontal scrollbars and increase softphone visibility

LAYOUT FIXES: - Increase DOCKED_HEIGHT from 480px to 600px for better vertical space - Add explicit width constraints (minWidth, maxWidth) to SoftphonePanel roo...

snadjafinia·10mo ago
Fixkamo-internal

Remove connected check and add debug logging for STOMP activation

STOMP client was not activating because connected check was preventing it. Added debug logs to diagnose.

snadjafinia·10mo ago
Fixkamo-internal

Activate STOMP client only after SockJS opens

Critical bug fix: STOMP client was being activated before SockJS opened, causing immediate disconnect. Now waits for SockJS onopen event before activating STOMP...

snadjafinia·10mo ago
Fixkamo-internal

Enable SockJS fallback transports for WebSocket connection

Allow xhr-streaming and xhr-polling as fallback if WebSocket upgrade fails.

snadjafinia·10mo ago
Fixkamo-internal

Remove invalid 'active' property check in useChatWebSocket

The Client type from @stomp/stompjs doesn't have an 'active' property. Removed the invalid check since client.activate() is called immediately after client crea...

snadjafinia·10mo ago
Fixkamo-internal

Wait for SockJS to open before activating STOMP client

- Fix race condition where STOMP client activated before SockJS connection was ready - Move client.activate() to SockJS onopen callback - This should fix immedi...

snadjafinia·10mo ago
FixMediaService

Hardcode SSL settings in ConfigMap for production

- Removed environment variable placeholders - Hardcoded port 8443, SSL enabled, keystore path - Fixes Spring Boot not resolving env vars correctly

snadjafinia·10mo ago
FixMediaService

Correct Spring Boot SSL environment variable names

- Changed SSL_ENABLED to SERVER_SSL_ENABLED - Changed SSL_KEY_STORE to SERVER_SSL_KEY_STORE - Changed SSL_KEY_STORE_PASSWORD to SERVER_SSL_KEY_STORE_PASSWORD - ...

snadjafinia·10mo ago
Fixkamo-internal

Route ALL WebRTC API requests to port 8443

- Updated all WebRTC API routes to use media.{domain}:8443 - No longer using Traefik for WebRTC endpoints - Matches media API and WebSocket configuration

snadjafinia·10mo ago
Fixkamo-internal

Route ALL MediaService requests to port 8443 (bypass Traefik)

- Updated all media API routes to use media.{domain}:8443 - No longer using Traefik for MediaService - Both API and WebSocket go direct to port 8443 - internal....

snadjafinia·10mo ago
November 5, 2025
FixMediaService

Use SSLHostConfig API for Tomcat SSL configuration

- Use SSLHostConfig and SSLHostConfigCertificate (correct Tomcat API) - Configure certificate via **************** - Fixes compilation errors with setAttribute/...

snadjafinia·10mo ago
FixMediaService

Use setProperty on protocol handler

snadjafinia·10mo ago
FixMediaService

Use setAttribute for Tomcat SSL configuration

- Changed from setKeystoreFile/Pass/Type/Alias to setAttribute - Tomcat 10+ uses setAttribute for SSL properties - Fixes compilation errors

snadjafinia·10mo ago
FixMediaService

Run MediaService on BOTH ports 80 (HTTP API) and 8443 (HTTPS WebSocket)

- Reverted service.yaml and ingressroute.yaml to use port 80 - Removed forced SERVER_PORT and SSL_ENABLED env vars - Added DualPortConfig to programmatically ad...

snadjafinia·10mo ago
Fixkamo-internal

Connect to port 8443 (external) which routes to NodePort 30843

- Router forwards external 8443 to k1m1 NodePort 30843 - Browser uses media.kamocrm.com:8443 - Internal NodePort is 30843 (Kubernetes valid range)

snadjafinia·10mo ago
FixMediaService

Use NodePort 30843 instead of hostPort for WebSocket

- hostPort may be blocked by firewall rules - NodePort 30843 is in valid range (30000-32767) - Browser connects to external port 8443 - Router forwards 8443 -> ...

snadjafinia·10mo ago
FixMediaService

Add SSL configuration to k8s ConfigMap

- ConfigMap was missing SSL config from application.yml - Added server.ssl settings with environment variable support - Matches local application.yml configurat...

snadjafinia·10mo ago
FixMediaService

Use hostPort instead of NodePort for 8443

- NodePort range is 30000-32767, cannot use 8443 - Use hostPort to bind directly to host port 8443 - Removed service-websocket.yaml

snadjafinia·10mo ago
Fixkamo-internal

Remove WebSocket-only transport restriction for HTTP/2 compatibility

- Browser WebSocket API doesn't support HTTP/2 (RFC 8441 not implemented) - Native WebSocket requires HTTP/1.1 Upgrade which fails over HTTP/2 - Let SockJS auto...

snadjafinia·10mo ago
FixMediaService

Use explicit Host() for /ws route to enable TLSOption

- Changed /ws route from HostRegexp to Host(media.kamocrm.com) - TLSOption can only be applied to explicit hosts (not regex) - ALPN negotiation happens during T...

snadjafinia·10mo ago
FixMediaService

Force HTTP/1.1 for MediaService ONLY via TLSOption

- Created media-tls-http1 TLSOption with alpnProtocols: [http/1.1] - Referenced ONLY in media-route IngressRoute - Does not affect other Traefik routes - Fixes ...

snadjafinia·10mo ago
FixMediaService

Separate /ws route for WebSocket, keep HTTP/2 for API

- Added two routes: /ws for WebSocket (higher priority), rest for API - Only /ws uses media-websocket-transport (HTTP/2 disabled) - API routes can use HTTP/2 fo...

snadjafinia·10mo ago
FixMediaService

Use Host() instead of HostRegexp() for media-route

- Simplified to Host(media.kamocrm.com) - Avoids regex escaping issues with backticks - Tests show route is working with simple Host match

snadjafinia·10mo ago
FixMediaService

Force HTTP/1.1 via TLSOption for WebSocket compatibility

- Created TLSOption to disable HTTP/2 ALPN negotiation - Forces browsers to use HTTP/1.1 for media.kamocrm.com - WebSocket upgrades require HTTP/1.1 protocol - ...

snadjafinia·10mo ago
FixKlusterServices

Disable idle timeout for WebSocket connections

- Added idleTimeout=0 to websecure entrypoint - Prevents Traefik from closing WebSocket connections due to inactivity - Fixes SockJS WebSocket timeout issues

snadjafinia·10mo ago
Fixkamo-internal

Use WebSocket-only transport (disable XHR polling)

- Changed SockJS transports from [websocket, xhr-streaming, xhr-polling] to [websocket] - Removes fallback to XHR polling - Forces pure WebSocket connection - F...

snadjafinia·10mo ago
Fixkamo-internal

Remove explicit namespace reference from kamowsmedia-service

- Both services are in same namespace (kamo) - Explicit namespace reference not needed - Avoids potential cross-namespace issues

snadjafinia·10mo ago
Fixkamo-internal

Remove /ws rewrite from next.config (handled by Traefik)

- Removed Next.js rewrite for /ws paths - WebSocket routing now handled at Traefik IngressRoute level - Traefik routes internal.kamocrm.com/ws -> MediaService d...

snadjafinia·10mo ago
Fixkamo-internal

Route /ws requests directly to MediaService via Traefik

- Added dedicated route for /ws paths in IngressRoute - Routes internal.kamocrm.com/ws -> MediaService directly - Uses same ServersTransport as media-route for ...

snadjafinia·10mo ago
Fixkamo-internal

Allow /ws WebSocket endpoints without auth redirect

- Added /ws path to middleware bypass - SockJS needs to connect to /ws/info without redirect - WebSocket connections will still have *** cookie - Fixes WebSocke...

snadjafinia·10mo ago
Fixkamo-internal

Change WebSocket connection to same-origin

- Changed from media.kamocrm.com to same origin (internal.kamocrm.com) - Avoids cross-origin WebSocket connection issues - Added Next.js rewrite rule to proxy /...

snadjafinia·10mo ago
FixMediaService

Remove @kubernetescrd suffix from serversTransport reference

- Traefik error: cross-namespace format not allowed when crossnamespace disabled - IngressRoute and ServersTransport are in same namespace (kamo) - Use simple n...

snadjafinia·10mo ago
Fixkamo-internal

Remove invalid coder property from getDisplayMedia

- Using simple video: true for screen sharing - Build should now succeed

snadjafinia·10mo ago
Fixkamo-internal

Resolve build error - replace PhoneOff with CallEnd

- PhoneOff icon doesn't exist in @mui/icons-material - Using CallEnd which is the correct MUI icon - Removed unused duplicate files (ChatBoxWithWebRTC, VideoCal...

snadjafinia·10mo ago
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·10mo 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·10mo 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·10mo ago
FixMediaService

Use full Kubernetes CRD provider name for ServersTransport reference

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

snadjafinia·10mo 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·10mo 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·10mo 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·10mo 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·10mo 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·10mo 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·10mo ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing