
# Développement

## Prérequis

- **Bun** pour les installations dans l’espace de travail et les scripts
- **Node.js 20+**
- **tmux** et **cloudflared** pour les tests de bout en bout
- **Daytona API clé + identifiants git** pour le test d’intégration du bac à sable (facultatif)
- **Playwright** pour les tests de bout en bout UI

## Installation

```bash
bun install
```

## Lancer l'application

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

Cette commande compile CLI, démarre le serveur local sur le port `8787` (remplacez-le avec `TERMBRIDGE_DEV_PORT`) dans la session tmux `codex` (remplacez-la avec `TERMBRIDGE_DEV_SESSION`), puis lance le proxy de développement Vite UI, qui redirige `/__tb` (WebSockets compris) vers ce serveur. Elle affiche un URL de connexion de développement à ouvrir dans le navigateur. Définissez `TERMBRIDGE_SKIP_BUILD=1` pour ignorer la compilation CLI.

### Plusieurs sessions

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

Ou utilisez le raccourci :

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

### Mode de cookie local

`dev:beam` définit `TERMBRIDGE_INSECURE_COOKIE=1` sauf si vous l'avez déjà fait, afin que les cookies de session fonctionnent en HTTP non chiffré. Si vous exécutez directement CLI sans HTTPS, définissez-le explicitement :

```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` exécute les tests unitaires et d'intégration avec une couverture de 100 %.
- `test:cli` exécute de vrais tests de bout en bout CLI + UI (tmux + cloudflared + Playwright).
- Le test de l'environnement isolé Daytona dans `test:cli` lit sa configuration uniquement depuis un fichier `.env` dans un répertoire `termbridge-test-app` voisin de ce dépôt (`../termbridge-test-app/.env`). Il s'exécute lorsque ce fichier définit `TERMBRIDGE_E2E_DAYTONA=1` et `TERMBRIDGE_DAYTONA_API_KEY`. Définissez-y `TERMBRIDGE_SANDBOX_REPO` sur un dépôt que vous pouvez cloner ; le dépôt de test par défaut est privé et nécessite aussi `TERMBRIDGE_SANDBOX_GIT_USERNAME` et `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Documentation

La documentation est composée de fichiers Markdown simples dans `docs/`, avec des métadonnées d'en-tête sur chaque page et des fichiers `meta.json` qui définissent l'ordre de navigation. Elle est publiée sur [termbridge.dev](https://termbridge.inline0.dev/fr/). Validez-la avec :

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

Le processus de contenu de la documentation exécute la même vérification sur les demandes de fusion qui modifient `docs/`.
