feat: add address book, fix email layout, update dependencies

- Address book with JMAP sync and local fallback (contacts CRUD,
  search/filter, composer autocomplete, i18n for 8 languages)
- Fix email layout: remove horizontal scroll, left-side clipping,
  and empty spaces from blocked external images in newsletters
- Update all dependencies to latest compatible versions
- Expand i18n from 3 to 8 languages (added ES, IT, DE, NL, PT)
- Upgrade Next.js to 16.1.6 for security patches
This commit is contained in:
Matthieu MALVACHE
2026-02-16 17:25:20 +01:00
committed by Matthieu MALVACHE
parent 5d60fe5186
commit 8a5bc9b88d
27 changed files with 2927 additions and 968 deletions
+54
View File
@@ -26,6 +26,7 @@
"search_placeholder": "E-Mails durchsuchen...",
"storage": "Speicher",
"sign_out": "Abmelden",
"contacts": "Kontakte",
"settings": "Einstellungen",
"loading_mailboxes": "Postfächer werden geladen...",
"push_connected": "Echtzeit-Updates aktiv",
@@ -742,5 +743,58 @@
"identity_short": "über {name}",
"subaddress_tag": "+{tag}"
}
},
"contacts": {
"title": "Kontakte",
"search_placeholder": "Kontakte suchen...",
"create_new": "Neuer Kontakt",
"empty_state": "Keine Kontakte",
"empty_search": "Keine Kontakte gefunden",
"delete_confirm": "Möchten Sie diesen Kontakt wirklich löschen?",
"local_mode": "Kontakte werden lokal gespeichert (Server unterstützt kein JMAP Contacts)",
"back_to_mail": "Zurück zur E-Mail",
"detail": {
"emails": "E-Mail-Adressen",
"phones": "Telefonnummern",
"organizations": "Organisationen",
"addresses": "Adressen",
"notes": "Notizen",
"no_contact_selected": "Kontakt auswählen, um Details anzuzeigen",
"created": "Erstellt",
"updated": "Zuletzt aktualisiert"
},
"form": {
"create_title": "Neuer Kontakt",
"edit_title": "Kontakt bearbeiten",
"given_name": "Vorname",
"surname": "Nachname",
"email": "E-Mail",
"email_placeholder": "email@example.com",
"phone": "Telefon",
"phone_placeholder": "+49 30 1234 5678",
"organization": "Organisation",
"organization_placeholder": "Firmenname",
"note": "Notizen",
"note_placeholder": "Notiz hinzufügen...",
"context_work": "Arbeit",
"context_private": "Privat",
"add_email": "E-Mail hinzufügen",
"add_phone": "Telefon hinzufügen",
"save": "Speichern",
"cancel": "Abbrechen",
"creating": "Wird erstellt...",
"updating": "Wird aktualisiert...",
"name_required": "Mindestens ein Vor- oder Nachname ist erforderlich",
"email_invalid": "Bitte geben Sie eine gültige E-Mail-Adresse ein",
"save_failed": "Kontakt konnte nicht gespeichert werden"
},
"toast": {
"created": "Kontakt erstellt",
"updated": "Kontakt aktualisiert",
"deleted": "Kontakt gelöscht",
"error_create": "Kontakt konnte nicht erstellt werden",
"error_update": "Kontakt konnte nicht aktualisiert werden",
"error_delete": "Kontakt konnte nicht gelöscht werden"
}
}
}