Saltar a contenido

0.5.3 (2026-05-12)

Streaming de respuestas AI en tiempo real, actualización de Python a 3.12, y mejoras de infraestructura.

✨ Features

  • Streaming de respuestas AI: Las respuestas del chat AI ahora se entregan progresivamente mediante Server-Sent Events (SSE), mostrando indicadores de fase ("Pensando…", "Analizando tu diagrama…", "Generando código…", "Validando sintaxis…") en lugar de un spinner genérico.
  • Nuevo endpoint SSE: POST /api/v1/chat-sessions/{session_id}/messages/stream que coexiste con el endpoint REST existente.
  • Soporte de streaming para los 5 proveedores AI: OpenAI, Claude, Gemini, DeepSeek y MiniMax.
  • Detección automática de modo de respuesta ("text" vs "code"): cuando el usuario pide modificar un diagrama, solo se muestran las fases sin texto interno; cuando pregunta o pide análisis, el texto se muestra progresivamente.
  • Filtrado en tiempo real de <think> tags de modelos de razonamiento (DeepSeek, etc.) durante el streaming.
  • Cancelación automática del stream al cerrar el panel de chat o cambiar de diagrama.
  • Botón de reintento con máximo 3 intentos consecutivos en caso de error de streaming.
  • Fallback automático al flujo no-streaming si el proveedor no soporta streaming.

⬆️ Upgrades

  • Python actualizado de 3.11 a 3.12 (Dockerfile, pyproject.toml, black, ruff, mypy).
  • FastAPI pin actualizado a >=0.115.0,<0.129.0 (preparación para upgrade gradual).
  • python-multipart actualizado de ^0.0.12 a ^0.0.18 (requerido por FastAPI recientes).
  • Imagen Docker base actualizada a python:3.12-slim-bookworm.
  • Dockerfile mejorado: dist-upgrade para parches de seguridad, limpieza de gcc post-build.
  • Frontend: agregado dompurify ^3.4.2 para sanitización de SVG.
  • Frontend: overrides de seguridad para lodash, uuid, mdast-util-to-hast.

🐛 Fixes

  • Fix: test test_change_password_without_auth actualizado para esperar HTTP 401 (consistente con HTTPBearer behavior).
  • Fix: renderizado de Mermaid — los textos de los nodos ahora se muestran correctamente (DOMPurify ya no elimina foreignObject de SVGs renderizados localmente).
  • Fix: sanitización SVG aplicada solo a diagramas server-rendered (Kroki), no a Mermaid local.

♻️ Refactors

  • Ícono de estructura (folder) movido a la izquierda del nombre del diagrama en el toolbar del editor para mejor UX.
  • Eliminado texto genérico "Diagrama modificado según tu solicitud" — cuando no hay explicación, el mensaje queda vacío y solo se muestra el diff preview.
  • Parámetro language del chat ahora usa el idioma activo del usuario (i18n) en vez de 'es' hardcoded.

🌐 Translations

  • Nuevas claves i18n para streaming en ai.streaming.* (12 claves en español e inglés).

🔧 Internal

  • 45 nuevos tests: 19 unit tests (SSE events), 11 property-based (Hypothesis), 15 integration tests.
  • Nuevo módulo backend/app/api/v1/chat_sessions/sse_events.py para formateo de eventos SSE.
  • Nuevo módulo frontend/src/services/streamConsumer.ts para consumo de SSE via Fetch API.
  • Nuevo módulo frontend/src/utils/diagramCodeAccumulator.ts para extracción de código de diagrama desde streams.
  • Nuevo módulo frontend/src/utils/sanitize.ts para sanitización XSS de SVG y HTML.
  • Nuevos tipos TypeScript en frontend/src/types/streaming.ts.