feat: mail UI improvements - folder mapping, display name, resize perf, list header

- Add configurable folder mapping (sent/drafts/spam/trash) per account
- Migration 0005_folder_mapping.sql with 4 new columns on mail_accounts
- Backend: send_mail uses account.sent_folder_imap_name if set
- Backend: _build_folder_hierarchy respects folder_mapping for is_standard
- Frontend: MailSettings shows folder mapping editor per account
- Frontend: MailSettings allows editing display_name for existing accounts
- Frontend: MailFolderTree shows display_name || email, removes MailIcon
- Frontend: ResizablePanel isDragging state with contain:strict + pointer-events:none
- Frontend: MailList merges select-all and sort controls into one line
This commit is contained in:
Agent Zero
2026-07-17 23:17:52 +02:00
parent 04c419402b
commit db433e81f1
9 changed files with 295 additions and 71 deletions
+4
View File
@@ -48,6 +48,10 @@ class MailAccount(Base, TenantMixin):
encrypted_password: Mapped[str] = mapped_column(Text, nullable=False)
is_shared: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)
is_active: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True)
sent_folder_imap_name: Mapped[str | None] = mapped_column(String(255), nullable=True)
drafts_folder_imap_name: Mapped[str | None] = mapped_column(String(255), nullable=True)
spam_folder_imap_name: Mapped[str | None] = mapped_column(String(255), nullable=True)
trash_folder_imap_name: Mapped[str | None] = mapped_column(String(255), nullable=True)
deleted_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)