コンテンツへスキップ

開発

必要条件

  • ワークスペースのインストールとスクリプトには 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

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/ に変更があるプルリクエストに対して同じチェックを実行します。