
# Desenvolvimento

## Requisitos

- **Bun** para instalações e scripts do espaço de trabalho
- **Node.js 20+**
- **tmux** e **cloudflared** para testes de ponta a ponta
- **Daytona API key + credenciais git** para o teste de integração do sandbox (opcional)
- **Playwright** para testes e2e de UI

## Instalação

```bash
bun install
```

## Executar o app

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

Isso compila o CLI, inicia o servidor local na porta `8787` (substitua com `TERMBRIDGE_DEV_PORT`) com a sessão tmux `codex` (substitua com `TERMBRIDGE_DEV_SESSION`) e inicia o Vite dev UI, que encaminha `/__tb` (incluindo WebSockets) para esse servidor. Ele exibe um URL de acesso de desenvolvimento para abrir no navegador. Defina `TERMBRIDGE_SKIP_BUILD=1` para ignorar a compilação CLI.

### Várias sessões

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

Ou use o atalho:

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

### Modo de cookie local

`dev:beam` define `TERMBRIDGE_INSECURE_COOKIE=1`, a menos que você o defina manualmente, para que os cookies de sessão funcionem em HTTP sem criptografia. Ao executar CLI diretamente, sem HTTPS, defina-o explicitamente:

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

## Testes

```bash
bun run test
```

- `test:mocked` executa testes de unidade/integração com cobertura de 100%.
- `test:cli` executa testes e2e reais de CLI + UI (tmux + cloudflared + Playwright).
- O teste de sandbox Daytona em `test:cli` lê as configurações somente de um arquivo `.env` em um diretório `termbridge-test-app` ao lado deste repositório (`../termbridge-test-app/.env`). Ele é executado quando esse arquivo define `TERMBRIDGE_E2E_DAYTONA=1` e `TERMBRIDGE_DAYTONA_API_KEY`. Defina `TERMBRIDGE_SANDBOX_REPO` nesse arquivo como um repositório que você possa clonar; o repositório de teste padrão é privado e também exige `TERMBRIDGE_SANDBOX_GIT_USERNAME` e `TERMBRIDGE_SANDBOX_GIT_TOKEN`.

## Documentação

O conteúdo da documentação consiste em arquivos simples Markdown em `docs/`, com metadados no início de cada página e arquivos `meta.json` que definem a ordem de navegação. A documentação é publicada em [termbridge.dev](https://termbridge.inline0.dev/pt/). Valide-a com:

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

O fluxo de trabalho de conteúdo da documentação executa a mesma verificação em solicitações de pull que alteram `docs/`.
