feat(lora): add lora_syntax_format setting for syntax version toggle (#917)

Adds lora_syntax_format setting (full/legacy) that controls whether <lora:...> syntax uses relative paths (full) or filename only (legacy). Default is legacy for backward compatibility with A1111 convention. The full path format (<lora:relative/path/filename:strength>) enables lossless model resolution across subfolders.

Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
Will Miao
2026-05-22 21:03:29 +08:00
parent 15dfaed462
commit 3b602a3698
18 changed files with 146 additions and 20 deletions

View File

@@ -37,6 +37,7 @@ const DEFAULT_SETTINGS_BASE = Object.freeze({
card_info_display: 'always',
show_folder_sidebar: true,
model_name_display: 'model_name',
lora_syntax_format: 'legacy',
model_card_footer_action: 'example_images',
show_version_on_card: true,
include_trigger_words: false,

View File

@@ -420,12 +420,16 @@ export function getLoraStrengthsFromUsageTips(usageTips = {}) {
export function buildLoraSyntax(fileName, usageTips = {}) {
const { strength, hasStrength, clipStrength, hasClipStrength } = getLoraStrengthsFromUsageTips(usageTips);
const effectiveName = state.global.settings?.lora_syntax_format === 'legacy'
? fileName.split('/').pop()
: fileName;
if (hasClipStrength) {
const modelStrength = hasStrength ? strength : 1;
return `<lora:${fileName}:${modelStrength}:${clipStrength}>`;
return `<lora:${effectiveName}:${modelStrength}:${clipStrength}>`;
}
return `<lora:${fileName}:${strength}>`;
return `<lora:${effectiveName}:${strength}>`;
}
export function copyLoraSyntax(card) {