Skip to content

Работа с Architecture Workspace

После завершения скана страница проекта — главный рабочий экран: analyzer tabs, постоянный Inspector, глобальный поиск, именованные saved views, GUI-редактор правил слоёв, авто-rescan по изменению файлов и one-click фикс для type-only циклов.

Быстрый поиск (Cmd+K / Ctrl+K)

Cmd+K с любой страницы (проект, главная, настройки) открывает глобальный оверлей поиска по текущему скану. Без префиксов — substring-поиск по path и exports. Префиксы сужают:

  • path:src/features — только модули, у которых совпал путь.
  • export:useAuth — только модули, которые экспортируют данный биндинг.
  • import:react-query — только модули, которые импортируют из данного specifier'а.
  • kind:store — только модули заданного типа (store, component, composable, entry, infra, util, unknown).

Несколько префиксов комбинируются через AND (kind:store path:checkout — стораджи под фичей checkout). Свободные слова — OR по path и exports. Negation через !: path:!__tests__.

Клик по результату — переход к соответствующему элементу в Architecture Workspace. Если поиск открыт не из страницы проекта (например, с Dashboard), в шапке оверлея — имя текущего проекта: это всё ещё его результаты, а не то, что вы только что набрали.

Saved views (b)

View — это снимок полезного состояния рабочей области: фильтры, поиск, выбранный элемент, tab context и связанные настройки отображения. Per-проектные, живут в localStorage.

  • b — открыть/закрыть панель Saved views.
  • Save current — называете текущее состояние как новый view; inline-rename, Enter — подтвердить.
  • Клик по view — восстанавливает его.
  • Export / Import — пакует view'ы проекта в .archora/views.json (или JSON в буфер обмена в браузерной сборке). Файл коммитим: можно делиться видами с командой через PR.

Есть отдельный Last session snapshot — сохраняется автоматически на каждое значимое изменение (debounce 250 мс) и при закрытии приложения. На следующем открытии того же проекта появится Восстановить прошлую сессию? prompt. Один лишь выбор строки за «значимое действие» не считается — фильтры, tab context и поиск считаются.

Редактор правил слоёв

Десктоп выводит layerOverrides из .archora.json в полноценный GUI: откройте проект и нажмите иконку Layers в TopBar (маршрут /project/:id/layer-rules).

  • Слева — список строк: glob (Input) + layer (Select) + кнопка удалить. Пустой паттерн, невалидный glob и неизвестное имя слоя подсвечиваются inline.
  • Справа — live-preview: список нарушений слоёв против текущего скана, перевычисляется на каждый keystroke. Новые нарушения от вашего draft'а помечены меткой новое; ушедшие просто пропадают.
  • Сохранить — пишет в .archora.json, аккуратно мерджа с тем, что там уже есть (entryPoints, dynamicLoaders, ignore — GUI их не трогает).
  • Сохранить и пересканировать — плюс полный re-scan, чтобы нарушения сразу прокинулись по рабочей области.
  • Скопировать JSON — для браузерной сборки (без записи в файл); вставьте в файл руками.

Сами слои по-прежнему задаются в archora.config.{ts,js,json} — редактор позволяет только переопределять классификацию модулей, не порядок слоёв.

Авто-rescan по изменению файлов

В десктоп-сборке Archora умеет следить за файловой системой проекта и пере-сканировать при изменении. В Settings → Watcher — единственный тогглер Auto re-scan on file change (по умолчанию on, в браузерной сборке игнорируется).

  • Под капотом — Rust notify-агент. Учитывает .gitignore и те же расширения, что и сканер.
  • Изменения дебаунсятся (200 мс на стороне Rust, +500 мс на стороне JS), чтобы git checkout 50 файлов не вызывал 50 сканов.
  • В TopBar — индикатор ● live, пока watcher подключён, и время последнего изменения.

На очень больших проектах с медленным диском watcher — второй по «дешевизне» сигнал; выключите и пользуйтесь ручной кнопкой Re-scan, если мешает.

Type-only auto-fix

У инсайтов вида type-only-candidate появляется иконка-палочка рядом с ?. Клик открывает side-by-side diff:

  • Слева — текущий импорт, изменяемая строка подсвечена красным.
  • Справа — пропатченная версия: import { Foo }import type { Foo }. Если только часть bindings — type-only, импорт разделяется (import { runtime } from 'x'; import type { Foo } from 'x';) — value-сторона остаётся.

Три действия:

  • Применить — пишет файл. Перед этим сбрасывает backup в <project>/.archora/backups/<iso-timestamp>-<safe-rel>.bak; старые backup'ы вычищаются (best-effort) через 7 дней.
  • Применить и пересканировать — плюс полный re-scan; если исходная рекомендация исчезла, появится тост Инсайт закрыт после rescan.
  • Скопировать патч — unified-diff в буфер, без записи в файл. В браузерной сборке доступно только это (см. notice в диалоге).

Диалог отказывается применять, если скан старее 5 минут — сначала re-scan, чтобы патч всё ещё бил по актуальному коду.

Это единственный auto-fix во Archora. Другие виды рекомендаций (split-god-module, cycle-break-cluster, …) сознательно остаются advice-only — эвристики там не дают детерминированный refactor, и неверный «auto-fix» хуже, чем отсутствие фикса.

Выпущено под лицензией BUSL-1.1.