Keep the extension prompt editable while the last frame loads.

The box was disabled for last-frame extract and a stuck videoBusy flag, so typing died after a finished job.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Towsty
2026-09-02 00:10:52 -05:00
co-authored by Cursor
parent d64a25bbb7
commit b1b005669d
+6 -5
View File
@@ -534,7 +534,6 @@
placeholder="Motion prompt for this extension…"
:keep-items="keepPrompts.video"
keep-heading="Video prompts"
:disabled="videoBusy"
/>
<DurationField v-model="item.duration" class="mt-3" label="Duration" />
<LoraSelect
@@ -1413,7 +1412,7 @@
{{ lastFrameLoading ? 'Reading last frame…' : 'Last frame preview unavailable' }}
</p>
</div>
<label class="block text-sm">
<div class="block text-sm">
<span class="mb-1 block text-zinc-400">Extension prompt</span>
<PromptField
v-model="extendPrompt"
@@ -1422,10 +1421,9 @@
placeholder="Continue the motion from this frame…"
:keep-items="keepPrompts.video"
keep-heading="Video prompts"
:disabled="lastFrameLoading || videoBusy"
textarea-class=""
/>
</label>
</div>
<DurationField
v-model="extendDuration"
label="Extension duration"
@@ -5698,7 +5696,10 @@ async function loadLastFrame(id: string) {
lastFrameLoading.value = true
const gen = ++lastFrameGen
try {
const blob = await $fetch<Blob>(`/api/library/clips/${id}/last-frame`, { responseType: 'blob' })
const blob = await $fetch<Blob>(`/api/library/clips/${id}/last-frame`, {
responseType: 'blob',
signal: AbortSignal.timeout(20_000)
})
if (gen !== lastFrameGen) return
if (lastFrameObjectUrl) URL.revokeObjectURL(lastFrameObjectUrl)
lastFrameObjectUrl = URL.createObjectURL(blob)