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

View File

@@ -8,7 +8,7 @@ use tools::AgCanvasServer;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[derive(Parser)]
#[command(name = "agcanvas-mcp", about = "MCP server bridge for agcanvas")]
#[command(name = "agcanvas-mcp", about = "MCP server bridge for Augmented Canvas")]
struct Cli {
#[arg(long, default_value = "9876")]
port: u16,
@@ -26,7 +26,7 @@ async fn main() -> Result<()> {
let cli = Cli::parse();
let ws_url = format!("ws://127.0.0.1:{}", cli.port);
tracing::info!("Starting agcanvas MCP server, connecting to {}", ws_url);
tracing::info!("Starting Augmented Canvas MCP server, connecting to {}", ws_url);
let server = AgCanvasServer::new(ws_url);
let service = server.serve(rmcp::transport::stdio()).await?;