Карта маршрутов
Оболочка приложения
Заголовок раздела «Оболочка приложения»Оболочка приложения (ControlCenterLayout) оборачивает каждый маршрут внутри рабочего пространства через ShellRoute. Каждый пункт назначения внутри оболочки имеет префикс рабочего пространства — /workspaces/:workspaceId/… — а идентификатор рабочего пространства в URL служит единственным источником истины для активного рабочего пространства. Префикса не имеют только поверхности, существующие до контекста: /splash, /onboarding, /signed-out и голый выбор /workspaces — все на весь экран и вне оболочки.
Шлюз считается пройденным, когда у вошедшего пользователя подключён хотя бы один хост кода и существует хотя бы одно рабочее пространство.
Отсутствующие учётные данные и незавершённая настройка — разные экраны, и различителем служит users.onboarding_finished_at, считанный из собственного identity.me вызывающего, а никогда не «рабочее пространство существует»: последнее неверно в тот момент, когда кого-то приглашают в рабочее пространство, которое он не создавал. Без подключённого хоста кода аккаунт, прошедший онбординг, попадает на /signed-out для повторной аутентификации; аккаунт, не прошедший его, — на /onboarding. Пока флаг неизвестен, страж удерживает заставку, а не гадает, потому что он никогда не перенаправляет обратно из онбординга.
Маршруты без префикса
Заголовок раздела «Маршруты без префикса»| Путь | Экран |
|---|---|
/splash |
Стартовая заставка, которая определяет результат шлюза онбординга |
/onboarding |
Подключение хоста кода, создание рабочего пространства или присоединение к нему, песочница, адаптер по умолчанию, затем голос. Шаг выбора рабочего пространства пропускается, если аккаунт уже состоит в нём |
/signed-out |
Повторная аутентификация: та же карточка подключений к хостам кода, которую отображает раздел «Настройки», без полосы шагов и кнопки продолжения — маршрутизатор уходит с неё сам, как только хост кода отчитается о подключении |
/workspaces |
Список и выбор рабочего пространства |
/workspaces/:workspaceId |
Перенаправляет на /workspaces/:workspaceId/inbox |
Маршруты рабочего пространства
Заголовок раздела «Маршруты рабочего пространства»Пути ниже опускают префикс /workspaces/:workspaceId.
| Путь | Параметры запроса | Экран |
|---|---|---|
/inbox |
— | Единые входящие: pull request, классифицированные по жизненному циклу ревью, плюс работа без PR, блокирующая оператора. Целевой маршрут после прохождения шлюза; голый /workspaces/:workspaceId перенаправляет сюда |
/spaces |
— | Поверхность пространств, пространство не выбрано |
/spaces/:spaceId |
?m=<messageId>, ?tab=<key> |
Одно пространство; m — глубокая ссылка на сообщение, которая поглощается при открытии |
/tickets |
— | Доска тикетов |
/tickets/:ticketId |
— | Тикет: список и детали |
/projects/:projectId |
— | Обзор проекта |
/pull-requests |
?repo=<owner/name> |
Список pull request; repo выбирает этот репозиторий на левой панели |
/pull-requests/compose |
?space=<spaceId> |
Создание нового pull request; space задаёт пространство, изолированный worktree которого предоставляет ветку |
/pull-requests/:owner/:repo/:prNumber |
?tab=<key>, ?comment=<id> |
Детали pull request с просмотром diff; comment — числовой REST-id одного комментария |
/pipelines |
— | Список запусков конвейера |
/pipelines/run |
?templateId=<id> |
Запуск конвейера вручную |
/pipelines/:runId |
— | Детали запуска конвейера (временная шкала шагов) |
/plans |
— | Хаб Plan Studio: активные планы, документы планов, плейбуки |
/plans/:kind/:id |
— | Plan Studio для одного плана; kind — orchestration или document |
/meetings |
— | Список встреч |
/meetings/record |
— | Экран записи встречи в реальном времени |
/meetings/:meetingId |
— | Детали встречи: заметки, транскрипт, пункты действий, решения |
/calendar |
— | Календарь: представления «Месяц», «Неделя» и «Расписание» |
/calendar/:eventId |
— | Детали события календаря (соседний маршрут; использует тот же ключ страницы, что и календарь) |
/newsfeed |
— | Список ленты новостей |
/newsfeed/article/:articleId |
— | Чтение статьи |
/observability |
— | Хаб наблюдаемости: вкладки «Использование», «Инсайты», «Онлайн» и «Качество» над лентой журналов запусков рабочего пространства. По умолчанию открывается вкладка «Использование» |
/users/:login |
— | Профиль пользователя GitHub |
/teams/:organization/:slug |
— | Профиль команды организации GitHub |
/api-keys |
— | Управление API-ключами. Нет точки входа в навигации — доступно только по URL |
/settings/… |
— | Экраны настроек (ниже) |
У разговоров и веток нет собственных маршрутов — ветка это разговор внутри /spaces/:spaceId, который открывается как вкладка редактора, а не адресуется по URL.
Маршрута /dashboard не существует, как и экрана дашборда. Аналитическая поверхность — это /observability, на которую попадают из нижней части боковой панели.
Пункта боковой панели «Планы» нет. Plan Studio открывается как вкладка редактора из строки плана в разговоре, который его создал; /plans и /plans/:kind/:id — глубокие ссылки.
У /observability и /pull-requests/compose нет записи в реестрах заголовков маршрутов и навигационных цепочек, поэтому в заголовке окна у обоих отображается только имя приложения, а цепочка навигации отсутствует.
Маршруты настроек
Заголовок раздела «Маршруты настроек»/settings перенаправляет на /settings/you/appearance. Кнопка настроек на боковой панели и Cmd/Ctrl + , ведут на /settings/you/appearance.
Пути настроек разнесены по пространствам имён по области — you/, workspace/, server/ — потому что сегмент указывает, на кого влияет изменение. Два пути появились раньше такого разделения и не имеют области в URL: /settings/memory и /settings/pipelines.
| Путь | Экран |
|---|---|
/settings/you/appearance |
Тема, язык, типографика, тема редактора (стартовый экран настроек) |
/settings/you/notifications |
Переключатели по событиям, тихие часы |
/settings/you/keybindings |
Справочник горячих клавиш (только для чтения) |
/settings/you/audio |
Микрофон, диктовка, определение встреч и вывод звуковых пейзажей |
/settings/you/devices |
Привязанные телефоны и удалённое управление |
/settings/you/newsfeed |
Управление лентой: источники, обновление, состояние прочитанного |
Рабочее пространство
Заголовок раздела «Рабочее пространство»| Путь | Экран |
|---|---|
/settings/workspace/profile |
Профиль и идентичность в этом рабочем пространстве: имя, автор git, хостинг кода, календарь |
/settings/workspace/general |
Название, логотип, glob-шаблоны секретов, параллелизм ревью, именование веток, состояние синхронизации, чат-мосты, опасная зона |
/settings/workspace/meetings |
Шаблоны заметок встреч и сохранённые голосовые профили |
/settings/workspace/members |
Состав участников, приглашения, журнал аудита. Журнал аудита разбивается на страницы с необязательным ?cursor= |
/settings/workspace/repositories |
Репозитории, зарегистрированные в этом рабочем пространстве |
/settings/workspace/agents |
Зарегистрированные идентичности агентов |
/settings/workspace/skills |
Настройка навыков |
/settings/memory |
Память рабочего пространства: факты, политики, граф знаний |
/settings/workspace/permissions |
Разрешения агента: матрица ограничений и проверка «что если» |
/settings/pipelines |
Шаблоны конвейеров |
/settings/pipelines/:templateId |
Редактор шаблона конвейера (полотно с перетаскиванием) |
| Путь | Экран |
|---|---|
/settings/server/connection |
Подключение и состояние |
/settings/server/sso |
Единый вход (SAML, OIDC, провижининг SCIM) |
/settings/server/providers |
Провайдеры моделей и адаптеры |
/settings/server/mcp |
Встроенные и внешние MCP-серверы |
/settings/server/voice |
Голосовые модели и модели встреч (ASR, диаризация) |
/settings/server/rigs |
Rigs: что может загружать этот хост, базовые образы, свои образы, работающие машины |
/settings/server/sandbox |
Права на выполнение в песочнице: программы, которые агенты могут запускать из своей рабочей копии ваших репозиториев |
/settings/server/diagnostics |
Диагностика и конфиденциальность: песочница, эмбеддинг, логирование, отчёты о сбоях |
/settings/server/backup |
Резервное копирование и восстановление: снапшоты установки, экспорт по рабочему пространству, импорт и удаление |
/settings/server/about |
О программе и обновления |
kSettingsNav в lib/features/settings/settings_nav.dart — единственный источник истины для этого списка. settings_nav_test.dart фиксирует уникальность идентификаторов и маршрутов, плоский порядок обхода J/K и три области. Он не обходит каждый зарегистрированный GoRoute.
Конфигурация маршрутов
Заголовок раздела «Конфигурация маршрутов»| Аспект | Файл |
|---|---|
| Маршрутизатор | lib/router/app_router.dart |
| Построители маршрутов | lib/router/routes.dart |
| Стражи аутентификации | lib/router/guards.dart |
| Шлюз онбординга | lib/features/auth/providers/onboarding_providers.dart |
| Навигация настроек | lib/features/settings/settings_nav.dart |