Add Checkpoints Gallery with per-checkpoint generation settings

- New Checkpoint model (slug, name, checkpoint_path, data JSON, image_path)
- sync_checkpoints() loads metadata from data/checkpoints/*.json and falls
  back to template defaults for models without a JSON file
- _apply_checkpoint_settings() applies per-checkpoint steps, CFG, sampler,
  base positive/negative prompts, and VAE (with dynamic VAELoader node
  injection for non-integrated VAEs) to the ComfyUI workflow
- Bulk Create from Checkpoints: scans Illustrious/Noob model directories,
  reads matching HTML files, uses LLM to populate metadata, falls back to
  template defaults when no HTML is present
- Gallery index with batch cover generation and WebSocket progress bar
- Detail page showing Generation Settings and Base Prompts cards
- Checkpoints nav link added to layout
- New data/prompts/checkpoint_system.txt LLM system prompt
- Updated README with all current galleries and file structure
- Also includes accumulated action/scene JSON updates, new actions, and
  other template/generator improvements from prior sessions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Aodhan Collins
2026-02-26 21:25:23 +00:00
parent 0d7d4d404f
commit 0b8802deb5
334 changed files with 9437 additions and 3772 deletions

View File

@@ -2,36 +2,34 @@
"action_id": "saliva_swap_illustrious",
"action_name": "Saliva Swap Illustrious",
"action": {
"full_body": "close-up or medium shot of two characters engaged in a passionate french kiss",
"head": "heads tilted, faces pressing together, cheeks flushed with heavy blush",
"eyes": "eyes closed, shut tight, or half-closed with hearts in eyes indicating pleasure",
"arms": "wrapping around the partner's neck or waist, embracing tightly",
"hands": "cupping cheeks, holding the back of the head, or grabbing shoulders",
"torso": "chests pressed intimately against one another",
"pelvis": "hips close together",
"legs": "standing close or intertwined if sitting",
"feet": "neutral or tip-toes",
"additional": "thick saliva trail connecting mouths, tongues touching, open mouths, exchange of fluids, messy kiss"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
"full_body": "close-up, upper_body",
"head": "profile, open_mouth, tongue_out, touching_tongues",
"eyes": "closed_eyes, blush",
"arms": "embracing, around_neck",
"hands": "cupping_face, gripping",
"torso": "upper_body",
"pelvis": "n/a",
"legs": "n/a",
"feet": "n/a",
"additional": "saliva, saliva_trail, drooling, spitting, heavy_breathing"
},
"lora": {
"lora_name": "Illustrious/Poses/saliva_swap_illustrious.safetensors",
"lora_weight": 1.0,
"lora_triggers": "saliva_swap_illustrious"
"lora_weight": 0.8,
"lora_triggers": "slvswp, saliva_swap"
},
"tags": [
"kissing",
"french kiss",
"saliva_swap",
"drooling",
"saliva",
"saliva trail",
"french_kiss",
"open_mouth",
"tongue",
"open mouth",
"duo",
"romantic",
"intimate",
"blush"
"tongue_out",
"saliva_trail",
"spitting",
"from_side",
"profile",
"after_kiss"
]
}