Prevent table row movement and redrawing on checkbox selection
- Disable animateRows to prevent visual movement when rows are selected - Batch state updates in onSelectionChanged using requestAnimationFrame - Memoize pinned...
Change Grim status icon from raven.svg to raven.ico
- Update icon path from /icon/raven.svg to /icon/raven.ico - Keep red color filter (#ef4444) applied to icon - Icon size remains 18px to match other status icon...
Ensure raven.svg icon is properly displayed for Grim status
- Verify path /icon/raven.svg correctly references public/icon/raven.svg - Add display flex to ensure proper rendering - CSS filter applied to make icon red (#e...
Fix contact column vertical alignment and add checkboxes to pinned rows
- Add height: 100% and justifyContent: center to Contact column for vertical middle alignment - Manually add checkbox input to IdRenderer to ensure checkboxes a...
Improve contact field spacing, status alignment, and pinned rows
- Reduce gap between name and email in Contact field from 0.25 to 0 (with lineHeight adjustments) - Vertically align status field content to middle with flex al...
Vertically center urgent badge in Contact column
- Change alignItems from 'flex-start' to 'center' for vertical alignment - Remove mt: 0.25 margin-top as it's no longer needed with center alignment
Resolve ESLint errors in LeadManager
- Change 'let filtered' to 'const filtered' (prefer-const) - Replace 'any' types with proper PinnedLead interface - Remove unused PushPin import - Add explicit ...
Restore connection dragging functionality between task items
- Fixed startConnection function to properly accept answerIndex parameter - Added SVG rendering for connection lines (both existing and dragging) - Connection l...
Resolve TypeScript type error for react-draggable nodeRef
- Updated nodeRefs Map type to accept RefObject<HTMLDivElement | null> - Added type assertion when passing nodeRef to Draggable component - Fixes build error: T...
Resolve findDOMNode error on tasks page for React 19 compatibility
- Added nodeRef prop to react-draggable components to avoid deprecated findDOMNode - Created ref map to store refs for each draggable item - Added cleanup logic...
Correct button layout and make side buttons twice as wide
- Moved clear button to the right of call button - Backspace button remains on the left - Both side buttons (backspace and clear) are now twice as wide - Double...
Remove duplicate onMouseLeave prop in dial pad buttons
- Combined duplicate onMouseLeave handlers into single handler - Fixes build error: No duplicate props allowed
Resolve build errors in pipeline components
- Fixed Grid component usage: changed from Grid item xs={12} to Grid size={{ xs: 12 }} (MUI v6 Grid2 API) - Fixed invalid icon imports: replaced Package with In...
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...
Use pre-authenticated session from OTKPreAuthFilter in getMyNetworks
- Fixed 401 error by checking for pre-authenticated session from OTKPreAuthFilter first - OTKPreAuthFilter already validates and consumes OTK, so controller sho...
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...
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...
Correct autocomplete attributes to enable password manager autofill
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
WebSocket persistent connection with aggressive keepalive
Idle timeout set to 0, heartbeat 20s, disconnect delay 30s, match frontend timing
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
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...
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.
UseChatWebSocket에서 invalid 'active' 속성 체크 제거
@stomp/stompjs의 클라이언트 유형은 'active' 속성이 없습니다. client.activate() 이후 잘못된 체크를 제거하면 클라이언트 생성 후 즉시 호출됩니다.
STOMP 클라이언트 활성화하기 전에 SockJS를 엽니 다
- SockJS 연결 이전의 STOMP 클라이언트가 활성화 된 레이스 상태를 수정 - Client.activate()를 SockJS onopen 콜백으로 이동 - 실시간 메시지를 방지하는 즉시 연결 폐쇄 문제 수정
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 - ...
모든 WebRTC API 요청을 포트 8443
- media.{domain}:8443를 사용하는 모든 WebRTC API 경로 업데이트 - WebRTC 엔드포인트에 대한 Traefik을 사용하지 않고 - 미디어 API 및 WebSocket 구성 일치
8443 포트에 모든 MediaService 요청을 경로 (Tarter Traefik)
- 미디어를 사용하는 모든 미디어 API 경로 업데이트.{domain}:8443 - MediaService를 위한 Traefik 사용 없음 - API 및 WebSocket 모두 포트 8443에 직접 이동 - 내부.{domain}는 Traefik을 통해 계속됩니다
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...
포트에 연결 8443 (외부) NodePort 30843
- 라우터는 외부 8443에서 k1m1 NodePort 30843를 전달합니다. - 브라우저 사용 media.kamocrm.com:8443 - 내부 NodePort는 30843 (Kubernetes 유효한 범위)