Lewati ke konten

Peta rute

Shell aplikasi (ControlCenterLayout) membungkus setiap rute di dalam ruang kerja melalui ShellRoute. Setiap tujuan di dalam shell diberi prefiks ruang kerja — /workspaces/:workspaceId/… — dan id ruang kerja di URL adalah satu-satunya sumber kebenaran untuk ruang kerja aktif. Hanya permukaan pra-konteks yang tidak berprefiks: /splash, /onboarding, /signed-out, dan pemilih /workspaces kosong, semuanya layar penuh dan berada di luar shell.

Gerbangnya selesai ketika setidaknya satu forge terhubung untuk pengguna yang sudah masuk dan setidaknya satu ruang kerja ada.

Kredensial yang hilang dan penyiapan yang belum selesai adalah dua layar yang berbeda, dan pembedanya adalah users.onboarding_finished_at yang dibaca dari identity.me milik pemanggil itu sendiri — bukan “ruang kerja ada”, yang langsung keliru begitu seseorang diundang ke ruang kerja yang tidak pernah ia buat. Tanpa forge yang terhubung, akun yang sudah menyelesaikan onboarding menuju /signed-out untuk autentikasi ulang; akun yang belum menuju /onboarding. Selama flag itu masih belum diketahui, penjaga menahan splash alih-alih menebak, karena ia tidak pernah mengalihkan kembali keluar dari onboarding.

Jalur Layar
/splash Splash awal yang menyelesaikan gerbang onboarding
/onboarding Hubungkan forge, buat atau gabung ruang kerja, sandbox, adapter bawaan, lalu suara. Langkah ruang kerja dilewati jika akun sudah menjadi anggota salah satunya
/signed-out Autentikasi ulang: kartu koneksi forge yang sama seperti yang dirender Pengaturan, tanpa bilah langkah dan tanpa tombol lanjutkan — router keluar sendiri begitu sebuah forge melapor
/workspaces Daftar dan pemilih ruang kerja
/workspaces/:workspaceId Dialihkan ke /workspaces/:workspaceId/inbox

Jalur di bawah ini menghilangkan prefiks /workspaces/:workspaceId.

Jalur Parameter kueri Layar
/inbox — Kotak masuk terpadu: PR yang diklasifikasikan menurut siklus hidup tinjauan plus pekerjaan non-PR yang memblokir operator. Rute pendaratan pasca-penjaga; /workspaces/:workspaceId kosong dialihkan ke sini
/spaces — Permukaan space, tanpa space yang dipilih
/spaces/:spaceId ?m=<messageId>, ?tab=<key> Satu space; m menautkan dalam ke sebuah pesan dan dikonsumsi sekali saat dibuka
/tickets — Papan tiket
/tickets/:ticketId — Master-detail tiket
/projects/:projectId — Ringkasan proyek
/pull-requests ?repo=<owner/name> Daftar PR; repo memilih repositori itu di rel kiri
/pull-requests/compose ?space=<spaceId> Susun pull request baru; space menamai space yang worktree terisolasinya memasok branch
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> Detail PR dengan penampil diff; comment adalah id REST numerik dari sebuah komentar
/pipelines — Daftar eksekusi pipeline
/pipelines/run ?templateId=<id> Peluncur eksekusi manual
/pipelines/:runId — Detail eksekusi pipeline (linimasa langkah)
/plans — Pusat Plan Studio: rencana aktif, dokumen rencana, playbook
/plans/:kind/:id — Plan Studio untuk satu rencana; kind adalah orchestration atau document
/meetings — Daftar rapat
/meetings/record — Layar perekaman rapat langsung
/meetings/:meetingId — Detail rapat: catatan, transkrip, item tindakan, keputusan
/calendar — Kalender: tampilan bulan, minggu, dan agenda
/calendar/:eventId — Detail acara kalender (rute saudara; berbagi kunci halaman kalender)
/newsfeed — Daftar umpan berita
/newsfeed/article/:articleId — Pembaca artikel
/observability — Pusat observabilitas: tab Penggunaan, Wawasan, Langsung, dan Kualitas di atas umpan log eksekusi ruang kerja. Secara bawaan membuka tab Penggunaan
/users/:login — Profil pengguna GitHub
/teams/:organization/:slug — Profil tim organisasi GitHub
/api-keys — Manajemen kunci API. Tidak ada titik masuk navigasi — hanya dapat dijangkau lewat URL
/settings/… — Layar Pengaturan (di bawah)

Percakapan dan thread tidak punya rute sendiri — thread adalah percakapan di dalam /spaces/:spaceId, yang dibuka sebagai tab editor alih-alih dialamatkan lewat URL.

Tidak ada rute /dashboard dan tidak ada layar dasbor. Permukaan analitiknya adalah /observability, yang dicapai dari footer bilah sisi.

Tidak ada item bilah sisi “Plans”. Plan Studio terbuka sebagai tab editor dari baris rencana di percakapan yang menghasilkannya; /plans dan /plans/:kind/:id adalah tautan dalam.

/observability dan /pull-requests/compose tidak punya entri di registri judul rute atau breadcrumb, sehingga keduanya menampilkan nama aplikasi saja di judul jendela dan tanpa jejak breadcrumb.

/settings dialihkan ke /settings/you/appearance. Tombol pengaturan di bilah sisi dan Cmd/Ctrl + , keduanya menuju /settings/you/appearance.

Jalur Pengaturan diberi ruang nama berdasarkan cakupan — you/, workspace/, server/ — karena segmen itu menyatakan siapa yang terpengaruh oleh suatu perubahan. Dua jalur mendahului pemberian ruang nama tersebut dan tidak bercakupan di URL: /settings/memory dan /settings/pipelines.

Jalur Layar
/settings/you/appearance Tema, bahasa, tipografi, tema editor (halaman pendaratan Pengaturan)
/settings/you/notifications Toggle per peristiwa, jam tenang
/settings/you/keybindings Referensi pintasan keyboard (hanya-baca)
/settings/you/audio Mikrofon, dikte, deteksi rapat, dan keluaran soundscape
/settings/you/devices Ponsel yang dipasangkan dan kontrol jarak jauh
/settings/you/newsfeed Manajemen umpan: sumber, penyegaran, status dibaca
Jalur Layar
/settings/workspace/profile Profil dan identitas di ruang kerja ini: nama, penulis git, hosting kode, kalender
/settings/workspace/general Nama, logo, glob rahasia, konkurensi tinjauan, penamaan branch, kesehatan sinkronisasi, jembatan chat, zona berbahaya
/settings/workspace/meetings Templat catatan rapat dan profil suara tersimpan
/settings/workspace/members Daftar anggota, undangan, jejak audit. Jejak audit dipaginasi dengan ?cursor= opsional
/settings/workspace/repositories Repositori yang terdaftar di ruang kerja ini
/settings/workspace/agents Identitas agen yang terdaftar
/settings/workspace/skills Konfigurasi skill
/settings/memory Memori ruang kerja: fakta, kebijakan, graf pengetahuan
/settings/workspace/permissions Izin agen: matriks pagar pengaman dan uji “Bagaimana jika?”
/settings/pipelines Templat pipeline
/settings/pipelines/:templateId Editor templat pipeline (kanvas seret-lepas)
Jalur Layar
/settings/server/connection Koneksi dan status
/settings/server/sso Masuk tunggal (SAML, OIDC, provisi SCIM)
/settings/server/providers Penyedia model dan adapter
/settings/server/mcp Server MCP bawaan dan eksternal
/settings/server/voice Model suara dan rapat (ASR, diarisasi)
/settings/server/rigs Rigs: apa yang dapat di-boot host ini, image dasar, image kustom, mesin yang berjalan
/settings/server/sandbox Hibah eksekusi sandbox: program yang boleh dijalankan agen dari salinan kerja repositori Anda
/settings/server/diagnostics Diagnostik dan privasi: sandboxing, embedding, logging, pelaporan crash
/settings/server/backup Cadangan dan pemulihan: snapshot instalasi, ekspor per ruang kerja, impor, dan penghapusan
/settings/server/about Tentang dan pembaruan

kSettingsNav di lib/features/settings/settings_nav.dart adalah satu-satunya sumber kebenaran untuk daftar ini. settings_nav_test.dart mematok id unik, rute unik, urutan J/K yang diratakan, dan ketiga cakupan. Pengujian itu tidak menelusuri setiap GoRoute yang terdaftar.

Aspek Berkas
Router lib/router/app_router.dart
Pembangun rute lib/router/routes.dart
Penjaga autentikasi lib/router/guards.dart
Gerbang onboarding lib/features/auth/providers/onboarding_providers.dart
Navigasi Pengaturan lib/features/settings/settings_nav.dart