v0.7.1-bugfix
Pre-release
Pre-release
Summary
v0.7.1 introduces first-class ACP (Agent Client Protocol) support, a skill-installable CLI, and a suite of production-stability fixes. Users can now connect external ACP-compatible agents (e.g. claude-agent-acp) directly from Settings → Agents and have them operate on the live canvas through OpenPencil's MCP tools.
Changes
ACP (Agent Client Protocol) integration
- New
@zseven-w/pen-acpclient package wrapping the ACP TypeScript SDK - Settings → Agents → ACP Agents section with local-process + remote-WebSocket support
- Server-side connection manager with lazy reconnect +
globalThispersistence across Vite HMR /api/ai/agent?providerType=acpbranch wires session/prompt + session/update into the existing SSE chat stream- Auto-starts the OpenPencil MCP server, passes it to ACP via
session/new, and auto-approves tool permissions - Custom system prompt enforces layered design pipeline (
design_skeleton→design_content→design_refine) for higher quality output - Desktop-only guard for local process spawning (rejected outside Electron / dev mode)
op install CLI
- New
op install/op uninstallcommands with target auto-detection (Claude Code, Codex, Cursor, Gemini CLI, OpenCode) - Skill files bundled into the CLI binary at build time — no GitHub access required at install time
Production build fixes
@zseven-w/agent-nativepackage + native.nodebinary properly placed underserver/node_modules/so Nitro can resolve it- Electron
before-quit+ dev-script SIGINT handlers kill the detached MCP server (no more orphan processes) webUtils.getPathForFilecapture on drag-drop so recent files entries stay clickable after reopening
batch_design robustness (MCP)
- Multi-line JSON support via bracket/quote-balanced splitter
- Auto-normalize
fill/strokeshorthand (string / single-object forms → canonical arrays) - Per-line error collection instead of whole-batch abort; repairs empty keys, trailing commas, smart quotes
- Bindless
I(parent, data)form supported (auto-generated binding)
Codegen / chat polish
- Compact JSON + strip noise fields (
id,parentId, layout-managedx/y, default values) — 60–70% smaller request body to avoid proxy 403Request not allowed - CRUD intent detection routes to lightweight prompt + tool set (no design skills);
insert_nodesupportsafterparameter for sibling placement agent-native: resetStreamingToolExecutorbetween turns (fixestool_useID mismatch on multi-turn MiniMax / third-party providers); surface upstream HTTP error body via newProvider.lastError()VTable- Strip h3 JSON error wrapper on the client so chat shows clean error messages
Layer panel
- Rectangle nodes now accept drag-to-reparent (they inherit
ContainerProps— the restriction was UI-only)
i18n
- Full ACP translation keys for all 15 locales
Docs
- MIT LICENSE, README, and CLAUDE.md added/refreshed for every package
Related Issues
Type
-
feat— New feature -
fix— Bug fix
Checklist
-
npx tsc --noEmitpasses -
bun --bun run testpasses - No unrelated changes included
- Commit messages follow Conventional Commits
New Contributors
Full Changelog: v0.7.0...v0.7.1