docs(email): record reply recovery evidence
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
Updated: 2026-08-10
|
||||
|
||||
Status: `IN PROGRESS`. Canonical hub routing, provider-neutral reads, explicit-confirmed send API, editable reply UI, interrupted-send recovery, legacy SMTP retirement, send-attempt/draft export coverage, shared application context and tenant-owned draft persistence/API are implemented and locally verified; remaining draft UI, provider actions and full account-deletion lifecycle remain.
|
||||
Status: `IN PROGRESS`. Canonical hub routing, provider-neutral reads, explicit-confirmed send API, editable/persisted reply UI, interrupted-send recovery, legacy SMTP retirement, send-attempt/draft export coverage, shared application context and tenant-owned draft persistence/API are implemented and locally verified; remaining new-message/provider actions and full account-deletion lifecycle remain.
|
||||
|
||||
## Revalidated current boundaries
|
||||
|
||||
@@ -161,12 +161,19 @@ Status: `IN PROGRESS`. Canonical hub routing, provider-neutral reads, explicit-c
|
||||
- Every created draft now owns a canonical client-request UUID that survives edits and refresh and is included in the user export. This prevents a restored draft from silently obtaining a fresh ledger identity and bypassing duplicate-send protection.
|
||||
- The API can list all drafts for the authenticated owner to support refresh recovery; foreign drafts remain absent under both explicit owner predicates and the global filter.
|
||||
|
||||
## Implemented explicit reply-draft recovery UI
|
||||
|
||||
- Reply drafts stay local until Save draft is selected, then use the server ID/revision/client-request identity. Incomplete replies can be saved without weakening the stricter send validation.
|
||||
- Saved drafts appear in Job email after refresh and can be resumed. A multi-tab 409 leaves the current text visible and instructs the user to reload instead of overwriting the newer version.
|
||||
- Discard and successful-send cleanup use the current revision. If cleanup finds a newer revision after send, the UI warns rather than deleting the newer draft; the stable client-request ID still prevents a second delivery attempt.
|
||||
- Focused UI passes 11/11, full frontend 50 suites/196 tests and the production build pass. These are mocked/JSDOM claims only; browser/provider/production remain gated.
|
||||
|
||||
## Remaining MAIL-001 work
|
||||
|
||||
- Extend shared provider-neutral thread navigation while preserving provider capability differences; application context and Gmail unlink are now shared.
|
||||
- Add read/unread, pin/read-later/archive/spam/trash only where the provider supports it; identity, disconnected/read-only/send-capable and provider-status failure states are now explicit.
|
||||
- Share thread detail and link/unlink actions between hub and job workspace.
|
||||
- Add refresh recovery and compose-new-message UI on top of the bounded persistence/export/API model; replies are implemented.
|
||||
- Add compose-new-message UI and durable explicit failed-attempt identity rotation; saved reply refresh recovery is implemented.
|
||||
- Complete account deletion coverage under SEC-009 before production rollout; job-level hard-delete cascade and export coverage are verified.
|
||||
- Preserve minimal audit metadata without sensitive body logging. Free non-AI access is verified; future AI assistance remains a Pro/privacy-gated addition, not a prerequisite for basic email.
|
||||
- Complete remaining link/unlink/dismiss/draft/send/failure/two-user browser/production provider gates. Shared application-context behavior is now covered locally. No real email may be sent during repository verification.
|
||||
|
||||
Reference in New Issue
Block a user