# Распространение пользователям

Главное свойство catalib: на выходе — **один самодостаточный файл**, который ставится штатно, как любой однофайловый плагин exteraGram.

## Что отдавать

После `catalib build` в каталоге `out` лежат два идентичных файла:

* `<plugin_id>.py`
* `<plugin_id>.plugin`

Содержимое побайтно одинаково. Какой раздавать — зависит от способа установки в конкретной сборке exteraGram (импорт файла из чата/хранилища или «установить плагин»). Оба валидны; начните с `.plugin`, если ваша сборка ожидает это расширение.

## Что внутри файла

* Литералы метаданных (их читает exteraGram через AST).
* Встроенный загрузчик (`sys.meta_path`).
* Все исходные модули плагина.
* Вендоренный `catalib.support` (на устройстве пакета `catalib` нет, он вшит в файл).

Пользователю **не нужно** устанавливать catalib или что-либо ещё — зависимости плагина (`__requirements__`) exteraGram доставит сам при первой загрузке (только pure-Python).

## Версии и совместимость

* `version` в `catalib.toml` → `__version__` плагина.
* `min_version` → `__app_version__` (минимальная версия приложения).
* `sdk_version` → `__sdk_version__` — **жёсткий гейт**. Если не уверены в минимально нужной версии SDK, не задавайте `sdk_version`: завышенное значение заблокирует установку у пользователей со старой сборкой.
* catalib не эмитит нестандартный `__min_version__` — на него exteraGram показывает экран несовместимости.

## Контрольный список перед раздачей

* `catalib build --check` проходит без ошибок.
* Офлайн-тесты доменной логики зелёные (`pytest`).
* Плагин загружается на устройстве: `error: null` в `get_plugins`.
* Зависимости — только pure-Python и реально нужны.
* `version` повышен относительно прошлого релиза.
* Проверены команды/меню/настройки на реальном устройстве.

## Обновления

Новая версия — это просто новый собранный файл с увеличенным `version`. Пользователь переустанавливает плагин штатным способом. Встроенный загрузчик корректно вытесняет код предыдущей версии в рамках сессии приложения (очистка устаревших вендоренных модулей).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://raito-kyokai.gitbook.io/catalib/deploi/distribution.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
