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 "Poseedores de la insignia {0}"
#. 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} errores de cliente en los últimos 15 minutos"
@@ -167,7 +167,7 @@ msgstr "{count, plural, one {Jugadores (#)} other {Jugadores (#)}}"
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
msgstr "{count, plural, one {Equipos (#)} other {Equipos (#)}}"
#: 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} intentos de acceso de administrador denegados en los últimos 15 minutos"
@@ -206,7 +206,7 @@ msgstr "{n, plural, one {# partido garantizado} other {# partidos garantizados}}
msgid "{n, plural, one {# wildcard} other {# wildcards}}"
msgstr "{n, plural, one {# comodín} other {# comodines}}"
#: 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} falló {count} veces en los últimos 15 minutos"
@@ -392,7 +392,7 @@ msgid "A code was sent to +1 ({0}) {1}-{2}"
msgstr "Se envió un código al +1 ({0}) {1}-{2}"
#. 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 "Apareció un nuevo error: {0}"
@@ -718,7 +718,7 @@ msgstr "Plastilina"
msgid "Clear selected player"
msgstr "Quitar jugador seleccionado"
#: src/lib/telemetry/alerts.server.ts:103
#: src/lib/telemetry/alerts.server.ts:109
msgid "Client error spike"
msgstr "Aumento de errores de cliente"
@@ -813,18 +813,22 @@ msgstr "Copiar número de teléfono"
msgid "Correct picks are worth more each round"
msgstr "Los aciertos valen más en cada ronda"
#: src/features/settings/components/notifications-section.tsx:43
#: src/features/settings/components/notifications-section.tsx:78
msgid "Couldn't disable notifications"
msgstr "No se pudieron desactivar las notificaciones"
#: src/features/settings/components/notifications-section.tsx:38
#: src/features/settings/components/notifications-section.tsx:73
msgid "Couldn't enable notifications"
msgstr "No se pudieron activar las notificaciones"
#: src/features/settings/components/notifications-section.tsx:50
#: src/features/settings/components/notifications-section.tsx:85
msgid "Couldn't send test notification"
msgstr "No se pudo enviar la notificación de prueba"
#: src/features/settings/components/notifications-section.tsx:23
msgid "Couldn't update telemetry alerts"
msgstr "No se pudieron actualizar las alertas de telemetría"
#: src/features/reactions/components/emoji-picker.tsx:17
msgid "crane"
msgstr "grulla"
@@ -904,7 +908,7 @@ msgstr "Mar Profundo"
msgid "Default"
msgstr "Predeterminado"
#: src/lib/telemetry/alerts.server.ts:166
#: src/lib/telemetry/alerts.server.ts:172
msgid "Denied access attempt"
msgstr "Intento de acceso denegado"
@@ -985,7 +989,7 @@ msgstr "Editar torneo"
msgid "Edit Your Prediction"
msgstr "Editar tu predicción"
#: src/features/settings/components/notifications-section.tsx:65
#: src/features/settings/components/notifications-section.tsx:100
msgid "Enable notifications on this device"
msgstr "Activa las notificaciones en este dispositivo"
@@ -1097,6 +1101,10 @@ msgstr "Grupo de errores resuelto"
msgid "Error Message"
msgstr "Mensaje de error"
#: src/features/settings/components/notifications-section.tsx:35
msgid "Error spikes and failing functions, pushed to this account"
msgstr "Picos de errores y funciones fallando, enviados a esta cuenta"
#: src/components/DefaultCatchBoundary.tsx:98
msgid "Error: {errorMessage}"
msgstr "Error: {errorMessage}"
@@ -1679,7 +1687,7 @@ msgstr "Nunca"
msgid "Never active"
msgstr "Nunca activo"
#: src/lib/telemetry/alerts.server.ts:124
#: src/lib/telemetry/alerts.server.ts:130
msgid "New client error"
msgstr "Nuevo error de cliente"
@@ -1834,24 +1842,24 @@ msgstr "Incorrecto"
msgid "Not right — enter our score"
msgstr "Incorrecto — ingresa nuestro marcador"
#: 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 "Notificaciones"
#: 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 "Las notificaciones están bloqueadas. Actívalas en la configuración de tu navegador."
#: src/features/settings/components/notifications-section.tsx:21
#: src/features/settings/components/notifications-section.tsx:56
msgid "Notifications aren't available right now."
msgstr "Las notificaciones no están disponibles por ahora."
#: src/features/settings/components/notifications-section.tsx:42
#: src/features/settings/components/notifications-section.tsx:77
msgid "Notifications disabled on this device"
msgstr "Notificaciones desactivadas en este dispositivo"
#: src/features/settings/components/notifications-section.tsx:32
#: src/features/settings/components/notifications-section.tsx:67
msgid "Notifications enabled on this device"
msgstr "Notificaciones activadas en este dispositivo"
@@ -2304,7 +2312,7 @@ msgstr "Selecciona tu canción de entrada"
msgid "Send Code"
msgstr "Enviar código"
#: src/features/settings/components/notifications-section.tsx:75
#: src/features/settings/components/notifications-section.tsx:111
msgid "Send test notification"
msgstr "Enviar notificación de prueba"
@@ -2313,7 +2321,7 @@ msgstr "Enviar notificación de prueba"
msgid "Series is tied"
msgstr "La serie está empatada"
#: src/lib/telemetry/alerts.server.ts:153
#: src/lib/telemetry/alerts.server.ts:159
msgid "Server function failing"
msgstr "Función del servidor fallando"
@@ -2579,6 +2587,10 @@ msgstr "¡Equipos creados exitosamente!"
msgid "Telemetry"
msgstr "Telemetría"
#: src/features/settings/components/notifications-section.tsx:34
msgid "Telemetry alerts"
msgstr "Alertas de telemetría"
#: 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 "Notificación de prueba: las notificaciones push funcionan en este dispositivo."
#: src/features/settings/components/notifications-section.tsx:49
#: src/features/settings/components/notifications-section.tsx:84
msgid "Test notification sent"
msgstr "Notificación de prueba enviada"
@@ -2620,7 +2632,7 @@ msgstr "Estos jugadores aún no se han enfrentado."
msgid "These teams have not faced each other yet."
msgstr "Estos equipos aún no se han enfrentado."
#: 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 "Este dispositivo no admite notificaciones push. En iOS, primero instala la app en tu pantalla de inicio."