Saltar a contenido

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 Docs y docs, 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.