Raise client read timeout to 120s for long messages
LibreTranslate runs CPU-only argos models — a paragraph-length chat message takes 20-30s to translate, and longer ones can push past 60s. The 8-second read time...
Track public support chat by session GUID in Redis
Marketing visitors use /ws/public-chat-native without memberId; tickets still reference the org placeholder member as requestor. Increment PRESENCE_PUBLIC keys ...
เพิ่ม TTL จาก 90s เป็น 300s เพื่อป้องกันการยกเลิกบรรทัดผิดพลาดเมื่อแท็บ Trotling
ขยายการค้นหาคลังดนตรี JPA เพื่อรวมแพกเกจพาณิชย์ด้วย
"คาโมะ-แชร์-ลิบรารีใหม่" นําเข้ามา ซึ่งต้องใช้ ~ประกาศออกไป~ (in com.kamo.z. แบ่งปัน.commerce). มีเดียเซอร์นิเตอร์แค่สแกน ไม่ให้แปลงเป็น. do.repos, ดังนั้นถั่วจ...
เรียกคืนค่านําเข้าของฮัชแมปใน ChartWeb Control
ตัวแก้ไขก่อนหน้านี้ได้ลบการนําเข้า HashMap แต่จับ Typing วิธีการนี้ยังคงสร้างข้อมูล แฮชแมปสําหรับทรัพยากรของเหตุการณ์พิมพ์อยู่ โดยสาเหตุคือ การสร้างฟอเกโจล้มเหล...
สร้างผู้บริโภค NATS อย่างมีประสิทธิภาพเมื่อสร้างกลุ่ม เพื่อป้องกันการสูญเสียข้อความ
ความเดิมตอนที่แล้วใน NATS JetStream Press ผู้บริโภคจะถูกสร้างเมื่อลูกค้า STOMP เท่านั้น ส่งแล้ว / app/chat/ under ด้วยเครื่องส่ง สร้างใหม่, แสดงข้อความใดๆ ก่อน ...
ตั้งค่าชุดตกแต่งใหม่จาก NAST หลัก
ตรงกับระบบรักษาความปลอดภัย หลักสิ่งพิมพ์: รับข้อมูลร่วมกับผู้ส่งเมื่อ การรักษาความปลอดภัย. Theme. proview. * แทนที่จะเป็น JetStream (สายน้ําเท่านั้นที่คุย).
ใช้การแสดงผลร่วมกับ Public ChartVisitorName สําหรับโปรแกรมร้องขอName
ตั๋วผู้เข้าชมมีการขอรหัสบัตรสมาชิกระบบ DTO ถูก surned own owner's name ในคอลัมน์ผู้ร้องขอ ล้ม กลับไปยังตัวจัดการระบบ SchartVisplay. playName เมื่อมีรายการที่แสด...
การสร้างข้อผิดพลาดใน GoMuserpice และเพิ่ม NATS สําหรับจดหมายตัวแทน
- ตัวเลือกเพิ่มเติมของรายการรายการรายการไม่ถูกต้อง - นัตซือเซอร์เด็คเตอร์ เข้าสู่ มีเดียคอนโทรลเลอร์ - สํานักพิมพ์เพื่อแชท. session. ตัวแทนและผู้เข้าชมเห็นมันใน...
Real-time chat delivery, message sides, notifications, and name sync
- Keep NATS subscription alive on client unsubscribe to avoid breaking agent real-time delivery - Tag visitor messages with messageType=VISITOR_MESSAGE in getMe...
Comment=รายการจดหมายName
Public ChartSerview: ตั้งค่าข้อความประเภท= WISITER MESESTESTIMETSE เพื่อให้หน้าจอแยกแยะได้ ผู้ มา เยี่ยม ชม จาก การ ตอบ รับ ของ ตัวแทน ใน หัว เรื่อง STOMP เล่นส...
Three support/chat issues — NATS relay, auto-popup, topic fallback
1. Switch SupportNotificationService and SupportStompRelayController from JetStream to core NATS — the CHAT_MESSAGES stream only covers chat.> so JetStrea...
Write contact form description as chat message on public ticket creation
The description was only stored on the ticket entity and never appeared in the chat window. Added writeTextMessage() helper and call it after the system event s...
Add debug logging and robust rights parsing for webinar controller
Adds info/warn logging for session data and rights on POST /types to diagnose 403 errors. Also adds fallback parsing for rights stored as JSON strings in Redis ...
Resolve org theme backgrounds not appearing in meet virtual backgrounds
- Add domain-based theme URL resolution for internal K8s service-to-service calls - getPublicBackgrounds now accepts optional domain param to derive correct the...
Upload meet backgrounds to public MinIO bucket with hash-based naming
Was uploading to private 'imaging-meet-recordings' bucket via **************** which caused: - MinIO region mismatch errors on the primary node - Connection tim...
Return serialization-safe Maps instead of raw JPA entities in MeetConfigController
All config/background endpoints were returning raw JPA entities with @ManyToOne(fetch=LAZY) Organization references. Jackson failed to serialize the Hibernate p...
Remove duplicate endpoints from MeetController, add org-themes to MeetConfigController
MeetConfigController already handled config/background endpoints. The duplicate endpoints in MeetController caused ambiguous mapping. Added org-theme background...
Update health probes to HTTP port 80 to match new server config
Startup, readiness, and liveness probes were still pointing to port 8443 with HTTPS scheme, causing pod restart loops.
Switch MediaService to HTTP port 80 — TLS termination at Traefik
Internal cluster traffic doesn't need HTTPS. Traefik handles TLS for external clients. This aligns MediaService with all other services.
Send chat invites to correct WebSocket topic /topic/chat/incoming/{memberId}
Was publishing to /topic/chat/member/{id} but kamo-internal subscribes to /topic/chat/incoming/{id}. Also fixed Member entity field access **************** inst...
Add voip.> to NATS stream subjects and handle IllegalStateException in VoipStompRelayController
The NATS stream only covered chat.> so subscribing to voip.> threw IllegalStateException ([SUB-90007] No matching streams). Added voip.> to the stream subjects ...
Retain VoipStompRelayController subscription reference and add PreDestroy
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 ...
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 ...
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...
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.
Make TLS certificate optional in MediaService deployment
- Add optional: true to wildcard-kamocrm-com secret volume - Update cert-converter init container to handle missing certificate gracefully
Add Buildx setup with insecure registry config to resolve 401 auth errors
Use getUsernameAlias() instead of non-existent getName() method on Member
Properly configure Spring Security for WebSocket - disable CSRF completely, enable session creation IF_REQUIRED for WebSocket handshake
Disable CSRF for /ws/** endpoints and simplify security config to fix SockJS /ws/info 405 error
Explicitly allow GET/POST/HEAD methods for /ws/** endpoints to fix SockJS /ws/info 405 error
Remove invalid method calls causing compilation errors (getId on MediaSession, getStatusCode on ServerHttpResponse)
Add WebSocket middleware and ServersTransport to IngressRoute
- Added media-websocket-upgrade middleware for WebSocket upgrade headers - Added media-websocket-transport to disable HTTP/2 (WebSocket requires HTTP/1.1) - Thi...
WebSocket live message delivery - disable ChatMessageHandler subscription, enhance logging
- Disabled ChatMessageHandler subscription to chat.session.> that was consuming messages without forwarding to WebSocket - Enhanced WebSocketConfig logging to t...
WebSocket persistent connection with aggressive keepalive
Idle timeout set to 0, heartbeat 20s, disconnect delay 30s, match frontend timing
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 - ...
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...
เหมือนที่คุณเห็นการขนส่ง?
ทุก คน ที่ ได้ รับ การ ปรับ ปรุง เหล่า นี้ จะ ลง ไป ใน ที่ ทํา งาน ของ คุณ โดย อัตโนมัติ. เริ่มให้อิสระและดูมันเติบโตสัปดาห์แล้วสัปดาห์เล่า.