diff --git a/messages/de.json b/messages/de.json index 1b6ba832a..545e59204 100644 --- a/messages/de.json +++ b/messages/de.json @@ -1506,7 +1506,7 @@ }, "notifications": { "title": "Benachrichtigungen", - "description": "Zustellung pro Kanal und die Live-Übersicht der Kanalzuverlässigkeit für jeden konfigurierten Kanal." + "description": "Live-Übersicht aller konfigurierten Kanäle." }, "dashboard": { "title": "Dashboard", @@ -1669,8 +1669,8 @@ "singleDevice": "Einzelgerät", "multiDevice": "Multi-Gerät", "backedUp": "gesichert", - "telegram": "Telegram-Benachrichtigungen", - "telegramDescription": "Erhalte Erinnerungen bei vergessenen Medikamenten-Einnahmen per Telegram.", + "telegram": "Telegram", + "telegramDescription": "Medikamenten-Erinnerungen per Bot.", "telegramSaved": "Telegram-Einstellungen gespeichert", "botToken": "Bot-Token", "chatId": "Chat-ID", @@ -1883,7 +1883,7 @@ "saved": "Gespeichert", "savingError": "Fehler beim Speichern", "moodLogTitle": "moodLog", - "moodLogDescription": "Stimmungsdaten aus moodLog importieren", + "moodLogDescription": "Stimmungseinträge übernehmen.", "moodLogUrl": "moodLog URL", "moodLogUrlPlaceholder": "https://mood.example.com", "moodLogApiKey": "API-Key", @@ -1944,8 +1944,8 @@ } }, "notificationStatus": { - "title": "Kanalzuverlässigkeit", - "description": "Live-Status jedes Benachrichtigungskanals — \"Automatisch deaktiviert\" bedeutet, HealthLog hat nach einem dauerhaften Fehler aufgehört, weiterzusenden.", + "title": "Zustellstatus", + "description": "Pro Kanal aktueller Status; \"Automatisch deaktiviert\" stoppt nach dauerhaften Fehlern.", "emptyDescription": "Noch keine Kanäle konfiguriert. Lege unten einen Kanal an, um die Zustellung zu überwachen.", "stateActive": "Aktiv", "stateAutoDisabled": "Automatisch deaktiviert", diff --git a/messages/en.json b/messages/en.json index 634dfc87e..2203abae4 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1510,7 +1510,7 @@ }, "notifications": { "title": "Notifications", - "description": "Per-channel delivery and the live reliability board for every configured channel." + "description": "Live overview of every configured channel." }, "dashboard": { "title": "Dashboard", @@ -1676,8 +1676,8 @@ "singleDevice": "Single device", "multiDevice": "Multi-device", "backedUp": "backed up", - "telegram": "Telegram Notifications", - "telegramDescription": "Get reminders for missed medication intake via Telegram.", + "telegram": "Telegram", + "telegramDescription": "Medication reminders via bot.", "telegramSaved": "Telegram settings saved", "botToken": "Bot Token", "chatId": "Chat ID", @@ -1890,7 +1890,7 @@ "saved": "Saved", "savingError": "Error saving", "moodLogTitle": "moodLog", - "moodLogDescription": "Import mood data from moodLog", + "moodLogDescription": "Import mood entries.", "moodLogUrl": "moodLog URL", "moodLogUrlPlaceholder": "https://mood.example.com", "moodLogApiKey": "API Key", @@ -1951,8 +1951,8 @@ } }, "notificationStatus": { - "title": "Channel reliability", - "description": "Live status of every notification channel — Auto-disabled means HealthLog stopped retrying after a permanent error.", + "title": "Delivery status", + "description": "Per-channel state; \"Auto-disabled\" stops retries after permanent errors.", "emptyDescription": "No channels configured yet. Add a channel below to start tracking its delivery health.", "stateActive": "Active", "stateAutoDisabled": "Auto-disabled", diff --git a/src/components/settings/__tests__/notification-status-card.test.tsx b/src/components/settings/__tests__/notification-status-card.test.tsx index b4630efd4..3bad29db0 100644 --- a/src/components/settings/__tests__/notification-status-card.test.tsx +++ b/src/components/settings/__tests__/notification-status-card.test.tsx @@ -66,7 +66,7 @@ describe("", () => { it("renders empty state when no channels exist", () => { setChannels([]); const html = render(); - expect(html).toContain("Channel reliability"); + expect(html).toContain("Delivery status"); expect(html).toContain("No channels configured yet"); expect(html).not.toContain('data-testid="notification-status-list"'); }); @@ -189,7 +189,7 @@ describe("", () => { }, ]); const html = render(, "de"); - expect(html).toContain("Kanalzuverlässigkeit"); + expect(html).toContain("Zustellstatus"); expect(html).toContain("Automatisch deaktiviert"); expect(html).toContain("Wieder aktivieren"); }); diff --git a/src/components/settings/ntfy-card.tsx b/src/components/settings/ntfy-card.tsx index afa9221bc..68f3abbc2 100644 --- a/src/components/settings/ntfy-card.tsx +++ b/src/components/settings/ntfy-card.tsx @@ -4,7 +4,6 @@ import { useState } from "react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { Bell, Loader2, Send } from "lucide-react"; -import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -101,23 +100,12 @@ export function NtfyCard({ isAuthenticated }: { isAuthenticated: boolean }) { return (
-
-
- -

{t("settings.ntfy")}

-
-
- {settings?.serverUrl && settings?.topic && ( - - {t("settings.configured")} - - )} - {settings?.enabled && ( - - {t("common.enabled")} - - )} -
+ {/* v1.4.33 — drop the per-card status badge pair; the channel + pill in `` above already shows + live ntfy state. See `telegram-card.tsx` for the same fix. */} +
+ +

{t("settings.ntfy")}

{t("settings.ntfyDescription")} diff --git a/src/components/settings/telegram-card.tsx b/src/components/settings/telegram-card.tsx index c3ea62163..0501c8aa7 100644 --- a/src/components/settings/telegram-card.tsx +++ b/src/components/settings/telegram-card.tsx @@ -4,7 +4,6 @@ import { useState } from "react"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { Loader2, MessageCircle, Save, Send } from "lucide-react"; -import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -106,28 +105,15 @@ export function TelegramCard({ return (

-
-
- -

{t("settings.telegram")}

-
-
- {/* F-16 (v1.4.19): show one unified status pill instead of - the previous "Configured" + "Enabled" pair, which had no - visual hierarchy and made it unclear how the two states - differed. The new pill collapses both bits of info: - green when active, neutral when configured-but-paused. */} - {settings?.hasBotToken && settings?.chatId && settings?.enabled && ( - - {t("common.active")} - - )} - {settings?.hasBotToken && settings?.chatId && !settings?.enabled && ( - - {t("settings.configured")} · {t("common.disabled")} - - )} -
+ {/* v1.4.33 — drop the per-card status badge pair. The + `` above already paints the live + channel pill for Telegram; surfacing the same fact a + second time inside this card produced overlapping status + surfaces (page header + card pill + dual Badge + the + enable Switch) for one bit of state. */} +
+ +

{t("settings.telegram")}

{t("settings.telegramDescription")} diff --git a/src/components/settings/web-push-card.tsx b/src/components/settings/web-push-card.tsx index a6548f6e6..11de4a57a 100644 --- a/src/components/settings/web-push-card.tsx +++ b/src/components/settings/web-push-card.tsx @@ -3,7 +3,6 @@ import { useEffect, useState } from "react"; import { BellRing, Loader2 } from "lucide-react"; -import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { TestConnectionButton } from "@/components/settings/test-connection-button"; import { useTranslations } from "@/lib/i18n/context"; @@ -157,23 +156,13 @@ export function WebPushCard() { return (

-
-
- -

{t("settings.webPush")}

-
-
- {!loading && isSubscribed && ( - - {t("settings.configured")} - - )} - {!loading && isSubscribed && ( - - {t("settings.webPushActive")} - - )} -
+ {/* v1.4.33 — drop the per-card status badge pair; the channel + pill in `` above already shows + live Web Push state. See `telegram-card.tsx` for the same + fix. */} +
+ +

{t("settings.webPush")}

{t("settings.webPushDescription")}