- Add Cloudflare Workers AI as third provider alongside Claude and Ollama
- New cloudflare.js API handler with format conversion
- Tool converter functions for Cloudflare's OpenAI-compatible format
- Handle [TOOL_CALLS] and [Called tool:] text formats from Mistral
- Robust parser that handles truncated JSON responses
- Add usage tracking with cost display
- New usageTracker.js service for tracking token usage per session
- UsageDetailModal component showing per-request breakdown
- Cost display in ChatPanel header
- Add new diagram manipulation features
- Entity scale and rotation support via modify_entity tool
- Wikipedia search tool for researching topics before diagramming
- Clear conversation tool to reset chat history
- JSON import from hamburger menu (moved from ChatPanel)
- Fix connection label rotation in billboard mode
- Labels no longer have conflicting local rotation when billboard enabled
- Update rotation when rendering mode changes
- Improve tool calling reliability
- Add MAX_TOOL_ITERATIONS safety limit
- Break loop after model switch to prevent context issues
- Increase max_tokens to 4096 to prevent truncation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ollama Integration:
- Add providerConfig.js for managing AI provider settings
- Add toolConverter.js to convert between Claude and Ollama formats
- Add ollama.js API handler with function calling support
- Update diagramAI.ts with Ollama models (llama3.1, mistral, qwen2.5)
- Route requests to appropriate provider based on selected model
- Use 127.0.0.1 to avoid IPv6 resolution issues
New modify_connection Tool:
- Add modify_connection tool to change connection labels and colors
- Support finding connections by label or by from/to entities
- Add chatModifyConnection event handler in diagramManager
- Clarify in tool descriptions that empty string removes labels
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>