mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 13:36:36 +00:00
docs: update backlog
This commit is contained in:
+16
-61
@@ -2,23 +2,8 @@
|
|||||||
|
|
||||||
## lint и прочие правила
|
## lint и прочие правила
|
||||||
|
|
||||||
- [x] линт правило для `interface Props {...}` + `let {}: Props = $props()`
|
|
||||||
(плагин `conventions`, правило `interface-props`; автофикс для
|
|
||||||
нетипизированной деструктуризации)
|
|
||||||
- [x] линт правило для `object as const`, нежелательно использовать
|
|
||||||
`type Kind = 'a' | 'b' | 'c'` - это приводит к дублированию описаний в
|
|
||||||
разных местах, и к непонятным новым типам типа `type Kind2 = 'a' | 'c'`
|
|
||||||
(правило `conventions/no-string-union-alias`)
|
|
||||||
- [x] можно ли сделать правило для минимизации новых `const` определений? чтобы
|
|
||||||
дубли автоматически определялись? ИИ агент иногда дублирует определения
|
|
||||||
(как линт-правило — нереализуемо без семантики; решено ограничением в
|
|
||||||
AGENTS.md «сначала искать», авто-детект дублей в файле — открытый вопрос)
|
|
||||||
|
|
||||||
## Мелочи всякие
|
## Мелочи всякие
|
||||||
|
|
||||||
- [x] сгенерировать или найти файлы для ручной проверки `A. Краевые PNG-файлы`
|
|
||||||
- [x] при загрузке нового изображения, результат не обновлятеся, только при
|
|
||||||
изменении параметров инструмента
|
|
||||||
- [ ] Пересмотреть прозрачность в инструментах - Create empty PNG - прозрачность
|
- [ ] Пересмотреть прозрачность в инструментах - Create empty PNG - прозрачность
|
||||||
должны быть настраиваемой 0-100%, а не переключателем
|
должны быть настраиваемой 0-100%, а не переключателем
|
||||||
- [ ] обдумать объединение пар `inputMode + source` и `resultKind + result` в
|
- [ ] обдумать объединение пар `inputMode + source` и `resultKind + result` в
|
||||||
@@ -39,17 +24,7 @@
|
|||||||
шрифты с кириллицей? сделать галочку "только с кириллицей"??? (решение о
|
шрифты с кириллицей? сделать галочку "только с кириллицей"??? (решение о
|
||||||
наборе и лицензиях: `docs/plan-platform.md` §4 — только OFL/Apache с
|
наборе и лицензиях: `docs/plan-platform.md` §4 — только OFL/Apache с
|
||||||
паспортом, семейства с кириллицей)
|
паспортом, семейства с кириллицей)
|
||||||
- [ ] Посмотреть темную тему - слишком темная и слишком много оттенка (убавить c
|
|
||||||
в hct?)
|
|
||||||
- [x] на картинке результате при работе дергается высота надписи (высота иконки)
|
|
||||||
- [x] Глянуть что за ошибка (воспроизвелось на blur-png, в том числе и повторно)
|
|
||||||
[баг в хроме](https://issues.chromium.org/issues/556160936)
|
|
||||||
`Uncaught TypeError: Cannot read properties of undefined (reading 'startTime')`
|
|
||||||
`at et.reportAllChanges (anonymous:2:19429)`
|
|
||||||
- [ ] сделать загрузку картинки исходника по ctrl+v и drag-and-drop (dropzone)
|
- [ ] сделать загрузку картинки исходника по ctrl+v и drag-and-drop (dropzone)
|
||||||
- [x] не работают генераторы картинок (create-empty-png)
|
|
||||||
- [x] генераторы работают не автоматически - требуется нажать кнопку generate
|
|
||||||
(create-empty-png)
|
|
||||||
- [ ] square-mask-png - проверить работу - параметры неверно считаются. width -
|
- [ ] square-mask-png - проверить работу - параметры неверно считаются. width -
|
||||||
100, height - 100, x - 100, y - 100, обрезает 50% на 50% картинку
|
100, height - 100, x - 100, y - 100, обрезает 50% на 50% картинку
|
||||||
- [ ] прикрутить кастомный color picker (есть в old), добавить прозрачность
|
- [ ] прикрутить кастомный color picker (есть в old), добавить прозрачность
|
||||||
@@ -72,8 +47,6 @@
|
|||||||
|
|
||||||
## Переезд
|
## Переезд
|
||||||
|
|
||||||
- [x] составить план переноса preview -> корень, старый корень -> old
|
|
||||||
- [x] сам перенос (C17) — `docs/archive/plan-c17.md`
|
|
||||||
- [ ] добавить i18n в preview
|
- [ ] добавить i18n в preview
|
||||||
|
|
||||||
## SEO/GEO
|
## SEO/GEO
|
||||||
@@ -142,35 +115,27 @@
|
|||||||
Открытый вопрос: что делать с несовместимыми параметрами (text-source ↔
|
Открытый вопрос: что делать с несовместимыми параметрами (text-source ↔
|
||||||
file).
|
file).
|
||||||
|
|
||||||
2. **UI-эксперимент: параметры между исходником и результатом** — оценка S/M.
|
2. **Сворачивать инструменты в chain** — оценка S. Тоггл сворачивания звена до
|
||||||
Раскладка «Исходник → Параметры → Результат» в один ряд вместо параметров
|
|
||||||
отдельным блоком снизу. Проверить на узких экранах; возможно за флагом/A-B,
|
|
||||||
чтобы сравнить с текущей. Перекрыто редизайном: старый план
|
|
||||||
(`docs/archive/plan-inline-params.md`) закрыт, страницы инструментов теперь
|
|
||||||
`SchemaToolView`/`SchemaPreview`. Эксперимент переосмыслить уже для нового
|
|
||||||
этапа инструментов (сетка source|params|result), если понадобится.
|
|
||||||
|
|
||||||
3. **Сворачивать инструменты в chain** — оценка S. Тоггл сворачивания звена до
|
|
||||||
заголовка «Шаг n: название» (превью скрываются). Состояние свёрнутости
|
заголовка «Шаг n: название» (превью скрываются). Состояние свёрнутости
|
||||||
помнить в workspace-pipeline.
|
помнить в workspace-pipeline.
|
||||||
|
|
||||||
4. **Несколько цепочек: сохранение и загрузка** — оценка M. Именованные цепочки
|
3. **Несколько цепочек: сохранение и загрузка** — оценка M. Именованные цепочки
|
||||||
в localStorage (список, создать/переименовать/удалить), быстрое переключение.
|
в localStorage (список, создать/переименовать/удалить), быстрое переключение.
|
||||||
Формат экспортного JSON расширить опциональным полем имени, старые файлы
|
Формат экспортного JSON расширить опциональным полем имени, старые файлы
|
||||||
читаются как безымянные.
|
читаются как безымянные.
|
||||||
|
|
||||||
5. **Batch-обработка архивов выбранным chain** — оценка L. Вход — zip-архив
|
4. **Batch-обработка архивов выбранным chain** — оценка L. Вход — zip-архив
|
||||||
картинок (распаковка в браузере), прогон текущего или выбранного сохранённого
|
картинок (распаковка в браузере), прогон текущего или выбранного сохранённого
|
||||||
chain по каждому файлу, сборка результата обратно в zip для скачивания.
|
chain по каждому файлу, сборка результата обратно в zip для скачивания.
|
||||||
Зависит от п.4 (выбор цепочки) и от экспортного формата pipeline JSON;
|
Зависит от п.4 (выбор цепочки) и от экспортного формата pipeline JSON;
|
||||||
прогресс и ошибки — пофайлово.
|
прогресс и ошибки — пофайлово.
|
||||||
|
|
||||||
6. **Избранные инструменты (fav tools)** — оценка S/M. Тоггл-звёздочка на
|
5. **Избранные инструменты (fav tools)** — оценка S/M. Тоггл-звёздочка на
|
||||||
карточках каталога, результатах поиска и в шапке страницы инструмента; список
|
карточках каталога, результатах поиска и в шапке страницы инструмента; список
|
||||||
id в localStorage. Избранное показывается отдельной секцией сверху каталога и
|
id в localStorage. Избранное показывается отдельной секцией сверху каталога и
|
||||||
поднимается в выдаче поиска (бонус к popularity при скоринге).
|
поднимается в выдаче поиска (бонус к popularity при скоринге).
|
||||||
|
|
||||||
7. **Конвертация формата — НЕ отдельный инструмент, а выбор в кнопке Download**
|
6. **Конвертация формата — НЕ отдельный инструмент, а выбор в кнопке Download**
|
||||||
— оценка M/L. Инструменты `convert-png-to-jpg` / `convert-png-to-webp` (и др.
|
— оценка M/L. Инструменты `convert-png-to-jpg` / `convert-png-to-webp` (и др.
|
||||||
форматы) не должны жить как самостоятельные инструменты цепочки. Вместо этого
|
форматы) не должны жить как самостоятельные инструменты цепочки. Вместо этого
|
||||||
— бесшовное внедрение выбора формата/качества прямо в кнопку/диалог
|
— бесшовное внедрение выбора формата/качества прямо в кнопку/диалог
|
||||||
@@ -186,13 +151,13 @@
|
|||||||
(целевой KB, бинарный поиск по k из квантования). Проработать вместе с
|
(целевой KB, бинарный поиск по k из квантования). Проработать вместе с
|
||||||
достройкой download-флоу нового UI.
|
достройкой download-флоу нового UI.
|
||||||
|
|
||||||
8. **`watermark-image-png` (водяной знак картинкой)** — оценка M. Отложен из
|
7. **`watermark-image-png` (водяной знак картинкой)** — оценка M. Отложен из
|
||||||
миграции (`archive/plan-migrate-remaining.md`). Нужна overlay-механика:
|
миграции (`archive/plan-migrate-remaining.md`). Нужна overlay-механика:
|
||||||
второй источник изображения (getOverlay/store), параметры scale/opacity/
|
второй источник изображения (getOverlay/store), параметры scale/opacity/
|
||||||
position/margin/aspect. Решается вместе с вопросом, как второй источник
|
position/margin/aspect. Решается вместе с вопросом, как второй источник
|
||||||
картинки вписывается в schema-driven preview (`SchemaToolView`).
|
картинки вписывается в schema-driven preview (`SchemaToolView`).
|
||||||
|
|
||||||
9. **`png-info` (детальная информация о PNG)** — оценка M/L. Отложен из
|
8. **`png-info` (детальная информация о PNG)** — оценка M/L. Отложен из
|
||||||
миграции. Отдельный райз: exif-теги, редактирование, структурированный вывод;
|
миграции. Отдельный райз: exif-теги, редактирование, структурированный вывод;
|
||||||
нужен свой отдельный случай в UI, не «ещё один text/verdict». возможно нужна
|
нужен свой отдельный случай в UI, не «ещё один text/verdict». возможно нужна
|
||||||
вообще отдельная страница, несовместимая с другими инструментами: 1) она
|
вообще отдельная страница, несовместимая с другими инструментами: 1) она
|
||||||
@@ -201,32 +166,22 @@
|
|||||||
изменить теги, никакого форматирования и изменения в изображение вносить не
|
изменить теги, никакого форматирования и изменения в изображение вносить не
|
||||||
надо, только в мета информацияю
|
надо, только в мета информацияю
|
||||||
|
|
||||||
10. **Region-инструменты** (censor/erase/pixelate-area/blur-area/sharpen-area/
|
9. **Region-инструменты** (censor/erase/pixelate-area/blur-area/sharpen-area/
|
||||||
reverse-area) — ждут UI выделения области на превью. Из
|
reverse-area) — ждут UI выделения области на превью. Из
|
||||||
`archive/plan-gap-waves.md` («вне очереди»).
|
`archive/plan-gap-waves.md` («вне очереди»).
|
||||||
|
|
||||||
11. **Мультифайловые инструменты-потребители** (gif-to-frames, separate-colors)
|
10. **Мультифайловые инструменты-потребители** (gif-to-frames, separate-colors)
|
||||||
— механизм «результат = набор файлов» (1 → many) реализован: `FileResult` +
|
— механизм «результат = набор файлов» (1 → many) реализован: `FileResult` +
|
||||||
`result: "files"` + скачивание zip-архивом + грид-превью частей. Первый
|
`result: "files"` + скачивание zip-архивом + грид-превью частей. Первый
|
||||||
потребитель — `split-into-parts-png`. Остальные подключаются по мере нужды.
|
потребитель — `split-into-parts-png`. Остальные подключаются по мере нужды.
|
||||||
|
|
||||||
12. **Анимационные** (slow-reveal/fade/scrolling) — выход не PNG; отдельное
|
11. **Анимационные** (slow-reveal/fade/scrolling) — выход не PNG; отдельное
|
||||||
решение о формате. Из `archive/plan-gap-waves.md`.
|
решение о формате. Из `archive/plan-gap-waves.md`.
|
||||||
|
|
||||||
13. **HARD-серия** (glitch, barcode, signature-extract, handwritten-digital). Из
|
12. **HARD-серия** (glitch, barcode, signature-extract, handwritten-digital). Из
|
||||||
`archive/plan-gap-waves.md`.
|
`archive/plan-gap-waves.md`.
|
||||||
|
|
||||||
14. ~~**Переезд старых файлов в папки `old/`**~~ — **ЗАКРЫТО.** Старые файлы
|
13. **Контраст текста на акцентных кнопках — пересмотреть после готовности
|
||||||
(`lib/registry.ts`, `lib/registry/`, `lib/registry-helpers.ts`,
|
|
||||||
`lib/categories.ts`, `lib/tools/`, `lib/components/` кроме `kit/`)
|
|
||||||
перенесены в `lib/old/`. Isolation-плагин упрощён до `lib/old/**`. Все
|
|
||||||
импорты обновлены. svelte-check 0, тесты 618/618, lint:all чист, билд
|
|
||||||
проходит.
|
|
||||||
|
|
||||||
15. ~~**Техдолг (чинить по заведённым задачам, не игнорировать правила)**~~
|
|
||||||
ЗАКРЫТО. Подробности: `docs/archive/plan-tech-debt.md`.
|
|
||||||
|
|
||||||
16. **Контраст текста на акцентных кнопках — пересмотреть после готовности
|
|
||||||
сайта**. Текст `--color-background` на фоне `--color-main`/`--color-accent`
|
сайта**. Текст `--color-background` на фоне `--color-main`/`--color-accent`
|
||||||
(тон 48) даёт контраст ~4.1–4.3 (light) — ниже AA 4.5 для обычного текста;
|
(тон 48) даёт контраст ~4.1–4.3 (light) — ниже AA 4.5 для обычного текста;
|
||||||
`palette.test.ts` держит для кнопок порог 4.0 (AA large-text) осознанно, как
|
`palette.test.ts` держит для кнопок порог 4.0 (AA large-text) осознанно, как
|
||||||
@@ -235,7 +190,7 @@
|
|||||||
проверить `--color-danger` (dark, тон 55): текст на нём 4.93 — ок, но
|
проверить `--color-danger` (dark, тон 55): текст на нём 4.93 — ок, но
|
||||||
light-danger тон 48 = 4.25 на границе.
|
light-danger тон 48 = 4.25 на границе.
|
||||||
|
|
||||||
17. **Отображение маски для инструментов (runMask/preview-mask)** — придумать и
|
14. **Отображение маски для инструментов (runMask/preview-mask)** — придумать и
|
||||||
реализовать процесс показа маски результата. **Контекст:** в старом
|
реализовать процесс показа маски результата. **Контекст:** в старом
|
||||||
контракте поле `preview` у `remove-color`/`remove-background` показывало
|
контракте поле `preview` у `remove-color`/`remove-background` показывало
|
||||||
быстрый ч/б превью-маску (`colorMask`/`backgroundMaskPreview`) того, что
|
быстрый ч/б превью-маску (`colorMask`/`backgroundMaskPreview`) того, что
|
||||||
@@ -250,7 +205,7 @@
|
|||||||
инструмент (всегда результат. Оценка — на усмотрение при проработке (S/M).
|
инструмент (всегда результат. Оценка — на усмотрение при проработке (S/M).
|
||||||
Пока живём без неё.
|
Пока живём без неё.
|
||||||
|
|
||||||
18. **Процесс работы с инструментами 1 → many и many → 1** — абстракция
|
15. **Процесс работы с инструментами 1 → many и many → 1** — абстракция
|
||||||
результата «набор файлов» оформлена и работает: тип `FileResult`,
|
результата «набор файлов» оформлена и работает: тип `FileResult`,
|
||||||
`result: "files"` в реестре, сериализация через executor, скачивание
|
`result: "files"` в реестре, сериализация через executor, скачивание
|
||||||
zip-архивом, грид-превью частей. Реализовано на первом потребителе
|
zip-архивом, грид-превью частей. Реализовано на первом потребителе
|
||||||
|
|||||||
Reference in New Issue
Block a user