- EmailRepository: add searchEmails(accountId, mailboxPath, query)
- EmailRepositoryImpl: UID SEARCH with OR SUBJECT/TEXT criteria,
fetch ENVELOPE+FLAGS for matching UIDs
- EmailListScreen: toggle search bar in AppBar; submit triggers server
search; results replace the stream list; ESC/back closes search
- Refactored list into _buildList() shared by stream and search views
- README/PLAN.md updated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- email_detail: add Move-to-folder button (bottom-sheet mailbox picker,
excludes current folder, calls moveEmail on server)
- email_list: show amber star for flagged, paperclip for attachments
in trailing area alongside date
- PLAN.md: mark phase 8 done
- README: add flag/move/attachment to working features
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>
IMAP/SMTP email client with offline-first architecture:
sync engine writes to Drift (SQLite), UI reads reactively
from the local DB. enough_mail vendored under packages/.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>