Skip to content

Contribuire

Struttura del progetto

packages/
  core/              @open-pencil/core — motore (zero dipendenze DOM)
    src/             Grafo scena, renderer, layout, codec, kiwi, tipi
  cli/               @open-pencil/cli — CLI headless per operazioni .fig
    src/commands/    info, tree, find, export, eval, analyze
  mcp/               @open-pencil/mcp — server MCP per strumenti IA
    src/             Trasporti stdio + HTTP (Hono), 87 strumenti
src/
  components/        Vue SFCs (canvas, pannelli, barra strumenti, selettore colore)
    properties/      Sezioni pannello proprietà (Aspetto, Riempimento, Contorno, ecc.)
  composables/       Input canvas, scorciatoie tastiera, hook di rendering
  stores/            Stato editor (reattività Vue)
  engine/            Shim di ri-esportazione da @open-pencil/core
  kiwi/              Shim di ri-esportazione da @open-pencil/core
  types.ts           Tipi condivisi (ri-esportati da core)
  constants.ts       Colori UI, default, soglie
desktop/             Tauri v2 (Rust + config)
tests/
  e2e/               Regressione visiva Playwright
  engine/            Test unitari (bun:test)
docs/                Sito documentazione VitePress
  specs/             Specifiche di capacità (fonte di verità)
  changes/           Cambiamenti attivi e archiviati

Configurazione sviluppo

sh
bun install
bun run dev          # Editor su localhost:1420
bun run docs:dev     # Docs su localhost:5173

Stile di codice

Strumenti

StrumentoComandoScopo
oxlintbun run lintLinting (basato su Rust, veloce)
oxfmtbun run formatFormattazione codice
tsgobun run typecheckVerifica tipi (checker TypeScript basato su Go)

Eseguire tutte le verifiche:

sh
bun run check

Convenzioni

  • Nomi file — kebab-case (scene-graph.ts, use-canvas-input.ts)
  • Componenti — PascalCase Vue SFCs (EditorCanvas.vue, ScrubInput.vue)
  • Costanti — SCREAMING_SNAKE_CASE
  • Funzioni/variabili — camelCase
  • Tipi/interfacce — PascalCase

Convenzioni per agenti IA

Sviluppatori e agenti IA dovrebbero leggere AGENTS.md nella root del repo (vedi su GitHub). Copre rendering, grafo scena, componenti e istanze, layout, UI, formato file, convenzioni Tauri e problemi noti.

Apportare modifiche

  1. Implementare il cambiamento
  2. Eseguire bun run check e bun run test
  3. Inviare una pull request

File chiave

Il codice sorgente del motore si trova in packages/core/src/. I directory src/engine/ e src/kiwi/ dell'app sono shim di ri-esportazione — modificare il pacchetto core, non gli shim.

FileScopo
packages/core/src/scene-graph.tsGrafo scena: nodi, variabili, istanze, hit testing
packages/core/src/renderer.tsPipeline di rendering CanvasKit
packages/core/src/layout.tsAdattatore layout Yoga
packages/core/src/undo.tsGestore annulla/ripristina
packages/core/src/clipboard.tsAppunti compatibili con Figma
packages/core/src/vector.tsModello rete vettoriale
packages/core/src/render-image.tsExport immagine offscreen (PNG/JPG/WEBP)
packages/core/src/kiwi/codec.tsEncoder/decoder binario Kiwi
packages/core/src/kiwi/fig-import.tsLogica import file .fig
packages/cli/src/index.tsPunto di ingresso CLI
packages/core/src/tools/Definizioni strumenti unificate (IA, MCP, CLI)
packages/core/src/figma-api.tsImplementazione Figma Plugin API
packages/mcp/src/server.tsFactory del server MCP
packages/cli/src/commands/Comandi CLI (info, tree, find, export, eval, analyze)
src/stores/editor.tsStato globale dell'editor
src/composables/use-canvas.tsComposable rendering canvas
src/composables/use-canvas-input.tsGestione input mouse/touch
src/composables/use-keyboard.tsGestione scorciatoie tastiera

Released under the MIT License.