
# Разработка

## Изисквания

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

## Инсталиране

```bash
bun install
```

## Стартиране на приложението

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

Това компилира CLI, стартира локалния сървър на порт `8787` (заменете с `TERMBRIDGE_DEV_PORT`) със сесия `codex` на tmux (заменете с `TERMBRIDGE_DEV_SESSION`) и стартира dev UI на Vite, който препраща `/__tb` (включително WebSocket връзките) към този сървър. Показва dev токен URL за отваряне в браузъра. Задайте `TERMBRIDGE_SKIP_BUILD=1`, за да пропуснете компилацията CLI.

### Няколко сесии

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

Или използвайте пряк път:

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

### Режим с локални бисквитки

`dev:beam` задава `TERMBRIDGE_INSECURE_COOKIE=1`, освен ако не сте го задали сами, така че сесийните бисквитки работят през обикновен 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).
- Тестът за sandbox 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/bg/). Проверете я с:

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

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