Skip to content

v0.7.1-bugfix

Pre-release
Pre-release

Choose a tag to compare

@Kayshen-X Kayshen-X released this 13 Apr 13:43
· 22 commits to main since this release
7271a03

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-acp client package wrapping the ACP TypeScript SDK
  • Settings → Agents → ACP Agents section with local-process + remote-WebSocket support
  • Server-side connection manager with lazy reconnect + globalThis persistence across Vite HMR
  • /api/ai/agent?providerType=acp branch 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_skeletondesign_contentdesign_refine) for higher quality output
  • Desktop-only guard for local process spawning (rejected outside Electron / dev mode)

op install CLI

  • New op install / op uninstall commands 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-native package + native .node binary properly placed under server/node_modules/ so Nitro can resolve it
  • Electron before-quit + dev-script SIGINT handlers kill the detached MCP server (no more orphan processes)
  • webUtils.getPathForFile capture 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 / stroke shorthand (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-managed x/y, default values) — 60–70% smaller request body to avoid proxy 403 Request not allowed
  • CRUD intent detection routes to lightweight prompt + tool set (no design skills); insert_node supports after parameter for sibling placement
  • agent-native: reset StreamingToolExecutor between turns (fixes tool_use ID mismatch on multi-turn MiniMax / third-party providers); surface upstream HTTP error body via new Provider.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

#93

Type

  • feat — New feature
  • fix — Bug fix

Checklist

  • npx tsc --noEmit passes
  • bun --bun run test passes
  • No unrelated changes included
  • Commit messages follow Conventional Commits

New Contributors

Full Changelog: v0.7.0...v0.7.1