開発
必要条件
- ワークスペースのインストールとスクリプトには Bun
- Node.js 20+
- エンドツーエンドテストには tmux と cloudflared
- サンドボックス統合テストには Daytona API key + git credentials(任意)
- UI のE2Eテストには Playwright
インストール
シェル
bun install
アプリの実行
シェル
bun run dev:beam
これにより CLI がビルドされ、ポート 8787(TERMBRIDGE_DEV_PORT で変更可能)でローカルサーバーがtmuxセッション codex(TERMBRIDGE_DEV_SESSION で変更可能)とともに起動します。また、Vite開発 UI も起動し、/__tb(WebSocketを含む)をそのサーバーにプロキシします。ブラウザーで開くための開発用redeem URL が表示されます。TERMBRIDGE_SKIP_BUILD=1 を設定すると CLI ビルドをスキップできます。
複数セッション
シェル
TERMBRIDGE_SESSIONS=2 bun run dev:beam
または、ショートカットを使います。
シェル
bun run dev:beam:multi
ローカルCookieモード
dev:beam は、独自に設定しない限り TERMBRIDGE_INSECURE_COOKIE=1 を設定するため、通常の HTTP でもセッションCookieが機能します。HTTPS を使わずに CLI を直接実行する場合は、明示的に設定してください。
シェル
TERMBRIDGE_INSECURE_COOKIE=1 node cli/dist/bin.js --no-tunnel --public-url http://127.0.0.1:8080 --port 8080
テスト
シェル
bun run test
test:mockedは、カバレッジ100%で単体テストと統合テストを実行します。test:cliは、実際の CLI と UI を使ったE2Eテストを実行します(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 ファイルで、各ページにフロントマターがあり、ナビゲーション順序は meta.json ファイルで指定します。termbridge.dev で公開されています。次のコマンドで検証できます。
シェル
node scripts/check-docs-content.mjs --root docs --expected-docs 16 --expected-nav 3
Docsコンテンツのワークフローでは、docs/ に変更があるプルリクエストに対して同じチェックを実行します。