* feat(discord): restore gateway channel flow in wasm
* chore(discord): bump channel version to 0.2.1
* fix(discord): address review feedback on gateway channel PR
- Add #[serde(default)] to DiscordMessageMetadata for backward compat
with old Option<String> serialized metadata
- Restore mention polling alongside Gateway (on_poll processes gateway
events first, then runs poll_for_mentions if configured)
- Update on_respond to handle source_message_id with message_reference
for mention-poll reply threading
- Implement Gateway presence status: dnd before pairing, online after
- Implement Gateway resume (OP 6) with session_id tracking, falling
back to fresh identify on Invalid Session (OP 9)
- Extract WebsocketSessionState and spawn_websocket_poll to reduce
nesting in start_websocket_runtime
- Simplify should_apply_dm_pairing tautology
- Remove completed plan docs
- Fix clippy items_after_test_module in extensions handler
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
* fix(discord): address review findings in gateway channel PR
- Fix gateway presence always showing "online" by filtering empty
owner_id strings from workspace store reads
- Fix interaction followup using POST instead of PATCH to
/messages/@original, which left deferred "thinking" state unresolved
- Restore mention-poll pagination (up to 5 pages of 100 messages)
- Remove dead ed25519-dalek and hex dependencies from WASM crate
- Remove unused _channel_id parameter from remember_processed_id
- Clean up redundant let binding in send_pairing_reply
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
* fix(discord): address second-round review findings
- Log warning when gateway event queue JSON fails to deserialize
instead of silently returning empty (zmanian review item 1)
- Defer presence update from OP 10 Hello to after OP 0 READY, per
Discord gateway protocol which requires READY before non-Identify
commands (zmanian review item 2)
- Add 0-25% random jitter to websocket reconnect backoff per Discord's
reconnection recommendations (zmanian suggestion)
- Extract WebsocketPollContext struct to replace 19-parameter
spawn_websocket_poll function (zmanian suggestion)
- Document intent bitmask 4609 = GUILDS + GUILD_MESSAGES +
DIRECT_MESSAGES in capabilities JSON (zmanian suggestion)
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
---------
Co-authored-by: zhyaoyu <[email protected]>
Co-authored-by: [email protected] <[email protected]>
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>