feat(settings): add "Refresh cached data" recovery action

When the mailbox view gets into a stale or wrong state, the only escape
was the browser's "clear site data" — which also wipes the saved account
list, forcing a re-login of every account.

Add a non-destructive "Refresh cached data" button under Settings →
Data. It clears the server-derived caches (contacts, calendars,
identities, per-account snapshots) and reloads so they re-fetch fresh,
while preserving accounts, sessions, settings, themes and user content
(templates, S/MIME). Two-click confirm to avoid an accidental reload.

English strings added across all locales (translation follow-up); unit
tests cover the cache-clear (keeps account-registry/auth/prefs) and the
reload.
This commit is contained in:
Shuki Vaknin
2026-07-21 20:58:55 +02:00
committed by Linus Rath
parent f2703bcc27
commit f51ec50443
23 changed files with 216 additions and 0 deletions
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Zobrazit dostupné klávesové zkratky",
"button": "Zobrazit zkratky"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Resetovat nastavení",
"description": "Obnovit všechna nastavení na výchozí hodnoty",
+5
View File
@@ -1631,6 +1631,11 @@
"description": "Se tilgængelige tastaturgenveje",
"button": "Vis genveje"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Nulstil indstillinger",
"description": "Gendan alle indstillinger til standardværdier",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Verfügbare Tastaturkürzel anzeigen",
"button": "Tastaturkürzel anzeigen"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Einstellungen zurücksetzen",
"description": "Alle Einstellungen auf Standardwerte zurücksetzen",
+5
View File
@@ -1637,6 +1637,11 @@
"description": "View available keyboard shortcuts",
"button": "View Shortcuts"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Reset Settings",
"description": "Restore all settings to default values",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Ver atajos de teclado disponibles",
"button": "Ver Atajos"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Restablecer Configuración",
"description": "Restaurar toda la configuración a los valores predeterminados",
+5
View File
@@ -1635,6 +1635,11 @@
"description": "مشاهده میانبرهای صفحه کلید موجود",
"button": "مشاهده میانبرها"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "بازنشانی تنظیمات",
"description": "بازگردانی همه تنظیمات به مقادیر پیش‌فرض",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Voir les raccourcis clavier disponibles",
"button": "Voir les raccourcis"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Réinitialiser les paramètres",
"description": "Restaurer tous les paramètres par défaut",
+5
View File
@@ -1631,6 +1631,11 @@
"description": "Elérhető billentyűparancsok megtekintése",
"button": "Parancsok megtekintése"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Beállítások visszaállítása",
"description": "Összes beállítás visszaállítása az alapértelmezett értékekre",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Visualizza le scorciatoie da tastiera disponibili",
"button": "Visualizza scorciatoie"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Ripristina impostazioni",
"description": "Ripristina tutte le impostazioni ai valori predefiniti",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "利用可能なキーボードショートカットを表示",
"button": "ショートカットを表示"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "設定をリセット",
"description": "すべての設定をデフォルト値に戻す",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "사용 가능한 키보드 단축키를 확인해 보세요",
"button": "단축키 보기"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "설정 초기화",
"description": "모든 설정을 기본값으로 되돌려요",
+5
View File
@@ -1609,6 +1609,11 @@
"description": "Skatīt pieejamos tastatūras īsinājumtaustiņus",
"button": "Rādīt īsinājumtaustiņus"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Atiestatīt iestatījumus",
"description": "Atjaunot visus iestatījumus uz noklusējuma vērtībām",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Bekijk beschikbare sneltoetsen",
"button": "Sneltoetsen bekijken"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Instellingen resetten",
"description": "Herstel alle instellingen naar standaardwaarden",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Wyświetl dostępne skróty klawiszowe",
"button": "Pokaż skróty"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Resetuj ustawienia",
"description": "Przywróć wszystkie ustawienia do wartości domyślnych",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Visualizar atalhos de teclado disponíveis",
"button": "Ver Atalhos"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Redefinir Configurações",
"description": "Restaurar todas as configurações para valores padrão",
+5
View File
@@ -1635,6 +1635,11 @@
"description": "Vedeți comenzile rapide de la tastatură disponibile",
"button": "Comenzi rapide de vizualizare"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Resetare setări",
"description": "Restabiliți toate setările la valorile implicite",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Просмотреть доступные сочетания клавиш",
"button": "Показать сочетания"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Сбросить настройки",
"description": "Восстановить все настройки до значений по умолчанию",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Mevcut klavye kısayollarını görüntüleyin",
"button": "Kısayolları Görüntüle"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Ayarları Sıfırla",
"description": "Tüm ayarları varsayılan değerlerine geri yükle",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "Переглянути доступні комбінації клавіш",
"button": "Перегляд ярликів"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "Скинути налаштування",
"description": "Відновити всі налаштування до значень за замовчуванням",
+5
View File
@@ -1628,6 +1628,11 @@
"description": "查看可用快捷键",
"button": "查看快捷方式"
},
"refresh_cache": {
"label": "Refresh cached data",
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions \u2014 fixes a stale or wrong view without signing out.",
"button": "Refresh"
},
"reset_settings": {
"label": "重置设置",
"description": "将所有设置恢复为默认值",