
# Разработка

## Требования

- **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`) и запускает dev Vite UI, который перенаправляет `/__tb` (включая WebSockets) на этот сервер. Команда выводит ссылку для активации в dev-режиме 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/`; на каждой странице есть метаданные frontmatter, а порядок навигации задают файлы `meta.json`. Она опубликована по адресу [termbridge.dev](https://termbridge.inline0.dev/ru/). Проверьте ее командой:

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

Рабочий процесс проверки документации выполняет ту же проверку для запросов на слияние, затрагивающих `docs/`.
