openpencil/packages/CLAUDE.md
Kayshen-X 77dca8c01b chore: retire TypeScript OpenPencil, delete apps/* + pen-* packages
The product is now Rust (crates/) + the Zig agent runtime
(packages/agent-native) + the wasm-backed web SDK (packages/op-web-sdk*).
Delete the retired TypeScript editor/desktop/CLI (apps/*), the pen-*
packages, and their orphaned TS tooling, Dockerfile, and root tsconfig.

Rust-side hooks into the deleted TS are rehomed so the workspace still
builds, tests, and releases green:
- op-mcp: vendor the 10 element-tool-defs shards it include_str!'d from
  pen-mcp into crates/op-mcp/assets/element-tool-defs/ (git renames), and
  repoint the compile-time includes + the runtime parity test's read_dir.
- op-orchestrator: reword the parity panic that named the retired
  dump-planner-golden.ts generator (goldens stay as frozen baselines).
- CI: drop the TS-derive golden-drift + planner-parity oracle jobs and the
  TS path filters from rust-check.yml; repoint the cargo-bundle icon in
  rust-release.yml to crates/op-host-desktop/assets/icon.png.
- Release (Windows): recover the deleted apps/desktop/build/icon.ico into
  crates/op-host-desktop/assets/icon.ico and repoint the NSIS installer
  (rust-release.yml /DICON_FILE + package-windows.nsi ICON_FILE fallback +
  its example invocation), so the Windows release build still finds it.
- Remove the dead .githooks/post-commit hook — it rebuilt the deleted
  out/mcp-server.cjs via the removed mcp:compile script and only watched
  now-deleted pen-* paths; the Rust MCP is built by cargo.
- Recover apps/web/public/logo-discord.svg to screenshot/ and repoint the
  15 READMEs' logo/link paths.

package.json is now Rust-first (dev/build/test -> cargo + serve-web) and
docs (CLAUDE.md/AGENTS.md/packages+crates CLAUDE.md) describe the Rust
product. The retired TS remains recoverable via git (last tag v0.7.5).

Verified: cargo check --workspace green; cargo test -p op-mcp 353 passed;
cargo test -p op-orchestrator 848 passed; cargo test --workspace --no-run
compiles all targets; rust-release.yml parses and references no deleted
build assets.

Pre-commit fmt hook bypassed: its cargo fmt --check is pre-red from a
repo-wide stable-vs-nightly rustfmt config drift affecting unrelated files;
the .rs files touched here produce no fmt diff.
2026-07-01 21:12:39 +08:00

1.6 KiB

Packages

The JS/Zig packages that remain after the TypeScript retirement.

The pen-* packages (pen-types, pen-core, pen-engine, pen-renderer, pen-figma, pen-mcp, pen-ai-skills, pen-sdk, pen-react, pen-acp) and pen-codegen were retired along with apps/*. Their functionality now lives in the Rust crates/ (see crates/CLAUDE.md). Nothing here depends on them.

agent-native (agent-native/)

Native AI agent runtime written in Zig, exposed to JS via a NAPI addon (napi/agent_napi.node). Multi-provider, supports concurrent Agent Teams. Cross-product runtime (also consumed by Zode).

  • Build: bun run agent:build (zig build napi -Doptimize=ReleaseFast), then bun run agent-native:bundle to copy the .node into napi/.
  • See agent-native/CLAUDE.md for the full runtime docs.

op-web-sdk (op-web-sdk/)

Read-only OpenPencil .op viewer SDK for the web, wasm-backed. Wraps the op-host-web CanvasKit wasm bundle behind a small JS/TS embedding API (mount / load .op / viewport control / zoom-to-fit). Replaces the public role of the retired pen-react (viewing only — editing is not a goal of the public SDK).

  • Zero runtime dependencies; ships its own wasm under wasm/.
  • Build: tsup (bun run build inside the package). Tests: vitest.

op-web-sdk-react (op-web-sdk-react/)

React 19 adapter for op-web-sdk (component + hooks wrapper). Depends only on @zseven-w/op-web-sdk (+ peer react / react-dom).

op-web-sdk-vue (op-web-sdk-vue/)

Vue 3 adapter for op-web-sdk. Depends only on @zseven-w/op-web-sdk (+ peer vue).