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/streamque 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-multipartactualizado de^0.0.12a^0.0.18(requerido por FastAPI recientes).- Imagen Docker base actualizada a
python:3.12-slim-bookworm. - Dockerfile mejorado:
dist-upgradepara 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_authactualizado 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
foreignObjectde 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
languagedel 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.pypara formateo de eventos SSE. - Nuevo módulo
frontend/src/services/streamConsumer.tspara consumo de SSE via Fetch API. - Nuevo módulo
frontend/src/utils/diagramCodeAccumulator.tspara extracción de código de diagrama desde streams. - Nuevo módulo
frontend/src/utils/sanitize.tspara sanitización XSS de SVG y HTML. - Nuevos tipos TypeScript en
frontend/src/types/streaming.ts.