- Remove broken transformRequest that crashed with Axios 1.x (headers.post undefined)
- Guard window.Echo.socketId() to avoid TypeError before socket connects
- Wrap broadcast() in try/catch so Reverb downtime does not cause 500 errors
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Modelos completos: Evaluacion, EvaluacionTipo, Pregunta, PreguntaTipo,
PreguntaOpcion, EvaluacionSubmission, Respuesta (con $table explícito
para nombres en español que Laravel pluraliza incorrectamente)
- Relaciones evaluaciones() añadidas a Plantel y Nivel
- EvaluacionBuilder (Livewire): constructor interactivo con preguntas
de tipo texto libre, opción múltiple, escala 1-5/1-10 y sí/no;
reorden con flechas, vista previa por tipo, selección de planteles
y niveles, configuración de estado, fechas y flag de anónima
- EvaluacionController: CRUD completo + toggleStatus
- Vistas: index, create/edit (con Livewire builder), show con detalle
de preguntas y cambio de estado
- Rutas resource /evaluacion + PATCH /evaluacion/{id}/status
- Migraciones: evaluaciones, preguntas, pregunta_opciones,
evaluacion_submissions, respuestas, evaluacion_plantel, evaluacion_nivel
- Menú: enlace Evaluaciones en panel de Administrador
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Header: búsqueda móvil con panel deslizable (fixed bajo la topbar), comparte la lógica AJAX con desktop via initSearchWidget()
- ChatController: index muestra solo amigos; show pasa isFriend y friendship a la vista; send valida amistad con abort_unless
- chat/index: muestra amigos con @forelse y mensaje vacío si no tiene
- chat/show: si no son amigos muestra banner de bloqueo con botón contextual (enviar solicitud / cancelar / aceptar según estado)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Menú: mueve Comunidad/Amigos/Mensajes a la sección Adicionales (elimina duplicado Chats)
- Feed: botón Publicar más grande con ícono, textarea sin pill para mejor UX
- Header búsqueda: corrige bug que cerraba el dropdown al hacer click en él
(mousedown en el contenedor bloquea el cierre hasta que se suelta el botón)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- FriendshipController: carga también amigos aceptados con su friendship
- friendships/index: tabs con 'Mis amigos' (tabla con Mensaje/Quitar) y 'Solicitudes'
- Notificaciones de solicitud abren directamente la pestaña de solicitudes (#solicitudes)
- Dropdown de búsqueda: bordes redondeados, sombra suave, margen superior, hover en items, etiqueta de sección y separadores finos
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- HeaderComposer ahora muestra conversaciones donde el último mensaje
es del otro usuario (pendiente de respuesta), no solo mensajes no leídos
- El badge refleja el conteo de conversaciones pendientes
- Al responder desde el chat, se dispara chat:replied para quitar
la conversación del dropdown en tiempo real
- El badge en tiempo real solo incrementa si es una conversación nueva
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Resuelve marcadores de conflicto dejados en header.blade.php
- Agrega X-CSRF-TOKEN a los headers por defecto de axios (evita 419 en endpoints de notificaciones)
- Rebuild de assets de Vite
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>