Split LoRA keys into separate name and strength fields

Store lora name and strength as independent JSON keys instead of the
combined <lora:name:strength> format. Legacy format is auto-migrated
on load. Timeline preview updated to show all 6 LoRA slots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-18 22:21:48 +01:00
parent 074e36f883
commit be9c95ffbd
3 changed files with 41 additions and 30 deletions
+8 -7
View File
@@ -604,13 +604,14 @@ def _render_preview_fields(item_data: dict):
with ui.expansion('LoRA Configuration'):
with ui.row().classes('w-full q-gutter-md'):
for lora_idx in range(1, 4):
with ui.column():
ui.input(f'L{lora_idx} Name',
value=item_data.get(f'lora {lora_idx} high', '')).props(
'readonly outlined dense')
ui.input(f'L{lora_idx} Str',
value=str(item_data.get(f'lora {lora_idx} low', ''))).props(
'readonly outlined dense')
for tier, tier_label in [('high', 'High'), ('low', 'Low')]:
with ui.column():
ui.input(f'L{lora_idx} {tier_label} Name',
value=item_data.get(f'lora {lora_idx} {tier}', '')).props(
'readonly outlined dense')
ui.input(f'L{lora_idx} {tier_label} Str',
value=str(item_data.get(f'lora {lora_idx} {tier} strength', 1.0))).props(
'readonly outlined dense')
vace_keys = ['frame_to_skip', 'vace schedule', 'video file path']
if any(k in item_data for k in vace_keys):