feat(ui): add premium PluriWave redesign
Build & Deploy Pluriwave / Análisis de código (push) Failing after 21s
Build & Deploy Pluriwave / Build APK + AAB release (push) Has been skipped

This commit is contained in:
2026-05-20 18:42:22 +02:00
parent f95a8290ae
commit c707fc9911
30 changed files with 2218 additions and 954 deletions
@@ -0,0 +1,95 @@
# Tasks: premium-award-ui-icons-code-review
## Fase 0 — Guardrails
- [x] No ejecutar build.
- [ ] No revertir cambios ajenos.
- [ ] Verificar estado inicial con `git status --short`.
- [ ] Ejecutar baseline de tests permitido: `flutter test`.
- [ ] Registrar fallos existentes antes de tocar código si los hubiera.
## Fase 1 — Tokens y tema
- [x] Crear tests para validar tokens premium mínimos.
- [x] Crear `lib/tema/pluriwave_tokens.dart`.
- [x] Crear `lib/tema/pluriwave_theme.dart`.
- [x] Crear `lib/tema/pluriwave_motion.dart`.
- [x] Reemplazar `ColorScheme.fromSeed` genérico por tema PluriWave tokenizado.
- [x] Mantener Material 3, pero con identidad propia.
- [x] Asegurar que widgets existentes sigan usando `Theme.of(context)`.
- [ ] Ejecutar `flutter test`.
## Fase 2 — Sistema de iconos
- [x] Definir contrato `PluriIcon`.
- [x] Definir enum/id de iconos core.
- [x] Implementar variantes `outline`, `filled`, `activeGlow`.
- [x] Agregar semantics labels obligatorios.
- [x] Reemplazar iconos de bottom navigation por `PluriIcon`.
- [ ] Agregar tests de variante activa, labels semánticos, tap targets y ausencia de regresión en navegación.
- [ ] Ejecutar `flutter test`.
## Fase 3 — Asset pipeline
- [x] Persistir prompts de mockup/icon sheet en documentación del cambio.
- [ ] Generar sheet con gutters chroma #00FF00.
- [ ] Implementar o usar pipeline: detectar gutters, crop, chroma-to-alpha, trim, center, pad, export, contact sheet, validate.
- [ ] Rechazar sheets con edge-touching, gutters contaminados o escala inconsistente.
- [ ] Exportar assets finales a `assets/icons/` o `assets/images/`.
- [ ] Actualizar `pubspec.yaml` solo si hace falta declarar subcarpetas nuevas.
- [ ] Ejecutar `flutter test`.
## Fase 4 — Componentes premium
- [x] Crear `PluriWaveScaffold`.
- [x] Crear `PluriGlassSurface`.
- [x] Crear fondo premium reutilizable con ondas/global aura.
- [x] Refactorizar `tarjeta_emisora` hacia tarjeta premium tokenizada.
- [x] Refactorizar `mini_reproductor` con glass pill y estado activo.
- [x] Refactorizar `visualizador_audio` con `RepaintBoundary`.
- [x] Refactorizar `ecualizador_widget` con tokens y estados accesibles.
- [ ] Agregar widget tests para componentes críticos.
- [ ] Ejecutar `flutter test`.
## Fase 5 — Pantallas
- [x] Actualizar `PantallaInicio` con hero global wave, tendencias y populares.
- [x] Actualizar `PantallaBuscar` con search premium, chips y stale-state guard.
- [x] Actualizar `PantallaFavoritos` con diseño reorderable.
- [x] Actualizar `PantallaReproductor` con player hero, controles premium y EQ entry point.
- [x] Actualizar `PantallaAjustes` con cards agrupadas e iconos propios.
- [ ] Agregar/actualizar tests de pantallas existentes.
- [ ] Ejecutar `flutter test`.
## Fase 6 — Hardening técnico
- [x] Corregir listener leak en `lib/app.dart`: mover escucha de `errorStream` fuera de `didChangeDependencies`, guardar `StreamSubscription`, cancelar en `dispose`.
- [ ] Agregar test que falle si se registran listeners duplicados.
- [ ] Implementar control de stale async state en búsquedas/cargas.
- [ ] Agregar tests de “última búsqueda gana”.
- [x] Implementar reorder persistente de favoritos.
- [ ] Agregar tests de reorder exitoso, rollback ante error, no duplicados por `uuid` y favorito actual correcto.
- [ ] Ejecutar `flutter test`.
## Fase 7 — Accesibilidad y polish
- [ ] Revisar contraste de tokens principales.
- [ ] Asegurar labels semánticos en controles principales.
- [ ] Asegurar tap targets mínimos 48x48.
- [ ] Soportar reduced motion / disable animations.
- [ ] Evitar que glow/color sea la única señal de estado.
- [ ] Agregar tests de semantics para nav, player, favoritos y EQ.
- [ ] Ejecutar `flutter test`.
## Fase 8 — Persistencia SDD híbrida
- [x] Persistir `proposal.md`, `spec.md`, `design.md`, `tasks.md` en openspec.
- [x] Guardar equivalentes en Engram con topic keys:
- `sdd/premium-award-ui-icons-code-review/proposal`
- `sdd/premium-award-ui-icons-code-review/spec`
- `sdd/premium-award-ui-icons-code-review/design`
- `sdd/premium-award-ui-icons-code-review/tasks`
- [x] Marcar siguiente fase recomendada: `sdd-verify`.
- [x] No ejecutar build.