
# 开发

## 要求

- **Bun** 用于工作区安装和脚本
- **Node.js 20+**
- **tmux** 和 **cloudflared** 用于端到端测试
- **Daytona API 密钥 + git 凭据** 用于沙盒集成测试（可选）
- **Playwright** 用于 UI 端到端测试

## 安装

```bash
bun install
```

## 运行应用

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

此命令会构建 CLI，在端口 `8787` 上启动本地服务器（可通过 `TERMBRIDGE_DEV_PORT` 覆盖），使用 tmux 会话 `codex`（可通过 `TERMBRIDGE_DEV_SESSION` 覆盖），并启动 Vite 开发 UI，将 `/__tb`（包括 WebSockets）代理到该服务器。它会打印一个开发兑换 URL，供你在浏览器中打开。设置 `TERMBRIDGE_SKIP_BUILD=1` 可跳过 CLI 构建。

### 多个会话

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

也可以使用快捷方式：

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

### 本地 Cookie 模式

`dev:beam` 会在你未自行设置时设置 `TERMBRIDGE_INSECURE_COOKIE=1`，因此会话 Cookie 可通过普通 HTTP 使用。直接运行 CLI 且不使用 HTTPS 时，请显式设置它：

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

## 测试

```bash
bun run test
```

- `test:mocked` 使用 100% 覆盖率运行单元测试和集成测试。
- `test:cli` 运行真实的 CLI + UI 端到端测试（tmux + cloudflared + Playwright）。
- `test:cli` 中的 Daytona 沙盒测试只会从本仓库旁边 `termbridge-test-app` 目录中的 `.env` 文件读取设置（`../termbridge-test-app/.env`）。仅当该文件设置了 `TERMBRIDGE_E2E_DAYTONA=1` 和 `TERMBRIDGE_DAYTONA_API_KEY` 时才会运行。请在那里将 `TERMBRIDGE_SANDBOX_REPO` 设置为你可以克隆的仓库；默认测试仓库是私有仓库，还需要 `TERMBRIDGE_SANDBOX_GIT_USERNAME` 和 `TERMBRIDGE_SANDBOX_GIT_TOKEN`。

## 文档

文档是存放在 `docs/` 中的纯 Markdown 文件，每个页面都带有 frontmatter，并使用 `meta.json` 文件指定导航顺序。文档发布于 [termbridge.dev](https://termbridge.inline0.dev/zh/)。使用以下命令进行验证：

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

对于涉及 `docs/` 的拉取请求，文档内容工作流会运行相同的检查。
