5edb3fa241
The server echoes the sender's own message over WS before returning the HTTP response, so onChatMessage could append it before sendMessage's await resolved, then sendMessage appended again -> double. Both append paths now dedup by id. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>