Show the Qwen LoRA card with qwen-stem picks and apply them on generate.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Towsty
2026-09-28 22:47:59 -05:00
co-authored by Cursor
parent fe560d7e40
commit c4e74628ee
5 changed files with 29 additions and 11 deletions
+12 -5
View File
@@ -305,23 +305,30 @@ export function inferLoraUse(name: string): LoraUse[] | null {
return uses.length ? uses : null
}
/** Qwen 2.1 user adapters: basename stem starts with qwen or qwen2 (not klein). */
export function isQwenImageLora(name: string) {
const stem = loraIdentityKey(name).replace(/\.(safetensors|sft|ckpt|pt|bin)$/i, '')
return /^(qwen2|qwen)/i.test(stem)
}
export function loraMatchesUse(name: string, use: LoraUse) {
if (use === 'qwen21') return false
return !isSystemGraphLora(name) && !!inferLoraUse(name)?.includes(use)
if (isSystemGraphLora(name)) return false
if (use === 'qwen21') return isQwenImageLora(name)
return !!inferLoraUse(name)?.includes(use)
}
/** Saved stacks may contain unlabelled adapters; never carry a known wrong engine. */
export function filterLoraStackForUse(stack: unknown, use: LoraUse, xaigen: boolean) {
if (use === 'ltx' && !xaigen) return []
if (use === 'qwen21') return []
return filterLoraStackForStudio(stack, xaigen).filter(item => {
if (isSystemGraphLora(item.name)) return false
if (use === 'qwen21') return isQwenImageLora(item.name)
const uses = inferLoraUse(item.name)
return !isSystemGraphLora(item.name) && (!uses || uses.includes(use))
return !uses || uses.includes(use)
})
}
export function filterLorasForUse(names: string[], use: LoraUse) {
if (use === 'qwen21') return []
return names.filter(name => loraMatchesUse(name, use))
}