# План: главная страница как рабочая область с цепочкой > **СТАТУС: ВЫПОЛНЕН 2026-08-23.** Заменяет идею отдельной страницы рабочего > пространства. ## 1. Модель 1. **Главная страница — это рабочая область.** Без выбранного инструмента на ней большой поиск: начните вводить название — список отфильтровывается; выбор разворачивает инструмент прямо здесь, без перехода. 2. Развернутый инструмент выглядит как привычная страница: слева исходник, справа результат со своей кнопкой скачивания, параметры — в отдельной карточке под сценой. 3. Под результатом рядом с кнопкой скачивания — кнопка **«⛓ Chain with…»**: добавляет пустую секцию, внутри которой такой же поиск; выбор заполняет секцию следующим инструментом. Так цепочка растёт сколько угодно. 4. Каждая заполненная секция цепи — полноценная: свои параметры, своё превью, своя кнопка скачивания промежуточного результата. Крестик убирает секцию; кнопка «✂ Remove chain» снимает всю цепь разом (без подтверждения). 5. Чекбокс «Показать маску» живёт в карточке параметров базового инструмента и влияет только на его превью: в цепь всегда передаётся сам результат. 6. Сетка-каталог инструментов переезжает на отдельную страницу `/list-tools` — для SEO и визуального поиска. Основная работа происходит на главной; в шапке появляются ссылки на обе. 7. Прямые адреса `/tools/` сохраняются: тот же развернутый инструмент для глубоких ссылок. 8. Цепочка переживает перезагрузку (автосохранение в localStorage). Экспорт/импорт файлом отложен до появления CLI/wasm-части. ## 2. Архитектура - Страница инструмента уже собрана как самодостаточный компонент, принимающий запись реестра, — он и становится встраиваемым блоком. Маршруты `/tools/[id]` и главная используют один и тот же компонент: первая — по адресу из URL, вторая — по выбору из поиска. - Состояние главной: выбран ли инструмент; если да — рендерится блок инструмента, целиком владеющий своим исходником, параметрами, результатом и цепочкой. - Смена инструмента на главной (через повторный поиск) сбрасывает блок целиком. - Цепочка хранится массивом шагов; у пустого звена инструмент ещё не выбран — такие звенья не сохраняются в localStorage и не участвуют в прогоне. - Исполнение — последовательная свёртка: выход каждого звена — вход следующего; результаты всех звеньев доступны их секциям. Общий авто-раннер даёт токен отмены и задержку ~300 мс. ## 3. Переиспользование и доработки существующего Готовое берётся как есть: `SourceCard`, `Preview`, `ParamForm`, `DownloadButton`, `EmptyState`, модуль пайплайна, авто-раннер, `PNG_OUTPUT`. Доработки: - **Блок страницы инструмента** — расширяется секцией цепочки: список заполненных звеньев, каждое со своими параметрами, превью и скачиванием, плюс пустые звенья с поиском. Кнопки «⛓» и «✂ Remove chain» — рядом со скачиванием базового результата. - **`ParamsCard`** — опциональный блок «Показать маску» (флаг preview у инструмента + двусторонний флаг). - **Карточка результата** — упрощается: получает готовую картинку, маска уходит в карточку параметров. - **Существующая главная-каталог** — переезжает на маршрут `/list-tools` почти без изменений. Удаляется: черновой маршрут рабочего пространства и его компоненты списка/селектора — вместо них новые, под вертикальную модель. ## 4. Новые компоненты - **`ToolSearch.svelte`** — поиск с нечётким совпадением: поле ввода, отфильтрованный список (регистронезависимая подпоследовательность по названию и описанию, приоритет совпадению с начала), клавиатура ↑↓ Enter Esc; два размера — герой на главной и компактный внутри пустого звена. Предлагает только инструменты-трансформеры. - **`ChainStep.svelte`** — секция одного звена: пустое звено показывает компактный поиск; заполненное — заголовок с номером и крестиком, форму параметров, превью результата, кнопку скачивания. - **`ChainBar.svelte`** — строка под результатом базового инструмента: «⛓ Chain with…» и «✂ Remove chain» (видна только при непустой цепи). ## 5. Этапы и проверки - **A. Поиск и главная** — `ToolSearch`, герой поиска на главной, встраивание блока инструмента, перенос каталога на `/list-tools`, ссылки в шапке. Проверка: `check/build`, визуально. - **B. Цепочка** — состояние цепи в блоке инструмента, пустые звенья с поиском, прогон, промежуточные превью и скачивания, ошибки звеньев. Проверка: смоук §8 пп. 1–6. - **C. Маска и упрощение** — блок маски в `ParamsCard`, упрощение карточки результата. Проверка: смоук §8 п. 7. - **D. Хранение и итог** — автосохранение и восстановление цепочки, удаление чернового маршрута рабочего пространства, полный регресс каталога, `test/check/build`. ## 6. Смоук-чеклист 1. На главной — большое поле поиска; ввод фильтрует список по мере набора; Enter выбирает подсвеченный. 2. Выбранный инструмент разворачивается на той же странице: исходник, параметры, результат. 3. «⛓ Chain with…» добавляет пустую секцию с компактным поиском; выбор заполняет её. 4. У каждой секции своё превью и своё скачивание промежуточного результата. 5. Крестик убирает секцию; «✂ Remove chain» снимает все звенья разом. 6. Ошибка звена — баннер «Шаг N (имя): …»; последние успешные результаты секций не исчезают. 7. «Показать маску» переключает превью базового инструмента; в цепь идёт результат, скачивание базового отдаёт результат, не маску. 8. Перезагрузка восстанавливает цепочку заполненных звеньев; пустые звенья при этом исчезают. 9. Быстрые правки подряд — один финальный пересчёт всей вертикали. 10. `/list-tools` открывает старый каталог по категориям; прямые адреса `/tools/` работают. ## 7. Критерии готовности - Работа начинается с главной: поиск → инструмент → цепочка звеньями, каждый со своим превью и скачиванием. - Отдельной страницы рабочего пространства нет; каталог доступен на `/list-tools`; прямые ссылки инструментов работают. - Пустые звенья не попадают в сохранение и не ломают прогон. - `test/check/build` зелёные, смоук §6 пройден. ## 8. Что сознательно не делаем - Ветвления и прицепывание от середины цепи — новое звено всегда добавляется в конец. - Пипетка и маски внутри звеньев цепи — они остаются фичей базового инструмента. - Экспорт и импорт цепочки файлом — отложено до появления CLI/wasm-части. - Несколько параллельных инструментов на главной одновременно — один активный блок за раз.