Add resolveCollisions useCallback
Detects head-to-head and head-to-toolWindow spatial violations and moves offending heads to the nearest clean position via spiralSearch. Must be called via doub...
Add MIN_GAP constant and spiralSearch helper
Adds the 5px minimum gap invariant constant and a spiral-search function that finds the nearest collision-free pixel position for a hexhead, checking head-to-he...
Add status/substatus widget to lead view tab bar
- Extract LEAD_STATUS_TYPES, getStatusIcon, getSubStatusIcon to shared app/lib/leadStatuses.tsx utility; update LeadManager to import from it - Add inline sta...
Rewrite HexHead system with framer-motion physics
Replace the broken 1800-line HexHeadGroup with a clean physics-based implementation using framer-motion springs and motion values. Key changes: - Remove wiggle...
Flat-top honeycomb layout, 5px gaps, cluster-aware groups, tool window relayout
HexHeadGroup: - Switch to flat-top hex geometry (HEX_INRADIUS/HEX_STEP) — hexes now share flat top/bottom edges with adjacent group members, giving a proper h...
Persist tool windows across navigation — Layer 1 guard + ToolProviders wiring
Add chat toolbar with call controls, live search, and smart auto-scroll
Move call buttons from header to dedicated toolbar row with 50% lighter background. Add live search field that highlights matches and auto-scrolls to most recen...
Softphone dial pad shorter, chat call controls, hexhead avatars, calc light theme
- Reduce softphone dialpad button padding from 12px to 9px (6px shorter) - Add call controls toolbar (audio, video, screen share) to ChatBox in embedded mode ...
Unify tool window dimensions and refine UI
- All tools now share uniform 320x650 size (softphone 25% taller, others match) - Remove programmer and graphing calculator modes from UI (components retained) ...
Add ScientificMode calculator component
Expression-based scientific calculator with live result preview. Supports trig (sin/cos/tan + inverses), log/ln, powers (x², x³, x^y, eˣ, 10ˣ), roots (√, ∛), fa...
Replace AuthenticatedChatWrapper with AuthenticatedToolWrapper, remove ChatDock
Register chat as a tool
Register the chat tool definition with id 'chat', using ChatTool as the component, ChatBubbleIcon, indigo gradient hex head style, 320x360 default size, and unl...
Add ChatTool adapter with embedded mode for ChatBox
- Create ChatTool adapter that wraps ChatBox for the tool system - ChatTool handles avatar fetching and session creation (previously done by ChatDock) - Add emb...
Distinguish typing vs editing in chat indicators and HexHead spin
- Extend WebSocket typing protocol to include isEditing flag - HexHead spins clockwise when other user is typing, counter-clockwise when editing - Chat indicato...
Enhance chat system with persistent minimized chats, emoji picker, and UI improvements
- Keep ChatBox mounted when minimized to hexhead so messages don't reload on restore - Connect typing/editing indicators to HexHead spinning animations with 2s ...
Add WebSocket authentication via *** cookie handshake interceptor
Add WebSocketAuthInterceptor that reads *** cookie on handshake, resolves session via KSessionService, and stores memberId/orgId in WebSocket session attributes...
Auto-open chat on first message, HexHead badge notifications for subsequent
Publish incoming message notifications to target member WebSocket topic
Add real-time presence tracking with WebSocket heartbeat and context
Add chat sound effects with Web Audio API
Create useChatSounds hook with lazy AudioContext initialization for browser autoplay compliance. Wire outgoing and typing sounds into ChatBox. Download royalty-...
เหมือนที่คุณเห็นการขนส่ง?
ทุก คน ที่ ได้ รับ การ ปรับ ปรุง เหล่า นี้ จะ ลง ไป ใน ที่ ทํา งาน ของ คุณ โดย อัตโนมัติ. เริ่มให้อิสระและดูมันเติบโตสัปดาห์แล้วสัปดาห์เล่า.