Saltar a contenido

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 de MAX_IMPORT_FILES (500) y MAX_IMPORT_UNCOMPRESSED_BYTES (50 MB).
  • Nuevo archivo THIRD_PARTY_NOTICES.md con 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 .md al lado, un README.md con el índice y un manifest.json para 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%).