
# Utveckling

## Krav

- **Bun** för installationer och skript i arbetsytan
- **Node.js 20+**
- **tmux** och **cloudflared** för end-to-end-tester
- **Daytona API-nyckel + git-uppgifter** för sandboxintegreringstestet (valfritt)
- **Playwright** för UI-tester från början till slut

## Installation

```bash
bun install
```

## Kör appen

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

Det här bygger CLI, startar den lokala servern på port `8787` (åsidosätt med `TERMBRIDGE_DEV_PORT`) med sessions-`codex` tmux (åsidosätt med `TERMBRIDGE_DEV_SESSION`) och startar utvecklings-UI för Vite, som proxyar `/__tb` (inklusive WebSockets) till servern. En inlösen-URL för utveckling skrivs ut så att du kan öppna den i webbläsaren. Ställ in `TERMBRIDGE_SKIP_BUILD=1` för att hoppa över bygget av CLI.

### Flera sessioner

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

Eller använd genvägen:

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

### Lokalt cookieläge

`dev:beam` ställer in `TERMBRIDGE_INSECURE_COOKIE=1` om du inte själv anger det, så sessionscookies fungerar över vanlig HTTP. När du kör CLI direkt utan HTTPS anger du det uttryckligen:

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

## Tester

```bash
bun run test
```

- `test:mocked` kör enhets- och integrationstester med 100 % täckning.
- `test:cli` kör riktiga end-to-end-tester med CLI + UI (tmux + cloudflared + Playwright).
- Sandlådetestet Daytona i `test:cli` läser sina inställningar endast från en `.env`-fil i en `termbridge-test-app`-katalog intill det här repot (`../termbridge-test-app/.env`). Det körs när filen anger `TERMBRIDGE_E2E_DAYTONA=1` och `TERMBRIDGE_DAYTONA_API_KEY`. Ange ett repo där som går att klona med `TERMBRIDGE_SANDBOX_REPO`; standardtestrepot är privat och kräver också `TERMBRIDGE_SANDBOX_GIT_USERNAME` och `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Dokumentation

Dokumentationen består av vanliga Markdown-filer i `docs/`, med frontmatter på varje sida och `meta.json`-filer som anger navigeringsordningen. Den publiceras på [termbridge.dev](https://termbridge.inline0.dev/sv/). Validera den med:

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

Dokumentationsflödet kör samma kontroll på pull requests som ändrar `docs/`.
