Skip to content

0.8.1 (2026-10-03)

A stabilisation release for 0.8.0: security, a much more reliable AI chat, an up-to-date model catalog, a more polished canvas and an import that no longer fails on odd files. No new features and no mandatory migrations.

⬆️ Upgrade notes

  • No mandatory migrations. Rebuild the images as usual (docker compose up -d --build).
  • Recommended: run docker exec diagramahub-backend poetry run python -m scripts.fix_misfiled_diagrams once (report only) and, if it finds anything, again with --apply. It moves diagrams filed under another project's folder, or under a deleted folder, back to their own project's root. It never deletes anything.
  • Backend test coverage goes up to 62.57%.

🔒 Security

  • A user could file diagrams under another user's folder. Creating or moving a diagram accepted any folder_id; the diagram showed up in that folder's explorer and export (including the AI-context Markdown). The folder must now belong to the same project, and the tree, exports and folder deletion ignore diagrams of other projects.
  • Duplicating a diagram now respects the plan limit.
  • Dependencies: axios 1.20 fixes 12 security advisories (7 high). The production audit is back to zero.
  • Import: the file-count and uncompressed-size limits apply to the whole request (they applied per ZIP, which allowed exhausting memory with many small ZIPs). The preview has its own rate limit.
  • The shared (read-only) view no longer opens the editing menu on right-click.
  • Rate limiters forget idle IPs (their memory no longer grows without bound).

🤖 AI

  • Chat: 88% → 99% valid diagrams on the first try (160 cases, 4 models). Causes fixed:
  • The streaming chat — what the app uses — sent a minimal prompt, without the expected format or syntax rules.
  • Replies were cut at the token limit (reasoning models spend part of it thinking). A code request now gets 8,192 tokens and a cut reply is never applied: a notice is shown instead.
  • "Create a flow… (does it need surgery?)" was treated as a question because of the question mark.
  • Syntax rules checked against the real renderers (ASCII identifiers in DBML, valid D2 shapes, PlantUML activity syntax…).
  • Automatic fix (Settings → AI, on by default): if generated code (Mermaid or D2) doesn't render, the model is asked once to fix it. Never for PlantUML or DBML.
  • Updated models, checked against each provider's docs and with live calls: 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, MiniMax M3. Saved models that leave the list keep working and are marked "retired".
  • Claude 5.x rejects the temperature parameter: it's no longer sent to those models.
  • "No credits" is no longer reported as "rate limit", and "Test connection" makes a real call with the chosen model: it tells apart invalid key, no credits, model unavailable and rate limit.
  • The /ai/generate-diagram endpoint (API) goes from 72% to 98% valid diagrams.

✏️ Canvas

  • The view (pan) is saved when scrolling with the wheel or trackpad and restored when the diagram opens.
  • Rotated elements are selected where they're drawn.
  • Fixed: clicking an arrow's endpoint unbound it; moving a stroke lost pen pressure; pasting copied the original's group and lock; deleting a shape removed locked arrows; the undo history kept empty steps; resizing got "stuck" after leaving the canvas.
  • The handwriting font applies as soon as it loads; the text editor uses the same font and line height as the canvas; a pen tap leaves a dot.
  • Space + drag works even when a button has focus; "Clear all" asks for confirmation; shortcuts show as ⌘ on Mac and Ctrl on Windows/Linux.
  • Sketch → Mermaid: nodes named end, style… no longer break the diagram; lines without heads, two-headed arrows and self-loops convert correctly.
  • Performance: unfilled drawings pan as fast as the clean style.

📦 Import and export

  • Damaged or odd files (malformed Excalidraw, corrupt ZIP entries, deeply nested JSON, NaN) are skipped with a notice instead of failing the import. UTF-16 files are accepted, with a notice when characters couldn't be read.
  • Repeated 100-character titles, Docs vs docs folders and cancelled imports: fixed.
  • Diagrams whose folder no longer exists show up again in the explorer and in exports.
  • The import and export dialogs close on Escape and keep focus inside; clear error messages (including "try again in N s").
  • Dropping a file outside the import zone no longer makes the browser open it.

🌐 Interface and language

  • The backend receives the real interface language (it was always Spanish).
  • Subscription screens complete in English (82 strings were missing); correct plurals ("1 folder", "Up to 5 projects").

🧹 Internal

  • Removed the "Create/Improve with AI" dialogs and the prompt-history panel, which no screen used.
  • Replaced the deprecated datetime.utcnow() and the Pydantic v1 configuration.
  • AI benchmark in scripts/ai-benchmark/ to measure prompts and models.

🧪 Tests

  • Backend: 429 tests, 62.57% coverage (45% gate). Frontend: 25 Vitest tests, including es/en translation parity.
  • Every fix was checked with tests that fail on the previous code, and the UI flows with Playwright.