Live Change Log

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

17,876
Total Changes
4,587
Features
4,517
Fixes
32
Projects
Filter by project
All Projects17,876AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService352InitializerService299KBService74KlusterServices542MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,557kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,587Fix4,517Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
April 30, 2026
FixMediaService

Raise client read timeout to 120s for long messages

LibreTranslate runs CPU-only argos models — a paragraph-length chat message takes 20-30s to translate, and longer ones can push past 60s. The 8-second read time...

Kamo·4mo ago
April 26, 2026
FixMediaService

Track public support chat by session GUID in Redis

Marketing visitors use /ws/public-chat-native without memberId; tickets still reference the org placeholder member as requestor. Increment PRESENCE_PUBLIC keys ...

Kamo·4mo ago
April 25, 2026
FixMediaService

Expand JPA repository scan to include commerce package

The new kamo-shared-library brings in **************** which requires **************** (in com.kamo.z.shared.commerce). MediaService only scanned donotmodify.da...

Kamo·4mo ago
FixMediaService

Restore HashMap import in ChatWebSocketController

The previous refactor removed the HashMap import but the handleTyping method still constructs a HashMap for the typing event payload, causing the Forgejo build ...

Kamo·4mo ago
FixMediaService

Proactively create NATS consumer at session creation to prevent message loss

Previously the NATS JetStream push consumer was only created when a STOMP client sent /app/chat/subscribe. With DeliverPolicy.New, any messages published before...

Kamo·4mo ago
April 21, 2026
FixMediaService

Relay theme provision from core NATS

Match SecurityService core publish: subscribe with Dispatcher on security.theme.provision.* instead of JetStream (stream only covers chat).

Kamo·4mo ago
April 20, 2026
FixMediaService

Use PublicChatVisitor displayName for requestorName on visitor tickets

Visitor-initiated tickets hardcode requestor to the org system member, so the DTO was surfacing the org owner's name in the Requestor column. Fall back to the P...

Kamo·4mo ago
FixMediaService

Build error in GeoLookupService and add NATS publish for agent messages

- Fix Optional vs List type mismatch in **************** - Inject NatsMessageService into MediaController - Publish to chat.session.{guid} after agent creates a...

Kamo·4mo ago
FixMediaService

Real-time chat delivery, message sides, notifications, and name sync

- Keep NATS subscription alive on client unsubscribe to avoid breaking agent real-time delivery - Tag visitor messages with messageType=VISITOR_MESSAGE in getMe...

Kamo·4mo ago
FixMediaService

Tag visitor messages as VISITOR_MESSAGE type, add senderName to GET messages

- PublicChatService: set messageType=VISITOR_MESSAGE so frontend can distinguish visitor echoes from agent responses on the STOMP topic - MediaController.getM...

Kamo·4mo ago
FixMediaService

Three support/chat issues — NATS relay, auto-popup, topic fallback

1. Switch SupportNotificationService and SupportStompRelayController from JetStream to core NATS — the CHAT_MESSAGES stream only covers chat.> so JetStrea...

Kamo·4mo ago
FixMediaService

Write contact form description as chat message on public ticket creation

The description was only stored on the ticket entity and never appeared in the chat window. Added writeTextMessage() helper and call it after the system event s...

Kamo·4mo ago
April 18, 2026
FixMediaService

Bump kamo-shared-library to 1.4.0

Kamo·4mo ago
April 4, 2026
FixMediaService

Add debug logging and robust rights parsing for webinar controller

Adds info/warn logging for session data and rights on POST /types to diagnose 403 errors. Also adds fallback parsing for rights stored as JSON strings in Redis ...

Kamo·5mo ago
March 30, 2026
FixMediaService

Resolve org theme backgrounds not appearing in meet virtual backgrounds

- Add domain-based theme URL resolution for internal K8s service-to-service calls - getPublicBackgrounds now accepts optional domain param to derive correct the...

Kamo·5mo ago
FixMediaService

Upload meet backgrounds to public MinIO bucket with hash-based naming

Was uploading to private 'imaging-meet-recordings' bucket via **************** which caused: - MinIO region mismatch errors on the primary node - Connection tim...

Kamo·5mo ago
March 29, 2026
FixMediaService

Return serialization-safe Maps instead of raw JPA entities in MeetConfigController

All config/background endpoints were returning raw JPA entities with @ManyToOne(fetch=LAZY) Organization references. Jackson failed to serialize the Hibernate p...

Kamo·5mo ago
FixMediaService

Remove duplicate endpoints from MeetController, add org-themes to MeetConfigController

MeetConfigController already handled config/background endpoints. The duplicate endpoints in MeetController caused ambiguous mapping. Added org-theme background...

Kamo·5mo ago
FixMediaService

Update health probes to HTTP port 80 to match new server config

Startup, readiness, and liveness probes were still pointing to port 8443 with HTTPS scheme, causing pod restart loops.

Kamo·5mo ago
FixMediaService

Switch MediaService to HTTP port 80 — TLS termination at Traefik

Internal cluster traffic doesn't need HTTPS. Traefik handles TLS for external clients. This aligns MediaService with all other services.

Kamo·5mo ago
FixMediaService

Send chat invites to correct WebSocket topic /topic/chat/incoming/{memberId}

Was publishing to /topic/chat/member/{id} but kamo-internal subscribes to /topic/chat/incoming/{id}. Also fixed Member entity field access **************** inst...

Kamo·5mo ago
March 19, 2026
FixMediaService

Add voip.> to NATS stream subjects and handle IllegalStateException in VoipStompRelayController

The NATS stream only covered chat.> so subscribing to voip.> threw IllegalStateException ([SUB-90007] No matching streams). Added voip.> to the stream subjects ...

Kamo·5mo ago
March 11, 2026
FixMediaService

Accept *** from query param for cross-subdomain WebSocket auth

Read *** ID from ?***= query parameter first, falling back to cookie. This allows the frontend on internal.kamocrm.com to authenticate WebSocket connections to ...

Kamo·6mo ago
FixMediaService

Handle stale NATS consumer binding with unique consumer retry

- Extract message handler into createNatsMessageHandler() method - Add retry logic with unique consumer name when "Consumer already bound" error occurs after ...

Kamo·6mo ago
March 10, 2026
FixMediaService

Route WebSocket through Traefik on port 443

- service.yaml: fix port 80→8443 to match pod's actual listen port - ingressroute.yaml: use scheme https + port 8443 for backend - serverstransport.yaml: add in...

Kamo·6mo ago
FixMediaService

Use cluster-internal DNS for NATS connection

Change default NATS URL from WireGuard IPs (100.64.x.x) to nats.kamo.svc.cluster.local for the local server. Remote nodes (k0m1, k2m1) remain on WireGuard IPs.

Kamo·6mo ago
December 23, 2025
FixMediaService

Make TLS certificate optional in MediaService deployment

- Add optional: true to wildcard-kamocrm-com secret volume - Update cert-converter init container to handle missing certificate gracefully

snadjafinia·8mo ago
December 12, 2025
December 1, 2025
November 30, 2025
FixMediaService

Add WebSocket middleware and ServersTransport to IngressRoute

- Added media-websocket-upgrade middleware for WebSocket upgrade headers - Added media-websocket-transport to disable HTTP/2 (WebSocket requires HTTP/1.1) - Thi...

snadjafinia·9mo ago
FixMediaService

WebSocket live message delivery - disable ChatMessageHandler subscription, enhance logging

- Disabled ChatMessageHandler subscription to chat.session.> that was consuming messages without forwarding to WebSocket - Enhanced WebSocketConfig logging to t...

snadjafinia·9mo ago
November 6, 2025
FixMediaService

WebSocket persistent connection with aggressive keepalive

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

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
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

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