0.8.0 (2026-10-02)¶
Release de producto con tres pilares que se refuerzan entre sí: exportar un proyecto o carpeta completos (ZIP o un solo Markdown), importar archivos, archivos ZIP y dibujos de Excalidraw, y un pizarrón a mano alzada con el aspecto hecho a mano de Excalidraw, bloqueo de elementos, exportación a PNG y conversión de boceto a Mermaid.
⬆️ Notas de actualización¶
- Sin migraciones ni cambios de configuración obligatorios. Reconstruye las imágenes como siempre (
docker compose up -d --build). - Los dibujos existentes conservan su aspecto: el estilo "a mano" solo se aplica a los elementos nuevos; cualquier elemento se puede cambiar de estilo desde el panel.
- Nueva variable opcional
MAX_IMPORT_UPLOAD_BYTES(por defecto 20 MB) para el tamaño máximo de una importación, además deMAX_IMPORT_FILES(500) yMAX_IMPORT_UNCOMPRESSED_BYTES(50 MB). - Nuevo archivo
THIRD_PARTY_NOTICES.mdcon los componentes de terceros que se distribuyen en la aplicación (roughjs y perfect-freehand, MIT; fuente Caveat, SIL OFL 1.1).
✨ Funcionalidades¶
Exportar un proyecto o una carpeta¶
- Desde el explorador (icono de descarga o menú de carpeta → "Exportar carpeta") y desde la lista de proyectos.
- Alcance: el proyecto completo (raíz y todas las carpetas) o una sola carpeta.
- ZIP: una subcarpeta por carpeta, un archivo por diagrama con la extensión de su tipo (
.mmd,.puml,.d2,.dbml,.freehand.json), la descripción en un.mdal lado, unREADME.mdcon el índice y unmanifest.jsonpara volver a importarlo. Nombres seguros para cualquier sistema operativo y sin colisiones. - Markdown en un solo archivo, en dos variantes: para contexto de IA (con un preámbulo que explica el archivo al modelo, índice con rutas, metadatos por diagrama y estimación de tokens, listo para pegar en ChatGPT o Claude) o estándar (documento limpio). Los diagramas van en bloques de código con su etiqueta (
mermaid,plantuml,d2,dbml). - Antes de descargar se muestra qué se exportará: diagramas, carpetas, tamaño y, en la variante para IA, tokens aproximados.
Importar¶
- Desde el icono de subida del explorador, el menú de carpeta ("Importar aquí") o arrastrando archivos del sistema sobre la raíz o una carpeta del explorador.
- Acepta archivos sueltos (
.mmd,.puml,.d2,.dbml, pizarrones.freehand.json, Markdown con un bloque de código, texto con detección de tipo), archivos ZIP (los exportados por Diagramahub restauran carpetas y colores; cualquier otro ZIP crea carpetas desde sus rutas) y dibujos de Excalidraw (.excalidraw: formas, etiquetas, flechas conectadas, trazos y texto; imágenes y marcos se omiten y se informa). - Vista previa antes de crear nada: carpetas y diagramas que se crearán, archivos omitidos con su motivo y el cupo del plan. Si la importación superara el límite del plan, se rechaza completa.
- Si algo falla a mitad, se revierte lo creado. Los títulos repetidos reciben un sufijo "(2)". Las carpetas con el mismo nombre se reutilizan.
- Protección contra archivos ZIP maliciosos: límite de tamaño, de archivos y de tamaño descomprimido; ZIP anidados omitidos.
Pizarrón a mano alzada¶
- Aspecto hecho a mano en formas, líneas y flechas (
roughjs), con estilo de trazo (Limpio, Arquitecto, Artista, Caricatura) y relleno (sólido, rayado, cruzado) desde el panel de estilo. - Trazo libre suave con grosor variable y presión del lápiz (
perfect-freehand). - Fuente manuscrita (Caveat) para textos nuevos, con selector Manuscrita / Normal / Código.
- Bloquear elementos (panel, menú contextual o Ctrl/Cmd+Shift+L): no se mueven (arrastre, flechas del teclado, alinear), redimensionan, rotan, editan, cambian de estilo ni borran. Al alinear, los bloqueados sirven de referencia fija.
- Exportar el pizarrón a PNG (antes no era posible) con escala 1x/2x/3x y fondo transparente opcional (incluye elementos rotados completos; en dibujos enormes la escala se reduce para no exceder los límites del navegador); descarga de la fuente como
.freehand.json. - Boceto → Mermaid: desde el menú de conversión, las formas con texto se convierten en nodos y las flechas conectadas en relaciones de un diagrama de flujo nuevo; lo que no se puede convertir se anota como comentarios al inicio del código. Sin IA: el resultado es exacto y repetible.
- La vista compartida y el modo presentación usan el nuevo renderizado.
🐛 Correcciones¶
- La herramienta de texto del pizarrón perdía el texto: al hacer clic, el cuadro de edición perdía el foco al instante y el elemento desaparecía. Ahora funciona con un solo clic.
- El pizarrón no se podía exportar: el botón de exportar estaba oculto para este tipo de diagrama.
- La descarga de la fuente de un diagrama DBML bajaba con extensión
.mmd. - Las descargas del navegador no recibían el nombre de archivo del servidor (faltaba exponer la cabecera
Content-Disposition). - La vista previa en vivo del pizarrón no reflejaba el cambio de color de relleno.
- Al abrir la exportación de un pizarrón después de elegir SVG, PDF o Markdown en otro diagrama, se conservaba el formato oculto y el botón fallaba; los pizarrones siempre exportan PNG.
- El resumen de exportación tiene su propio límite por usuario y ya no comprime el ZIP para medirlo (muestra "hasta" ese tamaño).
🧪 Pruebas¶
- Backend: 70 pruebas nuevas para exportar e importar (constructores puros, nombres seguros, variantes de Markdown, ZIP con y sin manifest, Excalidraw, límites, cupo del plan, revert, permisos).
- Frontend: se incorpora Vitest para funciones puras (
npm test), con las primeras 15 pruebas (boceto → Mermaid y geometría de la exportación PNG). - Los flujos completos se verificaron en el navegador con Playwright: exportación (18 comprobaciones), importación (20), pizarrón (13 + 13) y vista compartida.
- Suite completa del backend: 343 pruebas, cobertura 57.01% (umbral 45%).