A queued message whose send failed says why, and one cut off goes again - #49
Merged
Merged
Conversation
… with its reason A queued follow-up whose send failed for a moment as its turn ended was held for good: any failure put it back waiting for Send now, and it looked exactly like one still waiting. A send interrupted — the link dropped, the command cut off, the account's access still being read past its wait — now goes back unheld for the queue to send once the link and the gates allow, up to three times. A send refused with words is held with them, for its bubble to say rather than the banner over the conversation; Retry lifts the hold before it sends.
A held send looked exactly like one waiting; only the clock's tooltip changed. The held bubble now says its send's reason in the clock's place, one line in the error tone, and its ↑ becomes Retry. A message queued behind a held one says it waits for it. The next one, while a question or an approval waits on the person, says "Waits for your answer above", and its ↑ waits too, saying so, instead of a press that did nothing.
/design-queued.html draws a queued follow-up waiting, held with its reason, behind a held one, and the next while a question waits on the person, side by side at one width.
…ame ids An interrupted send may have reached the server before its answer was lost, and its automatic retry minted a new message and command id, starting a second turn with the same words. A queued send now settles its ids before it goes; one sent back after an interruption keeps them, and the retry goes with them, which the server's command receipts take once. A person's Retry after a refusal goes with fresh ids, so a refusal remembered by id never comes back.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On a Mate (Milo), a turn ended and the follow-up queued under it was never sent.
The cause. A queued message lives in the tab and goes out when the turn ends. If that send failed at that moment (the account check timing out, the link dropping, a refusal), the message was put back held. A held message:
Now:
OrchestrationEngine.ts) and can never start a second turn.Tests:
queuedMessageStoretables cover a held reason, the never-due rule, Retry clearing the hold and the ids kept across a requeue.queuedSendOutcomecovers 9 cases, andqueuedSendAttemptIds3./design-queued.htmlshows the bubble's states.🤖 Generated with Claude Code