# Рабочий процесс

## Быстрая итерация: watch --deploy

Основной режим разработки:

```bash
cd my_plugin
catalib watch --deploy
```

Цикл: правите исходники → сохраняете → catalib пересобирает → доставляет на устройство → exteraGram перезагружает плагин. Логика на устройстве обновляется без ручных действий.

Под капотом на каждое изменение:

1. `adb forward tcp:42690 tcp:42690`;
2. `write_plugin(plugin_id, <содержимое собранного файла>)`;
3. `reload_plugin(plugin_id)`;
4. при первом деплое — `set_plugin_enabled(plugin_id, true)`;
5. снятие проброса порта.

Свежий бандл вытесняет код прошлого деплоя: встроенный загрузчик при каждой загрузке вычищает устаревшие вендоренные `catalib.*` из общего `sys.modules` (иначе старый код мог бы затенять новый).

## Разовая сборка без устройства

```bash
catalib build
```

Получите `dist/<plugin_id>.py` и `dist/<plugin_id>.plugin`. Устройство не нужно. Это же используется в CI.

## Ручной деплой

Если нужен контроль, можно собрать и доставить файл самостоятельно через протокол dev server (см. [Подготовка устройства](/catalib/deploi/device-setup.md)), либо установить файл в exteraGram штатно (импорт `.py`/`.plugin`).

## Офлайн-тесты доменной логики

Доменные слои не зависят от Android — тестируйте обычным `pytest` из корня проекта:

```bash
pytest
```

`catalib init` сразу даёт рабочую обвязку (`pyproject.toml`, `conftest.py`, `tests/`).

## Рекомендуемый цикл

1. `catalib init ...` — каркас.
2. Пишете доменную логику + офлайн-тесты (`pytest`).
3. `catalib build --check` — быстрая проверка сборки в CI/локально.
4. `catalib watch --deploy` — проверка поведения на устройстве.
5. Раздаёте пользователям один файл (см. [Распространение](/catalib/deploi/distribution.md)).

## Диагностика на устройстве

Если логи плагина не видны в `logcat`, пишите диагностику в файл в каталоге плагина и забирайте его. Признак успешной загрузки — `get_plugins()[<id>]["error"] == null`.

## Разработка прямо на телефоне

Весь цикл (сборка, `watch --deploy`, `doctor`, `logs`) работает и на самом устройстве в Termux/Pydroid — без `adb`, через локальный dev server. См. [Разработка на устройстве](/catalib/rukovodstvo/android.md).


---

# 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/workflow.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.
