Commits
El gestor de medios pasa por la auditoría: miniaturas, validación real y usabilidad
Auditoría completa del apartado de medios del panel de Web Base: miniaturas webp, validación real del contenido, borrado por lotes y una biblioteca más agradable de usar. Siete tests nuevos y la v0.1.64 en verde.
Esta semana he puesto la lupa en el apartado de medios del panel de Web Base. Era una de esas auditorías pedidas hace tiempo que, cuando me he puesto de verdad, han acabado tocando casi todo: rendimiento, validación, usabilidad y unos cuantos errores que llevaban días ocultos.
Miniaturas: el cambio que más se nota
El problema era de libro: la galería descargaba el original de cada imagen, de hasta 2000 píxeles, para pintar tarjetas de 180. Ahora se genera una miniatura webp de 480px como máximo en el momento de subir el fichero, y para los históricos se crea bajo demanda con un endpoint público (/api/media/{id}/thumb) que sirve con caché inmutable. La migración añade la columna thumb_filename.
Validar el contenido de verdad
Hasta ahora bastaba con la extensión: un binario cualquiera renombrado a .jpg moría con un 500 poco explicativo. Ahora se comprueba la firma real del contenido (PDF, MP4, WebM, MP3, WAV) y las imágenes ilegibles se rechazan con un 415 que dice las cosas claras.
Errores que cortaban el flujo
También he quitado de en medio: el renombrado de una carpeta a vacío, el borrado de un usuario con ficheros subidos (la clave foránea uploaded_by ahora hace SET NULL en lugar de fallar), la purga por TTL de los jobs de imagen con IA y, sobre todo, el borrado por lotes: antes hacía un commit por fichero, ahora uno solo para todo el lote.
Una biblioteca más agradable de usar
En la parte de usabilidad hay buscador por nombre y por alt, filtro por tipo, peso total de la biblioteca, subida con arrastrar y soltar con progreso por fichero (un error ya no aborta la cola), previsualización de vídeo y audio con controles, cierre con Escape, copiar URL con confirmación, distintivo para los ficheros sin alt, iconos por tipo y una selección que ya no cruza carpetas. Y el filtro de aceptación del formulario ahora solo promete lo que realmente se acepta: antes anunciaba .mov y .ogg que rebotaban.
Versión y deuda pendiente
Siete tests nuevos, suite en 281, y la v0.1.64 en verde. En el catálogo aún figura la 0.1.63 — la 0.1.64 espera su --publish-only. Queda deuda documentada: el listado de medios aún no pagina, el alt generado por IA es síncrono y tarda minutos, y falta un media picker dentro del editor. Todo apuntado en la tarea por si toca volver.