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_diagramsonce (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
temperatureparameter: 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-diagramendpoint (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,
Docsvsdocsfolders 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.