feat: legibility wave — veil conditions, first-run hints, kinder errors
Workstream B of the usability wave (#2 hints, #3 conditions, #4 errors): - GET /api/conditions (new backend/app/routes/conditions.py): composes celestial veil_thinness with the cached NOAA Kp reading; lenient lon parsing (junk degrades to moon-only, never 422); geomagnetic may be null on a cold cache. Route tests stub the cache — no live NOAA calls. - VeilConditions strip in the séance side column: moon glyph + phase, % lit, veil-thinness phrase, Kp line only when data exists. Polls every 10 min; renders nothing while loading; no error state. - ModeHint: per-mode in-fiction one-liner after ~15s idle, suppressed once the mode's sensor runs this session, dismissal persisted in localStorage (qm_hint_<mode>). One mount line per panel. - Error copy upgraded to detect-and-redirect: mic denied points at site settings and the ouija board/wire; WebUSB-unsupported suggests EVP. - i18n en/es parity for every new string; coverage-check template domains extended for the new template-key call sites. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -127,12 +127,40 @@
|
||||
"line": "⚡ {{source}} {{frequency}} +{{magnitude}}dB",
|
||||
"count": "{{count}} anomalías presenciadas en esta sesión"
|
||||
},
|
||||
"hints": {
|
||||
"wire": "el cable susurra por sí solo cuando escuchas en pasivo",
|
||||
"evp": "el velo escucha a través de tu micrófono — préstale tu oído",
|
||||
"radio": "un sintonizador en la mano oye más lejos que el cable",
|
||||
"ouija": "pregunta abajo, o deja que el tablero derive",
|
||||
"emf": "quédate quieto; el campo recuerda el movimiento"
|
||||
},
|
||||
"conditions": {
|
||||
"title": "CONDICIONES DEL VELO",
|
||||
"lit": "{{percent}}% iluminada",
|
||||
"veil": {
|
||||
"thin": "el velo se vuelve fino esta noche",
|
||||
"veiled": "el velo cuelga, ni abierto ni cerrado",
|
||||
"heavy": "el velo pesa"
|
||||
},
|
||||
"fieldQuiet": "campo: en calma",
|
||||
"fieldStorm": "tormenta geomagnética",
|
||||
"moon": {
|
||||
"new_moon": "luna nueva",
|
||||
"waxing_crescent": "luna creciente",
|
||||
"first_quarter": "cuarto creciente",
|
||||
"waxing_gibbous": "gibosa creciente",
|
||||
"full_moon": "luna llena",
|
||||
"waning_gibbous": "gibosa menguante",
|
||||
"last_quarter": "cuarto menguante",
|
||||
"waning_crescent": "luna menguante"
|
||||
}
|
||||
},
|
||||
"evp": {
|
||||
"start": "abrir el micrófono",
|
||||
"stop": "cerrar el micrófono",
|
||||
"listening": "escuchando la banda de voz…",
|
||||
"deniedTitle": "el micrófono sigue cerrado",
|
||||
"denied": "Este recipiente rechazó el micrófono. Concede el permiso de audio en tu navegador para practicar EVP — o deja que el Fantasma del Cable escuche en tu lugar; no necesita más que la red que ya temes.",
|
||||
"denied": "Este recipiente rechazó el micrófono. Concede el permiso de audio en los ajustes del sitio de tu navegador para practicar EVP — o acude al tablero ouija o al Fantasma del Cable; el tablero no necesita oído, y el cable solo la red que ya temes.",
|
||||
"floor": "suelo de la sala",
|
||||
"band": "banda de voz 300–3400 Hz",
|
||||
"scopeLabel": "espectro de audio en vivo desde el micrófono"
|
||||
@@ -141,7 +169,7 @@
|
||||
"start": "barrer la banda",
|
||||
"stop": "detener la aguja",
|
||||
"unsupportedTitle": "este recipiente no oye a los muertos de la radio",
|
||||
"unsupported": "La Radio Espíritu necesita Chromium (WebUSB) y un dongle RTL-SDR. Los demás modos no — el cable y el micrófono aún responden.",
|
||||
"unsupported": "La Radio Espíritu necesita Chromium (WebUSB) y un dongle RTL-SDR. Los demás modos aún responden — EVP escucha por el micrófono que ya llevas, y el cable no necesita nada.",
|
||||
"troubleshoot": "solución de problemas: navegador basado en Chromium · reglas udev para 0bda:2838 · el dongle enchufado, no meramente invocado",
|
||||
"insecure": "los muertos de la radio solo hablan desde suelo consagrado — abre este sitio por su dirección https.",
|
||||
"insecureHint": "localhost cuenta como sagrado; una http://ip-local desnuda, no.",
|
||||
|
||||
Reference in New Issue
Block a user