Files
2026-09-08 22:41:17 +05:00

15 KiB
Raw Permalink Blame History

Backlog

Мелочи всякие

  • сгенерировать или найти файлы для ручной проверки A. Краевые PNG-файлы
  • Переделать внешний вид инструментов без настроек, например Remove alpha channel PNG "remove-alpha-channel-png". Сейчас выглядит слишком пустым.
  • Убрать описание формата в отображении исходник\результат - это должно быть в кнопке Download
  • Кнопка download должна сразу писать какой формат сейчас, быть с селектором формата и подсвечивать предупреждение если формат не совместим (альфа канал)
  • Пересмотреть поля - Plate, Position, Font Style - сейчас второй label
  • Font Style - обдумать выбор шрифта (google fonts???) как организовать шрифты с кириллицей? сделать галочку "только с кириллицей"???
  • Посмотреть темную тему - слишком темная???
  • на картинке результате при работе дергается высота надписи (высота иконки)
  • Глянуть что за ошибка (воспроизвелось на blur-png, в том числе и повторно) баг в хроме Uncaught TypeError: Cannot read properties of undefined (reading 'startTime') at et.reportAllChanges (anonymous:2:19429)
  • сделать загрузку картинки исходника по ctrl+v и drag-and-drop (dropzone)
  • не работают генераторы картинок (create-empty-png)
  • square-mask-png - проверить работу - параметры неверно считаются. width - 100, height - 100, x - 100, y - 100, обрезает 50% на 50% картинку
  • прикрутить кастомный color picker (есть в old), добавить прозрачность (range?)
  • проверить настройки range slider на crop-png - слишком большие значения
  • для range slider field - добавить поле для ввода цифр и кнопку сброса значения
  • для keep Aspect field - пересчитывать второе поле, учитывать какое было изменено
  • поле ввода текста - сделать по умолчанию нормального размера, а не одну строку для svg - форматирование или подсветку синтаксиса??? для bin\hex - форматирование по колонкам??? для hex\bytes\rgba - пример в placeholder
  • обновить страницу kit или сделать storybook
  • придумать процесс редактирования и настройки pipeline - drag-n-drop, удаление, добавление инструментов. переход один инструмент - pipeline без перезагрузки

Переезд

  • составить план переноса preview -> корень, старый корень -> old
  • добавить i18n в preview

Баги preview

Зарегистрированы при написании e2e (web/e2e/, pnpm --dir web test:e2e) и ручного чек-листа — см. docs/checklist-manual-testing.md (раздел G). Каждый зафиксирован как test.fixme. После фикса бага: убрать соответствующий test.fixme и отметить пункт G в чек-листе как пройденный.

  1. Генераторы без кнопки «Generate» — все 21 инструмент категории GENERATE открываются, но в UI нет кнопки Generate и полей схемы (только RU/EN/Reset); результат через UI недостижим. В SchemaToolView.svelte isGenerator определяется как tool.generate && !tool.run, кнопка рисуется только если ongenerate прокинут, а для генераторов с дефолтным input: "file" — нет. Ожидание: поля схемы + кнопка «Generate», результат-картинка по дефолтам. Fixme: web/e2e/generators.spec.ts. Кнопки и не должно быть, все процессы должны запускаться автоматически
  2. resize-png с дефолтами падает — схема по умолчанию size: 0×0 + keepAspect: true → при загрузке ЛЮБОГО PNG сразу errors.resizeSize (alert), результата нет. registry-new/geometry.ts. Ожидание: осмысленный дефолт-размер (например, исходный) либо кнопка, а не авто-ошибка.
  3. crop-png с дефолтами падает — аналогично: width: 0, height: 0 → сразу errors.cropSize. registry-new/geometry.ts. Ожидание: базовый кроп по умолчанию либо внятное предзаполнение.
  4. Сырые ключи ошибок в UI — alert на tool-странице показывает сырой ключ i18n (errors.resizeSize), а не сообщение из en.ts / ru.ts (там resizeSize: "Width and/or height must be positive"). Проверяется на resize-png / crop-png. Ожидание: человекочитаемое сообщение на текущем языке. Fixme: web/e2e/known-issues.spec.ts (тест «error message localized»).

Идеи

  1. Менять первый инструмент цепочки — оценка M. Сейчас базовый инструмент зафиксирован при открытии страницы; хочется заменить его на другой без разборки цепочки: шаги и их параметры сохраняются, вход перечитывается. Открытый вопрос: что делать с несовместимыми параметрами (text-source ↔ file).

  2. UI-эксперимент: параметры между исходником и результатом — оценка S/M. Раскладка «Исходник → Параметры → Результат» в один ряд вместо параметров отдельным блоком снизу. Проверить на узких экранах; возможно за флагом/A-B, чтобы сравнить с текущей. Перекрыто редизайном: старый план (docs/archive/plan-inline-params.md) закрыт, страницы инструментов теперь SchemaToolView/SchemaPreview. Эксперимент переосмыслить уже для нового этапа инструментов (сетка source|params|result), если понадобится.

  3. Сворачивать инструменты в chain — оценка S. Тоггл сворачивания звена до заголовка «Шаг n: название» (превью скрываются). Состояние свёрнутости помнить в workspace-pipeline.

  4. Несколько цепочек: сохранение и загрузка — оценка M. Именованные цепочки в localStorage (список, создать/переименовать/удалить), быстрое переключение. Формат экспортного JSON расширить опциональным полем имени, старые файлы читаются как безымянные.

  5. Batch-обработка архивов выбранным chain — оценка L. Вход — zip-архив картинок (распаковка в браузере), прогон текущего или выбранного сохранённого chain по каждому файлу, сборка результата обратно в zip для скачивания. Зависит от п.4 (выбор цепочки) и от экспортного формата pipeline JSON; прогресс и ошибки — пофайлово.

  6. Избранные инструменты (fav tools) — оценка S/M. Тоггл-звёздочка на карточках каталога, результатах поиска и в шапке страницы инструмента; список id в localStorage. Избранное показывается отдельной секцией сверху каталога и поднимается в выдаче поиска (бонус к popularity при скоринге).

  7. Конвертация формата — НЕ отдельный инструмент, а выбор в кнопке Download — оценка M/L. Инструменты convert-png-to-jpg / convert-png-to-webp (и др. форматы) не должны жить как самостоятельные инструменты цепочки. Вместо этого — бесшовное внедрение выбора формата/качества прямо в кнопку/диалог Download: юзер скачивает результат в нужном формате (mime/ext/quality), а 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.mdarchive/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 — только задокументированный остаток.
  16. Контраст текста на акцентных кнопках — пересмотреть после готовности сайта. Текст --color-background на фоне --color-main/--color-accent (тон 48) даёт контраст ~4.1–4.3 (light) — ниже AA 4.5 для обычного текста; palette.test.ts держит для кнопок порог 4.0 (AA large-text) осознанно, как компромисс текущего дизайна. После полного завершения редизайна пересмотреть тона (например поднять tone кнопок до ~55) и вернуть порог 4.5. Также проверить --color-danger (dark, тон 55): текст на нём 4.93 — ок, но light-danger тон 48 = 4.25 на границе.