Update row 2 tabs with All Leads and Selected
- Add All Leads and Selected tabs to row 2 - Default to Fresh tab (index 2) when page opens - Add List icon for All Leads and CheckCircle icon for Selected - Sh...
Add padding and status tab colors
- Add padding to product tabs Card and CardContent - Add color-coded status tabs: Fresh (green), Reckoning (blue), Farm (orange), Grim (red), Void (gray) - Upda...
Restructure leads page tabs and filtering
- Add floating Row 1 tabs: Residential Mortgages | Commercial Real Estate Loans - Add Row 2 status tabs with icons: Fresh | Reckoning | Farm | Grim | Void - Rem...
Use custom raven.svg icon for Grim status
- Replace Dangerous icon with custom raven.svg from /public/icon/ - Apply CSS filter to make raven icon red (#ef4444) to match Grim status theme - Remove unused...
Update status icons - gavel for Reckoning, Dangerous for Grim
- Change Reckoning icon from Assignment to Gavel (judicial/legal theme) - Change Grim icon from Block to Dangerous (grim reaper/death theme) - Dangerous icon re...
Improve status column and contact field styling
- Set Status column to fixed 300px width - Add status icons (NewReleases for Fresh, Assignment for Reckoning, Agriculture for Farm, Block for Grim, Cancel for V...
Move urgent badge from Lead ID to Contact column
- Remove urgent badge from IdRenderer - Add urgent badge to ContactRenderer, positioned to the left of contact info - Badge now appears next to contact name/ema...
Add pinned urgent leads functionality to datagrid
- Add pinned rows feature (default 5 rows) for latest urgent contact leads - Pinned rows always visible at top regardless of filters or sorting - Modern styling...
Update status column to show parent > child format and use enum-based mock data
- Update mock data generation to use actual status/sub-status pairs from Java enum - Change "Sub Status" column header to "Status" - Display status in "{parent}...
Update leads page with status filters, remove phone column, add sub-tabs
- Remove phone number column from leads grid - Increase width of Created and Assigned columns to fit datetime data - Add status and sub-status dropdown filters ...
Add saggy bounce animation to connection lines with arrow heads
- Converted straight lines to curved SVG paths using quadratic bezier curves - Added continuous saggy bounce animation using requestAnimationFrame - Longer conn...
Add Adjust Features functionality to apps in account settings
- Added 'Adjust Features' button/link to each enabled app card - Button appears in both grid and list view modes - Added 'Adjust Features' option to context men...
Reduce dial tone volume and add modernized clear button
- Reduced dial tone volume by 50% (from 0.5 to 0.25) - Added clear button (CallEnd icon) that appears when numbers are entered - Clear button clears all digits ...
Enhance phone number display field with modern animations
- Added auto-scroll to follow last dialed digit when number is too long - Implemented digit-by-digit pop-in animations with staggered timing - Added focus state...
Improve dial pad with audio preloading and modern animations
- Preload all DTMF audio files when dialpad tab opens for instant playback - Add modern button animations with hover and press states - Implement visual feedbac...
Add DTMF touch tone sounds to dial pad in chatbox
- Added DTMF tone generation script (generate-dtmf-tones.js) - Generated WAV files for all dial pad buttons (1-9, *, #, 0) - Integrated touch tone playback into...
Add Pipeline page with Applications, Orders, Shipments, and Returns tabs
- Created pipeline page using SettingsView component similar to account pages - Added Applications tab with application management and status tracking - Added O...
Add Pipeline button to NavPri navigation
- Added Pipeline button with TimelineIcon after Accounts button - Links to /pipeline route - Always visible (not conditional on organization features)
Update account page tabs to new account type categories
- Changed tabs from status-based to account type categories: - "Clients & Customers" (BusinessCenter icon) - "Members & Subscribers" (People icon) - "Empl...
Add Employee Browser for HR page with EmployeeManager component
- Created EmployeeManager component similar to LeadManager with employee-specific fields - Updated /hr/page.tsx to match doc manager layout with gradient header...
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...
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...
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, ...
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...
Connect to MediaService port 8443 for WebSocket
- Updated WebSocket connection to use media.kamocrm.com:8443 - Bypasses Traefik for WebSocket-only traffic - Uses direct HTTPS/HTTP1.1 connection to MediaServic...
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...
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 ...
Add API proxy routes for WebRTC endpoints
- Added /api/webrtc/config proxy to MediaService - Added /api/webrtc/token proxy for Janus authentication - Added /api/webrtc/call/initiate, answer, end proxies...
Complete peer-to-peer WebRTC calling with signaling
- Added useWebRTC hook with full signaling support - Integrated WebSocket signaling (offers, answers, ICE candidates) - Added incoming call notifications with a...
Add WebSocket signaling for peer-to-peer calls
- Added WebRTCSignalingController for call signaling - Handles offer/answer exchange via STOMP - Forwards ICE candidates between peers - Manages call hangup not...
Add Janus WebRTC integration for audio/video calls
- Added useJanusWebRTC hook for WebRTC call management - Added VideoCallPanel component for in-chat video display - Integrated with ChatBox for seamless call ex...
Add Janus WebRTC integration
- Added WebRTCController for token generation and call management - Configured Janus API URL and secrets (api, token, admin) - Configured STUN/TURN servers (kam...
Update TURN server credentials with secure values
- Updated turn-secret with secure random value - Updated turn-password for Janus authentication - Credentials match MediaService WebRTC configuration
Add ServersTransport deployment to CI/CD workflow
Deploy traefik/serverstransport.yaml as part of Traefik deployment to both K1M1 and K2M1. This enables HTTP/1.1 backend connections for MediaService WebSocket s...
Add ServersTransport for MediaService WebSocket connections
Add media-websocket-transport ServersTransport resource to disable HTTP/2 for backend connections to MediaService. This is required for proper WebSocket upgrade...
Add media-websocket-upgrade middleware to force Upgrade header
- Add Upgrade: websocket header for WebSocket paths to fix HTTP/2 Extended CONNECT conversion - This ensures HTTP/2 WebSocket upgrade requests are properly conv...
Add media-cors middleware for media domain CORS support
- Add media-cors middleware matching theme-cors configuration - Allows CORS headers to be set for media.{domain} requests
Add detailed error logging for MediaService session creation
- Log MediaService URL being called - Log response headers - Enhanced error logging with full error details - Include URL in error response for debugging
Add 'media' subdomain to auto-cert SUBDOMAINS for MediaService
- Add 'media' to SUBDOMAINS list in auto-cert-service.yaml - Enables automatic SSL certificate generation for media.{domain} subdomains - Required for MediaServ...
Add direct MediaService routes via media.{domain} for WebSocket support
- Create new /api/media/* routes that forward directly to media.{domain} - These routes bypass APIService to allow secure WebSocket connections - MediaService r...
Add logging for subscription request to backend
- Log when subscription request is sent to /app/chat/subscribe - Helps verify if subscription requests are reaching the backend
Add detailed logging for subscribe function
- Log when subscribe() is called and current connection state - Log client existence and connection status - Helps diagnose why subscriptions aren't being creat...
Add detailed logging for WebSocket subscription requests
- Added logging to trace when subscribeToSession is called - Logs payload and sessionGuid extraction - Logs database lookup for session verification - Helps dia...
Add detailed WebSocket connection logging
- Enhanced logging for WebSocket connection success/failure - Log connection frame details on successful connection - Log detailed STOMP error information - Hel...
Load 100 message history on chat open and determine message author correctly
Support two-member chat sessions and message pagination (default 100 messages)
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.
