From f8db0d626a9120ba76facadc5598c31c5f713429 Mon Sep 17 00:00:00 2001 From: Towsty Date: Fri, 28 Aug 2026 15:24:44 -0500 Subject: [PATCH] Add LoRA stacks with per-item strengths and named video/image generation presets so setups survive reload without mixing Klein onto MiniMax. Keep LTX Pink Cherry and xAIGen LoRAs on xAIGen, and run Recommend on Beast. Co-authored-by: Cursor --- .env.example | 21 +- components/GenerationPresetBar.vue | 74 ++++ components/LoraSelect.vue | 140 +++++++ components/SettingsModal.vue | 2 +- nuxt.config.ts | 4 +- pages/index.vue | 382 +++++++++++++++++-- pages/queue.vue | 70 +++- server/api/edit.post.ts | 6 +- server/api/extend.post.ts | 32 +- server/api/generate.post.ts | 38 +- server/api/generation-presets.get.ts | 10 + server/api/generation-presets.post.ts | 25 ++ server/api/generation-presets/[id].delete.ts | 13 + server/api/health.get.ts | 34 +- server/api/loras.get.ts | 9 + server/api/prompt/recommend.post.ts | 2 +- server/api/queues/[id].patch.ts | 4 +- server/api/studio-queue.get.ts | 9 +- server/utils/generationPresets.ts | 184 +++++++++ server/utils/imageChain.ts | 5 +- server/utils/imageComfy.ts | 36 +- server/utils/imageComfyLifecycle.ts | 101 +---- server/utils/imageWorkflow.ts | 5 + server/utils/jobs.ts | 6 +- server/utils/library.ts | 26 +- server/utils/loras.ts | 305 +++++++++++++++ server/utils/pending.ts | 20 +- server/utils/promptComfy.ts | 70 ++-- server/utils/shotQueue.ts | 39 +- server/utils/studioQueue.ts | 45 ++- server/utils/videoChain.ts | 29 +- server/utils/watch.ts | 13 +- server/utils/workflow.ts | 12 + utils/generationPresets.ts | 40 ++ utils/loras.ts | 177 +++++++++ utils/videoModels.ts | 25 ++ 36 files changed, 1767 insertions(+), 246 deletions(-) create mode 100644 components/GenerationPresetBar.vue create mode 100644 components/LoraSelect.vue create mode 100644 server/api/generation-presets.get.ts create mode 100644 server/api/generation-presets.post.ts create mode 100644 server/api/generation-presets/[id].delete.ts create mode 100644 server/api/loras.get.ts create mode 100644 server/utils/generationPresets.ts create mode 100644 server/utils/loras.ts create mode 100644 utils/generationPresets.ts create mode 100644 utils/loras.ts diff --git a/.env.example b/.env.example index 33b1cb7..2610b3b 100644 --- a/.env.example +++ b/.env.example @@ -22,24 +22,19 @@ LIBRARY_DIR=/data/library # Private clone (xaigen): password login, isolated library, Comfy prefix # AUTH_MODE=password # NUXT_PUBLIC_INSTANCE_NAME=xAIGen +# NUXT_PUBLIC_STUDIO=xaigen # AUTH_USERNAME= # AUTH_PASSWORD= # COMFY_FILENAME_PREFIX=video/xAIGen # Desktop Comfy files are deleted after a successful library save (set false to keep them). -# Also removes Qwen Edit input/output files from the image sidecar after saveStill. +# Also removes Qwen Edit input/output files from Beast after saveStill. # PURGE_COMFY_OUTPUTS=true -# Second Comfy box (Sidecar / Qwen VL prompt helper). Image edits stay on Beast (COMFY_HOST). -# Recommend sends the still + draft prompt here only — never to Beast. -IMAGE_COMFY_HOST=http://192.168.77.101:8188 -# Optional override if prompt-recommend Comfy is not IMAGE_COMFY_HOST -# PROMPT_COMFY_HOST=http://192.168.77.101:8188 -IMAGE_COMFY_PORT=8188 +# Recommend / Qwen VL uses Beast (same Comfy as video). Do not point this at 192.168.77.101. +IMAGE_COMFY_HOST=http://192.168.77.7:8198 +# Optional override if prompt-recommend Comfy is not IMAGE_COMFY_HOST / COMFY_HOST +# PROMPT_COMFY_HOST=http://192.168.77.7:8198 +IMAGE_COMFY_PORT=8198 # Optional override if image Comfy on Beast is not the video instance # IMAGE_COMFY_PRIMARY_HOST=http://192.168.77.7:8198 -# IMAGE_COMFY_FALLBACK_HOST=http://192.168.77.101:8188 -# Spawned on the sidecar PC (host agent /start and start_comfyui.bat). Listen is 0.0.0.0 so Coolify can reach :8188. -IMAGE_COMFY_LAUNCH_CMD=C:\ComfyUI-QwenEdit\python\python.exe C:\ComfyUI-QwenEdit\ComfyUI\main.py --listen 0.0.0.0 --port 8188 --disable-auto-launch --lowvram --fp8_e4m3fn-unet --disable-cuda-malloc -# Optional host agent on the sidecar (scripts/comfy-host-agent.mjs) -# IMAGE_COMFY_CONTROL_URL=http://192.168.77.101:8199 -# IMAGE_COMFY_CONTROL_TOKEN= +IMAGE_COMFY_LAUNCH_CMD= diff --git a/components/GenerationPresetBar.vue b/components/GenerationPresetBar.vue new file mode 100644 index 0000000..12ea97e --- /dev/null +++ b/components/GenerationPresetBar.vue @@ -0,0 +1,74 @@ + + + diff --git a/components/LoraSelect.vue b/components/LoraSelect.vue new file mode 100644 index 0000000..b6ef3af --- /dev/null +++ b/components/LoraSelect.vue @@ -0,0 +1,140 @@ + + + diff --git a/components/SettingsModal.vue b/components/SettingsModal.vue index 1628c25..71e6a65 100644 --- a/components/SettingsModal.vue +++ b/components/SettingsModal.vue @@ -127,7 +127,7 @@

Prompt helper

- Instruction sets sent to Sidecar Qwen VL with your still and draft. Use these later for multi-shot video scripts. + Instruction sets sent to Beast Qwen VL with your still and draft. Use these later for multi-shot video scripts.

diff --git a/nuxt.config.ts b/nuxt.config.ts index f083c1d..6c66d8a 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -53,7 +53,9 @@ export default defineNuxtConfig({ public: { authEnabled: process.env.NUXT_PUBLIC_AUTH_ENABLED === 'true', authMode: process.env.NUXT_PUBLIC_AUTH_MODE || process.env.AUTH_MODE || '', - instanceName: process.env.NUXT_PUBLIC_INSTANCE_NAME || 'AIGen' + instanceName: process.env.NUXT_PUBLIC_INSTANCE_NAME || 'AIGen', + // NUXT_PUBLIC_STUDIO=xaigen on the xAIGen Coolify app (LTX Pink Cherry + xAIGen-prefixed LoRAs) + studio: process.env.NUXT_PUBLIC_STUDIO || '' } }, nitro: { diff --git a/pages/index.vue b/pages/index.vue index 8db1d09..fec4ca1 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -6,7 +6,7 @@
A

{{ instanceName }}

- +
@@ -193,7 +193,7 @@

Recommended prompt

-

{{ recommendMessage || 'Sidecar Qwen VL is reading the still…' }}

+

{{ recommendMessage || 'Beast Qwen VL is reading the still…' }}

{{ recommendError }}

· shot {{ shot.n }} · {{ formatClipDuration(duration) }}

{{ composedShotPreview(shot.prompt, index, shot.n) }}

+ +
-
+

Video model

+
+ + +
+
+ + +
+
Generation settings
@@ -643,6 +688,7 @@ Seed +

Sampler & scheduler

@@ -691,6 +737,7 @@
+

Graph default is 20 steps, CFG 1, euler. A second still switches the two-image branch on.

@@ -975,6 +1022,7 @@ label="Extension duration" hint="Type any length, use the slider, or drag up/down in the box." /> +