
# Entwicklung

## Voraussetzungen

- **Bun** für Workspace-Installationen und Skripte
- **Node.js 20+**
- **tmux** und **cloudflared** für End-to-End-Tests
- **Daytona API-Schlüssel + git-Zugangsdaten** für den optionalen Sandbox-Integrationstest
- **Playwright** für UI-E2E-Tests

## Installation

```bash
bun install
```

## App starten

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

Damit wird der CLI erstellt, der lokale Server auf Port `8787` gestartet (mit `TERMBRIDGE_DEV_PORT` überschreibbar), die tmux-Sitzung `codex` gestartet (mit `TERMBRIDGE_DEV_SESSION` überschreibbar) und der Vite-Dev-UI gestartet, der `/__tb` (einschließlich WebSockets) an diesen Server weiterleitet. Ein Dev-Einlöse-URL zum Öffnen im Browser wird ausgegeben. Setze `TERMBRIDGE_SKIP_BUILD=1`, um den CLI-Build zu überspringen.

### Mehrere Sitzungen

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

Oder verwende die Kurzform:

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

### Lokaler Cookie-Modus

`dev:beam` setzt `TERMBRIDGE_INSECURE_COOKIE=1`, sofern du keinen eigenen Wert angibst. So funktionieren Sitzungscookies über normales HTTP. Wenn du CLI direkt ohne HTTPS ausführst, lege den Wert ausdrücklich fest:

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

## Tests

```bash
bun run test
```

- `test:mocked` führt Unit- und Integrationstests mit 100 % Abdeckung aus.
- `test:cli` führt echte CLI- und UI-End-to-End-Tests aus (tmux + cloudflared + Playwright).
- Der Daytona-Sandbox-Test in `test:cli` liest seine Einstellungen ausschließlich aus einer `.env`-Datei in einem `termbridge-test-app`-Verzeichnis neben diesem Repository (`../termbridge-test-app/.env`). Er wird ausgeführt, wenn diese Datei `TERMBRIDGE_E2E_DAYTONA=1` und `TERMBRIDGE_DAYTONA_API_KEY` festlegt. Gib dort unter `TERMBRIDGE_SANDBOX_REPO` ein Repository an, das du klonen kannst; das Standard-Test-Repository ist privat und benötigt außerdem `TERMBRIDGE_SANDBOX_GIT_USERNAME` und `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Dokumentation

Die Dokumentation besteht aus einfachen Markdown-Dateien in `docs/`. Jede Seite enthält Frontmatter; `meta.json`-Dateien legen die Navigationsreihenfolge fest. Veröffentlicht wird sie unter [termbridge.dev](https://termbridge.inline0.dev/de/). Überprüfe sie mit:

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

Der Workflow für Dokumentationsinhalte führt dieselbe Prüfung bei Pull Requests aus, die `docs/` betreffen.
