Keep family pre/post text on shot queues and wrap the mid prompt at Comfy time.
Later shots were starting a new job without those wrappers, so only the first clip got them. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -53,16 +53,16 @@
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
<label v-if="draft.promptPre" class="block text-sm">
|
||||
<span class="mb-1 block font-medium text-zinc-300">Prompt pre</span>
|
||||
<label class="block text-sm">
|
||||
<span class="mb-1 block font-medium text-zinc-300">Pre-text</span>
|
||||
<textarea v-model="draft.promptPre" rows="2" class="max-h-28 w-full overflow-y-auto rounded-xl border border-white/10 bg-zinc-950 px-3 py-2 text-sm outline-none ring-amber-300/40 [overflow-wrap:anywhere] focus:ring-2 disabled:opacity-70" :disabled="!editable" />
|
||||
</label>
|
||||
<label class="block text-sm">
|
||||
<span class="mb-1 block font-medium text-zinc-300">{{ shots.length > 1 ? (job.kind === 'edit' ? 'Pass 1' : 'Shot 1') : 'Prompt' }}</span>
|
||||
<textarea v-model="draft.prompt" rows="5" class="max-h-48 w-full overflow-y-auto rounded-xl border border-white/10 bg-zinc-950 px-3 py-2 text-sm outline-none ring-amber-300/40 [overflow-wrap:anywhere] focus:ring-2 disabled:opacity-70" :disabled="!editable" />
|
||||
</label>
|
||||
<label v-if="draft.promptPost" class="block text-sm">
|
||||
<span class="mb-1 block font-medium text-zinc-300">Prompt post</span>
|
||||
<label class="block text-sm">
|
||||
<span class="mb-1 block font-medium text-zinc-300">Post-text</span>
|
||||
<textarea v-model="draft.promptPost" rows="2" class="max-h-28 w-full overflow-y-auto rounded-xl border border-white/10 bg-zinc-950 px-3 py-2 text-sm outline-none ring-amber-300/40 [overflow-wrap:anywhere] focus:ring-2 disabled:opacity-70" :disabled="!editable" />
|
||||
</label>
|
||||
<label v-if="job.kind === 'edit'" class="block text-sm">
|
||||
@@ -164,6 +164,7 @@ import {
|
||||
type QueuedInspectPayload,
|
||||
type QueuedShotDraft
|
||||
} from '~/utils/queuedJob'
|
||||
import { restorePromptParts } from '~/utils/promptParts'
|
||||
import { loraMatchesUse, loraStackLabel, persistLoraFields, readLoraStack, type LoraStackItem } from '~/utils/loras'
|
||||
|
||||
const props = defineProps<{
|
||||
@@ -243,6 +244,7 @@ function currentPayload(): QueuedInspectPayload {
|
||||
const base = { ...(job.value?.payload || {}) }
|
||||
base.name = draft.name
|
||||
base.prompt = draft.prompt
|
||||
base.promptMid = draft.prompt
|
||||
base.promptPre = draft.promptPre
|
||||
base.promptPost = draft.promptPost
|
||||
base.negative = draft.negative
|
||||
@@ -271,9 +273,14 @@ function hydrate(next: QueuedInspectJob) {
|
||||
job.value = next
|
||||
const payload = next.payload || {}
|
||||
draft.name = payload.name || next.name || ''
|
||||
draft.prompt = payload.prompt || next.prompt || ''
|
||||
draft.promptPre = payload.promptPre || ''
|
||||
draft.promptPost = payload.promptPost || ''
|
||||
const parts = restorePromptParts(payload.promptMid || payload.prompt || next.prompt || '', {
|
||||
pre: payload.promptPre,
|
||||
prompt: payload.promptMid || payload.prompt || next.prompt || '',
|
||||
post: payload.promptPost
|
||||
})
|
||||
draft.prompt = parts.prompt
|
||||
draft.promptPre = parts.pre
|
||||
draft.promptPost = parts.post
|
||||
draft.negative = payload.negative || ''
|
||||
draft.tags = payload.tags || (next.kind === 'music' ? (payload.prompt || next.prompt) : '') || ''
|
||||
draft.lyrics = payload.lyrics || ''
|
||||
@@ -363,6 +370,7 @@ async function saveChanges() {
|
||||
body: {
|
||||
name: payload.name,
|
||||
prompt: job.value.kind === 'music' ? payload.tags : payload.prompt,
|
||||
promptMid: job.value.kind === 'music' ? undefined : payload.prompt,
|
||||
tags: payload.tags,
|
||||
lyrics: payload.lyrics,
|
||||
instrumental: payload.instrumental,
|
||||
|
||||
Reference in New Issue
Block a user