mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
docs: large update docs
This commit is contained in:
+33
-25
@@ -5,7 +5,8 @@
|
||||
- [x] Кросс-языковой линтер словарей (warn-only: паритет ключей, пустые
|
||||
значения, совпадение `{placeholder}`-переменных между всеми локалями) —
|
||||
правило `i18n/dict-consistency`, детали в §Фаза 8
|
||||
`docs/plan-preview-i18n.md`
|
||||
`docs/plan-preview-i18n.md`. Правило реализовано; доведение baseline до
|
||||
zero-warning вынесено в Q2 `docs/plan-codebase-quality.md`.
|
||||
- [ ] проверка дублирования кода html - div с одинаковым классом и т.д. (глянуть
|
||||
что за `SonarLint` или написать кастомный линтер)
|
||||
- [ ] проверка текстов в svelte\ts\html - всё тексты должны быть через i18n
|
||||
@@ -109,29 +110,36 @@
|
||||
|
||||
Зарегистрированы при написании e2e (`web/e2e/`, `pnpm --dir web test:e2e`) и
|
||||
ручного чек-листа — см. `docs/checklist-manual-testing.md` (раздел G). Каждый
|
||||
зафиксирован как `test.fixme`. После фикса бага: убрать соответствующий
|
||||
`test.fixme` и отметить пункт 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`. Кнопки и не должно быть, все процессы
|
||||
должны запускаться автоматически
|
||||
1. **Генераторы без автоматического результата** — все 21 инструмент категории
|
||||
GENERATE открываются, но в UI нет полей схемы и результата; доступны только
|
||||
RU/EN/Reset. В `SchemaToolView.svelte` уже есть auto-run через debounce,
|
||||
поэтому отдельная кнопка Generate не требуется. Ожидание: поля схемы,
|
||||
автоматический запуск по дефолтам и результат-картинка. Fixme:
|
||||
`web/e2e/generators.spec.ts`. Кнопка Generate не добавляется без отдельного
|
||||
UX-решения.
|
||||
2. **resize-png с дефолтами падает** — схема по умолчанию `size: 0×0` +
|
||||
`keepAspect: true` → при загрузке ЛЮБОГО PNG сразу `errors.resizeSize`
|
||||
(alert), результата нет. `registry-new/geometry.ts`. Ожидание: осмысленный
|
||||
дефолт-размер (например, исходный) либо кнопка, а не авто-ошибка.
|
||||
(alert), результата нет. `web/src/lib/registry/geometry.ts`. Ожидание:
|
||||
осмысленный дефолт-размер (например, исходный) либо отдельный режим ввода, а
|
||||
не авто-ошибка.
|
||||
3. **crop-png с дефолтами падает** — аналогично: `width: 0, height: 0` → сразу
|
||||
`errors.cropSize`. `registry-new/geometry.ts`. Ожидание: базовый кроп по
|
||||
умолчанию либо внятное предзаполнение.
|
||||
`errors.cropSize`. `web/src/lib/registry/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»).
|
||||
5. **Theme storage key в e2e устарел** — production использует ключ `theme`, а
|
||||
`web/e2e/navigation.spec.ts:30-48` проверяет `easy-png-tools:theme`.
|
||||
Ожидание: исправить тест на фактический контракт и снять `test.fixme`.
|
||||
6. **Reset и auto-run требуют решения** — `pipeline.spec.ts:55-63` ожидает
|
||||
очистку результата, но текущий `SchemaToolView.svelte:162-173` может сразу
|
||||
перезапустить обработку. Нужно определить семантику Reset, затем исправить
|
||||
тест и снять `test.fixme`.
|
||||
|
||||
## Идеи
|
||||
|
||||
@@ -168,7 +176,7 @@
|
||||
**Download**: юзер скачивает результат в нужном формате (mime/ext/quality), а
|
||||
pipeline при этом не усложняется лишним звеном. **Сделано (2026-09):**
|
||||
механическая часть реализована в preview — `ToolEntry.output`
|
||||
(`OutputFormat`: mime/ext/qualityParamId) в `registry-new/types.ts`;
|
||||
(`OutputFormat`: mime/ext/qualityParamId) в `web/src/lib/registry/types.ts`;
|
||||
`SchemaToolView.download()` кодирует по `output` (jpg/webp/bmp уже настроены;
|
||||
`png-to-bmp` переведён сюда же). **Осталось (UX-райз «Download»):**
|
||||
- выбор формата/качества прямо в кнопке/диалоге Download для любого
|
||||
@@ -221,15 +229,15 @@
|
||||
контракте поле `preview` у `remove-color`/`remove-background` показывало
|
||||
быстрый ч/б превью-маску (`colorMask`/`backgroundMaskPreview`) того, что
|
||||
будет вырезано. При миграции на единый `run(ctx)` поле убрано (шаг 8,
|
||||
`registry-new/alpha.ts`) — новый executor и schema-превью зовут `run()`
|
||||
напрямую, маска пока не нужна. **Идея 1:** дать каждому `run` возможность
|
||||
вернуть (или инструмент — объявить) `runMask` — ч/б изображение маски
|
||||
изменений либо иной подход (отдельное поле `mask` + функция маски, второй
|
||||
результат, overlay). Оценка — на усмотрение при проработке (S/M). Пока живём
|
||||
без неё. **Идея 2:** каждый `run` возвращает два изображения - для
|
||||
отображения (показывает маску или сам результат), и для передачи в следующий
|
||||
инструмент (всегда результат. Оценка — на усмотрение при проработке (S/M).
|
||||
Пока живём без неё.
|
||||
`web/src/lib/registry/alpha.ts`) — новый executor и schema-превью зовут
|
||||
`run()` напрямую, маска пока не нужна. **Идея 1:** дать каждому `run`
|
||||
возможность вернуть (или инструмент — объявить) `runMask` — ч/б изображение
|
||||
маски изменений либо иной подход (отдельное поле `mask` + функция маски,
|
||||
второй результат, overlay). Оценка — на усмотрение при проработке (S/M).
|
||||
Пока живём без неё. **Идея 2:** каждый `run` возвращает два изображения -
|
||||
для отображения (показывает маску или сам результат), и для передачи в
|
||||
следующий инструмент (всегда результат. Оценка — на усмотрение при
|
||||
проработке (S/M). Пока живём без неё.
|
||||
|
||||
15. **Процесс работы с инструментами 1 → many и many → 1** — абстракция
|
||||
результата «набор файлов» оформлена и работает: тип `FileResult`,
|
||||
|
||||
Reference in New Issue
Block a user