Files
sharedinbox/PLAN.md
T
Thomas GüttlerandClaude Sonnet 4.6 4c6c741e00 UI gaps: account picker in compose, flag button in detail; update docs
- compose_screen: show From dropdown when >1 account, auto-select first
  account when none pre-selected (fixes silent failure on new mail)
- email_detail_screen: add flag/unflag star button with amber highlight
- PLAN.md: collapse completed phases, list remaining UI gaps
- README: fix stale "vendored" package reference, update platform table,
  add Working Features section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 10:17:14 +02:00

1.5 KiB

SharedInbox Flutter — Plan

Architecture

IMAP/SMTP server
       ↓
  AccountSyncManager (IMAP IDLE per account)
       ↓  writes
  Drift (SQLite, local DB)
       ↓  reads
  UI (Riverpod + go_router)

UI never touches the network. The sync layer runs independently.

Phases

Phase Scope Status
0 — Scaffold pubspec, Drift schema, DI, router, enough_mail from pub.dev Done
1 — Core models Account, Mailbox, Email, EmailBody, repository interfaces Done
2 — DB layer Drift tables, AccountRepositoryImpl, MailboxRepositoryImpl, EmailRepositoryImpl Done
3 — IMAP sync connectImap, MailboxRepositoryImpl.syncMailboxes, EmailRepositoryImpl.syncEmails Done
4 — IMAP IDLE AccountSyncManager with exponential-backoff reconnect Done
5 — SMTP send connectSmtp, EmailRepositoryImpl.sendEmail Done
6 — UI AccountList, AddAccount, MailboxList, EmailList, EmailDetail, Compose, Settings Done
7 — Dev tooling Nix flake, Taskfile, Stalwart dev server, unit + integration tests, CI, pre-commit Done
8 — UI gaps Account picker in compose, flag button, move-to-trash In progress

Next candidates

  • Account picker in compose screen (currently broken for new mail with >1 account)
  • Flag / star button in email detail
  • Move to trash from email detail
  • Search (IMAP SEARCH command)
  • Thread view (group by References / In-Reply-To)
  • Attachment download + open
  • Draft auto-save