From b48a8adfa74446abbc33e53ca67bc6eefc3ee55e Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Sun, 23 Aug 2026 08:05:55 +0500 Subject: [PATCH] docs: update plans --- docs/{ => archive}/plan-sliders-pipette.md | 2 +- docs/backlog.md | 7 --- docs/plan-easy-batch.md | 68 ++++++++++++++++++++++ 3 files changed, 69 insertions(+), 8 deletions(-) rename docs/{ => archive}/plan-sliders-pipette.md (99%) create mode 100644 docs/plan-easy-batch.md diff --git a/docs/plan-sliders-pipette.md b/docs/archive/plan-sliders-pipette.md similarity index 99% rename from docs/plan-sliders-pipette.md rename to docs/archive/plan-sliders-pipette.md index 6948468..1e60501 100644 --- a/docs/plan-sliders-pipette.md +++ b/docs/archive/plan-sliders-pipette.md @@ -1,6 +1,6 @@ # План: range-слайдеры и пипетка цвета -> Статус: план к выполнению. +> **СТАТУС: ВЫПОЛНЕН 2026-08-23.** ## 1. Целевое поведение diff --git a/docs/backlog.md b/docs/backlog.md index be63302..9065e6f 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -1,8 +1 @@ # Backlog - -## 1. Range-слайдеры и пипетка цвета - -Сделать управление параметрами удобнее: - -- **Range slider вместо полей ввода** там, где это удобно (яркость/контраст, качество JPEG/WebP, порог похожести) — slider с присоединённым числовым значением. -- **Пипетка для цвета** — выбор цвета удаления/подложки кликом прямо по превью изображения (в дополнение к ``). diff --git a/docs/plan-easy-batch.md b/docs/plan-easy-batch.md new file mode 100644 index 0000000..08b973b --- /dev/null +++ b/docs/plan-easy-batch.md @@ -0,0 +1,68 @@ +# План: вторая волна 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 как отдельные страницы — они будут конфигурациями тех же операций после этой волны.