feat: implement email keyword management with color tagging

- Introduced a new settings section for managing email keywords (labels/tags) with associated colors.
- Updated email context menu, viewer, and list item components to support the new keyword system.
- Refactored color tag handling to accommodate both new $label: and legacy $color: prefixes.
- Added utility functions for retrieving email color tags based on keywords.
- Enhanced localization files to include translations for the new keyword management features.
- Updated the settings store to manage keyword definitions, including add, update, delete, and reorder functionalities.
- Added tests for the new keyword handling logic.
This commit is contained in:
Linus Rath
2026-03-11 18:40:09 +01:00
parent 61459c4923
commit ffeb534740
19 changed files with 558 additions and 100 deletions
+19 -1
View File
@@ -447,7 +447,8 @@
"calendar": "Kalender",
"filters": "Filter",
"templates": "Vorlagen",
"folders": "Ordner"
"folders": "Ordner",
"keywords": "Schlüsselwörter"
},
"tab_groups": {
"general": "Allgemein",
@@ -487,6 +488,23 @@
"description": "Weiche Übergänge und Effekte anzeigen"
}
},
"keywords": {
"title": "E-Mail-Schlüsselwörter",
"description": "Definieren Sie Schlüsselwörter (Labels/Tags) zum Organisieren Ihrer E-Mails mit Farben.",
"add_keyword": "Schlüsselwort hinzufügen",
"reset_defaults": "Auf Standard zurücksetzen",
"label_field": "Anzeigename",
"label_placeholder": "z.B. Arbeit, Privat, Dringend",
"id_field": "Schlüsselwort-ID",
"id_placeholder": "z.B. arbeit, privat",
"color_field": "Farbe",
"id_exists": "Diese Schlüsselwort-ID existiert bereits",
"edit": "Schlüsselwort bearbeiten",
"delete": "Schlüsselwort löschen",
"save": "Speichern",
"add": "Hinzufügen",
"cancel": "Abbrechen"
},
"language_region": {
"title": "Sprache & Region",
"description": "Konfigurieren Sie Sprach- und Regionaleinstellungen",
+19 -1
View File
@@ -459,7 +459,8 @@
"calendar": "Calendar",
"filters": "Filters",
"templates": "Templates",
"folders": "Folders"
"folders": "Folders",
"keywords": "Keywords"
},
"tab_groups": {
"general": "General",
@@ -499,6 +500,23 @@
"description": "Show smooth transitions and effects"
}
},
"keywords": {
"title": "Email Keywords",
"description": "Define keywords (labels/tags) to organize your emails with colors. These are stored as JMAP keywords on the server.",
"add_keyword": "Add Keyword",
"reset_defaults": "Reset to Defaults",
"label_field": "Display Name",
"label_placeholder": "e.g. Work, Personal, Urgent",
"id_field": "Keyword ID",
"id_placeholder": "e.g. work, personal",
"color_field": "Color",
"id_exists": "This keyword ID already exists",
"edit": "Edit keyword",
"delete": "Delete keyword",
"save": "Save",
"add": "Add",
"cancel": "Cancel"
},
"language_region": {
"title": "Language & Region",
"description": "Configure language and regional preferences",
+19 -1
View File
@@ -447,7 +447,8 @@
"calendar": "Calendario",
"filters": "Filtros",
"templates": "Plantillas",
"folders": "Carpetas"
"folders": "Carpetas",
"keywords": "Palabras clave"
},
"tab_groups": {
"general": "General",
@@ -487,6 +488,23 @@
"description": "Mostrar transiciones y efectos suaves"
}
},
"keywords": {
"title": "Palabras clave de correo",
"description": "Define palabras clave (etiquetas) para organizar tus correos con colores.",
"add_keyword": "Añadir palabra clave",
"reset_defaults": "Restablecer valores predeterminados",
"label_field": "Nombre para mostrar",
"label_placeholder": "ej. Trabajo, Personal, Urgente",
"id_field": "ID de palabra clave",
"id_placeholder": "ej. trabajo, personal",
"color_field": "Color",
"id_exists": "Esta ID de palabra clave ya existe",
"edit": "Editar palabra clave",
"delete": "Eliminar palabra clave",
"save": "Guardar",
"add": "Añadir",
"cancel": "Cancelar"
},
"language_region": {
"title": "Idioma y Región",
"description": "Configure las preferencias de idioma y región",
+19 -1
View File
@@ -447,7 +447,8 @@
"calendar": "Calendrier",
"filters": "Filtres",
"templates": "Modèles",
"folders": "Dossiers"
"folders": "Dossiers",
"keywords": "Mots-clés"
},
"tab_groups": {
"general": "Général",
@@ -487,6 +488,23 @@
"description": "Afficher les transitions et effets fluides"
}
},
"keywords": {
"title": "Mots-clés des e-mails",
"description": "Définissez des mots-clés (étiquettes) pour organiser vos e-mails avec des couleurs.",
"add_keyword": "Ajouter un mot-clé",
"reset_defaults": "Réinitialiser par défaut",
"label_field": "Nom d'affichage",
"label_placeholder": "ex. Travail, Personnel, Urgent",
"id_field": "ID du mot-clé",
"id_placeholder": "ex. travail, personnel",
"color_field": "Couleur",
"id_exists": "Cet ID de mot-clé existe déjà",
"edit": "Modifier le mot-clé",
"delete": "Supprimer le mot-clé",
"save": "Enregistrer",
"add": "Ajouter",
"cancel": "Annuler"
},
"language_region": {
"title": "Langue et région",
"description": "Configurez vos préférences linguistiques et régionales",
+19 -1
View File
@@ -447,7 +447,8 @@
"calendar": "Calendario",
"filters": "Filtri",
"templates": "Modelli",
"folders": "Cartelle"
"folders": "Cartelle",
"keywords": "Parole chiave"
},
"tab_groups": {
"general": "Generale",
@@ -487,6 +488,23 @@
"description": "Mostra transizioni ed effetti fluidi"
}
},
"keywords": {
"title": "Parole chiave e-mail",
"description": "Definisci parole chiave (etichette) per organizzare le tue e-mail con colori.",
"add_keyword": "Aggiungi parola chiave",
"reset_defaults": "Ripristina predefiniti",
"label_field": "Nome visualizzato",
"label_placeholder": "es. Lavoro, Personale, Urgente",
"id_field": "ID parola chiave",
"id_placeholder": "es. lavoro, personale",
"color_field": "Colore",
"id_exists": "Questo ID parola chiave esiste già",
"edit": "Modifica parola chiave",
"delete": "Elimina parola chiave",
"save": "Salva",
"add": "Aggiungi",
"cancel": "Annulla"
},
"language_region": {
"title": "Lingua e regione",
"description": "Configura le preferenze di lingua e regionali",
+19 -1
View File
@@ -447,7 +447,8 @@
"calendar": "カレンダー",
"filters": "フィルター",
"templates": "テンプレート",
"folders": "フォルダー"
"folders": "フォルダー",
"keywords": "キーワード"
},
"tab_groups": {
"general": "一般",
@@ -487,6 +488,23 @@
"description": "スムーズな遷移とエフェクトを表示"
}
},
"keywords": {
"title": "メールキーワード",
"description": "色でメールを整理するためのキーワード(ラベル/タグ)を定義します。",
"add_keyword": "キーワードを追加",
"reset_defaults": "デフォルトに戻す",
"label_field": "表示名",
"label_placeholder": "例:仕事、個人、緊急",
"id_field": "キーワードID",
"id_placeholder": "例:work、personal",
"color_field": "色",
"id_exists": "このキーワードIDは既に存在します",
"edit": "キーワードを編集",
"delete": "キーワードを削除",
"save": "保存",
"add": "追加",
"cancel": "キャンセル"
},
"language_region": {
"title": "言語と地域",
"description": "言語と地域の設定を構成",
+19 -1
View File
@@ -447,7 +447,8 @@
"calendar": "Agenda",
"filters": "Filters",
"templates": "Sjablonen",
"folders": "Mappen"
"folders": "Mappen",
"keywords": "Sleutelwoorden"
},
"tab_groups": {
"general": "Algemeen",
@@ -487,6 +488,23 @@
"description": "Vloeiende overgangen en effecten tonen"
}
},
"keywords": {
"title": "E-mail trefwoorden",
"description": "Definieer trefwoorden (labels/tags) om uw e-mails met kleuren te organiseren.",
"add_keyword": "Trefwoord toevoegen",
"reset_defaults": "Standaardwaarden herstellen",
"label_field": "Weergavenaam",
"label_placeholder": "bijv. Werk, Persoonlijk, Urgent",
"id_field": "Trefwoord-ID",
"id_placeholder": "bijv. werk, persoonlijk",
"color_field": "Kleur",
"id_exists": "Dit trefwoord-ID bestaat al",
"edit": "Trefwoord bewerken",
"delete": "Trefwoord verwijderen",
"save": "Opslaan",
"add": "Toevoegen",
"cancel": "Annuleren"
},
"language_region": {
"title": "Taal & Regio",
"description": "Configureer taal- en regiovoorkeuren",
+19 -1
View File
@@ -447,7 +447,8 @@
"calendar": "Calendário",
"filters": "Filtros",
"templates": "Modelos",
"folders": "Pastas"
"folders": "Pastas",
"keywords": "Palavras-chave"
},
"tab_groups": {
"general": "Geral",
@@ -487,6 +488,23 @@
"description": "Mostrar transições e efeitos suaves"
}
},
"keywords": {
"title": "Palavras-chave de e-mail",
"description": "Defina palavras-chave (rótulos/tags) para organizar seus e-mails com cores.",
"add_keyword": "Adicionar palavra-chave",
"reset_defaults": "Restaurar padrões",
"label_field": "Nome de exibição",
"label_placeholder": "ex. Trabalho, Pessoal, Urgente",
"id_field": "ID da palavra-chave",
"id_placeholder": "ex. trabalho, pessoal",
"color_field": "Cor",
"id_exists": "Este ID de palavra-chave já existe",
"edit": "Editar palavra-chave",
"delete": "Excluir palavra-chave",
"save": "Salvar",
"add": "Adicionar",
"cancel": "Cancelar"
},
"language_region": {
"title": "Idioma e Região",
"description": "Configure preferências de idioma e região",