Commit Graph

13 Commits

Author SHA1 Message Date
rob 51633f1e0b feat: Update artifact-ai prompt with PlantUML syntax rules
- 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>
2025-12-31 00:32:02 -04:00
rob e83177d248 feat: Enhanced PlantUML validation with dual-method checking
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>
2025-12-30 23:20:36 -04:00
rob 1923053f6a feat: Add PlantUML syntax validation with auto-retry
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>
2025-12-30 23:14:28 -04:00
rob 9e0f32513f fix: artifact-ai output duplication and provider update
- 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>
2025-12-30 22:11:42 -04:00
rob 6c54b35291 fix: Add smarttools and GUI dependencies as defaults
- 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>
2025-12-30 20:08:25 -04:00
rob 16d284c4df docs: Add Docker section to README
- 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>
2025-12-24 01:21:57 -04:00
rob 6f4d136afb Add standalone docker-compose.yml
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>
2025-12-24 01:01:36 -04:00
rob d20d7e5415 Complete implementation with Docker and SmartTools
- 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>
2025-12-23 23:40:40 -04:00
rob 6aa226b136 docs: Update README with interactive SVG editing features
- 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>
2025-12-23 14:56:06 -04:00
rob d7c64c1621 feat: Add Delete key and undo/redo for preview changes
- 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>
2025-12-23 14:55:03 -04:00
rob a8cc90c128 feat: Add scene-based SVG editing with exact element positioning
- 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>
2025-12-23 05:00:32 -04:00
rob 1ac0b181e1 feat: Add PyQt6 GUI with full element editing support
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>
2025-12-22 03:06:49 -04:00
rob 6ccdd84835 Initial scaffold for artifact-editor project 2025-12-18 22:06:34 -04:00