From 751e8d97a08c99c70c1b7a5cbcd666ed6d6fe2ae Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Mon, 7 Sep 2026 11:19:15 +0500 Subject: [PATCH] docs: update plans\docs - actual info --- docs/{ => archive}/plan-audit.md | 7 +++ docs/{ => archive}/plan-composite-params.md | 22 ++++++-- docs/{ => archive}/plan-design-fix.md | 24 ++++++--- docs/{ => archive}/plan-gap-waves.md | 4 ++ docs/{ => archive}/plan-inline-params.md | 5 ++ docs/{ => archive}/plan-list-tools.md | 5 ++ docs/{ => archive}/plan-migrate-remaining.md | 10 ++++ docs/backlog.md | 54 +++++++++++++++++--- docs/plan-redesign.md | 18 ++++--- docs/roadmap.md | 14 +++-- 10 files changed, 135 insertions(+), 28 deletions(-) rename docs/{ => archive}/plan-audit.md (96%) rename docs/{ => archive}/plan-composite-params.md (96%) rename docs/{ => archive}/plan-design-fix.md (86%) rename docs/{ => archive}/plan-gap-waves.md (94%) rename docs/{ => archive}/plan-inline-params.md (92%) rename docs/{ => archive}/plan-list-tools.md (94%) rename docs/{ => archive}/plan-migrate-remaining.md (94%) diff --git a/docs/plan-audit.md b/docs/archive/plan-audit.md similarity index 96% rename from docs/plan-audit.md rename to docs/archive/plan-audit.md index a3af038..6efb4de 100644 --- a/docs/plan-audit.md +++ b/docs/archive/plan-audit.md @@ -1,5 +1,12 @@ # План: аудит верности `preview/*` против `refs-html` (DOM → CSS) +> **СТАТУС: РЕАЛИЗОВАН (2026-09-07) — устарел.** Скрипты +> `web/scripts/audit-dom.mjs`, `audit-css.mjs`, `audit-cdp.mjs`, +> `audit-cdp-responsive.mjs` и npm-скрипты `refs-dom-audit` / +> `refs-css-audit` / `refs-cdp-audit` на месте; старый текстовый `audit.mjs` +> удалён. Актуальная доводка верности и статус пунктов F — в +> `plan-design-fix.md`. + > Статус: к выполнению. Ветка `feat/redesign`. > Источник правды по пикселям: `refs-html/*.html` (статический экспорт рефа). > Актуальный рабочий аудит сейчас — `pnpm refs-audit` (`scripts/audit.mjs`), но он diff --git a/docs/plan-composite-params.md b/docs/archive/plan-composite-params.md similarity index 96% rename from docs/plan-composite-params.md rename to docs/archive/plan-composite-params.md index 6c2e59c..8b62761 100644 --- a/docs/plan-composite-params.md +++ b/docs/archive/plan-composite-params.md @@ -1,5 +1,17 @@ # План: составные типы параметров и полная типизация pipeline +> **СТАТУС: ЗАКРЫТ (2026-09-07).** Типизация pipeline, составные типы +> (dimension/color-pair/offset/position9/font-style/plate/gradient), +> `schema.layout`, изоляция веток и вся миграция инструментов (121/125, +> остальные 4 — отложены решениями) выполнены. Ключевые архитектурные решения +> (параллельная сборка, правило копий, изоляция old↔preview) закреплены в +> `AGENTS.md`. +> **Незакрытое из этого плана:** шаг 37 — физический переезд старых файлов +> в папки `old/` (перенесён в `backlog.md`), и удаление старого кода — +> по `plan-redesign.md` (C17–C21). Отложенные инструменты — +> `watermark-image-png` (overlay), `png-info`, `reduce-to-size` — в `backlog.md`. +> Ниже — полное состояние на момент закрытия. + > Статус: **в реализации.** Фаза 0 (фундамент) ✔, Фаза 1 (рабочий инструмент > в preview) ✔, Фаза 2 (простые инструменты без составных типов) — переведены > все одиночные инструменты (18 шт). Фаза 3 — **составной тип `dimension` @@ -31,10 +43,12 @@ > step-colors, placeholder, text-to-png), text (add-text, date-stamp), > filters (randomize-pixels, add-noise) — везде, где канвас отделён от > параметров эффекта либо фигура от позиции. -> Следующее см. в `plan-migrate-remaining.md`: дожать перевод оставшихся -> 85 инструментов в preview, закрыть известные долги, переезд в папки `old/` -> (шаг 37, линтер-изоляция уже на месте) и последующая проверка в реальных -> условиях с фидбеком. +> Следующее закрыто в `archive/plan-migrate-remaining.md` (2026-09-07): +> перевод оставшихся инструментов выполнен (всего 121/125 в preview; 4 хвоста — +> `watermark-image-png`, `png-info`, `reduce-to-size-png`, `compress-png` — +> отложены решениями в `backlog.md`). Незакрытые продолжения: переезд старых +> компонентов в папки `old/` (шаг 37 ниже), закрытие долгов и сбор фидбека — +> см. также `plan-design-fix.md`. > > Ключевые файлы нового registry: `web/src/lib/registry-new/{types,index,*}.ts` > (по файлу на категорию: geometry/alpha/convert/analyze/filters/color/generate) diff --git a/docs/plan-design-fix.md b/docs/archive/plan-design-fix.md similarity index 86% rename from docs/plan-design-fix.md rename to docs/archive/plan-design-fix.md index f05f868..b0e0daa 100644 --- a/docs/plan-design-fix.md +++ b/docs/archive/plan-design-fix.md @@ -1,10 +1,19 @@ # План: доводка дизайна до верности (фикс по refs) +> **СТАТУС: ЗАКРЫТ (2026-09-07).** Актуальный дизайн (`preview/*`) ушёл вперёд +> от референсов `refs-html/` — сверка с ними больше не информативна +> (новые компоненты `SchemaToolView`/`SchemaPreview`/каталог не имеют +> рефовой копии). Аудит против рефа прекращается; качество дизайна дальше +> гоняется ревью руками и специализированными проверками +> (`lint:all` — stylelint/design-tokens/токен-аудит). Порядок удаления старого +> и перехода — по `plan-redesign.md` (C17–C21). + > Статус: к выполнению. Ветка `feat/redesign`. > Источники: `docs/archive/demo-fidelity.md` (архивная копия старого отчёта по > верности, неактуальна), `docs/plan-redesign.md` (общая стратегия, фазы 1–4 -> выполнены до C16). Актуальный аудит верности — `pnpm refs-audit` (Playwright) → -> `web/audit/audit-report.md`. +> выполнены до C16). Актуальный аудит верности — `pnpm refs-cdp-audit` / +> `pnpm refs-css-audit` / `pnpm refs-dom-audit` → `web/audit/audit-report.md` +> (текущий список скриптов — в `web/package.json`, см. `refs-*audit`). ## Контекст @@ -12,7 +21,8 @@ старый сайт `(old)/` не трогаем до C17. - `refs/` и `refs-html/` приведены к консистентному виду — текущая «правда по пикселям». Механизм синхронизации ref→код не создаётся (см. §9 plan-redesign). -- Аудит верности автоматизирован: `pnpm refs-audit` (Playwright, 1440×900) пишет +- Аудит верности автоматизирован: `pnpm refs-cdp-audit` (1440×900, + `scripts/audit-cdp.mjs`) пишет `web/audit/audit-report.md` — light/dark токены + поэлементный дифф стилей; пиксель-дифф не используется. Палитры токенов уже сверены с рефом (light совпадает, dark собран). Темы в `refs-html` переключаются — скрипт инжектится @@ -28,7 +38,7 @@ - Никаких правок старого дизайна `(old)/` и старого `ui/`. - Компоненты пишем в `kit/` (переименование в `ui/` — на C19 по plan-redesign). - Коммиты атомарные (< ~500 строк), по 1–2 компонента; после каждого — - `svelte-check` + `lint` + `build` + `refs-audit` (diff% не должен расти без причины). + `svelte-check` + `lint` + `build` + `refs-cdp-audit` (diff% не должен расти без причины). - Коммиты делает автор (агент не коммитит). ## Этап 0 — Рефакторинг (SRP / дизайн-обёртки), без изменения визуала @@ -69,7 +79,7 @@ ## Этап 1 — Верность (по refs-html; статус на момент плана) -Аудит: `pnpm refs-audit` (Playwright, 1440×900) пишет `web/audit/audit-report.md` — +Аудит: `pnpm refs-cdp-audit` (1440×900) пишет `web/audit/audit-report.md` — light/dark токены + поэлементный дифф стилей. Пиксель-дифф не используется. Палитры токенов уже сверены с рефом: light совпадает (`--background`, `--panel`, `--foreground`, `--muted`, `--line`, `--blue`), dark собран (16 @@ -102,7 +112,7 @@ light/dark токены + поэлементный дифф стилей. Пик (pipeline-head и пр.). - **F10** (открыт): внутренние отступы preview-панели (паддинг панели). -После Этапа 1 — повторный `refs-audit`, зафиксировать остаточный diff (sub-pixel / +После Этапа 1 — повторный `refs-cdp-audit`, зафиксировать остаточный diff (sub-pixel / структурный) и обновить статус пунктов выше прямо в этом файле. ## Этап 2 — plan-redesign.md (C17–C21), ОТЛОЖЕНО @@ -128,4 +138,4 @@ light/dark токены + поэлементный дифф стилей. Пик страница. 3. `demo`: переписать на обёртки. -После каждого коммита: `svelte-check` + `lint` + `build` + `refs-audit`. +После каждого коммита: `svelte-check` + `lint` + `build` + `refs-cdp-audit`. diff --git a/docs/plan-gap-waves.md b/docs/archive/plan-gap-waves.md similarity index 94% rename from docs/plan-gap-waves.md rename to docs/archive/plan-gap-waves.md index 45235ca..f2ba439 100644 --- a/docs/plan-gap-waves.md +++ b/docs/archive/plan-gap-waves.md @@ -1,5 +1,9 @@ # План: закрытие EASY/MEDIUM-пробелов из сравнения с onlinepngtools +> **СТАТУС: ВЫПОЛНЕН (2026-09-07) — устарел.** Все волны W1–W9 закрыты. +> Идеи из раздела «Вне очереди» (region-инструменты, мультифайловый вывод, +> анимационные, HARD-серия) перенесены в `backlog.md`. + > Статус: черновик на ревью ## Принципы diff --git a/docs/plan-inline-params.md b/docs/archive/plan-inline-params.md similarity index 92% rename from docs/plan-inline-params.md rename to docs/archive/plan-inline-params.md index 1d9e7ad..1b13172 100644 --- a/docs/plan-inline-params.md +++ b/docs/archive/plan-inline-params.md @@ -1,5 +1,10 @@ # План: параметры между исходником и результатом +> **СТАТУС: УСТАРЕЛ (2026-09-07).** Раскладка описывалась для старого +> `ToolPage`; перекрыта редизайном (`plan-redesign.md`) — страницы инструментов +> теперь `SchemaToolView`/`SchemaPreview` в новом дизайне. Сама идея «инлайн: +> исходник → параметры → результат» живёт в `backlog.md` (№2). + > Статус: план к выполнению. ## 1. Что получается diff --git a/docs/plan-list-tools.md b/docs/archive/plan-list-tools.md similarity index 94% rename from docs/plan-list-tools.md rename to docs/archive/plan-list-tools.md index bf3cb20..0466047 100644 --- a/docs/plan-list-tools.md +++ b/docs/archive/plan-list-tools.md @@ -1,5 +1,10 @@ # Plan: `/preview/list-tools` → design2 (catalog) +> **СТАТУС: ВЫПОЛНЕН (2026-09-07) — устарел.** Каталог +> `/preview/list-tools` переписан на `CatalogHeader` / `CatalogToolbar` / +> `CatalogGroup` / `ToolCard` (kit), поиск и фильтры функциональны. +> Доводка верности против рефа остаётся в рамках `plan-design-fix.md`. + Ветка `feat/redesign`. Цель — привести каталог инструментов к рефу `refs-html/list-tools.html`. Сейчас страница вообще не на design2: по мульти-аудиту `onlyOurs=257, onlyRef=54` (демо-страница — `18/11`). diff --git a/docs/plan-migrate-remaining.md b/docs/archive/plan-migrate-remaining.md similarity index 94% rename from docs/plan-migrate-remaining.md rename to docs/archive/plan-migrate-remaining.md index 02256d5..04304c9 100644 --- a/docs/plan-migrate-remaining.md +++ b/docs/archive/plan-migrate-remaining.md @@ -1,5 +1,15 @@ # План: дожать перевод инструментов в preview и переезд ветки `old/` +> **СТАТУС: ЗАКРЫТ (2026-09-07).** Перевод каталога завершён — 121 из 125 +> инструментов в `registry-new`; 4 хвоста отложены решениями и перенесены в +> `backlog.md` (`watermark-image-png` → overlay-райз, `png-info` → exif-райз, +> `reduce-to-size-png` → download-райз, `compress-png` → закрыт дубликатом). +> Дальнейшие «хвосты плана» — переезд старых компонентов в папки `old/`, +> закрытие долгов и сбор фидбека — ~уже учитываются в `plan-composite-params.md` +> (шаги 36–37) и `plan-design-fix.md`, поэтому план закрыт, а не продолжен. + +> Архивная копия, ниже — состояние на момент закрытия. + > Статус: **переведено 121 из 125; остальные 4 — отложены/закрыты решениями.** > Текущее > состояние: **121 инструмент переведён в `registry-new`**, старый UI уже живёт diff --git a/docs/backlog.md b/docs/backlog.md index d9c605d..7ac913d 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -7,7 +7,7 @@ 2. **UI-эксперимент: параметры между исходником и результатом** — оценка S/M. Раскладка «Исходник → Параметры → Результат» в один ряд вместо параметров отдельным блоком снизу. Проверить на узких экранах; возможно за флагом/A-B, чтобы сравнить с текущей. - Ждет нового дизайна + Перекрыто редизайном: старый план (`docs/archive/plan-inline-params.md`) закрыт, страницы инструментов теперь `SchemaToolView`/`SchemaPreview`. Эксперимент переосмыслить уже для нового этапа инструментов (сетка source|params|result), если понадобится. 3. **Сворачивать инструменты в chain** — оценка S. Тоггл сворачивания звена до заголовка «Шаг n: название» (превью скрываются). Состояние свёрнутости помнить в workspace-pipeline. @@ -23,8 +23,50 @@ 7. **Конвертация формата — НЕ отдельный инструмент, а выбор в кнопке Download** — оценка M/L. Инструменты `convert-png-to-jpg` / `convert-png-to-webp` (и др. форматы) не должны жить как самостоятельные инструменты цепочки. Вместо этого — бесшовное внедрение выбора формата/качества прямо в кнопку/диалог **Download**: юзер скачивает результат в нужном формате (mime/ext/quality), а pipeline при этом не усложняется лишним звеном. - Связано с планом типизации: в новом `ToolEntry

` под `run` в `registry-new` нет поля `output` (mime/ext/qualityParamId), которое есть у старых конвертеров — см. `plan-composite-params.md`, замечание по Фазе 2. Формат-метаданные должны переехать в понятие «формат результата» на уровне скачивания, а не отдельного инструмента. - **Решение «не сейчас» (исследование, 2026-09):** - - В старом UI этот паттерн уже работает: `convert-*`-инструменты не конвертируют в `run`, а только настраивают `output` (mime/ext/qualityParamId), который читает `DownloadButton` → `encode(img, mime, quality)`. То есть формат уже фактически «поле скачивания» в старом pipeline. - - В новом preview `registry-new` поля `output` нет, `executor.worker` возвращает только пиксели, а `SchemaToolView.download()` захардкожен на `image/png` + имя `with-border.png`. Делать ретработу сейчас = параллельный спец-проект. - - **Когда делать:** вместе с достройкой нового download/сохранения в новом UI (в рамках `plan-composite-params`, Фаза 4/UI). Тогда выбор формата встраивается в download-flow естественно, без выдёргивания отдельным проектом. Не начинать, пока не закрыта типизация pipeline. + **Сделано (2026-09):** механическая часть реализована в preview — `ToolEntry.output` (`OutputFormat`: mime/ext/qualityParamId) в `registry-new/types.ts`; `SchemaToolView.download()` кодирует по `output` (jpg/webp/bmp уже настроены; `png-to-bmp` переведён сюда же). + **Осталось (UX-райз «Download»):** + - выбор формата/качества прямо в кнопке/диалоге Download для любого результата (не отдельными конвертерами); + - экспорт с лимитом размера → закрывает отложенный `reduce-to-size-png` (целевой KB, бинарный поиск по k из квантования). + Проработать вместе с достройкой download-флоу нового UI. + +8. **`watermark-image-png` (водяной знак картинкой)** — оценка M. Отложен из + миграции (`archive/plan-migrate-remaining.md`). Нужна overlay-механика: + второй источник изображения (getOverlay/store), параметры scale/opacity/ + position/margin/aspect. Решается вместе с вопросом, как второй источник + картинки вписывается в schema-driven preview (`SchemaToolView`). + +9. **`png-info` (детальная информация о PNG)** — оценка M/L. Отложен из + миграции. Отдельный райз: exif-теги, редактирование, структурированный + вывод; нужен свой отдельный случай в UI, не «ещё один text/verdict». + +10. **Region-инструменты** (censor/erase/pixelate-area/blur-area/sharpen-area/ + reverse-area) — ждут UI выделения области на превью. Из + `archive/plan-gap-waves.md` («вне очереди»). + +11. **Мультифайловый вывод** (split-parts, gif-frames, separate-colors) — ждут + механизма «результат = набор файлов». Из `archive/plan-gap-waves.md`. + +12. **Анимационные** (slow-reveal/fade/scrolling) — выход не PNG; отдельное + решение о формате. Из `archive/plan-gap-waves.md`. + +13. **HARD-серия** (glitch, barcode, signature-extract, handwritten-digital). + Из `archive/plan-gap-waves.md`. + +14. **Переезд старых файлов в папки `old/`** — оценка M. Шаг 37 закрытого + `archive/plan-composite-params.md` (и `archive/plan-migrate-remaining.md`): + перенос `lib/registry.ts`, `lib/registry/**`, `lib/registry-helpers.ts`, + `lib/categories.ts`, `lib/tools/**`, `lib/components/**` (кроме `kit/`) в + `lib/old/**`; в настройке isolation-плагина — один glob-паттерн + (`lib/old/**`), «новое»/«общее» не меняются. Предшествует C17 + (`plan-redesign.md`, Шаг 5). Гейты: svelte-check 0, тесты зелёные, + prettier чист, `lint:all` = задокументированный остаток, обе ветки открываются. + +15. **Техдолг (чинить по заведённым задачам, не игнорировать правила)**: + - svelte-check error `ToolCard.svelte:19:36` (`goto(string)`). + - фейл `palette.test.ts` (ENOENT `src/app.css` — из-за него `pnpm test` + красный, хотя тесты 607 passed). + - `lint:all`: ~335 design-tokens ошибок в старых kit-компонентах; + неиспользуемые токены preview.css; a11y-warning `ColorField`; + пустой ruleset `Toggle.svelte`. + Целевое состояние перед переездом `old/` (см. №14): svelte-check 0 errors, + `pnpm test` зелёный, `lint:all` — только задокументированный остаток. diff --git a/docs/plan-redesign.md b/docs/plan-redesign.md index fbc339a..b8c181e 100644 --- a/docs/plan-redesign.md +++ b/docs/plan-redesign.md @@ -1,8 +1,10 @@ # План: переезд на новый дизайн (refs) — параллельная сборка -> Статус: план к выполнению. Шаги 5–6 (C17–C21) **отложены** до вывода нового -> дизайна на приемлемый уровень верности — см. `docs/plan-design-fix.md` -> (Этапы 0–1: рефакторинг + верность по `demo-fidelity.md`). +> Статус: план к выполнению. Шаги 5–6 (C17–C21) остаются **следующим этапом**. +> Они больше не привязаны к «верности против рефа»: `docs/archive/plan-design-fix.md` +> закрыт (2026-09-07, дизайн ушёл вперёд от `refs-html/`), аудит против рефа +> не информативен и прекращён. Дальнейшее качество — ручное ревью + `lint:all`. +> Шаг 37 (переезд старых файлов в папки `old/`) вынесен в `backlog.md`. > > Источники: `refs/` — Next/React-референс (правда по пикселям и интерактиву), > `refs-html/` — статические HTML-снимки для быстрого просмотра в браузере. @@ -343,11 +345,13 @@ src/routes/preview/tools/[id]/+page.svelte (доказательство отсутствия регресса). Фиксы по результатам — отдельными мелкими коммитами. -### Шаг 5. Сделать новый дизайн основным — ОТЛОЖЕНО +### Шаг 5. Сделать новый дизайн основным — СЛЕДУЮЩИЙ ЭТАП -> Выполняется только после Этапов 0–1 из `docs/plan-design-fix.md` (новый -> дизайн доведён до приемлемой верности). Пока не трогаем `preview/*` и -> `(old)/`. +> Раньше планировалось после «верности к рефу» (Этапы 0–1 +> `docs/archive/plan-design-fix.md`) — план закрыт, гейт снят (2026-09-07). +> Перед стартом C17 выполнить переезд старых файлов в папки `old/` +> (backlog: «Переезд старых файлов в `old/`», шаг 37 закрытого +> `docs/archive/plan-composite-params.md`). Пока не трогаем `preview/*` и `(old)/`. - [ ] **[C17]** Перенести `preview/*` → реальные маршруты (move), удалить `(old)/`, корневой `+layout.svelte` импортирует `design2.css` + новый shell. diff --git a/docs/roadmap.md b/docs/roadmap.md index 1079bd6..e51f201 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,5 +1,11 @@ # План разработки: easy-png-tools +> **Статус (2026-09-07):** Фаза 1 (полноценный TS-сайт) в основном выполнена — +> сайт живёт, каталог переведён в типизированный `registry-new` (121/125), +> идёт редизайн на `preview/*` по `plan-redesign.md` (параллельная ветка, +> старый UI на `(old)/`). Фазы 2–8 (эталоны, Rust/wasm, CLI, harness) — +> будущие, разделам ниже не запущены. + ## 0. Решения - **Набор PNG-утилит, всё в браузере** (SvelteKit + `adapter-static`), данные не покидают машину. @@ -124,9 +130,9 @@ easy-png-tools/ ## 5. Команды верификации ```bash -cd web && npm run dev # разработка (Фаза 1+) -cd web && npm run build # статический экспорт -npx playwright test # эталоны + UI-регресс (Фаза 3+) -cargo test # Rust-ядро против эталонных файлов (Фаза 4+) +pnpm dev # разработка (Фаза 1+, обёртка `pnpm --dir web dev`) +pnpm build # статический экспорт (обёртка `pnpm --dir web build`) +pnpm --dir web exec playwright test # эталоны + UI-регресс (Фаза 3+) +cargo test # Rust-ядро против эталонных файлов (Фаза 4+) harness compare tests/reference # сквозная сверка native + wasm (Фаза 7) ```