Работа с 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 checkout50 файлов не вызывал 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» хуже, чем отсутствие фикса.