# Backlog > Статус: **active**. Продуктовые, UX- и инфраструктурные задачи. Здесь только > **открытые** задачи: выполненные удаляются, а критичные для проекта факты из > них переносятся в тематический документ (архитектура, quality gates, lint, > e2e) по мере закрытия. > > «Что сознательно не вводим и почему» живёт в `docs/decisions.md`, архитектура > — в `docs/architecture.md`. Raw-находки UX-аудита — `docs/tools-audit.md`, их > разбивка на волны — `docs/plan-fields-audit-fixes.md`. > > Ids инструментов сверять с `web/src/lib/registry/`; полный список — > `docs/tools-map.md`. ## lint и прочие правила - [ ] `tseslint.config(...)` deprecated: сигнатура `(...configs: InfiniteDepthConfigWithExtends[]): ConfigArray` помечена устаревшей, нужен переход на `defineConfig` из `typescript-eslint` — `web/eslint.config.js`. - [ ] удалить мёртвые `tools.*.params` из root i18n после проверки потребителей; до этого действует pattern-based policy-исключение (`web/eslint-plugins/README.md`, раздел `dict-consistency`) ## Мелочи всякие Порядок правок полей и раскладки — `docs/plan-fields-audit-fixes.md`, сами находки («что плохо», с датой аудита) — `docs/tools-audit.md`. Здесь — как это исправить; находка в аудите не отменяет задачу здесь. - [ ] Пересмотреть тесты - исправить всякие хрупкие, которые проверяют количество инструментов, точное совпадение текстов, поиск по `img[alt="Result image"]`, svelte классам и тому подобные - [ ] нужен инструмент для удаления фона по выбранной точке - удалять внутри выделенной области - [ ] сделать конвертацию в смайлики\награды для твитча (6 размеров или выбор какой размер и 2 сетки) - [ ] неудобно настраивать ползунками, некоторые инструменты удобнее настроить через drag-n-drop. звучит сложно, но надо придумать процесс - [ ] можно ли в тестах получать i18n ключ вместо текста? - [ ] убрать в тестах все нестандартные символы `→`, длинные тире и т.д. - [ ] Пересмотреть прозрачность в инструментах - Create empty PNG - прозрачность должны быть настраиваемой 0-100%, а не переключателем - [ ] обдумать объединение пар `inputMode + source` и `resultKind + result` в единую структуру, позволит упростить некоторые вещи - например `sourceValue` \ `resultValue` в `SchemaPreview.svelte` - [ ] Рассмотреть необходимость всех этих пропсов в `SchemaPreview.svelte` они дублируют друг друга `ontextsource`, `onrendertext`, `oncopytext`, `ondownloadtxt`, `ondownload`, - [ ] Переделать внешний вид инструментов без настроек, например Remove alpha channel PNG "remove-alpha-channel-png". Сейчас выглядит слишком пустым. - [ ] Убрать описание формата в отображении исходник\результат - это должно быть в кнопке Download - [ ] Кнопка download должна сразу писать какой формат сейчас, быть с селектором формата и подсвечивать предупреждение если формат не совместим (альфа канал) - [ ] Пересмотреть поля - Plate, Position, Font Style - сейчас второй label - [ ] Font Style - обдумать выбор шрифта (google fonts???) как организовать шрифты с кириллицей? сделать галочку "только с кириллицей"??? (решение о наборе и лицензиях: `docs/plan-platform.md` §4 — только OFL/Apache с паспортом, семейства с кириллицей) - [ ] поле ввода текста - сделать по умолчанию нормального размера, а не одну строку для svg - форматирование или подсветку синтаксиса??? для bin\hex - форматирование по колонкам??? для hex\bytes\rgba - пример в placeholder - [ ] сделать загрузку картинки исходника по ctrl+v и drag-and-drop (dropzone) - [ ] square-mask-png - проверить работу - параметры неверно считаются. width - 100, height - 100, x - 100, y - 100, обрезает 50% на 50% картинку - [ ] прикрутить кастомный color picker, добавить прозрачность (range?) - [ ] проверить настройки range slider на crop-png - слишком большие значения - [ ] для range slider field - добавить поле для ввода цифр и кнопку сброса значения - [ ] для keep Aspect field - пересчитывать второе поле, учитывать какое было изменено - [ ] обновить страницу kit или сделать storybook - [ ] Слаги инструментов (`*-png`) — **развести `id` и адрес страницы.** Инструменты работают с любым форматом, но называются `crop-png`, `resize-png`; имя в коде, пайплайнах и i18n должно быть `crop`, `resize`, а адрес и имя скачиваемого файла — прежними (`/tools/crop-png` → `crop-png.png`). Решение и его SEO-последствия: `docs/plan-seo.md` §0; текущее состояние (поля `slug` нет, роут — `tools/[id]`) — `docs/architecture.md`, раздел 3. Порядок работ: 1. добавить `slug` в `ToolEntry` + `toolSlug()` / `getToolBySlug()` в `registry/index.ts`, проверку уникальности `slug` в `registry.test.ts`; 2. перевести `routes/tools/[id]` → `[slug]` (`entries()`, `load()`, `+page.svelte`), `ToolCard`, крошку в `+layout.svelte` и имя файла download в `SchemaToolView` на `toolSlug(tool)`; старые адреса продолжают работать, редиректы не нужны; 3. переименовать `id` волнами по группам реестра (`convert`, `alpha`, `color`, `geometry`, `filters`, `analyze`, `generate`, `text`); в каждой волне — `registry/.ts`, ключи `tools.*` в `en.ts`/`ru.ts`, `tool-icons.ts`, захардкоженные id в тестах и e2e (`smoke-i18n.test.ts`, `kit/+page.svelte`); 4. `docs/tools-map.md` при этом **не меняется**: карта перечисляет id, а они остаются прежними как адреса. Обратной совместимости не делаем: формат пайплайна ещё не устоялся, старые экспорты и записи в localStorage после переименования просто перестают открываться — это осознанно, миграция усложнила бы код ради пары пользователей. - [ ] придумать процесс редактирования и настройки pipeline - drag-n-drop, удаление, добавление инструментов. переход один инструмент - pipeline без перезагрузки - [ ] `CatalogToolbar`: фильтры используют сырой `