
# Розробка

## Вимоги

- **Bun** для встановлення робочого простору та скриптів
- **Node.js 20+**
- **tmux** і **cloudflared** для наскрізних тестів
- **Ключ Daytona API + облікові дані git** для інтеграційного тесту пісочниці (необов’язково)
- **Playwright** для наскрізних тестів UI

## Встановлення

```bash
bun install
```

## Запуск застосунку

```bash
bun run dev:beam
```

Це збирає CLI, запускає локальний сервер на порту `8787` (перевизначається через `TERMBRIDGE_DEV_PORT`) із сеансом tmux `codex` (перевизначається через `TERMBRIDGE_DEV_SESSION`) і запускає проксі Vite для розробки UI, який перенаправляє `/__tb` (зокрема WebSocket-з’єднання) на цей сервер. Виводиться посилання для отримання доступу URL у режимі розробки, яке можна відкрити в браузері. Задайте `TERMBRIDGE_SKIP_BUILD=1`, щоб пропустити збирання CLI.

### Кілька сеансів

```bash
TERMBRIDGE_SESSIONS=2 bun run dev:beam
```

Або скористайтеся скороченою командою:

```bash
bun run dev:beam:multi
```

### Режим локальних cookie

`dev:beam` встановлює `TERMBRIDGE_INSECURE_COOKIE=1`, якщо його не задано самостійно, щоб сеансові cookie працювали через звичайний HTTP. Якщо запускати безпосередньо CLI без HTTPS, задайте це явно:

```bash
TERMBRIDGE_INSECURE_COOKIE=1 node cli/dist/bin.js --no-tunnel --public-url http://127.0.0.1:8080 --port 8080
```

## Тести

```bash
bun run test
```

- `test:mocked` запускає модульні та інтеграційні тести з покриттям 100%.
- `test:cli` запускає наскрізні тести зі справжніми CLI + UI (tmux + cloudflared + Playwright).
- Тест пісочниці Daytona у `test:cli` читає налаштування лише з файлу `.env` у каталозі `termbridge-test-app` поруч із цим репозиторієм (`../termbridge-test-app/.env`). Тест запускається, якщо в цьому файлі задано `TERMBRIDGE_E2E_DAYTONA=1` і `TERMBRIDGE_DAYTONA_API_KEY`. Укажіть там `TERMBRIDGE_SANDBOX_REPO` репозиторію, який можна клонувати; типовий тестовий репозиторій приватний і також потребує `TERMBRIDGE_SANDBOX_GIT_USERNAME` та `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Документація

Документація складається зі звичайних файлів Markdown у `docs/`, кожна сторінка має початкові метадані, а порядок навігації задають файли `meta.json`. Її опубліковано на [termbridge.dev](https://termbridge.inline0.dev/uk/). Перевірте її командою:

```bash
node scripts/check-docs-content.mjs --root docs --expected-docs 16 --expected-nav 3
```

Робочий процес перевірки документації запускає таку саму перевірку для запитів на злиття, що стосуються `docs/`.
