diff --git a/client/src/i18n/translations/ar.ts b/client/src/i18n/translations/ar.ts index 2b7c56a..4ba26be 100644 --- a/client/src/i18n/translations/ar.ts +++ b/client/src/i18n/translations/ar.ts @@ -247,6 +247,7 @@ const ar: Record = { 'settings.mcp.toast.deleted': 'تم حذف الرمز', 'settings.mcp.toast.deleteError': 'فشل حذف الرمز', 'settings.account': 'الحساب', + 'settings.about': 'حول', 'settings.username': 'اسم المستخدم', 'settings.email': 'البريد الإلكتروني', 'settings.role': 'الدور', @@ -1542,6 +1543,6 @@ const ar: Record = { 'notifications.test.adminText': 'أرسل {actor} إشعاراً تجريبياً لجميع المسؤولين.', 'notifications.test.tripTitle': 'نشر {actor} في رحلتك', 'notifications.test.tripText': 'إشعار تجريبي للرحلة "{trip}".', -} - +} + export default ar \ No newline at end of file diff --git a/client/src/i18n/translations/br.ts b/client/src/i18n/translations/br.ts index a69c89c..c51907d 100644 --- a/client/src/i18n/translations/br.ts +++ b/client/src/i18n/translations/br.ts @@ -217,6 +217,7 @@ const br: Record = { 'settings.on': 'Ligado', 'settings.off': 'Desligado', 'settings.account': 'Conta', + 'settings.about': 'Sobre', 'settings.username': 'Nome de usuário', 'settings.email': 'E-mail', 'settings.role': 'Função', @@ -1537,6 +1538,6 @@ const br: Record = { 'notifications.test.adminText': '{actor} enviou uma notificação de teste para todos os admins.', 'notifications.test.tripTitle': '{actor} postou na sua viagem', 'notifications.test.tripText': 'Notificação de teste para a viagem "{trip}".', -} - +} + export default br \ No newline at end of file diff --git a/client/src/i18n/translations/cs.ts b/client/src/i18n/translations/cs.ts index a8aceef..1bf8e1d 100644 --- a/client/src/i18n/translations/cs.ts +++ b/client/src/i18n/translations/cs.ts @@ -195,6 +195,7 @@ const cs: Record = { 'settings.mcp.toast.deleted': 'Token smazán', 'settings.mcp.toast.deleteError': 'Nepodařilo se smazat token', 'settings.account': 'Účet', + 'settings.about': 'O aplikaci', 'settings.username': 'Uživatelské jméno', 'settings.email': 'E-mail', 'settings.role': 'Role', @@ -1542,6 +1543,6 @@ const cs: Record = { 'notifications.test.adminText': '{actor} odeslal testovací oznámení všem správcům.', 'notifications.test.tripTitle': '{actor} přispěl do vašeho výletu', 'notifications.test.tripText': 'Testovací oznámení pro výlet "{trip}".', -} - +} + export default cs \ No newline at end of file diff --git a/client/src/i18n/translations/de.ts b/client/src/i18n/translations/de.ts index 7199bbe..7ebb8c0 100644 --- a/client/src/i18n/translations/de.ts +++ b/client/src/i18n/translations/de.ts @@ -242,6 +242,7 @@ const de: Record = { 'settings.mcp.toast.deleted': 'Token gelöscht', 'settings.mcp.toast.deleteError': 'Token konnte nicht gelöscht werden', 'settings.account': 'Konto', + 'settings.about': 'Über', 'settings.username': 'Benutzername', 'settings.email': 'E-Mail', 'settings.role': 'Rolle', @@ -1539,6 +1540,6 @@ const de: Record = { 'notifications.test.adminText': '{actor} hat eine Testbenachrichtigung an alle Admins gesendet.', 'notifications.test.tripTitle': '{actor} hat in Ihrer Reise gepostet', 'notifications.test.tripText': 'Testbenachrichtigung für Reise "{trip}".', -} - +} + export default de \ No newline at end of file diff --git a/client/src/i18n/translations/en.ts b/client/src/i18n/translations/en.ts index 8ecbd89..9f1c3f6 100644 --- a/client/src/i18n/translations/en.ts +++ b/client/src/i18n/translations/en.ts @@ -242,6 +242,7 @@ const en: Record = { 'settings.mcp.toast.deleted': 'Token deleted', 'settings.mcp.toast.deleteError': 'Failed to delete token', 'settings.account': 'Account', + 'settings.about': 'About', 'settings.username': 'Username', 'settings.email': 'Email', 'settings.role': 'Role', diff --git a/client/src/i18n/translations/es.ts b/client/src/i18n/translations/es.ts index 403edce..bafee34 100644 --- a/client/src/i18n/translations/es.ts +++ b/client/src/i18n/translations/es.ts @@ -243,6 +243,7 @@ const es: Record = { 'settings.mcp.toast.deleted': 'Token eliminado', 'settings.mcp.toast.deleteError': 'Error al eliminar el token', 'settings.account': 'Cuenta', + 'settings.about': 'Acerca de', 'settings.username': 'Usuario', 'settings.email': 'Correo', 'settings.role': 'Rol', @@ -1544,6 +1545,6 @@ const es: Record = { 'notifications.test.adminText': '{actor} envió una notificación de prueba a todos los administradores.', 'notifications.test.tripTitle': '{actor} publicó en tu viaje', 'notifications.test.tripText': 'Notificación de prueba para el viaje "{trip}".', -} - +} + export default es \ No newline at end of file diff --git a/client/src/i18n/translations/fr.ts b/client/src/i18n/translations/fr.ts index 52470be..4727ff7 100644 --- a/client/src/i18n/translations/fr.ts +++ b/client/src/i18n/translations/fr.ts @@ -242,6 +242,7 @@ const fr: Record = { 'settings.mcp.toast.deleted': 'Token supprimé', 'settings.mcp.toast.deleteError': 'Impossible de supprimer le token', 'settings.account': 'Compte', + 'settings.about': 'À propos', 'settings.username': 'Nom d\'utilisateur', 'settings.email': 'E-mail', 'settings.role': 'Rôle', @@ -1538,6 +1539,6 @@ const fr: Record = { 'notifications.test.adminText': '{actor} a envoyé une notification de test à tous les admins.', 'notifications.test.tripTitle': '{actor} a publié dans votre voyage', 'notifications.test.tripText': 'Notification de test pour le voyage "{trip}".', -} - +} + export default fr \ No newline at end of file diff --git a/client/src/i18n/translations/hu.ts b/client/src/i18n/translations/hu.ts index 643b217..91211d8 100644 --- a/client/src/i18n/translations/hu.ts +++ b/client/src/i18n/translations/hu.ts @@ -194,6 +194,7 @@ const hu: Record = { 'settings.mcp.toast.deleted': 'Token törölve', 'settings.mcp.toast.deleteError': 'Nem sikerült törölni a tokent', 'settings.account': 'Fiók', + 'settings.about': 'Névjegy', 'settings.username': 'Felhasználónév', 'settings.email': 'E-mail', 'settings.role': 'Szerepkör', @@ -1539,6 +1540,6 @@ const hu: Record = { 'notifications.test.adminText': '{actor} teszt értesítést küldött az összes adminisztrátornak.', 'notifications.test.tripTitle': '{actor} üzenetet küldött az utazásodba', 'notifications.test.tripText': 'Teszt értesítés a(z) "{trip}" utazáshoz.', -} - +} + export default hu \ No newline at end of file diff --git a/client/src/i18n/translations/it.ts b/client/src/i18n/translations/it.ts index 24b78bd..bebaf16 100644 --- a/client/src/i18n/translations/it.ts +++ b/client/src/i18n/translations/it.ts @@ -194,6 +194,7 @@ const it: Record = { 'settings.mcp.toast.deleted': 'Token eliminato', 'settings.mcp.toast.deleteError': 'Impossibile eliminare il token', 'settings.account': 'Account', + 'settings.about': 'Informazioni', 'settings.username': 'Username', 'settings.email': 'Email', 'settings.role': 'Ruolo', @@ -1539,6 +1540,6 @@ const it: Record = { 'notifications.test.adminText': '{actor} ha inviato una notifica di test a tutti gli amministratori.', 'notifications.test.tripTitle': '{actor} ha pubblicato nel tuo viaggio', 'notifications.test.tripText': 'Notifica di test per il viaggio "{trip}".', -} - +} + export default it \ No newline at end of file diff --git a/client/src/i18n/translations/nl.ts b/client/src/i18n/translations/nl.ts index 756ede9..814be9b 100644 --- a/client/src/i18n/translations/nl.ts +++ b/client/src/i18n/translations/nl.ts @@ -242,6 +242,7 @@ const nl: Record = { 'settings.mcp.toast.deleted': 'Token verwijderd', 'settings.mcp.toast.deleteError': 'Token verwijderen mislukt', 'settings.account': 'Account', + 'settings.about': 'Over', 'settings.username': 'Gebruikersnaam', 'settings.email': 'E-mail', 'settings.role': 'Rol', @@ -1538,6 +1539,6 @@ const nl: Record = { 'notifications.test.adminText': '{actor} heeft een testmelding naar alle admins gestuurd.', 'notifications.test.tripTitle': '{actor} heeft gepost in uw reis', 'notifications.test.tripText': 'Testmelding voor reis "{trip}".', -} - +} + export default nl \ No newline at end of file diff --git a/client/src/i18n/translations/pl.ts b/client/src/i18n/translations/pl.ts index 5501867..36d9e9f 100644 --- a/client/src/i18n/translations/pl.ts +++ b/client/src/i18n/translations/pl.ts @@ -211,6 +211,7 @@ const pl: Record = { 'settings.mcp.toast.deleted': 'Token został usunięty', 'settings.mcp.toast.deleteError': 'Nie udało się usunąć tokenu', 'settings.account': 'Konto', + 'settings.about': 'O aplikacji', 'settings.username': 'Nazwa użytkownika', 'settings.email': 'E-mail', 'settings.role': 'Rola', diff --git a/client/src/i18n/translations/ru.ts b/client/src/i18n/translations/ru.ts index aa28f47..997e25b 100644 --- a/client/src/i18n/translations/ru.ts +++ b/client/src/i18n/translations/ru.ts @@ -242,6 +242,7 @@ const ru: Record = { 'settings.mcp.toast.deleted': 'Токен удалён', 'settings.mcp.toast.deleteError': 'Не удалось удалить токен', 'settings.account': 'Аккаунт', + 'settings.about': 'О приложении', 'settings.username': 'Имя пользователя', 'settings.email': 'Эл. почта', 'settings.role': 'Роль', @@ -1538,6 +1539,6 @@ const ru: Record = { 'notifications.test.adminText': '{actor} отправил тестовое уведомление всем администраторам.', 'notifications.test.tripTitle': '{actor} написал в вашей поездке', 'notifications.test.tripText': 'Тестовое уведомление для поездки "{trip}".', -} - +} + export default ru \ No newline at end of file diff --git a/client/src/i18n/translations/zh.ts b/client/src/i18n/translations/zh.ts index 8e1ac38..5fd14e4 100644 --- a/client/src/i18n/translations/zh.ts +++ b/client/src/i18n/translations/zh.ts @@ -242,6 +242,7 @@ const zh: Record = { 'settings.mcp.toast.deleted': '令牌已删除', 'settings.mcp.toast.deleteError': '删除令牌失败', 'settings.account': '账户', + 'settings.about': '关于', 'settings.username': '用户名', 'settings.email': '邮箱', 'settings.role': '角色', @@ -1538,6 +1539,6 @@ const zh: Record = { 'notifications.test.adminText': '{actor} 向所有管理员发送了测试通知。', 'notifications.test.tripTitle': '{actor} 在您的行程中发帖', 'notifications.test.tripText': '行程"{trip}"的测试通知。', -} - +} + export default zh \ No newline at end of file diff --git a/client/src/pages/SettingsPage.tsx b/client/src/pages/SettingsPage.tsx index 3e2cd13..6558344 100644 --- a/client/src/pages/SettingsPage.tsx +++ b/client/src/pages/SettingsPage.tsx @@ -6,7 +6,7 @@ import { SUPPORTED_LANGUAGES, useTranslation } from '../i18n' import Navbar from '../components/Layout/Navbar' import CustomSelect from '../components/shared/CustomSelect' import { useToast } from '../components/shared/Toast' -import { Save, Map, Palette, User, Moon, Sun, Monitor, Shield, Camera, Trash2, Lock, KeyRound, AlertTriangle, Copy, Download, Printer, Terminal, Plus, Check } from 'lucide-react' +import { Save, Map, Palette, User, Moon, Sun, Monitor, Shield, Camera, Trash2, Lock, KeyRound, AlertTriangle, Copy, Download, Printer, Terminal, Plus, Check, Info } from 'lucide-react' import { authApi, adminApi } from '../api/client' import apiClient from '../api/client' import { useAddonStore } from '../store/addonStore' @@ -126,6 +126,10 @@ export default function SettingsPage(): React.ReactElement { // Addon gating (derived from store) const memoriesEnabled = addonEnabled('memories') const mcpEnabled = addonEnabled('mcp') + const [appVersion, setAppVersion] = useState(null) + useEffect(() => { + authApi.getAppConfig?.().then(c => setAppVersion(c?.version)).catch(() => {}) + }, []) const [immichUrl, setImmichUrl] = useState('') const [immichApiKey, setImmichApiKey] = useState('') const [immichConnected, setImmichConnected] = useState(false) @@ -1291,6 +1295,24 @@ export default function SettingsPage(): React.ReactElement { + {appVersion && ( +
+ +
+ )} + {/* Delete Account Confirmation */} {showDeleteConfirm === 'blocked' && (