跳到內容

路由圖

應用程式外殼(ControlCenterLayout)透過 ShellRoute 包住每一個工作區內的路由。外殼內的每個目的地都帶有工作區前置字串——/workspaces/:workspaceId/…——而 URL 中的工作區 id 是作用中工作區的單一事實來源。 只有情境之前的介面沒有前置字串:/splash、/onboarding、/signed-out 與單獨的 /workspaces 選擇器,這些全都是全螢幕且位於外殼之外。

這道閘門在已登入的使用者至少連接了一個託管平台、且至少存在一個工作區時即告完備。

憑證遺失與設定未完成是兩個不同的畫面,而區分依據是從呼叫者自己的 identity.me 讀出的 users.onboarding_finished_at——絕不是「工作區存在」,因為當有人被邀請進入一個自己從未建立的工作區時,這個判準馬上就錯了。在沒有連接任何託管平台的情況下,已完成入門引導的帳號會前往 /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> 單一空間;m 會深層連結至某則訊息,並在開啟時被取用一次
/tickets — 工單看板
/tickets/:ticketId — 工單主從檢視
/projects/:projectId — 專案總覽
/pull-requests ?repo=<owner/name> PR 清單;repo 會在左側欄中選取該儲存庫
/pull-requests/compose ?space=<spaceId> 撰寫新的 pull request;space 指名其隔離工作樹提供該分支的空間
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> PR 詳細資料與差異檢視器;comment 是某一則留言的數字 REST id
/pipelines — 管線執行清單
/pipelines/run ?templateId=<id> 手動執行啟動器
/pipelines/:runId — 管線執行詳細資料(步驟時間軸)
/plans — Plan Studio 中樞:進行中的計畫、計畫文件、playbook
/plans/:kind/:id — 單一計畫的 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/——因為該分段說明了變更會影響到誰。有兩條路徑早於命名空間機制,在 URL 中不帶範圍:/settings/memory 與 /settings/pipelines。

路徑 畫面
/settings/you/appearance 佈景主題、語言、排版、編輯器佈景主題(設定的預設頁)
/settings/you/notifications 各事件的切換開關、勿擾時段
/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 代理權限:護欄矩陣與假設情境探測器
/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 順序與這三個範圍。它不會走訪每一個已登錄的 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