El CDN servía siempre el último 3.x; al compilar en local quedó fijado
^3.1.0, que instaló 3.2.0. Toda utilidad añadida en 3.3+ dejó de existir
en silencio, sin error en el build.
Víctima confirmada: line-clamp-2 (core desde 3.3), usada en las tarjetas
de promociones y servicios del chat. Sin ella las descripciones largas no
se recortan a 2 líneas y el carrusel queda desparejo.
Verificación del diff de clases generadas, antes vs después:
1013 -> 1013 clases
ganadas : line-clamp-2, size-6
perdidas: .mt-0 y .py-0 sueltas
Las dos "perdidas" son CSS muerto: no hay ningún uso literal de mt-0 ni
py-0 en las vistas. El extractor viejo de 3.2 las sacaba por error de
md:mt-0 / sm:mt-0 / mt-0.5. Las variantes reales (md:mt-0, sm:mt-0,
mt-0.5, py-0.5) siguen presentes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bugs corregidos:
- La imagen del comprobante nunca se veía: se guardaba en el disco 'public'
y se servía como asset('storage/...'), pero este proyecto no tiene el
symlink public/storage. Ahora usa store('photos') + asset($path), la
convención del resto del código (config/filesystems.php links).
- Dos wire:poll en el mismo nodo: Livewire v2 solo respeta el primero, así
que autoReintentarPago nunca se ejecutaba. Ahora va en su propio elemento
y solo se renderiza mientras hay un pago pendiente.
- Sin wire:key en los mensajes, morphdom recreaba toda la lista cada 3s:
parpadeo, scroll saltando y estado Alpine perdido (el "¡Copiado!" de las
credenciales desaparecía solo).
- pollMensajes cargaba la conversación entera cada 3s. Ahora consulta solo
MAX(id) y recarga únicamente si llegó algo nuevo; el historial se limita
a los 60 mensajes más recientes.
- El upload no se validaba: se añade regla image/mimes/max 8MB.
- Se elimina $procesandoImagen, propiedad muerta que viajaba en cada payload.
Interfaz:
- Envío optimista: la burbuja del usuario aparece al instante, sin esperar
el round-trip, con reloj de "pendiente" y checks al confirmarse.
- Indicador "escribiendo…" con puntos animados mientras el bot responde.
- Visor de imagen a pantalla completa al tocar el comprobante.
- Textarea que crece con el texto (Shift+Enter para salto de línea),
con wire:ignore para que el poll no le reinicie la altura al escribir.
- Colas de burbuja, fondo con textura y animación de entrada, esta última
activada solo tras pintar el historial para no animarlo entero al abrir.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>