mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
feat: flow for multiple files - pipeline, tools
This commit is contained in:
@@ -107,6 +107,13 @@ registry/{tools,pages}/*.ts
|
||||
`registry-schema.ts`, поэтому добавление вида поля не трогает страницы.
|
||||
- **Модель превью отделена от вёрстки.** `schema-preview-model.ts` — чистая
|
||||
функция, покрыта unit-тестами; `SchemaPreview.svelte` только рисует её вывод.
|
||||
- **Цепочка работает над набором файлов (fan-out).** `run-chain.ts`: «ток» между
|
||||
шагами — массив именованных изображений (одиночная загрузка = набор из
|
||||
одного); image-шаг применяется к каждому файлу, files-шаг (split) склеивает
|
||||
имена частей (`<вход>-<часть>`), analyze-шаг (text/verdict) при batch-входе
|
||||
видит первый файл. Шаг роняет цепочку, только если упали все файлы
|
||||
(`ChainStepError`), частичные сбои — warnings. Мультивыбор файлов в drop-зоне;
|
||||
набор на выходе скачивается zip через `zip.ts`.
|
||||
|
||||
## 3. Инструмент и страница
|
||||
|
||||
|
||||
+13
-27
@@ -18,33 +18,20 @@
|
||||
- [ ] посмотреть реализацию flip animation svelte для анимации переключения
|
||||
режима aligned\normal
|
||||
- [ ] переделать визуал toggle компонента (которым режим переключается)
|
||||
- [ ] **Идея 4. Batch-обработка архивов выбранным chain** — оценка L. Вход —
|
||||
zip-архив картинок (распаковка в браузере), прогон текущего или выбранного
|
||||
сохранённого chain по каждому файлу, сборка результата обратно в zip для
|
||||
скачивания. Зависит от идеи 3 (выбор цепочки) и от экспортного формата
|
||||
pipeline JSON; прогресс и ошибки — пофайлово.
|
||||
- [ ] **Идея 15. Набор файлов в пайплайне: 1 → many не должен быть
|
||||
терминальным** — оценка L. **Сейчас** `execute` принимает один
|
||||
`source: PixelImage | undefined` и возвращает один `ToolResult`, а
|
||||
`SchemaToolView` раскладывает вывод в `result` / `fileResult` /
|
||||
`textResult` по `resultKind` — поэтому шаг с `result: "files"` упирается в
|
||||
конец цепочки. **Направление:** следующий инструмент применяется **ко всем
|
||||
картинкам** предыдущего результата (fan-out), а many → 1 (вход = архив или
|
||||
несколько файлов) — обратная сторона того же контракта. Терминальными
|
||||
остаются только результаты, которые не картинка (text, verdict). Что
|
||||
обдумать: - где проходит граница: один вызов `run(ctx)` на файл (имя части
|
||||
склеивается в `FileResult.files`) или батч целиком на стороне исполнителя;
|
||||
`executor/protocol.ts` `files` уже сериализуются, но при батче нужен
|
||||
прогресс и отмена; - частичные ошибки: один битый файл не должен ронять
|
||||
весь шаг — нужен per-file отчёт, а не один `ToolError` на шаг; - имена
|
||||
частей на каждом шаге и Download для набора (сейчас zip по `page.slug`,
|
||||
`SchemaToolView.download()`); - обратная сторона: распаковка zip в
|
||||
браузере, порядок файлов, поведение many → 1 → many в одной цепочке.
|
||||
Зависит от идеи 10 (остальные потребители 1 → many) и идеи 4 (batch по
|
||||
архиву), `docs/roadmap.md` фаза 8 «batch-страница».
|
||||
- [ ] **Идея 4. Batch-обработка архивов выбранным chain** — оценка L. Fan-out и
|
||||
мультивыбор уже есть (идея 15: `web/src/lib/run-chain.ts`, zip-выгрузка
|
||||
набора). Осталось: zip на вход (распаковка в браузере, порядок файлов,
|
||||
поведение many → 1 → many), прогресс и отмена пофайлово, запуск по
|
||||
сохранённой цепочке из `/chains`.
|
||||
- [ ] **Идея 15. Остатки fan-out** — сделано: 1 → many не терминален,
|
||||
мультизагрузка, склейка имён, per-file ошибки с warning. Отложено:
|
||||
parts-grid на промежуточных тайлах (сейчас первая картинка набора),
|
||||
прогресс/отмена, analyze-шаги пофайлово (сейчас firstOnly-warning).
|
||||
|
||||
## Инструменты
|
||||
|
||||
- [ ] split-to-parts, загружаем картинку, после этого переключаемся на режим by
|
||||
tile - интерфейс начинает тормозить. уже пора переходить на worker\wasm?
|
||||
- [ ] remove-alpha-channel - дубль инструмента с выбором цвета на замену, что с
|
||||
такими делать вообще? оставить как seo? можно ли под капотом использовать
|
||||
другой инструмент с хардкодед настройками?
|
||||
@@ -54,9 +41,6 @@
|
||||
выделенной области
|
||||
- [ ] сделать конвертацию в смайлики\награды для твитча (6 размеров или выбор
|
||||
какой размер - 112\56\28px или 72\36\18)
|
||||
- [ ] сделать несколько проходное сжатие png для получения необходимого размера
|
||||
файлов, посмотреть реализацию в
|
||||
[twitch-emote-resizer](https://github.com/tma02/twitch-emote-resizer)
|
||||
- [ ] Font Style - обдумать выбор шрифта (google fonts???) как организовать
|
||||
шрифты с кириллицей? сделать галочку "только с кириллицей"??? (решение о
|
||||
наборе и лицензиях: `docs/plan-platform.md` §4 — только OFL/Apache с
|
||||
@@ -134,6 +118,8 @@
|
||||
|
||||
## UI и качество
|
||||
|
||||
- [ ] при загрузке нескольких файлов, показывает source не той же высоты, как
|
||||
result
|
||||
- [ ] split to parts - посмотреть вариант с toggle component - может будет
|
||||
удобнее чем sectioned buttons
|
||||
- [ ] чип «Маска» (`resultCard.maskToggle` на тайлах результата) — попробовать
|
||||
|
||||
Reference in New Issue
Block a user