
# Ontwikkeling

## Vereisten

- **Bun** voor installaties en scripts in de werkruimte
- **Node.js 20+**
- **tmux** en **cloudflared** voor end-to-endtests
- **Daytona API-sleutel + git-referenties** voor de sandbox-integratietest (optioneel)
- **Playwright** voor UI-e2e-tests

## Installeren

```bash
bun install
```

## De app uitvoeren

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

Hiermee wordt de CLI gebouwd, de lokale server gestart op poort `8787` (overschrijven met `TERMBRIDGE_DEV_PORT`) met de tmux-sessie `codex` (overschrijven met `TERMBRIDGE_DEV_SESSION`), en de ontwikkel-Vite van UI gestart, die `/__tb` (inclusief WebSockets) naar die server doorstuurt. Er wordt een ontwikkel-inwissel-URL afgedrukt om in de browser te openen. Stel `TERMBRIDGE_SKIP_BUILD=1` in om de CLI-build over te slaan.

### Meerdere sessies

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

Of gebruik de snelkoppeling:

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

### Lokale cookiemodus

`dev:beam` stelt `TERMBRIDGE_INSECURE_COOKIE=1` in, tenzij u dit zelf instelt, zodat sessiecookies via gewone HTTP werken. Stel dit expliciet in wanneer u de CLI rechtstreeks uitvoert zonder HTTPS:

```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` voert unit- en integratietests uit met 100% dekking.
- `test:cli` voert echte e2e-tests uit voor CLI + UI (tmux + cloudflared + Playwright).
- De Daytona-sandboxtest in `test:cli` haalt instellingen alleen uit een `.env`-bestand in een `termbridge-test-app`-map naast deze repository (`../termbridge-test-app/.env`). De test wordt uitgevoerd wanneer dat bestand `TERMBRIDGE_E2E_DAYTONA=1` en `TERMBRIDGE_DAYTONA_API_KEY` instelt. Stel daar `TERMBRIDGE_SANDBOX_REPO` in op een repository die u kunt klonen; de standaardtestrepository is privé en vereist ook `TERMBRIDGE_SANDBOX_GIT_USERNAME` en `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Documentatie

De documentatie bestaat uit gewone Markdown-bestanden in `docs/`, met frontmatter op elke pagina en `meta.json`-bestanden voor de navigatievolgorde. De documentatie staat op [termbridge.dev](https://termbridge.inline0.dev/nl/). Valideer deze met:

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

De workflow voor documentatie-inhoud voert dezelfde controle uit op pull requests die `docs/` aanpassen.
