Volver a la wiki

Reemplazar filter/backdrop-filter de Shine por tokens CSS dinámicos

Contexto

Fecha: 06-08-2026
Decisor: Edu (con Claude Code)
Impacto: Frontend UI, rendimiento, arquitectura CSS
Issue relacionada: #211 (Iniciativa UI — migración a tokens)

La característica Shine (aclarado/brillo de la interfaz) se implementó originalmente en v1.66.0+ usando un overlay <div> con backdrop-filter: brightness(…). Post-deploy, Edu reportó un problema grave: Shine hundía el rendimiento cuando el fondo animado (Asteroids) estaba activo.


Problema observado

  1. Framerate collapse: Con backdrop-filter activo, el navegador re-calculaba el área filtrada en cada frame del fondo animado (120+ FPS). En laptops/tablets de gama media, caía a 20-30 FPS.

  2. Deformación del fondo: El overlay overlay con filter se vuelve containing block de todo elemento position:fixed (spec CSS Filter Effects). El fondo Asteroids, medido contra el documento entero en lugar del viewport, se reescalaba y deformaba.

  3. Incapacidad de revert rápido: No había forma de desactivar Shine sin un cambio de versión; el impacto era del lado del usuario final (no era un bug visible sin tener Shine activado).


Opciones consideradas

Opción A: Optimizar el backdrop-filter (rechazada)

Opción B: Usar SVG filter (rechazada)

Opción C: Tokens CSS dinámicos (ELEGIDA ✅)


Decisión tomada

Migrar Shine a tokens CSS dinámicos. Aceptar cobertura parcial inicial.

Justificación

Compromisos


Implementación

Archivos modificados:

Versión: v1.66.3


Riesgos mitigados

RiesgoMitigación
Usuarios ven Shine incompleto✅ Documentado en RELEASE_NOTES; explicación de cobertura
Cambio introduce nuevos bugs✅ Lógica simple (CSS vars + dataset); no hay cálculos
Es difícil debuggear Shine✅ Inspeccionable en DevTools: $0.dataset.shine

Seguimiento


Véase también

Subir