Zum Inhalt springen

Routenkarte

Die App-Shell (ControlCenterLayout) umschließt jede Route im Arbeitsbereich über eine ShellRoute. Jedes Ziel in der Shell trägt den Arbeitsbereich als Präfix — /workspaces/:workspaceId/… — und die Arbeitsbereichs-ID in der URL ist die einzige Quelle der Wahrheit für den aktiven Arbeitsbereich. Nur die Flächen vor dem Kontext haben kein Präfix: /splash, /onboarding, /signed-out und die nackte Auswahl /workspaces, alle im Vollbild und außerhalb der Shell.

Das Gate ist vollständig, wenn mindestens eine Forge für den angemeldeten User verbunden ist und mindestens ein Arbeitsbereich existiert.

Fehlende Zugangsdaten und ein fehlendes Setup sind verschiedene Bildschirme, und das Unterscheidungsmerkmal ist users.onboarding_finished_at, gelesen vom eigenen identity.me des Aufrufers — nie „Arbeitsbereiche existieren“, was in dem Moment falsch ist, in dem jemand in einen Arbeitsbereich eingeladen wird, den diese Person nie angelegt hat. Ohne verbundene Forge geht ein Konto, das das Onboarding abgeschlossen hat, nach /signed-out, um sich neu zu authentifizieren; eines, das es nicht abgeschlossen hat, nach /onboarding. Solange das Flag noch unbekannt ist, hält der Guard den Splash, statt zu raten, weil er nie aus dem Onboarding wieder herausleitet.

Pfad Bildschirm
/splash Start-Splash, der das Onboarding-Gate auflöst
/onboarding Forge verbinden, einen Arbeitsbereich anlegen oder beitreten, Sandbox, Standard-Adapter, dann Stimme. Der Schritt zum Arbeitsbereich entfällt, wenn das Konto schon zu einem gehört
/signed-out Neu authentifizieren: dieselbe Karte Code-Hosting, die die Einstellungen zeigen, ohne Schrittleiste und ohne Schaltfläche Weiter — der Router verlässt die Seite von selbst, sobald eine Forge sich meldet
/workspaces Liste und Auswahl der Arbeitsbereiche
/workspaces/:workspaceId Leitet um nach /workspaces/:workspaceId/inbox

Die Pfade unten lassen das Präfix /workspaces/:workspaceId weg.

Pfad Query-Parameter Bildschirm
/inbox — Einheitlicher Posteingang: Pull Requests nach Review-Lebenszyklus plus Arbeit außerhalb von PRs, die den Operator blockiert. Die Landeroute nach dem Guard; ein nacktes /workspaces/:workspaceId leitet hierher um
/spaces — Bereichsfläche, kein Bereich ausgewählt
/spaces/:spaceId ?m=<messageId>, ?tab=<key> Ein Bereich; m verlinkt direkt auf eine Nachricht und wird beim Öffnen einmal verbraucht
/tickets — Ticket-Board
/tickets/:ticketId — Ticket als Master-Detail
/projects/:projectId — Projektübersicht
/pull-requests ?repo=<owner/name> PR-Liste; repo wählt dieses Repository in der linken Leiste
/pull-requests/compose ?space=<spaceId> Eine neue Pull Request verfassen; space nennt den Bereich, dessen isolierter Worktree den Branch liefert
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> PR-Detail mit Diff-Ansicht; comment ist die numerische REST-ID eines Kommentars
/pipelines — Liste der Pipeline-Läufe
/pipelines/run ?templateId=<id> Start eines manuellen Laufs
/pipelines/:runId — Detail eines Pipeline-Laufs (Schritt-Zeitleiste)
/plans — Plan-Studio-Hub: aktive Pläne, Plandokumente, Playbooks
/plans/:kind/:id — Plan Studio für einen Plan; kind ist orchestration oder document
/meetings — Liste der Besprechungen
/meetings/record — Bildschirm für die Live-Aufnahme einer Besprechung
/meetings/:meetingId — Besprechungsdetail: Notizen, Transkript, Aufgaben, Entscheidungen
/calendar — Kalender: Ansichten Monat, Woche und Agenda
/calendar/:eventId — Detail eines Kalendertermins (Geschwisterroute; teilt den Page-Key des Kalenders)
/newsfeed — Newsfeed-Liste
/newsfeed/article/:articleId — Artikelansicht
/observability — Observability-Hub: die Reiter Nutzung, Übersicht, Live und Qualität über dem Laufprotokoll des Arbeitsbereichs. Standard ist der Reiter Nutzung
/users/:login — GitHub-Benutzerprofil
/teams/:organization/:slug — Teamprofil einer GitHub-Organisation
/api-keys — Verwaltung der API-Schlüssel. Kein Navigationseintrag — nur über die URL erreichbar
/settings/… — Einstellungsbildschirme (unten)

Unterhaltungen und Threads haben keine eigene Route — ein Thread ist eine Unterhaltung in /spaces/:spaceId, geöffnet als Editor-Tab statt über die URL adressiert.

Es gibt keine Route /dashboard und keinen Dashboard-Bildschirm. Die Analysefläche ist /observability, erreichbar aus der Fußzeile der Seitenleiste.

Es gibt keinen Seitenleisteneintrag „Pläne“. Plan Studio öffnet sich als Editor-Tab aus der Planzeile der Unterhaltung, die ihn erzeugt hat; /plans und /plans/:kind/:id sind Direktlinks.

/observability und /pull-requests/compose stehen weder in der Registry der Routentitel noch in der der Breadcrumbs, deshalb zeigen beide nur den App-Namen im Fenstertitel und keine Breadcrumb-Spur.

/settings leitet auf /settings/you/appearance um. Die Schaltfläche Einstellungen in der Seitenleiste und Cmd/Ctrl + , führen beide nach /settings/you/appearance.

Einstellungspfade sind nach Geltungsbereich benannt — you/, workspace/, server/ — weil das Segment sagt, wen eine Änderung betrifft. Zwei Pfade sind älter als diese Benennung und in der URL keinem Geltungsbereich zugeordnet: /settings/memory und /settings/pipelines.

Pfad Bildschirm
/settings/you/appearance Thema, Sprache, Typografie, Editor-Thema (die Einstiegsseite der Einstellungen)
/settings/you/notifications Schalter je Ereignis, Quiet hours
/settings/you/keybindings Referenz der Tastaturkürzel (nur lesbar)
/settings/you/audio Mikrofon, Diktat, Besprechungserkennung und Klanglandschafts-Ausgabe
/settings/you/devices Gekoppelte Telefone und Fernsteuerung
/settings/you/newsfeed Feed-Verwaltung: Quellen, Aktualisierung, Lesestatus
Pfad Bildschirm
/settings/workspace/profile Profil und Identität in diesem Arbeitsbereich: Name, Git-Autor, Code-Hosting, Kalender
/settings/workspace/general Name, Logo, ausgeschlossene Geheimnispfade, parallele Prüfer, Vorlage für Branch-Namen, Sync-Status, Chat-Brücken, Gefahrenzone
/settings/workspace/meetings Vorlagen für Besprechungsnotizen und gespeicherte Stimmprofile
/settings/workspace/members Mitgliederliste, Einladungen, Prüfprotokoll. Das Prüfprotokoll paginiert optional mit ?cursor=
/settings/workspace/repositories In diesem Arbeitsbereich registrierte Repositorys
/settings/workspace/agents Registrierte Agentenidentitäten
/settings/workspace/skills Konfiguration der Fähigkeiten
/settings/memory Arbeitsbereichs-Gedächtnis: Fakten, Richtlinien, Wissensgraph
/settings/workspace/permissions Agent-Berechtigungen: Schutzregel-Matrix und Prüfung „Was wäre wenn?“
/settings/pipelines Pipeline-Vorlagen
/settings/pipelines/:templateId Editor für Pipeline-Vorlagen (Drag-and-Drop-Leinwand)
Pfad Bildschirm
/settings/server/connection Verbindung und Status
/settings/server/sso Single sign-on (SAML, OIDC, SCIM-Bereitstellung)
/settings/server/providers Modellanbieter und Adapter
/settings/server/mcp Eingebaute und externe MCP-Server
/settings/server/voice Sprach- und Meeting-Modelle (ASR, Diarisierung)
/settings/server/rigs Rigs: was dieser Host starten kann, Basis-Images, eigene Images, laufende Maschinen
/settings/server/sandbox Ausführungsberechtigungen der Sandbox: Programme, die Agenten aus ihrer Arbeitskopie deiner Repositorys ausführen dürfen
/settings/server/diagnostics Diagnose und Datenschutz: Sandboxing, Embedding, Logging, Absturzberichte
/settings/server/backup Sicherung und Wiederherstellung: Momentaufnahmen der Installation, Export, Import und Löschen je Arbeitsbereich
/settings/server/about Über und Updates

kSettingsNav in lib/features/settings/settings_nav.dart ist die einzige Quelle der Wahrheit für diese Liste. settings_nav_test.dart hält eindeutige Ids, eindeutige Routen, die flache J/K-Reihenfolge und die drei Geltungsbereiche fest. Er geht nicht jede registrierte GoRoute ab.

Gegenstand Datei
Router lib/router/app_router.dart
Route-Builder lib/router/routes.dart
Auth-Guards lib/router/guards.dart
Onboarding-Gate lib/features/auth/providers/onboarding_providers.dart
Einstellungen-Navigation lib/features/settings/settings_nav.dart