# Proposal: Premium award UI, icons, and code-review hardening ## Intent Elevar PluriWave a una UI premium coherente y “award-ready” sin caer en maquillaje visual. Primero se deben corregir defectos de lifecycle/estado que hoy degradan confiabilidad; después se aplica un sistema visual propio: “Ondas vivas globales”. ## Scope ### In Scope - Hardening previo: listeners, streams, favoritos, reproductor, timer y errores. - Sistema visual token-first: violeta profundo, magenta eléctrico, coral cálido, vidrio oscuro y glow controlado. - Sistema de iconos propios para navegación, reproducción, favoritos, búsqueda, ajustes y estados. - Mockup/refresh de Inicio, Buscar, Reproductor, Favoritos y Ajustes. - Tests Strict TDD con `flutter test`; sin build. ### Out of Scope - Reemplazar Provider/ChangeNotifier. - Rediseñar backend/API de radios. - Branding completo externo a la app. - Release packaging o `flutter build`. ## Capabilities ### New Capabilities - `ui-technical-hardening`: estabilidad previa a la capa premium. - `premium-visual-system`: tokens, superficies, motion y composición visual. - `premium-icon-system`: iconografía propia con estados outline/filled/active glow. - `premium-screen-refresh`: aplicación coherente en las cinco pantallas principales. ### Modified Capabilities - None; no existing OpenSpec source specs exist yet. ## Approach Primero cerrar deuda crítica verificada: subscriptions cancelables, favorito global consistente, reorder persistente, reproductor desacoplado de snapshots viejos y errores observables. Luego introducir tokens visuales reutilizables e iconos propios, aplicándolos pantalla por pantalla con el Reproductor como referencia fuerte. ## Affected Areas | Area | Impact | Description | |---|---|---| | `lib/app.dart` | Modified | Listener único/cancelable para errores. | | `lib/widgets/visualizador_audio.dart` | Modified | Stream subscriptions seguras. | | `lib/servicios/servicio_favoritos.dart` | Modified | Reordenado persistente completo. | | `lib/pantallas/pantalla_favoritos.dart` | Modified | UX reorder consistente. | | `lib/widgets/tarjeta_emisora.dart` | Modified | Favorito derivado del estado global. | | `lib/pantallas/pantalla_reproductor.dart` | Modified | UI premium y estado de reproducción confiable. | | `assets/icons/` | New | Iconos propios premium. | | `test/` | Modified | Cobertura de hardening y UI behavior. | ## Risks | Risk | Likelihood | Mitigation | |---|---:|---| | UI linda pero frágil | High | Hardening MUST precede visual rollout. | | Iconos inconsistentes | Med | Definir geometría/estados antes de integrarlos. | | Glow/motion excesivo | Med | Tokens, límites de contraste y reduced motion. | ## Rollback Plan Revertir commits del cambio. Los assets nuevos y tokens pueden eliminarse sin migración de datos. Hardening debe revertirse solo si sus tests también se ajustan. ## Dependencies - Flutter/Material existente. - `flutter_test`. - Assets locales bajo `assets/icons`. ## Success Criteria - [ ] No listeners duplicados ni stream leaks verificados por tests. - [ ] Favoritos y orden se mantienen consistentes. - [ ] Reproductor usa estado actual confiable. - [ ] Las cinco pantallas comparten lenguaje premium. - [ ] Iconos propios reemplazan Material genérico en puntos clave. - [ ] `flutter test` valida el cambio; no se ejecuta build.