Przejdź do głównej zawartości

Mapa tras

Powłoka aplikacji (ControlCenterLayout) opakowuje każdą trasę wewnątrz obszaru roboczego przez ShellRoute. Każde miejsce docelowe w powłoce ma prefiks obszaru roboczego — /workspaces/:workspaceId/… — a identyfikator obszaru roboczego w adresie URL jest jedynym źródłem prawdy o aktywnym obszarze roboczym. Tylko widoki sprzed kontekstu nie mają prefiksu: /splash, /onboarding, /signed-out oraz samo /workspaces (wybór obszaru roboczego) — wszystkie na pełnym ekranie i poza powłoką.

Brama jest domknięta, gdy dla zalogowanego użytkownika połączono co najmniej jedno forge i istnieje co najmniej jeden obszar roboczy.

Brak poświadczenia i brak konfiguracji to różne ekrany, a rozstrzyga o tym users.onboarding_finished_at odczytane z własnego identity.me wywołującego — nigdy „obszary robocze istnieją”, co jest błędne w chwili, gdy ktoś zostanie zaproszony do obszaru roboczego, którego nigdy nie utworzył. Gdy nie połączono żadnego forge, konto, które ukończyło onboarding, trafia do /signed-out, aby ponownie się uwierzytelnić; konto, które go nie ukończyło, trafia do /onboarding. Dopóki flaga pozostaje nieznana, strażnik trzyma ekran startowy, zamiast zgadywać, ponieważ nigdy nie przekierowuje z powrotem poza onboarding.

Ścieżka Ekran
/splash Ekran startowy, który rozstrzyga bramę onboardingu
/onboarding Połącz forge, utwórz obszar roboczy albo dołącz do niego, sandbox, domyślny adapter, a następnie głos. Krok z obszarem roboczym jest pomijany, gdy konto już do niego należy
/signed-out Ponowne uwierzytelnienie: ta sama karta połączeń z forge, którą renderują Ustawienia, bez paska kroków i przycisku kontynuowania — router wychodzi sam, gdy forge się zgłosi
/workspaces Lista i wybór obszarów roboczych
/workspaces/:workspaceId Przekierowuje do /workspaces/:workspaceId/inbox

Poniższe ścieżki pomijają prefiks /workspaces/:workspaceId.

Ścieżka Parametry zapytania Ekran
/inbox — Ujednolicona skrzynka: PR-y sklasyfikowane według cyklu życia recenzji oraz praca poza PR-ami blokująca operatora. Trasa docelowa po przejściu strażnika; samo /workspaces/:workspaceId przekierowuje tutaj
/spaces — Powierzchnia przestrzeni, bez wybranej przestrzeni
/spaces/:spaceId ?m=<messageId>, ?tab=<key> Jedna przestrzeń; m prowadzi bezpośrednim linkiem do wiadomości i jest zużywane przy pierwszym otwarciu
/tickets — Tablica zgłoszeń
/tickets/:ticketId — Zgłoszenie w układzie lista–szczegóły
/projects/:projectId — Przegląd projektu
/pull-requests ?repo=<owner/name> Lista PR-ów; repo wybiera to repozytorium na lewej szynie
/pull-requests/compose ?space=<spaceId> Tworzenie nowego pull requesta; space wskazuje przestrzeń, której odizolowany worktree dostarcza gałąź
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> Szczegóły PR-a z przeglądarką diffów; comment to numeryczny identyfikator REST jednego komentarza
/pipelines — Lista uruchomień potoków
/pipelines/run ?templateId=<id> Ekran ręcznego uruchamiania potoku
/pipelines/:runId — Szczegóły uruchomienia potoku (os czasu kroków)
/plans — Centrum Plan Studio: aktywne plany, dokumenty planów, playbooki
/plans/:kind/:id — Plan Studio dla jednego planu; kind to orchestration albo document
/meetings — Lista spotkań
/meetings/record — Ekran nagrywania spotkania na żywo
/meetings/:meetingId — Szczegóły spotkania: notatki, transkrypcja, zadania do wykonania, decyzje
/calendar — Kalendarz: widoki miesiąca, tygodnia i agendy
/calendar/:eventId — Szczegóły wydarzenia w kalendarzu (trasa siostrzana; współdzieli klucz strony kalendarza)
/newsfeed — Lista newsfeeda
/newsfeed/article/:articleId — Czytnik artykułów
/observability — Centrum obserwowalności: karty Użycie, Analizy, Na żywo i Jakość nad strumieniem dzienników uruchomień obszaru roboczego. Domyślnie otwiera kartę Użycie
/users/:login — Profil użytkownika GitHub
/teams/:organization/:slug — Profil zespołu organizacji GitHub
/api-keys — Zarządzanie kluczami API. Brak punktu wejścia w nawigacji — dostępne tylko przez URL
/settings/… — Ekrany ustawień (poniżej)

Rozmowy i wątki nie mają własnej trasy — wątek to rozmowa wewnątrz /spaces/:spaceId, otwierana jako karta edytora, a nie adresowana przez URL.

Nie istnieje trasa /dashboard ani ekran pulpitu. Powierzchnią analityczną jest /observability, dostępna ze stopki paska bocznego.

W pasku bocznym nie ma pozycji „Plany”. Plan Studio otwiera się jako karta edytora z wiersza planu w rozmowie, która go utworzyła; /plans i /plans/:kind/:id to linki bezpośrednie.

/observability i /pull-requests/compose nie mają wpisu w rejestrach tytułów tras ani ścieżek nawigacyjnych, więc oba pokazują w tytule okna samą nazwę aplikacji i żadnej ścieżki nawigacyjnej.

/settings przekierowuje do /settings/you/appearance. Przycisk ustawień na pasku bocznym i Cmd/Ctrl + , prowadzą do /settings/you/appearance.

Ścieżki ustawień są podzielone przestrzeniami nazw według zasięgu — you/, workspace/, server/ — ponieważ segment mówi, kogo dotyczy zmiana. Dwie ścieżki powstały przed wprowadzeniem przestrzeni nazw i nie mają zasięgu w adresie URL: /settings/memory i /settings/pipelines.

Ścieżka Ekran
/settings/you/appearance Motyw, język, typografia, motyw edytora (ekran docelowy ustawień)
/settings/you/notifications Przełączniki dla poszczególnych zdarzeń, godziny ciszy
/settings/you/keybindings Informacje o skrótach klawiszowych (tylko do odczytu)
/settings/you/audio Mikrofon, dyktowanie, wykrywanie spotkań i wyjście pejzażu dźwiękowego
/settings/you/devices Sparowane telefony i sterowanie zdalne
/settings/you/newsfeed Zarządzanie kanałem: źródła, odświeżanie, stan przeczytania
Ścieżka Ekran
/settings/workspace/profile Profil i tożsamość w tym obszarze roboczym: nazwa, autor git, hosting kodu, kalendarz
/settings/workspace/general Nazwa, logo, wzorce ścieżek sekretów, rozrzut recenzji, nazewnictwo gałęzi, stan synchronizacji, mostki czatu, strefa niebezpieczeństwa
/settings/workspace/meetings Szablony notatek ze spotkań i zapisane profile głosowe
/settings/workspace/members Lista członków, zaproszenia, dziennik audytu. Dziennik audytu dzieli się na strony za pomocą opcjonalnego ?cursor=
/settings/workspace/repositories Repozytoria zarejestrowane w tym obszarze roboczym
/settings/workspace/agents Zarejestrowane tożsamości agentów
/settings/workspace/skills Konfiguracja skilli
/settings/memory Pamięć obszaru roboczego: fakty, zasady, graf wiedzy
/settings/workspace/permissions Uprawnienia agentów: macierz guardraili i sonda A co jeśli?
/settings/pipelines Szablony potoków
/settings/pipelines/:templateId Edytor szablonu potoku (kanwa przeciągnij-i-upuść)
Ścieżka Ekran
/settings/server/connection Połączenie i status
/settings/server/sso Logowanie jednokrotne (SAML, OIDC, provisionowanie SCIM)
/settings/server/providers Dostawcy modeli i adaptery
/settings/server/mcp Wbudowane i zewnętrzne serwery MCP
/settings/server/voice Modele głosu i spotkań (ASR, diaryzacja)
/settings/server/rigs Rigi: co ten host potrafi uruchomić, obrazy bazowe, obrazy niestandardowe, działające maszyny
/settings/server/sandbox Uprawnienia wykonywania w sandboxie: programy, które agenci mogą uruchamiać z kopii roboczej Twoich repozytoriów
/settings/server/diagnostics Diagnostyka i prywatność: sandbox, osadzanie, logowanie, zgłaszanie awarii
/settings/server/backup Kopia zapasowa i przywracanie: migawki instalacji, eksport pojedynczego obszaru roboczego, import i usuwanie
/settings/server/about O aplikacji i aktualizacje

kSettingsNav w lib/features/settings/settings_nav.dart jest jedynym źródłem prawdy dla tej listy. settings_nav_test.dart przypina unikalne identyfikatory, unikalne trasy, spłaszczoną kolejność J/K oraz trzy zasięgi. Nie przechodzi przez każdą zarejestrowaną trasę GoRoute.

Zagadnienie Plik
Router lib/router/app_router.dart
Funkcje budujące trasy lib/router/routes.dart
Strażnicy uwierzytelniania lib/router/guards.dart
Brama onboardingu lib/features/auth/providers/onboarding_providers.dart
Nawigacja ustawień lib/features/settings/settings_nav.dart