
# Sviluppo

## Requisiti

- **Bun** per installazioni e script nell’area di lavoro
- **Node.js 20+**
- **tmux** e **cloudflared** per i test end-to-end
- Chiave **Daytona API** e credenziali **git** per il test d’integrazione della sandbox (facoltativo)
- **Playwright** per i test e2e di UI

## Installazione

```bash
bun install
```

## Eseguire l'app

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

Compila CLI, avvia il server locale sulla porta `8787` (modificabile con `TERMBRIDGE_DEV_PORT`) con la sessione tmux `codex` (modificabile con `TERMBRIDGE_DEV_SESSION`) e avvia Vite dev UI, che inoltra `/__tb` (inclusi i WebSocket) a quel server. Stampa un URL di riscatto per lo sviluppo da aprire nel browser. Imposta `TERMBRIDGE_SKIP_BUILD=1` per saltare la compilazione CLI.

### Sessioni multiple

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

In alternativa, usa la scorciatoia:

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

### Modalità cookie locale

`dev:beam` imposta `TERMBRIDGE_INSECURE_COOKIE=1` a meno che non lo imposti tu, così i cookie di sessione funzionano tramite HTTP non crittografato. Quando esegui direttamente CLI senza HTTPS, impostalo esplicitamente:

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

## Test

```bash
bun run test
```

- `test:mocked` esegue i test unitari e d'integrazione con una copertura del 100%.
- `test:cli` esegue test e2e reali di CLI + UI (tmux + cloudflared + Playwright).
- Il test sandbox Daytona in `test:cli` legge le impostazioni solo da un file `.env` in una directory `termbridge-test-app` accanto a questo repository (`../termbridge-test-app/.env`). Viene eseguito quando il file imposta `TERMBRIDGE_E2E_DAYTONA=1` e `TERMBRIDGE_DAYTONA_API_KEY`. Imposta lì `TERMBRIDGE_SANDBOX_REPO` su un repository che puoi clonare; il repository di test predefinito è privato e richiede anche `TERMBRIDGE_SANDBOX_GIT_USERNAME` e `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Documentazione

I contenuti della documentazione sono file Markdown semplici in `docs/`, con frontmatter in ogni pagina e file `meta.json` per l'ordine di navigazione. Sono pubblicati su [termbridge.dev](https://termbridge.inline0.dev/it/). Convalidali con:

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

Il flusso di lavoro dei contenuti Docs esegue lo stesso controllo sulle pull request che modificano `docs/`.
