docs: update plan
This commit is contained in:
@@ -1,10 +1,9 @@
|
|||||||
# План: дожать перевод инструментов в preview и переезд ветки `old/`
|
# План: дожать перевод инструментов в preview и переезд ветки `old/`
|
||||||
|
|
||||||
> Статус: **переведено всё простое, осталось 23 спец-случая.** Основа —
|
> Статус: **переведено 121 из 125; остальные 4 — отложены/закрыты решениями.**
|
||||||
> `plan-composite-params.md` (Фазы 1–5). Текущее
|
> Текущее
|
||||||
> состояние: **101 инструмент из 125 переведены в `registry-new`** (включая
|
> состояние: **121 инструмент переведён в `registry-new`**, старый UI уже живёт
|
||||||
> ранее переведённые 40; из оставшихся 85 перенесены 62 простых), старый UI
|
> на `(old)/`-маршрутах, линтер-изоляция old↔preview на месте
|
||||||
> уже живёт на `(old)/`-маршрутах, линтер-изоляция old↔preview на месте
|
|
||||||
> (плагин `isolation/no-mixed-imports`). Здесь — что сделать, чтобы:
|
> (плагин `isolation/no-mixed-imports`). Здесь — что сделать, чтобы:
|
||||||
>
|
>
|
||||||
> 1. в preview был **весь** каталог инструментов (плюс закрыты известные долги);
|
> 1. в preview был **весь** каталог инструментов (плюс закрыты известные долги);
|
||||||
@@ -18,14 +17,16 @@
|
|||||||
|
|
||||||
## Текущая картина (факты)
|
## Текущая картина (факты)
|
||||||
|
|
||||||
- `registry.ts` + `registry/` — **125 инструментов**; `registry-new/` — **101**;
|
- `registry.ts` + `registry/` — **125 инструментов**; `registry-new/` — **121**.
|
||||||
остаток — **23 спец-случая**. (Ранний подсчёт «104» был занижен: извлечение
|
Не переведены только: `png-info` (отложен, хвост-фича с exif), `compress-png`
|
||||||
суффиксом `-png` теряло каналы `png-to-hsl/…`, текстовые вердикты
|
и `reduce-to-size-png` (закрыто решениями, см. ниже), `watermark-image-png`
|
||||||
`png-info` и т.п. и обратные конвертеры `png-to-base64/…`.)
|
(overlay — единственный реальный остаток).
|
||||||
- Preview (`/preview`) показывает переведённые 101; старый UI работает
|
- Preview (`/preview`) показывает переведённые; старый UI работает
|
||||||
на `/`-маршрутах (группа `(old)/`): `+page`, `demo`, `list-tools`,
|
на `/`-маршрутах (группа `(old)/`): `+page`, `demo`, `list-tools`,
|
||||||
`tools/[id]`. Все «простые» инструменты переведены (color 18, filters 3,
|
`tools/[id]`. Переведено всё кроме четырёх хвостов: color 18, filters 3,
|
||||||
geometry 13, alpha 13, generate 8, analyze-маски 6, text 1).
|
geometry 13, alpha 13 (+watermark-image в остатке), generate 10 (mix/sort),
|
||||||
|
analyze 12 (6 масок + verify + 5 вердиктов), convert 14 (jpg/webp/bmp +
|
||||||
|
5 png→texт + 6 text→png), text `watermark-tile-png`.
|
||||||
- Плагин `isolation/no-mixed-imports` (`web/eslint-plugins/isolation/`)
|
- Плагин `isolation/no-mixed-imports` (`web/eslint-plugins/isolation/`)
|
||||||
полностью разделяет ветки: старый `lib/registry.ts|/registry/**`,
|
полностью разделяет ветки: старый `lib/registry.ts|/registry/**`,
|
||||||
`lib/registry-helpers.ts`, `lib/categories.ts`, `lib/tools/**`,
|
`lib/registry-helpers.ts`, `lib/categories.ts`, `lib/tools/**`,
|
||||||
@@ -42,45 +43,41 @@
|
|||||||
`ColorField.svelte`, пустой ruleset в `Toggle.svelte`, неиспользуемые токены
|
`ColorField.svelte`, пустой ruleset в `Toggle.svelte`, неиспользуемые токены
|
||||||
в `preview.css`.
|
в `preview.css`.
|
||||||
|
|
||||||
## Скоуп перевода: осталось 23 особых случая
|
## Скоуп перевода: переведено всё переводимое (отложено 4 хвоста)
|
||||||
|
|
||||||
Все инструменты без специальных фич переведены (суммарно 62 простых из 85,
|
Каталог дожат до предела текущих решений: переведено 121 из 125. Оставшиеся
|
||||||
плюс ранее переведённые 40). Остаток — 23 инструмента, требующих достройки
|
4 инструмента **отложены осознанно** (не делаем сейчас):
|
||||||
фундамента preview. По категориям:
|
|
||||||
|
|
||||||
- **alpha — 1**: `watermark-image-png`.
|
- **`watermark-image-png` (alpha)** — **отложен**. Нужна overlay-механика
|
||||||
- **analyze — 6**: text-вердикты `png-info`, `png-is-grayscale`,
|
(второе изображение-знак через `getOverlay`/store + параметры
|
||||||
`png-file-size`, `png-is-transparent`, `png-orientation`, `verify-is-png`.
|
scale/opacity/position/margin/aspect); решается отдельно, вместе с вопросом,
|
||||||
- **generate — 2**: `mix-colors-png`, `sort-colors-png` (списки значений).
|
как второй источник изображения вписывается в schema-driven preview.
|
||||||
- **convert — 14**: text-source-конвертеры
|
- **`png-info`** — **отложен осознанно**: будет серьёзно дорабатываться
|
||||||
`base64/data-uri/hex/bytes/rgb-values-to-png` + обратные
|
отдельным райзом (exif-теги, редактирование, структурированный вывод),
|
||||||
`png-to-base64/…`; output/формат `compress-png`, `reduce-to-size-png`,
|
для него нужен свой отдельный случай в UI, не «ещё один text/verdict».
|
||||||
`png-to-bmp`; `svg-to-png` (text-source + DOM).
|
- **`compress-png`** — **закрыт как дубликат** `decrease-color-count-png`:
|
||||||
|
пресеты сжатия 192/96/44 добавлены прямо в схему `decrease-color-count`.
|
||||||
|
- **`reduce-to-size-png`** — **отложен** до достройки кнопки Download
|
||||||
|
(backlog №7, «экспорт с лимитом размера»).
|
||||||
|
|
||||||
### Особые случаи (требуют достройки фундамента, не просто перевод)
|
### Переведено в этом проходе (text-механика)
|
||||||
|
|
||||||
1. **`watermark-image-png`** — нужна overlay-механика: второе изображение-знак
|
- **Типы:** `ToolEntry.input: "file" | "text" | "none"`,
|
||||||
(`getOverlay`/store), которое загружается на странице инструмента и
|
`ToolEntry.result: "image" | "text" | "verdict"`, `OutputFormat` (mime/ext/
|
||||||
применяется поверх. В новом preview это единственный непереведённый
|
qualityParamId) для download.
|
||||||
инструмент с источником-картинкой помимо основного входа. Учесть связь с
|
- **Executor:** `executeFromText` / `executeToText` / `executeTextToText`
|
||||||
`overlay-store` (упомянут в `plan-redesign.md`).
|
(прямые, без worker), экспорт в `preview/executor/index.ts`.
|
||||||
2. **Text-source / text-вердикты** (вход: `base64/data-uri/hex/bytes/
|
- **UI:** `SchemaTextSource` (textarea + Render), `SchemaTextResult`
|
||||||
rgb-values-to-png`, `svg-to-png`; выход-вердикт: `png-to-base64/…`,
|
(кол-блок с Copy/Download .txt или бейдж-вердикт по префиксу Yes/No),
|
||||||
аналитические `png-info`, `png-is-grayscale`, `png-file-size`,
|
интеграция в `SchemaPreview`/`SchemaToolView` (режимы file/text/generate,
|
||||||
`png-is-transparent`, `png-orientation`, `verify-is-png`) — тип `ToolEntry`
|
рендер image/text/verdict, скрытие image-download для text-результата).
|
||||||
уже имеет `toText`/`textToText`/`runFromText`, но executor превью их **не
|
- **Инструменты:** convert 5×png→text (base64/data-uri/hex/bytes/rgb-values),
|
||||||
вызывает** (только `run`/`generate`). Нужно решить, как подаётся текст-вход
|
6×text→png (base64/data-uri/hex/bytes/rgb-values/svg, +width), analyze
|
||||||
(текстовое поле/паста на странице инструмента) и как показывается результат
|
verify-is-png (text→text) и 5 вердиктов (grayscale/file-size/transparent/
|
||||||
для вердиктных инструментов (в конверсиях — не картинка, а текст/бейдж), и
|
orientation). Доработка: `base64ToBytes` сужен до `Uint8Array<ArrayBuffer>`
|
||||||
протащить эти поля через executor/UI.
|
(совместимость с `decodeBytes`).
|
||||||
3. **Output/формат** (`compress-png`, `reduce-to-size-png`, `png-to-bmp`;
|
- **Гейты:** eslint 0, prettier чист, svelte-check — только предсуществующий
|
||||||
пересекается с `convert-png-to-jpg`/`webp`) — по `backlog.md` №7 формат
|
ToolCard, тесты — только предсуществующий фейл `palette.test.ts`.
|
||||||
переезжает в кнопку Download, а не в отдельный инструмент. Перед переводом
|
|
||||||
решить: переводим как инструменты с quality-параметром или дожидаемся
|
|
||||||
достройки download-формата.
|
|
||||||
4. **`mix-colors` / `sort-colors`** — нужен список значений (цвета/веса или
|
|
||||||
источник). В схеме нет list-kind: либо новый kind, либо фиксированное
|
|
||||||
число слотов, либо отложить до отдельной задачи про списки.
|
|
||||||
|
|
||||||
## Известные долги перед переездом (завести tasks и закрыть)
|
## Известные долги перед переездом (завести tasks и закрыть)
|
||||||
|
|
||||||
@@ -96,15 +93,17 @@ a11y `ColorField`, пустой ruleset `Toggle`. Плюс два, мешающ
|
|||||||
## Шаги перевода остатка (порядок)
|
## Шаги перевода остатка (порядок)
|
||||||
|
|
||||||
1. **Простые пачки** — **выполнено**: color (18) → filters (3) → geometry (13)
|
1. **Простые пачки** — **выполнено**: color (18) → filters (3) → geometry (13)
|
||||||
→ alpha (13/14, кроме watermark-image) → generate (8/10) → analyze-маски
|
→ alpha (13/14, кроме watermark-image) → generate (10, включая mix/sort
|
||||||
(6/12) → text `watermark-tile-png`. Каждая пачка после себя гнала гейты
|
через kind `colors`) → analyze-маски (6) → text `watermark-tile-png`.
|
||||||
(eslint/svelte-check/тесты/prettier); в тестах только предсуществующий фейл
|
2. **Text-механика** — **выполнено**: типы `input`/`result` + output-формат,
|
||||||
`palette.test.ts`.
|
executor `executeFromText`/`toText`/`textToText`, UI
|
||||||
2. **Особые случаи** — отдельным переговоренным решением (overlay для
|
`SchemaTextSource`/`SchemaTextResult` + интеграция в preview, перевод
|
||||||
watermark-image, text-source/вердикты — через `toText`/`runFromText` в
|
конвертеров convert (5 png→text + 6 text→png) и analyze (verify + 5
|
||||||
executor, output-формат, списки для mix/sort). Это единственный реальный
|
вердиктов). `png-info` отложен отдельным райзом (exif).
|
||||||
объём для дожатия каталога.
|
3. **Шаг про overlay не делается** — `watermark-image-png` **отложен решением**
|
||||||
3. После категории — `schema.layout` для сгруппированных инструментов
|
(см. «Скоуп перевода» выше), отдельным райзом вместе с вопросом второго
|
||||||
|
источника изображения в schema-driven preview.
|
||||||
|
4. После категории — `schema.layout` для сгруппированных инструментов
|
||||||
(шаг 32-33 паттерн) и ручная проверка в `/preview`.
|
(шаг 32-33 паттерн) и ручная проверка в `/preview`.
|
||||||
|
|
||||||
## Переезд в `old/` (шаг 37 основного плана)
|
## Переезд в `old/` (шаг 37 основного плана)
|
||||||
@@ -135,7 +134,8 @@ a11y `ColorField`, пустой ruleset `Toggle`. Плюс два, мешающ
|
|||||||
дефолты совпадают со старыми, валидация/клампы поведения не меняют,
|
дефолты совпадают со старыми, валидация/клампы поведения не меняют,
|
||||||
результат эквивалентен старому UI (сверить на одинаковых входах).
|
результат эквивалентен старому UI (сверить на одинаковых входах).
|
||||||
2. **Тяжёлые кейсы руками:** генераторы, маски, font-style/plate/gradient на
|
2. **Тяжёлые кейсы руками:** генераторы, маски, font-style/plate/gradient на
|
||||||
всем наборе, watermark-image (после overlay), text-source, output-формат.
|
всем наборе, text-source, output-формат. (`watermark-image` — позже, после
|
||||||
|
overlay-райза.)
|
||||||
3. **Сбор фидбека** — отдельные задачи на каждый найденный фикс; чеклист
|
3. **Сбор фидбека** — отдельные задачи на каждый найденный фикс; чеклист
|
||||||
зафиксировать в этом документе по мере находок (или ссылкой на tasks).
|
зафиксировать в этом документе по мере находок (или ссылкой на tasks).
|
||||||
4. Сверка каталога с `tools-map.md` (покрытие/дедупликация
|
4. Сверка каталога с `tools-map.md` (покрытие/дедупликация
|
||||||
@@ -159,13 +159,14 @@ a11y `ColorField`, пустой ruleset `Toggle`. Плюс два, мешающ
|
|||||||
## Оценка трудозатрат
|
## Оценка трудозатрат
|
||||||
|
|
||||||
| Часть | Сложность | Оценка |
|
| Часть | Сложность | Оценка |
|
||||||
| ---------------------------------------------------------------- | --------------- | --------------------- |
|
| ---------------------------------------------------------------------- | -------------- | ------------------------- |
|
||||||
| Простые инструменты (color/filters/geometry/alpha/generate/маски/text) | Низкая-Средняя | **выполнено** (62 шт) |
|
| Простые инструменты (color/filters/geometry/alpha/generate/маски/text) | Низкая-Средняя | **выполнено** (62 шт) |
|
||||||
| Особые случаи (overlay/text-source/format/списки) | Средняя-Высокая | ~4-6ч + ревью решения |
|
| Text-механика + конвертеры/вердикты | Средняя | **выполнено** (16 шт) |
|
||||||
|
| watermark-image / png-info / reduce-to-size (отложены решениями) | Высокая | отложено, отдельные райзы |
|
||||||
| Долги (ToolCard, palette.test.ts, lint:all остаток) | Средняя | ~2-4ч |
|
| Долги (ToolCard, palette.test.ts, lint:all остаток) | Средняя | ~2-4ч |
|
||||||
| Переезд в `old/` + конфиг плагина + гейты | Средняя-Низкая | ~2-4ч |
|
| Переезд в `old/` + конфиг плагина + гейты | Средняя-Низкая | ~2-4ч |
|
||||||
| Проверка/фидбек + правки | Зависит | ~3-6ч |
|
| Проверка/фидбек + правки | Зависит | ~3-6ч |
|
||||||
| **Итого** | | **~11-20ч** по фазам |
|
| **Итого** | | **~9-18ч** по фазам |
|
||||||
|
|
||||||
> Оценки ориентировочные; особые случаи — с ревью решения, объём финальных
|
> Оценки ориентировочные; особые случаи — с ревью решения, объём финальных
|
||||||
> правок по фидбеку не предсказуем.
|
> правок по фидбеку не предсказуем.
|
||||||
|
|||||||
Reference in New Issue
Block a user