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...
Rename /hr/ folder to /account/ throughout the project
- Renamed app/hr/ to app/account/ - Renamed app/components/hr/ to app/components/account/ - Updated all references from /hr to /account in: - NavPri.tsx (navi...
Simplify getDisplayName to use userInfo.usernameAlias directly
- Removed unnecessary fallback logic and error checks - Use userInfo.usernameAlias directly from *** session data - Only show ROFL if userInfo is missing or use...
Resolve "Welcome back" user name display issue in NavTop
- Fixed getDisplayName() to only show "ROFL" on actual errors, not during loading - Added loading state handling to show "Welcome back..." while fetching user i...
Add detailed logging to my-networks API route
- Added logging for request URL, headers, and cookie presence - Added specific logging for *** cookie detection - Added detailed error logging for 401 responses...
Prevent automatic logout on 401 errors in network page
- Changed 401 error handling to show error message instead of immediately redirecting to /logout - Added retry button to error alert for easier recovery - Users...
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...
Remove invalid onWebSocketClose and onWebSocketError from ClientOptions
- Removed onWebSocketClose and onWebSocketError handlers as they are not valid ClientOptions properties - WebSocket close and error events are already handled i...
Move onWebSocketClose and onWebSocketError to Client constructor options
- Moved onWebSocketClose and onWebSocketError from property assignment to Client constructor options - These handlers should be defined in ClientOptions, not as...
Remove invalid 'active' property check from STOMP Client
- Removed clientRef.current.active check which doesn't exist on Client type - Using only clientRef.current.connected which is the correct property
Replace StompSubscription with Subscription from @stomp/stompjs
- Changed import from StompSubscription to Subscription (correct export name) - Updated all type references to use Subscription instead of StompSubscription
Remove invalid connectionTimeout property from STOMP ClientOptions
- Removed connectionTimeout property which is not part of ClientOptions type - Connection timeout is already handled manually via connectionTimeoutRef
Resolve TypeScript build error in LeadManager component
- Fixed Chip icon prop type error by changing ReactNode to ReactElement - Removed unused imports and props - Fixed useMemo dependency warning by wrapping IdRend...
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...
为 WebSocket 连接启用 SockJS 倒置传输
如果 WebSocket 升级失败, 允许 xhr- sreaming 和 xhr- polling 作为倒计时 .
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...
将 ChatBox 设计现代化,使其具有专业的光泽
- 实施有细微灰色梯度的清洁白色背景 - 添加自定义滚动条样式与主色方案相结合 - 增强带有梯度背景和不对称边框的信息泡 - 使投入领域现代化,实现药片形设计和焦点环效应 - 更新头条,并改进外观样式和梯度背景 - 增加平滑的立方体相变和比例相变动画 - 为打字指标实施脉冲动 - 完善呼叫控制和收到的呼叫通知 - 使用...
在使用中删除无效的“ 活动” 属性检查ChatWebSocket
来自 @stomp/stompjs 的客户端类型没有“活性”属性 。 取消了无效的检查, 因为客户端. activate () 在客户端创建后立即被调用 .
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...
前往端口 8443 的全程 WebRTC API 请求
- 更新所有 WebRTC API 路由以使用媒体 。{域}: 8443 - 不再将Traefik用于WebRTC终点 - 匹配媒体API和WebSocket配置
所有媒体服务请求到端口 8443 (通过Traefik)
- 更新所有媒体 API 路线以使用媒体 。{域}: 8443 - 不再使用Traefik媒体服务 - API和WebSocket都直接去8443港 - 内部。{域}像以前一样继续通过Traefik
连接8443(外部)端口,该端口通向节点30843
- 路由器外接8443至k1m1节点30843 -浏览器使用media.kamocrm.com:8443 - 内部节点港为30843 (Kubernetes 有效范围)
为 WebSocket 连接到 MediaService 端口 8443
- 更新了WebSocket连接,使用media.kamocrm.com:8443 - 仅用于WebSocket交通的旁通车 - 使用直接连接媒体服务的HTTPS/HTTP1.1 - API电话通过Traefik继续使用标准路径
删除 HTTP/2 兼容性的 WebSocket 运输限制
-浏览器WebSocket API不支持HTTP/2(RFC 8441未执行) - 原生WebSocket需要HTTP/1.1 升级失败于 HTTP/2 - 让SockJS自动选择运输(xhr -- -- 流/xhr -- -- 通过HTTP/2) - 修复与 HTTP/2 的 WebSocket 连接失败
仅使用 WebSocket 运算( 残疾 XHR 投票)
- 将SockJS运输从[websocket,xhr-streaming,xhr-poling]改为[websocket] - 取消回落投票 - 纯网络锁接力 - 如果WebSocket不起作用,而不是有辱人格,那么失败的速度会很快
将 WebSocket 直接连接到媒体.kamocrm.com
- 还原到原始方法:连接到媒体。 * 子域直接 - 消除不必要的同源复杂性 - 从中间软件被删除/ws绕行(不需要) - 内部入侵鲁特的路线被取消 - 媒体服务CORS已经允许所有来源 - 更简单更清洁的解决方案
从 kamowsmedia- service 中删除明确的命名空间引用
- 两种服务同名空间(kamo) - 不需要明确的名称空间参考 - 避免潜在的跨名称空间问题
从下一个删除/ws重写 。 配置(由Traefik处理)
- 已删除 Next.js 为/ws 路径重写 - 现由Traefik IngressRoute处理的WebSocket线路 - Traefik 内部路线.kamocrm.com/ws - > 直接媒体服务
通过Traefik直接向MediaService提供路线/ws请求
- 为入侵鲁特的路径增加专用路线 - 内部路线.kamocrm.com/ws - > 直接媒体服务 - 在WebSocket支助中使用与媒体路线相同的服务器运输 - 用于 WebSocket 连接的 Bypasses Next.js(Next.js 重写不支持 WS) - 更具体的路线首先与一般路线相匹配
允许/ws WebSocket 端点, 而无需认证重定向
- 将路径添加到中间软件绕行 - SockJS 需要连接到/ws/info而不重定向 - WebSocket连接仍然有 *** cookie - 解决WebSocket连接超时问题
更改同源的 WebSocket 连接
- 从media.kamocrm.com改为同源(内部.kamocrm.com) - 避免出现交叉来源的WebSocket连接问题 - 添加 Next.js 重写规则到代理/ws 到 Media Service - 浏览器将连接到内部.kamocrm.com/ws - Next.js将代理到媒体.kamocrm.com...
为 WebRTC 端点添加 API 代理路由
- 在媒体服务中添加/api/webrtc/配置代理 - 为Janus认证添加了/api/webrtc/token代理 - 增加/api/webrtc/呼叫/启动、回答、终端代理 - 遵循与/api/媒体代理相同的模式 - 启用来自 kamo- 内部前端的 WebRTC 呼叫
解析构建错误 - 将 PhoneOff 替换为 CallEnd
- 手机图标在@mui/icons-materi中不存在 - 使用CallEnd,这是正确的MUI图标 - 删除未使用的重复文件(ChatBox With WebRTC、VideoCallView、使用JanusWebRTC) - 建设现在应该成功
完整的对等 WebRTC 呼叫信号
- 添加使用WebRTC钩并配有完整的信号支持 - 综合WebSocket信号(出价、答案、ICE候选人) - 添加带有答/解码按钮的来电通知 - 更新ChatBox,动态高度可调用UI - 从使用ChatWebSocket进行信号输出的STOMP客户端 - 支持音频、视频和屏幕共享通话 - 在接收到的电话中自动呼叫用...
