Skip to content

FredFraiche/Slopshop

Repository files navigation

Slopshop

Custom nodes for ComfyUI.

Slopshop is the package name. The nodes you add in ComfyUI are Lora lister, Trigger happy, and Lock and load: Lora lister handles LoRA loading and trigger output, Trigger happy handles prompt composition and CLIP text encoding, and Lock and load walks an image folder without repeating files it has already processed.

Release Nodes Dependencies ComfyUI Python

Nodes

Node Main job
Lora lister Build a LoRA stack, save it, reload it, step through it chronologically, and output the active trigger text.
Trigger happy Keep trigger text synced with Lora lister, place it before or after the prompt, fetch image prompts, and output both conditioning and the final composed prompt string.
Lock and load Load images from a folder in alphabetical order while logging each file so folder changes do not cause already-run images to repeat.

Lora Lister

Lora lister is a compact LoRA stack manager that lives inside the ComfyUI graph. It loads LoRAs in the order shown on the node and outputs a comma-separated lora_trigger string for the LoRAs that actually load on that run.

What it does

Feature What it means
Chronological LoRA loading LoRAs load one by one in the visible row order, so the node behaves like the stack you see.
Normal mode Load the active stack together on every run.
List mode Step through the list one run at a time for LoRA testing.
Trigger output Sends cleaned trigger words through the lora_trigger output.
Save and load lists Save named stacks with LoRAs, strengths, order, thumbnails, and row states.
Drag to reorder Move LoRA cards while keeping their state attached.
Per-LoRA strength Edit strength directly, with click-and-drag spinner controls.
Add to current stack New LoRAs append to the current list instead of replacing it.
Metadata fetch Reads local metadata first, including existing LoRA Manager-style parsed metadata, then can fetch display names, trigger words, and preview images from CivitAI.
LoRA Manager compatibility Reads and writes LoRA Manager sidecars named <lora_stem>.metadata.json, so existing parsed libraries can onboard faster and other tools can reuse Slopshop metadata.
Gallery Open LoRA image galleries, set thumbnails, hide/restore images, upload images, and send image prompts to Trigger happy.

Normal And List Mode

Mode Use it when
Normal mode You want the enabled LoRAs in the stack to load together. Gold/enabled rows contribute their trigger words; red/skipped rows do not.
List mode You want to test LoRAs one graph run at a time. The current row turns gold, completed rows turn green, skipped rows stay red, and purple rows always load on every run.

List mode is the big one for LoRA testing. Make one prompt, load a saved list, turn on ComfyUI's run loop, and Lora lister walks through the stack in order while outputting the trigger for the LoRA being tested.

Row colors

Color Meaning
Gray Neutral row.
Gold Active/enabled row. In list mode, this is the current LoRA for this run.
Green Already ran in list mode.
Red Skipped.
Purple Always-run. In list mode, this loads every run without advancing the list.

Click a row to cycle user-controlled states:

neutral -> skip -> always-run -> neutral

Trigger Happy

Trigger happy is a CLIP text encode node with Slopshop prompt tools on top. It is designed to pair with Lora lister, but it can also be used by itself.

What it does

Feature What it means
Async trigger sync When Lora lister changes state, Trigger happy updates its trigger field automatically.
Trigger on/off gate The red/green trigger button decides whether the trigger field is used in the final prompt.
Trigger first/last Place the trigger before or after the main prompt.
Manual trigger text Type anything in the trigger field; manual text is preserved.
Wired trigger input Wire lora_trigger from Lora lister, or any STRING source.
Wired main prompt input Wire a STRING into main_prompt; wired text takes precedence over the visible main prompt field.
Image prompt fetch Pull prompt metadata from workflow images, including nearby Load Image nodes and saved workflow images.
Image prompt inject/remove Add extracted image prompt text into the main prompt, then remove it again without deleting user text.
Combined prompt output Outputs combined_prompt, the exact string sent to CLIP text encoding.
Backend debug print Prints the exact text sent to CLIP, including prompt source, trigger state, and composed prompt.

When Trigger happy is connected to Lora lister, the trigger field follows the LoRA card state:

Lora lister state Trigger happy result
Normal mode, enabled/gold rows Trigger field receives those rows' trigger words.
Normal mode, skipped/red rows Those trigger words are removed.
List mode, current/gold row Trigger field receives the current row trigger.
List mode, purple always-run rows Purple row triggers stay included while the list advances.
Trigger injection off/red The trigger field is not used in the prompt.

Trigger happy returns two outputs:

Output What it is
conditioning Normal CLIP conditioning, ready for samplers.
combined_prompt The final composed text string, useful for checking, logging, or sending to another node.

Simple Workflow

  1. Add Lora lister.
  2. Connect model and clip.
  3. Press Load Lora(s) and choose one or more LoRAs.
  4. Reorder rows, set strengths, and set row states.
  5. Choose normal mode or list mode.
  6. Add Trigger happy.
  7. Wire lora_trigger from Lora lister to Trigger happy.
  8. Write your prompt in Trigger happy, or wire a STRING into main_prompt.
  9. Turn trigger injection on, then choose trigger first or trigger last.
  10. Use conditioning normally, or use combined_prompt if you want to inspect the exact composed prompt.

For a shorter mode guide, see Nodes/README.md.

Lock And Load

Lock and load is for batch workflows where you want ComfyUI to pull one image from a folder on each run.

Feature What it means
Alphabetical loading Images are considered in filename order.
Per-file history Each loaded file is recorded by full path, file name, size, modified time, and file ID when available.
Folder changes are safe Adding or removing files does not make the node simply replay the wrong index.
Copy to rerun A processed image will not run again from the same path/signature; copy it to a new filename/path if you want it treated as new.
Local state Processing history is saved under slopshop_data/load_image_sequence_state.json and is not intended for release commits.

When no unprocessed images remain, the node raises a clear error instead of wrapping around and silently repeating old files.

Useful Trigger Happy Setups

Use Trigger happy as a prompt extractor when you want to pull a prompt out of an old image and send it somewhere else as text:

  1. Put a Load Image node near Trigger happy and load the image.
  2. Press Get prompt from image.
  3. Inject the image prompt into the main prompt.
  4. Turn trigger injection off/red if you only want the image prompt and no LoRA trigger text.
  5. Use combined_prompt as a STRING output for another node, a text display node, or a workflow log.

Use Trigger happy as a LoRA-aware prompt composer when Lora lister is driving the stack. Wire lora_trigger, keep trigger injection green, and the final prompt updates as LoRA cards change state in normal mode or list mode.

You can also mix both: pull a prompt from an image, let Lora lister inject the currently active LoRA trigger, then use combined_prompt to fact-check the exact string before it reaches the sampler path.

LoRA Gallery And Image Prompts

Click a LoRA thumbnail to open its gallery.

Action Control
Browse images A / D, arrow keys, or side arrows.
Zoom and pan Mouse wheel to zoom, drag to pan.
Set thumbnail Press 1 on the image you want.
Send prompt Click Use Prompt when image prompt metadata exists.
Add images Use the row image button or drag an image onto a LoRA row.
Hide images Use the gallery trash button.
Undo hides Click Undo inside the same gallery session.

Trigger happy can also fetch prompt metadata from workflow images. If a Load Image node near Trigger happy has an uploaded image, that live image wins over stale saved workflow data.

Metadata Compatibility

Lora lister is friendly with existing LoRA metadata workflows.

If you already use ComfyUI LoRA Manager and it has parsed your library, Lora lister reads those local sidecars first. The shared sidecar name is <lora_stem>.metadata.json, for example my_lora.safetensors pairs with my_lora.metadata.json. That makes first setup much faster than starting from CivitAI for every file.

When Slopshop saves metadata, it also writes that same sidecar shape next to the LoRA, including stem-only file_name, normalized file_path, base_model, preview_url, and trigger words in civitai.trainedWords. That means LoRA Manager and other tools can use the same parsed trigger words, display names, hashes, and gallery hints instead of being trapped inside Slopshop's own cache.

CivitAI fetching is still available when local metadata is missing or incomplete.

Install

Clone this repository into ComfyUI/custom_nodes, then restart ComfyUI.

PowerShell:

cd path\to\ComfyUI\custom_nodes
git clone https://github.com/FredFraiche/Slopshop.git Slopshop

cmd:

cd /d path\to\ComfyUI\custom_nodes
git clone https://github.com/FredFraiche/Slopshop.git Slopshop

Linux/macOS:

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/FredFraiche/Slopshop.git Slopshop

Requirements And Compatibility

Slopshop currently has no extra Python package dependencies.

Tested with:

Requirement Version
ComfyUI v0.20.2
Python 3.10+

Notes:

  • CivitAI metadata and image fetching need internet access.
  • Existing ComfyUI LoRA Manager sidecar metadata can be used for faster first setup.
  • Local LoRA loading uses ComfyUI's normal models/loras lookup.
  • The native file picker uses Python's standard tkinter when available.
  • After installing or updating backend files, restart ComfyUI.
  • After updating frontend files, hard refresh the browser.

Update

PowerShell:

cd path\to\ComfyUI\custom_nodes\Slopshop
git pull

cmd:

cd /d path\to\ComfyUI\custom_nodes\Slopshop
git pull

Restart ComfyUI and hard refresh your browser after updating.

Runtime Files

Slopshop may create local runtime files such as:

  • slopshop_lora_lists.json
  • slopshop_lora_metadata_cache.json
  • slopshop_lora_metadata_jobs.json
  • slopshop_data/metadata
  • slopshop_data/gallery
  • per-LoRA .slopshop_gallery folders

These files are local user state and are intentionally ignored by git.

Debugging

Backend debug logging for the loader is off by default.

PowerShell:

$env:SLOPSHOP_LORA_DEBUG = "1"
python main.py

cmd:

set SLOPSHOP_LORA_DEBUG=1
python main.py

Frontend diagnostics from the browser console:

localStorage.setItem("slopshop_lora_debug", "1")

Disable frontend diagnostics:

localStorage.removeItem("slopshop_lora_debug")

Trigger happy always prints the final text sent to CLIP text encoding so users can verify what was encoded, especially when main_prompt or lora_trigger is wired.

Notes

Slopshop is built to feel like part of ComfyUI: compact controls, graph-first interaction, predictable resizing, and no separate manager panel.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors