<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DiagramaHub Blog</title>
    <link>https://www.diagramahub.com/blog</link>
    <atom:link href="https://www.diagramahub.com/blog/rss.xml" rel="self" type="application/rss+xml" />
    <description>Notas y novedades de DiagramaHub</description>
    <language>es</language>
    <lastBuildDate>Sun, 04 Oct 2026 12:00:00 GMT</lastBuildDate>
    <item>
      <title>Un chat de IA más confiable: 99% de diagramas válidos a la primera</title>
      <link>https://www.diagramahub.com/blog/un-chat-de-ia-mas-confiable</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/un-chat-de-ia-mas-confiable</guid>
      <pubDate>Sun, 04 Oct 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>Con la 0.8.1 y la 0.8.2, el chat de IA pasa de 88% a 99% de diagramas válidos, el diagrama siempre llega a la vista previa y los errores del proveedor se explican.</description>
      <category>ia</category>
      <category>novedades</category>
      <category>seguridad</category>
      <content:encoded><![CDATA[<p>Pedirle un diagrama a la IA solo es útil si lo que regresa renderiza. Si hay que corregir la sintaxis a mano o copiar el código desde el chat al editor, el atajo deja de serlo. En la <strong>0.8.1</strong> y la <strong>0.8.2</strong> nos dedicamos a eso: medir por qué fallaba el chat y corregir cada causa.</p>
<h2 id="de-88-a-99-de-diagramas-validos">De 88% a 99% de diagramas válidos</h2>
<p>Armamos un banco de pruebas con <strong>160 casos y 4 modelos</strong>. El chat generaba un diagrama válido al primer intento el <strong>88%</strong> de las veces; con la 0.8.1 llega al <strong>99%</strong>. Lo que corregimos:</p>
<ul>
<li><strong>El chat con streaming —el que usa la app— enviaba un prompt mínimo</strong>, sin el formato esperado ni reglas de sintaxis.</li>
<li><strong>Las respuestas se cortaban</strong> por el límite de tokens: los modelos con razonamiento gastan parte de él pensando. Ahora una solicitud de código recibe 8.192 tokens.</li>
<li>&quot;Crea un flujo… (¿requiere cirugía?)&quot; se trataba como una pregunta por el signo de interrogación.</li>
<li><strong>Las reglas de sintaxis se verificaron contra los renderizadores reales</strong>: identificadores ASCII en DBML, formas válidas de D2, sintaxis de actividad de PlantUML…</li>
</ul>
<p>El endpoint <code>/ai/generate-diagram</code> del API también mejora: de 72% a 98% de diagramas válidos.</p>
<h2 id="el-diagrama-siempre-llega-a-la-vista-previa">El diagrama siempre llega a la vista previa</h2>
<p>La 0.8.2 resuelve un problema muy molesto. El chat adivinaba con palabras clave si tu mensaje pedía un diagrama o hacía una pregunta, y solo buscaba el código en el primer caso. Pedidos como &quot;¿Me puedes hacer…?&quot;, &quot;Necesito que…&quot; o &quot;Agrégale…&quot; se tomaban como preguntas: el modelo sí respondía con el diagrama, pero aparecía como texto partido en fragmentos, sin vista previa ni botón de aceptar.</p>
<p>Ahora <strong>decide la respuesta del modelo</strong>: si trae el diagrama, se muestra con vista previa, se valida y puedes aceptarlo o rechazarlo. Medido con Gemini real, 7 de 7 pedidos de ese tipo dejaban el código en el chat; ahora 0 de 7, en los 4 tipos de diagrama. Las preguntas se siguen respondiendo con texto.</p>
<pre class="mermaid">flowchart TD
    A[Respuesta del modelo] --&gt; B{¿Se cortó por el límite?}
    B --&gt;|Sí| C[Aviso, no se aplica]
    B --&gt;|No| D{¿Trae un diagrama?}
    D --&gt;|No| E[Respuesta en texto]
    D --&gt;|Sí| F{¿Renderiza?}
    F --&gt;|Sí| G[Vista previa: aceptar o rechazar]
    F --&gt;|&quot;No (Mermaid o D2)&quot;| H[Corrección automática, una vez]
    H --&gt; G</pre>
<h2 id="respuestas-cortadas-y-correccion-automatica">Respuestas cortadas y corrección automática</h2>
<p>Todas las respuestas del chat tienen ahora el límite de 8.192 tokens, y <strong>una respuesta cortada nunca se aplica</strong>: ves un aviso en lugar de un fragmento roto.</p>
<p>Además hay una <strong>corrección automática</strong> opcional (Ajustes → IA, activada por defecto): si el código generado en Mermaid o D2 no renderiza, se le pide al modelo una corrección, una sola vez. Nunca se aplica a PlantUML ni DBML.</p>
<h2 id="errores-claros-y-modelos-actuales">Errores claros y modelos actuales</h2>
<p>Antes cualquier fallo del proveedor parecía un &quot;límite de solicitudes&quot;. Ahora DiagramaHub distingue <strong>llave inválida, sin créditos, modelo no disponible y límite de solicitudes</strong>, y <strong>&quot;Probar conexión&quot;</strong> hace una llamada real con el modelo que elegiste.</p>
<p>El catálogo de modelos se actualizó, verificado 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 y MiniMax M3. Si tenías guardado un modelo que salió de la lista, sigue funcionando y aparece como &quot;retirado&quot;.</p>
<h2 id="todo-el-chat-en-tu-idioma">Todo el chat en tu idioma</h2>
<p>El backend ahora recibe el idioma real de la interfaz (antes siempre era español). Con la 0.8.2 el chat queda completo en inglés —mensajes, vista previa, selector de sesiones, fases y errores— y los errores del chat y de los proveedores llegan en el idioma del usuario.</p>
<h2 id="seguridad">Seguridad</h2>
<p>La 0.8.1 también trae correcciones de seguridad:</p>
<ul>
<li><strong>Un usuario podía guardar diagramas en la carpeta de otro</strong>, y aparecían en el explorador y en la exportación de esa carpeta. Ahora la carpeta debe ser del mismo proyecto. Si lo hospedas tú, corre una vez <code>scripts.fix_misfiled_diagrams</code> (solo reporta; con <code>--apply</code> corrige, sin borrar nada).</li>
<li><strong>Duplicar un diagrama</strong> respeta el límite del plan.</li>
<li><strong>axios 1.20</strong> corrige 12 avisos de seguridad (7 altos) y el audit de producción vuelve a cero.</li>
<li>Los límites de importación se aplican a toda la petición, no por ZIP.</li>
</ul>
<h2 id="pruebalo">Pruébalo</h2>
<p>Abre el chat en cualquier diagrama de <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> con tu propia llave, o actualiza tu instalación desde el <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio</a>. El detalle completo está en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Exporta tu proyecto completo como contexto para ChatGPT o Claude</title>
      <link>https://www.diagramahub.com/blog/exporta-tu-proyecto-como-contexto-para-ia</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/exporta-tu-proyecto-como-contexto-para-ia</guid>
      <pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La versión 0.8.0 exporta proyectos completos en un Markdown pensado para una IA o en ZIP, importa desde Excalidraw y le da al pizarrón un estilo hecho a mano.</description>
      <category>exportar</category>
      <category>ia</category>
      <category>pizarron</category>
      <content:encoded><![CDATA[<p>Tus diagramas cuentan cómo funciona tu sistema: los flujos de autenticación, el esquema de la base de datos, la secuencia entre servicios. Es justo el contexto que le falta a un asistente de IA cuando le preguntas por tu arquitectura. Hasta ahora había que copiarlos uno por uno. Desde la <strong>versión 0.8.0</strong> exportas el proyecto entero en un paso.</p>
<h2 id="dos-formatos-dos-usos">Dos formatos, dos usos</h2>
<p>Al exportar un proyecto (o solo una carpeta) eliges entre:</p>
<ul>
<li><strong>ZIP</strong>: una subcarpeta por cada carpeta del proyecto, un archivo por diagrama con la extensión de su lenguaje (<code>.mmd</code>, <code>.puml</code>, <code>.d2</code>, <code>.dbml</code> o <code>.freehand.json</code> para el pizarrón), su descripción en un <code>.md</code> al lado, un <code>README.md</code> con el índice y un <code>manifest.json</code> para volver a importarlo.</li>
<li><strong>Markdown en un solo archivo</strong>, en dos variantes:<ul>
<li><strong>Para contexto de IA</strong>: empieza con un preámbulo que le explica al modelo qué es el archivo, incluye un índice con las rutas, los metadatos de cada diagrama y una estimación de tokens. Está listo para pegarlo en ChatGPT o Claude.</li>
<li><strong>Estándar</strong>: un documento limpio para tu wiki o tu repositorio.</li>
</ul>
</li>
</ul>
<p>En ambos casos los diagramas van en bloques de código con su etiqueta (<code>mermaid</code>, <code>plantuml</code>, <code>d2</code>, <code>dbml</code>), así que cualquier herramienta que entienda Markdown los reconoce.</p>
<h2 id="como-se-ve-el-flujo">Cómo se ve el flujo</h2>
<pre class="mermaid">flowchart LR
    A[Proyecto en DiagramaHub] --&gt; B{¿Para qué lo necesitas?}
    B --&gt;|Darle contexto a una IA| C[Markdown para IA]
    B --&gt;|Documentación| D[Markdown estándar]
    B --&gt;|Respaldo o migración| E[ZIP]
    C --&gt; F[ChatGPT / Claude]
    D --&gt; G[Wiki o README]
    E --&gt; H[Importar en otra instancia]</pre>
<p>Antes de descargar, DiagramaHub te muestra qué se va a exportar: número de diagramas y carpetas, tamaño y, en la variante para IA, los tokens aproximados. Así sabes si cabe en la ventana de contexto de tu modelo antes de pegarlo.</p>
<h2 id="donde-esta">Dónde está</h2>
<ul>
<li>En el <strong>explorador</strong> del editor, con el icono de descarga (proyecto completo) o desde el menú de una carpeta → <strong>Exportar carpeta</strong>.</li>
<li>En la <strong>lista de proyectos</strong>.</li>
</ul>
<h2 id="y-de-regreso-importar">Y de regreso: importar</h2>
<p>La otra mitad de la historia es traer diagramas. Desde el icono de subida del explorador, el menú de una carpeta (<strong>Importar aquí</strong>) o <strong>arrastrando archivos desde tu sistema</strong> sobre el explorador, puedes importar:</p>
<ul>
<li>Archivos sueltos <code>.mmd</code>, <code>.puml</code>, <code>.d2</code>, <code>.dbml</code>, Markdown con un bloque de código y pizarrones <code>.freehand.json</code>.</li>
<li><strong>ZIP</strong>: los exportados por DiagramaHub restauran carpetas y colores; cualquier otro ZIP crea carpetas a partir de sus rutas.</li>
<li><strong>Dibujos de Excalidraw</strong> (<code>.excalidraw</code>): formas, etiquetas, flechas conectadas, trazos y texto se convierten en un pizarrón.</li>
</ul>
<p>Antes de crear nada ves una <strong>vista previa</strong> con las carpetas y diagramas que se van a crear, los archivos que se omiten y por qué, y el cupo de tu plan. La importación es de <strong>todo o nada</strong>: si algo falla a medio camino, se revierte lo creado.</p>
<h2 id="el-pizarron-ahora-se-ve-hecho-a-mano">El pizarrón ahora se ve hecho a mano</h2>
<p>La 0.8.0 también trae la mayor actualización del pizarrón desde que llegó:</p>
<ul>
<li><strong>Aspecto hecho a mano</strong> en formas, líneas y flechas, con estilos de trazo (Limpio, Arquitecto, Artista, Caricatura) y de relleno (sólido, rayado, cruzado).</li>
<li><strong>Trazo libre suave</strong> con grosor variable y <strong>presión del lápiz</strong>.</li>
<li><strong>Fuente manuscrita</strong> para los textos nuevos, con selector Manuscrita / Normal / Código.</li>
<li><strong>Bloquear elementos</strong> (Ctrl/Cmd+Shift+L) para que no se muevan, redimensionen ni borren por accidente.</li>
<li><strong>Exportar a PNG</strong> en 1x, 2x o 3x, con fondo transparente opcional, y descargar la fuente como <code>.freehand.json</code>.</li>
<li><strong>Boceto → Mermaid</strong>: las formas con texto se vuelven nodos y las flechas conectadas, relaciones de un diagrama de flujo nuevo. No usa IA, así que el resultado es exacto y repetible.</li>
</ul>
<p>Los dibujos que ya tenías conservan su estilo limpio; solo los elementos nuevos usan el estilo a mano, y puedes cambiarlo por elemento.</p>
<h2 id="sin-lock-in">Sin lock-in</h2>
<p>Tus diagramas son texto, y ahora salen y entran de DiagramaHub sin fricción. Puedes llevarte un proyecto a tu repositorio, compartirlo con alguien que use otra instancia o darle a tu IA el mapa completo de tu sistema.</p>
<p>Ya está disponible en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> y en la <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">versión self-host</a>. Los detalles técnicos están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cero vulnerabilidades conocidas y una carga hasta 71% más ligera</title>
      <link>https://www.diagramahub.com/blog/seguridad-y-una-carga-mas-ligera</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/seguridad-y-una-carga-mas-ligera</guid>
      <pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La 0.7.1 deja el frontend sin vulnerabilidades conocidas, corre el backend sin root, limita el tamaño de las peticiones, hace confiable el autoguardado y aligera la carga.</description>
      <category>seguridad</category>
      <category>rendimiento</category>
      <category>lanzamiento</category>
      <content:encoded><![CDATA[<p>Hay versiones que se notan por una función nueva y otras que se notan porque todo funciona mejor. La <strong>0.7.1</strong> es de las segundas: hemos trabajado en seguridad, en no perder ni una edición y en que la aplicación descargue mucho menos JavaScript. No hay pantallas nuevas, pero si hospedas DiagramaHub o lo usas a diario, te conviene saber qué cambió.</p>
<h2 id="cero-vulnerabilidades-conocidas-en-el-frontend">Cero vulnerabilidades conocidas en el frontend</h2>
<p>Las dependencias de producción del frontend tenían <strong>25 avisos de seguridad, uno de severidad alta</strong>. Ahora son <strong>cero</strong>. Actualizamos DOMPurify a 3.4.16 (es la librería que limpia el SVG de tus diagramas), Mermaid a 11.17.2 y react-router a 7.18.4.</p>
<p>Encontramos además algo incómodo: desde la migración a pnpm en la 0.6.0, los 6 parches de seguridad que forzábamos sobre dependencias estaban escritos en el formato de npm, y pnpm los ignoraba en silencio. Ahora viven en <code>pnpm.overrides</code> y vuelven a aplicarse.</p>
<h2 id="backend-sin-root-y-peticiones-con-limite">Backend sin root y peticiones con límite</h2>
<p>Dos cambios para quienes operan su propia instalación:</p>
<ul>
<li><strong>El contenedor del backend corre como usuario sin privilegios</strong> (<code>app</code>, uid/gid 1000), y la imagen usa <strong>Poetry 2.5.1</strong> (la 1.8.3 y su dependencia <code>dulwich</code> tenían avisos de seguridad).</li>
<li><strong>Límite global de tamaño de petición</strong>: las peticiones con un cuerpo mayor a <code>MAX_REQUEST_BODY_BYTES</code> (por defecto 5 MB) reciben <code>413</code>, tanto si el cliente declara el tamaño como si envía el cuerpo por partes.</li>
</ul>
<p>Para actualizar, reconstruye la imagen con <code>docker compose up -d --build</code>. En el escenario de desarrollo (<code>deploy/local-full</code>), si en Linux tu usuario no es el uid 1000, Python no podrá escribir sus cachés en la carpeta montada; es inofensivo y la imagen de producción no se ve afectada. Si instalas dependencias fuera de Docker, usa Poetry 2.</p>
<h2 id="un-autoguardado-en-el-que-puedes-confiar">Un autoguardado en el que puedes confiar</h2>
<p>Había dos problemas que no se veían a simple vista:</p>
<ul>
<li><strong>Abrir un diagrama lo marcaba como modificado.</strong> El autoguardado y el guardado del zoom y la posición se disparaban al cargar, cambiando la fecha de modificación y el orden de &quot;Recientes&quot;. Ahora solo se guarda cuando hay un cambio real; mover, hacer zoom o ajustar el ancho de un panel ya no cuenta como modificación.</li>
<li><strong>Se podían perder ediciones</strong> hechas justo antes de cambiar de diagrama o salir del editor, dentro del segundo y medio de espera del autoguardado.</li>
</ul>
<pre class="mermaid">flowchart LR
    A[Editas el diagrama] --&gt; B{¿Qué pasa después?}
    B --&gt;|Esperas| C[Autoguardado]
    B --&gt;|Cambias de diagrama| D[Se guarda al cambiar]
    B --&gt;|Sales del editor u ocultas la pestaña| E[Se guarda al salir]
    B --&gt;|Cierras con cambios pendientes| F[El navegador te avisa]</pre>
<p>Además, los guardados se envían uno a la vez, así que uno lento no puede pisar una edición más reciente. Y el título de la barra superior ya no muestra el diagrama anterior mientras carga el siguiente.</p>
<h2 id="hasta-71-menos-javascript">Hasta 71% menos JavaScript</h2>
<p>Antes la aplicación entera venía en un solo archivo. Ahora <strong>cada página se descarga por separado</strong>:</p>
<ul>
<li>El login y el dashboard descargan <strong>193 KB de JavaScript en lugar de 668 KB</strong>, y aparecen en ~105 ms y ~130 ms (antes ~165 ms y ~190 ms).</li>
<li>El editor pinta el diagrama en <strong>~180 ms</strong> (antes ~300 ms).</li>
<li><strong>El editor se precarga</strong> en segundo plano cuando tienes sesión, así que pasar del dashboard a un diagrama no espera la descarga.</li>
<li><strong>La exportación carga sus librerías solo cuando exportas</strong>, lo que aligera el editor.</li>
</ul>
<p>En el servidor, la lista de <strong>&quot;Recientes&quot;</strong> del dashboard se resuelve con una sola consulta indexada en lugar de leer todos los diagramas de todos tus proyectos con su contenido. El índice nuevo en MongoDB se crea solo al arrancar el backend.</p>
<h2 id="detalles-que-tambien-cuentan">Detalles que también cuentan</h2>
<p>Los avisos nativos del navegador en la generación con IA y en la configuración de proveedores se reemplazaron por avisos de la aplicación que se pueden cerrar y respetan el modo oscuro. Las fechas siguen el idioma de la interfaz en todas partes (exportaciones a PDF/PNG, facturación, perfil, editor), y más textos que estaban fijos en español ahora también están en inglés.</p>
<h2 id="actualiza">Actualiza</h2>
<p>En <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> ya está activo. Si lo hospedas tú, toma la versión del <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio</a> y revisa las notas de actualización en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Explorador renovado e imagen de producción para self-host</title>
      <link>https://www.diagramahub.com/blog/explorador-renovado-e-imagen-de-produccion</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/explorador-renovado-e-imagen-de-produccion</guid>
      <pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La 0.7.0 rediseña el explorador de archivos y carpetas, suaviza el cambio entre diagramas y estrena una imagen de producción del frontend de 68 MB.</description>
      <category>lanzamiento</category>
      <category>editor</category>
      <category>organizacion</category>
      <content:encoded><![CDATA[<p>Cuando un proyecto pasa de diez diagramas a cincuenta, el explorador deja de ser un detalle y se vuelve la forma en que trabajas. Hasta ahora el árbol de archivos solo permitía eliminar; todo lo demás había que hacerlo arrastrando o desde otras pantallas. En la <strong>versión 0.7.0</strong> lo hemos rediseñado por completo, junto con el cambio entre diagramas y la forma de desplegar el frontend.</p>
<h2 id="un-explorador-que-se-usa-con-mouse-y-con-teclado">Un explorador que se usa con mouse y con teclado</h2>
<p>Cada diagrama tiene ahora un <strong>menú de acciones</strong> (botón <code>⋯</code> o clic derecho): renombrar, duplicar, mover a una carpeta, mover a otro proyecto y eliminar. Las carpetas tienen el suyo: nuevo diagrama dentro, renombrar y eliminar. Si una carpeta está vacía, te ofrece un acceso directo &quot;Nuevo diagrama aquí&quot;.</p>
<p>Lo que más vas a notar en el día a día:</p>
<ul>
<li><strong>Renombrar en el lugar</strong> con <code>F2</code> o doble clic, tanto diagramas como carpetas.</li>
<li><strong>Mover a una carpeta sin arrastrar</strong>, desde el menú. Funciona también en móvil.</li>
<li><strong><code>Ctrl/Cmd+B</code></strong> abre y cierra el explorador (dentro del editor de descripción sigue siendo negrita).</li>
<li><strong>Fijar el panel</strong> con la chincheta: se queda abierto al hacer clic fuera y al recargar.</li>
<li><strong>Navegación con teclado</strong>: flechas para moverte y abrir o cerrar carpetas, <code>Inicio</code>/<code>Fin</code>, un solo punto de tabulación y <code>Shift+F10</code> para abrir el menú de la fila.</li>
</ul>
<p>El explorador además <strong>empuja el contenido</strong> en lugar de taparlo, así que el código, la vista previa y la barra inferior siempre quedan visibles. Puedes ajustar su ancho entre 200 y 480 px (doble clic lo restablece), y DiagramaHub recuerda ese ancho y las carpetas que dejaste abiertas en cada proyecto.</p>
<p>También es más fácil de leer: carpetas primero, una etiqueta por tipo de diagrama (MMD, PUML, D2, DBML, DRAW), el título completo al pasar el mouse y un contador al buscar (&quot;3 de 24 diagramas&quot;).</p>
<h2 id="cambiar-de-diagrama-sin-parpadeos">Cambiar de diagrama sin parpadeos</h2>
<p>Antes, al abrir otro diagrama desde el explorador, el editor completo desaparecía y las partes cargaban a destiempo. Ahora el área de trabajo se cubre con un indicador &quot;Cargando diagrama…&quot; y se revela completa, con un fundido, cuando el nuevo diagrama ya está dibujado.</p>
<p>En el mismo espíritu, crear, mover, renombrar o eliminar desde el explorador ya no recarga todo el editor: el cambio se ve al instante y, si falla, se revierte con un aviso. Corregimos además que el editor se redibujara entero cada segundo por el reloj de la barra inferior, y que la vista previa quedara en blanco un instante en cada redibujado.</p>
<h2 id="imagen-de-produccion-para-el-frontend">Imagen de producción para el frontend</h2>
<p>Si tienes DiagramaHub en tu propia infraestructura, esta parte es para ti. El frontend estrena una <strong>imagen de producción</strong>: un sitio estático servido por Nginx <strong>sin usuario root</strong>, con cabeceras de seguridad, compresión gzip, caché de recursos y healthcheck. Pesa <strong>68 MB frente a 951 MB</strong> de la imagen de desarrollo.</p>
<p>La URL del API y Sentry se inyectan <strong>al arrancar el contenedor</strong>, no al construir la imagen. Una sola imagen sirve para cualquier entorno, y es compatible con DigitalOcean App Platform (Static Site).</p>
<pre class="mermaid">flowchart LR
    A[Una imagen del frontend] --&gt; B[Arranque del contenedor]
    V[&quot;Variables VITE_API_URL, VITE_SENTRY_DSN, VITE_APP_ENV&quot;] --&gt; B
    B --&gt; C[Staging]
    B --&gt; D[Producción]</pre>
<p>Si usas el escenario <code>deploy/external-mongodb</code>, el frontend pasa del servidor de desarrollo de Vite a esta imagen. Sigue en el puerto <code>5173</code> con las mismas variables; para cambiarlas basta con recrear el contenedor. Para actualizar, reconstruye con <code>docker compose up -d --build</code>. El escenario <code>deploy/local-full</code> no cambia. Incluimos también un ejemplo de Content-Security-Policy (<code>csp.conf.example</code>), desactivado por defecto, para que lo habilites en tu despliegue.</p>
<h2 id="seguridad-lo-que-llego-en-la-0-6-2">Seguridad: lo que llegó en la 0.6.2</h2>
<p>Unos días antes publicamos la <strong>0.6.2</strong>, una versión de endurecimiento del API:</p>
<ul>
<li><strong>Cambiar la contraseña exige confirmar la actual</strong>. Un token robado ya no basta para quedarse con la cuenta. Si consumes el API directamente, envía <code>current_password</code>; si despliegas frontend y backend por separado, publica primero el frontend.</li>
<li><strong>CORS restringido</strong> a métodos y cabeceras explícitos, y <strong>Content-Security-Policy</strong> restrictiva en producción.</li>
<li><strong>Límites por IP</strong> en registro (20/hora), recuperación de contraseña (10/hora), verificación MFA (10 cada 5 minutos) y el renderizado público (60/minuto), con <code>429</code> y <code>Retry-After</code>.</li>
<li><strong>Tope de 100 000 caracteres</strong> en el código que acepta el renderizado público.</li>
<li><strong>Auditoría completa</strong>: recuperación de contraseña, MFA activado y desactivado, y cuenta eliminada ahora quedan registrados.</li>
</ul>
<p>En la 0.7.0 sumamos que el autocorrector de diagramas con IA verifica que el diagrama sea tuyo, y que un token de una cuenta eliminada recibe <code>401</code> en lugar de un error 500.</p>
<h2 id="pruebalo">Pruébalo</h2>
<p>Abre un proyecto en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> y presiona <code>Ctrl/Cmd+B</code>. Si lo hospedas tú, actualiza desde el <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio</a>; todos los detalles están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Mueve y duplica diagramas, y exporta archivos más ligeros</title>
      <link>https://www.diagramahub.com/blog/mover-duplicar-y-exportar-mejor</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/mover-duplicar-y-exportar-mejor</guid>
      <pubDate>Sun, 30 Aug 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La v0.6.1 de DiagramaHub te deja mover diagramas entre proyectos, duplicarlos, elegir la resolución del PNG y exportar PDF de 5 a 15 veces más ligeros.</description>
      <category>novedades</category>
      <category>exportar</category>
      <category>organizacion</category>
      <content:encoded><![CDATA[<p>Hay cambios que no salen en la foto de un lanzamiento pero que usas todos los días. La <strong>versión 0.6.1</strong> es de esas: menos pasos para reorganizar tu trabajo, exportaciones más rápidas y archivos que ya no llenan tu bandeja de correo.</p>
<h2 id="mueve-un-diagrama-a-otro-proyecto">Mueve un diagrama a otro proyecto</h2>
<p>A veces un diagrama nace en el proyecto equivocado, o un prototipo termina siendo parte de otro sistema. Ahora tienes una acción <strong>Mover</strong> en la barra del editor: eliges el proyecto destino en un selector y listo.</p>
<p>Un par de detalles para que sepas qué esperar:</p>
<ul>
<li>El diagrama llega a la <strong>raíz</strong> del proyecto destino; si estaba dentro de una carpeta, deja de estarlo, y desde ahí lo acomodas donde quieras.</li>
<li>El servidor hace validaciones de propiedad antes de moverlo.</li>
</ul>
<h2 id="duplica-en-un-clic">Duplica en un clic</h2>
<p>Para probar una variante sin tocar el original, usa <strong>Duplicar</strong> desde la barra del editor. El modal de confirmación te sugiere un nombre según tu idioma (<code>&lt;nombre&gt;-copia</code> en español, <code>&lt;nombre&gt;-copy</code> en inglés) que puedes cambiar antes de confirmar. La copia se abre automáticamente y ya ajustada a la pantalla, lista para editar.</p>
<pre class="mermaid">flowchart LR
    A[Diagrama original] --&gt;|Duplicar| B[&quot;nombre-copia&quot;]
    A --&gt;|Mover| C[Raíz de otro proyecto]
    B --&gt; D[Se abre ajustado a pantalla]</pre>
<h2 id="un-modal-de-exportacion-en-dos-pasos">Un modal de exportación en dos pasos</h2>
<p>Rediseñamos otra vez el modal de exportación, ahora con un flujo en dos pasos:</p>
<ol>
<li>Eliges el formato.</li>
<li>Ajustas solo las opciones que aplican a ese formato y pulsas <strong>Exportar</strong>.</li>
</ol>
<p>Así no ves controles que no tienen nada que ver con lo que estás exportando. Por ejemplo, el nuevo <strong>selector de resolución PNG</strong> solo aparece cuando eliges PNG, con tres opciones:</p>
<ul>
<li><strong>Pantalla (1x)</strong>, para algo rápido.</li>
<li><strong>Estándar (2x)</strong>, la opción por defecto.</li>
<li><strong>Alta (3x)</strong>, cuando necesitas máxima nitidez.</li>
</ul>
<h2 id="pdf-de-5-a-15-veces-mas-ligeros">PDF de 5 a 15 veces más ligeros</h2>
<p>La imagen que va dentro del PDF pasó de PNG sin pérdida a <strong>JPEG con calidad 0.98</strong>, que en diagramas es visualmente indistinguible. El resultado: los PDF pesan <strong>de 5 a 15 veces menos</strong>. Un PDF que antes ocupaba 20 MB ahora queda entre <strong>1.5 y 5 MB</strong>, mucho más fácil de adjuntar o subir a tu wiki.</p>
<h2 id="png-grandes-sin-trabarse">PNG grandes sin trabarse</h2>
<p>Para diagramas enormes, el PNG ahora tiene un <strong>tope de 8192 px</strong> y se descarga usando Blob URLs en lugar de base64. Eso evita el costo extra de la codificación y los picos de memoria que podían hacer lenta la exportación.</p>
<h2 id="botones-consistentes-en-toda-la-app">Botones consistentes en toda la app</h2>
<p>También unificamos el diseño de los botones: un solo patrón para primarios y secundarios, con anillo de foco, estado deshabilitado y spinner de carga, aplicado en toda la aplicación. Es un cambio visual pequeño, pero hace que la interfaz se sienta más coherente.</p>
<h2 id="pruebalo">Pruébalo</h2>
<p>Abre un diagrama en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> y prueba <strong>Mover</strong>, <strong>Duplicar</strong> o exportar un PNG en alta resolución. Si usas la <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">versión self-host</a>, actualiza a la 0.6.1. Los detalles técnicos están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Pizarrón a mano alzada y conversión de diagramas con IA</title>
      <link>https://www.diagramahub.com/blog/pizarron-a-mano-alzada-y-conversion-con-ia</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/pizarron-a-mano-alzada-y-conversion-con-ia</guid>
      <pubDate>Sat, 15 Aug 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La v0.6.0 de DiagramaHub trae un pizarrón a mano alzada inspirado en Miro y Excalidraw, y convierte tus diagramas entre Mermaid, PlantUML, D2 y DBML con IA.</description>
      <category>pizarron</category>
      <category>ia</category>
      <category>lanzamiento</category>
      <content:encoded><![CDATA[<p>No todas las ideas empiezan como código. A veces necesitas rayar unas cajas y flechas para pensar, y otras veces ya tienes el diagrama escrito pero en el lenguaje equivocado para donde lo vas a usar. La <strong>versión 0.6.0</strong> resuelve las dos cosas: un <strong>pizarrón a mano alzada</strong> y la <strong>conversión de diagramas entre lenguajes con IA</strong>.</p>
<h2 id="un-nuevo-tipo-de-diagrama-el-pizarron">Un nuevo tipo de diagrama: el pizarrón</h2>
<p>Además de Mermaid, PlantUML, D2 y DBML, ahora puedes crear un diagrama de tipo <strong>Mano alzada</strong> (<em>Freehand</em>): un lienzo parecido a Excalidraw donde dibujas directamente con:</p>
<ul>
<li>Formas básicas: rectángulos, rombos y círculos.</li>
<li>Flechas, líneas, texto y trazos libres.</li>
<li>Una barra de herramientas con selectores de color y de grosor de trazo.</li>
</ul>
<p>Para quienes administran una instalación self-host: el estado del lienzo se guarda como JSON en el mismo campo de contenido que usan los demás diagramas, así que no hace falta ninguna migración de esquema.</p>
<h2 id="lo-mejor-de-miro-y-excalidraw">Lo mejor de Miro y Excalidraw</h2>
<p>Un pizarrón vive o muere por cómo se siente al usarlo, así que tomamos lo que mejor funciona de Miro y Excalidraw:</p>
<ul>
<li><strong>Deshacer y rehacer</strong> (Ctrl+Z, Ctrl+Shift+Z o Ctrl+Y) con botones en la barra e historial de hasta <strong>100 pasos</strong>.</li>
<li><strong>Texto en línea</strong>, sin el prompt del navegador: soporta varias líneas, los textos crecen solos y el texto dentro de una forma siempre queda centrado.</li>
<li><strong>Atajos de teclado</strong> para cada herramienta, duplicar con Ctrl+D, mover elementos con las flechas del teclado y ajustar al contenido con F.</li>
<li><strong>Herramienta mano</strong> y desplazamiento con Espacio + arrastrar.</li>
<li><strong>Alinear y distribuir</strong> cuando seleccionas varios elementos.</li>
<li><strong>Agrupar y desagrupar</strong> (Ctrl+G / Ctrl+Shift+G); al hacer clic seleccionas el grupo completo.</li>
<li><strong>Rotar</strong> formas y texto con una manija, con saltos de 15° si mantienes Shift. Las flechas conectadas siguen a los anclajes aunque la forma esté rotada.</li>
<li><strong>Guías de alineación</strong> rojas al estilo Miro, con <em>snapping</em> al arrastrar o dibujar.</li>
<li>Un <strong>panel de estilos contextual</strong> que aparece junto a lo que seleccionaste.</li>
<li>Borrador que funciona arrastrando, líneas discontinuas, puntas de flecha al inicio o al final, esquinas redondeadas y tamaño de fuente ajustable.</li>
</ul>
<h2 id="convierte-entre-mermaid-plantuml-d2-y-dbml">Convierte entre Mermaid, PlantUML, D2 y DBML</h2>
<p>¿Tienes un diagrama en Mermaid y tu equipo documenta todo en PlantUML? ¿Un esquema que quieres llevar a DBML? Ahora puedes <strong>convertir un diagrama a otro lenguaje</strong> con el proveedor de IA que ya configuraste en DiagramaHub (tu propia API key, como en el resto de las funciones de IA).</p>
<p>Antes de cambiar nada, ves el original y el resultado <strong>lado a lado</strong>, junto con advertencias sobre posibles incompatibilidades entre los lenguajes. La conversión es solo una vista previa: nada se guarda hasta que la aceptas. Al aceptar, el diagrama se recentra automáticamente en pantalla.</p>
<pre class="mermaid">sequenceDiagram
    participant U as Tú
    participant D as DiagramaHub
    participant IA as Tu proveedor de IA
    U-&gt;&gt;D: Convertir a otro lenguaje
    D-&gt;&gt;IA: Diagrama original y lenguaje destino
    IA--&gt;&gt;D: Diagrama convertido
    D--&gt;&gt;U: Vista previa lado a lado con advertencias
    U-&gt;&gt;D: Aceptar
    D--&gt;&gt;U: Diagrama actualizado y recentrado</pre>
<h2 id="otros-cambios">Otros cambios</h2>
<ul>
<li>El editor ahora abre con el panel de carpetas y archivos cerrado; aparece al hacer clic en el ícono de carpeta junto al nombre del diagrama.</li>
<li>Para self-host: el frontend pasó de npm a pnpm, con instalaciones más rápidas y mejor uso del disco.</li>
</ul>
<h2 id="pruebalo">Pruébalo</h2>
<p>Crea un diagrama de tipo <strong>Mano alzada</strong> o convierte uno existente en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a>. Si usas la <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">versión self-host</a>, actualiza a la 0.6.0. Todos los detalles están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Un explorador de proyectos estilo VS Code dentro del editor</title>
      <link>https://www.diagramahub.com/blog/explorador-de-proyectos-en-el-editor</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/explorador-de-proyectos-en-el-editor</guid>
      <pubDate>Sat, 18 Jul 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La v0.5.10 de DiagramaHub agrega un explorador persistente al editor: crea diagramas dentro de carpetas, renombra carpetas y mueve diagramas arrastrando y soltando.</description>
      <category>editor</category>
      <category>organizacion</category>
      <category>novedades</category>
      <content:encoded><![CDATA[<p>Cuando un proyecto pasa de cinco diagramas a treinta, el problema deja de ser dibujar y pasa a ser encontrar. Saltar del editor a la lista de proyectos, buscar el diagrama y volver rompe la concentración. En la <strong>versión 0.5.10</strong> llevamos la estructura del proyecto al lugar donde trabajas: el editor.</p>
<h2 id="un-explorador-que-se-queda-contigo">Un explorador que se queda contigo</h2>
<p>Si usas VS Code, esto te va a resultar familiar. El editor de diagramas de escritorio ahora tiene un <strong>explorador de proyecto persistente</strong> con el árbol de tu proyecto: los diagramas de la raíz y tus carpetas con su contenido. Abres otro diagrama sin salir del editor y sin perder el contexto de dónde está cada cosa.</p>
<p>También corregimos un detalle que hacía incómodo usarlo: las interacciones dentro del explorador ya no cierran el panel como si fueran clics fuera de él.</p>
<h2 id="organiza-sin-salir-del-editor">Organiza sin salir del editor</h2>
<p>Además de navegar, desde el explorador puedes ordenar tu proyecto:</p>
<ul>
<li><strong>Crear diagramas directamente dentro de una carpeta</strong>, sin tener que crearlo en la raíz y moverlo después.</li>
<li><strong>Renombrar carpetas</strong> cuando el nombre que elegiste al inicio ya no describe lo que contienen.</li>
<li><strong>Mover diagramas con arrastrar y soltar</strong> entre la raíz del proyecto y las carpetas.</li>
</ul>
<p>Las carpetas siguen siendo de <strong>un solo nivel</strong>. Es una decisión a propósito: una jerarquía plana se mantiene fácil de recorrer y evita los árboles profundos donde nadie encuentra nada.</p>
<pre class="mermaid">flowchart TD
    P[Proyecto] --&gt; R1[Diagrama en la raíz]
    P --&gt; C1[Carpeta Backend]
    P --&gt; C2[Carpeta Base de datos]
    C1 --&gt; D1[Secuencia de login]
    C1 --&gt; D2[Arquitectura de servicios]
    C2 --&gt; D3[Esquema DBML]
    R1 -. arrastrar y soltar .-&gt; C1</pre>
<h2 id="ajustar-a-pantalla-ahora-bien-centrado">Ajustar a pantalla, ahora bien centrado</h2>
<p>Otro cambio que se nota al trabajar: <strong>ajustar a pantalla</strong> ahora calcula el encuadre con los límites reales del SVG renderizado. En la práctica, los diagramas de <strong>D2</strong> se centran correctamente, algo que antes no siempre pasaba.</p>
<h2 id="pagina-acerca-de">Página &quot;Acerca de&quot;</h2>
<p>Agregamos una página <strong>Acerca de</strong> dentro de la aplicación con los detalles del producto, el enlace al repositorio de GitHub, nuestra cuenta de X y el correo de contacto. Si quieres reportar algo, proponer una idea o simplemente ver el código, ahí tienes todos los caminos en un solo lugar.</p>
<h2 id="dependencias-al-dia">Dependencias al día</h2>
<p>En esta versión también actualizamos las dependencias del frontend, entre ellas Mermaid a la 11.16.0 y DOMPurify a la 3.4.12, y renovamos las dependencias transitivas. Con eso, <code>npm audit</code> reporta <strong>0 vulnerabilidades</strong> tanto en dependencias de producción como de desarrollo.</p>
<h2 id="pruebalo">Pruébalo</h2>
<p>Abre cualquier diagrama en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> y organiza tu proyecto desde el explorador. Si usas la <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">versión self-host</a>, actualiza a la 0.5.10. Los detalles técnicos están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Exporta tus diagramas a SVG (y PDF mucho más ligeros)</title>
      <link>https://www.diagramahub.com/blog/exporta-tus-diagramas-a-svg</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/exporta-tus-diagramas-a-svg</guid>
      <pubDate>Thu, 18 Jun 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>Con la v0.5.8 de DiagramaHub descargas tus diagramas como SVG. Antes, la v0.5.7 bajó los PDF de 150–200 MB a ~1–5 MB y mejoró PNG y Markdown.</description>
      <category>exportar</category>
      <category>novedades</category>
      <category>seguridad</category>
      <content:encoded><![CDATA[<p>Un diagrama no sirve de mucho si se queda dentro de la herramienta. Lo quieres en el README, en la wiki del equipo o en el PDF que le mandas a alguien que no tiene cuenta. En las últimas semanas nos dedicamos a que exportar fuera rápido, ligero y limpio, y hoy, con la <strong>versión 0.5.8</strong>, llega un formato nuevo: <strong>SVG</strong>, vectorial y escalable.</p>
<h2 id="svg-vectores-limpios-para-tu-documentacion">SVG: vectores limpios para tu documentación</h2>
<p>Desde la 0.5.8 puedes descargar tus diagramas de <strong>Mermaid, PlantUML, D2 y DBML</strong> como SVG. Al ser vectorial, se ve nítido a cualquier tamaño, pesa poco y se integra bien en:</p>
<ul>
<li>Documentación y READMEs, donde un PNG se ve borroso al hacer zoom.</li>
<li>Herramientas vectoriales, si quieres seguir editando el diagrama a mano para una presentación o un póster.</li>
</ul>
<p>Junto con el SVG rediseñamos el modal de exportación. Ahora los formatos aparecen como una cuadrícula de 2×2 tarjetas (<strong>PNG, SVG, PDF y Markdown</strong>), las opciones de contenido viven en una sección secundaria más compacta y la descarga del código fuente pasó a un botón discreto al pie. Menos ruido, misma potencia.</p>
<h2 id="pdf-de-150-200-mb-a-1-5-mb">PDF de 150–200 MB a ~1–5 MB</h2>
<p>Dos días antes, en la <strong>versión 0.5.7</strong>, atacamos un problema que seguro notaste si exportaste un diagrama grande a PDF: el archivo pesaba entre <strong>150 y 200 MB</strong>. La causa era que capturábamos un bitmap sin comprimir. Lo cambiamos por una rasterización PNG de alta calidad a 2x, y ahora el mismo PDF ronda <strong>~1–5 MB</strong>.</p>
<p>Esa versión también trajo:</p>
<ul>
<li><strong>Encabezado y pie en PDF y PNG</strong>: el título del diagrama siempre aparece; si lo eliges, también el proyecto, la carpeta y el autor. Al pie va la fecha de exportación.</li>
<li><strong>Descripciones con formato en el PDF</strong>: el Markdown de la descripción se dibuja como HTML con encabezados, negritas, listas y tablas, en lugar de mostrar la sintaxis cruda.</li>
<li><strong>Markdown más completo</strong>: la exportación a Markdown incluye la descripción del diagrama y los metadatos del proyecto cuando seleccionas esas opciones.</li>
<li><strong>Indicador de carga por formato</strong>: cada botón muestra su propio spinner, en vez de que todos digan &quot;Exportando&quot; a la vez.</li>
<li><strong>Carga bajo demanda de jsPDF</strong>: la librería de PDF solo se descarga cuando la necesitas, así que el editor abre más rápido.</li>
</ul>
<p>Por dentro, sacamos la lógica de exportación del componente del editor a módulos dedicados (generador de PDF, exportador de Markdown, renderizador de descripciones y encabezado de metadatos). Eso es lo que nos permitió agregar el SVG sin complicar más el código.</p>
<h2 id="como-queda-el-flujo">Cómo queda el flujo</h2>
<pre class="mermaid">flowchart LR
    A[Tu diagrama] --&gt; B[Modal de exportación]
    B --&gt; C[PNG]
    B --&gt; D[SVG]
    B --&gt; E[PDF]
    B --&gt; F[Markdown]
    D --&gt; G[README o wiki]
    D --&gt; H[Editor vectorial]
    E --&gt; I[Compartir con quien no usa DiagramaHub]</pre>
<h2 id="seguridad-lo-que-corregimos-en-estas-versiones">Seguridad: lo que corregimos en estas versiones</h2>
<p>Entre la 0.5.5 y la 0.5.8 también hubo trabajo de seguridad que vale la pena contar:</p>
<ul>
<li><strong>Cambio de contraseña (0.5.6, crítico)</strong>: al cambiar o restablecer la contraseña, un error hacía que se guardara de nuevo el hash anterior, así que en la práctica la contraseña no cambiaba. Ya está corregido. Si cambiaste o restableciste tu contraseña antes de esta versión, te recomendamos hacerlo otra vez.</li>
<li><strong>XSS basado en DOM (0.5.8)</strong>: el SVG renderizado ahora se sanitiza con DOMPurify antes de mostrarse en la vista previa, el editor y los diagramas compartidos, y lo mismo pasa con las descripciones en Markdown que se dibujan para PDF y PNG.</li>
<li><strong>Imágenes más seguras</strong>: el backend pasó a una imagen base Alpine con menos paquetes y menos superficie de CVEs (0.5.6), y la imagen del frontend incorpora los últimos parches de OpenSSL (0.5.8). Además, las descripciones de diagramas ahora tienen un límite de 50,000 caracteres (0.5.5).</li>
</ul>
<h2 id="pruebalo">Pruébalo</h2>
<p>Abre cualquier diagrama en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a>, haz clic en exportar y elige <strong>SVG</strong>. Si usas la <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">versión self-host</a>, actualiza a la 0.5.8. Todos los cambios técnicos están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Streaming y acciones rápidas en el chat de IA de DiagramaHub</title>
      <link>https://www.diagramahub.com/blog/streaming-y-acciones-rapidas-en-el-chat</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/streaming-y-acciones-rapidas-en-el-chat</guid>
      <pubDate>Thu, 14 May 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>Con las versiones 0.5.3 y 0.5.4 el chat de IA responde en tiempo real, muestra en qué fase va y suma acciones rápidas: Explicar, Mejorar UI, Mejorar Proceso y Reparar.</description>
      <category>novedades</category>
      <category>ia</category>
      <category>editor</category>
      <content:encoded><![CDATA[<p>Pedirle a una IA que modifique un diagrama y quedarte viendo un spinner genérico no da ninguna pista: ¿ya está pensando?, ¿se atoró?, ¿falta mucho? Con la <strong>versión 0.5.3</strong> el chat de IA de DiagramaHub responde en tiempo real, y con la <strong>0.5.4</strong> ya no tienes que escribir el prompt para las peticiones más comunes.</p>
<h2 id="respuestas-en-streaming">Respuestas en streaming</h2>
<p>Las respuestas del chat ahora llegan de forma progresiva mediante <strong>Server-Sent Events (SSE)</strong>. En lugar del spinner, ves la fase en la que va la respuesta: &quot;Pensando…&quot;, &quot;Analizando tu diagrama…&quot;, &quot;Generando código…&quot; y &quot;Validando sintaxis…&quot;.</p>
<pre class="mermaid">sequenceDiagram
    participant T as Tú
    participant C as Chat
    participant P as Proveedor de IA
    T-&gt;&gt;C: Pides un cambio al diagrama
    C-&gt;&gt;P: Mensaje con el diagrama como contexto
    P--&gt;&gt;C: Respuesta en fragmentos
    C--&gt;&gt;T: Fases en vivo y texto progresivo
    C--&gt;&gt;T: Diagrama validado y vista previa del diff</pre>
<p>Funciona con los cinco proveedores: OpenAI, Claude, Gemini, DeepSeek y MiniMax. Si un proveedor no soporta streaming, el chat regresa automáticamente al flujo tradicional, sin que tengas que hacer nada.</p>
<h2 id="el-chat-sabe-que-tipo-de-respuesta-esperas">El chat sabe qué tipo de respuesta esperas</h2>
<p>No todas las peticiones son iguales, así que el chat detecta el modo de respuesta:</p>
<ul>
<li><strong>Modo código</strong>: cuando pides modificar el diagrama, solo ves las fases, sin el texto interno del modelo.</li>
<li><strong>Modo texto</strong>: cuando preguntas algo o pides un análisis, el texto aparece conforme se genera.</li>
</ul>
<p>Además, las etiquetas <code>&lt;think&gt;</code> de los modelos de razonamiento (como DeepSeek) se filtran en tiempo real. Si cierras el panel de chat o cambias de diagrama, el stream se cancela solo. Y si algo falla, tienes un botón de reintento con un máximo de 3 intentos consecutivos.</p>
<p>Dos detalles más: cuando la IA no da una explicación, ya no verás el genérico &quot;Diagrama modificado según tu solicitud&quot;, solo la vista previa del diff; y el chat ahora responde en el idioma que tienes activo en la aplicación.</p>
<h2 id="acciones-rapidas-un-clic-en-vez-de-un-prompt">Acciones rápidas: un clic en vez de un prompt</h2>
<p>La 0.5.4 agrega cuatro acciones predefinidas en el chat:</p>
<ul>
<li><strong>Explicar</strong>: entiende qué hace el diagrama.</li>
<li><strong>Mejorar UI</strong>: pule cómo se ve.</li>
<li><strong>Mejorar Proceso</strong>: revisa el flujo que describe.</li>
<li><strong>Reparar</strong>: corrige lo que está fallando.</li>
</ul>
<p>Para que cada petición caiga en el lugar correcto, si pides una explicación desde el modal de mejora, DiagramaHub te redirige al chat de IA, donde la respuesta se muestra como texto.</p>
<h2 id="un-panel-de-chat-a-tu-medida">Un panel de chat a tu medida</h2>
<p>El panel de chat ahora es <strong>redimensionable</strong>, y su ancho se guarda para cada diagrama. Si en un diagrama grande prefieres más espacio para el lienzo y en otro quieres leer explicaciones largas, cada uno recuerda tu preferencia.</p>
<h2 id="seguridad-y-mantenimiento">Seguridad y mantenimiento</h2>
<p>Junto al streaming agregamos sanitización del SVG que se renderiza en el servidor (Kroki) con DOMPurify, y corregimos un efecto secundario que ocultaba los textos de los nodos en Mermaid. El backend pasó a Python 3.12 con una imagen Docker base actualizada. Para quien administra una instancia, el panel de administración suma las columnas &quot;Uso de licencia&quot;, &quot;Modelos IA conectados&quot; y &quot;Último login&quot;.</p>
<h2 id="pruebalo">Pruébalo</h2>
<p>Abre un diagrama en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a>, despliega el chat y prueba <strong>Explicar</strong> o <strong>Reparar</strong>. Si haces self-host, actualiza desde el <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio</a>; los detalles están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Modo oscuro, diagramas DBML y MiniMax en DiagramaHub</title>
      <link>https://www.diagramahub.com/blog/modo-oscuro-dbml-y-minimax</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/modo-oscuro-dbml-y-minimax</guid>
      <pubDate>Sun, 10 May 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La versión 0.5 rediseña la navegación, agrega modo oscuro completo, soporte para DBML, el proveedor MiniMax y un chat de IA más confiable.</description>
      <category>lanzamiento</category>
      <category>editor</category>
      <category>ia</category>
      <content:encoded><![CDATA[<p>Si pasas horas diseñando arquitecturas, la interfaz importa tanto como el lenguaje del diagrama. La <strong>versión 0.5.0</strong> es un rediseño mayor de la experiencia: nueva navegación, modo oscuro en toda la aplicación, un lenguaje nuevo para modelar bases de datos y un quinto proveedor de IA.</p>
<h2 id="una-navegacion-nueva">Una navegación nueva</h2>
<p>La barra lateral ahora es <strong>colapsable</strong> y concentra la navegación, el cambio de tema y el selector de idioma. Con ella reorganizamos varias cosas:</p>
<ul>
<li><strong>Proyectos</strong> tiene su propia página, con vista de tabla.</li>
<li>La sección &quot;IA&quot; ahora se llama <strong>Ajustes</strong> y usa un ícono de engrane.</li>
<li>Cerrar sesión se movió a la página de <strong>Perfil</strong>.</li>
</ul>
<p>El <strong>dashboard</strong> también cambió: incluye una gráfica de dona, un widget de uso de IA y tus diagramas recientes, para que retomes el trabajo en un clic.</p>
<h2 id="modo-oscuro-de-verdad">Modo oscuro de verdad</h2>
<p>El <strong>modo oscuro</strong> cubre toda la aplicación: páginas, modales y editor. En el editor de código agregamos el tema <strong>Kiro Dark</strong> para Monaco, además de un breadcrumb del proyecto y un panel de código redimensionable.</p>
<h2 id="dbml-tu-esquema-de-base-de-datos-como-codigo">DBML: tu esquema de base de datos como código</h2>
<p>DBML (Database Markup Language) se suma a Mermaid, PlantUML y D2. Se renderiza con Kroki en tu propia infraestructura, igual que PlantUML y D2, así que el contenido de tu esquema no sale a servicios públicos. Así se ve un modelo sencillo:</p>
<pre><code class="language-dbml">Table users {
  id integer [pk]
  email varchar [unique]
}

Table diagrams {
  id integer [pk]
  user_id integer [ref: &gt; users.id]
  title varchar
}</code></pre>
<p>Tablas, columnas y relaciones en unas cuantas líneas, versionables junto a tu código.</p>
<h2 id="minimax-y-modelos-actualizados">MiniMax y modelos actualizados</h2>
<p>Agregamos <strong>MiniMax</strong> como proveedor de IA, con el mismo modelo BYOL (Bring Your Own LLM) de siempre: usas tu propia API key. Puedes elegir entre <strong>MiniMax-M2.7</strong> y <strong>MiniMax-M2.5</strong>.</p>
<p>También actualizamos el catálogo con <strong>DeepSeek v4</strong> y <strong>Gemini 3.1</strong>. Si un diagrama tenía guardado un modelo que el proveedor ya retiró, DiagramaHub cambia automáticamente a uno vigente en lugar de fallar.</p>
<h2 id="un-chat-de-ia-mas-confiable">Un chat de IA más confiable</h2>
<p>El chat recibió varias mejoras que se notan en conversaciones largas:</p>
<ul>
<li>Un <strong>resumen continuo y persistente</strong> de la sesión, para que el modelo no pierda el hilo.</li>
<li>Un formato que prioriza el código, con mecanismos de respaldo para extraer el diagrama de la respuesta.</li>
<li>Las etiquetas <code>&lt;think&gt;</code> de modelos de razonamiento como DeepSeek y MiniMax ya no aparecen en el chat.</li>
<li>El límite de tokens de respuesta pasó de 2048 a 4096.</li>
<li>Los prompts ahora incluyen el contexto de renderizado de Kroki.</li>
</ul>
<p>Y el botón <strong>&quot;Corregir con IA&quot;</strong> ahora vive en el panel de código y también funciona con errores de renderizado, no solo de sintaxis. Los errores de Kroki, por cierto, ahora se muestran en un formato legible.</p>
<h2 id="pulido-y-seguridad-en-los-parches">Pulido y seguridad en los parches</h2>
<p>Las versiones de parche que siguieron continúan el trabajo:</p>
<ul>
<li><strong>0.5.1</strong> agrega estados de carga con esqueletos, estados vacíos que te guían al siguiente paso y un layout del editor pensado para móvil: paneles de código y descripción en hojas deslizables, barra de herramientas inferior y zoom con pellizco sobre el diagrama.</li>
<li><strong>0.5.2</strong> es un release de seguridad: actualizamos dependencias del frontend (axios, jspdf, react-router-dom, mermaid y easymde) para resolver vulnerabilidades críticas y altas reportadas por Snyk, y nos integramos al Snyk Secure Developer Program for Open Source para monitorearlas de forma continua.</li>
</ul>
<h2 id="pruebalo">Pruébalo</h2>
<p>Activa el modo oscuro y crea tu primer diagrama DBML en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a>, o actualiza tu instancia desde el <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio</a>. La lista completa de cambios está en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kroki autohospedado y diagramas D2 en DiagramaHub</title>
      <link>https://www.diagramahub.com/blog/kroki-y-diagramas-d2</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/kroki-y-diagramas-d2</guid>
      <pubDate>Thu, 30 Apr 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La versión 0.4 renderiza PlantUML con Kroki en tu propia infraestructura, agrega D2 como nuevo lenguaje y renueva el editor, el dashboard y la vista móvil.</description>
      <category>lanzamiento</category>
      <category>diagramas</category>
      <category>editor</category>
      <content:encoded><![CDATA[<p>Hasta ahora, cada vez que dibujabas un diagrama en PlantUML, su código viajaba al servidor público de <code>plantuml.com</code> para convertirse en imagen. Funcionaba, pero tu arquitectura, tus flujos y tus nombres internos salían de tu instancia. Con la <strong>versión 0.4.0</strong> eso cambió: el renderizado ahora pasa por <strong>Kroki</strong>, autohospedado junto al resto de DiagramaHub.</p>
<h2 id="kroki-tus-diagramas-no-salen-de-casa">Kroki: tus diagramas no salen de casa</h2>
<p>Kroki es un motor de renderizado de diagramas que corre como un servicio más en Docker (<code>yuzutech/kroki</code>). Lo agregamos a las tres configuraciones de Docker Compose del proyecto, así que si haces self-host no tienes que instalar nada aparte. La URL se configura con la variable <code>KROKI_URL</code> (por defecto <code>http://kroki:8000</code>).</p>
<p>La regla de enrutamiento es sencilla:</p>
<pre class="mermaid">flowchart LR
    A[Editor] --&gt; B{Tipo de diagrama}
    B --&gt;|Mermaid| C[Render en tu navegador]
    B --&gt;|PlantUML o D2| D[Backend de DiagramaHub]
    D --&gt; E[Kroki autohospedado]
    E --&gt; F[SVG]</pre>
<p>Mermaid sigue dibujándose en tu navegador. PlantUML y D2 van a tu backend, que habla con tu Kroki y regresa un SVG. Ningún servicio público ve el contenido.</p>
<p>También agregamos un endpoint <code>POST /api/v1/diagrams/render</code> que recibe el código y el tipo de diagrama y devuelve el SVG. No requiere autenticación para que los <strong>diagramas compartidos</strong> se vean correctamente.</p>
<h2 id="d2-llega-como-tercer-lenguaje">D2 llega como tercer lenguaje</h2>
<p>Además de Mermaid y PlantUML, ahora puedes crear diagramas en <strong>D2</strong>, un lenguaje declarativo moderno que se lee casi como una lista de relaciones:</p>
<pre><code class="language-d2">usuario: Usuario
api: API
db: Base de datos {
  shape: cylinder
}

usuario -&gt; api: petición HTTP
api -&gt; db: consulta</code></pre>
<p>El soporte es completo desde el primer día:</p>
<ul>
<li>Renderizado vía Kroki.</li>
<li>Resaltado de sintaxis en el editor.</li>
<li>Selector con <strong>19 temas</strong> (claros, oscuros y especiales).</li>
<li>Validación de sintaxis.</li>
<li>Corrección con IA y soporte en el chat de IA, que ya conoce el contexto de D2.</li>
</ul>
<p>En la <strong>0.4.1</strong> corregimos un detalle importante: el botón <strong>&quot;Corregir con IA&quot;</strong> fallaba con D2 y PlantUML porque el código corregido traía llaves anidadas y confundía al parser de respuestas. Lo reemplazamos por uno que balancea llaves en los cuatro clientes (OpenAI, Claude, Gemini y DeepSeek), y con OpenAI ahora forzamos respuestas JSON válidas.</p>
<h2 id="un-editor-que-se-siente-como-tu-ide">Un editor que se siente como tu IDE</h2>
<p>La 0.4.0 también trae una buena ronda de mejoras de experiencia:</p>
<ul>
<li><strong>Editor de código estilo IDE</strong>: tema oscuro, barra de título tipo macOS, pestaña de archivo con indicador de error y barra de estado con errores, líneas y tipo de diagrama.</li>
<li><strong>Selector de proyectos</strong> con búsqueda, para cambiar de proyecto sin salir del editor.</li>
<li><strong>Panel de diagramas rediseñado</strong>: barra lateral flotante con buscador, acciones rápidas, indicador del diagrama activo y jerarquía de carpetas.</li>
<li><strong>Nuevo modal para crear diagramas</strong>, con selector de tipo (Mermaid, PlantUML, D2) y su descripción.</li>
<li><strong>Panel de descripción redimensionable</strong>, que recuerda el ancho para cada diagrama.</li>
<li><strong>Dashboard</strong> con saludo personalizado y tarjetas de proyectos, diagramas, última actividad y plan actual.</li>
</ul>
<p>Y además, <strong>todas las vistas se adaptan a móvil y tablet</strong>, del editor al perfil y la vista compartida.</p>
<h2 id="pulido-en-la-0-4-1">Pulido en la 0.4.1</h2>
<p>Además del arreglo de &quot;Corregir con IA&quot;, la 0.4.1 renueva la pantalla de login con un fondo animado y una tarjeta con efecto de vidrio, muestra el correo al que enviamos tu código en la verificación MFA y traduce por completo el modal para compartir diagramas, con fechas en el formato de tu idioma.</p>
<h2 id="pruebalo">Pruébalo</h2>
<p>Crea un diagrama D2 en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> o actualiza tu instancia desde el <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio</a>: Kroki ya viene en el Docker Compose. Todos los cambios están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Login con Google y un chat de IA que entiende lo que quieres</title>
      <link>https://www.diagramahub.com/blog/login-con-google-y-chat-unificado</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/login-con-google-y-chat-unificado</guid>
      <pubDate>Thu, 23 Apr 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>La versión 0.3.0 de DiagramaHub trae inicio de sesión con Google, un chat de IA que detecta tu intención y descripciones en Markdown generadas con IA.</description>
      <category>autenticacion</category>
      <category>ia</category>
      <category>novedades</category>
      <content:encoded><![CDATA[<p>Dos fricciones nos aparecían una y otra vez: crear otra cuenta con otra contraseña más, y tener que decirle al chat de IA en qué &quot;modo&quot; estabas antes de pedirle algo. La <strong>versión 0.3.0</strong> de DiagramaHub elimina las dos.</p>
<h2 id="inicia-sesion-con-google">Inicia sesión con Google</h2>
<p>Ahora puedes entrar con tu cuenta de <strong>Google</strong> (OAuth 2.0 / OpenID Connect). Así funciona:</p>
<ul>
<li>Si el email de Google coincide con una cuenta que ya tienes, el proveedor <strong>se vincula automáticamente</strong>. No pierdes tus proyectos ni tienes que migrar nada.</li>
<li>Si eres nuevo, se crea tu cuenta con el plan <strong>FREE</strong> en un solo paso.</li>
<li>En tu perfil ves los proveedores vinculados y la fecha en que los vinculaste.</li>
</ul>
<p>Los logins con Google no pasan por el MFA de DiagramaHub: la sesión dura 5 días y el banner que recomienda activar MFA no aparece en esas sesiones.</p>
<p>Por dentro lo construimos con cuidado:</p>
<ul>
<li><strong>Protección CSRF</strong> con tokens de estado guardados en el servidor, que expiran a los 10 minutos y se limpian solos.</li>
<li><strong>Validación del ID token</strong>: firma, issuer, audience y expiración.</li>
<li><strong>Rate limiting</strong> en el endpoint de callback y <strong>audit log</strong> para cada evento OAuth (logins exitosos o fallidos y vinculación de cuentas), en la misma bitácora de seguridad que ya registraba el resto de los eventos.</li>
</ul>
<p>La arquitectura es agnóstica del proveedor: Google es el primero y cada proveedor se integra con una clase adaptadora. Si administras tu propia instancia, OAuth aparece como una <strong>integración</strong> en el panel de administración que puedes activar o desactivar.</p>
<p>De paso, las páginas de login y registro ahora tienen un <strong>selector de idioma</strong> en la esquina superior derecha, y el login muestra la <strong>versión de la aplicación</strong>.</p>
<h2 id="un-solo-chat-que-detecta-tu-intencion">Un solo chat que detecta tu intención</h2>
<p>Antes, el chat de IA tenía modos separados para conversar y para mejorar un diagrama, y te tocaba elegir. Ahora hay <strong>un solo chat</strong> que detecta automáticamente qué quieres hacer:</p>
<pre class="mermaid">flowchart LR
    A[Escribes tu mensaje] --&gt; B{Intención detectada}
    B --&gt;|Pregunta o duda| C[Conversa contigo]
    B --&gt;|Algo nuevo| D[Genera un diagrama]
    B --&gt;|Cambiar lo actual| E[Mejora el diagrama existente]</pre>
<p>Escribes como le hablarías a un colega: &quot;¿qué falta en este flujo?&quot;, &quot;hazme un diagrama de secuencia del checkout&quot; o &quot;agrega el servicio de pagos&quot;. El chat decide si responder, generar o mejorar, sin que selecciones nada.</p>
<p>Además, el proveedor que eliges en una sesión de chat ahora se guarda correctamente en las preferencias del diagrama, y DeepSeek funciona también en las operaciones de refinamiento. Por dentro simplificamos el modelo de datos del chat y eliminamos el código de los modos anteriores.</p>
<h2 id="descripciones-generadas-con-ia">Descripciones generadas con IA</h2>
<p>Un diagrama dice mucho, pero no siempre explica el porqué. Ahora puedes <strong>generar una descripción en Markdown estructurado</strong> para cualquier diagrama existente y <strong>refinarla</strong> después con la IA hasta que diga lo que necesitas. Mejoramos los prompts para que el resultado sea consistente, y la generación respeta el <strong>proveedor preferido</strong> que configuraste para ese diagrama, con tus propias API keys como siempre.</p>
<h2 id="un-ajuste-rapido-0-3-1">Un ajuste rápido: 0.3.1</h2>
<p>El mismo día publicamos la <strong>0.3.1</strong>, que corrige un error de compilación de TypeScript que impedía el build de producción. No cambia nada para ti como usuario, pero si construyes la imagen tú mismo, usa esta versión.</p>
<h2 id="pruebalo">Pruébalo</h2>
<p>Entra a <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> con tu cuenta de Google y abre el chat de cualquier diagrama. Si lo hospedas tú, actualiza desde el <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio</a> y activa la integración de OAuth en el panel de administración. Todos los cambios están en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>MFA y seguridad desde el inicio</title>
      <link>https://www.diagramahub.com/blog/mfa-y-seguridad-desde-el-inicio</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/mfa-y-seguridad-desde-el-inicio</guid>
      <pubDate>Sat, 18 Apr 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>Las versiones 0.2.0 y 0.2.1 de DiagramaHub traen MFA por email y app TOTP, códigos de recuperación, contraseñas más fuertes, bitácora de seguridad y más hardening.</description>
      <category>seguridad</category>
      <category>autenticacion</category>
      <category>novedades</category>
      <content:encoded><![CDATA[<p>Tus diagramas describen cómo está construido tu sistema: qué servicios hay, cómo se autentican, dónde vive cada dato. Es información que no quieres que caiga en las manos equivocadas. Por eso, apenas unos días después de lanzar DiagramaHub, dedicamos dos versiones completas, la <strong>0.2.0</strong> y la <strong>0.2.1</strong>, a reforzar la seguridad de las cuentas y de la plataforma.</p>
<h2 id="autenticacion-multi-factor">Autenticación multi-factor</h2>
<p>La novedad principal es <strong>MFA</strong>, con dos métodos que puedes tener activos al mismo tiempo:</p>
<ul>
<li><strong>Email</strong>: te enviamos un código al correo, en español o inglés según el idioma de tu cuenta.</li>
<li><strong>App TOTP</strong>: Google Authenticator, Authy o cualquier app compatible.</li>
</ul>
<p>Si activas los dos, eliges cuál es el <strong>predeterminado</strong>, y al iniciar sesión puedes usar <strong>&quot;Probar otro método&quot;</strong> para cambiar al otro. Además recibes <strong>8 códigos de recuperación</strong> de un solo uso (formato <code>XXXXX-XXXXX</code>) para cuando no tengas a la mano tu método principal.</p>
<pre class="mermaid">sequenceDiagram
    participant U as Tú
    participant D as DiagramaHub
    U-&gt;&gt;D: Email y contraseña
    D-&gt;&gt;U: Pide segundo factor
    U-&gt;&gt;D: Código TOTP, email o de recuperación
    D-&gt;&gt;U: Sesión de 5 días</pre>
<p>Todo se gestiona desde la sección <strong>Seguridad</strong> de tu perfil: activar o desactivar métodos, cambiar el predeterminado y regenerar códigos. Si aún no tienes MFA, verás un banner discreto después de iniciar sesión recomendándote activarlo.</p>
<p>También cambiamos la duración de las sesiones: <strong>2 días sin MFA y 5 días con MFA</strong>. Proteger tu cuenta te da, además, menos inicios de sesión.</p>
<h2 id="contrasenas-mas-fuertes">Contraseñas más fuertes</h2>
<p>La política de contraseñas pasó de 8 a <strong>12 caracteres mínimos</strong>, con al menos una mayúscula, una minúscula, un dígito y un carácter especial, y no puede ser igual a tu email. En los formularios de registro, cambio y restablecimiento de contraseña verás un <strong>indicador de fortaleza</strong> en tiempo real.</p>
<p>En la 0.2.1 añadimos algo importante: al <strong>cambiar tu contraseña se invalidan todas las sesiones</strong> abiertas antes del cambio. Si sospechas que alguien entró a tu cuenta, cambiarla basta para sacarlo.</p>
<h2 id="bitacora-de-seguridad">Bitácora de seguridad</h2>
<p>La 0.2.1 incorpora un <strong>audit log</strong> de eventos de seguridad: logins exitosos y fallidos, bloqueos de cuenta, verificaciones MFA, cambios y restablecimientos de contraseña, uso de códigos de recuperación y resets de MFA hechos por un administrador. Los registros se conservan <strong>90 días</strong> y se eliminan automáticamente después.</p>
<h2 id="para-quien-administra-la-instancia">Para quien administra la instancia</h2>
<p>Si hospedas DiagramaHub tú mismo, hay un nuevo <strong>panel de administración de usuarios</strong>: lista paginada con búsqueda, estado de MFA, plan de suscripción, fecha de registro y, desde la 0.2.1, número de diagramas por usuario. Puedes exportar esa lista a <strong>Excel (.xlsx)</strong> y <strong>desactivar el MFA</strong> de un usuario que se quedó fuera de su cuenta.</p>
<h2 id="hardening-de-la-plataforma">Hardening de la plataforma</h2>
<p>Del lado del servidor también cerramos puertas:</p>
<ul>
<li><strong>Rate limiting en el login</strong>: máximo 10 intentos por IP por minuto.</li>
<li><strong>Bloqueo temporal</strong> de 15 minutos tras 5 intentos fallidos consecutivos.</li>
<li><strong>Cabeceras de seguridad</strong> HTTP (incluida HSTS en producción).</li>
<li>En producción, la documentación Swagger/OpenAPI queda deshabilitada y los errores 500 ya no exponen stack traces.</li>
</ul>
<p>La 0.2.1 también corrige detalles del flujo MFA: el banner ya no aparece después de activarlo, &quot;Probar otro método&quot; muestra una pantalla de selección en lugar de enviar un email automáticamente, y los códigos de recuperación sin usar ya no se regeneran al activar un segundo método.</p>
<h2 id="activa-tu-mfa">Activa tu MFA</h2>
<p>Entra a <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a>, ve a tu perfil → <strong>Seguridad</strong> y activa al menos un método. Si usas la versión self-host, actualiza desde el <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio</a>; el detalle de cada cambio está en el <a href="https://github.com/diagramahub/diagramahub/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">changelog</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Presentamos DiagramaHub: tus diagramas como código, con IA</title>
      <link>https://www.diagramahub.com/blog/presentamos-diagramahub</link>
      <guid isPermaLink="true">https://www.diagramahub.com/blog/presentamos-diagramahub</guid>
      <pubDate>Thu, 16 Apr 2026 12:00:00 GMT</pubDate>
      <dc:creator>Equipo DiagramaHub</dc:creator>
      <description>Lanzamos la versión 0.1.0 de DiagramaHub: editor de Mermaid y PlantUML, proyectos y carpetas, IA con tus propias API keys, enlaces para compartir y self-host.</description>
      <category>lanzamiento</category>
      <category>diagramas</category>
      <category>ia</category>
      <content:encoded><![CDATA[<p>Los diagramas de arquitectura suelen vivir en imágenes sueltas que nadie actualiza: un PNG en la wiki, una captura en un ticket, un archivo que solo abre quien lo hizo. Cuando el sistema cambia, el diagrama se queda atrás. Hoy publicamos la <strong>versión 0.1.0 de DiagramaHub</strong>, nuestro primer release funcional, para atacar justo ese problema.</p>
<h2 id="por-que-diagramas-como-texto">Por qué diagramas como texto</h2>
<p>Escribir un diagrama en <strong>Mermaid</strong> o <strong>PlantUML</strong> tiene ventajas que una imagen no te da: lo versionas como cualquier otro archivo, lo revisas en un diff, lo editas en segundos y una IA lo puede leer y escribir. Lo que faltaba era un lugar cómodo para tenerlos todos juntos, organizados y listos para compartir. Eso es DiagramaHub.</p>
<pre class="mermaid">flowchart LR
    A[Escribes el código] --&gt; B[Vista previa en tiempo real]
    B --&gt; C[Organizas en proyectos y carpetas]
    C --&gt; D[Compartes o exportas]</pre>
<h2 id="el-editor">El editor</h2>
<ul>
<li>Editor <strong>Monaco</strong> con resaltado de sintaxis, autocompletado y validación integrada.</li>
<li>Renderizado en tiempo real de <strong>Mermaid</strong> y <strong>PlantUML</strong>.</li>
<li>Configuración visual por diagrama: temas, layout engines, estilos y curvas en Mermaid; temas y <code>skinparam</code> en PlantUML.</li>
<li>Fondo configurable (color y patrón: plano, puntos o cuadrícula) y el zoom y la posición se guardan por diagrama.</li>
<li><strong>Modo presentación</strong> a pantalla completa con anotaciones.</li>
<li>Exportación a <strong>PNG, PDF y Markdown</strong>.</li>
</ul>
<h2 id="organizacion">Organización</h2>
<p>Tus diagramas viven en <strong>proyectos</strong>, y dentro de cada proyecto puedes crear <strong>carpetas</strong>. La navegación es jerárquica: proyectos → carpetas → diagramas. Simple, pero suficiente para separar, por ejemplo, el backend del frontend o un cliente de otro.</p>
<h2 id="ia-con-tus-propias-llaves-byol">IA con tus propias llaves (BYOL)</h2>
<p>No queremos ser intermediarios de tu modelo de lenguaje. Con el modelo <strong>BYOL (Bring Your Own LLM)</strong> configuras tus propias API keys de <strong>Google Gemini</strong>, <strong>OpenAI GPT</strong>, <strong>Anthropic Claude</strong> o <strong>DeepSeek</strong>, y eliges proveedor y modelo por diagrama. Con eso puedes:</p>
<ul>
<li><strong>Generar</strong> un diagrama a partir de una descripción en lenguaje natural.</li>
<li><strong>Mejorar</strong> uno existente con sugerencias y vista previa del diff.</li>
<li><strong>Corregir</strong> errores de sintaxis con una explicación y el diff del cambio.</li>
<li>Generar <strong>descripciones</strong> automáticas de tus diagramas.</li>
<li>Refinar paso a paso en <strong>sesiones de chat</strong>, con un historial de prompts buscable y reutilizable.</li>
</ul>
<p>Tus llaves se guardan <strong>cifradas</strong> en la base de datos y las respuestas de la API las devuelven enmascaradas. Antes de guardarlas puedes probarlas para validar que funcionan.</p>
<h2 id="compartir">Compartir</h2>
<p>Cada diagrama puede tener <strong>enlaces compartidos</strong> con token único, de dos tipos: <strong>públicos</strong> o <strong>protegidos</strong> con un código de acceso de 4 a 20 caracteres. Eliges si expiran a los 5, 10 o 30 días o si son ilimitados, y si quien los visita puede copiar el código fuente. Los accesos tienen rate limiting y se registran con IPs hasheadas.</p>
<h2 id="cuentas-planes-e-idiomas">Cuentas, planes e idiomas</h2>
<ul>
<li>Registro, login, recuperación de contraseña con tokens de un solo uso y eliminación de cuenta con frase de confirmación.</li>
<li>Un sistema de <strong>planes</strong> con límites de proyectos y diagramas, con un <strong>plan gratuito</strong> incluido y pagos mediante Stripe.</li>
<li>Interfaz en <strong>español</strong> (por defecto) e <strong>inglés</strong>, y un perfil donde ajustas zona horaria, idioma y avatar.</li>
</ul>
<h2 id="hospedalo-tu-mismo">Hospédalo tú mismo</h2>
<p>DiagramaHub es open source bajo licencia <strong>Apache 2.0</strong>. Puedes desplegarlo con <strong>Docker Compose</strong>, ya sea con MongoDB incluido o apuntando a uno externo, y hay un instalador de una línea (<code>install.sh</code>). Incluye además un asistente de instalación inicial y un onboarding para nuevos usuarios. La documentación está en español e inglés.</p>
<h2 id="estado-beta">Estado: beta</h2>
<p>Esta es una versión <strong>0.x</strong>: el producto está en beta y en desarrollo activo, así que algunas cosas pueden cambiar entre versiones. Justo por eso nos interesa tanto lo que nos cuentes.</p>
<p>Pruébalo en <a href="https://app.diagramahub.com" target="_blank" rel="noopener noreferrer">DiagramaHub Cloud</a> o despliégalo desde el <a href="https://github.com/diagramahub/diagramahub" target="_blank" rel="noopener noreferrer">repositorio en GitHub</a>. Si algo no funciona como esperas, abre un issue: es la mejor forma de ayudarnos a darle forma.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
