The SmartTools project was renamed to CmdForge due to name conflict
with another project. This updates all references throughout the
codebase:
- Renamed smarttools/ directory to cmdforge/
- Updated pyproject.toml dependency URL
- Updated Dockerfile build stages and paths
- Updated docker-compose.yml service configs
- Updated install.sh paths and comments
- Updated documentation (README.md, CLAUDE.md)
- Updated gui.py ecosystem reference
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add explicit syntax rules to prevent invalid nested content:
- NEVER put raw text or bullets inside component/rectangle braces
- Use [SubComponent] notation for nested elements
- Use 'note right of X' blocks for text descriptions
- Use 'package' for grouping instead of 'component'
- Add prompt_file for debugging AI prompts
- Switch provider to gemini-flash
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Now validates using two methods for better error detection:
1. plantuml -syntax: Fast check with line numbers
2. plantuml -tsvg: Render check that catches errors via stderr
and embedded error indicators in SVG output
Also extracts error line numbers from rendered SVG when available.
Note: PlantUML only catches syntax errors, not semantic issues
(e.g., nesting rectangles in components produces valid syntax
but incorrect rendering).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When AI generates PlantUML code, run `plantuml -syntax` to validate.
If syntax errors are found, the error message is fed back to the AI
which retries with context about what went wrong.
This catches actual syntax errors like:
- Missing @startuml/@enduml tags
- Malformed arrows
- Invalid element definitions
Note: PlantUML's syntax checker only catches true syntax errors,
not semantic issues (like nesting rectangles in components).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add explicit output template {result} to prevent input being appended
- Switch provider from claude to opencode-deepseek for better PlantUML generation
- Fix plantuml cleanup to extract only first diagram when AI outputs duplicates
- Add mermaid cleanup to handle duplicate diagrams
- Set result variable instead of using print() for proper output capture
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add smarttools dependency from git URL
- Make PyQt6 and QScintilla default dependencies (not optional)
since artifact-editor is primarily a GUI application
This ensures `pip install artifact-editor` works out of the box
without needing to specify [gui] extra.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added Docker instructions for testing without local install
- Fixed clone URL to point to Gitea
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Self-contained Docker setup that clones SmartTools from Gitea during build.
Includes cli, test, gui, and shell services.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Full PyQt6 GUI for 6 artifact formats
- artifact-ai SmartTool for AI generation
- artifact-export SmartTool for format conversion
- Interactive SVG editing with drag/resize
- Voice dictation with countdown timer
- Docker support for clean-system testing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add interactive SVG editing to features list
- Document click-to-select, drag-to-move, resize handles
- Add Delete key and visual editing shortcuts
- Update SVG section with full feature list
- Note that undo/redo works for visual changes too
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Delete key shortcut to remove selected elements from preview
- Make preview changes (move, resize, delete) undoable with Ctrl+Z
- Use QTextCursor with beginEditBlock/endEditBlock for undoable updates
- Add Delete Selected action to Edit menu
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use QSvgRenderer.boundsOnElement() for pixel-perfect element positioning
- Add SVGSceneManager with QGraphicsItems for selection, drag, and resize
- Auto-add IDs to elements without them to enable bounds lookup
- Fix line rendering by setting local coords before setPos()
- Scale text to fit exact renderer bounds for accurate display
- Support rect, circle, ellipse, line, text, polygon, polyline, path elements
- Add resize handles on corners when element is selected
- Sync selection between canvas and elements list
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Major features:
- Split-view interface with code editor and live preview
- Support for PlantUML, Mermaid, and OpenSCAD formats
- Elements panel for viewing and managing diagram elements
- Add/Edit/Delete dialogs for all element types
PlantUML support:
- Parse and edit classes, interfaces, actors, components
- Add relationships with various types
- Click-to-select elements in preview
Mermaid support:
- Parse flowchart nodes with shape detection
- Edit nodes with label and shape options
- Add connections between elements
- Sequence diagram participant support
OpenSCAD support:
- Add 3D primitives (cube, sphere, cylinder) and 2D shapes
- Boolean operations (union, difference, intersection)
- Transform wrappers (translate, rotate, scale)
- Insert at cursor, end of file, or inside modules
- Detect and edit existing transforms
- 3D preview with mouse rotation controls
Technical improvements:
- In-place element replacement using source position tracking
- Format-specific parsers with position tracking
- Template system for quick diagram creation
- Syntax highlighting for all formats
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>