
# Desarrollo

## Requisitos

- **Bun** para instalaciones y scripts del espacio de trabajo
- **Node.js 20+**
- **tmux** y **cloudflared** para pruebas de extremo a extremo
- **Clave Daytona API + credenciales de git** para la prueba de integración con el entorno aislado (opcional)
- **Playwright** para pruebas e2e de UI

## Instalación

```bash
bun install
```

## Ejecutar la aplicación

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

Esto compila CLI, inicia el servidor local en el puerto `8787` (se puede cambiar con `TERMBRIDGE_DEV_PORT`) con la sesión de tmux `codex` (se puede cambiar con `TERMBRIDGE_DEV_SESSION`) y lanza el proxy de desarrollo de Vite UI, que reenvía `/__tb` (incluidos los WebSockets) a ese servidor. Muestra un URL de canje de desarrollo para abrirlo en el navegador. Define `TERMBRIDGE_SKIP_BUILD=1` para omitir la compilación de CLI.

### Varias sesiones

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

O usa el atajo:

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

### Modo de cookie local

`dev:beam` establece `TERMBRIDGE_INSECURE_COOKIE=1` salvo que lo definas tú, así que las cookies de sesión funcionan con HTTP sin cifrar. Si ejecutas CLI directamente sin HTTPS, establécelo explícitamente:

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

## Pruebas

```bash
bun run test
```

- `test:mocked` ejecuta pruebas unitarias y de integración con una cobertura del 100 %.
- `test:cli` ejecuta pruebas e2e reales de CLI + UI (tmux + cloudflared + Playwright).
- La prueba del sandbox de Daytona en `test:cli` lee sus ajustes únicamente de un archivo `.env` en un directorio `termbridge-test-app` junto a este repositorio (`../termbridge-test-app/.env`). Se ejecuta cuando ese archivo define `TERMBRIDGE_E2E_DAYTONA=1` y `TERMBRIDGE_DAYTONA_API_KEY`. Define allí `TERMBRIDGE_SANDBOX_REPO` con un repositorio que puedas clonar; el repositorio de prueba predeterminado es privado y también requiere `TERMBRIDGE_SANDBOX_GIT_USERNAME` y `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Documentación

La documentación consta de archivos Markdown simples en `docs/`, con metadatos iniciales en cada página y archivos `meta.json` que determinan el orden de navegación. Se publica en [termbridge.dev](https://termbridge.inline0.dev/es/). Valídala con:

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

El flujo de trabajo del contenido de Docs ejecuta la misma comprobación en las solicitudes de incorporación de cambios que modifican `docs/`.
