Replace Comfy YuE with standalone YuEGP profile 1

This commit is contained in:
Towsty
2026-09-07 20:24:47 -05:00
parent eeff12cdab
commit c2b6032e49
33 changed files with 976 additions and 294 deletions
+17 -4
View File
@@ -43,7 +43,7 @@
<textarea v-model="draft.tags" rows="3" class="max-h-32 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="flex items-center gap-2 text-sm text-zinc-300">
<input v-model="draft.instrumental" type="checkbox" class="accent-amber-400" :disabled="!editable">
<input v-model="draft.instrumental" type="checkbox" class="accent-amber-400" :disabled="!editable || isYueGp">
Instrumental
</label>
<label v-if="!draft.instrumental" class="block text-sm">
@@ -97,17 +97,24 @@
<div class="grid gap-3 sm:grid-cols-2">
<label v-if="job.kind !== 'edit' || draft.duration" class="block text-sm">
<span class="mb-1 block font-medium text-zinc-300">Duration</span>
<input v-model.number="draft.duration" type="number" min="0.5" max="180" step="0.1" class="w-full rounded-xl border border-white/10 bg-zinc-950 px-3 py-2 text-sm disabled:opacity-70" :disabled="!editable">
<input v-model.number="draft.duration" type="number" :min="isYueGp ? 30 : 0.5" :max="isYueGp ? 150 : 180" :step="isYueGp ? 1 : 0.1" class="w-full rounded-xl border border-white/10 bg-zinc-950 px-3 py-2 text-sm disabled:opacity-70" :disabled="!editable">
</label>
<label class="block text-sm">
<span class="mb-1 block font-medium text-zinc-300">Seed</span>
<input v-model="draft.seed" class="w-full rounded-xl border border-white/10 bg-zinc-950 px-3 py-2 text-sm disabled:opacity-70" :disabled="!editable">
</label>
<label class="block text-sm">
<label v-if="isYueGp" class="block text-sm">
<span class="mb-1 block font-medium text-zinc-300">YuEGP profile</span>
<select v-model.number="draft.yueProfile" :disabled="!editable" class="w-full rounded-xl border border-white/10 bg-zinc-950 px-3 py-2">
<option :value="1">1 · Full quality · 16GB</option>
<option :value="3">3 · Manual lower-memory fallback</option>
</select>
</label>
<label v-if="!isYueGp" class="block text-sm">
<span class="mb-1 block font-medium text-zinc-300">Steps</span>
<input v-model.number="draft.steps" type="number" min="1" max="100" class="w-full rounded-xl border border-white/10 bg-zinc-950 px-3 py-2 text-sm disabled:opacity-70" :disabled="!editable">
</label>
<label class="block text-sm">
<label v-if="!isYueGp" class="block text-sm">
<span class="mb-1 block font-medium text-zinc-300">CFG</span>
<input v-model.number="draft.cfg" type="number" min="0" max="20" step="0.1" class="w-full rounded-xl border border-white/10 bg-zinc-950 px-3 py-2 text-sm disabled:opacity-70" :disabled="!editable">
</label>
@@ -206,6 +213,7 @@ const draft = reactive({
tags: '',
lyrics: '',
instrumental: false,
yueProfile: 1 as 1 | 3,
duration: 5,
seed: '',
steps: 20,
@@ -218,6 +226,7 @@ const draft = reactive({
const extraShots = ref<QueuedShotDraft[]>([])
const kindLabel = computed(() => job.value ? queuedJobKindLabel(job.value) : 'Job')
const isYueGp = computed(() => job.value?.kind === 'music' && (job.value.payload.musicEngine || job.value.payload.engine) === 'yue')
const editable = computed(() => job.value ? queuedJobEditable(job.value) : false)
const shots = computed(() => job.value ? queuedJobShots(currentPayload(), job.value.kind) : [])
const thumbUrl = computed(() => {
@@ -233,6 +242,7 @@ const loraEngine = computed(() => {
const metaLine = computed(() => {
const payload = job.value?.payload
if (!payload) return ''
if (isYueGp.value) return 'Standalone YuEGP · one section · compile off'
return [
payload.workflow,
payload.v2Mode,
@@ -262,6 +272,7 @@ function currentPayload(): QueuedInspectPayload {
base.tags = draft.tags
base.lyrics = draft.lyrics
base.instrumental = draft.instrumental
if (isYueGp.value) base.yueProfile = draft.yueProfile
base.duration = draft.duration
base.steps = draft.steps
base.cfg = draft.cfg
@@ -296,6 +307,7 @@ function hydrate(next: QueuedInspectJob) {
draft.tags = payload.tags || (next.kind === 'music' ? (payload.prompt || next.prompt) : '') || ''
draft.lyrics = payload.lyrics || ''
draft.instrumental = payload.instrumental === true
draft.yueProfile = payload.yueProfile === 3 ? 3 : 1
draft.duration = Number(payload.duration) || 5
draft.seed = payload.seed != null ? String(payload.seed) : ''
draft.steps = Number(payload.steps) || 20
@@ -385,6 +397,7 @@ async function saveChanges() {
tags: payload.tags,
lyrics: payload.lyrics,
instrumental: payload.instrumental,
...(isYueGp.value ? { yueProfile: payload.yueProfile } : {}),
promptPre: payload.promptPre,
promptPost: payload.promptPost,
negative: payload.negative,