Add IMAP folder navigation drawer + per-API E2E CI matrix
Folder view: a left navigation drawer lists each account's IMAP folders; tapping one browses and caches that folder's mail. IMAP UIDs are unique only within a folder, so message identity, the fetch/read/flag/delete paths, sync, and the Room cache all became folder-aware (id = "accountId:folder:uid"; new `folder` column; schema v7->v8). Standard folders (Inbox/Sent/Drafts/Spam/Trash/ Archive) surface with friendly names + icons via RFC 6154 SPECIAL-USE attributes with a case-insensitive name fallback; the multi-account drawer adds an account switcher and a unified "All Inboxes". INBOX stays the only auto-synced, IDLE-watched, notifying folder; other folders sync on demand. Lower minSdk 33 -> 29 for a rolling ~7-year Android support window; guard the API-33 POST_NOTIFICATIONS runtime request accordingly. Tests and CI: - Bump espresso-core 3.6.1 -> 3.7.0 so Compose UI tests run on API 37 (3.6.1's InputManagerEventInjectionStrategy reflects a removed hidden method). - New coverage across layers: FolderRoleTest, ImapClientTest folder cases, MailboxViewModelTest, MailRepositoryImplTest folder routing, a FolderDrawer Compose UI test, and LibreMailDatabaseTest folder DAO/reconcile tests. - Gradle Managed Devices + a CI E2E matrix over every API 29-36; a single "CI passed" gate job fans in all jobs and is required by branch protection. - Non-blocking, custom-provisioned API 37 (preview) E2E job with image caching. - Build + unit-test jobs run on arm64 (ubuntu-24.04-arm); emulators stay x86_64. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -33,6 +33,17 @@
|
||||
<string name="mailbox_welcome_title">Welcome to LibreMail</string>
|
||||
<string name="mailbox_welcome_subtitle">Add an account to start reading your mail.</string>
|
||||
|
||||
<!-- Folder navigation drawer -->
|
||||
<string name="drawer_open">Show folders</string>
|
||||
<string name="drawer_switch_account">Switch account</string>
|
||||
<string name="folder_all_inboxes">All Inboxes</string>
|
||||
<string name="folder_inbox">Inbox</string>
|
||||
<string name="folder_sent">Sent</string>
|
||||
<string name="folder_drafts">Drafts</string>
|
||||
<string name="folder_archive">Archive</string>
|
||||
<string name="folder_spam">Spam</string>
|
||||
<string name="folder_trash">Trash</string>
|
||||
|
||||
<!-- Compose -->
|
||||
<string name="compose_from">From</string>
|
||||
<string name="compose_to">To</string>
|
||||
|
||||
Reference in New Issue
Block a user