Sari la conținut

Hartă de rute

Shell-ul aplicației (ControlCenterLayout) învelește fiecare rută din interiorul unui spațiu de lucru printr-un ShellRoute. Fiecare destinație din shell are prefixul spațiului de lucru — /workspaces/:workspaceId/… — iar id-ul spațiului de lucru din URL este singura sursă de adevăr pentru spațiul de lucru activ. Doar suprafețele dinainte de context nu au prefix: /splash, /onboarding, /signed-out și selectorul simplu /workspaces, toate pe tot ecranul și în afara shell-ului.

Poarta este completă atunci când cel puțin un forge este conectat pentru utilizatorul autentificat și există cel puțin un spațiu de lucru.

O acreditare lipsă și o configurare lipsă sunt ecrane diferite, iar discriminatorul este users.onboarding_finished_at, citit din identity.me al apelantului — niciodată „există spații de lucru”, ceea ce este greșit din momentul în care cineva este invitat într-un spațiu de lucru pe care nu l-a creat. Fără niciun forge conectat, un cont care a trecut prin onboarding merge la /signed-out ca să se reautentifice; unul care nu a trecut merge la /onboarding. Cât timp indicatorul este încă necunoscut, garda ține splash-ul în loc să ghicească, pentru că nu redirecționează niciodată înapoi din onboarding.

Cale Ecran
/splash Splash-ul de pornire care rezolvă poarta de onboarding
/onboarding Conectează un forge, creează sau alătură-te unui spațiu de lucru, sandbox, adaptor implicit, apoi voce. Pasul de spațiu de lucru este omis atunci când contul aparține deja unuia
/signed-out Reautentificare: același card de conexiuni la forge pe care îl afișează Setări, fără bară de pași și fără buton de continuare — routerul pleacă singur odată ce un forge raportează
/workspaces Lista și selectorul de spații de lucru
/workspaces/:workspaceId Redirecționează către /workspaces/:workspaceId/inbox

Căile de mai jos omit prefixul /workspaces/:workspaceId.

Cale Parametri de interogare Ecran
/inbox — Inbox unificat: PR-uri clasificate după ciclul de viață al revizuirii, plus munca non-PR care îl blochează pe operator. Ruta pe care se aterizează după gardă; un /workspaces/:workspaceId simplu redirecționează aici
/spaces — Suprafața spațiilor, fără niciun spațiu selectat
/spaces/:spaceId ?m=<messageId>, ?tab=<key> Un singur spațiu; m face un link direct către un mesaj și este consumat o singură dată la deschidere
/tickets — Panoul de tichete
/tickets/:ticketId — Tichet în vizualizare listă-detaliu
/projects/:projectId — Prezentare generală a proiectului
/pull-requests ?repo=<owner/name> Lista de PR-uri; repo selectează acel repo în bara laterală din stânga
/pull-requests/compose ?space=<spaceId> Compune un pull request nou; space numește spațiul al cărui worktree izolat furnizează branch-ul
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> Detaliul PR-ului cu vizualizator de diff; comment este id-ul numeric REST al unui comentariu
/pipelines — Lista rulărilor de pipeline
/pipelines/run ?templateId=<id> Lansator de rulări manuale
/pipelines/:runId — Detaliul rulării de pipeline (cronologia pașilor)
/plans — Hub-ul Plan Studio: planuri active, documente de plan, playbook-uri
/plans/:kind/:id — Plan Studio pentru un singur plan; kind este orchestration sau document
/meetings — Lista întâlnirilor
/meetings/record — Ecranul de înregistrare a întâlnirii în direct
/meetings/:meetingId — Detaliul întâlnirii: note, transcriere, acțiuni, decizii
/calendar — Calendar: vizualizările pe lună, pe săptămână și agendă
/calendar/:eventId — Detaliul evenimentului de calendar (rută soră; partajează cheia paginii de calendar)
/newsfeed — Lista fluxului de știri
/newsfeed/article/:articleId — Cititor de articole
/observability — Hub-ul Observabilitate: filele Utilizare, Insights, Live și Calitate peste fluxul de jurnale de rulare al spațiului de lucru. Se deschide implicit pe fila Utilizare
/users/:login — Profilul de utilizator GitHub
/teams/:organization/:slug — Profilul echipei unei organizații GitHub
/api-keys — Gestionarea cheilor API. Fără punct de intrare în navigație — accesibilă doar prin URL
/settings/… — Ecranele de setări (mai jos)

Conversațiile și firele nu au o rută proprie — un fir este o conversație în interiorul /spaces/:spaceId, deschisă ca filă de editor, nu adresată prin URL.

Nu există nicio rută /dashboard și niciun ecran de dashboard. Suprafața de analiză este /observability, accesată din subsolul barei laterale.

Nu există niciun element „Planuri” în bara laterală. Plan Studio se deschide ca filă de editor din rândul planului, în conversația care l-a produs; /plans și /plans/:kind/:id sunt linkuri directe.

/observability și /pull-requests/compose nu au nicio intrare în registrele de titluri de rută sau de breadcrumb, așa că ambele afișează numele simplu al aplicației în titlul ferestrei și nicio urmă de breadcrumb.

/settings redirecționează către /settings/you/appearance. Atât butonul de setări din bara laterală, cât și Cmd/Ctrl + , duc la /settings/you/appearance.

Căile de setări sunt grupate pe domenii de aplicare — you/, workspace/, server/ — pentru că segmentul arată pe cine afectează o modificare. Două căi preced această grupare și nu au domeniu de aplicare în URL: /settings/memory și /settings/pipelines.

Cale Ecran
/settings/you/appearance Temă, limbă, tipografie, tema editorului (pagina de aterizare a setărilor)
/settings/you/notifications Comutatoare per eveniment, orele de liniște
/settings/you/keybindings Referință de scurtături de tastatură (doar în citire)
/settings/you/audio Microfon, dictare, detectarea întâlnirilor și ieșirea de peisaj sonor
/settings/you/devices Telefoane asociate și control remote
/settings/you/newsfeed Gestionarea fluxului: surse, reîmprospătare, stare de citire
Cale Ecran
/settings/workspace/profile Profilul și identitatea în acest spațiu de lucru: nume, autor git, găzduire de cod, calendar
/settings/workspace/general Nume, logo, globuri de secrete, concurența revizuirilor, denumirea branch-urilor, sănătatea sincronizării, punți de chat, zona periculoasă
/settings/workspace/meetings Șabloane de note de întâlnire și profiluri vocale salvate
/settings/workspace/members Lista membrilor, invitații, jurnal de audit. Jurnalul de audit se paginează cu ?cursor= opțional
/settings/workspace/repositories Repo-urile înregistrate în acest spațiu de lucru
/settings/workspace/agents Identitățile de agent înregistrate
/settings/workspace/skills Configurarea skill-urilor
/settings/memory Memoria spațiului de lucru: fapte, politici, graf de cunoștințe
/settings/workspace/permissions Permisiunile agenților: matricea de guardrail-uri și sonda „ce-ar fi dacă”
/settings/pipelines Șabloane de pipeline
/settings/pipelines/:templateId Editorul de șabloane de pipeline (pânză cu tragere și plasare)
Cale Ecran
/settings/server/connection Conexiune și stare
/settings/server/sso Autentificare unică (SAML, OIDC, provisionare SCIM)
/settings/server/providers Provideri de modele și adaptoare
/settings/server/mcp Servere MCP integrate și externe
/settings/server/voice Modele vocale și de întâlniri (ASR, diarizare)
/settings/server/rigs Stații: ce poate porni această gazdă, imagini de bază, imagini personalizate, mașini în rulare
/settings/server/sandbox Acordări de execuție în sandbox: programe pe care agenții le pot rula din copia lor de lucru a repo-urilor tale
/settings/server/diagnostics Diagnosticări și confidențialitate: sandbox, embedding, jurnalizare, raportarea crash-urilor
/settings/server/backup Backup și restaurare: snapshot-uri de instalare, export per spațiu de lucru, import și ștergere
/settings/server/about Despre și actualizări

kSettingsNav din lib/features/settings/settings_nav.dart este singura sursă de adevăr pentru această listă. settings_nav_test.dart fixează id-uri unice, rute unice, ordinea aplatizată J/K și cele trei domenii de aplicare. Nu parcurge fiecare GoRoute înregistrat.

Aspect Fișier
Router lib/router/app_router.dart
Constructorii de rute lib/router/routes.dart
Gărzile de autentificare lib/router/guards.dart
Poarta de onboarding lib/features/auth/providers/onboarding_providers.dart
Navigarea în setări lib/features/settings/settings_nav.dart