API v1

Разработка плагинов

Расширения на чистом ESM

Плагины расширяют Meridian, не трогая ядро. Кинь папку в .meridian/plugins/<твой-плагин>/, и Meridian подхватит её — с hot-reload. Чистый ESM, без шага сборки.

Минимальный плагин

Плагины регистрируют команды, реагируют на события vault и рисуют боковые панели. Самый маленький полезный пример — счётчик слов:

// .meridian/plugins/word-counter/main.js
export default class WordCounter {
  onLoad(api) {
    api.registerCommand({
      id:   'word-counter:show',
      name: 'Word Counter: Show stats',
      run: () => {
        const text = api.editor.getActiveText() ?? '';
        const words = text.trim().split(/\s+/).filter(Boolean).length;
        api.ui.toast(`${words} words`);
      },
    });
  }
}

Сохрани файл. Команда сразу появится в палитре (⌘K) — без рестарта, без пересборки.

Структура папки

Плагин — это папка с одним обязательным файлом:

.meridian/plugins/word-counter/
├── main.js          обязательно
├── plugin.json      опционально — метаданные в Settings
└── README.md        опционально — показывается в Settings → Plugins

Что могут плагины

Объект api, который передаётся в onLoad, позволяет:

  • Регистрировать команды, появляющиеся в палитре
  • Реагировать на события vault — создание, изменение, удаление заметки
  • Рисовать боковые панели в правом сайдбаре
  • Показывать toast’ы и notice’ы в UI

Полные определения типов api см. в исходниках в репозитории.

Hot reload

Сохрани main.js — Meridian пересоздаст плагин в свежем контексте. Сначала отрабатывает onUnload предыдущей версии. Рестарт не нужен.

Дистрибуция

Магазина плагинов нет. Опубликуй папку в GitHub-репозиторий или поделись zip-архивом — пользователь кладёт его в свою .meridian/plugins/. Это весь pipeline.