Bug Fixes
- fix: prevent duplicate messages in real-time viewer — Race condition in 3-second polling (
checkForNewMessages) allowed concurrent async calls to both add the same message. Added concurrency guard (isRefreshing) and deduplication. - fix: add
chat_idto WebSocketnew_messagebroadcast — The payload was missingchat_id, making client-side real-time message insertion a silent no-op. Messages only appeared via polling. - fix: deduplicate WebSocket new message handler — Added
messages.some()check to prevent duplicates when both WebSocket and polling deliver the same message.
Full Changelog: v7.1.4...v7.1.5