When archiving selected emails and no archive folder is found, show a dialog asking the user to either choose an existing folder or create a new Archive folder
When creating, the JMAP role: archive is sent to the server and the role is stored in the local DB; for IMAP the folder is created and tagged in the local DB
Preserve manually-set roles across IMAP syncs: if the IMAP server doesn't expose a \Archive special-use attribute, the locally-assigned role is retained between syncs
Same dialog is shown for the spam/junk case
Test plan
Unit tests: createMailboxWithRole (IMAP + JMAP), role-preservation across sync
## Summary
- When archiving selected emails and no archive folder is found, show a dialog asking the user to either choose an existing folder or create a new `Archive` folder
- When creating, the JMAP `role: archive` is sent to the server and the role is stored in the local DB; for IMAP the folder is created and tagged in the local DB
- Preserve manually-set roles across IMAP syncs: if the IMAP server doesn't expose a `\Archive` special-use attribute, the locally-assigned role is retained between syncs
- Same dialog is shown for the spam/junk case
## Test plan
- [ ] Unit tests: `createMailboxWithRole` (IMAP + JMAP), role-preservation across sync
- [ ] Widget tests: dialog shown when archive missing, Create path, Choose existing path
- All 472 tests pass, no analyzer warnings
🤖 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
Archivefolderrole: archiveis sent to the server and the role is stored in the local DB; for IMAP the folder is created and tagged in the local DB\Archivespecial-use attribute, the locally-assigned role is retained between syncsTest plan
createMailboxWithRole(IMAP + JMAP), role-preservation across sync🤖 Generated with Claude Code