From 4840b2719dace82d5305b0c2be4010ce48d6a8c9 Mon Sep 17 00:00:00 2001 From: Towsty Date: Wed, 26 Aug 2026 23:31:05 -0500 Subject: [PATCH] Match V2 turbo to the local graph: FL2VA models and 6 lightning steps. Co-authored-by: Cursor --- pages/index.vue | 6 +++--- server/api/extend.post.ts | 2 +- server/api/generate.post.ts | 2 +- server/utils/watch.ts | 2 +- server/utils/workflow.ts | 2 +- utils/videoSteps.ts | 4 ++++ 6 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 utils/videoSteps.ts diff --git a/pages/index.vue b/pages/index.vue index 16725c5..67b9d53 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -348,7 +348,7 @@

Steps

- +
@@ -512,7 +512,7 @@

{{ elapsedLabel }} - · step {{ step }}/{{ maxStep || (turbo ? 8 : 20) }} + · step {{ step }}/{{ maxStep || defaultVideoSteps(turbo, videoWorkflow) }}

Video generation continues in the background.

@@ -2372,7 +2372,7 @@ async function generate() { body.append('width', String(outputSize.value.width)) body.append('height', String(outputSize.value.height)) body.append('turbo', String(turbo.value)) - body.append('steps', String(turbo.value ? 8 : 20)) + body.append('steps', String(defaultVideoSteps(turbo.value, videoWorkflow.value))) body.append('duration', String(duration.value)) body.append('cfg', String(cfg.value)) body.append('fps', String(fps.value)) diff --git a/server/api/extend.post.ts b/server/api/extend.post.ts index 109c9fe..0321283 100644 --- a/server/api/extend.post.ts +++ b/server/api/extend.post.ts @@ -64,7 +64,7 @@ export default defineEventHandler(async (event) => { const cfg = parseCfg(source.cfg, turbo) const samplerName = parseSampler(source.samplerName) const scheduler = parseScheduler(source.scheduler) - const steps = Number(source.steps || (turbo ? 8 : 20)) + const steps = Number(source.steps || defaultVideoSteps(turbo, parseVideoWorkflow(source.workflow))) const seed = Math.floor(Math.random() * 2_147_483_647) const length = frameLength(durationSeconds, fps) const width = source.width || 1344 diff --git a/server/api/generate.post.ts b/server/api/generate.post.ts index 1a41313..f05ebe7 100644 --- a/server/api/generate.post.ts +++ b/server/api/generate.post.ts @@ -116,7 +116,7 @@ export default defineEventHandler(async (event) => { const { width, height } = resolveOutputSize(fields.aspect, image.data, Number(fields.width), Number(fields.height)) const turbo = fields.turbo !== 'false' - const steps = Number(fields.steps || (turbo ? 8 : 20)) + const steps = Number(fields.steps || defaultVideoSteps(turbo, workflow)) const seed = fields.seed && fields.seed !== 'random' ? Number(fields.seed) : Math.floor(Math.random() * 2_147_483_647) diff --git a/server/utils/watch.ts b/server/utils/watch.ts index b8ee101..806bc85 100644 --- a/server/utils/watch.ts +++ b/server/utils/watch.ts @@ -4,7 +4,7 @@ import type { Job, JobEvent } from '~/server/utils/jobs' function classifyError(message: string) { const lower = message.toLowerCase() if (lower.includes('out of memory') || (lower.includes('cuda') && lower.includes('alloc')) || lower.includes('vram')) { - return 'ComfyUI VRAM allocation failed. Try Turbo (8 steps) or a smaller aspect ratio.' + return 'ComfyUI VRAM allocation failed. Try Turbo or a smaller aspect ratio.' } if (lower.includes('econnrefused') || lower.includes('unreachable') || lower.includes('fetch failed')) { return 'ComfyUI host connection dropped. Confirm the desktop instance is running and reachable on the LAN.' diff --git a/server/utils/workflow.ts b/server/utils/workflow.ts index 8b82a70..9b131d3 100644 --- a/server/utils/workflow.ts +++ b/server/utils/workflow.ts @@ -191,7 +191,7 @@ export function buildWorkflow(params: GenerateParams) { graph[qualityId].inputs.value = params.turbo ? 20 : params.steps } if (turboId && graph[turboId]?.class_type === 'PrimitiveInt') { - graph[turboId].inputs.value = params.turbo ? params.steps : 8 + graph[turboId].inputs.value = params.turbo ? params.steps : (params.workflow === 'v2' ? 6 : 8) } } diff --git a/utils/videoSteps.ts b/utils/videoSteps.ts new file mode 100644 index 0000000..5ff172e --- /dev/null +++ b/utils/videoSteps.ts @@ -0,0 +1,4 @@ +export function defaultVideoSteps(turbo: boolean, workflow = 'v1') { + if (!turbo) return 20 + return workflow === 'v2' ? 6 : 8 +}