Add premium enterprise features - Analytics, CRM, AI Assistant, Advanced
ANALYTICS DASHBOARD - Real-time call metrics with interactive charts CRM INTEGRATION - Customer data, lifetime value, activity tracking AI ASSISTANT - Sentime...
Implement 100% enterprise VoIP desk phone features
Complete implementation of 100+ features matching Cisco 8800, Polycom VVX 600, Yealink T58A 7 Tabs: Dialpad, Speed Dial/BLF, History, Voicemail, Contacts, Queu...
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...
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...
Elevate softphone to enterprise-grade with premium features
ENTERPRISE FEATURES: - Call Recording with visual indicator and pulsing animation - Call Transfer functionality for seamless handoffs - Call Notes with expandab...
Add expandable softphone panel to ChatBox
- Add PhoneInTalk icon button to ChatBox header for softphone toggle - Create comprehensive SoftphonePanel component with full UI - Implement dialpad with 0-9, ...
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.
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...
Activar os transportes de retorno do SockJS para a ligação WebSocket
Permitir xhr-streaming e xhr-polling como backback se a atualização do WebSocket falhar.
Enhance ChatBox with dynamic color system and increased height
- Increase message viewing area by 33% (DOCKED_HEIGHT: 360 -> 480) - Create ChatBoxStyles.tsx with dynamic CSS variable-based color system - Apply primary color...
Modernize o design ChatBox com polimento profissional
- Implementar fundo branco limpo com gradientes cinza sutis - Adicionar personalizado styling barra de rolagem integrado com esquema de cores primárias - Melhor...
Remover a verificação de propriedade 'activa' inválida no usoChatWebSocket
O tipo Cliente de @stomp/stompjs não tem uma propriedade 'ativa'. Removido a verificação inválida desde client.activate() é chamado imediatamente após a criação...
Aguarde que o SockJS abra antes de ativar o cliente STOMP
- Corrigir condição de corrida onde o cliente STOMP ativado antes da conexão SockJS estava pronto - Mover client.activate() para SockJS open callback - Isto dev...
Add TomcatConnectorCustomizer to force SSL keystore config
- Spring Boot's application.yml SSL config not being applied - Use TomcatConnectorCustomizer to programmatically set keystore - Forces connector to use /etc/ssl...
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
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 - ...
Roteie TODAS as solicitações de API WebRTC para a porta 8443
- Atualizado todas as rotas da API WebRTC para usar mídia.{domínio}:8443 - Não utilizar mais Traefik para os objectivos WebRTC - Corresponde à API de mídia e à ...
Route ALL MediaService requests to port 8443 (bypass Traefik)
- Atualizou todas as rotas da API de mídia para usar mídia.{domínio}:8443 - Não mais usando Traefik para MediaService - API e WebSocket vão diretamente para a p...
Simplify to HTTPS:8443 only, remove dual port config
- MediaService runs ONLY on port 8443 (HTTPS) - No more Traefik routing for MediaService - Removed DualPortConfig complexity - All traffic (API + WebSocket) goe...
Use SSLHostConfig API for Tomcat SSL configuration
- Use SSLHostConfig and SSLHostConfigCertificate (correct Tomcat API) - Configure certificate via **************** - Fixes compilation errors with setAttribute/...
Use setAttribute for Tomcat SSL configuration
- Changed from setKeystoreFile/Pass/Type/Alias to setAttribute - Tomcat 10+ uses setAttribute for SSL properties - Fixes compilation errors
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...
Conectar à porta 8443 (externa) que leva a NodePort 30843
- Roteador avança exterior 8443 para k1m1 NodePort 30843 - Navegador usa media.kamocrm.com:8443 - NodePort interno é 30843 (gama válido Kubernetes)
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 -> ...
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...
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
Conectar à porta MediaService 8443 para WebSocket
- Conexão atualizada WebSocket para usar media.kamocrm.com:8443 - Bypasses Traefik para tráfego WebSocket - Usa conexão HTTPS/HTTP1.1 direta ao MediaService - A...
Expose MediaService on port 8443 for WebSocket over HTTPS/HTTP1.1
- Added NodePort service on 8443 for direct WebSocket access (bypasses Traefik) - Mount wildcard-kamocrm-com SSL certificate - Init container converts PEM to PK...
Remover a restrição de transporte somente do WebSocket para compatibilidade HTTP/2
- Navegador WebSocket API não suporta HTTP/2 (RFC 8441 não implementado) - WebSocket nativo requer HTTP/1.1 Atualização que falha em HTTP/2 - Deixe o SockJS sel...
Restore HTTP/2 for WebSockets (RFC 8441 support)
- WebSockets CAN work over HTTP/2 via RFC 8441 - Removed TLSOption (not needed) - Removed ServersTransport reference (let HTTP/2 work) - Restored simple domain-...
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...
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 ...
Revert "fix(traefik): disable idle timeout for WebSocket connections"
This reverts commit ****************
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...
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
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 - ...
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
Usar o transporte WebSocket-only (desativar as sondagens XHR)
- Transporte alterado do SockJS de [websocket, xhr-streaming, xhr-polling] para [websocket] - Remove o retorno às sondagens XHR - Força conexão WebSocket pura -...
Add CORS middleware to media-route for cross-origin WebSocket
- Added cors middleware to allow cross-origin connections - Enables WebSocket connections from internal.* to media.* - Allows all origins, methods, and headers ...
Conecte WebSocket diretamente para media.kamocrm.com
- Revertida para a abordagem original: conecte-se diretamente ao subdomínio media.* - Complexidade desnecessária da mesma origem removida - Removido /ws bypass ...
Remover a referência explícita do espaço de nomes do serviço kamowsmedia
- Ambos os serviços estão no mesmo espaço de nomes (kamo) - Referência explícita do espaço de nomes não necessária - Evita potenciais problemas de espaço entre ...
Remover /ws reescrever do próximo. configuração (manejada por Traefik)
- Removido Next.js reescrita para /ws caminhos - Roteamento WebSocket agora manipulado a nível Traefik IngressRoute - Rotas Traefik internal.kamocrm.com/ws -> M...
Rota /ws solicitações diretamente para MediaService via Traefik
- Adicionado rota dedicada para /ws caminhos em IngressRoute - Rotas internal.kamocrm.com/ws -> MediaService diretamente - Usa os mesmos ServidoresTransportes c...
Permitir terminais WebSocket /ws sem redirecionamento de autenticação
- Added /ws path to middleware bypass - SockJS precisa se conectar a /ws/info sem redirecionamento - As conexões WebSocket ainda terão *** cookie - Corrige prob...
Como o que vês no transporte?
Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.