Skip to content

Contribuer

Structure du projet

packages/
  core/              @open-pencil/core — moteur (zéro dépendance DOM)
    src/             Graphe de scène, renderer, layout, codec, kiwi, types
  cli/               @open-pencil/cli — CLI headless pour opérations .fig
    src/commands/    info, tree, find, export, eval, analyze
  mcp/               @open-pencil/mcp — serveur MCP pour outils IA
    src/             Transports stdio + HTTP (Hono), 87 outils
src/
  components/        Vue SFCs (canevas, panneaux, barre d'outils, sélecteur de couleur)
    properties/      Sections du panneau de propriétés (Apparence, Remplissage, Contour, etc.)
  composables/       Entrée canevas, raccourcis clavier, hooks de rendu
  stores/            État de l'éditeur (réactivité Vue)
  engine/            Shims de ré-exportation depuis @open-pencil/core
  kiwi/              Shims de ré-exportation depuis @open-pencil/core
  types.ts           Types partagés (ré-exportés depuis core)
  constants.ts       Couleurs UI, défauts, seuils
desktop/             Tauri v2 (Rust + config)
tests/
  e2e/               Régression visuelle Playwright
  engine/            Tests unitaires (bun:test)
docs/                Site de documentation VitePress
  specs/             Spécifications de capacités (source de vérité)
  changes/           Changements actifs et archivés

Configuration du développement

sh
bun install
bun run dev          # Éditeur sur localhost:1420
bun run docs:dev     # Docs sur localhost:5173

Style de code

Outils

OutilCommandeObjectif
oxlintbun run lintLinting (basé sur Rust, rapide)
oxfmtbun run formatFormatage du code
tsgobun run typecheckVérification de types (checker TypeScript basé sur Go)

Exécuter toutes les vérifications :

sh
bun run check

Conventions

  • Noms de fichiers — kebab-case (scene-graph.ts, use-canvas-input.ts)
  • Composants — PascalCase Vue SFCs (EditorCanvas.vue, ScrubInput.vue)
  • Constantes — SCREAMING_SNAKE_CASE
  • Fonctions/variables — camelCase
  • Types/interfaces — PascalCase

Conventions pour agents IA

Les développeurs et agents IA doivent lire AGENTS.md à la racine du repo (voir sur GitHub). Couvre le rendu, le graphe de scène, les composants et instances, le layout, l'UI, le format de fichier, les conventions Tauri et les problèmes connus.

Apporter des changements

  1. Implémenter le changement
  2. Exécuter bun run check et bun run test
  3. Soumettre une pull request

Fichiers clés

Le code source du moteur se trouve dans packages/core/src/. Les répertoires src/engine/ et src/kiwi/ de l'app sont des shims de ré-exportation — éditez le package core, pas les shims.

FichierObjectif
packages/core/src/scene-graph.tsGraphe de scène : nœuds, variables, instances, hit testing
packages/core/src/renderer.tsPipeline de rendu CanvasKit
packages/core/src/layout.tsAdaptateur layout Yoga
packages/core/src/undo.tsGestionnaire annuler/rétablir
packages/core/src/clipboard.tsPresse-papiers compatible Figma
packages/core/src/vector.tsModèle de réseau vectoriel
packages/core/src/render-image.tsExport d'image hors-écran (PNG/JPG/WEBP)
packages/core/src/kiwi/codec.tsEncodeur/décodeur binaire Kiwi
packages/core/src/kiwi/fig-import.tsLogique d'import de fichiers .fig
packages/cli/src/index.tsPoint d'entrée du CLI
packages/core/src/tools/Définitions d'outils unifiées (IA, MCP, CLI)
packages/core/src/figma-api.tsImplémentation de Figma Plugin API
packages/mcp/src/server.tsFactory du serveur MCP
packages/cli/src/commands/Commandes CLI (info, tree, find, export, eval, analyze)
src/stores/editor.tsÉtat global de l'éditeur
src/composables/use-canvas.tsComposable de rendu du canevas
src/composables/use-canvas-input.tsGestion des entrées souris/touch
src/composables/use-keyboard.tsGestion des raccourcis clavier

Released under the MIT License.