Перейти до вмісту

Карта маршрутів

Оболонка застосунку (ControlCenterLayout) обгортає кожен маршрут у межах робочого простору через ShellRoute. Кожен пункт призначення всередині оболонки має префікс робочого простору — /workspaces/:workspaceId/… — і ідентифікатор робочого простору в URL є єдиним джерелом істини для активного робочого простору. Лише поверхні до контексту не мають префікса: /splash, /onboarding, /signed-out і голий засіб вибору /workspaces — усі на весь екран і поза оболонкою.

Шлюз пройдено, коли для користувача, який увійшов, підключено щонайменше один forge і існує щонайменше один робочий простір.

Відсутні облікові дані та відсутнє налаштування — це різні екрани, і розрізняє їх users.onboarding_finished_at, прочитане з власного identity.me того, хто звертається, — а не «робочі простори існують», бо це хибно вже тієї миті, коли когось запрошують до робочого простору, якого він не створював. Якщо forge не підключено, обліковий запис, який пройшов онбординг, переходить на /signed-out, щоб автентифікуватися знову; той, що не пройшов, — на /onboarding. Поки прапорець невідомий, вартовий утримує splash, а не вгадує, бо він ніколи не переспрямовує назад з онбордингу.

Шлях Екран
/splash Початковий splash, який визначає результат шлюзу онбордингу
/onboarding Підключіть forge, створіть робочий простір або приєднайтеся до нього, пісочниця, типовий адаптер, потім голос. Крок із робочим простором пропускається, якщо обліковий запис уже належить до якогось
/signed-out Повторна автентифікація: та сама картка підключень forge, яку рендерять Налаштування, без смуги кроків і без кнопки продовження — маршрутизатор виходить сам, щойно forge дасть про себе знати
/workspaces Список робочих просторів і засіб вибору
/workspaces/:workspaceId Переспрямовує на /workspaces/:workspaceId/inbox

Наведені нижче шляхи опускають префікс /workspaces/:workspaceId.

Шлях Параметри запиту Екран
/inbox — Єдині вхідні: PR, класифіковані за життєвим циклом перевірки, плюс робота без PR, що блокує оператора. Маршрут приземлення після вартового; голий /workspaces/:workspaceId переспрямовує сюди
/spaces — Поверхня простору, жодного простору не вибрано
/spaces/:spaceId ?m=<messageId>, ?tab=<key> Один простір; m веде глибоким посиланням на повідомлення і споживається один раз під час відкриття
/tickets — Дошка тікетів
/tickets/:ticketId — Деталі тікета (майстер — деталі)
/projects/:projectId — Огляд проєкту
/pull-requests ?repo=<owner/name> Список PR; repo вибирає цей репозиторій у лівій панелі
/pull-requests/compose ?space=<spaceId> Створення нового pull request; space називає простір, чиє ізольоване worktree дає гілку
/pull-requests/:owner/:repo/:prNumber ?tab=<key>, ?comment=<id> Деталі PR із переглядачем діфів; comment — числовий REST-ідентифікатор одного коментаря
/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, доступна з нижнього колонтитула бічної панелі.

У бічній панелі немає пункту «Plans». 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 фіксує унікальні id, унікальні маршрути, плаский порядок 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