Skip to content

Участие в разработке

Структура проекта

packages/
  core/              @open-pencil/core — движок (без DOM-зависимостей)
    src/             Граф сцены, отрисовщик, компоновка, кодек, kiwi, типы
  cli/               @open-pencil/cli — headless CLI для операций с .fig
    src/commands/    info, tree, find, export, eval, analyze
  mcp/               @open-pencil/mcp — MCP-сервер для AI-инструментов
    src/             stdio + HTTP (Hono) транспорты, 87 инструментов
src/
  components/        Vue SFC (холст, панели, панель инструментов, палитра цветов)
    properties/      Секции панели свойств (Внешний вид, Заливка, Обводка и др.)
  composables/       Ввод на холсте, сочетания клавиш, хуки отрисовки
  stores/            Состояние редактора (реактивность Vue)
  engine/            Шимы реэкспорта из @open-pencil/core
  kiwi/              Шимы реэкспорта из @open-pencil/core
  types.ts           Общие типы (реэкспорт из core)
  constants.ts       Цвета UI, значения по умолчанию, пороги
desktop/             Tauri v2 (Rust + конфигурация)
tests/
  e2e/               Визуальная регрессия Playwright
  engine/            Юнит-тесты (bun:test)
docs/                Сайт документации VitePress
  specs/             Спецификации возможностей (источник истины)
  changes/           Активные и архивные изменения

Настройка среды разработки

sh
bun install
bun run dev          # Редактор на localhost:1420
bun run docs:dev     # Документация на localhost:5173

Стиль кода

Инструменты

ИнструментКомандаНазначение
oxlintbun run lintЛинтинг (на Rust, быстрый)
oxfmtbun run formatФорматирование кода
tsgobun run typecheckПроверка типов (TypeScript-чекер на Go)

Запуск всех проверок:

sh
bun run check

Соглашения

  • Имена файлов — kebab-case (scene-graph.ts, use-canvas-input.ts)
  • Компоненты — PascalCase Vue SFC (EditorCanvas.vue, ScrubInput.vue)
  • Константы — SCREAMING_SNAKE_CASE
  • Функции/переменные — camelCase
  • Типы/интерфейсы — PascalCase

Соглашения для AI-агентов

Разработчики и AI-агенты, работающие с кодовой базой, должны прочитать AGENTS.md в корне репозитория (посмотреть на GitHub). Файл охватывает отрисовку, граф сцены, компоненты и экземпляры, компоновку, UI, формат файлов, соглашения Tauri и известные проблемы.

Внесение изменений

  1. Реализуйте изменение
  2. Запустите bun run check и bun run test
  3. Создайте pull request

Ключевые файлы

Исходники движка находятся в packages/core/src/. Файлы src/engine/ и src/kiwi/ приложения — это шимы реэкспорта. Редактируйте пакет core, а не шимы.

ФайлНазначение
packages/core/src/scene-graph.tsГраф сцены: узлы, переменные, экземпляры, проверка попадания
packages/core/src/renderer.tsКонвейер отрисовки CanvasKit
packages/core/src/layout.tsАдаптер компоновки Yoga
packages/core/src/undo.tsМенеджер отмены/повтора
packages/core/src/clipboard.tsFigma-совместимый буфер обмена
packages/core/src/vector.tsМодель векторных сетей
packages/core/src/render-image.tsВнеэкранный экспорт изображений (PNG/JPG/WEBP)
packages/core/src/kiwi/codec.tsБинарный кодировщик/декодировщик Kiwi
packages/core/src/kiwi/fig-import.tsЛогика импорта .fig файлов
packages/cli/src/index.tsТочка входа CLI
packages/core/src/tools/Унифицированные определения инструментов по доменам (read, create, modify, structure, variables, vector, analyze)
packages/core/src/figma-api.tsРеализация Figma Plugin API
packages/mcp/src/server.tsФабрика MCP-сервера
packages/cli/src/commands/Команды CLI (info, tree, find, export, eval, analyze)
src/stores/editor.tsГлобальное состояние редактора
src/composables/use-canvas.tsComposable отрисовки холста
src/composables/use-canvas-input.tsОбработка ввода мышью/тачем
src/composables/use-keyboard.tsОбработка сочетаний клавиш

Released under the MIT License.