From 3fb46c211140e776208c8acb57dfb45766d88476 Mon Sep 17 00:00:00 2001 From: rob Date: Sun, 4 Jan 2026 01:06:37 -0400 Subject: [PATCH] refactor: Rename SmartTools to CmdForge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- CLAUDE.md | 12 +++---- Dockerfile | 36 +++++++++---------- README.md | 10 +++--- .../artifact-ai/config.yaml | 0 .../artifact-export/config.yaml | 0 docker-compose.yml | 30 ++++++++-------- install.sh | 20 +++++------ pyproject.toml | 2 +- src/artifact_editor/gui.py | 2 +- 9 files changed, 56 insertions(+), 56 deletions(-) rename {smarttools => cmdforge}/artifact-ai/config.yaml (100%) rename {smarttools => cmdforge}/artifact-export/config.yaml (100%) diff --git a/CLAUDE.md b/CLAUDE.md index 13ac310..f0be6e4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -28,7 +28,7 @@ Artifact Editor is a standalone PyQt6-based GUI for creating visual artifacts (d ### Project Ecosystem This is part of a three-project stack: -1. **SmartTools** - AI provider abstraction and tool execution (dependency) +1. **CmdForge** - AI provider abstraction and tool execution (dependency) 2. **Orchestrated Discussions** - Conversation orchestration (launches this editor) 3. **Artifact Editor** (this) - Visual artifact creation @@ -101,7 +101,7 @@ src/artifact_editor/ ### AI Integration -Uses the `artifact-ai` SmartTool for AI-powered generation: +Uses the `artifact-ai` CmdForge tool for AI-powered generation: ```python subprocess.run( ["artifact-ai", "--format", format_type, "--instruction", instruction], @@ -112,12 +112,12 @@ subprocess.run( No direct AI provider imports - follows Unix philosophy. -### SmartTools +### CmdForge Tools -Artifact Editor includes SmartTools for CLI/scripting use: +Artifact Editor includes CmdForge tools for CLI/scripting use: ``` -smarttools/ +cmdforge/ ├── artifact-ai/ # AI-powered artifact generation/modification │ └── config.yaml # Supports all formats: plantuml, mermaid, openscad, svg, excalidraw, code └── artifact-export/ # Render source to binary formats (PNG, SVG, PDF) @@ -139,7 +139,7 @@ cat diagram.puml | artifact-export --format plantuml --to output.svg cat model.scad | artifact-export --format openscad --to output.png ``` -These tools are installed to `~/.smarttools/` and `~/.local/bin/` by `./install.sh`. +These tools are installed to `~/.cmdforge/` and `~/.local/bin/` by `./install.sh`. ### Supported Formats diff --git a/Dockerfile b/Dockerfile index 82534a1..c5d7034 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,23 @@ # Artifact Editor - AI-enhanced visual artifact creation # # Multi-stage build: -# Stage 1: Build SmartTools base -# Stage 2: Build Artifact Editor with SmartTools +# Stage 1: Build CmdForge base +# Stage 2: Build Artifact Editor with CmdForge # # Build: docker build -t artifact-editor . # Run: docker run -it --rm artifact-editor artifact-ai --help # GUI: See usage examples at bottom # ============================================================================== -# Stage 1: SmartTools Base +# Stage 1: CmdForge Base # ============================================================================== -FROM python:3.12-slim AS smarttools +FROM python:3.12-slim AS cmdforge -WORKDIR /smarttools +WORKDIR /cmdforge -ARG SMARTTOOLS_REPO=https://gitea.brrd.tech/rob/SmartTools.git +ARG CMDFORGE_REPO=https://gitea.brrd.tech/rob/CmdForge.git RUN apt-get update && apt-get install -y --no-install-recommends git && \ - git clone ${SMARTTOOLS_REPO} . || \ + git clone ${CMDFORGE_REPO} . || \ echo "Clone failed - will need COPY in next stage" RUN pip install --no-cache-dir -e . || true @@ -59,16 +59,16 @@ RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ WORKDIR /app -# Copy SmartTools from stage 1 -COPY --from=smarttools /smarttools /smarttools +# Copy CmdForge from stage 1 +COPY --from=cmdforge /cmdforge /cmdforge -# Install SmartTools -RUN pip install --no-cache-dir -e /smarttools +# Install CmdForge +RUN pip install --no-cache-dir -e /cmdforge # Copy Artifact Editor files COPY pyproject.toml README.md ./ COPY src/ ./src/ -COPY smarttools/ ./smarttools/ +COPY cmdforge/ ./cmdforge/ COPY install.sh ./ # Install Artifact Editor and dependencies @@ -76,14 +76,14 @@ RUN pip install --no-cache-dir -e . && \ pip install --no-cache-dir PyQt6 pygments # Create directories -RUN mkdir -p /root/.smarttools /root/.local/bin +RUN mkdir -p /root/.cmdforge /root/.local/bin -# Install artifact SmartTools +# Install artifact CmdForge tools RUN ./install.sh -# Install SmartTools example tools -RUN python /smarttools/examples/install.py 2>/dev/null || true && \ - smarttools refresh 2>/dev/null || true +# Install CmdForge example tools +RUN python /cmdforge/examples/install.py 2>/dev/null || true && \ + cmdforge refresh 2>/dev/null || true # Add local bin to PATH ENV PATH="/root/.local/bin:${PATH}" @@ -91,7 +91,7 @@ ENV PATH="/root/.local/bin:${PATH}" # Healthcheck - verify CLI tools work RUN artifact-ai --help && \ artifact-export --help && \ - smarttools list | head -5 + cmdforge list | head -5 # Default: show help CMD ["artifact-ai", "--help"] diff --git a/README.md b/README.md index d8ce2a2..feac7eb 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Run without installing anything locally (all dependencies included): git clone https://gitea.brrd.tech/rob/artifact-editor.git cd artifact-editor -# Build (automatically clones SmartTools from Gitea) +# Build (automatically clones CmdForge from Gitea) docker-compose build # Run tests @@ -164,14 +164,14 @@ artifact-editor/ │ ├── code.py # Pygments-based syntax highlighting │ ├── svg.py # Direct SVG editing with UI components │ └── excalidraw.py # Hand-drawn style diagrams -└── smarttools/ # CLI tools following Unix philosophy +└── cmdforge/ # CLI tools following Unix philosophy ├── artifact-ai/ # AI-powered artifact generation/modification └── artifact-export/ # Render source to binary formats ``` -## CLI SmartTools +## CLI CmdForge Tools -In addition to the GUI, artifact-editor provides command-line SmartTools: +In addition to the GUI, artifact-editor provides command-line CmdForge tools: ### artifact-ai @@ -202,7 +202,7 @@ cat model.scad | artifact-export --format openscad --to output.png cat flowchart.mmd | artifact-export --format mermaid --to output.pdf ``` -Install SmartTools with `./install.sh` (requires SmartTools framework). +Install CmdForge tools with `./install.sh` (requires CmdForge framework). ## Keyboard Shortcuts diff --git a/smarttools/artifact-ai/config.yaml b/cmdforge/artifact-ai/config.yaml similarity index 100% rename from smarttools/artifact-ai/config.yaml rename to cmdforge/artifact-ai/config.yaml diff --git a/smarttools/artifact-export/config.yaml b/cmdforge/artifact-export/config.yaml similarity index 100% rename from smarttools/artifact-export/config.yaml rename to cmdforge/artifact-export/config.yaml diff --git a/docker-compose.yml b/docker-compose.yml index fe6fae9..92ec094 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,12 @@ # Artifact Editor - AI-enhanced diagram and artifact creation # # Quick Start: -# docker-compose build # Build the image (clones SmartTools from Gitea) +# docker-compose build # Build the image (clones CmdForge from Gitea) # docker-compose run --rm test # Run tests # docker-compose run --rm cli artifact-ai --help # # Dependencies: -# - SmartTools (cloned automatically from Gitea during build) +# - CmdForge (cloned automatically from Gitea during build) version: '3.8' @@ -19,10 +19,10 @@ services: context: . dockerfile: Dockerfile args: - SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git + CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git image: artifact-editor:latest volumes: - - smarttools-data:/root/.smarttools + - cmdforge-data:/root/.cmdforge - /tmp/artifacts:/tmp/artifacts command: ["artifact-ai", "--help"] @@ -34,16 +34,16 @@ services: context: . dockerfile: Dockerfile args: - SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git + CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git image: artifact-editor:latest volumes: - - smarttools-data:/root/.smarttools + - cmdforge-data:/root/.cmdforge command: > bash -c " echo '=== Artifact Editor Tests ===' echo '' - echo '1. Checking SmartTools...' - smarttools list | head -5 + echo '1. Checking CmdForge...' + cmdforge list | head -5 echo '' echo '2. Checking artifact-ai...' artifact-ai --help > /dev/null && echo 'artifact-ai: OK' @@ -65,13 +65,13 @@ services: context: . dockerfile: Dockerfile args: - SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git + CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git image: artifact-editor:latest environment: - DISPLAY=${DISPLAY:-:0} - QT_QPA_PLATFORM=xcb volumes: - - smarttools-data:/root/.smarttools + - cmdforge-data:/root/.cmdforge - /tmp/artifacts:/tmp/artifacts - /tmp/.X11-unix:/tmp/.X11-unix:ro command: ["artifact-editor"] @@ -85,24 +85,24 @@ services: context: . dockerfile: Dockerfile args: - SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git + CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git image: artifact-editor:latest volumes: - - smarttools-data:/root/.smarttools + - cmdforge-data:/root/.cmdforge - /tmp/artifacts:/tmp/artifacts command: ["/bin/bash"] stdin_open: true tty: true volumes: - smarttools-data: - # Persists ~/.smarttools between container runs + cmdforge-data: + # Persists ~/.cmdforge between container runs # ============================================================================== # Usage Examples # ============================================================================== # -# Build (fetches SmartTools from Gitea automatically): +# Build (fetches CmdForge from Gitea automatically): # docker-compose build # # Run tests: diff --git a/install.sh b/install.sh index be2c44f..0ab4cad 100755 --- a/install.sh +++ b/install.sh @@ -5,10 +5,10 @@ set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" INSTALL_DIR="$HOME/.local/bin" -SMARTTOOLS_DIR="$HOME/.smarttools" +CMDFORGE_DIR="$HOME/.cmdforge" mkdir -p "$INSTALL_DIR" -mkdir -p "$SMARTTOOLS_DIR" +mkdir -p "$CMDFORGE_DIR" # Create wrapper script for artifact-editor GUI cat > "$INSTALL_DIR/artifact-editor" << 'WRAPPER' @@ -23,19 +23,19 @@ WRAPPER sed -i "s|PLACEHOLDER_DIR|$SCRIPT_DIR|g" "$INSTALL_DIR/artifact-editor" chmod +x "$INSTALL_DIR/artifact-editor" -# Install SmartTools -if [ -d "$SCRIPT_DIR/smarttools" ]; then - echo "Installing SmartTools..." - for tool in "$SCRIPT_DIR/smarttools"/*/; do +# Install CmdForge tools +if [ -d "$SCRIPT_DIR/cmdforge" ]; then + echo "Installing CmdForge tools..." + for tool in "$SCRIPT_DIR/cmdforge"/*/; do tool_name=$(basename "$tool") - cp -r "$tool" "$SMARTTOOLS_DIR/" + cp -r "$tool" "$CMDFORGE_DIR/" # Create CLI wrapper cat > "$INSTALL_DIR/$tool_name" << WRAPPER #!/bin/bash -# SmartTools wrapper for '$tool_name' +# CmdForge wrapper for '$tool_name' # Auto-generated -exec /usr/bin/python3 -m smarttools.runner $tool_name "\$@" +exec /usr/bin/python3 -m cmdforge.runner $tool_name "\$@" WRAPPER chmod +x "$INSTALL_DIR/$tool_name" echo " Installed: $tool_name" @@ -49,7 +49,7 @@ echo "Usage:" echo " artifact-editor diagram.puml # Edit existing file" echo " artifact-editor -o new.puml # Create new file" echo "" -echo "SmartTools:" +echo "CmdForge tools:" echo " artifact-ai --format plantuml --instruction 'Create a class diagram'" echo " artifact-export --format plantuml --to output.svg" echo "" diff --git a/pyproject.toml b/pyproject.toml index 2fd9c0e..eb36ddc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ ] dependencies = [ "PyYAML>=6.0", - "smarttools @ git+https://gitea.brrd.tech/rob/SmartTools.git", + "cmdforge @ git+https://gitea.brrd.tech/rob/CmdForge.git", # GUI is required for the editor - include by default "PyQt6>=6.4.0", "QScintilla>=2.14.0", diff --git a/src/artifact_editor/gui.py b/src/artifact_editor/gui.py index f80660f..fda6981 100644 --- a/src/artifact_editor/gui.py +++ b/src/artifact_editor/gui.py @@ -2410,7 +2410,7 @@ class ArtifactEditorWindow(QMainWindow): "• Structured element/relationship dialogs
" "• AI-powered diagram generation
" "• Voice input via dictation

" - "Part of the SmartTools ecosystem" + "Part of the CmdForge ecosystem" ) msg.setStandardButtons(QMessageBox.StandardButton.Ok) msg.exec()