diff --git a/docs/backlog.md b/docs/backlog.md index d0712cf..cb94743 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -70,8 +70,8 @@ - [ ] qr code to text, text to qr code - [ ] bar code to text, text to bar code -- [ ] split-into-parts-png - увеличить максимальные значения, плохо работает для - нарезки ассетов +- [ ] split-into-parts-png - в результате надо выводить размеры получившихся + файлов - [ ] split-into-parts-png — режим «по размеру тайла»: указываешь размер тайла (16×16, 32×32…, список `SIZE_PRESETS`), инструмент сам считает сетку — сценарий «режу спрайтшит, знаю размер тайла, не знаю сетку» (новый режим: @@ -154,6 +154,13 @@ схемой (FA-E1), либо удалить ключ из обеих локалей - [ ] неудобно настраивать ползунками, некоторые инструменты удобнее настроить через drag-n-drop. звучит сложно, но надо придумать процесс +- [ ] не работает drag-n-drop на полях с range slider, похоже включается + drag-n-drop для всей карточки настроек инструмента +- [ ] результат "split-into-parts" может занимать очень много место вертикально, + возможно стоит придумать максимальную высоту и скролл\сворачивание +- [ ] просмотр картинки в оригинальном размере, и возможно с зумом отдельных + областей, чтобы просмотреть мелкие артефакты, выбор разных подложек - + черная\белая\цветные\серая для проверки прозрачных картинок - [ ] обдумать объединение пар `inputMode + source` и `resultKind + result` в единую структуру, позволит упростить некоторые вещи - например `sourceValue` \ `resultValue` в `SchemaPreview.svelte` diff --git a/web/src/lib/components/schema/SchemaResultTile.svelte b/web/src/lib/components/schema/SchemaResultTile.svelte index 58cb5dc..ddfd24a 100644 --- a/web/src/lib/components/schema/SchemaResultTile.svelte +++ b/web/src/lib/components/schema/SchemaResultTile.svelte @@ -102,6 +102,10 @@ display: flex; align-items: center; justify-content: center; + /* Вложен в PreviewTile.canvas: без растяжения сжимался по контенту и + ломал parts-grid в одну колонку. */ + width: 100%; + align-self: stretch; min-height: clamp(var(--space-brand), 30vh, 60vh); border: var(--size-border) solid var(--color-border); border-radius: var(--radius-s); diff --git a/web/src/lib/components/schema/SchemaToolView.svelte b/web/src/lib/components/schema/SchemaToolView.svelte index 87e2375..4c484c0 100644 --- a/web/src/lib/components/schema/SchemaToolView.svelte +++ b/web/src/lib/components/schema/SchemaToolView.svelte @@ -309,7 +309,7 @@ const base = toDisplayError(e); const msg = base.kind === "i18n" ? t(base.key, base.vars) : base.text; throw new Error( - t("chain.stepError", { + t("steps.stepError", { n: i + 1, title: stepTitle(stepTool.id), msg, diff --git a/web/src/lib/registry/registry.test.ts b/web/src/lib/registry/registry.test.ts index 0463a1e..16cdb81 100644 --- a/web/src/lib/registry/registry.test.ts +++ b/web/src/lib/registry/registry.test.ts @@ -699,18 +699,18 @@ describe("split-into-parts", () => { } }); - it("работает максимум 6x6 = 36 частей", async () => { + it("принимает максимальную сетку 32x32 = 1024 части (потолок стража)", async () => { const tool = TOOLS.find((t) => t.id === "split-into-parts")!; const files = asFiles( await tool.run({ source: solid(120, 120), params: sanitizeSchemaParams(tool.schema, { - columns: 6, - rows: 6, + columns: 32, + rows: 32, }), }), ).files; - expect(files).toHaveLength(36); + expect(files).toHaveLength(1024); }); it("выбрасывает errors.tooManyParts при переполнении", () => { diff --git a/web/src/lib/registry/tools/geometry.ts b/web/src/lib/registry/tools/geometry.ts index b9591e9..29dc80a 100644 --- a/web/src/lib/registry/tools/geometry.ts +++ b/web/src/lib/registry/tools/geometry.ts @@ -402,7 +402,7 @@ const tileTool: Tool = { run: imgTool((img, p) => tile(img, p.columns, p.rows)), }; -const MAX_SPLIT_PARTS = 1000; +const MAX_SPLIT_PARTS = 1024; interface SplitPartsParams { columns: number; @@ -413,14 +413,14 @@ export const splitPartsSchema = toolSchema({ columns: field.number({ label: "fields.columns", min: 1, - max: 6, + max: 32, step: 1, default: 2, }), rows: field.number({ label: "fields.rows", min: 1, - max: 6, + max: 32, step: 1, default: 2, }),