96 lines
4.1 KiB
Markdown
96 lines
4.1 KiB
Markdown
# 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.
|
|
|
|
|