Commit Graph

16 Commits

Author SHA1 Message Date
Peter Steinberger a8dfd37332 fix(discord): avoid replaying ambiguous voice deliveries (#117127)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:40:05 -07:00
Peter Steinberger ca11c4902d fix(discord): retry safe webhook and reaction requests (#116821)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 05:21:42 -07:00
Peter Steinberger 0724dfda21 refactor(channels): share retry and text break helpers (#112786)
* refactor(channels): share retry and text break helpers

* fix(sdk): keep helper internals private
2026-07-22 19:05:00 -04:00
Peter Steinberger 783a5d21cf refactor(config): purge numeric tuning knobs behind built-in defaults (#111382) 2026-07-19 07:35:45 -07:00
Peter Steinberger 66604df9b6 refactor(channels): share retry helpers and remove dead state probes (#108903)
* refactor(channels): generalize channel retry runner and retry-after parsing; drop dead configured-state probes

* fix(channels): align retry and metadata contracts
2026-07-16 04:03:15 -07:00
Peter Steinberger af3d796e19 refactor(discord): trim internal exports (#107714)
* refactor(discord): trim internal exports

* refactor(discord): use canonical approval helper

* chore(deadcode): refresh export baseline
2026-07-14 11:34:02 -07:00
Peter Steinberger 4349687b9d refactor(extensions): burn down Discord and Slack dead exports (#106017)
* refactor(discord): trim dead internal exports

* refactor(slack): trim dead internal exports

* test(discord): cover inherited streaming migration

* chore(tooling): ratchet reduced extension LOC

* refactor(discord): remove stale approval helper import

* chore(deadcode): remove reintroduced transcript baseline
2026-07-12 22:58:22 -07:00
Yuval Dinodia df883ab81a fix(discord): stop retrying non-idempotent sends on post-connect-ambiguous errors (#103867)
* fix(discord): stop retrying non-idempotent sends on post-connect-ambiguous errors

Discord's outbound retry runner treated every transient transport error as
retryable, including ECONNRESET, ETIMEDOUT, AbortError, and the undici
headers/body/socket timeouts. Those errors can fire after Discord has already
received and created the message but before the client reads the response, so
replaying the non-idempotent createChannelMessage POST delivers the same
message twice while reporting success.

Add a pre-connect-only classifier (isRetryableDiscordPreConnectError) covering
errors that provably never reached Discord (DNS/connect refused/connect
timeout) plus rate-limit rejections, mirroring the Telegram send-path
carve-out. The retry runner now accepts a per-call nonIdempotent option; the
message-create and thread-create call sites opt in so ambiguous post-connect
errors surface to the caller instead of double-sending. Idempotent REST calls
(reactions, edits, DM-channel lookup, uploads) keep the broader transient set.

* fix(discord): retry nonce-enforced message creates

* fix(discord): scope create retries by endpoint

* fix(discord): stabilize sticker and poll create nonce across retries

* fix(discord): tighten create retry safety

* fix(discord): preserve nonce-safe retries

* fix(discord): scope nonce fields to message creates

* test(discord): cover nonce-safe direct sends

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 00:54:23 -07:00
tiffanychum da0103f025 fix(discord): messages sent during gateway reconnect are silently dropped (#100896)
* fix(discord): drain queued outbound deliveries after gateway reconnect (#56610)

Discord sends that failed while the gateway websocket was reconnecting
(close codes 1005/1006) stayed stuck in the outbound delivery queue and
were silently dropped. Classify sends that fail while the registered
gateway is disconnected as retryable, and drain pending discord queue
entries when the gateway reconnects, matching the WhatsApp/Telegram
reconnect drains.

* fix(discord): harden reconnect recovery

Co-authored-by: tiffanychum <71036662+tiffanychum@users.noreply.github.com>

* refactor(discord): remove unsafe reconnect replay

* fix(discord): bound reconnect retry per request

Co-authored-by: tiffanychum <71036662+tiffanychum@users.noreply.github.com>

* chore(changelog): leave reconnect fix to release flow

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 23:56:17 +01:00
Peter Steinberger 23716de446 docs: document discord extension sources 2026-06-04 22:06:01 -04:00
Peter Steinberger 2644f26a35 fix(discord): centralize retry status parsing 2026-05-29 08:14:57 -04:00
Peter Steinberger a6ccb5f698 fix(discord): retry transient outbound failures 2026-05-02 02:47:06 +01:00
Peter Steinberger 7e06455e64 refactor: trim discord helper exports 2026-05-01 16:10:50 +01:00
Peter Steinberger f0adbd48e8 refactor(discord): internalize discord client 2026-04-29 14:22:58 +01:00
Peter Steinberger c222a44e6f refactor: add retry runtime sdk seam 2026-03-28 05:59:07 +00:00
Peter Steinberger d7018aaf19 refactor: move bundled extension deps to plugin packages 2026-03-19 00:04:50 +00:00