# План: вторая волна EASY-инструментов > Статус: план к выполнению. ## 1. Принципы отбора - Максимум переиспользования: готовые контракты записей (`run`, `preview`, формат вывода, info-режим) и существующие операции ядра. - Новые механизмы ядра — минимальные, чистые, покрытые тестами до подключения инструментов. - Canvas/DOM-зависимые утилиты (SVG-вход, надписи и водяные знаки, эффекты через фильтры контекста) — вне этого пакета, отдельная волна. - Целевой объём волны: около 37 новых инструментов, каталог вырастает с 11 до ~48. ## 2. Новые механизмы - **Генераторы без входного файла**: у записи появляется признак «источник не нужен»; страница такого инструмента не показывает левую панель и зону перетаскивания — только параметры и результат. - **Текстовый ввод и вывод**: часть утилит принимает вставленный текст вместо файла и выдаёт текстовый результат (панель с полем только для чтения, кнопки «копировать» и «скачать как текст»). Распространяется на base64, data-uri, hex. - **BMP-энкодер в ядре**: 24-битный, чистая функция из пикселей в байты, с тестами на маленьких матрицах (заголовок, порядок каналов BGR, паддинг строки). ## 3. Состав пакета **Конвертация — 6** `jpg-to-png`, `webp-to-png`, `gif-to-png` (первый кадр), `bmp-to-png`, `ico-to-png` — всё через уже умеющий декодировать ввод, сохранение в PNG; плюс `png-to-bmp` на новом энкодере. **Текстовые представления — 6** `png-to-base64`, `base64-to-png`, `png-to-data-uri`, `data-uri-to-png`, `png-to-hex`, `hex-to-png`. **Цвет — 9** `change-opacity` (множитель прозрачности), `sepia`, `change-hue` (сдвиг тона), `extract-channel` (выбор R/G/B в оттенках серого), `swap-channels` (перестановка парой), `threshold-black-white` (порог яркости), `posterize` (число уровней), `two-colors` (два цвета + порог), `invert-alpha`. **Прозрачность и холст — 7** `remove-alpha-channel` (подложка белым), `set-alpha-channel` (константная прозрачность), `extract-alpha-mask` (альфа в чёрно-белую маску), `add-padding` (отступ + цвет/прозрачность), `add-border` (толщина + цвет), `round-corners` (радиус), `fit-on-background` (вписать на полотно цвета с полями). **Композиция — 2** `tile` (повтор по сетке), `center-by-alpha` (центрирование по непрозрачному содержимому). **Генераторы — 4** `create-empty` (размер + цвет или прозрачность), `single-color`, `random-noise` (с фиксированным зерном для воспроизводимости), `linear-gradient` (два цвета, направление). **Анализ — 3** `is-grayscale`, `is-transparent`, `orientation` (портрет/ландшафт/квадрат) — текстовые сводки в info-режиме. ## 4. Новые операции ядра (все — чистые функции с тестами) - Холст: расширение полотна (общая база для padding/border/fit), тайлинг, центр по bounding-box альфы, скругление углов маской радиуса. - Цвет: сепия, сдвиг тона через HSL, множитель альфы, извлечение/перестановка каналов, пороги (яркость и двухцветный), постеризация уровней, инверсия альфы. - Генерация: заливка цветом, шум с зерном, линейный градиент. - Форматы: BMP-энкодер; кодеки текстовых представлений (base64/data-uri/hex в обе стороны). - Анализ: проверка монохромности, полной непрозрачности, ориентации. ## 5. Этапы и проверки - **A. Механизмы** — генераторный режим страницы, текстовый ввод/вывод, BMP-энкодер. Проверка: `test/check/build`. - **B. Конвертация и текстовые представления** — 12 инструментов. Проверка: ручной прогон каждой конвертации туда-обратно. - **C. Цвет** — 9 инструментов. Проверка: юнит-тесты операций + визуально. - **D. Прозрачность, холст, композиция** — 9 инструментов. Проверка: юнит-тесты + визуально. - **E. Генераторы и анализ** — 7 инструментов. Проверка: детерминизм шума (одно зерно — одно изображение), своды анализа. - **F. Итог** — полный прогон, смоук всех новых инструментов «настроить → скачать», регресс старых одиннадцати. ## 6. Критерии готовности - Каталог содержит ~48 рабочих инструментов, каждый доступен страницей с формы из реестра. - Все новые операции ядра покрыты тестами; обратимые конвертации проверены круговым прогоном (например PNG → base64 → PNG даёт те же пиксели). - Генераторы работают без загрузки файла; текстовые представления копируются и скачиваются. - `test/check/build` зелёные. ## 7. Что сознательно не делаем - SVG-вход, рисование текста и водяных знаков, эффекты через фильтры контекста, GIF/APNG-энкодинг, пакетная обработка — последующие волны. - Семейства logo/icon/signature/stamp как отдельные страницы — они будут конфигурациями тех же операций после этой волны.