Mail: Read state changes fail offline instead of entering the durable queue #1244

Open
opened 2026-10-06 23:01:04 +00:00 by kayg · 0 comments
Owner

Steps

  1. Connect the repo's local IMAP test account and let Mail index a message.
  2. Stop the local IMAP provider so the Connected Account is offline.
  3. Mark the indexed message read or unread in Mail.

Expected

Mail accepts the state change into its durable queue and shows the accepted state. The server delivers it when the provider returns, as specified in docs/DESIGN.md §§45 and 53.

Actual

change_read_state opens a new IMAP connection and calls set_seen before it updates the Mail Index. When the provider is offline, the request fails and no queued intent or local state change exists. The reader waits for that request before updating its row.

Evidence

crates/plugins/mail/src/routes.rs, change_read_state() around lines 2223–2303; apps/web/src/lib/mail/MailView.svelte, markRead() around lines 371–390.

Severity: major.

### Steps 1. Connect the repo's local IMAP test account and let Mail index a message. 2. Stop the local IMAP provider so the Connected Account is offline. 3. Mark the indexed message read or unread in Mail. ### Expected Mail accepts the state change into its durable queue and shows the accepted state. The server delivers it when the provider returns, as specified in `docs/DESIGN.md` §§45 and 53. ### Actual `change_read_state` opens a new IMAP connection and calls `set_seen` before it updates the Mail Index. When the provider is offline, the request fails and no queued intent or local state change exists. The reader waits for that request before updating its row. ### Evidence `crates/plugins/mail/src/routes.rs`, `change_read_state()` around lines 2223–2303; `apps/web/src/lib/mail/MailView.svelte`, `markRead()` around lines 371–390. Severity: major.
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1244
No description provided.