
# Udvikling

## Krav

- **Bun** til workspace-installationer og scripts
- **Node.js 20+**
- **tmux** og **cloudflared** til end-to-end-tests
- **Daytona API-nøgle + Git-legitimationsoplysninger** til integrationstesten af sandkassen (valgfrit)
- **Playwright** til UI-e2e-tests

## Installation

```bash
bun install
```

## Kør appen

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

Dette bygger CLI, starter den lokale server på port `8787` (kan ændres med `TERMBRIDGE_DEV_PORT`) med tmux-sessionen `codex` (kan ændres med `TERMBRIDGE_DEV_SESSION`) og starter udviklings-UI for Vite, som videresender `/__tb` (herunder WebSockets) til serveren. Den udskriver et udviklings-URL til indløsning, som du kan åbne i browseren. Angiv `TERMBRIDGE_SKIP_BUILD=1` for at springe CLI-buildet over.

### Flere sessioner

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

Eller brug genvejen:

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

### Lokal cookietilstand

`dev:beam` angiver `TERMBRIDGE_INSECURE_COOKIE=1`, medmindre du selv angiver den, så sessionscookies virker over almindelig HTTP. Når du kører CLI direkte uden HTTPS, skal du angive den eksplicit:

```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` kører enheds- og integrationstests med 100 % dækning.
- `test:cli` kører reelle e2e-tests med CLI + UI (tmux + cloudflared + Playwright).
- Sandkassetesten Daytona i `test:cli` læser kun sine indstillinger fra en `.env`-fil i en `termbridge-test-app`-mappe ved siden af dette repository (`../termbridge-test-app/.env`). Den køres, når filen angiver `TERMBRIDGE_E2E_DAYTONA=1` og `TERMBRIDGE_DAYTONA_API_KEY`. Angiv `TERMBRIDGE_SANDBOX_REPO` dér til et repository, du kan klone; standardtestrepositoryet er privat og kræver også `TERMBRIDGE_SANDBOX_GIT_USERNAME` og `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Dokumentation

Dokumentationen består af almindelige Markdown-filer i `docs/` med frontmatter på hver side og `meta.json`-filer til navigationsrækkefølgen. Den udgives på [termbridge.dev](https://termbridge.inline0.dev/da/). Valider den med:

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

Dokumentationsarbejdsflowet kører den samme kontrol på pull requests, der berører `docs/`.
