feat: cross-account "All accounts" views + full group/shared-account support
Add cross-account aggregate mail views and make group/shared (delegated) accounts first-class in every aggregate view. (The unified mailbox, the "All Mail" view, and "include group inboxes" already exist on main; this branch adds the cross-account views and the shared-account correctness work.) New views (admin-gated + per-user toggle, nested under Unified Mailbox): - Cross-account "All accounts": All unread / All starred / All mail across every connected account, including shared/group folders. Each list labels the source folder of every message. Source reference on aggregated emails (the core of the shared-account work): - Replace the overloaded `accountId` with two explicit, always-set fields: `sourceClientAccountId` (the login the mail is reachable through) and `sourceAccountId` (the owning JMAP account). `accountId` stays display-only. - Resolution is branch-free everywhere: pick the client by sourceClientAccountId, pass sourceAccountId as the JMAP accountId (no-op for personal), read the owner's mailbox list cached by JMAP id. No capability scan. Shared/group-account correctness across all aggregate views: - Route open (click + auto-fetch), thread/conversation open + reply-refresh, mark read, star, move, delete (account-scoped trash), archive (owner-routed createMailbox / fetchAccountMailboxes), and spam + undo via the source ref. - Add accountId params to toggleStar / batchMarkAsRead / batchDeleteEmails / createMailbox where missing. - Fix local unread/total counter math for shared folders via emailInMailbox() (matches namespaced shared ids and bare own ids). - Keep the unified/cross virtual selection on background mailbox refresh (no jump back to inbox after deleting in All Drafts/Junk). Junk UX: - In "All Junk" the spam action becomes "not spam" in the viewer, context menu, and list hover icons; undo routes shared mail back to its own inbox. Admin: - Policy gates crossUnread/Starred/AllViewEnabled, each noting the matching per-user toggle (allMailViewEnabled clarified too). i18n / docs / tests: - locales (19): cross-view labels + descriptions and hover not_spam, translated in all shipped languages. - FEATURES.md + README.md document the new views and group-account support. - Tests for shared-account routing (single + batch + undoSpam), decoration, and unified-selection preservation.
This commit is contained in:
+17
-1
@@ -134,7 +134,10 @@
|
||||
"nav_label": "내비게이션",
|
||||
"add_app": "앱",
|
||||
"shared": "공유됨",
|
||||
"scheduled": "예약됨"
|
||||
"scheduled": "예약됨",
|
||||
"unified_all_unread": "모든 읽지 않음",
|
||||
"unified_all_starred": "모든 별표",
|
||||
"unified_all_mail": "모든 메일"
|
||||
},
|
||||
"protocol_handlers": {
|
||||
"title": "기본 앱",
|
||||
@@ -930,6 +933,18 @@
|
||||
"description": "데스크톱 전용 파워 유저 레이아웃으로, 다중 탭 메시지 탐색과 계정 간 워크플로우를 지원합니다. 표준 인터페이스에는 영향이 없으며 언제든지 되돌릴 수 있습니다.",
|
||||
"open_label": "Pro 인터페이스 열기",
|
||||
"back_to_standard": "표준으로 돌아가기"
|
||||
},
|
||||
"cross_unread": {
|
||||
"label": "모든 계정: 읽지 않음",
|
||||
"description": "모든 계정 섹션에 모든 계정의 읽지 않은 메일을 나열하는 항목을 표시합니다. 스팸, 보낸편지함, 보관함, 휴지통, 임시보관함을 제외한 모든 폴더가 대상입니다."
|
||||
},
|
||||
"cross_starred": {
|
||||
"label": "모든 계정: 별표",
|
||||
"description": "모든 계정 섹션에 모든 계정의 별표 메일을 나열하는 항목을 표시합니다. 스팸, 보낸편지함, 보관함, 휴지통, 임시보관함을 제외한 모든 폴더가 대상입니다."
|
||||
},
|
||||
"cross_all": {
|
||||
"label": "모든 계정: 모든 메일",
|
||||
"description": "모든 계정 섹션에 모든 계정의 모든 메일을 나열하는 항목을 표시합니다. 스팸, 보낸편지함, 보관함, 휴지통, 임시보관함을 제외한 모든 폴더가 대상입니다."
|
||||
}
|
||||
},
|
||||
"keywords": {
|
||||
@@ -1186,6 +1201,7 @@
|
||||
"archive": "보관",
|
||||
"tag": "태그",
|
||||
"spam": "스팸으로 표시",
|
||||
"not_spam": "스팸 아님",
|
||||
"none_selected": "선택된 액션 없음",
|
||||
"mode_label": "표시 모드",
|
||||
"mode_inline": "목록 안쪽",
|
||||
|
||||
Reference in New Issue
Block a user