Files
buzz/desktop/src
Duncan 247f897d74 fix(desktop): survive rejected send in permission retransmit loop
The retransmit orchestrator installed its listener and interval, then
awaited the first send outside the loop's settle path. A rejected first
send propagated to the caller with the loop never torn down: the
listener and interval stayed live firing unhandled `void send()`, while
both UI callers re-enabled the buttons — so a retry with the opposite
option left two loops retransmitting different optionIds under one nonce.

Route the first send through the same guarded transmit path as every
tick and swallow a rejected send: a rejection is the transport failure
this loop exists to survive, so the next tick retries. The orchestrator
never rejects, guaranteeing exactly one loop per click and no unhandled
promise on any path. Permanent send failure ends like silence — retry
until `expiresAt`, then the card fails closed.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-08-28 13:16:54 -04:00
..
2026-03-09 13:02:11 -07:00