New markAllAsRead(accountId, mailboxPath) on EmailRepository — finds all unread emails in the mailbox, enqueues a flag_seen pending change for each, then bulk-updates is_seen = true and has_unread = false on the threads in a single transaction
EmailListScreen gains a PopupMenuButton overflow menu with "Mark all as read"
EmailRepositoryContract gains a markAllAsRead test verifying mailbox-scoped read marking
## Summary
- New `markAllAsRead(accountId, mailboxPath)` on `EmailRepository` — finds all unread emails in the mailbox, enqueues a `flag_seen` pending change for each, then bulk-updates `is_seen = true` and `has_unread = false` on the threads in a single transaction
- `EmailListScreen` gains a `PopupMenuButton` overflow menu with "Mark all as read"
- `EmailRepositoryContract` gains a `markAllAsRead` test verifying mailbox-scoped read marking
Closes part of #19 (U8).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
markAllAsRead(accountId, mailboxPath)onEmailRepository— finds all unread emails in the mailbox, enqueues aflag_seenpending change for each, then bulk-updatesis_seen = trueandhas_unread = falseon the threads in a single transactionEmailListScreengains aPopupMenuButtonoverflow menu with "Mark all as read"EmailRepositoryContractgains amarkAllAsReadtest verifying mailbox-scoped read markingCloses part of #19 (U8).