Saltar para o conteúdo

Mapa de rotas

O shell da aplicação (ControlCenterLayout) envolve todas as rotas dentro de um espaço de trabalho através de um ShellRoute. Todos os destinos dentro do shell têm o prefixo do espaço de trabalho — /workspaces/:workspaceId/… — e o id do espaço de trabalho no URL é a única fonte de verdade do espaço de trabalho ativo. Só as superfícies anteriores ao contexto é que não têm prefixo: /splash, /onboarding, /signed-out e o seletor /workspaces simples, todos em ecrã inteiro e fora do shell.

O portão está concluído quando está ligada pelo menos uma forge para o utilizador com sessão iniciada e existe pelo menos um espaço de trabalho.

Uma credencial em falta e uma configuração em falta são ecrãs diferentes, e o critério de distinção é users.onboarding_finished_at, lido a partir do próprio identity.me de quem chama — nunca “existem espaços de trabalho”, que está errado no momento em que alguém é convidado para um espaço de trabalho que nunca criou. Sem nenhuma forge ligada, uma conta que já concluiu o onboarding vai para /signed-out para se autenticar de novo; uma que ainda não concluiu vai para /onboarding. Enquanto a flag ainda é desconhecida, a guarda retém o ecrã de arranque em vez de adivinhar, porque nunca redireciona de volta para fora do onboarding.

Caminho Ecrã
/splash Ecrã de arranque que resolve o portão de onboarding
/onboarding Ligar uma forge, criar ou entrar num espaço de trabalho, sandbox, adaptador predefinido e, por fim, voz. O passo do espaço de trabalho é omitido quando a conta já pertence a um
/signed-out Autenticar de novo: o mesmo cartão de ligações a forges que as Definições apresentam, sem barra de passos e sem botão de continuar — o router sai por si assim que uma forge 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 Ecrã
/inbox — Caixa de entrada unificada: PRs classificadas pelo ciclo de vida de revisão, mais trabalho que não é PR e que bloqueia o operador. A rota de destino depois da guarda; um /workspaces/:workspaceId simples redireciona para aqui
/spaces — Superfície de espaços, sem espaço selecionado
/spaces/:spaceId ?m=<messageId>, ?tab=<key> Um espaço; m faz uma ligação direta a uma mensagem e é consumido uma vez na abertura
/tickets — Quadro de tickets
/tickets/:ticketId — Detalhe de ticket em formato mestre-detalhe
/projects/:projectId — Vista 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 indica o espaço cujo worktree isolado fornece o branch
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> Detalhe da PR com visualizador de diffs; comment é o id REST numérico de um comentário
/pipelines — Lista de execuções de pipeline
/pipelines/run ?templateId=<id> Lançador de execuções manuais
/pipelines/:runId — Detalhe da execução de pipeline (cronologia de passos)
/plans — Hub do Plan Studio: planos ativos, documentos de plano, playbooks
/plans/:kind/:id — Plan Studio para um plano; kind é orchestration ou document
/meetings — Lista de reuniões
/meetings/record — Ecrã de gravação de reunião em direto
/meetings/:meetingId — Detalhe da reunião: notas, transcrição, itens de ação, decisões
/calendar — Calendário: vistas de mês, semana e agenda
/calendar/:eventId — Detalhe do evento de calendário (rota irmã; partilha a chave da página de calendário)
/newsfeed — Lista de notícias
/newsfeed/article/:articleId — Leitor de artigos
/observability — Hub de observabilidade: separadores Uso, Resumo, Ao vivo e Qualidade sobre o feed de registos de execução do espaço de trabalho. Assume o separador Uso por predefinição
/users/:login — Perfil de utilizador do GitHub
/teams/:organization/:slug — Perfil de equipa de uma organização do GitHub
/api-keys — Gestão de chaves de API. Sem ponto de entrada na navegação — só acessível por URL
/settings/… — Ecrãs de definições (abaixo)

As conversas e os threads não têm rota própria — um thread é uma conversa dentro de /spaces/:spaceId, aberto como separador do editor em vez de ser endereçado por URL.

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

Não existe item “Planos” na barra lateral. O Plan Studio abre como separador do editor a partir da linha do plano na conversa que o produziu; /plans e /plans/:kind/:id são ligações diretas.

/observability e /pull-requests/compose não têm entrada nos registos de títulos de rota nem de navegação estrutural, pelo que ambos mostram apenas o nome da aplicação no título da janela e nenhum rasto de navegação estrutural.

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

Os caminhos das definições estão organizados por âmbito — you/, workspace/, server/ — porque o segmento indica quem a alteração afeta. Dois caminhos são anteriores a esta organização e não têm âmbito no URL: /settings/memory e /settings/pipelines.

Caminho Ecrã
/settings/you/appearance Tema, idioma, tipografia, tema do editor (a página inicial das definições)
/settings/you/notifications Interruptores por evento, horas de silêncio
/settings/you/keybindings Referência de atalhos de teclado (só de leitura)
/settings/you/audio Microfone, ditado, deteção de reuniões e saída de paisagens sonoras
/settings/you/devices Telemóveis emparelhados e controlo remoto
/settings/you/newsfeed Gestão do feed: fontes, atualização, estado de leitura
Caminho Ecrã
/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, logótipo, globs de segredos, concorrência de revisões, nomenclatura de branches, estado da sincronização, pontes de chat, zona de perigo
/settings/workspace/meetings Modelos de notas de reunião e perfis de voz guardados
/settings/workspace/members Lista de membros, convites, registo de auditoria. O registo de auditoria tem paginação com ?cursor= opcional
/settings/workspace/repositories Repositórios registados neste espaço de trabalho
/settings/workspace/agents Identidades de agente registadas
/settings/workspace/skills Configuração de skills
/settings/memory Memória do espaço de trabalho: factos, políticas, grafo de conhecimento
/settings/workspace/permissions Permissões dos agentes: matriz de guardrails e sonda «E se?»
/settings/pipelines Modelos de pipeline
/settings/pipelines/:templateId Editor de modelos de pipeline (canvas de arrastar e largar)
Caminho Ecrã
/settings/server/connection Ligação e status
/settings/server/sso Início de sessão único (SAML, OIDC, provisionamento SCIM)
/settings/server/providers Fornecedores de modelos e adaptadores
/settings/server/mcp Servidores MCP integrados e externos
/settings/server/voice Modelos de voz e de reuniões (ASR, diarização)
/settings/server/rigs Rigs: o que este anfitrião pode arrancar, imagens base, imagens personalizadas, máquinas em execução
/settings/server/sandbox Concessões de execução em sandbox: programas que os agentes podem executar a partir da sua cópia de trabalho dos seus repositórios
/settings/server/diagnostics Diagnóstico e privacidade: sandbox, embeddings, registo, relatórios de falhas
/settings/server/backup Cópia de segurança e restauro: instantâneos da instalação, exportação por espaço de trabalho, importação e eliminação
/settings/server/about Sobre e atualizações

kSettingsNav em lib/features/settings/settings_nav.dart é a única fonte de verdade para esta lista. settings_nav_test.dart fixa ids únicos, rotas únicas, a ordem achatada J/K e os três âmbitos. Não percorre todas as GoRoute registadas.

Aspeto Ficheiro
Router lib/router/app_router.dart
Construtores de rotas 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 das definições lib/features/settings/settings_nav.dart