Update leads page with LeadManager component matching doc manager layout
- Created LeadManager component similar to DocManager with lead-specific fields - Updated /leads/page.tsx to match doc manager layout with gradient header - Add...
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
Frontend WebSocket persistence - match backend timing and faster reconnect
Heartbeat: 4s -> 20s to match backend, reconnect delay: 5s -> 1s, add 30s connection timeout
Unified header design spanning both chat and softphone panels
REMOVED: Status bar from softphone (wifi, signal, time - unnecessary for web app) SHARED HEADER: Title bar now spans both softphone and chat when expanded LAY...
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...
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
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...
Enable SockJS fallback transports for WebSocket connection
Allow xhr-streaming and xhr-polling as fallback if WebSocket upgrade fails.
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...
Modernizează designul ChatBox cu poloneză profesională
- Implementeaza fundal alb curat cu gradienti gri subtili - Adăugaţi stil personalizat bara de defilare integrat cu schema de culori primare - Îmbunătățește bul...
Elimină verificarea nevalidă a proprietății "active" în utilizareChatWebSocket
Tipul Client de la @stomp/stompjs nu are o proprietate "activă." Eliminat cecul invalid deoarece clientul.activare() este numit imediat după crearea clientului.
Așteptați ca SockJS să se deschidă înainte de activarea clientului STOMP
- Fixaţi condiţia de cursă unde clientul STOMP activat înainte de conexiunea SockJS a fost gata - Mutare client.activare() la SockJS apel deschis - Acest lucru ...
Traseul ALL WebRTC API solicită portul 8443
- Actualizat toate rutele WebRTC API pentru a utiliza media. - Nu mai folosesc Traefik pentru criteriile finale WebRTC - Meciuri media API și configurare WebSoc...
Traseu TOATE cererile de servicii media la portul 8443 (pass Traefik)
- Actualizat toate rutele API media pentru a utiliza media. - Nu mai folosesc Traefik pentru MediaService - Atât API cât și WebSocket merge direct la portul 844...
Conectează-te la portul 8443 (extern) pe care se îndreaptă către NodePort 30843
- Router forwards extern 8443 to k1m1 NodePort 30843 - Browser folosește media.kamocrm.com:8443 - NodePort intern este 30843 (Raza Kubernetes valid)
Conectaţi-vă la portul MediaService 8443 pentru WebSocket
- Actualizare conexiune WebSocket pentru a utiliza media.kamocrm.com:8443 - Bypasses Traefik pentru traficul numai pe WebSocket - Foloseste conexiunea directa H...
Elimina restrictia de transport numai pe WebSocket pentru compatibilitate HTTP/2
- Browser WebSocket API nu suporta HTTP/2 (RFC 8441 nu este implementat) - WebSocket nativ necesită HTTP/1.1 Upgrade care nu reușește peste HTTP/2 - Să SockJS a...
Utilizați doar transportul WebSocket (dezactivează sondajele XHR)
- Transporturi SockJS modificate de la [websocket, xhr-streaming, xhr-polling] la [websocket] - Elimină retragerea la sondajul XHR - Forte conexiune WebSocket p...
Conectați WebSocket direct la media.kamocrm.com
- Reversed to original approach: conect to media.* subdomeniu direct - Eliminarea complexității inutile de aceeași origine - Eliminat /ws bypass din mijlocware ...
Elimină trimiterea explicită de namespace din kamowsmedia-service
- Ambele servicii sunt în același namespace (kamo) - Nu este nevoie de referinţă explicită de namespace - Evita potentiale probleme inter-namespace
Elimină /ws rescrie de la următoarea. config (handled by Traefik)
- Eliminat Next.js rescrie pentru /ws căi - rutare WebSocket acum manipulate la nivelul Traefik IngressRoute - Traefik routes intern.kamocrm.com/ws -> MediaServ...
Solicitări direct către MediaService via Traefik
- Adauga trasee dedicate pentru /ws trasee in IngressRoute - Trasee interne.kamocrm.com/ws -> MediaService direct - Foloseste aceleasi servere Transportare ca m...
Permite /ws WebSocket obiective fără redirecționare aut
- Calea Adăugat /ws la middleware bypass - SockJS trebuie să se conecteze la /ws/info fără redirecţionare - Conexiunile WebSocket vor avea în continuare *** coo...
Schimbă conexiunea WebSocket cu aceeași origine
- Schimbat de la media.kamocrm.com la aceeaşi origine (intern.kamocrm.com) - Evita problemele legate de conexiunea WebSocket - Adăugat Next.js rescrie regula pe...
Adaugă căi proxy API pentru criteriile de evaluare WebRTC
- Adăugat /api/webrtc/config proxy la MediaService - Adăugat /api/webrtc/token proxy pentru autentificare Janus - Adăugat /api/webrtc/call/inițiate, responde, e...
Elimină proprietatea coder invalid de la getDisplayMedia
- Folosind video simplu: adevarat pentru partajarea ecranului - Construcţia ar trebui să reuşească
Rezolvați eroarea de construire - înlocuiți TelefonOff cu CallEnd
- Pictograma telefonică nu există în @mui/icons-material - Folosind CallEnd care este pictograma MUI corectă - Elimină fișierele duplicate neutilizate (ChatBoxW...
Apel complet peer-to-peer WebRTC cu semnalizare
- Cârlig WEBRTC cu semnalizare completă - Semnalizare WebSocket integrata (oferte, raspunsuri, candidati ICE) - Adauga notificări de apel primite cu butoane ras...
Adaugă integrarea Janus WebRTC pentru apeluri audio/video
- Utilizarea adăugată JanusWebrTC cârlig pentru managementul apelurilor WebRTC - Added VideoCallPanel component for in-chat video show - Integrat cu ChatBox pen...
Restaurare WebSocket transport în SockJS
- Revenind la utilizarea transportului websocket (nu sondaje) - WebSockets sunt standard și ar trebui să funcționeze în mod corespunzător - Concentrează-te pe f...
Skip WebSocket transport în SockJS pentru a evita probleme HTTP/2
- Utilizați xhr-streaming și xhr-polling transporturi în loc de websocket - Aceste transporturi lucreaza atat cu HTTP/1.1 cat si cu HTTP/2 fara a necesita upgra...
Configurează transporturile SockJS pentru a gestiona problemele de actualizare HTTP/2 WebSocket
- Configurați explicit comanda de transport SockJS pentru a prefera WebSocket, apoi revenire la xhr-streaming / xhr-polling - upgrade-uri HTTP/2 WebSocket poate...
Asigurați-vă că ruta mesajelor este recunoscută de Next.js
- Adauga logare pentru a verifica ruta este lovit - Există fişier traseu şi structura este corectă pentru Next.js 15
Elimină proprietatea "activă" inexistentă din STOMP Arhivarea clienților
- STOMP Clientul nu are o proprietate "activă" - Verificaţi numai proprietatea "conectată" care este indicatorul de stat corect
Eliminați nesuportat peWebSocketError handler de la client STOMP
- onWebSocketError nu este o proprietate validă în ClientOptions - Manipulatori de eroare SockJS (onerror, onclose) deja oferă o manipulare a erorilor
Adăugați webSocket cuprinzător de gestionare a erorilor și de logare
- Manipulatoare de erori SockJS Adăugat (ondeschis, onerror, onclose) pentru a prinde eșecuri de conectare - Detectare timeout de conectare adăugată (10 secunde...
Elimină activitatea incorectă a agentului HTTPS
- Modificări inversate care ocolesc validarea certificatului - Certificatele sunt eliberate de serviciul auto-cert (Sa Criptam), nu auto-semnat - Nevoia de a in...
Utilizați HTTPS cu agentul care acceptă certificate autosemnate
- Reversed to use always HTTPS (not HTTP) - Adăugat agent HTTPS cu respingere Neautorizată: fals pentru certificate auto-semnate - Acest lucru permite server-si...
Utilizați numele serviciului Kubernetes pentru MediaService pentru a evita problemele de certificare SSL
- Server-side Next.js rute utilizate acum *************** - Aceasta evită erorile de certificat autosemnate atunci când se conectează la https://media.kamocrm.c...
Elimină vechi / api / securitate / media / rute care au fost interceptarea cererilor
- Trasee vechi au fost transmise către APIService care nu mai are obiective media - Toate cererile media ar trebui să treacă prin /api/media / rute direct la Me...
Adaugă eroare detaliată pentru crearea sesiunii MediaService
- Log MediaService URL fiind numit - Antete de răspuns jurnal - Inregistrare eroare sporita cu detalii de eroare completa - Include URL în răspunsul de eroare p...
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.
