|  |  | # Plan somero de cierre de rama — 25-10-18
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Objetivo
 | 
						
						
						
							|  |  | - Cerrar esta rama asegurando funcionalidad clave, fiabilidad percibida y coherencia de UX, para mergear con main con confianza.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Criterios generales de “listo”
 | 
						
						
						
							|  |  | - No romper flujos existentes.
 | 
						
						
						
							|  |  | - Feedback claro en interacciones sin cambio visual evidente.
 | 
						
						
						
							|  |  | - Estado de UI estable (sin saltos de scroll ni pérdidas de colapso).
 | 
						
						
						
							|  |  | - Cobertura mínima en tests para los cambios críticos.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Bloque 1: Bloqueantes para merge (función y confianza)
 | 
						
						
						
							|  |  | 1) Feeds de calendario (multiusuario)
 | 
						
						
						
							|  |  |    - Hipótesis: la UI no recibe token en no-admin o no refresca tras rotar; posible gating de backend por rol/sesión.
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - No-admin ve/usa su URL tras rotar; .ics responde 200 con contenido válido.
 | 
						
						
						
							|  |  |      - Rotar invalida el token anterior (URL vieja deja de servir).
 | 
						
						
						
							|  |  |      - Tests cubren 2 no-admin y 1 admin.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 2) Copiar y Rotar (feedback)
 | 
						
						
						
							|  |  |    - Hipótesis: botones funcionan de forma intermitente y sin feedback; usar toasts existentes.
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - Copiar: “URL copiada” o “No se pudo copiar” según resultado.
 | 
						
						
						
							|  |  |      - Rotar: “Feed de calendario rotado” y la UI actualiza la URL inmediatamente.
 | 
						
						
						
							|  |  |      - Fallback si Clipboard falla.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 3) Estado de colapso y scroll al completar tareas
 | 
						
						
						
							|  |  |    - Hipótesis: rerender global resetea colapso y reposiciona scroll.
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - Completar/descompletar no altera colapso ni posición de scroll.
 | 
						
						
						
							|  |  |      - Colapso persiste por groupId (localStorage) y tras refresh.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 4) Validación: no permitir tareas sin descripción
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - Front bloquea envío vacío con mensaje claro.
 | 
						
						
						
							|  |  |      - API devuelve 400 con error entendible.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 5) Modo oscuro en página intermedia de acceso
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - Respeta prefers-color-scheme y/o preferencia guardada.
 | 
						
						
						
							|  |  |      - Sin parpadeo ni estilos rotos.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Bloque 2: Refinamientos UX de bajo riesgo
 | 
						
						
						
							|  |  | 1) Mensajes para “clics silenciosos”
 | 
						
						
						
							|  |  |    - Criterio: usar toast solo cuando no hay cambio visible inmediato (copiar, rotar, acciones async).
 | 
						
						
						
							|  |  |    - Señales de listo: catálogo simple de interacciones con su feedback (info/success/error).
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 2) Bloquear acciones alrededor durante edición
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - Estado “editing” deshabilita acciones peligrosas cercanas (aria-disabled).
 | 
						
						
						
							|  |  |      - Salir de edición restaura interactividad sin perder foco ni contenido.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 3) Animaciones sutiles (colapsar/expandir)
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - Transiciones 150–200 ms; respetar prefers-reduced-motion.
 | 
						
						
						
							|  |  |      - Sin jank en listas largas.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Bloque 3: Navegación y coherencia visual (mini exploración)
 | 
						
						
						
							|  |  | 1) Unificar tabs entre desktop y mobile (top siempre)
 | 
						
						
						
							|  |  |    - Idea: tabs arriba en ambos; mini barra superior con sesión y logout.
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - Variante elegida (wireframe simple).
 | 
						
						
						
							|  |  |      - Tokens de densidad definidos (tipografía/espaciado) y patrón de iconografía coherente.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 2) Personalidad y densidad
 | 
						
						
						
							|  |  |    - Pistas rápidas:
 | 
						
						
						
							|  |  |      - Tipografías y espaciado más compactos en listas.
 | 
						
						
						
							|  |  |      - Uso consistente del color de grupo.
 | 
						
						
						
							|  |  |      - Etiquetas concisas e iconos de apoyo.
 | 
						
						
						
							|  |  |    - Señales de listo: 2 pantallas “antes/después” aprobadas, cambios acotados a tokens/variables.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Bloque 4: Integridad de datos y ciclo de vida
 | 
						
						
						
							|  |  | 1) Eliminación de grupo
 | 
						
						
						
							|  |  |    - Propuesta: borrado duro con ON DELETE CASCADE para tareas, asignaciones y tokens; invalidar feeds asociados.
 | 
						
						
						
							|  |  |    - Señales de listo:
 | 
						
						
						
							|  |  |      - Contrato decidido y documentado.
 | 
						
						
						
							|  |  |      - Constraints y tests que demuestran que tareas y feeds desaparecen de UI y endpoints.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 2) Crear tareas desde la web (post-merge, MVP)
 | 
						
						
						
							|  |  |    - Alcance mínimo: descripción obligatoria, fecha opcional, grupo opcional, auto-asignación.
 | 
						
						
						
							|  |  |    - Señales de listo: validaciones consistentes con el bot.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Riesgos y verificaciones rápidas
 | 
						
						
						
							|  |  | - Sesión/locals.userId inconsistentes en no-admin → verificar endpoints de rotar/listar tokens.
 | 
						
						
						
							|  |  | - Invalidez de tokens viejos tras rotar → asegurar revocación real y no solo visual.
 | 
						
						
						
							|  |  | - Re-renders que destruyen estado local → preservar claves de lista, actualizaciones puntuales.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Métricas y tests mínimos
 | 
						
						
						
							|  |  | - Tests web para: rotar token personal en no-admin (200 .ics), copiar con éxito (toast), completar tarea sin perder estado.
 | 
						
						
						
							|  |  | - Unit tests: validación de descripción en API.
 | 
						
						
						
							|  |  | - Smoke: modo oscuro en página intermedia.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Siguientes pasos inmediatos (quick wins)
 | 
						
						
						
							|  |  | - Añadir toasts a Copiar/Rotar y verificar copyToClipboard con fallback.
 | 
						
						
						
							|  |  | - Persistir colapso por groupId en localStorage y restaurar en montaje.
 | 
						
						
						
							|  |  | - Revisar flujo de tokens ICS con dos usuarios no-admin y un admin (rotar → validar .ics nuevo y caducidad del viejo).
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | Notas
 | 
						
						
						
							|  |  | - La navegación unificada y la “personalidad visual” se abordan después de merge si crecen en alcance.
 | 
						
						
						
							|  |  | - Priorizar siempre claridad y facilidad de uso sobre adorno; la forma sigue a la función.
 |