Never send a message twice; two small composer and sidebar fixes #38

Merged
jcoffey-dev merged 1 commits from fix/send-no-duplicates into main 2026-10-05 20:28:35 +00:00
1 Commits
Author SHA1 Message Date
jcoffey-dev f8d282e714 Never send a message twice; two small composer and sidebar fixes
ci / github (pull_request) Skipped
ci / version (pull_request) Skipped
ci / node (pull_request) Successful in 3m4s
ci / publish (pull_request) Skipped
ci / docker-build (pull_request) Successful in 51s
Never send twice after a lost reply. When a send's request went out and
no answer came back, the composer said "Send failed" and offered the
draft back; if Stalwart had in fact accepted it, sending the draft again
delivered it twice. Each send now carries its own Message-ID (RFC 5322
§3.6.4), kept on the draft if it comes back, and an unanswered send asks
the server what it did before calling it a failure:

- submitted (EmailSubmission/query by emailIds, RFC 8621 §7.3): it was
  sent, and the composer says so;
- created but never submitted: removed from Sent, and the failure stands;
- not there: the failure stands;
- the server can't be asked either: the composer says it couldn't
  confirm and to check Sent, instead of a plain "Send failed".

A refusal (4xx) is not checked: the server did not run it. Sending again
a draft that came back asks first, and sends nothing if a message with
its Message-ID already exists. Stalwart expunges submissions after its
hold period, so later on any surviving copy counts as sent.

Also:
- Suggestions no longer offer an address that is already in To, Cc or
  Bcc while typing in one of the other two.
- The collapsed sidebar no longer draws a cut-off "FOLDERS": the rule
  hiding section headings lost to a later one of the same weight.

New strings: 3, in all ten catalogs (1633 -> 1636, no new fallbacks).
2026-10-05 12:38:06 -07:00