Salta ai contenuti

Mappa delle route

Il shell dell’app (ControlCenterLayout) avvolge ogni route interna allo spazio di lavoro tramite una ShellRoute. Ogni destinazione interna al shell è prefissata dallo spazio di lavoro — /workspaces/:workspaceId/… — e l’id dello spazio di lavoro nell’URL è l’unica fonte di verità per lo spazio di lavoro attivo. Solo le superfici che precedono il contesto non hanno prefisso: /splash, /onboarding, /signed-out e il semplice selettore /workspaces, tutte a schermo intero e fuori dal shell.

Il gate è completo quando è collegata almeno una forge per l’utente che ha effettuato l’accesso ed esiste almeno uno spazio di lavoro.

Una credenziale mancante e una configurazione mancante sono schermate diverse, e il discriminante è users.onboarding_finished_at, letto sul identity.me del chiamante stesso — mai «esistono spazi di lavoro», che è sbagliato nel momento in cui qualcuno viene invitato in uno spazio di lavoro che non ha creato. Senza alcuna forge collegata, un account che ha completato l’onboarding va a /signed-out per riautenticarsi; uno che non l’ha completato va a /onboarding. Finché il flag è ancora sconosciuto, la guardia trattiene lo splash invece di tirare a indovinare, perché non reindirizza mai fuori dall’onboarding.

Percorso Schermata
/splash Splash di avvio che risolve il gate di onboarding
/onboarding Collega una forge, crea o unisciti a uno spazio di lavoro, sandbox, adapter predefinito, poi voce. Il passaggio dello spazio di lavoro viene saltato quando l’account appartiene già a uno
/signed-out Riautenticazione: la stessa scheda Hosting del codice che mostra Impostazioni, senza barra dei passaggi e senza pulsante di continuazione — il router esce da solo quando una forge risponde
/workspaces Elenco e selettore degli spazi di lavoro
/workspaces/:workspaceId Reindirizza a /workspaces/:workspaceId/inbox

I percorsi seguenti omettono il prefisso /workspaces/:workspaceId.

Percorso Parametri di query Schermata
/inbox — Posta in arrivo unificata: PR classificate in base al ciclo di vita della revisione più il lavoro non-PR che blocca l’operatore. La route di atterraggio dopo la guardia; un /workspaces/:workspaceId senza suffisso reindirizza qui
/spaces — Superficie degli spazi, nessuno spazio selezionato
/spaces/:spaceId ?m=<messageId>, ?tab=<key> Un solo spazio; m punta direttamente a un messaggio e viene consumato una volta all’apertura
/tickets — Bacheca dei ticket
/tickets/:ticketId — Master-detail del ticket
/projects/:projectId — Panoramica del progetto
/pull-requests ?repo=<owner/name> Elenco delle PR; repo seleziona quel repository nella barra laterale sinistra
/pull-requests/compose ?space=<spaceId> Componi una nuova pull request; space indica lo spazio il cui worktree isolato fornisce il branch
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> Dettaglio della PR con visualizzatore del diff; comment è l’id REST numerico di un commento
/pipelines — Elenco delle esecuzioni delle pipeline
/pipelines/run ?templateId=<id> Avvio manuale delle esecuzioni
/pipelines/:runId — Dettaglio dell’esecuzione di una pipeline (sequenza dei passaggi)
/plans — Hub di Plan Studio: piani attivi, documenti di piano, playbook
/plans/:kind/:id — Plan Studio per un piano; kind è orchestration o document
/meetings — Elenco delle riunioni
/meetings/record — Schermata di registrazione di una riunione dal vivo
/meetings/:meetingId — Dettaglio della riunione: note, trascrizione, elementi di azione, decisioni
/calendar — Calendario: viste mese, settimana e agenda
/calendar/:eventId — Dettaglio dell’evento del calendario (route affine; condivide la chiave di pagina del calendario)
/newsfeed — Elenco delle notizie
/newsfeed/article/:articleId — Lettore degli articoli
/observability — Hub di osservabilità: schede Utilizzo, Panoramica, Dal vivo e Qualità sul feed dei log di esecuzione dello spazio di lavoro. Il valore predefinito è la scheda Utilizzo
/users/:login — Profilo utente GitHub
/teams/:organization/:slug — Profilo del team di un’organizzazione GitHub
/api-keys — Gestione delle chiavi API. Nessun punto di accesso dalla navigazione — raggiungibile solo tramite URL
/settings/… — Schermate delle impostazioni (sotto)

Le conversazioni e i thread non hanno una route propria — un thread è una conversazione dentro /spaces/:spaceId, aperto come scheda dell’editor anziché indirizzato tramite URL.

Non esiste alcuna route /dashboard né alcuna schermata dashboard. La superficie di analisi è /observability, raggiunta dal piè di pagina della barra laterale.

Non esiste alcuna voce «Piani» nella barra laterale. Plan Studio si apre come scheda dell’editor dalla riga del piano nella conversazione che l’ha generato; /plans e /plans/:kind/:id sono link diretti.

/observability e /pull-requests/compose non hanno alcuna voce nei registri dei titoli di route o dei breadcrumb, quindi entrambe mostrano solo il nome dell’app nel titolo della finestra e nessun percorso di breadcrumb.

/settings reindirizza a /settings/you/appearance. Il pulsante delle impostazioni della barra laterale e Cmd/Ctrl + , portano entrambi a /settings/you/appearance.

I percorsi delle impostazioni sono suddivisi per ambito — you/, workspace/, server/ — perché il segmento dichiara chi è interessato da una modifica. Due percorsi sono precedenti a questa suddivisione e non hanno ambito nell’URL: /settings/memory e /settings/pipelines.

Percorso Schermata
/settings/you/appearance Tema, lingua, tipografia, tema dell’editor (la pagina di atterraggio delle impostazioni)
/settings/you/notifications Interruttori per evento, fasce di silenzio
/settings/you/keybindings Riferimento delle scorciatoie da tastiera (sola lettura)
/settings/you/audio Microfono, dettatura, rilevamento delle riunioni e output del paesaggio sonoro
/settings/you/devices Telefoni associati e controllo remoto
/settings/you/newsfeed Gestione dei feed: sorgenti, aggiornamento, stato di lettura
Percorso Schermata
/settings/workspace/profile Profilo e identità in questo spazio di lavoro: nome, autore git, hosting del codice, calendario
/settings/workspace/general Nome, logo, glob dei segreti, concorrenza delle revisioni, denominazione dei branch, integrità della sincronizzazione, ponti di chat, zona pericolosa
/settings/workspace/meetings Modelli delle note delle riunioni e profili vocali salvati
/settings/workspace/members Elenco dei membri, inviti, registro di audit. Il registro di audit si pagina con ?cursor= opzionale
/settings/workspace/repositories Repository registrati in questo spazio di lavoro
/settings/workspace/agents Identità degli agenti registrate
/settings/workspace/skills Configurazione delle skill
/settings/memory Memoria dello spazio di lavoro: fatti, policy, grafo della conoscenza
/settings/workspace/permissions Permessi degli agenti: matrice dei guardrail e sonda what-if
/settings/pipelines Modelli di pipeline
/settings/pipelines/:templateId Editor dei modelli di pipeline (canvas drag-and-drop)
Percorso Schermata
/settings/server/connection Connessione e stato
/settings/server/sso Accesso singolo (SAML, OIDC, provisioning SCIM)
/settings/server/providers Fornitori di modelli e adapter
/settings/server/mcp Server MCP integrati ed esterni
/settings/server/voice Modelli vocali e per riunioni (ASR, diarizzazione)
/settings/server/rigs Rig: cosa può avviare questo host, immagini di base, immagini personalizzate, macchine in esecuzione
/settings/server/sandbox Concessioni di esecuzione nel sandbox: programmi che gli agenti possono avviare dalla loro copia di lavoro dei tuoi repository
/settings/server/diagnostics Diagnostica e privacy: sandbox, embedding, logging, segnalazione degli arresti anomali
/settings/server/backup Backup e ripristino: istantanee dell’installazione, esportazione per spazio di lavoro, importazione ed eliminazione
/settings/server/about Informazioni e aggiornamenti

kSettingsNav in lib/features/settings/settings_nav.dart è l’unica fonte di verità per questo elenco. settings_nav_test.dart fissa id univoci, route univoche, l’ordine J/K appiattito e i tre ambiti. Non percorre ogni GoRoute registrata.

Aspetto File
Router lib/router/app_router.dart
Costruttori di route lib/router/routes.dart
Guardie di autenticazione lib/router/guards.dart
Gate di onboarding lib/features/auth/providers/onboarding_providers.dart
Navigazione delle impostazioni lib/features/settings/settings_nav.dart