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...
Fix plan review issues - chat dedup, message-received handler
Add userId deduplication in openTool to prevent duplicate chat windows. Add chat:message-received listener in ChatNotificationListener for minimized chat auto-r...
Add implementation plan for tool window system
Addresses review findings: hexchat:open migration, call-initiation listener, SVG gradient foreignObject approach, variable-width dock positioning, embedded Chat...
Fix contradictory migration language in spec table
Remove "(or kept as thin wrapper)" hedge from the existing files table to align with the committed full-replacement migration strategy.
Address spec review findings for tool window system
Add ToolComponentProps interface, event detail types, chat migration strategy, HexHead click behavior, softphone width sourcing, calculator keyboard focus manag...
Add tool window system design spec
Spec for refactoring chat windows into a generic plugin-based tool window system with ToolRegistry, calculator tool, and softphone extraction.
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...
Chat UI polish - primary color theming, emoji inside input, round send btn, hex status colors
- Department tabs and chatbox header use --color-primary instead of hardcoded green - Emoji picker button moved inside chat input field aligned right - Send but...
Chat system improvements - editing spin, hex mask rotation, colors, maximize-minimize
- Detect editing (backspace/delete) vs typing in input to trigger backwards HexHead spin - Rotate hex clip mask along with border during typing/editing (avatar ...
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 ...
Don't invalidate *** session when it matches the new OTK session
The validate route was deleting the existing *** session from Redis before looking up the OTK. When the OTK pointed to the same session, the lookup would fail w...
Accept *** from query param for cross-subdomain WebSocket auth
Read *** ID from ?***= query parameter first, falling back to cookie. This allows the frontend on internal.kamocrm.com to authenticate WebSocket connections to ...
Pass *** ID as query param for cross-subdomain WebSocket auth
Instead of relying on cross-domain cookies (which don't work across subdomains), read the *** cookie client-side and pass it as a query parameter when connectin...
Retrieved "fix: ตั้งโดเมนของคุกกี้เป็น .kamocm.com เพื่อใช้ร่วมกันผ่านพาราเมทริก"
การกลับค่านี้มีผล ~ประกาศออกไป~
Revert "fix: set *** cookie domain to .kamocrm.com for cross-subdomain sharing"
This reverts commit ****************
ตั้งโดเมนของคุกกี้ *** เป็น .kamocm.com เพื่อใช้ร่วมกันกับ Outlook
คุกกี้ถูกตั้งค่าโดยไม่ระบุโดเมน, ป้องกันการถูกส่งไป ไปยังสื่อ.camocrm.com สําหรับการตรวจสอบสิทธิ์เว็บซิมคอร์.
Set *** cookie domain to .kamocrm.com for cross-subdomain sharing
The *** cookie was set without an explicit domain, defaulting to internal.kamocrm.com. This prevented the cookie from being sent to media.kamocrm.com during Web...
Handle stale NATS consumer binding with unique consumer retry
- Extract message handler into createNatsMessageHandler() method - Add retry logic with unique consumer name when "Consumer already bound" error occurs after ...
Resolve chat messaging, presence tracking, and auto-open issues
- Fix messages not being received by retrying NATS subscription with unique consumer name when "Consumer already bound" error occurs - Fix offline status by s...
Resolve MUI icons type error and share single STOMP WebSocket connection
- Add tsconfig paths override for @mui/icons-material to bypass broken ESM exports in v7.3.1 that point to non-existent ./esm/index.d.ts - Create ChatWebSocke...
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-...
Add scale pop animation to chat message bubbles
New messages animate in with a spring-based scale pop effect while history messages loaded on chat open render instantly. System messages remain unchanged. Resp...
Use ref for memberPanelOpen in openChat to prevent stale closure
When a user opens the member panel, clicks a member to chat, then closes the panel before the async session API call returns, the chat window was positioned wit...
Remove forced WebSocket headers from media middleware
Traefik v3 handles WebSocket Upgrade/Connection headers natively. Remove forced headers that broke non-WebSocket API requests.
Route MediaService traffic through Traefik on port 443
- Add MEDIASERVICE_URL env var for cluster-internal service access - Fix getMediaServiceBaseUrl in 9 API routes to use env var first - WebSocket hook connects t...
Route WebSocket through Traefik on port 443
- service.yaml: fix port 80→8443 to match pod's actual listen port - ingressroute.yaml: use scheme https + port 8443 for backend - serverstransport.yaml: add in...
ทํา ให้ เมล็ด ข้าว โพด มี เงื่อนไข ใน การ เก็บ ไว้
เพิ่ม... มอเตอร์ไซค์ และกิจการพาณิชย์ก็จะบรรทุกเฉพาะเมื่อมีการซื้อขาย สแกน ป้องกันความไม่พึงพอใจ สื่อมวลชนที่สแกนคอม.กาโม แต่ไม่สามารถยกเลิกการค้าได้.
Add system account to all NATS configs
Add $SYS account with admin credentials to k0m1, k1m1, and k2m1 NATS configs. Enables nats CLI cluster management operations (peer removal, step-down, etc.) for...
Use cluster-internal DNS for NATS connection
Change default NATS URL from WireGuard IPs (100.64.x.x) to nats.kamo.svc.cluster.local for the local server. Remote nodes (k0m1, k2m1) remain on WireGuard IPs.
อนุญาตให้โปรแกรมเริ่มทํางานเมื่อไม่มี NATS
เอาออก@ Construtional Onbean from JetStream () และเพิ่ม@nullable to พารามิเตอร์ของการเชื่อมต่อ เมื่อ Nets Connect () จะได้ค่า โมฆะ ฤดูใบไม้ผลิไม่พังเพราะความไม่...
เหมือนที่คุณเห็นการขนส่ง?
ทุก คน ที่ ได้ รับ การ ปรับ ปรุง เหล่า นี้ จะ ลง ไป ใน ที่ ทํา งาน ของ คุณ โดย อัตโนมัติ. เริ่มให้อิสระและดูมันเติบโตสัปดาห์แล้วสัปดาห์เล่า.