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:
+6
-5
@@ -534,7 +534,6 @@
|
|||||||
placeholder="Motion prompt for this extension…"
|
placeholder="Motion prompt for this extension…"
|
||||||
:keep-items="keepPrompts.video"
|
:keep-items="keepPrompts.video"
|
||||||
keep-heading="Video prompts"
|
keep-heading="Video prompts"
|
||||||
:disabled="videoBusy"
|
|
||||||
/>
|
/>
|
||||||
<DurationField v-model="item.duration" class="mt-3" label="Duration" />
|
<DurationField v-model="item.duration" class="mt-3" label="Duration" />
|
||||||
<LoraSelect
|
<LoraSelect
|
||||||
@@ -1413,7 +1412,7 @@
|
|||||||
{{ lastFrameLoading ? 'Reading last frame…' : 'Last frame preview unavailable' }}
|
{{ lastFrameLoading ? 'Reading last frame…' : 'Last frame preview unavailable' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<label class="block text-sm">
|
<div class="block text-sm">
|
||||||
<span class="mb-1 block text-zinc-400">Extension prompt</span>
|
<span class="mb-1 block text-zinc-400">Extension prompt</span>
|
||||||
<PromptField
|
<PromptField
|
||||||
v-model="extendPrompt"
|
v-model="extendPrompt"
|
||||||
@@ -1422,10 +1421,9 @@
|
|||||||
placeholder="Continue the motion from this frame…"
|
placeholder="Continue the motion from this frame…"
|
||||||
:keep-items="keepPrompts.video"
|
:keep-items="keepPrompts.video"
|
||||||
keep-heading="Video prompts"
|
keep-heading="Video prompts"
|
||||||
:disabled="lastFrameLoading || videoBusy"
|
|
||||||
textarea-class=""
|
textarea-class=""
|
||||||
/>
|
/>
|
||||||
</label>
|
</div>
|
||||||
<DurationField
|
<DurationField
|
||||||
v-model="extendDuration"
|
v-model="extendDuration"
|
||||||
label="Extension duration"
|
label="Extension duration"
|
||||||
@@ -5698,7 +5696,10 @@ async function loadLastFrame(id: string) {
|
|||||||
lastFrameLoading.value = true
|
lastFrameLoading.value = true
|
||||||
const gen = ++lastFrameGen
|
const gen = ++lastFrameGen
|
||||||
try {
|
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 (gen !== lastFrameGen) return
|
||||||
if (lastFrameObjectUrl) URL.revokeObjectURL(lastFrameObjectUrl)
|
if (lastFrameObjectUrl) URL.revokeObjectURL(lastFrameObjectUrl)
|
||||||
lastFrameObjectUrl = URL.createObjectURL(blob)
|
lastFrameObjectUrl = URL.createObjectURL(blob)
|
||||||
|
|||||||
Reference in New Issue
Block a user