feat: add boolean shape ops, visual undo tree, and Augmented Canvas branding

- Boolean operations (union, intersection, difference, xor) via i_overlay
  with Path shape rendering using earcutr triangulation
- Visual undo tree with branching history, checkout, and fork (Cmd+H)
  using Arc-based snapshots for structural sharing
- Consistent Augmented Canvas branding across app title, MCP server,
  CLI help text, and error messages
- macOS .app bundle script and Info.plist for Finder integration
- New MCP tool: boolean_op for agent-driven shape composition
- 26 tests passing (5 boolean, 6 history, 15 existing)
This commit is contained in:
David Ibia
2026-02-10 00:01:45 +01:00
parent e8ec44d961
commit 9489c390fa
18 changed files with 1202 additions and 21 deletions

48
scripts/bundle-macos.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/usr/bin/env bash
#
# Bundle agcanvas as a macOS .app for Finder.
# Works on both Apple Silicon and Intel.
#
# Usage:
# ./scripts/bundle-macos.sh # Build release + bundle
# ./scripts/bundle-macos.sh --install # Also copy to /Applications
#
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
APP_NAME="Augmented Canvas"
BUNDLE_DIR="$PROJECT_ROOT/target/release/bundle"
APP_BUNDLE="$BUNDLE_DIR/$APP_NAME.app"
echo "==> Building agcanvas (release)..."
cargo build --release -p agcanvas --manifest-path "$PROJECT_ROOT/Cargo.toml"
echo "==> Creating $APP_NAME.app bundle..."
rm -rf "$APP_BUNDLE"
mkdir -p "$APP_BUNDLE/Contents/MacOS"
mkdir -p "$APP_BUNDLE/Contents/Resources"
cp "$PROJECT_ROOT/target/release/agcanvas" "$APP_BUNDLE/Contents/MacOS/agcanvas"
cp "$PROJECT_ROOT/assets/Info.plist" "$APP_BUNDLE/Contents/Info.plist"
if [ -f "$PROJECT_ROOT/assets/AppIcon.icns" ]; then
cp "$PROJECT_ROOT/assets/AppIcon.icns" "$APP_BUNDLE/Contents/Resources/AppIcon.icns"
echo " Icon: AppIcon.icns"
else
echo " Icon: none (add assets/AppIcon.icns for a custom icon)"
fi
printf 'APPL????' > "$APP_BUNDLE/Contents/PkgInfo"
echo "==> Bundle created: $APP_BUNDLE"
if [[ "${1:-}" == "--install" ]]; then
echo "==> Installing to /Applications..."
rm -rf "/Applications/$APP_NAME.app"
cp -r "$APP_BUNDLE" "/Applications/$APP_NAME.app"
echo "==> Installed: /Applications/$APP_NAME.app"
echo " Open Finder → Applications → Augmented Canvas"
fi
echo "==> Done."