PROBLEMA: Al cambiar de tema dinámico (SUNRISE/OCEAN WAVES/NEON PULSE) a tema estático (SUNSET/LAVENDER/etc), el fondo se volvía negro o mostraba colores corruptos durante la transición LERP. CAUSA: 1. activateDynamicTheme() NO actualiza current_theme_ (queda en valor previo) 2. startThemeTransition() desactiva dynamic_theme_active_ 3. renderGradientBackground() intenta LERP desde themes_[current_theme_] 4. Si current_theme_ era LAVENDER (índice 6), accede themes_[6] OK 5. Pero si era cualquier valor >= 7, accede fuera de bounds → basura SOLUCIÓN IMPLEMENTADA: ✅ Detectar transición desde tema dinámico en startThemeTransition() ✅ Si dynamic_theme_active_ == true: - Hacer transición INSTANTÁNEA (sin LERP) - Cambiar current_theme_ inmediatamente al tema destino - Actualizar colores de pelotas sin interpolación - Evitar acceso a themes_[] con índices inválidos ✅ Eliminar asignación de current_theme_ en activateDynamicTheme() - Cuando dynamic_theme_active_=true, se usa current_dynamic_theme_index_ - current_theme_ solo se usa cuando dynamic_theme_active_=false RESULTADO: - Dinámico → Estático: Cambio instantáneo limpio ✅ - Estático → Estático: Transición LERP suave (sin cambios) ✅ - Estático → Dinámico: Cambio instantáneo (sin cambios) ✅ - Dinámico → Dinámico: Cambio instantáneo (sin cambios) ✅ TRADE-OFF: - Perdemos transición suave dinámico→estático - Ganamos estabilidad y eliminamos fondo negro/corrupto - Para implementar LERP correcto se requiere refactor mayor (unificar todos los temas bajo sistema dinámico) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
101 KiB
101 KiB