Add ACE-Step 1.5 and YuE on Music, and put Video/Image/Music cards back.
Recover finished Comfy audio when queueing hangs so a completed track is not stuck on Queueing. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+15
-42
@@ -7,50 +7,11 @@
|
||||
@gpu="pollComfyHealth"
|
||||
/>
|
||||
|
||||
<main class="mx-auto grid min-w-0 max-w-7xl gap-6 px-4 py-6 sm:px-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] lg:items-stretch">
|
||||
<main class="mx-auto min-w-0 max-w-7xl space-y-6 px-4 py-6 sm:px-6">
|
||||
<StudioKindCards :current="imageStudio ? 'image' : 'video'" />
|
||||
<div class="grid min-w-0 gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] lg:items-stretch">
|
||||
<section id="studio-input" class="glass min-w-0 max-w-full space-y-5 rounded-3xl p-5 sm:p-6">
|
||||
<div>
|
||||
<div class="mb-4 grid grid-cols-3 gap-3">
|
||||
<button
|
||||
type="button"
|
||||
class="rounded-3xl border px-4 py-4 text-left transition"
|
||||
:class="studioMode === 'video' ? 'border-amber-300 bg-amber-400/10 text-amber-50' : 'border-white/10 text-zinc-400 hover:border-white/20 hover:text-zinc-200'"
|
||||
@click="selectStudioKind('video')"
|
||||
>
|
||||
<svg class="h-10 w-10" viewBox="0 0 40 40" fill="none" aria-hidden="true">
|
||||
<rect x="4" y="10" width="24" height="20" rx="3" stroke="currentColor" stroke-width="2" />
|
||||
<path d="M28 16 36 12v16l-8-4V16Z" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />
|
||||
<circle cx="12" cy="20" r="2" fill="currentColor" />
|
||||
</svg>
|
||||
<span class="mt-3 block font-display text-lg font-bold text-zinc-100">Video</span>
|
||||
<span class="mt-0.5 block text-xs text-zinc-500">MiniMax H3 · LTX</span>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="rounded-3xl border px-4 py-4 text-left transition"
|
||||
:class="imageStudio ? 'border-amber-300 bg-amber-400/10 text-amber-50' : 'border-white/10 text-zinc-400 hover:border-white/20 hover:text-zinc-200'"
|
||||
@click="selectStudioKind('image')"
|
||||
>
|
||||
<svg class="h-10 w-10" viewBox="0 0 40 40" fill="none" aria-hidden="true">
|
||||
<rect x="6" y="8" width="28" height="24" rx="3" stroke="currentColor" stroke-width="2" />
|
||||
<path d="m10 26 7-8 6 7 3-3 4 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<circle cx="15" cy="15" r="2.5" fill="currentColor" />
|
||||
</svg>
|
||||
<span class="mt-3 block font-display text-lg font-bold text-zinc-100">Image</span>
|
||||
<span class="mt-0.5 block text-xs text-zinc-500">Flux · Krea</span>
|
||||
</button>
|
||||
<NuxtLink
|
||||
to="/music"
|
||||
class="rounded-3xl border border-white/10 px-4 py-4 text-left text-zinc-400 transition hover:border-white/20 hover:text-zinc-200"
|
||||
>
|
||||
<svg class="h-10 w-10" viewBox="0 0 40 40" fill="none" aria-hidden="true">
|
||||
<circle cx="20" cy="20" r="12" stroke="currentColor" stroke-width="2" />
|
||||
<path d="M18 14v12l10-4V12l-10 2Z" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />
|
||||
</svg>
|
||||
<span class="mt-3 block font-display text-lg font-bold text-zinc-100">Music</span>
|
||||
<span class="mt-0.5 block text-xs text-zinc-500">ACE-Step · vocals</span>
|
||||
</NuxtLink>
|
||||
</div>
|
||||
<h2 class="font-display text-2xl font-bold">Input</h2>
|
||||
<p class="text-sm text-zinc-400">{{ studioMode === 'editv2'
|
||||
? (v2Mode === 'generate'
|
||||
@@ -2108,6 +2069,7 @@
|
||||
</template>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<ImageBatchModal
|
||||
@@ -2611,6 +2573,12 @@ function selectStudioKind(kind: 'video' | 'image') {
|
||||
studioMode.value = 'editv2'
|
||||
outputFocus.value = 'edit'
|
||||
}
|
||||
|
||||
function applyStudioQueryFromRoute() {
|
||||
const studio = String(route.query.studio || '').toLowerCase()
|
||||
if (studio === 'image') selectStudioKind('image')
|
||||
else if (studio === 'video') selectStudioKind('video')
|
||||
}
|
||||
const imageComfyOk = ref(false)
|
||||
const imageComfyBusy = ref(false)
|
||||
const imageComfyConfigured = ref(false)
|
||||
@@ -3990,6 +3958,7 @@ onMounted(async () => {
|
||||
if (route.query.clip || route.query.still) applyIncomingLibraryItem()
|
||||
else applyIncomingDirectorScript()
|
||||
await applyIncomingQueuedJob()
|
||||
applyStudioQueryFromRoute()
|
||||
window.addEventListener('keydown', onStudioKey)
|
||||
})
|
||||
|
||||
@@ -4020,6 +3989,10 @@ watch(studioMode, () => {
|
||||
}
|
||||
})
|
||||
|
||||
watch(() => route.query.studio, () => {
|
||||
applyStudioQueryFromRoute()
|
||||
})
|
||||
|
||||
watch([browseFolderId, libraryFilter], () => {
|
||||
selectedKeys.value = []
|
||||
lastSelectedKey.value = ''
|
||||
|
||||
Reference in New Issue
Block a user