コンテンツにスキップ

ルートマップ

アプリシェル(ControlCenterLayout)は、ShellRoute を介してワークスペース内のすべてのルートをラップします。シェル内のすべての遷移先にはワークスペースのプレフィックスが付き — /workspaces/:workspaceId/… — URL 内のワークスペース id が、アクティブなワークスペースの唯一の信頼できる情報源です。 プレフィックスが付かないのは、コンテキスト確立前のサーフェスだけです。すなわち /splash、/onboarding、/signed-out、および素の /workspaces ピッカーで、いずれも全画面表示でシェルの外側にあります。

ゲートが完了するのは、サインイン中のユーザーに対して少なくとも 1 つのコードホストが接続され、かつ少なくとも 1 つのワークスペースが存在するときです。

資格情報の欠如とセットアップの欠如は別の画面であり、その判別基準は、呼び出し元自身の identity.me から読み取る users.onboarding_finished_at です — 「ワークスペースが存在するかどうか」では決してありません。これは、自分が作成していないワークスペースに招待されたその瞬間に誤りになります。コードホストが 1 つも接続されていない場合、オンボーディングを完了済みのアカウントは再認証のために /signed-out へ進み、未完了のアカウントは /onboarding へ進みます。フラグがまだ不明な間は、ガードは推測せずにスプラッシュを保持します。オンボーディングから外へ戻すリダイレクトを決して行わないためです。

パス 画面
/splash オンボーディングゲートを解決する起動スプラッシュ
/onboarding コードホストへの接続、ワークスペースの作成または参加、サンドボックス、既定のアダプター、続いて音声。アカウントがすでにワークスペースに所属している場合、ワークスペースのステップは省略されます
/signed-out 再認証: 設定画面が描画するのと同じコードホスト接続カードを、ステップバーも続行ボタンもなしで表示します。コードホストが応答を返すと、ルーターが自ら画面を離れます
/workspaces ワークスペースの一覧とピッカー
/workspaces/:workspaceId /workspaces/:workspaceId/inbox へリダイレクトします

以下のパスでは /workspaces/:workspaceId プレフィックスを省略しています。

パス クエリパラメーター 画面
/inbox — 統合受信トレイ: レビューライフサイクルで分類された PR と、オペレーターをブロックしている PR 以外の作業。ガード通過後のランディングルートで、素の /workspaces/:workspaceId はここへリダイレクトします
/spaces — スペースサーフェス。スペースは未選択
/spaces/:spaceId ?m=<messageId>, ?tab=<key> 1 つのスペース。m はメッセージへのディープリンクで、開いたときに一度だけ消費されます
/tickets — チケットボード
/tickets/:ticketId — チケットのマスター/詳細
/projects/:projectId — プロジェクトの概要
/pull-requests ?repo=<owner/name> PR 一覧。repo は左レールでそのリポジトリを選択します
/pull-requests/compose ?space=<spaceId> 新しいプルリクエストの作成。space は、分離されたワークツリーがブランチを提供するスペースを指定します
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> diff ビューアー付きの PR 詳細。comment は 1 件のコメントの数値 REST id です
/pipelines — パイプライン実行の一覧
/pipelines/run ?templateId=<id> 手動実行ランチャー
/pipelines/:runId — パイプライン実行の詳細(ステップタイムライン)
/plans — Plan Studio ハブ: アクティブなプラン、プランドキュメント、プレイブック
/plans/:kind/:id — 1 つのプランの Plan Studio。kind は orchestration または document
/meetings — ミーティングの一覧
/meetings/record — ライブミーティングの録画画面
/meetings/:meetingId — ミーティングの詳細: ノート、文字起こし、アクションアイテム、決定事項
/calendar — カレンダー: 月、週、アジェンダの各ビュー
/calendar/:eventId — カレンダーイベントの詳細(兄弟ルート。カレンダーページのキーを共有)
/newsfeed — ニュースフィードの一覧
/newsfeed/article/:articleId — 記事リーダー
/observability — オブザーバビリティハブ: ワークスペースの実行ログフィード上に使用量、インサイト、ライブ、品質のタブ。既定では使用量タブ
/users/:login — GitHub ユーザープロフィール
/teams/:organization/:slug — GitHub 組織のチームプロフィール
/api-keys — API キー管理。ナビゲーションの入口はありません — URL からのみ到達できます
/settings/… — 設定画面(以下)

会話とスレッドには専用のルートがありません — スレッドは /spaces/:spaceId 内の会話であり、URL で指定するのではなくエディタータブとして開かれます。

/dashboard ルートは存在せず、ダッシュボード画面もありません。分析サーフェスは /observability で、サイドバーのフッターから到達します。

サイドバーに「プラン」の項目はありません。 Plan Studio は、そのプランを生み出した会話内のプランの行からエディタータブとして開きます。/plans と /plans/:kind/:id はディープリンクです。

/observability と /pull-requests/compose は、ルートタイトルやパンくずのレジストリにエントリがないため、どちらもウィンドウタイトルにはアプリ名だけを表示し、パンくずの階層も表示しません。

/settings は /settings/you/appearance へリダイレクトします。サイドバーの設定ボタンと Cmd/Ctrl + , は、どちらも /settings/you/appearance へ移動します。

設定のパスはスコープ — you/、workspace/、server/ — で名前空間が分かれています。これは、そのセグメントが変更の影響範囲を表すためです。2 つのパスはこの名前空間化より前からあり、URL 内でスコープ化されていません: /settings/memory と /settings/pipelines です。

パス 画面
/settings/you/appearance テーマ、言語、タイポグラフィ、エディターテーマ(設定のランディング)
/settings/you/notifications イベントごとのトグル、Quiet hours
/settings/you/keybindings キーボードショートカットのリファレンス(読み取り専用)
/settings/you/audio マイク、ディクテーション、ミーティング検出、サウンドスケープ出力
/settings/you/devices ペアリング済みのスマートフォンとリモートコントロール
/settings/you/newsfeed フィード管理: ソース、更新、既読状態
パス 画面
/settings/workspace/profile このワークスペースにおけるプロフィールとアイデンティティ: 名前、git 作者、コードホスティング、カレンダー
/settings/workspace/general 名前、ロゴ、シークレットの glob、レビュー同時実行数、ブランチ命名、同期ヘルス、チャットブリッジ、危険ゾーン
/settings/workspace/meetings ミーティングノートのテンプレートと保存済みの音声プロフィール
/settings/workspace/members メンバー名簿、招待、監査証跡。監査証跡は省略可能な ?cursor= でページネーションします
/settings/workspace/repositories このワークスペースに登録されたリポジトリ
/settings/workspace/agents 登録済みのエージェントアイデンティティ
/settings/workspace/skills スキルの設定
/settings/memory ワークスペースメモリ: ファクト、ポリシー、ナレッジグラフ
/settings/workspace/permissions エージェントの権限: ガードレールマトリクスと what-if プローブ
/settings/pipelines パイプラインテンプレート
/settings/pipelines/:templateId パイプラインテンプレートエディター(ドラッグ&ドロップキャンバス)
パス 画面
/settings/server/connection 接続とステータス
/settings/server/sso シングルサインオン(SAML、OIDC、SCIM プロビジョニング)
/settings/server/providers モデルプロバイダーとアダプター
/settings/server/mcp 組み込みおよび外部の MCP サーバー
/settings/server/voice 音声とミーティングのモデル(ASR、話者分離)
/settings/server/rigs リグ: このホストが起動できるもの、ベースイメージ、カスタムイメージ、実行中のマシン
/settings/server/sandbox サンドボックス実行許可: エージェントがあなたのリポジトリの作業コピーから実行できるプログラム
/settings/server/diagnostics 診断とプライバシー: サンドボックス化、埋め込み、ログ、クラッシュレポート
/settings/server/backup バックアップと復元: インストールのスナップショット、ワークスペース単位のエクスポート、インポート、削除
/settings/server/about このアプリについてと更新

lib/features/settings/settings_nav.dart の kSettingsNav が、この一覧の唯一の信頼できる情報源です。settings_nav_test.dart は、一意な id、一意なルート、フラット化した J/K 順序、3 つのスコープを固定します。登録されたすべての GoRoute を走査するわけではありません。

関心事項 ファイル
ルーター lib/router/app_router.dart
ルートビルダー lib/router/routes.dart
認証ガード lib/router/guards.dart
オンボーディングゲート lib/features/auth/providers/onboarding_providers.dart
設定ナビゲーション lib/features/settings/settings_nav.dart