From 776d585345b712aa1f9bf9a5276e11abc5b44b89 Mon Sep 17 00:00:00 2001 From: Towsty Date: Sun, 20 Sep 2026 17:34:53 -0500 Subject: [PATCH] Fix xAIGen LoRA picker to use isXaigenStudio like the server. Bench was checking only public.studio === 'xaigen', so when the instance is branded xAIGen via instanceName the client stripped xaigen-* LoRAs. Co-authored-by: Cursor --- components/studio2/Bench.vue | 3 ++- server/api/studio-2/jobs.post.ts | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/components/studio2/Bench.vue b/components/studio2/Bench.vue index c8a1566..895e2aa 100644 --- a/components/studio2/Bench.vue +++ b/components/studio2/Bench.vue @@ -321,8 +321,9 @@ import {applyUploadedStill} from '~/shared/studio2/upload.mjs' import {defaultNegatives,parseBatch} from '~/shared/studio2/styles.mjs' import {randomSeed} from '~/shared/studio2/seed.mjs' import {DEFAULT_MUSIC_LYRICS,DEFAULT_MUSIC_TAGS} from '~/utils/music' +import {isXaigenStudio} from '~/utils/videoModels' -const xaigen=useRuntimeConfig().public.studio==='xaigen' +const xaigen=isXaigenStudio(useRuntimeConfig().public) const instanceName=String(useRuntimeConfig().public.instanceName || 'AIGen') const {displayMode,isClassic}=useDisplayMode() const {isMobile}=useIsMobile() diff --git a/server/api/studio-2/jobs.post.ts b/server/api/studio-2/jobs.post.ts index 87f7fbf..5210183 100644 --- a/server/api/studio-2/jobs.post.ts +++ b/server/api/studio-2/jobs.post.ts @@ -4,19 +4,21 @@ import { resolveRequestSize } from '../../utils/studio2/size'; import { parsePostedLoraStack, assertImageV2LoraStack } from '../../utils/loras'; import { saveRecord, readRecord } from '../../utils/studio2/store'; import { addStudioJob, kickStudioQueue, type StudioJobPayload } from '../../utils/studioQueue'; +import { isXaigenStudio } from '~/utils/videoModels'; export default defineEventHandler(async (event) => { const { owner } = assertLibraryOwner(event), raw = await readBody(event); + const xaigen = isXaigenStudio(); let request: any; try { - request = validateRequest(raw, useRuntimeConfig().public.studio === 'xaigen'); + request = validateRequest(raw, xaigen); } catch (e: any) { throw createError({ statusCode: e.statusCode || 400, statusMessage: e.message }); } const video = ['video', 'extend'].includes(request.mode); request.settings.loraStack = parsePostedLoraStack(request.settings.loraStack, video ? 'video' : 'image'); - request.settings.loraStack = filterLoraStackForUse(request.settings.loraStack, request.engine, useRuntimeConfig().public.studio === 'xaigen'); - if (!video) + request.settings.loraStack = filterLoraStackForUse(request.settings.loraStack, request.engine, xaigen); + if (!video && request.engine !== 'qwen21') assertImageV2LoraStack(request.settings.loraStack, request.engine); assertFolderAccess(event, request.folderId); for (const id of [request.identityStillId, request.imageAId, request.imageBId, request.maskId, request.endStillId, ...request.guides.map((g: any) => g.stillId)].filter(Boolean))