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,35 @@
"action_id": "instant_loss_caught_il_nai_py",
"action_name": "Instant Loss Caught Il Nai Py",
"action": {
"full_body": "character exhibiting immediate total defeat, body going completely limp and incapacitated",
"head": "head thrown back or slumped forward in unconsciousness, mouth falling open",
"eyes": "eyes rolled back (ahoge), empty eyes, or spiral eyes, indicating loss of consciousness",
"arms": "arms dangling uselessly at sides or floating limply if suspended",
"hands": "fingers loose and uncurled, wrists limp",
"torso": "posture collapsed, arching back or slumped over, defenseless",
"pelvis": "hips neutral or pushed forward due to limpness",
"legs": "knees buckled, legs giving way or dangling if lifted",
"feet": "feet relaxed, toes pointing down",
"additional": "drooling, tongue out, heavy breathing, flushed skin, sweat, mind break visual cues"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
"full_body": "lying, on_back, spread_legs, defeat",
"head": "blush, sweat, open_mouth, tongue_out, looking_at_viewer",
"eyes": "half_closed_eyes, tears",
"arms": "arms_at_sides, grabbing",
"hands": "clenched_hands",
"torso": "exposed_breasts, arching_back",
"pelvis": "legs_spread, pelvis_lift",
"legs": "spread_legs, knees_up",
"feet": "toes_curled",
"additional": "2koma, multiple_views, penis_shadow, comic"
},
"lora": {
"lora_name": "Illustrious/Poses/Instant loss caught-IL_NAI_PY.safetensors",
"lora_weight": 1.0,
"lora_triggers": "Instant loss caught-IL_NAI_PY"
"lora_weight": 0.7,
"lora_triggers": "instant_loss, caught"
},
"tags": [
"instant_loss",
"defeat",
"fainted",
"limp",
"unconscious",
"mind_break",
"eyes_rolled_back",
"caught",
"2koma",
"multiple_views",
"penis_shadow",
"lying",
"on_back",
"spread_legs",
"blush",
"open_mouth",
"sweat",
"tongue_out",
"drooling",
"caught"
"defeat"
]
}