0.8.1 (2026-10-03)¶
Versión de estabilización de 0.8.0: seguridad, un chat de IA mucho más confiable, catálogo de modelos actualizado, un pizarrón más pulido y una importación que ya no falla con archivos raros. Sin funciones nuevas ni migraciones obligatorias.
⬆️ Notas de actualización¶
- Sin migraciones obligatorias. Reconstruye las imágenes como siempre (
docker compose up -d --build). - Recomendado: corre una vez
docker exec diagramahub-backend poetry run python -m scripts.fix_misfiled_diagrams(solo reporta) y, si encuentra casos, repítelo con--apply. Devuelve a la raíz de su propio proyecto los diagramas que quedaron archivados en carpetas de otro proyecto o en carpetas borradas. No borra nada. - La cobertura de pruebas del backend sube a 62,57 %.
🔒 Seguridad¶
- Un usuario podía guardar diagramas en la carpeta de otro. Crear o mover un diagrama aceptaba cualquier
folder_id; el diagrama aparecía en el explorador y en la exportación de esa carpeta (incluido el Markdown para IA). Ahora la carpeta debe ser del mismo proyecto, y el árbol, la exportación y el borrado de carpetas ignoran diagramas de otros proyectos. - Duplicar un diagrama ahora respeta el límite del plan.
- Dependencias: axios 1.20 corrige 12 avisos de seguridad (7 altos). El audit de producción vuelve a cero.
- Importación: los límites de archivos y de tamaño descomprimido se aplican a toda la petición (antes, por ZIP, permitían agotar la memoria con muchos ZIP pequeños). La vista previa tiene su propio límite de frecuencia.
- La vista compartida (solo lectura) ya no abre el menú de edición con clic derecho.
- Los limitadores de frecuencia olvidan las IP inactivas (su memoria ya no crece sin límite).
🤖 IA¶
- Chat: 88 % → 99 % de diagramas válidos al primer intento (160 casos, 4 modelos). Causas corregidas:
- El chat con streaming —el que usa la app— enviaba un prompt mínimo, sin el formato esperado ni reglas de sintaxis.
- Las respuestas se cortaban por el límite de tokens (los modelos con razonamiento gastan parte pensando). Ahora una solicitud de código recibe 8.192 tokens y una respuesta cortada nunca se aplica: se muestra un aviso.
- "Crea un flujo… (¿requiere cirugía?)" se trataba como pregunta por el signo de interrogación.
- Reglas de sintaxis verificadas contra los renderizadores reales (identificadores ASCII en DBML, formas válidas de D2, sintaxis de actividad de PlantUML…).
- Corrección automática (Ajustes → IA, activada por defecto): si el código generado (Mermaid o D2) no renderiza, se le pide una corrección al modelo una vez. Nunca para PlantUML ni DBML.
- Modelos actualizados, verificados con la documentación de cada proveedor y llamadas reales: Claude Sonnet 5.5 / Opus 5.5 / Fable 5.1, OpenAI gpt-6-luna / gpt-6.1-sol / gpt-6-astra, DeepSeek deepseek-flash, Gemini 3.8-flash, MiniMax M3. Los modelos guardados que salen de la lista siguen funcionando y se marcan como "retirado".
- Claude 5.x rechaza el parámetro
temperature: ya no se envía a esos modelos. - "Sin créditos" ya no se muestra como "límite de solicitudes", y "Probar conexión" hace una llamada real con el modelo elegido: distingue llave inválida, sin créditos, modelo no disponible y límite de solicitudes.
- El endpoint
/ai/generate-diagram(API) pasa de 72 % a 98 % de diagramas válidos.
✏️ Pizarrón¶
- La vista (paneo) se guarda al desplazar con rueda o trackpad y se restaura al abrir el diagrama.
- Los elementos rotados se seleccionan donde se dibujan.
- Corregido: clic en el extremo de una flecha la desconectaba; mover un trazo perdía la presión del lápiz; pegar copiaba el grupo y el bloqueo del original; borrar una forma eliminaba flechas bloqueadas; el historial guardaba pasos vacíos; la redimensión se quedaba "pegada" al salir del lienzo.
- La fuente manuscrita se aplica en cuanto carga; el editor de texto usa la misma fuente e interlineado que el lienzo; un toque del lápiz deja un punto.
- Espacio + arrastrar funciona aunque un botón tenga el foco; "Limpiar todo" pide confirmación; los atajos se muestran como ⌘ en Mac y Ctrl en Windows/Linux.
- Boceto → Mermaid: nodos llamados
end,style… ya no rompen el diagrama; líneas sin punta, flechas dobles y autoenlaces se convierten bien. - Rendimiento: dibujos sin relleno se mueven tan rápido como el modo limpio.
📦 Importar y exportar¶
- Archivos dañados o raros (Excalidraw mal formado, entradas ZIP corruptas, JSON muy anidado,
NaN) se omiten con aviso en lugar de fallar la importación. Se aceptan archivos UTF-16 y se avisa si hubo caracteres no reconocidos. - Títulos de 100 caracteres repetidos, carpetas
Docsydocs, cancelaciones a medias: corregidos. - Diagramas cuya carpeta ya no existe vuelven a aparecer en el explorador y en las exportaciones.
- Los diálogos de importar y exportar se cierran con Escape y mantienen el foco; mensajes de error claros (incluido "inténtalo en N s").
- Soltar un archivo fuera de la zona de importación ya no hace que el navegador lo abra.
🌐 Interfaz e idioma¶
- El backend recibe el idioma real de la interfaz (antes siempre español).
- Pantallas de suscripción completas en inglés (faltaban 82 textos); plurales correctos ("1 carpeta", "Hasta 5 proyectos").
🧹 Interno¶
- Eliminados los diálogos "Crear/Mejorar con IA" y el panel de historial de prompts, que no se usaban en ninguna pantalla.
- Reemplazado
datetime.utcnow()(obsoleto) y la configuración de Pydantic v1. - Banco de pruebas de IA en
scripts/ai-benchmark/para medir prompts y modelos.
🧪 Pruebas¶
- Backend: 429 pruebas, cobertura 62,57 % (umbral 45 %). Frontend: 25 pruebas de Vitest, incluida la paridad de traducciones es/en.
- Cada corrección se verificó con pruebas que fallan con el código anterior, y los flujos de interfaz con Playwright.