v0.2.0 - Multi-Image, Gallery, Locks, and a whole lot more
This one's big. Like, really big. Pretty much every part of the extension got touched in some way.
The headline feature? Multiple images per message. Your LLM can now drop as many [[IMG: ... ]] markers as it wants in a single response and they all generate. Tell it to include two, three, whatever - each one gets processed sequentially and injected right where the LLM placed it.
But that's just the start. Here's everything:
🔥 The Big Stuff
- Multiple images per message - no more one-image limit. Every marker in a message generates its own image, placed exactly where the LLM wrote it.
- Image Gallery - new gallery button in the extension panel. Shows all generated images in the current chat as a thumbnail grid. Click any image to see the full details: seed, prompt, AR, shot, filename, and a clickable link to the ComfyUI job history for debugging. The gallery always reflects the current chat state - swipe to a different response and the gallery updates to match.
- Retry Button - every generated image now has a small retry button in the top-right corner. Click it to regenerate that specific image with a new seed. In multi-image messages, each button only re-rolls its own image. Always bypasses seed lock so you're guaranteed a different result.
- Parameter Locks - lock resolution, shot type, and/or seed from the settings UI. The LLM still outputs its tokens normally, but ComfyInject overrides them at generation time. The gallery shows what was actually sent to ComfyUI so you can always verify.
⚙️ New Settings
- Prepend Prompt - custom tags added to the very start of every positive prompt, before shot tags and the LLM's output.
- Append Prompt - custom tags added to the very end of every positive prompt, after the LLM's output.
- Workflow Selector - type the filename of any workflow JSON in the workflows folder. Validates automatically after you stop typing - green toast if found, red if not.
- Checkpoint Dropdown - click the arrow next to the checkpoint field to fetch and select from your available ComfyUI checkpoints. Still supports manual text entry for non-checkpoint models.
- Resolution Lock - checkbox + width/height input. Forces a single resolution for everything.
- Shot Lock - checkbox + dropdown of preset shot types. Forces a single shot type for everything.
- Seed Lock - checkbox + mode selector (RANDOM / LOCK / CUSTOM). Forces a seed mode for everything.
🛠️ Under the Hood
- Metadata keyed by message timestamp - image metadata is now stored using the message's
send_dateinstead of array index. This means deleting messages no longer corrupts metadata for everything after it. Fully backward compatible with old index-based data. - LOCK seed now reads from chat history - the LOCK seed token now pulls from the last saved message's seed in chat metadata, not an in-memory variable. Swipes no longer pollute the LOCK chain.
- Outbound interceptor reads from img tags - the interceptor that builds
[[IMG: prompt | seed]]tokens for the LLM now parses prompt and seed directly from the img tag attributes instead of metadata. More resilient, zero dependency on metadata for outbound. - Slimmer metadata - prompt and imageUrl are no longer stored in metadata (they're already in the img tag). Metadata now only holds supplementary data: seed, ar, shot, promptId, filename, effective values, and resolution.
- Dead code removed - cleaned up unused functions, variables, stale comments, and redundant regex resets from the original codebase.
📝 Docs
- README fully rewritten to cover all new features, settings, and FAQ entries.
- Workflows README updated with new sections on placeholder reuse, model flexibility, and the workflow selector.
⚠️ Upgrading from v0.1.0
Just update the extension - no manual migration needed. Here's exactly what to expect:
Settings: All your existing settings (host, checkpoint, negative prompt, sampler settings, resolutions, shot tags) are preserved. New settings are added automatically with sensible defaults. You won't lose anything.
Existing chats: Your old chats and images continue to work. Images display normally, retry buttons appear, and the outbound interceptor still sends the correct tokens to the LLM.
Gallery on old images: The gallery will show all your existing images with their prompt, seed, and image. However, the extra fields added in this update (AR, Shot, Filename, Prompt ID) will show as N/A for images generated before the update. This is because the old version didn't store this data. All new images generated after updating will have the full details.
Old metadata format: v0.1.0 stored metadata keyed by message array index. v0.2.0 stores it by message timestamp. The extension handles both formats transparently - old data is read using the legacy format, new data is written in the new format. You don't need to do anything.
Workflow file: The default workflow filename hasn't changed (comfyinject_default.json), so the new Workflow setting will already point to the right file.