openpencil/AGENTS.md
Fini 6ed9548c0d merge: land the align-branch work onto the refreshed base
47 commits from the align branch merged onto the force-updated remote
base (which had replayed an earlier snapshot of the same work plus new
overlay/pointer features and CI fixes). Conflict resolution: kept the
newer align side for the generation pipeline (orchestrator, mcp, skills,
design tools), kept the base side for the chat-panel test semantics and
graceful overlay teardown, fused both in sub_agent_session (design-turn
thinking policy + graceful epoch finish), and dropped the files each
side had deleted (legacy concurrent/dashboard paths, retired TS skills).
Deduped two identical replayed hunks (export.rs, chat_session_tests.rs).

Known issue carried over: provider_probe_host::landed_connected_outcome_
without_models_is_failure fails on a host with a live provider config
(env-sensitive test, both sides byte-identical there; green on CI).
2026-07-03 00:08:17 +08:00

1.8 KiB

AGENTS.md

This file provides guidance to Codex when working with code in this repository.

The TypeScript OpenPencil has been retired. apps/web, apps/desktop, apps/cli, and the pen-* packages are gone. The product is Rust (crates/) + a wasm-backed web SDK (packages/op-web-sdk*). See git history (last TS tag v0.7.5) for the retired code.

For full guidance see CLAUDE.md (this directory). Authoritative Rust architecture lives in crates/CLAUDE.md; remaining packages in packages/CLAUDE.md.

Commands

Tooling is Cargo (Rust — the product). The root has no package.json; the JS/Bun tooling for the web SDK lives under packages/ — run SDK/JS scripts from there.

  • Web dev server (Rust): bash scripts/start-web-rust.sh
  • Build (Rust): cargo build --workspace --release
  • Tests (Rust): cargo test --workspace; single crate: cargo test -p <crate>
  • Type check: cargo check --workspace; wasm: cargo check --target wasm32-unknown-unknown -p op-host-web --no-default-features --features web
  • Lint / format (Rust): cargo clippy --workspace --all-targets -- -D warnings / cargo fmt --all
  • Lint / format (TS SDK): from packages/: bun run lint (oxlint) / bun run format (oxfmt)
  • Desktop app: cargo build -p op-host-desktop → binary openpencil-desktop
  • CLI: cargo build -p op-cli → binary op
  • Iconify catalog (Rust assets): from packages/: bun run generate-iconify-catalog

Conventions

  • Single files ≤ 800 lines; one component/widget per file.
  • .rs snake_case, .ts/.tsx kebab-case; source comments in English.
  • Conventional Commits: <type>(<scope>): <subject> — scopes: editor, canvas, panels, ai, codegen, variables, figma, mcp, desktop, web, renderer, sdk, cli, agent, i18n.