Pular para o conteúdo

Mapa de rotas

O shell do app (ControlCenterLayout) envolve toda rota dentro do espaço de trabalho por meio de um ShellRoute. Todo destino dentro do shell tem o prefixo do espaço de trabalho — /workspaces/:workspaceId/… — e o id do espaço de trabalho na URL é a única fonte de verdade do espaço de trabalho ativo. Só as superfícies anteriores ao contexto não têm prefixo: /splash, /onboarding, /signed-out e o seletor puro /workspaces, todas em tela cheia e fora do shell.

O portão é considerado completo quando pelo menos um forge está conectado para o usuário autenticado e existe pelo menos um espaço de trabalho.

Uma credencial ausente e uma configuração ausente são telas diferentes, e o discriminador é users.onboarding_finished_at, lido do próprio identity.me de quem chama — nunca “existem espaços de trabalho”, o que já está errado no momento em que alguém é convidado para um espaço de trabalho que nunca criou. Sem nenhum forge conectado, uma conta que passou pelo onboarding vai para /signed-out para se autenticar de novo; uma que não passou vai para /onboarding. Enquanto o sinalizador ainda é desconhecido, a guarda mantém a splash em vez de adivinhar, porque ela nunca redireciona de volta para fora do onboarding.

Caminho Tela
/splash Splash de inicialização que resolve o portão de onboarding
/onboarding Conectar um forge, criar ou entrar em um espaço de trabalho, sandbox, adaptador padrão e depois voz. A etapa do espaço de trabalho é dispensada quando a conta já pertence a um
/signed-out Autenticar-se de novo: o mesmo cartão de conexões de forge que a tela Configurações renderiza, sem barra de etapas e sem botão de continuar — o roteador sai sozinho assim que um forge se reporta
/workspaces Lista e seletor de espaços de trabalho
/workspaces/:workspaceId Redireciona para /workspaces/:workspaceId/inbox

Os caminhos abaixo omitem o prefixo /workspaces/:workspaceId.

Caminho Parâmetros de consulta Tela
/inbox — Caixa de entrada unificada: PRs classificadas pelo ciclo de vida da revisão mais trabalho que não é de PR e que bloqueia o operador. A rota de destino após a guarda; um /workspaces/:workspaceId puro redireciona para cá
/spaces — Superfície de espaços, sem espaço selecionado
/spaces/:spaceId ?m=<messageId>, ?tab=<key> Um espaço; m cria um link direto para uma mensagem e é consumido uma vez na abertura
/tickets — Quadro de tickets
/tickets/:ticketId — Detalhe do ticket (lista-detalhe)
/projects/:projectId — Visão geral do projeto
/pull-requests ?repo=<owner/name> Lista de PRs; repo seleciona esse repositório na barra lateral esquerda
/pull-requests/compose ?space=<spaceId> Compor uma nova pull request; space nomeia o espaço cujo worktree isolado fornece o branch
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> Detalhe da PR com visualizador de diff; comment é o id numérico REST de um comentário
/pipelines — Lista de execuções de pipeline
/pipelines/run ?templateId=<id> Iniciador de execução manual
/pipelines/:runId — Detalhe da execução do pipeline (linha do tempo de etapas)
/plans — Hub do Plan Studio: planos ativos, documentos de plano, playbooks
/plans/:kind/:id — Plan Studio de um plano; kind é orchestration ou document
/meetings — Lista de reuniões
/meetings/record — Tela de gravação de reunião ao vivo
/meetings/:meetingId — Detalhe da reunião: notas, transcrição, itens de ação, decisões
/calendar — Calendário: visões de mês, semana e agenda
/calendar/:eventId — Detalhe do evento do calendário (rota irmã; compartilha a chave da página de calendário)
/newsfeed — Lista do feed de notícias
/newsfeed/article/:articleId — Leitor de artigos
/observability — Hub de observabilidade: abas Uso, Resumo, Ao vivo e Qualidade sobre o feed de log de execução do espaço de trabalho. Abre por padrão na aba Uso
/users/:login — Perfil de usuário do GitHub
/teams/:organization/:slug — Perfil de equipe de organização do GitHub
/api-keys — Gerenciamento de chaves de API. Nenhum ponto de entrada de navegação — acessível apenas por URL
/settings/… — Telas de configurações (abaixo)

Conversas e threads não têm rota própria — uma thread é uma conversa dentro de /spaces/:spaceId, aberta como aba do editor em vez de endereçada por URL.

Não existe rota /dashboard nem tela de dashboard. A superfície de análise é /observability, alcançada pelo rodapé da barra lateral.

Não existe nenhum item “Planos” na barra lateral. O Plan Studio abre como uma aba do editor a partir da linha do plano na conversa que o produziu; /plans e /plans/:kind/:id são links diretos.

/observability e /pull-requests/compose não têm entrada nos registros de título de rota nem de trilha de navegação, então ambas mostram o nome puro do app no título da janela e nenhuma trilha de navegação.

/settings redireciona para /settings/you/appearance. O botão de configurações da barra lateral e Cmd/Ctrl + , vão ambos para /settings/you/appearance.

Os caminhos de configurações são separados por escopo — you/, workspace/, server/ — porque o segmento indica quem uma alteração afeta. Dois caminhos são anteriores a essa separação e não têm escopo na URL: /settings/memory e /settings/pipelines.

Caminho Tela
/settings/you/appearance Tema, idioma, tipografia, tema do editor (a página inicial das configurações)
/settings/you/notifications Interruptores por evento, horário de silêncio
/settings/you/keybindings Referência de atalhos de teclado (somente leitura)
/settings/you/audio Microfone, ditado, detecção de reunião e saída de paisagens sonoras
/settings/you/devices Telefones emparelhados e controle remoto
/settings/you/newsfeed Gerenciamento de feeds: fontes, atualização, estado de leitura
Caminho Tela
/settings/workspace/profile Perfil e identidade neste espaço de trabalho: nome, autor do git, hospedagem de código, calendário
/settings/workspace/general Nome, logo, globs de segredos, concorrência de revisão, nomenclatura de branches, saúde da sincronização, pontes de chat, zona de perigo
/settings/workspace/meetings Modelos de notas de reunião e perfis de voz salvos
/settings/workspace/members Lista de membros, convites, trilha de auditoria. A trilha de auditoria é paginada com ?cursor= opcional
/settings/workspace/repositories Repositórios registrados neste espaço de trabalho
/settings/workspace/agents Identidades de agentes registradas
/settings/workspace/skills Configuração de skills
/settings/memory Memória do espaço de trabalho: fatos, políticas, grafo de conhecimento
/settings/workspace/permissions Permissões dos agentes: matriz de guardrails e sonda hipotética
/settings/pipelines Modelos de pipeline
/settings/pipelines/:templateId Editor de modelo de pipeline (canvas de arrastar e soltar)
Caminho Tela
/settings/server/connection Conexão e status
/settings/server/sso Logon único (provisionamento SAML, OIDC, SCIM)
/settings/server/providers Provedores e adaptadores de modelos
/settings/server/mcp Servidores MCP integrados e externos
/settings/server/voice Modelos de voz e reunião (ASR, diarização)
/settings/server/rigs Rigs: o que este host consegue iniciar, imagens base, imagens personalizadas, máquinas em execução
/settings/server/sandbox Concessões de execução no sandbox: programas que os agentes podem executar a partir da cópia de trabalho dos seus repositórios
/settings/server/diagnostics Diagnóstico e privacidade: sandboxing, embedding, registro de logs, relatórios de falhas
/settings/server/backup Backup e restauração: snapshots da instalação, exportação por espaço de trabalho, importação e exclusão
/settings/server/about Sobre e atualizações

kSettingsNav em lib/features/settings/settings_nav.dart é a única fonte de verdade desta lista. settings_nav_test.dart fixa ids únicos, rotas únicas, a ordem J/K achatada e os três escopos. Ele não percorre toda GoRoute registrada.

Assunto Arquivo
Roteador lib/router/app_router.dart
Construtores de rota lib/router/routes.dart
Guardas de autenticação lib/router/guards.dart
Portão de onboarding lib/features/auth/providers/onboarding_providers.dart
Navegação de configurações lib/features/settings/settings_nav.dart