Remove Reply All button from the single-mail-view app bar.
Add Mark as Spam button before the Delete button; moves the email to the junk mailbox (role junk) with undo support, or shows a snackbar if no junk folder is found.
Reply button now acts as Reply All with dialog: collects all addresses from From/To/Cc, filters out the account's own address, deduplicates, then:
≤1 candidate → navigates directly to compose (no dialog, same as a simple reply).
≥2 candidates → shows a "Reply All" dialog where each address can be assigned to To, Cc, or Skip. Addresses from the incoming Cc default to Cc; From/To addresses default to To.
Test plan
Reply All tooltip is absent from the app bar
Tapping Reply on a single-recipient email skips the dialog and goes directly to compose
Tapping Reply on a multi-recipient email (with a Cc address) shows the Reply All dialog listing all non-own addresses
Mark as spam tooltip is present in the app bar
Tapping Mark as Spam when no junk folder exists shows a snackbar
All 135 widget tests pass; all 329 unit tests pass; flutter analyze clean
## Summary
- **Remove Reply All button** from the single-mail-view app bar.
- **Add Mark as Spam button** before the Delete button; moves the email to the junk mailbox (role `junk`) with undo support, or shows a snackbar if no junk folder is found.
- **Reply button now acts as Reply All with dialog**: collects all addresses from From/To/Cc, filters out the account's own address, deduplicates, then:
- ≤1 candidate → navigates directly to compose (no dialog, same as a simple reply).
- ≥2 candidates → shows a "Reply All" dialog where each address can be assigned to **To**, **Cc**, or **Skip**. Addresses from the incoming Cc default to Cc; From/To addresses default to To.
## Test plan
- [x] `Reply All` tooltip is absent from the app bar
- [x] Tapping Reply on a single-recipient email skips the dialog and goes directly to compose
- [x] Tapping Reply on a multi-recipient email (with a Cc address) shows the Reply All dialog listing all non-own addresses
- [x] `Mark as spam` tooltip is present in the app bar
- [x] Tapping Mark as Spam when no junk folder exists shows a snackbar
- [x] All 135 widget tests pass; all 329 unit tests pass; `flutter analyze` clean
🤖 Generated with [Claude Code](https://claude.com/claude-code)
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
junk) with undo support, or shows a snackbar if no junk folder is found.Test plan
Reply Alltooltip is absent from the app barMark as spamtooltip is present in the app barflutter analyzeclean🤖 Generated with Claude Code