You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement recipients, subject, rich or supported formatted body with plain text, draft revisions, autosave, conflict recovery, file and photo attachment selection, upload and download progress, send status, APNs registration, device-token rotation, notification privacy, and deep links.
Tasks
Define Swift 6 models, actors, storage, API, and UI boundaries for this scope.
Implement the smallest complete native capability.
Add XCTest, Swift Concurrency, migration, UI, accessibility, and device tests where applicable.
Update generated clients, translations, privacy declarations, and distribution documentation.
Acceptance criteria
Drafts survive termination and reconcile without overwriting newer server revisions.
Send retries cannot duplicate a confirmed message.
Attachment limits, cancellation, authorization, and recovery match the CDN contract.
Notification previews default to privacy-safe content and deep links reauthorize before opening mail.
Account isolation, data protection, accessibility, EN default, and ES completeness match the web and macOS contracts.
Tokens, credentials, message content, recipients, and personal data never enter logs, crash reports, screenshots, fixtures, URLs, or notification defaults.
The capability is independently reviewable and rollback-safe.
Validation
Run draft timing and conflict, send idempotency, attachment lifecycle, background transfer, APNs token rotation, notification privacy, deep-link, termination, and physical-device tests.
Run Swift build, XCTest, strict concurrency checks, generated-client diff, and the affected simulator and physical-device UI tests.
Use sanitized fixtures and protected accounts only for final manual provider validation.
Offline state, background execution, notification privacy, generated contracts, and device credentials can diverge from server truth. Use actors, Keychain, bounded caches, explicit conflict states, and real-device validation.
Out of scope
Undo send, scheduling, signatures, templates, notification service extensions with mail content, and widgets.
Plan reference
Post-1.0 — iPhone and iPad: compose and notifications.
Objective
Add native composition, synchronized drafts, replies, forwarding, attachment transfer, idempotent send, and privacy-safe APNs notifications.
Scope
Tasks
Acceptance criteria
Drafts survive termination and reconcile without overwriting newer server revisions.
Send retries cannot duplicate a confirmed message.
Attachment limits, cancellation, authorization, and recovery match the CDN contract.
Notification previews default to privacy-safe content and deep links reauthorize before opening mail.
Account isolation, data protection, accessibility, EN default, and ES completeness match the web and macOS contracts.
Tokens, credentials, message content, recipients, and personal data never enter logs, crash reports, screenshots, fixtures, URLs, or notification defaults.
The capability is independently reviewable and rollback-safe.
Validation
Run draft timing and conflict, send idempotency, attachment lifecycle, background transfer, APNs token rotation, notification privacy, deep-link, termination, and physical-device tests.
Run Swift build, XCTest, strict concurrency checks, generated-client diff, and the affected simulator and physical-device UI tests.
Use sanitized fixtures and protected accounts only for final manual provider validation.
Dependencies
Post-1.0 work. Blocked until Mailflow 1.0.0 is released: https://github.com/Tutitoos/mailflow/milestone/9
Risks
Offline state, background execution, notification privacy, generated contracts, and device credentials can diverge from server truth. Use actors, Keychain, bounded caches, explicit conflict states, and real-device validation.
Out of scope