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...
Отслеживайте чат общественной поддержки сеанса GUID в Redis
Маркетинговые посетители используют /ws / public-chat-native без членства; билеты по-прежнему ссылаться на члена-заполнителя организации в качестве запрашивающе...
Увеличить ТТЛ с 90-х до 300-х, чтобы предотвратить ложное дросселирование на вкладке
Расширить сканирование репозитория JPA, чтобы включить пакет коммерции
Новая библиотека, разделяемая Камо, приносит ******************* который требует **************************** (в com.kamo.z.shared.commerce). MediaService тольк...
Восстановить импорт HashMap в ChatWebSocketController
Предыдущий рефактор удалил импорт HashMap, но ручку метод по-прежнему создает HashMap для полезной нагрузки события ввода, вызывая Форджо строит неудачу с «не м...
Активное создание NATS-потребителя при создании сеанса для предотвращения потери сообщений
Ранее NATS JetStream push-потребитель создавался только при клиенте STOMP. Отправить /app/chat/subscribe С помощью DeliverPolicy. Новые сообщения, опубликованны...
Ретрансляционное тематическое обеспечение от основных НАТС
Match SecurityService: подписка на Dispatcher on security.theme.provision.* вместо JetStream (поток охватывает только чат).
Используйте PublicChatVisitor displayName для запроса Имя посетителя
Инициированный посетителем запрашивающий жёсткий код билетов члену системы org, поэтому DTO всплывало имя владельца организации в колонке Запросителя. падение Н...
Создайте ошибку в GeoLookupService и добавьте NATS для сообщений агентов
- Исправить несоответствие типа списка в **************** Введите NatsMessageService в MediaController Опубликовать на chat.session.{guid} после того, как агент...
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...
Отметьте сообщения посетителей как тип VISITOR MESSAGE, добавьте имя отправителя в сообщения GET
- PublicChatService: установите messageType=VISITOR MESSAGE, чтобы интерфейс мог различать Посетитель перекликается с ответами агентов на тему STOMP - MediaCont...
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...
Добавить voip.> для потоковых субъектов NATS и обрабатывать незаконный государственный иск в VoipStompRelayController
Поток NATS охватывал только чат.> так что подписка на войп.> брошенный Незаконное государственное изъятие (СУБ-90007) Никаких совпадений. Добавлено voip. в пото...
Сохранить ссылку на подписку VoipStompRelayController и добавить PreDestroy
Принять *** из парам запроса для кросс-поддомен WebSocket auth
Прочитайте *** ID от ?***= параметр запроса сначала, возвращаясь к печенье. Это позволяет аутентифицировать интерфейс на internal.kamocrm.com. Подключение WebSo...
Управляйте устаревшими NATS-потребителями, связывая их с уникальными потребительскими повторами
- Извлечь обработчик сообщений в метод createNatsMessageHandler() Добавьте логику повторного использования с уникальным именем пользователя, когда «потребитель ...
Маршрут WebSocket через порт 443
- service.yaml: исправить порт 80→8443, чтобы соответствовать фактическому порту прослушивания - ingressroute.yaml: используйте схему https + порт 8443 для бэкэ...
Используйте кластерный внутренний DNS для подключения NATS
Измените URL NATS по умолчанию с IP-адресов WireGuard (100.64.x.x) на nats.kamo.svc.cluster.local для локального сервера. Удаленные узлы (k0m1, k2m1) остаются н...
Сделайте сертификат TLS опциональным при развертывании MediaService
- Добавить опционально: верно для wildcard-kamocrm-com секретный том - Обновление встроенного контейнера cert-converter для изящной обработки отсутствующего сер...
Добавьте настройку Buildx с небезопасной конфигурацией реестра для устранения ошибок 401 auth
Используйте getUsernameAlias() вместо несуществующего метода getName()
Добавьте apiSecret в ответ конфигурации WebRTC для аутентификации Janus
Отключить CSRF для конечных точек /ws/** и упростить конфигурацию безопасности для исправления ошибки SockJS/ws/info 405
Явно разрешить GET/POST/HEAD-методы для конечных точек /ws/** для исправления ошибки SockJS/ws/info 405
Удалить недействительные вызовы, вызывающие ошибки компиляции (getId on MediaSession, getStatusCode on ServerHttpResponse)
Добавьте промежуточное ПО WebSocket и серверы Transport to IngressRoute
- Добавлено промежуточное программное обеспечение для обновления WebSocket - Добавлен медиа-вебсокет-перенос для отключения HTTP/2 (WebSocket требует HTTP/1.1) ...
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...
Как вы видите судоходство?
Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.