
# Programowanie

## Wymagania

- **Bun** do instalowania zależności i uruchamiania skryptów w workspace
- **Node.js 20+**
- **tmux** i **cloudflared** do testów end-to-end
- **Daytona API key + dane uwierzytelniające git** do testu integracyjnego piaskownicy (opcjonalnie)
- **Playwright** do testów e2e UI

## Instalacja

```bash
bun install
```

## Uruchamianie aplikacji

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

Kompiluje CLI, uruchamia serwer lokalny na porcie `8787` (zmień za pomocą `TERMBRIDGE_DEV_PORT`) z sesją `codex` tmux (zmień za pomocą `TERMBRIDGE_DEV_SESSION`) i uruchamia deweloperskie UI Vite, które przekazuje ruch `/__tb` (w tym WebSockety) do tego serwera. Wyświetla deweloperski link do wykorzystania URL w przeglądarce. Ustaw `TERMBRIDGE_SKIP_BUILD=1`, aby pominąć kompilację CLI.

### Wiele sesji

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

Możesz też użyć skrótu:

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

### Tryb lokalnych plików cookie

`dev:beam` ustawia `TERMBRIDGE_INSECURE_COOKIE=1`, jeśli nie ustawisz go samodzielnie, dzięki czemu pliki cookie sesji działają przez zwykłe HTTP. Uruchamiając bezpośrednio CLI bez HTTPS, ustaw tę zmienną jawnie:

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

## Testy

```bash
bun run test
```

- `test:mocked` uruchamia testy jednostkowe i integracyjne z pokryciem 100%.
- `test:cli` uruchamia rzeczywiste testy e2e CLI + UI (tmux + cloudflared + Playwright).
- Test sandboxa Daytona w `test:cli` pobiera ustawienia wyłącznie z pliku `.env` w katalogu `termbridge-test-app` obok tego repozytorium (`../termbridge-test-app/.env`). Test jest uruchamiany, gdy w pliku ustawiono `TERMBRIDGE_E2E_DAYTONA=1` i `TERMBRIDGE_DAYTONA_API_KEY`. Ustaw tam `TERMBRIDGE_SANDBOX_REPO` na repozytorium, które możesz sklonować; domyślne repozytorium testowe jest prywatne i wymaga także `TERMBRIDGE_SANDBOX_GIT_USERNAME` i `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Dokumentacja

Dokumentacja składa się ze zwykłych plików Markdown w `docs/`, z metadanymi frontmatter na każdej stronie i plikami `meta.json` określającymi kolejność nawigacji. Jest opublikowana pod adresem [dokumentacjatermbridge.dev](https://termbridge.inline0.dev/pl/). Sprawdź ją za pomocą:

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

Proces dokumentacji sprawdza to samo w żądaniach pull request obejmujących `docs/`.
