From 9fdd960d81b78f037cd7a3daf0f50316e72d598d Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Sat, 12 Sep 2026 18:57:26 +0500 Subject: [PATCH] docs: update backlog --- docs/backlog.md | 77 ++++++++++--------------------------------------- 1 file changed, 16 insertions(+), 61 deletions(-) diff --git a/docs/backlog.md b/docs/backlog.md index 3e59275..2c7e22a 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -2,23 +2,8 @@ ## 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 - прозрачность должны быть настраиваемой 0-100%, а не переключателем - [ ] обдумать объединение пар `inputMode + source` и `resultKind + result` в @@ -39,17 +24,7 @@ шрифты с кириллицей? сделать галочку "только с кириллицей"??? (решение о наборе и лицензиях: `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) -- [x] не работают генераторы картинок (create-empty-png) -- [x] генераторы работают не автоматически - требуется нажать кнопку generate - (create-empty-png) - [ ] square-mask-png - проверить работу - параметры неверно считаются. width - 100, height - 100, x - 100, y - 100, обрезает 50% на 50% картинку - [ ] прикрутить кастомный color picker (есть в old), добавить прозрачность @@ -72,8 +47,6 @@ ## Переезд -- [x] составить план переноса preview -> корень, старый корень -> old -- [x] сам перенос (C17) — `docs/archive/plan-c17.md` - [ ] добавить i18n в preview ## SEO/GEO @@ -142,35 +115,27 @@ Открытый вопрос: что делать с несовместимыми параметрами (text-source ↔ file). -2. **UI-эксперимент: параметры между исходником и результатом** — оценка S/M. - Раскладка «Исходник → Параметры → Результат» в один ряд вместо параметров - отдельным блоком снизу. Проверить на узких экранах; возможно за флагом/A-B, - чтобы сравнить с текущей. Перекрыто редизайном: старый план - (`docs/archive/plan-inline-params.md`) закрыт, страницы инструментов теперь - `SchemaToolView`/`SchemaPreview`. Эксперимент переосмыслить уже для нового - этапа инструментов (сетка source|params|result), если понадобится. - -3. **Сворачивать инструменты в chain** — оценка S. Тоггл сворачивания звена до +2. **Сворачивать инструменты в chain** — оценка S. Тоггл сворачивания звена до заголовка «Шаг n: название» (превью скрываются). Состояние свёрнутости помнить в workspace-pipeline. -4. **Несколько цепочек: сохранение и загрузка** — оценка M. Именованные цепочки +3. **Несколько цепочек: сохранение и загрузка** — оценка M. Именованные цепочки в localStorage (список, создать/переименовать/удалить), быстрое переключение. Формат экспортного JSON расширить опциональным полем имени, старые файлы читаются как безымянные. -5. **Batch-обработка архивов выбранным chain** — оценка L. Вход — zip-архив +4. **Batch-обработка архивов выбранным chain** — оценка L. Вход — zip-архив картинок (распаковка в браузере), прогон текущего или выбранного сохранённого chain по каждому файлу, сборка результата обратно в zip для скачивания. Зависит от п.4 (выбор цепочки) и от экспортного формата pipeline JSON; прогресс и ошибки — пофайлово. -6. **Избранные инструменты (fav tools)** — оценка S/M. Тоггл-звёздочка на +5. **Избранные инструменты (fav tools)** — оценка S/M. Тоггл-звёздочка на карточках каталога, результатах поиска и в шапке страницы инструмента; список id в localStorage. Избранное показывается отдельной секцией сверху каталога и поднимается в выдаче поиска (бонус к popularity при скоринге). -7. **Конвертация формата — НЕ отдельный инструмент, а выбор в кнопке Download** +6. **Конвертация формата — НЕ отдельный инструмент, а выбор в кнопке Download** — оценка M/L. Инструменты `convert-png-to-jpg` / `convert-png-to-webp` (и др. форматы) не должны жить как самостоятельные инструменты цепочки. Вместо этого — бесшовное внедрение выбора формата/качества прямо в кнопку/диалог @@ -186,13 +151,13 @@ (целевой KB, бинарный поиск по k из квантования). Проработать вместе с достройкой download-флоу нового UI. -8. **`watermark-image-png` (водяной знак картинкой)** — оценка M. Отложен из +7. **`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. Отложен из +8. **`png-info` (детальная информация о PNG)** — оценка M/L. Отложен из миграции. Отдельный райз: exif-теги, редактирование, структурированный вывод; нужен свой отдельный случай в UI, не «ещё один text/verdict». возможно нужна вообще отдельная страница, несовместимая с другими инструментами: 1) она @@ -201,32 +166,22 @@ изменить теги, никакого форматирования и изменения в изображение вносить не надо, только в мета информацияю -10. **Region-инструменты** (censor/erase/pixelate-area/blur-area/sharpen-area/ - reverse-area) — ждут UI выделения области на превью. Из - `archive/plan-gap-waves.md` («вне очереди»). +9. **Region-инструменты** (censor/erase/pixelate-area/blur-area/sharpen-area/ + reverse-area) — ждут UI выделения области на превью. Из + `archive/plan-gap-waves.md` («вне очереди»). -11. **Мультифайловые инструменты-потребители** (gif-to-frames, separate-colors) +10. **Мультифайловые инструменты-потребители** (gif-to-frames, separate-colors) — механизм «результат = набор файлов» (1 → many) реализован: `FileResult` + `result: "files"` + скачивание zip-архивом + грид-превью частей. Первый потребитель — `split-into-parts-png`. Остальные подключаются по мере нужды. -12. **Анимационные** (slow-reveal/fade/scrolling) — выход не PNG; отдельное +11. **Анимационные** (slow-reveal/fade/scrolling) — выход не PNG; отдельное решение о формате. Из `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`. -14. ~~**Переезд старых файлов в папки `old/`**~~ — **ЗАКРЫТО.** Старые файлы - (`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. **Контраст текста на акцентных кнопках — пересмотреть после готовности +13. **Контраст текста на акцентных кнопках — пересмотреть после готовности сайта**. Текст `--color-background` на фоне `--color-main`/`--color-accent` (тон 48) даёт контраст ~4.1–4.3 (light) — ниже AA 4.5 для обычного текста; `palette.test.ts` держит для кнопок порог 4.0 (AA large-text) осознанно, как @@ -235,7 +190,7 @@ проверить `--color-danger` (dark, тон 55): текст на нём 4.93 — ок, но light-danger тон 48 = 4.25 на границе. -17. **Отображение маски для инструментов (runMask/preview-mask)** — придумать и +14. **Отображение маски для инструментов (runMask/preview-mask)** — придумать и реализовать процесс показа маски результата. **Контекст:** в старом контракте поле `preview` у `remove-color`/`remove-background` показывало быстрый ч/б превью-маску (`colorMask`/`backgroundMaskPreview`) того, что @@ -250,7 +205,7 @@ инструмент (всегда результат. Оценка — на усмотрение при проработке (S/M). Пока живём без неё. -18. **Процесс работы с инструментами 1 → many и many → 1** — абстракция +15. **Процесс работы с инструментами 1 → many и many → 1** — абстракция результата «набор файлов» оформлена и работает: тип `FileResult`, `result: "files"` в реестре, сериализация через executor, скачивание zip-архивом, грид-превью частей. Реализовано на первом потребителе