feat(telemetry): opt-in admin alert pushes

- telemetryAlerts metadata flag, admin-gated server fn
- alerts sent only to admins with the flag enabled
- settings toggle visible to admins only, under device notifications
This commit is contained in:
2026-08-25 23:33:01 -07:00
parent 1ddcffc511
commit 3d8ee52a15
8 changed files with 200 additions and 85 deletions
+33 -21
View File
@@ -105,7 +105,7 @@ msgid "{0} Badge Holders"
msgstr "{0} Abzeichen-Inhaber"
#. placeholder {0}: recentErrors.totalItems
#: src/lib/telemetry/alerts.server.ts:104
#: src/lib/telemetry/alerts.server.ts:110
msgid "{0} client errors in the last 15 minutes"
msgstr "{0} Client-Fehler in den letzten 15 Minuten"
@@ -167,7 +167,7 @@ msgstr "{count, plural, one {Spieler (#)} other {Spieler (#)}}"
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
msgstr "{count, plural, one {Teams (#)} other {Teams (#)}}"
#: src/lib/telemetry/alerts.server.ts:167
#: src/lib/telemetry/alerts.server.ts:173
msgid "{deniedCount} denied admin access attempts in the last 15 minutes"
msgstr "{deniedCount} abgelehnte Admin-Zugriffsversuche in den letzten 15 Minuten"
@@ -206,7 +206,7 @@ msgstr "{n, plural, one {# garantiertes Spiel} other {# garantierte Spiele}}"
msgid "{n, plural, one {# wildcard} other {# wildcards}}"
msgstr "{n, plural, one {# Wildcard} other {# Wildcards}}"
#: src/lib/telemetry/alerts.server.ts:154
#: src/lib/telemetry/alerts.server.ts:160
msgid "{name} failed {count} times in the last 15 minutes"
msgstr "{name} ist in den letzten 15 Minuten {count} Mal fehlgeschlagen"
@@ -392,7 +392,7 @@ msgid "A code was sent to +1 ({0}) {1}-{2}"
msgstr "Ein Code wurde an +1 ({0}) {1}-{2} gesendet"
#. placeholder {0}: info.message.slice(0, 120)
#: src/lib/telemetry/alerts.server.ts:125
#: src/lib/telemetry/alerts.server.ts:131
msgid "A new error appeared: {0}"
msgstr "Ein neuer Fehler ist aufgetreten: {0}"
@@ -718,7 +718,7 @@ msgstr "Knete"
msgid "Clear selected player"
msgstr "Ausgewählten Spieler entfernen"
#: src/lib/telemetry/alerts.server.ts:103
#: src/lib/telemetry/alerts.server.ts:109
msgid "Client error spike"
msgstr "Anstieg von Client-Fehlern"
@@ -813,18 +813,22 @@ msgstr "Telefonnummer kopieren"
msgid "Correct picks are worth more each round"
msgstr "Richtige Tipps sind in jeder Runde mehr wert"
#: src/features/settings/components/notifications-section.tsx:43
#: src/features/settings/components/notifications-section.tsx:78
msgid "Couldn't disable notifications"
msgstr "Benachrichtigungen konnten nicht deaktiviert werden"
#: src/features/settings/components/notifications-section.tsx:38
#: src/features/settings/components/notifications-section.tsx:73
msgid "Couldn't enable notifications"
msgstr "Benachrichtigungen konnten nicht aktiviert werden"
#: src/features/settings/components/notifications-section.tsx:50
#: src/features/settings/components/notifications-section.tsx:85
msgid "Couldn't send test notification"
msgstr "Testbenachrichtigung konnte nicht gesendet werden"
#: src/features/settings/components/notifications-section.tsx:23
msgid "Couldn't update telemetry alerts"
msgstr "Telemetrie-Benachrichtigungen konnten nicht aktualisiert werden"
#: src/features/reactions/components/emoji-picker.tsx:17
msgid "crane"
msgstr "Kranich"
@@ -904,7 +908,7 @@ msgstr "Tiefsee"
msgid "Default"
msgstr "Standard"
#: src/lib/telemetry/alerts.server.ts:166
#: src/lib/telemetry/alerts.server.ts:172
msgid "Denied access attempt"
msgstr "Abgelehnter Zugriffsversuch"
@@ -985,7 +989,7 @@ msgstr "Turnier bearbeiten"
msgid "Edit Your Prediction"
msgstr "Deinen Tipp bearbeiten"
#: src/features/settings/components/notifications-section.tsx:65
#: src/features/settings/components/notifications-section.tsx:100
msgid "Enable notifications on this device"
msgstr "Benachrichtigungen auf diesem Gerät aktivieren"
@@ -1097,6 +1101,10 @@ msgstr "Fehlergruppe behoben"
msgid "Error Message"
msgstr "Fehlermeldung"
#: src/features/settings/components/notifications-section.tsx:35
msgid "Error spikes and failing functions, pushed to this account"
msgstr "Fehlerspitzen und fehlschlagende Funktionen, als Push an dieses Konto"
#: src/components/DefaultCatchBoundary.tsx:98
msgid "Error: {errorMessage}"
msgstr "Fehler: {errorMessage}"
@@ -1679,7 +1687,7 @@ msgstr "Nie"
msgid "Never active"
msgstr "Nie aktiv"
#: src/lib/telemetry/alerts.server.ts:124
#: src/lib/telemetry/alerts.server.ts:130
msgid "New client error"
msgstr "Neuer Client-Fehler"
@@ -1834,24 +1842,24 @@ msgstr "Stimmt nicht"
msgid "Not right — enter our score"
msgstr "Stimmt nicht — unser Ergebnis eingeben"
#: src/features/settings/components/notifications-section.tsx:18
#: src/features/settings/components/notifications-section.tsx:59
#: src/features/settings/components/notifications-section.tsx:53
#: src/features/settings/components/notifications-section.tsx:94
msgid "Notifications"
msgstr "Benachrichtigungen"
#: src/features/settings/components/notifications-section.tsx:35
#: src/features/settings/components/notifications-section.tsx:70
msgid "Notifications are blocked. Enable them in your browser settings."
msgstr "Benachrichtigungen sind blockiert. Aktiviere sie in deinen Browser-Einstellungen."
#: src/features/settings/components/notifications-section.tsx:21
#: src/features/settings/components/notifications-section.tsx:56
msgid "Notifications aren't available right now."
msgstr "Benachrichtigungen sind gerade nicht verfügbar."
#: src/features/settings/components/notifications-section.tsx:42
#: src/features/settings/components/notifications-section.tsx:77
msgid "Notifications disabled on this device"
msgstr "Benachrichtigungen auf diesem Gerät deaktiviert"
#: src/features/settings/components/notifications-section.tsx:32
#: src/features/settings/components/notifications-section.tsx:67
msgid "Notifications enabled on this device"
msgstr "Benachrichtigungen auf diesem Gerät aktiviert"
@@ -2304,7 +2312,7 @@ msgstr "Wähle deinen Walkout-Song"
msgid "Send Code"
msgstr "Code senden"
#: src/features/settings/components/notifications-section.tsx:75
#: src/features/settings/components/notifications-section.tsx:111
msgid "Send test notification"
msgstr "Testbenachrichtigung senden"
@@ -2313,7 +2321,7 @@ msgstr "Testbenachrichtigung senden"
msgid "Series is tied"
msgstr "Serie steht unentschieden"
#: src/lib/telemetry/alerts.server.ts:153
#: src/lib/telemetry/alerts.server.ts:159
msgid "Server function failing"
msgstr "Serverfunktion schlägt fehl"
@@ -2579,6 +2587,10 @@ msgstr "Teams erfolgreich erstellt!"
msgid "Telemetry"
msgstr "Telemetrie"
#: src/features/settings/components/notifications-section.tsx:34
msgid "Telemetry alerts"
msgstr "Telemetrie-Benachrichtigungen"
#: src/themes/terminal/manifest.ts:6
msgid "Terminal"
msgstr "Terminal"
@@ -2587,7 +2599,7 @@ msgstr "Terminal"
msgid "Test notification — push is working on this device."
msgstr "Test-Benachrichtigung — Push funktioniert auf diesem Gerät."
#: src/features/settings/components/notifications-section.tsx:49
#: src/features/settings/components/notifications-section.tsx:84
msgid "Test notification sent"
msgstr "Test-Benachrichtigung gesendet"
@@ -2620,7 +2632,7 @@ msgstr "Diese Spieler sind noch nicht gegeneinander angetreten."
msgid "These teams have not faced each other yet."
msgstr "Diese Teams sind noch nicht gegeneinander angetreten."
#: src/features/settings/components/notifications-section.tsx:22
#: src/features/settings/components/notifications-section.tsx:57
msgid "This device doesn't support push notifications. On iOS, install the app to your Home Screen first."
msgstr "Dieses Gerät unterstützt keine Push-Benachrichtigungen. Installiere die App unter iOS zuerst auf deinem Home-Bildschirm."