ComfyUI Extension: ComfyUI-Workflow-Studio
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
Workflow management and generation UI plugin. Browse, organize, and execute workflows with auto-generated parameter editing, AI prompt assistant (Ollama), JSON syntax highlighting, Eagle integration, and multi-language support (EN/JA/ZH).
README
ComfyUI-Workflow-Studio
A comprehensive workflow, asset management, and generation UI plugin for ComfyUI.
๐ Management โ organize all your assets in one studio
- Workflow, model, image, and prompt management
- AI-powered prompt writing assistance, translation, and tag generation
- File drop & Gallery-linked metadata viewing โ inspect and reuse generation settings instantly
โก GenerateUI โ a productivity-focused generation tab connected to every other tab
- Batch generation across models, samplers, prompts, and workflows
- Image Feeder for continuous folder-based generation
๐ Workflow Studio Library โ a multi-function side panel for smooth ComfyUI integration
- Drag & drop models, nodes, prompts, and workflows straight onto the canvas
- Send to Canvas: click "Send to Canvas" (Workflow tab) or "Copy & Send Canvas" (Gallery tab) to send the workflow directly to the ComfyUI canvas โ UI and API formats both supported
- View metadata from images / JSON, then drop the detected models and prompts onto the canvas
- Built-in AI tools (translation and more)
Screenshots
| Workflow Tab | Models Tab |
| :-------------------------------------: | :---------------------------------: |
|
|
|
| Prompt Input Assistance | Gen UI Feeder |
| :----------------------------------------------------------: | :---------------------------------------: |
|
|
|
| GenUI LoRA Stack | GenUI Batch |
| :---------------------------------------------: | :-------------------------------------: |
|
|
|
| Models Multi-select Menu | Top Bar |
| :-----------------------------------------------------------: | :---------------------------: |
|
|
|
| WS Library | Library Information |
| :----------------------------------: | :---------------------------------------------------: |
|
|
|
| Tagger Tab | Image Edit Tab |
| :-------------------------------: | :--------------------------------------: |
|
|
|
| Customize | |
| :--------------------------------: | :-: |
|
| |
Features
Workflow Tab
- Thumbnail / Table views โ switch between view modes to browse your workflow library
- Thumbnail side panel โ preview workflow canvas snapshots in the side panel
- Badge filtering โ filter by user-defined badges (free labels you assign to each workflow)
- Search โ full-text search across workflow names and metadata
- Side panel tabs โ Thumbnail preview, JSON viewer with syntax highlighting, and Group management
- Badge management โ add, rename, delete badges with custom colors shared with the Models tab (โ Badge button)
- AI summary โ generate workflow descriptions using Ollama
- Import / Export โ import workflows from files or clipboard; Send to Canvas button sends the selected workflow directly to the ComfyUI canvas (UI and API formats both supported)
- Default view setting โ persist your preferred view mode (Thumbnail / Table)
- Search clear (โ) โ inline โ button appears inside the search box whenever text is entered; click to clear immediately
- Clear all filters (โ Clear) โ rightmost toolbar button; resets search text, group filter, and badge filter (ALL) in one click
Canvas Snapshot (v0.1.2)
- One-click capture โ click the camera button in ComfyUI's top bar to snapshot the current workflow canvas
- Auto-save as thumbnail โ the snapshot is saved directly to the workflow data folder as a PNG thumbnail
- Embedded workflow metadata โ workflow JSON is embedded in the PNG (tEXt chunk), compatible with ComfyUI's drag-and-drop import
- Auto-import โ the captured workflow is automatically imported and appears in the Workflow tab
GenerateUI Tab (v0.3.5)
- 5-tab layout โ Input / Model / Settings / Feeder / Batch tabs; Input, Model, and Settings each include a Raw JSON column on the right for instant preview and direct editing
- Save button โ located at the right end of the subtab row; opens a filename dialog (default: current workflow name) and saves the current workflow as a
.jsonfile to the Workflow tab via the import API - Input tab โ Prompt and Image inner tabs (drag-and-drop upload); Prompt tab shows Positive Prompt and Negative Prompt textareas, plus an Embeddings selector at the bottom (Filter + Select + Weight input + Paste button); Paste inserts
(embedding:Name:weight)at the cursor position of the last focused textarea (defaults to Positive when neither is focused); Raw JSON (540px) in the right column- Revert button (v0.3.70) โ a โบ button next to each Apply button reverts the textarea to the node's currently applied value (the reverse of Apply)
- Emphasis weight editing (v0.3.70) โ select text (or just place the cursor on a word/parenthesis block) and press Ctrl+โ/โ to adjust
(text:weight)by ยฑ0.05, A1111/native-ComfyUI style; parentheses are removed automatically when the weight returns to 1.0
- Model tab โ Checkpoint, VAE, LoRA, ControlNet, Diffusion Model (UNETLoader / UnetLoaderGGUF / LoaderGGUF), Text Encoder (CLIPLoader / DualCLIPLoader / ClipLoaderGGUF / DualClipLoaderGGUF โ single clip: type + device; dual clip: two clip selectors + type + device), Hypernetwork (with Strength field) selectors with filter; Raw JSON on the right
- Settings tab โ KSampler and Latent Image side by side at 50% width each; Raw JSON on the right
- Always-visible Raw JSON โ edit the API-format JSON directly from any tab with syntax highlighting; Apply button reloads the workflow; built-in search bar (always shown) finds all matches as you type with count display (
3/12); navigate with โ/โ buttons or Enter / Shift+Enter; Escape or โ clears; current match highlighted in orange, other matches in yellow - One-click generation โ queue prompts to ComfyUI without leaving the studio
- Seed control โ randomize, lock, or manually set seeds; seed input and mode selector stacked vertically for readability
- Style selector โ checkbox and dropdown next to the Reset Workflow button; enable to apply a Fooocus-style JSON to positive and negative prompts at generation time; style files (
*.json) are loaded fromuser/default/Workflow-Studio/style/; the style's{prompt}placeholder is replaced with the original prompt text, or the style is appended if no placeholder exists;negative_promptis appended to the existing negative prompt; styles are applied to a per-generation copy and do not modify the loaded workflow - Batch type selector โ check one of the column header checkboxes in the Batch Queue pane (Checkpoint / Lora / Prompt / Workflow / Sampler / Scheduler / Style) to activate that batch type; only one type can be active at a time; the Batch panel below Generate shows the active type, progress, and Pause/Resume/Stop controls
- Batch tab (v0.3.18) โ dedicated 3-pane layout for assembling the batch queue:
- Left pane โ 4 tabs: Checkpoints (file-tree; Filter / All / None), Sampler (KSampler sampler list), Scheduler (KSampler scheduler list), Style (flat list of all styles from
Workflow-Studio/style/; All / None buttons) - Center pane โ group-based selection with inner tabs (Checkpoint | Lora | Prompt | Workflow); Checkpoint/Lora groups come from the Models tab, Prompt groups from the Prompt tab, Workflow groups from the Workflow tab โ check a group to add all its members, expand โถ to select individually
- Right pane (Batch Queue) โ 7 columns: Checkpoint / Lora / Prompt / Workflow / Sampler / Scheduler / Style; each column header has an enable checkbox (radio behavior: only one at a time); count shown per column; Style batch applies each selected style sequentially to a workflow copy
- Lora batch prompt sync (v0.3.69) โ for each selected LoRA, its syntax (
<lora:name:strength_model:strength_clip>) and CivitAI trained words are automatically appended to the Positive prompt (rebuilt from the original prompt each time, not accumulated), then restored to the pre-batch state when the batch completes or is stopped; if a selected LoRA is not yet recognized by ComfyUI's model list, a warning toast suggests a Refresh or restart
- Left pane โ 4 tabs: Checkpoints (file-tree; Filter / All / None), Sampler (KSampler sampler list), Scheduler (KSampler scheduler list), Style (flat list of all styles from
- UI-to-API conversion โ automatic conversion supporting subgraphs (nested workflows), COMBO types, and display-only node exclusion; improved analysis covers SDXL multi-hop CONDITIONING chains, CLIPTextEncodeSDXL, SDXLPromptStyler, KSamplerAdvanced, and more
- Eagle integration โ auto-save generated images to Eagle with metadata
Feeder subtab (v0.3.5 / v0.3.42)
Two independent modes selectable via [Image Loop] / [Gallery] toggle buttons at the top of the left pane (persisted in localStorage).
Image Loop mode โ requires the comfyui-image-feeder custom node.
- ImageFeeder node control โ select the target node from a dropdown auto-populated from the loaded workflow; edit all node parameters (Directory, Sort Mode, Index, Start/End Index, Batch Size, Seed, Use Selection) and Apply to the workflow
- Image library โ 3-pane layout: folder tree (left) browsing
user/default/image-loop-data/, image grid with checkbox selection (center), preview panel with resolution and file size (right) - Selection management โ check individual images; All / None buttons for the current folder; selected files are reflected in
selected_fileson Apply - Presets โ save the current directory + selection as a named preset; load or delete presets (server-side persistence via
image-feeder-presets.json) - Continuous Run loop โ Run / Stop buttons below the presets; After gen mode controls index behavior after each generation:
- Loop โ advance index and wrap back to 0 when all images are exhausted (runs indefinitely)
- Increment โ advance index and auto-stop when all images are consumed
- Fixed โ always use the same index
- Index sync โ after each generation the node returns
next_indexvia WebSocket (image_loop_node_sync); the Index field updates automatically - Seed โ Run loop uses the right-pane seed setting (Random / Fixed / Increment / Decrement); the node's own Seed field only affects random sort order
Gallery mode (v0.3.42) โ no external plugin required; uses the built-in WFS_GalleryFeeder custom node.
- WFS_GalleryFeeder node โ reads images directly from a Gallery group and outputs them one at a time; inputs:
group_name,index,sort_mode(filename_asc / filename_desc / random),seed - Node & group selector โ pick the WFS_GalleryFeeder node from the loaded workflow and choose which Gallery group to feed images from;
__Feeder__group is auto-created on first open - Image grid โ center pane shows all images in the selected group; click any image to update the Index to that position
- After Gen modes โ Loop (wrap at end and continue indefinitely), Increment (stop automatically when last image is reached), Fixed (always use the same index)
- Run / Stop controls โ left pane Run / Stop buttons manage the generation loop; After Gen combo (loop / increment / fixed), โถ Run, and โ Stop widgets are also available directly on the WFS_GalleryFeeder node in the ComfyUI canvas (
gallery_feeder_extension.js)
Prompt Tab
- 3-column layout โ AI Assistant (left), Presets/Preset Manager tab-panel (center), Wildcard support (right)
- AI chat assistant โ powered by Ollama, generate and refine prompts interactively
- Image attachment โ attach reference images for vision-capable models
- Translation โ JA/EN/ZH translation buttons for multilingual prompt creation
- Prompt presets โ save/load reusable prompt templates (positive & negative) with category support
- Preset Manager โ browse all presets, favorites, and group-based filtering with search
- Group management โ create groups, assign/remove presets, delete groups from the Presets panel
- Clipboard copy โ copy positive/negative prompts individually (PP Copy / NP Copy)
- GenUI Set โ apply preset prompts directly to the GenerateUI interface
- Wildcard input toolbar โ one-click buttons to insert
{|},{n$|},__|__,<lora::1:LBW=;>and other wildcard syntax; wraps selected text when applicable - Wildcard file manager โ create, view, and edit
.txt/.yamlwildcard files stored inuser/default/Workflow-Studio/wildcard/; click a filename in the file picker to insert__filename__at cursor
Metadata Tab (v0.3.8)
- 3-column layout โ Drop zone (left) | Model info (center) | LoRA + Prompt (right)
- File drop โ drop a ComfyUI-generated PNG / WebP or workflow JSON onto the drop zone (or click to open a file picker); PNG/WebP images are shown as a preview
- Model extraction โ automatically extracts Checkpoint, VAE, Diffusion Model, and Text Encoder names from the workflow; supports both standard and subgraph-based workflows (Flux.2 Dev/Klein, Qwen-Image-Edit/2511/Layered, Z-Image Base/Turbo, Ernie Image, WAN2.2); node types covered: UNETLoader, UnetLoaderGGUF, UNETLoaderGGUF (e.g. HiDream GGUF), CLIPLoader, DualCLIPLoader, TripleCLIPLoader, QuadrupleCLIPLoader (e.g. HiDream 4-CLIP)
- LoRA extraction โ lists all LoRA models with
strength_model / strength_clipvalues - Prompt extraction โ lists prompts with POS / NEG badges when positive/negative can be determined; when distinction is not possible (e.g.
SamplerCustomAdvanced, intermediate nodes, cross-level connections), prompts are shown without a badge as plain Text; click any entry to view the full text below - Prompt actions โ Copy to clipboard, GenUI:P/N (set GenerateUI positive/negative prompt), Prompt:P/N (set Prompt tab preset positive/negative)
- Format support โ ComfyUI PNG/WebP/JSON (standard + Flux.2 / Qwen-Image / Z-Image / Ernie Image / WAN2.2 subgraph workflows), SD WebUI, SD Forge, Fooocus
- Format note โ supported formats and covered model types are always shown in the left column
Settings Tab
- 2-column layout โ left column for all settings; right column shows the Theme panel fixed in place (sticky)
- Collapsible sections โ all settings organized in accordion panels for a clean layout
- Theme selection โ 13 built-in themes with visual swatch preview (Dark, Pop, Minimalist, Cyberpunk, Glassmorphism, Neumorphism, Retro Pixel, Pastel, Brutalism, Earthy, Material, Monotone, Corporate)
- Theme customization โ override colors (background, surface, text, primary, accent), add background patterns (horizontal/vertical/diagonal stripes, polka dot, checkerboard, custom SVG tiling with color/opacity/scale/gap controls), and select from 16 fonts including Japanese display fonts (Google Fonts)
- Workflows directory โ configure which folder to scan for workflows
- Gallery output directory โ configure which output folder the Gallery tab scans for images
- Eagle connection โ set Eagle API endpoint for auto-save
- Ollama connection โ configure Ollama server URL
- CivitAI Host โ choose which site opens when clicking a model link:
civitai.com(SFW only) orcivitai.red(unrestricted); saved tosettings.jsonand synced tolocalStoragefor the Models tab to use without extra fetches - CivitAI API Key โ optional Bearer token for authenticated CivitAI access; stored in
settings.json(excluded from data exports); environment variableCIVITAI_API_KEYtakes priority if set - Default workflow โ set a workflow to auto-load on startup
- Data Management โ export all plugin data (settings, metadata, prompts, etc.) to a single JSON file; import to restore data (useful when migrating or reinstalling); API keys are excluded from exports for security
- Text Size โ one slider (10โ28 px) adjusts font size for all prompt and chat textareas at once: Generate UI positive/negative prompts, AI Assistant chat input, Preset prompts, Wildcard prompt and file editor, and Metadata prompt full preview; takes effect immediately and saved with Save Settings
- RAW JSON Colors โ customize the 6 syntax highlight colors for the Raw JSON editor in Generate UI: Default Text (base), Name/Scheduler (yellow), Title (pink), Width/Height (green), Prompt/Text (cyan), Image/File (red); changes apply immediately on color pick; Reset Defaults restores the original scheme; saved to
localStorageunderwfm_settings.jsonColorsand applied on startup - Wildcard Integration โ link the WFS wildcard directory to ComfyUI-Impact-Pack's
wildcards/directory (directory junction on Windows, symlink on other OS); existing WFS wildcard files are automatically migrated; requires ComfyUI-Impact-Pack - G'MIC-Qt Integration โ set the path to
gmic_qt.exefor the Image Edit Filter tool; download G'MIC-Qt Standalone fromgmic.eu/download.html(Windows:gmic_qt-win64.zip), extract anywhere, then enter the full path togmic_qt.exeand click Save - Language โ English / Japanese / Chinese
Gallery Tab (v0.3.44)
- Image browser โ browse ComfyUI output images (Thumbnail / Table views) with server-side scanning optimized for 6,000+ image libraries
- Thumbnail / Table views โ switch view modes; Favorites column shown leftmost in Table view
- Folder management โ create subfolders ("+ New") or delete the selected folder with all contents ("Del") from the folder tree header
- File operations โ move or delete individual images from the detail panel's Info tab; bulk Move To..., Export, and Delete File from the multi-select bar
- Download โ hover over the image preview in the detail panel to reveal a download icon (โฌ); click to download the single image
- Multi-select โ Ctrl+click to select multiple images; Bulk Bar appears for batch operations: select group โ "Add to Group" / "Remove from Group"; Favorite All / Unfavorite All; Compare (2โ4 images); Move To...; Export (downloads all selected images as a ZIP file); Delete File
- Image Compare โ select 2โ4 images with Ctrl+click, then click "Compare" in the Bulk Bar to open a side-by-side lightbox; grid adapts to the number of selected images
- Prompt search โ text search covers filename, tags, memo, and prompt text (A1111
parametersfield cached on first detail panel open) - Server-side filtering โ filter by group, favorites, or tags with fast server-side set lookup (no full rescan)
- Group management โ create, rename, delete groups and assign/remove images using the same 4-section panel as Models tab;
__Feeder__is a reserved group (๐ prefix) that cannot be renamed or deleted; used by the Feeder Gallery mode to define the generation queue; FC button in the toolbar clears all members without deleting the group - Thumbnail F button โ cyan overlay button (top-left of each image card) toggles the image's membership in the
__Feeder__group; cyan and always-visible when the image is in the group; visible on hover only when inactive - Favorites โ star images inline without reopening the detail panel
- Detail panel โ view filename, path, tags, groups, and metadata in a slide-out panel
- Workflow viewer โ Metadata tab displays workflow JSON from PNG embedded data (
prompt/workflowkeys) or from workflow saved by the Generate UI tab; Copy & Send Canvas button copies the JSON to the clipboard and sends the workflow directly to the ComfyUI canvas (UI and API formats both supported) - Load GenUI button โ loads the embedded ComfyUI workflow from the selected image directly into the GenerateUI tab; shows a warning toast if no workflow is embedded or the format is unsupported; Metadata button is styled green, Load GenUI button uses the primary accent color
- Image Edit button โ toolbar button; sends the selected image directly to the Image Edit tab as the base layer
- Send GenUI Image button โ toolbar button (next to Image Edit); uploads the selected image to ComfyUI and sets it as the input for the first LoadImage node in the GenerateUI tab; automatically switches to GenerateUI โ Input โ Image; requires a workflow with at least one LoadImage node to be loaded
- Send CC button (v0.3.69) โ toolbar button, shown only when this Gallery tab is embedded as an iframe inside ComfyUI Comic Creator (a separate custom node); sends the selected image directly into Comic Creator's currently selected panel/overlay
- Search clear (โ) โ inline โ button appears inside the search box whenever text is entered; click to clear immediately
- Clear all filters (โ Clear) โ rightmost toolbar button; resets search text, tag filter, group filter, and favorites filter in one click (sort order is preserved)
- Workflow auto-save โ images generated from the Generate UI tab have their workflow automatically saved to gallery metadata
- Output folder configurable โ set the scanned output folder from Settings tab
- Performance โ server-side 256px JPEG thumbnail generation with disk cache (
data/thumb_cache/); infinite-scroll paging (50 images per page, IntersectionObserver); folder-level mtime cache (60s TTL); bulk operations use single-request API endpoints
Nodes Tab (v0.1.7)
- Node Browser โ browse all installed ComfyUI nodes from
/object_infoAPI with Card/Table views - Search & Filter โ full-text search, filter by category, package, tags, groups, and favorites
- Package badges โ color-coded badges generated from package names
- Node detail panel โ view I/O specifications, edit tags, manage groups
- Node Sets โ save multiple nodes + connections as reusable sets from the ComfyUI canvas
- Right-click context menu โ "Save as Node Set" option on any node in ComfyUI
- Multi-select โ Ctrl+click to toggle individual nodes, Shift+click for range selection; bulk action bar appears with: add to group / remove from group / create & add group / bulk favorite / unfavorite
- Search clear (โ) โ inline โ button appears inside the search box whenever text is entered; click to clear immediately
- Clear all filters (โ Clear) โ rightmost toolbar button; resets search text, category, package, tag, group, and favorites filter in one click
Models Tab (v0.2.3)
- Model Browser โ browse all installed ComfyUI models (Checkpoint, LoRA, VAE, ControlNet, UNET, TextEncoder, Hypernetwork, Embedding) with sub-tab switching
- Thumbnail / Table views โ switch between view modes with pagination (24 items per page); Table view includes Type and Base Model columns sourced from cached CivitAI data, displayed between the Subdirectory and Extension columns; Enable/Disable column labeled E/D
- Table column sort โ click any column header to sort ascending (โฒ), click again for descending (โผ), click a third time to clear; active column highlighted in accent color
- Search & Filter โ full-text search, filter by tags, groups, and favorites
- User-defined badges โ assign free-label badges to models; badge colors shared with the Workflow tab palette
- Side panel tabs โ opens to CivitAI tab by default when a model is selected; Info (file path display with click-to-copy, tags, memo), Groups management, CivitAI integration
- CivitAI integration โ fetch model metadata by SHA256 hash; side panel shows Type (badge), Base Model, Hash (BLAKE3/SHA256, click to copy), trained words, tags, and model page link; model link opens in the site selected in Settings (civitai.com or civitai.red)
- CivitAI panel โ Info / Sample sub-tabs โ Info tab shows model details (name, type, base model, hash, trigger words, tags, description); Sample tab shows all sample images (count shown in tab label); clicking any image opens the full-size version in a new tab
- CivitAI panel states โ three distinct states: not yet checked (fetch button), checked but not found on CivitAI (re-check button with notice), and found (full info display); clicking the CivitAI tab always refreshes to the latest state
- Batch CivitAI fetch โ one-click batch fetch using
POST /model-versions/by-hash(up to 100 models per request) with SSE progress streaming; previews are auto-saved for models without one - Detail modal โ preview image, CivitAI info, thumbnail change via file upload; Delete button permanently removes the model file and all associated sidecar files (preview images,
.json,.civitai.info,.metadata.json,.cm-info.json) - GenUI Model button โ apply the selected model directly to the corresponding node in GenerateUI's current workflow (Checkpoint, LoRA, VAE, ControlNet, UNET, TextEncoder, Hypernetwork); Embedding type shows GenUI PP / GenUI NP buttons instead โ appends
(embedding:Name:1.0)to the Positive or Negative prompt of the loaded workflow; also accessible from the side panel nav bar and the detail modal - Group management โ create, rename, delete groups and assign/remove models; groups are scoped per model type (checkpoint groups only appear in the Checkpoint tab); Checkpoint and LoRA tabs include B (Batch) and S (Stack) quick-assign buttons per card/row for one-click group membership toggle without grid re-render
- Table view memo โ memo column displayed in table view for quick reference
- Preview images โ auto-detect
{model_stem}.preview.pngnext to model files - Enable / Disable models โ hide models from ComfyUI by renaming the file extension (
.disabledsuffix); toggle per card (โธ button), per group (Enable All / Disable All), or filter by status (All / Enabled / Disabled) - Multi-select & bulk operations โ click the green Select button to enter selection mode and check multiple models; the bulk action bar is organized in three rows:
- Group row โ select an existing group and Add / Remove, or type a new name and Create & Add
- Badge row โ select a badge and +Badge / โBadge to apply or remove from all selected
- File row โ select a destination subfolder (or type a new folder name and create it) then Move to relocate the model file with all sidecar files; Delete Files (right end) permanently removes selected models and all associated files
- Search clear (โ) โ inline โ button appears inside the search box whenever text is entered; click to clear immediately
- Clear all filters (โ Clear) โ rightmost toolbar button; resets search text, tag filter, folder filter, group filter, favorites filter, and status filter in one click
Tagger Tab (v0.3.38)
- 3 sub-tabs โ Single / Batch / DB for single-image tagging, folder batch processing, and tag database management
- Model support โ WD Tagger (ONNX, NCHW/NHWC auto-detect), SwinV2 (ONNX), DeepDanbooru (.h5, requires TensorFlow); place each model in its own subfolder under
ComfyUI/models/tagger/<model-name>/containing the.onnx+selected_tags.csv(or.h5+ label file) - Threshold sliders โ General threshold (default 0.35) and Character threshold for
character:prefix tags (default 0.85); sliders update the display value in real time - Ollama VLM โ optional vision model alongside WD Tagger; set API URL and select model (โป to refresh list); results from both models are merged into one comma-separated tag string
- Single tab โ drag & drop an image onto the preview area or click Upload; Gallery detail panel Tagger button opens the selected image directly here
- Single output options โ (1) GenUI:P โ appends tags to the GenerateUI tab's positive prompt and immediately applies to the loaded workflow; (2) Send to Prompt โ appends tags to the Prompt tab's positive textarea; (3) Save to Gallery โ saves tags to Gallery image metadata (requires image opened from Gallery); (4) Write to File โ embeds tags into JPEG EXIF (
ImageDescription) or PNGtEXtchunk (Tagskey), other formats get a.tags.jsonsidecar; (5) Save to DB โ stores in internal SQLite database - Batch tab โ enter a folder path, configure WD Tagger and Ollama settings; output options: Save to DB (default on), Write to File (EXIF/PNG metadata), Write .txt (creates
<filename>.txtalongside each image with all tags); real-time progress bar and log; Stop cancels after the current image - DB tab โ searchable SQLite database of all tagged images; click a row to open the edit panel and modify WD Tags / VLM Tags; Save updates the record, Delete removes it; Export CSV downloads all records
- Dependencies โ install into ComfyUI's embedded Python:
python_embedded\python.exe -m pip install -r requirements.txt; for GPU inference useonnxruntime-gpu; TensorFlow (DeepDanbooru) is optional and commented out inrequirements.txt
Image Edit Tab (v0.3.65)
- Layer-based image editor โ compose images with multiple layers (Image, Text, Draw, Mask types) and export the composite as PNG
- Loading images โ drag & drop onto the canvas, Upload button, or send from the Gallery tab via the Image Edit toolbar button; first image becomes Layer 1 (auto-locked), subsequent images are added as new layers scaled to fit the canvas
- New button โ create a blank canvas with custom dimensions (WxH prompt); clears all existing layers and automatically adds an empty Layer 1 (v0.3.70)
- Tools โ Select (V), Draw (B), Text (T), Shape (S), Mask (๐ญ), Blur (โ), BG Remove (โฌ), Filter (โ
); tool options bar updates per active tool
- Select โ click to select; drag to move; drag corner handles to resize; drag circle handle to rotate; Flip H / Flip V / Rotate angle in the options bar; double-click a text layer to re-edit its content
- Draw โ freehand brush; options: color, brush size, blend mode; paints directly onto the active draw layer while all other layers remain visible; brush cursor shown as a size-accurate circle; strokes can start from outside the canvas margin and continue past the edge
- Text โ click to place; configure font, size, bold/italic, align, and color; placed as an exact-size text layer sized to the measured bounding box; double-click to re-edit
- Shape โ drag to draw geometric shapes (Rect / Ellipse / Line / FreeLine); options: shape type, Rounded toggle (Rect/Ellipse), Fill color, Stroke color + width, Opacity; each committed shape becomes an independent draw layer; Stroke None hidden for Line/FreeLine (stroke always active)
- Mask โ 7 sub-tools for painting masks onto a dedicated mask layer; click M in the Layers header to add a mask layer (Mask tool activates automatically); clicking a mask layer in the list also switches to the Mask tool; Tool Options bar: sub-tool buttons (Paint / Color / Alpha / Text / Vector / Shape / SAM3), Invert checkbox, Overlay color picker (default red), Blur slider (0โ50 px); the overlay is only shown for the currently active mask layer, other mask layers stay hidden until selected (v0.3.70); SAM3 requires Mask Editor One (disabled when not installed); Color / Alpha / Text / Vector / Shape work without Mask Editor One; Properties pane โ Paint: Mode (Add / Erase), Size (1โ200 px), Hardness (0โ100%); MASK EDITOR ONE section (Paint sub-tool, visible when installed): Select opens the ABR stamp-brush library; โ clears back to Circle; when an image brush is active, Hardness is disabled and Spacing (5โ100%), Angle (0โ359ยฐ), Sz Jitter (0โ100%), Rot. Jitter (on/off) appear; Properties pane โ Color: click canvas to flood-select pixels by color similarity; Mode (Add / Subtract), Tolerance (0โ255), Feather % (0โ100); Properties pane โ Alpha: extract the active layer's transparency as a mask; Threshold, Invert checkbox, Extract Alpha button; Properties pane โ Text: click canvas to open a stamp overlay โ enter text, set Font / Size / Bold / Italic / Align / Mode (Add / Erase), Stamp or Ctrl+Enter to apply; multi-line supported; Properties pane โ Vector: click to add Catmull-Rom spline points; Enter (or click first point) closes and fills the polygon; Backspace removes the last point; Esc resets; Mode (Add / Erase); Properties pane โ Shape: drag to draw Rect or Ellipse; hold Shift for square/circle; blue dashed outline preview while dragging; Mode (Add / Erase); Properties pane โ SAM3: enter a text prompt, set Max candidates (3/6/9/12), click Segment; select candidate thumbnails (multi-select), Apply Selected (N) applies with current Mode; Mask layer A/S operation: A/S toggle โ Add (green) composites normally, Subtract (red) cuts the mask from below; โ clipping mask button clips the layer below to the painted area; brush cursor shown as size-accurate circle; strokes can start from outside the canvas margin and continue past the edge
- Blur โ Whole Blur: Gaussian blur to the entire active layer with intensity slider (1โ50 px); Whole Mosaic: pixelation mosaic with block-size slider (5โ100 px); Rect Blur / Rect Mosaic: enable the toggle then drag a rectangle on the canvas to apply blur or mosaic to that region only (blue preview for blur, orange for mosaic); Rect Blur and Rect Mosaic are mutually exclusive; all operations support Undo
- BG Remove โ remove the background from the active layer; Lightweight (@imgly): runs entirely in the browser via CDN (no server required; ~40 MB model downloaded on first use); BiRefNet: high-quality removal via Mask Editor One's Python backend (requires Mask Editor One installed and
birefnet.safetensorsinComfyUI/models/background_removal/); New Layer option (default on) adds the result as a new layer above the original; when off, replaces the active layer in-place - Filter (G'MIC) โ apply G'MIC-Qt filter effects to the active image layer; click Edit with G'MIC to launch G'MIC-Qt GUI; select a filter and click OK โ a "G'MIC-Qt filter output" window appears; close it to save the result back as the active layer; requires G'MIC-Qt Standalone installed and path configured in Settings โ G'MIC-Qt Executable Path
- Layer panel โ layer list with visibility (๐/๐ซ), lock (๐/๐), and clipping-mask (โ) toggles; opacity slider; type icons (๐ผ image / T text / โ draw / โฌ mask); Layer 1 is automatically locked on first image load
- Layer lock โ locked layers show an orange bounding box and ๐ icon on the canvas; move/resize/rotate are disabled while locked; click the ๐ button in the layer row to unlock
- Text quality โ text layers are rendered at their measured bounding-box size; resizing with the Select tool regenerates the canvas at the new display resolution so text stays sharp
- Export โ Save PNG (download composite locally); Save to Gallery (saves to Gallery root folder with a timestamped default name
wfs-image-YYYYMMDDHHmmss); Send to ComfyUI (uploads to ComfyUI input folder for use in Load Image nodes) - Canvas navigation โ scroll-wheel zoom, Space + drag to pan; zoom indicator in the bottom bar
- Undo / Redo โ Ctrl+Z / Ctrl+Y (or toolbar buttons); keyboard shortcuts: V (Select), B (Draw), T (Text), S (Shape), Delete (remove selected layer when 2+ exist)
AI TOOL Tab (v0.3.14)
- 4-pane layout โ Translation | Chat | TOOLS | Settings; all panes always visible simultaneously; no sub-tab switching required
- Translation pane โ translate text between Japanese, English, Chinese, or a custom Free language using Ollama or LM Studio; language selectors with โ swap button (swaps both language selectors and text content); selections saved automatically
- Chat pane (v0.3.40) โ multi-turn conversation with the LLM; full conversation history sent each turn for context; Enter to send, Shift+Enter for a newline; Clear button resets history; Ollama uses
/api/chat, LM Studio uses/v1/chat/completions - TOOLS pane (VLM) โ drop an image into the 110px drop zone, select a task (Describe Image / Create Prompt / Create Tags), and click Run to analyze with a vision model; result shown in the output area with a Copy button
- TOOLS pane (Wildcards) (v0.3.40) โ select "Create wildcards" from the task dropdown; enter a category name and count; click Run to generate plain-text wildcard entries one per line (no markdown, no numbering); result can be copied directly into wildcard
.txtfiles - Settings pane โ choose backend (Ollama / LM Studio), set the API URL, test connection, select a model (with refresh button), and configure Free language names for translation source and destination
- Settings shared โ settings saved to
localStorageunderwfm_ai_settings; shared with the Library panel's AI TOOL tab so configuration is consistent across both interfaces - Backend support โ Ollama (
/api/generatefor text,/api/chatfor conversations,/api/tagsfor model list); LM Studio OpenAI-compatible API (/v1/chat/completions,/v1/models); VLM images sent as base64 (images:[]for Ollama,image_urlcontent block for LM Studio) - URL security โ backend URL validated via
new URL()to enforcehttp://orhttps://scheme
Workflow Studio Library (ComfyUI Side Panel) (v0.3.9)
- Tab layout (W / N / P / M / I / A) โ compact single-letter tabs with full name shown on hover
- W โ Workflows tab โ browse favorite workflows (All / โ Favorites / Groups / By Badge sub-tabs), โ star shown for favorites in All view
- N โ Nodes tab โ browse favorite nodes (All / โ
Favorites / Groups / Sets / ๐ Category / ๐งฉ Package sub-tabs), โ
star shown for favorites in All view
- Category sub-tab โ dropdown to filter nodes by top-level category
- Package sub-tab โ dropdown to filter nodes by custom node package name
- M โ Models tab โ browse installed models (All / โ
Favorites / Groups / By Type sub-tabs); LoRA groups show an All N LoRAs item โ drag to canvas to place a
Lora Loader (LoraManager)node with all LoRAs pre-loaded - P โ Prompts tab โ browse prompt presets with All / โ
Favorites / Categories sub-tabs; Groups sub-tab (row 2) โ view presets by group (shared with the Batch tab's
wfm_prompt_preset_groups) - I โ Information tab โ drop a ComfyUI-generated PNG/WebP or workflow JSON in the side panel to view its metadata; detects LoRAs from
LoraLoader,LoraLoaderModelOnly, andLora Loader (LoraManager)nodes (API format supported); supportsUnetLoaderGGUFandQuadrupleCLIPLoadernode types; preview area fixed at 110px - A โ AI TOOL tab โ Translation, Chat, TOOLS, and Settings sub-tabs powered by Ollama or LM Studio; Chat supports multi-turn conversations (full history sent each turn); TOOLS includes VLM image analysis and wildcard generation; settings (backend, URL, model) shared with the SPA AI TOOL tab via
localStorage- model sub-tab โ Checkpoint, VAE, Diffusion Model, and Text Encoder; drag items to canvas to place the corresponding loader node (Checkpoint โ
CheckpointLoaderSimple, VAE โVAELoader, Diffusion Model โUNETLoader, Text Encoder โCLIPLoader); double-click also places at canvas center - lora sub-tab โ detects LoRAs from
LoraLoader,LoraLoaderModelOnly, andLora Loader (LoraManager)nodes (API formatinputs.loras.__value__supported); showsstrength_model / strength_clipvalues; drag individual LoRA to placeLoraLoader; Multiple LORA section (appears for 1+ LoRAs) drags all LoRAs into a singleLora Loader (LoraManager)node with LoRA syntax pre-filled - Prompts sub-tab โ POS / NEG badge list; drag a prompt to place
CLIPTextEncodewith text pre-filled; click any entry to view full text + Copy button
- model sub-tab โ Checkpoint, VAE, Diffusion Model, and Text Encoder; drag items to canvas to place the corresponding loader node (Checkpoint โ
- Drag & drop workflows โ drag a workflow onto the canvas to load it
- Drag & drop nodes โ drag nodes/node sets onto the canvas to place them
- Drag & drop prompts โ drag a preset onto the canvas to create a WFS_PromptText node with positive/negative prompts
- Send to Canvas โ clicking "Send to Canvas" (Workflow tab toolbar / detail modal) or "Copy & Send Canvas" (Gallery tab JSON panel) sends the workflow directly to the ComfyUI canvas via
window.opener(UI and API formats both supported); if Workflow Studio was opened from a bookmark instead of the ComfyUI toolbar, UI-format workflows fall back to title drag (panel title highlights blue with a green โ โ drag it onto the canvas to load) - Copy prompts โ copy individual positive (P) or negative (N) prompts from sidebar items
- Double-click โ load workflows or place nodes without dragging
- Search โ search within each sub-tab to quickly find items
- โ Theme settings โ customize panel background, sub-header background, text, border, and secondary text colors; saved to localStorage and applied on every open
Help & Support Tab (v0.1.3)
- Sidebar navigation โ 2-column layout: left sidebar (15 topics) + right content pane; click any topic to switch the displayed content
- Support โ fixed at the bottom of the sidebar; shows GitHub, Ko-fi, ComfyUI Image Feeder, and Mask Editor One repository links in the right pane
- Feature list โ overview of all features organized by tab
- Keyboard Shortcuts and Troubleshooting sections included
Installation
Via ComfyUI Manager (Recommended)
Search for Workflow Studio in ComfyUI Manager and install.
Manual Installation
cd ComfyUI/custom_nodes
git clone https://github.com/ketle-man/ComfyUI-Workflow-Studio.git
Restart ComfyUI after installation.
Sample Workflows
Sample workflows are included in the workflows/ folder. You can open them directly in ComfyUI via drag & drop, or load them from the Workflow tab.
Note: Some sample workflows require additional custom nodes. If a node is shown as missing (red/unknown) after loading, install the required custom nodes via ComfyUI Manager or by cloning the repository from GitHub into your
ComfyUI/custom_nodes/directory.cd ComfyUI/custom_nodes git clone <repository-url>After installation, restart ComfyUI to activate the new nodes.
Usage
Launch
Click the W button in the ComfyUI top menu bar, or navigate to:
http://127.0.0.1:8188/wfm
Tip: Shift+Click the W button to open in a new window.
Canvas Snapshot
Click the camera icon (next to the W button) in ComfyUI's top bar to capture the current workflow canvas as a thumbnail. The image is automatically saved to the workflow data folder and appears in Workflow Studio's workflow list.
Quick Start
- Workflow Tab โ Your workflows from
ComfyUI/user/default/workflows/are automatically listed - Click a workflow โ View thumbnail, JSON details, and metadata in the side panel
- Load in GenerateUI โ Click the button to load a workflow into the generation interface
- Adjust parameters โ Modify prompts, models, seeds, and settings via the auto-generated UI
- Generate โ Hit the Generate button to queue the prompt
Requirements
- ComfyUI โ any recent version (v1.33.9+ recommended for action bar integration)
- Python 3.10+
- Jinja2 โ
pip install jinja2(usually included with ComfyUI)
Optional
- Ollama โ for AI chat assistant, translation, and VLM features
- LM Studio โ alternative backend for translation and VLM (OpenAI-compatible API)
- Eagle โ for auto-saving generated images with metadata
- comfyui-mask-editor-one (v0.1.9+) โ enables BiRefNet background removal, SAM3 text-prompt segmentation, and ABR stamp-brush library in the Image Edit Mask tool;
birefnet.safetensorsmust be placed inComfyUI/models/background_removal/for BiRefNet
Supported Languages
| Language | Status | | -------- | ------ | | English | Full | | Japanese | Full | | Chinese | Full |
Changelog
v0.3.70
- Workflow AI summary โ Ollama 404 fix โ the summarize button in the workflow detail modal now uses the Ollama URL/model saved in Settings โ AI Assistant Settings (previously it silently fell back to a hardcoded default model tag that didn't match locally installed models, causing a 404)
- Image Edit โ New button auto-adds Layer 1 โ creating a blank canvas via the New button now automatically adds an empty "Layer 1", matching the existing image-load behavior
- Image Edit โ mask overlay shown only for the active mask layer โ previously every visible mask layer's overlay was rendered regardless of selection; now only the currently active mask layer shows its overlay, other mask layers stay hidden until selected
- GenerateUI โ Revert button for Positive/Negative Prompt โ a โบ button next to each Apply button reverts the textarea to the node's currently applied value
- GenerateUI โ Ctrl+โ/โ prompt emphasis weight editing โ A1111 / native ComfyUI CLIP Text Encode style: select text (or just place the cursor on a word/parenthesis block) and press Ctrl+โ/โ to adjust
(text:weight)by ยฑ0.05; parentheses are removed automatically when the weight returns to 1.0
v0.3.69
- Gallery โ Send CC button โ new toolbar button, shown only when the Gallery tab is embedded as an iframe inside ComfyUI Comic Creator (a separate custom node); sends the selected image directly into Comic Creator's currently selected panel/overlay via its existing
insertImageFromUrl(url)helper (no changes required on the Comic Creator side) - Lora batch โ validation fix โ fixed a
Prompt outputs failed validationerror where LoRA files that actually existed were rejected by the standardLoraLoadernode; the root cause was a path-separator mismatch (ComfyUI on Windows returns\-separated enum values while WFS tracked LoRAs internally with/); a sharedresolveLoraName()helper now converts to ComfyUI's actual notation before applying, used consistently by Lora Single apply, Stack apply, the Models tab GenUI Model button, and Lora batch generation - Lora batch โ pre-flight check โ before running a batch on a standard
LoraLoaderworkflow, selected LoRAs are checked against ComfyUI's current model list; if any are not yet recognized, a warning toast suggests a Refresh or ComfyUI restart (skipped for Lora Managerโbased workflows, which have no enum constraint) - Lora batch โ automatic prompt sync โ for each LoRA applied during a batch, its syntax (
<lora:name:strength_model:strength_clip>) and CivitAI trained words are automatically appended to the Positive prompt, rebuilt from the original prompt each time (not accumulated); the prompt is automatically restored to its pre-batch state when the batch completes, is stopped, or errors - Models tab โ Close button in detail modal โ added a Close button at the right end of the Save / GenUI PPยทNP / Delete button row in the model detail modal (all sub-tabs), reducing mouse travel to the top-right โ during repeated batch edits
- Help โ new help entry (
helpGen19) added in EN / JA / ZH describing the Lora batch prompt sync, restore, and pre-flight check behavior
v0.3.68
- Image Edit โ MASK EDITOR ONE section always visible โ the ABR brush section in the Draw tool's (
MASK EDITOR ONE (COLOR)) and Mask Paint mode's (MASK EDITOR ONE) Properties pane is now always shown instead of being hidden when no brushes are imported; the header text turns green when at least one ABR brush is available and gray when none are imported yet; the Select button is disabled until a brush exists - Help โ MASK EDITOR ONE status โ updated
helpImageEdit5(Draw tool) andhelpImageEditMask4(Mask Paint mode) in EN / JA / ZH to describe the always-visible section and its color-coded availability state
v0.3.67
- GenerateUI โ Alt+Click Apply & Generate โ Alt+Click any Apply button to apply the parameter and immediately queue a generation in one step; applies to Positive Prompt Apply (Input tab), all model Apply buttons (Model tab: Checkpoint / VAE / Diffusion Model / ControlNet / Hypernetwork), and KSampler Apply (Settings tab); only triggers generation when the target node exists in the loaded workflow (no action on missing nodes); each Apply button shows a tooltip
Apply (Alt+Click: Apply & Generate)on hover - Help โ Alt+Click Apply & Generate โ new help entry (
helpGen18) added in EN / JA / ZH
v0.3.66
- Image Edit โ Mask Tool: 5 new sub-tools โ Paint / Color / Alpha / Text / Vector / Shape / SAM3 (7 sub-tools total); Color, Alpha, Text, Vector, and Shape work without Mask Editor One
- Color โ click the canvas to flood-select pixels similar in color to the clicked point; Properties pane: Mode (Add / Subtract), Tolerance (0โ255), Feather % (0โ100)
- Alpha โ extract the active layer's alpha channel as a mask; Properties pane: Threshold, Invert checkbox, Extract Alpha button
- Text โ click to open a stamp overlay; enter text, set Font / Size / Bold / Italic / Align / Mode (Add / Erase), confirm with Stamp or Ctrl+Enter; multi-line text supported
- Vector โ click to add Catmull-Rom spline control points; Enter (or click the first point) closes and fills the polygon; Backspace removes the last point; Esc resets; Mode (Add / Erase)
- Shape โ drag to draw a rectangle or ellipse; hold Shift for a perfect square/circle; blue dashed outline preview while dragging; Properties pane: Mode (Add / Erase), Shape (Rect / Ellipse)
- Help โ Support page โ added ComfyUI Image Feeder and Mask Editor One GitHub repository links to the Support card
v0.3.65
- Image Edit โ Mask Editor One integration fixes โ
store_imageAPI field mismatch (image_b64โbg_image_b64) corrected so BiRefNet and SAM3 no longer report "no image available";server.pyupdated to accept both field names for backward compatibility - Image Edit โ top bar icon persistence โ WFS / Snapshot / Node Sets SVG icons in the ComfyUI action bar disappeared when the Properties Panel was opened (Vue re-render reset custom
innerHTMLto<i>); fixed with aMutationObserverthat re-applies SVG icons whenever a reset is detected - Image Edit โ Mask Tool: ABR brush library (requires Mask Editor One) โ Select button in the Properties pane opens a folder-tree + thumbnail-grid brush picker; stamp brushes are loaded from Mask Editor One's
/mask_editor/brushes/folder; โ clears back to the default circle brush - Image Edit โ Mask Tool: ABR brush controls โ when an image brush is active, Hardness is disabled and new controls appear in the Properties pane: Spacing (stamp interval 5โ100%), Angle (fixed rotation 0โ359ยฐ), Sz Jitter (random size reduction per stamp 0โ100%), Rot. Jitter (random angle per stamp on/off); size jitter clamped to minimum 1 px to prevent zero-dimension canvas errors
- Image Edit โ Mask brush cursor โ brush size circle is now hidden outside the canvas; only shown when the pointer is within the canvas bounds (window-level mousemove no longer shows the cursor overlay outside)
v0.3.64
- Image Edit โ Mask layer Add/Subtract โ A/S toggle button on each mask layer row; Add (green, default) composites the mask normally; Subtract (red) cuts the mask area from the layer below; multiple mask layers are composited back-to-front matching Mask Editor One's CanvasCompositor logic
- Image Edit โ BiRefNet BG Remove (requires Mask Editor One +
birefnet.safetensorsinComfyUI/models/background_removal/) โ BiRefNet model now fully functional via Mask Editor One's Python backend; grayscale mask returned as RGBA PNG and applied as a new layer or in-place per the New Layer toggle - Image Edit โ SAM3 segmentation (requires Mask Editor One) โ new SAM3 sub-tool in the Mask tool options bar; enter a text prompt, set Max candidates (3/6/9/12), click Segment; candidate mask thumbnails shown in the Properties pane; click to select (multi-select), Apply Selected (N) applies all chosen masks with Add or Erase mode; new mask layer auto-created if active layer is not a mask
v0.3.63
- Nodes tab โ multi-select โ Ctrl+click to toggle individual nodes, Shift+click for range selection; bulk action bar appears with add to group / remove from group / create & add group / bulk favorite / unfavorite; works in both Card and Table view modes
- All tabs โ search clear (โ) โ inline โ overlay button inside each search box (Workflow / Nodes / Models / Gallery); shown only when text is entered, click to clear and re-filter immediately
- All tabs โ clear all filters button โ new โ Clear button at the rightmost end of each tab's toolbar; resets all active filters (search, group, tag, folder, favorites, badge) in one click; Gallery sort order is preserved
v0.3.62
- Gallery tab โ Send GenUI Image button โ new toolbar button (next to Image Edit); uploads the selected image to ComfyUI and sets it as the input for the first LoadImage node in the GenerateUI tab; automatically switches to GenerateUI โ Input โ Image;
comfyEditor.applyImageToSlot(file, slotIndex)added tocomfyui-editor.jsfor reusable image-slot injection - Bug fix: tagger_settings.json missing from data export โ
tagger_settings.jsonwas absent from_DATA_FILESinsettings_routes.py; Tagger model directory and threshold settings were silently excluded from Settings โ Data Management export/import; fixed by adding the file to the export list - Help โ Send GenUI Image โ new help card (
helpGallery17) added in EN/JA/ZH; registered inhelpIdMap - Screenshots โ Tagger and Image Edit tabs โ
docs/12_Tagger.pnganddocs/13_ImageEdit.pngadded to the README screenshots section
v0.3.61
- Image Edit โ Draw / Mask brush cursor โ cursor replaced with a size-accurate circle overlay matching the current brush size; the circle scales correctly with canvas zoom so the visible area matches exactly what will be painted
- Image Edit โ Draw / Mask out-of-canvas strokes โ strokes can now start from the canvas margin area (outside the image boundary) and continue past the edge without interruption;
window-levelmousemove/mouseuptracking keeps the stroke alive when the pointer leaves the canvas element - G'MIC โ argument order fix โ corrected
gmic_qt.exelaunch arguments to-o <output> <input>(the only order G'MIC-Qt Standalone accepts); the previous order caused the GUI to exit immediately without opening - G'MIC โ settings path placeholder โ replaced the hard-coded user-specific default path with a generic
C:\path\to\gmic_qt.exeplaceholder; settings load without a pre-filled path for new users - G'MIC โ security: path traversal fix โ
POST /api/wfm/gmic/resultnow validates thatresult_pathis inside thegmic_tempdirectory before reading the file; requests for paths outside that directory are rejected with 403 - Help โ G'MIC Filter section โ added two new help cards (G'MIC Filter usage and G'MIC-Qt Installation) with full i18n support (English / Japanese / Chinese)
v0.3.60
- Image Edit โ Filter tool (G'MIC-Qt integration) โ the previously inactive โ
Filter tool now launches G'MIC-Qt GUI with the active layer image; select a filter and click OK, then close the "G'MIC-Qt filter output" window to apply the result back as the active layer; polling-based job system with progress display, Cancel button, and Undo support; requires G'MIC-Qt Standalone (
gmic_qt.exe) configured in Settings - Settings โ G'MIC-Qt Executable Path โ new collapsible section in Settings for entering and saving the path to
gmic_qt.exe
v0.3.59
- Image Edit โ Mask Tool โ new Mask tool (๐ญ) in the Image Edit sidebar; click M in the Layers header to add a mask layer (Mask tool activates automatically); clicking a mask layer in the layer list also switches to the Mask tool; Tool Options bar: Paint button, Invert checkbox (inverts overlay preview), Overlay color picker (default red), Blur slider (0โ50 px) for overlay edge softening; Properties pane (left of the Layers panel, shown when Mask tool is active): Size (1โ200 px), Hardness (0โ100%), Mode โ Add / Erase toggle buttons (active mode highlighted in blue)
- Image Edit โ Clipping mask (โ button) โ each mask layer row shows a โ toggle; when enabled (blue), the mask clips the layer directly below it so only the painted area is visible; clipping is applied to PNG save / Save to Gallery / Send to ComfyUI exports
- Image Edit โ Draw & Mask paint bugfix โ Draw and Mask tools now paint directly onto
layer.canvas; all other layers remain fully visible during brush strokes (previously the composite view was replaced by the active layer only while painting) - Image Edit โ Layer panel width โ increased from 190 px to 220 px to accommodate the additional โ button on mask layer rows
- Help โ Mask Tool section โ added Mask Tool card with full i18n support (English / Japanese / Chinese); updated Tools list, layer type icon list, and Layer panel "M button" description
v0.3.58
- GenerateUI Model tab โ Diffusion Model GGUF support โ
LoaderGGUFandLoaderGGUFAdvancednodes are now recognized alongsideUNETLoader/UnetLoaderGGUF; the correct input key (gguf_namevsunet_name) is selected automatically on Apply; the Models tab "GenUI Model" button also applies correctly toLoaderGGUFworkflows - GenerateUI Model tab โ Text Encoder expanded (CLIPLoader / DualCLIPLoader / GGUF variants) โ the Text Encoder section now renders a node-type-aware UI: single CLIP (
CLIPLoader/ClipLoaderGGUF) shows one clip selector + type dropdown + device (GGUF only); Dual CLIP (DualCLIPLoader/DualClipLoaderGGUF) shows two clip selectors (clip_name1 / clip_name2) + type dropdown + device (GGUF only); type options are fetched dynamically from/object_info; filter applies to the first selector only
v0.3.57
- Image Edit โ Blur tool โ new Blur tool (โ) in the Image Edit sidebar; Whole Blur: Gaussian blur to the entire active layer with intensity slider (1โ50 px); Whole Mosaic: pixelation mosaic with block-size slider (5โ100 px); Rect Blur / Rect Mosaic: toggle to enter rect-draw mode then drag to select a region โ blur or mosaic is applied on mouse release; Rect Blur and Rect Mosaic are mutually exclusive; all operations support Undo (Ctrl+Z)
- Image Edit โ BG Remove tool โ new BG Remove tool (โฌ); Lightweight (@imgly): background removal running entirely in the browser via CDN (~40 MB model cached after first load); BiRefNet: stub wired to a future Python backend endpoint (coming soon); New Layer checkbox (default on) adds the result as a new layer above the original โ uncheck to replace the active layer in-place; supports Undo
- Image Edit โ sidebar icons โ removed
ie-tool-placeholderdimming from Blur and BG Remove buttons; both now display at full brightness matching other active tools - Help โ Blur / BG Remove sections โ added two new help cards (Blur Tool and BG Remove Tool) with full i18n support (English / Japanese / Chinese); Tools list updated with Blur and BG Remove overview items
v0.3.56
- GenerateUI โ Style selector โ new checkbox and dropdown next to the Reset Workflow button; when enabled, a Fooocus-style JSON style is applied to positive and negative prompts at generation time; style files (
*.json) are read fromuser/default/Workflow-Studio/style/; multiple files are merged into a single list sorted by filename; the style's{prompt}placeholder is replaced with the original prompt text, otherwise the style text is appended;negative_promptis appended to the existing negative prompt; styles are applied to a per-generation workflow copy and never modify the loaded workflow - Batch tab โ Style batch โ new Style tab in the Batch left pane lists all styles loaded from the style directory (flat list with All / None buttons); select any combination, enable the Style column in Batch Queue, then Generate to run each selected style sequentially; Batch Queue expanded from 6 to 7 columns (Style added as the rightmost column)
v0.3.55
- Group feature โ fix data loss on Windows (backslash/slash mismatch) โ on Windows, ComfyUI returns model paths with backslashes (
sub\model.safetensors) while the backend normalized to forward slashes; this caused all subdir group members to be flagged as missing and deleted on save; fixed by normalizing both stored and scanned paths to forward slashes inget_model_groupsandsave_model_groups - Group feature โ network drive protection โ if no model directories are accessible (e.g. external drive disconnected), the group cleanup step is now skipped entirely to prevent wiping all group memberships
- Group feature โ scan cache โ
_scan_model_namesnow caches results for 30 seconds to eliminate redundant full directory scans on startup (caused high CPU load / crash on large model sets) - Group feature โ RESERVED_GROUPS protection โ
bulkRemoveFromGroupandrenderPmGroupsnow prevent Batch/Stack reserved group keys from being deleted even when all members are removed - Group feature โ stale groupFilter reset โ after deleting a group,
state.groupFilteris automatically cleared if it pointed to the now-deleted group (previously showed 0 models) - Group feature โ toggleGroupEnable partial failure โ only models listed in
data.okare updated client-side, preventing state divergence when some enable/disable calls fail - GenerateUI batch groups โ restore Batch/Stack visibility โ reverts an incorrect filter that hid Batch and Stack groups from the batch group selection UI; these groups are now selectable for batch execution as intended
- GenerateUI LoRA groups โ path normalization โ backslash-to-slash normalization added after fetching LoRA groups from the API, matching the Checkpoint fix
- Batch complete toast โ i18n โ replaced hardcoded English toast with
t("batchComplete", ...)supporting all 3 languages - Prompt tab migration โ fix negText loss โ
migrateLocalStoragePresetsnow correctly passesnegTextwhen callingapiCreatePreset, preventing negative prompts from being silently dropped during localStorageโAPI migration - Help tab โ Image Edit section i18n โ the Image Edit help page was hardcoded in English with no language switching support; all 6 sections (30 items + 7 headings) now have i18n IDs wired to English / Japanese / Chinese translations
v0.3.54
- Image Edit โ Shape tool (S) โ new Shape tool added to the Image Edit toolbar; draw Rect, Ellipse, Line, and FreeLine shapes by dragging; each committed shape becomes an independent draw layer that can be undone in a single step; Tool Options: shape type selector, Rounded toggle (Rect/Ellipse only), Fill color + None toggle (hidden for Line/FreeLine), Stroke color + width (Stroke None hidden for Line/FreeLine where stroke is always active), Opacity slider, Undo button; blue dashed outline previews the shape during drag; keyboard shortcut S activates the tool
- Models tab โ fix B/S overlay buttons not highlighting โ the Batch (B) and Stack (S) card overlay buttons failed to turn yellow after clicking because
e.currentTargetis nulled by the browser after anasyncevent handler yields atawait; fixed by capturingconst btn = e.currentTargetbefore the await in both handlers
v0.3.53
- Image Edit Tab โ new layer-based image editing tab with Select / Draw / Text tools, multi-layer compositing, canvas zoom & pan, and Undo/Redo; text layers are sized to exact bounding-box dimensions and regenerated at display resolution on resize to prevent blurring; double-click a text layer to re-edit its content; Gallery tab gains an "Image Edit" toolbar button to send the selected image directly to the editor
- Image Edit โ Layer lock โ lock icon (๐/๐) on each layer row; locked layers display an orange bounding box and ignore all Select-tool transforms; Layer 1 is auto-locked when the first image is loaded to prevent accidental moves
- Image Edit โ Save to Gallery โ "Save to Gallery" button (next to Save PNG) saves the composite image to the Gallery root folder; filename defaults to
wfs-image-YYYYMMDDHHmmss; backed by newPOST /wfm/gallery/image/saveAPI endpoint - Help tab โ Image Edit page โ new dedicated help page covering tools, layer panel, text quality, export options, and keyboard shortcuts
v0.3.52
- GenerateUI Model tab โ fix LoRA selection reset when switching subtabs โ applying a LoRA via "GenUI Model" button and then switching to another subTab (Prompt/Image/Settings) and back to Model caused the LoRA selector, syntax display, and trigger words to revert to the original workflow values; fixed by reading
currentValdirectly fromcurrentWorkflowinstead of the stalecurrentAnalysis, and by saving/restoring the Single tab's syntax and trigger words across re-renders
v0.3.51
- Models tab โ Embedding type: GenUI PP / GenUI NP buttons โ Embedding models now show two buttons ("GenUI PP" and "GenUI NP") in the side panel nav, detail side panel, and detail modal (replacing the single "GenUI Model" button); clicking either appends
(embedding:Name:1.0)to the Positive or Negative prompt of the loaded workflow - GenerateUI Prompt tab โ Embeddings selector โ new section at the bottom of the Prompt tab: Filter input, model select dropdown, Weight input (default 1.0), and Paste button; Paste inserts
(embedding:Stem:weight)at the cursor position of the last focused textarea (Positive or Negative); focus state is tracked on click/keyup/blur so the button works even after clicking away - GenerateUI Model tab โ Hypernetwork support โ Hypernetwork section added with model selector (filter) and Strength field; applies to
HypernetworkLoadernodes in the workflow; GenUI Model button in Models tab also triggers Hypernetwork apply - Models tab โ fix Embedding and Hypernetwork models not shown โ
_fetchModelListnow handles the ComfyUI V3 node format (optionskey) in addition to V1/V2 formats;fetchEmbeddingsswitched from the/embeddingsComfyUI endpoint to the WFS backend API (/api/wfm/models/files?type=embedding) to avoid SPA URL routing conflicts - Models tab โ GenUI Model button in side panel nav โ "GenUI Model" button added to the tab navigation bar (Info / Group / CivitAI) of the side panel; appears for supported model types (Checkpoint, LoRA, VAE, etc.) and hides for unsupported types; Embedding type shows PP/NP nav buttons instead
v0.3.50
- Gallery tab โ fix prompt search causing ComfyUI hang under large folders โ the v0.3.49 on-demand metadata read ran synchronously on the aiohttp event loop, blocking ComfyUI when folders contained many uncached images; fixed by: (1) removing on-demand reads from
list_images(); (2) wrappinglist_images()inasyncio.to_thread()to keep the event loop free; (3) adding a background indexer (start_background_index) that automatically indexes uncached images after a folder is loaded โ processes 10 images per batch with a 50 ms sleep between batches; cancellable on folder switch
v0.3.49
- GenerateUI tab โ A1111-style SPA-side wildcard expansion โ when prompt text in non-ImpactWildcard nodes (e.g. CLIPTextEncode) contains
__name__syntax, the SPA expands it at generation time by randomly picking a line from the matching file in the WFS wildcard folder; nested wildcards are re-expanded up to 5 passes; unresolved wildcards are passed through unchanged; ImpactWildcardEncode/Processor nodes are skipped (handled server-side by Impact Pack); works in both single and batch generation - Gallery tab โ fix Export button missing label โ the bulk action bar's Export button had no text label because the
textContentassignment was missing fromupdateUITexts(); fixed by adding thegalleryBulkExporti18n key assignment alongside the existing Move/Delete entries - Gallery tab โ fix prompt search not matching images with no cached index โ
prompt_cachewas only built when an image was opened in the detail panel; A1111 images (or any images never opened) were invisible to prompt search; now when search is active andprompt_cacheis empty, the image file is read on-demand and the cache is populated and persisted for future searches
v0.3.48
- Gallery tab โ single image download โ hover over a detail-panel preview image to reveal a download overlay (โฌ icon); click to download the original file with its original filename preserved
- Gallery tab โ bulk export to ZIP โ multiple selected images can be exported as a ZIP archive via the "Export" button in the bulk action bar; filename:
gallery_export_<timestamp>.zip; backend:POST /wfm/gallery/images/export-zipwith path-traversal protection
v0.3.47
- Models tab โ fix stale group state after file move โ when models were moved to a subdirectory via "Move To...",
state.modelGroupsin the JS client was not updated to reflect the new model paths; the group filter view would lose the moved models immediately after the operation. Now the client-side group membership is updated in sync with the server-side rename (mirrors the existing Pythonmove_modelslogic). Generate tab Batch groups are unaffected as they always fetch fresh from the server.
v0.3.46
- Prompt tab AI Assistant โ LM Studio support โ switched from Python proxy (
/api/wfm/ollama/*) to direct browser-to-backend API calls (same pattern as the AI TOOL tab); supports Ollama (/api/chat) and LM Studio (/v1/chat/completions); image attachments are automatically converted to the correct format per backend - Settings tab โ AI Assistant Settings (Prompt Tab) โ renamed from "Ollama Settings"; added backend selector (Ollama / LM Studio), URL input with per-backend placeholder, model select with Refresh, and Test button; settings saved to localStorage
wfm_prompt_ai_settings(independent of AI TOOL tab settings) - Auto-refresh on backend change โ if the backend is switched in Settings tab while Prompt tab is already open,
sendMessage()now detects the mismatch and automatically re-fetches the model list before sending; model status shows the active backend name ([ollama]/[lmstudio]) - Help text updated (EN/JA/ZH) โ Prompt tab, Settings tab, and Troubleshooting sections updated to reflect Ollama / LM Studio dual-backend support
v0.3.45
- Group auto-cleanup โ Models tab โ stale group entries (models that no longer exist on disk) are automatically removed when the Models tab is loaded or the model type is switched; models moved within the app via "Move To..." also update their group membership immediately
- Group auto-cleanup โ Gallery tab (folder view) โ metadata entries for missing files are cleaned up each time a folder is scanned (
list_images), synchronized with the 60s TTL + folder-mtime cache - Group auto-cleanup โ Gallery tab (group image list) โ
list_images_in_group(used by the Feeder tab Gallery mode) now filters out non-existent paths and removes them from the group in a single write operation - Gallery tab โ Shift+click range selection โ Shift+click selects all images between the last clicked item (anchor) and the current item; works in both thumbnail and table views; anchor is updated on Ctrl+click and regular click; resets on folder change, image reload, and Deselect All; help text updated (EN/JA/ZH)
v0.3.44
- Gallery tab โ server-side thumbnail generation โ
GET /wfm/gallery/image/thumb?path=...&w=256endpoint generates 256px JPEG thumbnails via Pillow and caches them todata/thumb_cache/keyed bymd5(path:mtime:width); GIF served as-is to preserve animation; falls back to the original file if Pillow is unavailable; thumbnail view and table view both switched from/image/serveto/image/thumb - Gallery tab โ infinite-scroll paging โ thumbnail view renders 50 images initially; an IntersectionObserver sentinel (rootMargin 300px) appends the next page on scroll; sentinel is disconnected and removed when all images are rendered; paging resets on every
renderImages()call (folder change, filter, sort) - Gallery tab โ bulk API endpoints โ
POST /wfm/gallery/bulk/favoriteandPOST /wfm/gallery/bulk/grouphandle favorite set and group add/remove for any number of images in a single request; replaced N-parallel individual fetches inbulkSetFavorite()andbulkAddToGroup() - Gallery tab โ image compare mode โ Ctrl+click 2โ4 images, then click "Compare" in the Bulk Bar to open a side-by-side lightbox; CSS grid adapts to the image count via
--compare-colscustom property; close button isposition:fixedat the top-right corner to avoidoverflow:autoclipping - Gallery tab โ "Remove from Group" bulk button โ new button in the Bulk Bar (right of "Add to Group"); uses the same group selector dropdown; calls
POST /wfm/gallery/bulk/groupwithaction:"remove" - Gallery tab โ bulk bar UI labels โ dropdown placeholder "Add to Group..." โ "Select Group"; "Add" button โ "Add to Group"; "Delete" button โ "Delete File" (distinguishes file deletion from group removal)
- Gallery tab โ prompt search โ text search now covers A1111
parameterstext embedded in PNG/JPEG metadata; prompt text is extracted on first detail-panel open and stored asprompt_cacheinmetadata.json; subsequentlist_imagessearches includeprompt_cachewithout re-reading image files - Help tab โ Gallery mode i18n โ Feeder subtab Gallery mode section (h4, description, 6 bullet points) now translated to Japanese and Chinese via
i18n.js - Help tab โ font size ร1.5 โ nav items, headings, body text, link cards, and support card text all scaled up in
main.css - Help tab โ search box โ live search input above the nav sidebar filters matching pages and auto-clicks the first result; placeholder text localized (EN/JA/ZH)
v0.3.43
- Send to Canvas โ direct canvas load via
window.openerโ clicking "Send to Canvas" (Workflow tab) or "Copy & Send Canvas" (Gallery tab) now sends the workflow directly to the ComfyUI canvas without requiring a title drag; useswindow.opener.wfmReceiveWorkflow()registered bynode_sets_menu.jsviaapp.handleFile(); both UI and API formats are supported; fallback to localStorage + title drag whenwindow.openeris unavailable (e.g. opened from a bookmark), UI-format only - Workflow Studio Library โ API-format DnD enabled โ API-format workflows in the W (Workflows) sub-tab are no longer grayed out; drag & drop and double-click now work for all formats via
app.handleFile()
v0.3.42
- Feeder tab โ Gallery mode โ new [Image Loop] / [Gallery] toggle in the Feeder tab; Gallery mode drives a WFS_GalleryFeeder node without any external plugin: node selector, group select, sort mode / index / seed, After Gen (Loop / Increment / Fixed), Run / Stop; center pane shows the selected group's images โ click any image to jump to that index;
__Feeder__group is auto-created on first open - WFS_GalleryFeeder custom node โ new ComfyUI node (Workflow Studio category) that reads images from a Gallery group and outputs one
IMAGEat a time; inputs:group_name,index,sort_mode(filename_asc / filename_desc / random),seed; skips missing files;IS_CHANGEDensures re-execution on every queue - WFS_GalleryFeeder โ ComfyUI canvas controls โ
gallery_feeder_extension.jsadds After Gen combo (loop / increment / fixed), โถ Run button, and โ Stop button as non-serialized widgets directly on the node in the ComfyUI canvas; manages per-node loop state withwaitForExecution()Promise pattern;onRemovedhook auto-stops the loop on node deletion - Gallery tab โ thumbnail F button โ cyan overlay button (top-left of each image card) toggles
__Feeder__group membership; active state is always visible in cyan, inactive shows only on hover; initial state derived fromimg.groupsreturned bylist_images() - Gallery tab โ
__Feeder__reserved group โ shown with ๐ prefix in group dropdowns; rename and delete blocked server-side (403) and client-side (buttons disabled); FC toolbar button clears all group members without deleting the group - Security: XSS fixes in
gallery-tab.jsโ tag names, filenames, and server error messages now escaped viaescapeHtml()before insertion intoinnerHTML(tag badge list, detail panelaltattributes, lightbox footer, folder tree errors, grid errors);util.jsescapeHtmlupdated to also escape single quotes ('โ') - Security: path validation in
gallery_service.pyโsave_image_meta,toggle_favorite,add_to_group,remove_from_groupnow call_check_path_allowed()before any file operation; previously these four methods were missing the guard that other write methods already had - Security:
_init_allowed_root()ingallery_routes.pyโ_allowed_rootis now initialized at module load from savedgallery_output_dir(falls back to ComfyUI default output dir); preventslist_folder_treefrom overriding_allowed_rootvia a crafted?root=request, and also fixes serve_image returning 404 in Feeder Gallery mode before the Gallery tab is opened - Bug fix: WFS_GalleryFeeder seed validation error โ seed
maxchanged from0x7FFFFFFFto0xffffffffffffffff(matching KSampler);applySeedToWorkflow()was writing values exceeding the old max, causingvalue_bigger_than_maxvalidation failures
v0.3.41
- Generate UI โ ImpactWildcardEncode / ImpactWildcardProcessor prompt detection โ fixed: wildcard text inputs from comfy-impact-pack nodes were not shown in the Prompt tab of Generate UI
CLIPTextEncodeEditPlusnode (used as the text encoder in these workflows) now correctly propagates positive/negative roles upstream to ImpactWildcard nodes via BFSCLIPTextEncodeEditPluswith an emptytext_editfield is no longer added toprompt_nodesahead of the upstream ImpactWildcard node, preventing a blank text areawidgets[0]is now always written towildcard_textin the API conversion step, regardless ofobject_infowidget-order differences between impact-pack versions- Static fallback mapping added for
ImpactWildcardProcessorandImpactWildcardEncodeso detection works even when the ComfyUI server is offline
v0.3.40
- AI TOOL tab โ Chat pane โ new pane (between Translation and TOOLS) for multi-turn conversation with the LLM; full conversation history sent each turn for context; Enter to send, Shift+Enter for newline; Clear button resets history; Ollama uses
/api/chat, LM Studio uses/v1/chat/completions - AI TOOL tab โ Wildcard generation โ new "Create wildcards" task in the TOOLS pane dropdown; enter a category name and count, click Run to generate plain-text entries one per line (no markdown, no numbering); output can be pasted directly into wildcard
.txtfiles - Library A tab โ Chat and Wildcards โ both features added to the side panel's A tab: Chat as a new sub-tab (Translation โ Chat โ TOOLS โ Settings), wildcard generation as a new option in the TOOLS sub-tab dropdown
- Help updated โ AI TOOL tab help card updated to 6 items (Chat and Wildcards added); Library panel sidepanel-16 updated; EN/JA/ZH
v0.3.39
- Workflow tab โ Send to Canvas button โ replaced "Open in ComfyUI" (toolbar and detail modal) with "Send to Canvas"; stores the selected workflow in
localStoragefor title-drag to the canvas without opening a new browser tab - Gallery tab โ Copy & Send Canvas button โ renamed "Copy Workflow" to "Copy & Send Canvas"; copies the embedded workflow JSON to the clipboard and simultaneously stores it for title-drag
- Workflow Studio Library โ title drag โ after "Send to Canvas" or "Copy & Send Canvas" is clicked, the "Workflow Studio Library" panel title turns blue with a green โ indicator; drag the title onto the ComfyUI canvas to load the workflow; title resets automatically after loading
v0.3.38
- Tagger tab โ new tab for automatic image tagging; supports WD Tagger (ONNX), SwinV2, DeepDanbooru (.h5), and Ollama VLM; 3 sub-tabs: Single (drag & drop / upload, 5 output targets), Batch (folder processing with real-time progress), DB (searchable SQLite database with CSV export)
- Tagger single โ GenUI:P button โ new button (left of "Send to Prompt") that appends generated tags to the GenerateUI positive prompt and immediately applies them to the loaded workflow; shows a warning if no workflow is loaded in GenerateUI
- Tagger batch โ Write .txt output โ new output option that creates
<filename>.txtalongside each processed image containing all generated tags (comma-separated) - Gallery detail panel โ Tagger button โ new action button in the Gallery detail panel opens the selected image directly in the Tagger tab for instant single-image tagging
- Gallery detail panel layout โ tabs (Info / JSON / Groups) and action buttons (Metadata / Load GenUI / Tagger) are now on separate rows, preventing button overflow on narrow panels
- Gallery โ Save to Gallery tags fix โ tags saved from the Tagger tab were stored as a string instead of an array, causing
forEach is not a functionerrors on the next Gallery refresh; now correctly stored as a string array - GenerateUI โ ZIT/Lumina2 workflow prompt fix โ
ConditioningZeroOutremoved from the CONDITIONING passthrough set; previously it propagated the "negative" role upstream through the shared CLIPTextEncode node, marking it as "unknown" and hiding the positive prompt in the GenerateUI Input tab; ZIT (Z-Image Turbo) workflows now correctly show the positive prompt - Workflow analyzer โ lumina2 model type โ CLIPLoader
type: "lumina2"is now correctly classified as Z-IMAGE in the workflow type detector
v0.3.37
- Models tab โ Select All button โ new button added to the right of "Deselect All" in the multi-select action bar; selects all models currently visible after applying the active search / filter / group filters
- Gallery tab โ Select All button โ new button added to the right of "Deselect All" in the bulk action bar; selects all images in the current folder view
- Gallery bulk bar โ i18n โ all bulk action bar buttons and the selection count were hard-coded English strings; they now use the
t()translation system (EN / JA / ZH) so the bar respects the selected UI language
v0.3.36
- GenerateUI Save โ overwrite protection โ saving now checks for an existing file and asks for confirmation before overwriting; if the target file is in UI format, a dedicated warning explains that saving in API format will lose the node layout
- GenerateUI Save โ Raw JSON sync โ unapplied Raw JSON edits are now included in the save (parsed and synced back to the editor); invalid JSON aborts the save with an error instead of silently saving stale content
- GenerateUI Save โ hardening โ filename is set via DOM (no HTML-attribute injection), image extensions (
.pngetc.) are stripped from the default name, and a double-submit guard prevents duplicate POSTs - Help i18n fixed โ v0.3.35 help text updates (Save button, table sort, JSON tab rename) were being overwritten at startup by stale i18n strings and never displayed; all help keys synced in EN / JA / ZH and new entries registered in the help ID map
- Toast i18n โ ~115 hard-coded English toasts replaced with translated messages (~60 new shared keys in EN / JA / ZH); Settings labels for Text Size / RAW JSON Colors that displayed raw key names are now properly defined
- Refactoring โ new shared
util.js(escapeHtmlunified across 5 files โ the Metadata tab copy was missing"escaping;readJsonStorage/getSettingsreplace 15 directlocalStorageparses); Models table sort now precomputes sort keys (faster on large libraries); Gallery action buttons moved off the tab-button class, removing all!importantCSS overrides - README refreshed โ intro rewritten around the three pillars (Management / GenerateUI / Library side panel); new screenshots: GenUI LoRA Stack, GenUI Batch, Models Multi-select Menu; WS Library image updated
v0.3.35
- Models tab โ Table column sort โ click any column header to sort ascending (โฒ), click again for descending (โผ), click a third time to clear; active column name highlighted in accent color; Enable/Disable column header now labeled E/D
- Gallery tab โ Load GenUI button โ new button to the right of the Metadata button in the detail panel; loads the embedded ComfyUI workflow from the selected image directly into the GenerateUI tab; warning toast shown if no workflow is embedded or the format is unsupported; Metadata button restyled green, Load GenUI uses primary accent color
- GenerateUI tab โ Save button โ new button at the right end of the subtab row; opens a filename dialog (default: current workflow name) and saves the current workflow as a
.jsonfile to the Workflow tab via the import API; workflow name label updates to the saved filename on success
v0.3.33
- LoRA pane โ workflow load no longer overwrites LoraManager โ removed the auto-apply block that replaced
inputs.loras/inputs.textwith Stack group contents on every workflow load; Stack is now applied only when the Apply button is pressed - LoRA pane โ ๐ button no longer resets to Single tab โ active tab state is saved before
innerHTMLrebuild and restored afterwards; staying on Stack tab after refresh - Models tab โ Stack group hidden for non-LoRA types โ when switching to Checkpoint or other non-LoRA types, the Stack group is now excluded from the group filter dropdown and side-panel group management (LoRA-only concept)
- CLIPTextEncodeEditPlus widget mapping fix โ
convertUiToApino longer advanceswIdxfor UI slot inputs that have an actual link, preventing index misalignment whenobject_infolists optional STRING inputs (e.g.text1) before widget inputs (e.g.text_edit); fixes+afappearing as the positive prompt instead of the edit text - Stack Apply โ trigger words now applied correctly on first press โ trigger words (
currentAllTriggers/currentActiveTriggers) are now recomputed at click time from the latest_stackActive+metadata+civitaiCache; previously used a stale snapshot captured at render time, causing trigger words to be missing on the first Apply and to linger after disabling a model
v0.3.32
- Lora Loader (LoraManager) LoRA detection โ I tab and Metadata tab now correctly detect LoRAs from
Lora Loader (LoraManager)nodes in API format (inputs.loras.__value__);strength/clipStrengthstored as strings (e.g."0.20") are now parsed correctly - LoraManager node placement โ LoRA syntax โ placing a
Lora Loader (LoraManager)node via drag now also updates thetextwidget with<lora:name:strength>syntax (previously only thelorasarray widget was set) - M tab Groups โ LoRA โ LoraManager drop โ LoRA groups in the Library M tab show an All N LoRAs item; drag to canvas places a
Lora Loader (LoraManager)node with all group LoRAs; double-click also places at canvas center - P tab โ Groups sub-tab โ new Groups sub-tab (row 2) in the Library P tab; groups are read from
localStorage["wfm_prompt_preset_groups"](shared with Batch); expanding a group shows draggable preset items
v0.3.31
- LoRA pane โ Single/Stack tabs โ LoRA pane split into two tabs: Single (filter, model dropdown, M/C strength, target node, Apply, P, LORA SYNTAX, TRIGGER WORDS) and Stack (target node, Apply, P, Toggle-all, global strength adjuster, LORA SYNTAX, TRIGGER WORDS, model list); each tab has independent strength settings
- GenUI Model โ LoRA improvements โ now correctly handles
Lora Loader (LoraManager)nodes (previously failed to find the node); on apply: switches to Single tab, disables all Stack models, and updates LORA SYNTAX / TRIGGER WORDS in the Single tab panel
v0.3.30
- LoRA Stack trigger words fix โ inactive stack models no longer show their trigger words in the Trigger words display; both initial render and per-model toggle/toggle-all now filter to active models only
- Help troubleshooting โ added entry for "No such file or directory" error when running LoRA Stack (comfyui-lora-manager compatibility issue)
v0.3.29
- LoRA section unified โ single LoRA and Stack sections merged into one pane; Apply button handles both cases (stack models present โ apply all active + prompt sync; no stack โ apply selected single LoRA + prompt sync); Ctrl+Apply removed, now plain Apply by default
- LoRA prompt sync โ Apply inserts
<lora:stem:M:C>syntax and CivitAI trigger words into the Positive prompt; re-applying updates the prompt by diff (removes stale tokens, re-adds active ones); works for both single LoRA and Stack - P button โ placed to the right of Apply; immediately writes the current Positive prompt textarea to the target workflow node without switching tabs
- LoRA UI layout fixes โ "Stack" label moved from ID row to Strength row left of the toggle-all checkbox; ID dropdown expanded to
flex:1(no max-width cap); M/C input width 54 px โ 60 px to prevent value truncation - Models tab โ CivitAI default โ side panel opens to the CivitAI tab by default when a model is selected
- Help tab โ sidebar navigation โ redesigned as 2-column layout: left sidebar (14 topics + Support fixed at bottom) + right content pane; content switches on click
- Input tab โ Prompt/Image tabs + taller textboxes โ Prompt and Image split into inner tabs; Positive prompt rows 4 โ 8, Negative prompt rows 3 โ 6
- Reset Workflow button โ added to the GenerateUI toolbar; re-reads the loaded workflow file from disk and reloads the editor
- LoRA Stack trigger words โ CivitAI trigger words for active stack models appended to Positive prompt on Apply; diff-updated on re-apply
- Feeder subtab UI โ (root) folder selected automatically on tab open; PREVIEW pane moved to the far right of the layout; preview auto-updates to the current processing image during a RUN
- Batch tab โ Sampler / Scheduler โ left pane gains Sampler and Scheduler tabs (lists fetched from ComfyUI); Batch Queue gains two new columns; batch runs each value through KSampler sequentially
- Lora Loader (LoraManager) support โ workflow analysis, single Apply, Stack Apply, and Batch all write
inputs.loras.__value__array +inputs.textsyntax for LoraManager nodes - Stack enable/disable โ per-model checkbox and Toggle All checkbox; disabled models excluded from syntax/prompt; LoraManager apply preserves them as
active: false - Global strength adjuster โ
[โ][step][+]controls for Model and CLIP strength applied to all stack models at once - model-and-prompt-from-metadata node support โ
CLIPTextEncodeEditPlus,ImageMetadataCheckpointLoader,ImageMetadataPromptLoader,ImageMetadataLoRALoaderadded to workflow analysis - Models thumbnail bug fixes โ preview endpoint now sends
Cache-Control: no-cache; files under 100 bytes skipped;.disabledmodel files included in preview change lookup
v0.3.23
- Bug fix: workflow batch 404 โ
_runBatchGenerate()workflow case was fetching/api/wfm/workflows/{filename}(non-existent route); corrected to/api/wfm/workflows/raw?filename={filename} - Bug fix: rename double-submit โ
addEventListener("blur", commitRename)was accumulating on the persistent#wfm-modal-title-inputelement each time the modal opened; subsequent renames fired the handler twice, sending two rename requests back-to-back (first succeeds, second returns 409 or 404); fixed by storing the listener reference ontitleInput._commitRenameand callingremoveEventListenerbefore re-registering
v0.3.22
- Card view removed โ Workflow tab and Models tab no longer offer Card view; Thumbnail and Table remain; if
"card"was previously stored in localStorage it falls back to Thumbnail automatically - Batch type selector โ replaced the Checkpoint Batch toggle with per-type checkboxes on the Batch Queue column headers (Checkpoint / Lora / Prompt / Workflow); radio behavior ensures only one type is active at a time; the Batch panel below Generate repurposed as a status display showing the active type, amber progress bar, and Pause/Resume / Stop controls
- 4-type batch generation โ
_runBatchGenerate()dispatches to Checkpoint (file-tree + group selection), Lora (group selection), Prompt (preset group items applied to positive/negative nodes), and Workflow (group selection, restores original workflow after batch); all types use the same generic_runBatchLoop()with pause/abort support - Help updated โ EN / JA / ZH strings updated for
helpWf1,helpModels2,helpGen11,helpGen13,helpGen14
v0.3.21
- CivitAI Host setting โ new dropdown in Settings tab (CivitAI section): choose
civitai.com(SFW only) orcivitai.red(unrestricted); selection is saved tosettings.jsonand synced tolocalStorageso the Models tab uses it immediately without extra server calls - CivitAI panel โ Info / Sample sub-tabs โ the CivitAI side panel is split into two sub-tabs; Info tab contains model details and actions; Sample tab shows all sample images (count displayed in label); images open full-size in a new browser tab on click
- Bug fix: model page URL for existing cache โ
modelId: nullentries (the majority of the cache) previously generated broken links (/models?modelVersionId=โฆ); both the Python service and the JS renderer now fall back to/{host}/model-versions/{versionId}which redirects correctly to the model page; all 324 existing cache entries are fixed immediately without re-fetching - Help updated โ Batch tab entries (gen-12 / gen-13 / gen-14) and Settings entries (settings-11 Text Size / settings-12 RAW JSON Colors / settings-13 CivitAI Host) are now fully localized in EN / JA / ZH;
helpGen3updated to reflect 5-tab layout;helpGen11rewritten to describe the Batch toggle; JA/ZH translations no longer contain untranslated English terms (Filter, Pause/Resume, Stop)
v0.3.20
- CivitAI panel โ Type / Base Model / Hash display โ side panel CivitAI tab now shows a Type badge (e.g. CHECKPOINT, LORA), Base Model row, and Hash row (BLAKE3 preferred, SHA256 fallback from CivitAI API or local metadata); click the hash to copy the full value to clipboard
- CivitAI panel โ images open in new tab โ sample images in the CivitAI tab are now wrapped in links; clicking an image opens the full-size version in a new browser tab
- CivitAI panel โ 3-state UI โ the panel now distinguishes between "not yet checked" (blue fetch button), "checked but not found on CivitAI" (re-check button with a notice), and "found" (full info); no more ambiguity after running batch fetch
- CivitAI tab click refresh โ clicking the CivitAI tab in the side panel now re-renders its content, ensuring the latest fetch state is always shown without needing to reselect the model
- Bug fix: model page URL broken after batch fetch โ the batch
POST /model-versions/by-hashendpoint can omitmodel.idinside the version object;_extract_infonow falls back to the top-levelmodelIdfield so the model page link is always correct; existing cached entries with a broken URL are also fixed client-side frommodelId+versionId - CivitAI cache โ
fileHashesfield added โ_extract_infonow stores the primary file's full hash map (BLAKE3, SHA256, AutoV2, etc.) so the Hash row is populated for newly fetched or refreshed models
v0.3.19
- CivitAI batch fetch โ major speedup โ switched from one-by-one
GETrequests (0.5 s delay each) toPOST /model-versions/by-hashbatch endpoint; up to 100 hashes per request, reducing 100-model fetch from ~50 s to a few seconds - Retry with exponential backoff โ
fetch_by_hashand the new batch POST both retry on HTTP 429 / 500 / 502 / 503 / 504 with 1 s โ 2 s โ 4 s delays (max 3 attempts), as recommended in the CivitAI API docs - CivitAI API key support โ optional Bearer token can be set in Settings tab (CivitAI API Key section); environment variable
CIVITAI_API_KEYtakes priority over the stored key; API keys are excluded from data exports - Richer metadata โ
_extract_infonow capturesnsfwLevel(numeric),air(AIR URN identifier),stats(download count, thumbs-up/down),updatedAt,publishedAt, image dimensions / per-image NSFW level (imageDetails), and primary file precision / format (fileMeta) - Hash consistency โ cache keys use lowercase hex; API requests send uppercase hex as required by the CivitAI spec
- Bug fix: CivitAI tab blank after batch fetch โ the
doneSSE event now appliesdata.hashesdirectly tostate.modelMetadataso the side-panel CivitAI tab renders correctly even when the subsequentfetchModelMetadata()call races ahead of the server flush
v0.3.18
- Batch tab โ new 5th subtab in GenerateUI with a dedicated 3-pane layout for assembling checkpoint batch queues; left pane: file-tree checkpoint selection (filter, All/None, initially unchecked); center pane: group-based selection with inner tabs (Checkpoint / Lora / Prompt / Workflow โ Lora/Prompt/Workflow coming soon); right pane: live Batch Queue preview combining both pane selections with duplicates removed
- Checkpoint selector moved โ the checkpoint dropdown is removed from the right panel; selection is now done exclusively in the Batch tab left and center panes; the right panel retains only the enable/disable toggle and progress display
- Group selection fix โ batch group selection now stores selected group names (not raw model names), so changes to group membership in the Models tab are always reflected in the queue without stale entries
- Models tab bulk operations expanded โ bulk action bar now includes: Deselect All (clear all selections without exiting select mode), โ Favorite / โ Unfavorite, +Badge / โBadge (apply or remove a badge from all selected models); existing group and delete operations unchanged
v0.3.17
- CivitAI SSL fix โ resolved
CERTIFICATE_VERIFY_FAILEDerrors when fetching model info on Windows Portable Python environments; usescertifiCA bundle when available, falls back to system store, and disables verification only as a last resort with a warning log - Lora Manager support โ
Lora Loader (LoraManager)nodes (ComfyUI-Lora-Manager) are now correctly converted from UI format to API format in the GenerateUI tab; theloraswidget array is wrapped to{"__value__": [...]}as required by the node, enabling generation with LoRA Manager workflows
v0.3.16
- CivitAI preview fallback โ model cards and the detail panel's Info tab now display the first CivitAI image directly when no local preview file exists; if the backend download fails (e.g. network restriction server-side), the browser fetches the image URL from the CivitAI cache as a fallback so the preview is always shown after fetching
v0.3.15
- Sample workflows โ added
workflows/directory containing 13 sample workflows (SD1.5 / SDXL / DWPose / Face Detailer / Image Editing) with PNG thumbnails, bundled in the package - CivitAI auto-preview โ when fetching CivitAI info (individual or batch), the first CivitAI image is automatically downloaded and saved as
{model_stem}.preview.pngif no preview exists; batch summary reports the count of auto-saved previews - TOOLS pane โ Create Tags โ new task option in the VLM dropdown (both SPA AI TOOL tab and Library A tab): generates a comma-separated list of descriptive English tags from the image
v0.3.14
- AI TOOL tab redesign โ tab renamed from "A" to "AI TOOL"; sub-tab navigation removed in favor of a permanent 3-pane layout (Translation 40% | TOOLS 40% | Settings 20%) โ all panes always visible simultaneously; "VLM" pane renamed to "TOOLS"
- Settings โ RAW JSON Colors โ new accordion section with 6 color pickers to customize the syntax highlight colors for the Raw JSON editor in Generate UI: Default Text, Name/Scheduler, Title, Width/Height, Prompt/Text, Image/File; changes apply immediately on color pick; Reset Defaults restores the original scheme; saved to
localStorageunderwfm_settings.jsonColorsand applied on startup - Help tab updated โ AI TOOL tab card rewritten; Settings card updated with RAW JSON Colors entry; Library panel sidepanel-16 entry updated
v0.3.13
- AI Tab (A) โ new tab added to both the SPA and the Workflow Studio Library side panel (rightmost tab)
- Translation sub-tab โ translate text via Ollama or LM Studio between Japanese, English, Chinese, or a custom Free language; โ swap button exchanges both language selectors and text content simultaneously; language selections persisted automatically
- VLM sub-tab โ drop zone (110px, matching the I tab) accepts images via drag & drop or click; task selector (Describe Image / Create Prompt); Run button streams result into output area with Copy button; Ollama uses
images:[base64]payload, LM Studio usesimage_urlcontent block - Settings sub-tab โ backend radio (Ollama / LM Studio), API URL input, connection test with live status, model selector with refresh, Free language name fields (source and destination); saved to
localStoragekeywfm_ai_settingsand shared between SPA and Library panel - URL security โ backend URL validated via
new URL()to enforcehttp://orhttps://scheme before any network call
- Settings Tab โ Ollama section renamed โ "Ollama ่จญๅฎ" โ "Ollama ่จญๅฎ๏ผใใญใณใใใฟใ๏ผ" to distinguish it from the new AI tab's settings
- Help Tab updated โ added AI Tab (A) feature card and Library panel A tab entry; i18n support in EN/JA/ZH
v0.3.12
- GenerateUI โ Raw JSON search โ always-visible search bar above the Raw JSON editor; finds all matches as you type with match count (
3/12); navigate forward/back with โ/โ buttons, Enter / Shift+Enter, or Escape / โ to clear; current match highlighted in orange, other matches in yellow; search overlay syncs with editor scroll and stays updated while editing - Workflow analyzer โ extended model type detection โ added CLIPLoader
typefield mapping to model family (flux,hidream_i,wan,cosmos,lumina,ovis, etc.) via_CLIP_TYPE_TO_MODEL; subgraph nodes (definitions.subgraphs) now scanned for model detection;UnetLoaderGGUFand similar loaders matched via"UnetLoader" in ntype; new families added: NewBie, Ovis, HiDream, Wan, Cosmos, Lumina; model-name detection refactored into reusable_detect_model_type_from_name() - Screenshots refreshed โ replaced tab-by-tab screenshots with 8 feature-focused images
v0.3.11
- Metadata Tab โ extended loader support โ
metadata-tab.jsnow recognizesUnetLoaderGGUFandUNETLoaderGGUFas Diffusion Model (e.g. HiDream GGUF workflows), andQuadrupleCLIPLoaderas Text Encoder (e.g. HiDream 4-CLIP); previously these were detected only in the side panel I tab, not in the Metadata tab itself - Settings Tab โ Text Size โ new slider (10โ28 px) in the Settings tab adjusts font size for all prompt and chat text areas at once: Generate UI positive/negative prompts, AI Assistant chat input, Preset prompts, Wildcard text area and file editor, and Metadata prompt full preview; applied immediately on drag and persisted with Save Settings
v0.3.10
- Information tab โ drag to canvas โ model, lora, and Prompts sub-tabs in the side panel I tab now support drag & drop onto the ComfyUI canvas; double-click also places nodes at canvas center
- model sub-tab: each item places the corresponding loader node (Checkpoint โ
CheckpointLoaderSimple, VAE โVAELoader, Diffusion Model โUNETLoader, Text Encoder โCLIPLoader) - lora sub-tab: drag individual LoRA to place
LoraLoader; Multiple LORA section (shown for 1+ LoRAs) places all LoRAs in a singleLora Loader (LoraManager)node - Prompts sub-tab: drag a prompt to place
CLIPTextEncodewith the full text pre-filled
- model sub-tab: each item places the corresponding loader node (Checkpoint โ
- Extended node type support โ
UnetLoaderGGUF/UNETLoaderGGUFnow detected as Diffusion Model;QuadrupleCLIPLoader(HiDream and similar 4-CLIP workflows) now detected as Text Encoder - Bug fix: CLIPLoader widget name โ
textencodertype inMODEL_NODE_MAPwas incorrectly usingclip_name1(DualCLIPLoader's widget) instead ofclip_name; Text Encoder models now drop with the correct filename - Preview area fixed height โ Information tab drop zone fixed at 110px so model/prompt lists are no longer compressed when a large image is loaded
v0.3.9
- Side panel I tab โ new Information tab in the Workflow Studio Library side panel; drop a ComfyUI PNG/WebP/JSON directly in the panel to inspect models, LoRAs, and prompts without opening the Metadata tab; sub-tabs: model / lora / Prompts with full-text preview and Copy button
- Side panel tab redesign โ tabs shortened to single letters (W / N / P / M / I) with full name shown on hover
- Bug fix: top bar icons โ icons (Workflow Studio / camera / Node Sets) were invisible in newer ComfyUI versions because Iconify converted the MDI CSS class to an inline SVG before the custom SVG could be injected; fixed by removing the early-return guard and adopting the same simple
requestAnimationFrameretry pattern used by lora-manager
v0.3.8
- Metadata Tab: extended subgraph support โ added extraction for Flux.2 Dev fp8 (
SamplerCustomAdvanced), Flux.2 Klein 4B Distilled (image edit), Ernie Image, Qwen-Image-Edit 2511 (TextEncodeQwenImageEditPlus), and WAN2.2 14B Animate (top-level CLIPTextEncode + subgraph KSampler) - Prompt type: Text (no badge) โ when positive/negative polarity cannot be determined (indirect sampler connections, cross-level links,
PrimitiveStringMultilineetc.), prompts are listed without a POS/NEG badge; action buttons still work normally - Prompt extraction improvements โ
extractPromptsFromNodeSetnow resolves link sources from any STRING-output node (e.g.ComfySwitchNode,PrimitiveStringMultiline) without type restriction;PrimitiveStringMultilinesearch and final text-encoder fallback both extended to include subgraph nodes viacollectAllNodes - i18n โ added
metaPromptTextkey (EN: "Text" / JA: "ใใญในใ" / ZH: "ๆๆฌ")
v0.3.7
- Metadata Tab: subgraph workflow support โ Flux.2 (Dev fp8 / Klein), Qwen-Image-Edit (/ 2511 / Layered), and Z-Image (Base / Turbo) official templates now correctly extract models and prompts; these use ComfyUI's
definitions.subgraphsformat withUNETLoader,CLIPLoader, andVAELoaderinside the subgraph - Prompt extraction improvements โ 7-stage fallback chain: ImageMetadataPromptLoader โ WFS_PromptText โ top-level CLIPTextEncode+KSampler โ
PrimitiveStringMultiline(flux2-klein) โ subgraph CLIPTextEncode+KSampler โ PromptStyler โ all CLIPTextEncode text - MarkdownNote model fallback โ
extractMarkdownNoteModels()parses**section** โ - [model](url)patterns from MarkdownNote nodes as a supplemental model source - Format note updated โ "Flux.2 / Qwen-Image / Z-Image subgraph workflows supported" (EN/JA/ZH)
v0.3.6
- Metadata Tab โ new tab (between Prompt and Gallery) that extracts model and prompt information from ComfyUI-generated PNG/WebP images and workflow JSON files; 3-column layout: drop zone with image preview (left), Checkpoint/VAE/Diffusion Model/Text Encoder lists (center), LoRA list with strength values + Prompt list with full-text viewer (right)
- Prompt action buttons โ Copy, GenUI:P/N (set GenerateUI prompts), Prompt:P/N (set Prompt tab preset prompts) directly from the extracted prompt text
- SDXL Prompt Styler support โ improved prompt extraction resolves
PromptStyler โ CLIPTextEncodelink chains in both LiteGraph and API workflow formats - Format support โ ComfyUI (PNG/WebP/JSON), SD WebUI, SD Forge, Fooocus
v0.3.5
- Feeder subtab โ new subtab in GenerateUI for controlling comfyui-image-feeder nodes; left pane: node selector + all ImageFeeder parameters + presets + Run/Stop controls; center pane: folder tree, image grid with checkbox selection, and preview panel
- Run loop with After gen modes โ Loop (wrap and continue), Increment (advance and auto-stop), Fixed (constant index); index updates automatically via WebSocket
image_loop_node_syncafter each generation; seed comes from the right-pane seed setting - Workflow analysis improvements โ
analyzeWorkflownow handles multi-hop CONDITIONING chains via BFS (up to 5 iterations), CLIPTextEncodeSDXL / CLIPTextEncodeSDXLRefiner, SDXLPromptStyler / SDXLPromptStylerAdvanced, KSamplerAdvanced (noise_seed), TextEncodeQwenImageEditPlus, PrimitiveStringMultiline, Power Lora Loader (rgthree), andCheckpoint Loader(WAS) with space in the class name
v0.3.4
- Wildcard support panel โ new right column in the Prompt tab with a one-click toolbar for inserting wildcard syntax (
{|},{n$|},__|__,:,;,$,<lora::1:LBW=;>,[], single/multi pick) and wrapping selected text; dedicated prompt textarea and wildcard file picker (click to insert__filename__) - Wildcard file manager โ create, view, edit, and delete
.txt/.yamlwildcard files stored inuser/default/Workflow-Studio/wildcard/; editor opens inline with filename input and save/cancel controls - Preset/Preset Manager tab switch โ the center pane of the Prompt tab is now a two-tab panel (Presets / Preset Manager) to reclaim horizontal space for the new wildcard panel
- Wildcard Integration setting โ new accordion section in Settings tab; auto-detects ComfyUI-Impact-Pack; when installed, provides a button to create a directory junction (Windows) or symlink (other OS) from the WFS wildcard directory to Impact Pack's
wildcards/directory; existing WFS files are migrated automatically; a Remove Link button reverses the operation
v0.3.2
- Checkpoint Batch โ new panel in the GenerateUI right column (below Seed, above results); enable via checkbox to auto-generate once per checkpoint model; filter included/excluded subfolders by comma-separated names (empty = all checkpoints); real-time preview of matched model count; amber progress bar shows current model name and index; Stop button aborts the loop after the current generation completes; failed models are counted and reported in the summary toast
- Seed layout fix โ seed value input and mode selector (Random / Fixed / Increment / Decrement) now stacked vertically so neither is clipped in narrow panels
v0.3.1
- Folder operations โ create subfolders and delete folders (with all contents) directly from the folder tree header buttons
- File operations โ move or delete individual images from the detail panel; bulk move and bulk delete from the multi-select bar
- Tree state preserved โ folder expansion state is maintained after create/delete/move/refresh operations
- Workflow viewer improved โ Metadata tab now reads both
prompt(API format, the default for most ComfyUI-generated images) andworkflow(UI format) keys from PNG metadata, covering virtually all ComfyUI output - Workflow auto-save โ after each generation in the Generate UI tab, the current workflow is automatically saved to gallery metadata for the generated images; shown in the Metadata tab even if PNG embedding is absent
v0.3.0
- Cross-type group filter โ the group filter dropdown in the Models tab now shows groups from all model types simultaneously, each prefixed with a type label (
[Checkpoint],[LoRA], etc.); selecting a group automatically switches to the corresponding model type - Sidebar group display fixed โ the ComfyUI sidebar "Model Groups" view now correctly renders per-type groups (introduced in v0.2.9) with a type label on each group header; fixes a crash where
.filter is not a functionwas thrown on the new nested group structure
v0.2.9
- Model Enable/Disable โ hide models from ComfyUI by renaming the file extension to
.disabled; toggle per model (โธ button on each card/row), per group (Enable All / Disable All buttons in the Group panel), or filter the grid by status (All / Enabled only / Disabled only). Changes take effect after ComfyUI refresh. - Per-type model groups โ groups are now scoped to each model type; checkpoint groups only appear in the Checkpoint tab, LoRA groups only in the LoRA tab, etc. Existing flat groups are automatically migrated.
- Multi-select mode โ click the Select button in the toolbar to enter selection mode; check individual models across Thumbnail / Card / Table views
- Bulk group operations โ with models selected, add or remove them from any group in one click, or create a new group and add them simultaneously
- Bulk file delete โ permanently delete selected model files along with all associated preview images and sidecar files (
.json,.civitai.info,.info); requires confirmation before deleting - Bug fix โ models in subdirectories could not be disabled due to a path-doubling error; fixed by computing the rename target from
path.nameinstead ofmodel_name - Bug fix โ Hypernetwork tab showed
C,O,M,Bas fake model items; caused by the new ComfyUI API format returning"COMBO"as the first element; fixed incomfyui-client.js
v0.2.8
- Data storage moved โ plugin data (settings, metadata, prompts, etc.) is now stored in
ComfyUI/user/default/Workflow-Studio/instead ofcustom_nodes/ComfyUI-Workflow-Studio/data/; falls back to the olddata/directory ifuser/default/does not exist - Data Management section โ new Settings tab section to export all plugin data to a single JSON file and import it back; useful for migration, backup, and reinstallation
v0.2.7
- Gallery tab โ new image browser for ComfyUI output folder; Thumbnail/Table views, multi-select with Bulk Bar, server-side group/tag/favorite filtering, group management (rename support), performance-optimized with + mtime folder cache
- Group UI unified โ Workflow, Nodes, and Gallery group panels rebuilt to match the Models tab 4-section pattern (Current Groups / Add to Group / Create New Group / Manage Groups); Rename support added to Workflow and Nodes tabs
- Settings 2-column layout โ Theme panel fixed on the right (50% width, sticky); all other settings flow continuously on the left with no visual gap
- Gallery output directory setting โ configure the output folder scanned by Gallery tab from Settings
- Help tab โ Gallery tab description card added
v0.2.5
- Sidebar Category/Package sub-tabs โ added ๐ Category and ๐งฉ Package sub-tabs to the Nodes tab in Workflow Studio Library; each shows a dropdown to filter nodes by category or custom node package (reads
/object_infofor accurate package detection) - Sidebar theme settings โ added โ button in the panel header to customize background, sub-header background, text, border, and secondary text colors with live preview; settings saved to localStorage
- Sidebar TextEncoder (By Type) โ fixed TextEncoder not appearing in Models โ By Type; now uses
DualCLIPLoaderโCLIPLoaderfallback to retrieveclip_name1list - Hide
.index.jsonโ excluded.index.jsonfrom both the Workflow tab and the Workflow Studio Library side panel
v0.2.4
- GenerateUI tab redesign โ reorganized from 5 tabs (Prompt/Image/Model/Settings/Raw JSON) to 3 tabs (Input/Model/Settings); each tab shows a Raw JSON column (540px) for instant JSON preview and direct editing from any tab
- Input tab โ Prompt and Image stacked vertically in the left column
- Settings tab โ KSampler and LatentImage stacked vertically in the left column
- Raw JSON tab removed โ Raw JSON is now always visible as a right-column panel within each tab
v0.2.3
- Badge system unified โ Workflow and Models tabs now share a single badge palette (
โ Badgebutton); workflow auto-analysis model type system removed in favor of user-defined free-label badges - GenUI Model button โ apply any model from the Models tab directly to the corresponding node in GenerateUI's current workflow (available in detail modal and side panel; Checkpoint / LoRA / VAE / ControlNet / UNET / TextEncoder)
- Sidebar Models tab โ added All / โ Favorites / Groups / By Type sub-tabs to the Models section of Workflow Studio Library
- Sidebar All views โ โ star displayed for favorite items in Workflows and Nodes All sub-tabs
- Sidebar panel width โ widened from 280px to 310px
v0.2.2
- Models tab โ browse, search, and manage all installed ComfyUI models (Checkpoint, LoRA, VAE, ControlNet, UNET, TextEncoder) with Thumbnail/Card/Table views
- CivitAI integration โ fetch model metadata by SHA256 hash (individual or batch per model type) with SSE progress streaming
- Model groups โ create, rename, delete groups and assign/remove models for organization
- Model metadata โ persistent favorites, tags, memo, and SHA256 hash per model
- Preview images โ auto-detect and display preview images, change via file upload in detail modal
- Table view memo column โ memo displayed in table view with compact subdir/extension columns
- Side panel file path โ display full file path with click-to-copy in model info panel
- Node card redesign โ removed package badge, added left border color-coding by package
- Toolbar pagination โ pagination controls moved to toolbar for all tabs (Models, Workflows, Nodes)
- Help tab updated โ Models Tab section added to feature list
v0.2.0
- Prompt presets in sidebar โ added Prompts tab to Workflow Studio Library (ComfyUI side panel) with All / Favorites / Categories sub-tabs
- WFS_PromptText custom node โ drag prompt presets onto the canvas to create nodes with positive/negative prompt outputs
- Preset Manager โ 3-column layout in Prompt tab: AI Assistant | Presets editor | Preset Manager (All / Favorites / Groups)
- Group management โ create groups, assign/remove presets, delete groups from the Presets panel
- GenUI Set โ renamed "Apply" button to clarify its purpose (applies presets to GenerateUI)
- Sidebar P/N copy buttons โ copy positive or negative prompts individually from sidebar items
- Panel renamed โ "WF & Node Library" renamed to "Workflow Studio Library"
- Backend API for presets โ presets migrated from localStorage to server-side API with one-time migration
- Help tab updated โ Prompt Tab and Workflow Studio Library sections reflect new features
v0.1.9
- Side panel 2-row sub-tabs โ Workflows: row 1 (Workflows / Favorites / Groups), row 2 (Model Type); Nodes: row 1 (Nodes / Favorites / Groups), row 2 (Sets)
- Save dialog โ canvas snapshot now shows a filename edit dialog instead of auto-naming
- API/App format badge โ workflow items in side panel show red (API) or orange (APP) badge
- Group auto-cleanup โ deleted workflows are automatically removed from groups on refresh
v0.1.8
- WF & Node Library side panel โ renamed from "Node Library", added two top-level tabs (Workflows / Nodes) accessible from ComfyUI top bar
- Workflows tab โ browse favorite workflows, filter by model type, filter by group with collapsible sections
- Workflow drag & drop โ drag workflows from the side panel onto the canvas to load them instantly
- Help tab update โ added Nodes Tab and WF & Node Library sections to the feature list
v0.1.7
- Nodes tab โ browse, search, and filter all installed ComfyUI nodes with Card/Table views, pagination (50 nodes/page), package color badges, and node detail side panel with I/O specs
- Node Sets โ save selected nodes + connections from ComfyUI canvas as reusable sets via right-click context menu
- Node Library side panel โ accessible from ComfyUI top bar with Favorites, Sets, and Groups tabs, drag & drop placement
- 3 top bar buttons โ Workflow Studio, Canvas Snapshot, and Node Library buttons in ComfyUI's action bar
v0.1.6
- Security fix โ path traversal vulnerability in
workflow_service.py(reported via ComfyUI-Manager PR review)
v0.1.5
- Theme system โ 13 built-in themes selectable from Settings tab with instant preview (Deep Ocean Dark, Pop & Vibrant, Light Minimalist, Cyberpunk, Glassmorphism, Neumorphism, Retro 8-bit, Pastel Dream, Brutalism, Earthy, Material UI, Monotone + Accent, Corporate Trust)
- Theme preference persisted in localStorage and restored on page load (no flash)
- Special CSS effects per theme: neon glow (Cyberpunk), backdrop blur (Glassmorphism), dual shadow (Neumorphism), pixel borders (Retro/Brutalism)
v0.1.4
- App format support โ detect
.app.jsonworkflows (ComfyUI App mode), show "App Format" badge, block loading in GenerateUI with guidance message - Preset clipboard copy โ added PP Copy / NP Copy buttons to copy positive/negative prompts to clipboard
- Analysis bugfix โ fixed workflow analysis crash when
widgets_valuescontains non-string values (e.g. integers)
v0.1.3
- Added Help & Support tab โ feature list, tips, and support links (GitHub, Ko-fi)
- Multi-language support (EN/JA/ZH) for all help content
v0.1.2
- Added Canvas Snapshot button to ComfyUI top bar โ capture workflow canvas as PNG thumbnail with embedded workflow metadata
- Added Thumbnail tab to the workflow side panel for quick visual preview
- Added Thumbnail section to the workflow detail modal
- Snapshot images are auto-imported as workflows with thumbnails
v0.1.1
- Initial feature set: Workflow management, GenerateUI, Prompt assistant, Settings
Project Structure
ComfyUI-Workflow-Studio/
โโโ __init__.py # ComfyUI entry point
โโโ py/
โ โโโ wfm.py # Main class & route registration
โ โโโ config.py # Path configuration
โ โโโ nodes/
โ โ โโโ prompt_text.py # WFS_PromptText custom node (positive/negative prompt)
โ โ โโโ gallery_feeder_node.py # WFS_GalleryFeeder custom node (gallery group โ IMAGE)
โ โโโ routes/
โ โ โโโ workflow_routes.py # Workflow CRUD & analysis API
โ โ โโโ nodes_routes.py # Nodes metadata & node sets API
โ โ โโโ models_routes.py # Model metadata, preview, CivitAI API
โ โ โโโ prompts_routes.py # Prompt presets CRUD API
โ โ โโโ settings_routes.py # Settings API
โ โ โโโ ollama_routes.py # Ollama proxy API
โ โ โโโ eagle_routes.py # Eagle integration API
โ โโโ services/
โ โโโ workflow_service.py # Workflow file operations
โ โโโ nodes_service.py # Node metadata & node sets
โ โโโ models_service.py # Model metadata & preview images
โ โโโ civitai_service.py # CivitAI API integration & cache
โ โโโ prompts_service.py # Prompt presets persistence
โ โโโ workflow_analyzer.py # Model/node detection
โ โโโ settings_service.py # Settings persistence
โ โโโ png_extractor.py # PNG metadata extraction
โโโ templates/
โ โโโ index.html # SPA template (Workflow/GenerateUI/Prompt/Metadata/Gallery/Nodes/Models/Settings/Help/AI)
โโโ static/
โ โโโ favicon.svg # Browser tab icon (W+S Wave)
โ โโโ css/main.css # Styles
โ โโโ js/
โ โโโ app.js # App initialization & routing
โ โโโ workflow-tab.js # Workflow browser
โ โโโ generate-tab.js # Generation UI
โ โโโ feeder-tab.js # Feeder subtab (Image Loop + Gallery modes)
โ โโโ gallery-tab.js # Gallery tab (image browser, groups, metadata)
โ โโโ tagger-tab.js # Tagger tab (WD Tagger, DeepDanbooru, Ollama VLM)
โ โโโ prompt-tab.js # AI assistant & presets
โ โโโ metadata-tab.js # Metadata extraction & display (PNG/WebP/JSON)
โ โโโ settings-tab.js # Settings panel
โ โโโ comfyui-client.js # ComfyUI WebSocket/API client
โ โโโ nodes-tab.js # Node browser & node sets
โ โโโ models-tab.js # Model browser & CivitAI integration
โ โโโ ai-tab.js # AI TOOL tab (Translation | Chat | TOOLS/VLM | Settings)
โ โโโ comfyui-workflow.js # UI-to-API format conversion
โ โโโ comfyui-editor.js # Dynamic parameter editor
โ โโโ json-highlight.js # JSON syntax highlighting
โ โโโ util.js # Shared utilities (escapeHtml, readJsonStorage, getSettings)
โ โโโ i18n.js # Internationalization
โโโ web/comfyui/
โ โโโ top_menu_extension.js # ComfyUI menu bar integration
โ โโโ node_sets_menu.js # Workflow Studio Library side panel
โ โโโ gallery_feeder_extension.js # WFS_GalleryFeeder canvas widgets (After Gen / Run / Stop)
โโโ data/ # Fallback data dir (used when ComfyUI user/default/ is not found)
License
MIT License
Acknowledgements
- ComfyUI by comfyanonymous
- ComfyUI-Custom-Scripts by pythongosssss โ Canvas snapshot and PNG workflow embedding implementation reference
- ComfyUI-Lora-Manager โ Plugin architecture and UI pattern reference
- Ollama for local LLM inference
- Eagle for image management
- Pillow (PIL Fork) โ server-side thumbnail generation (
data/thumb_cache/) - ComfyUI-Gallery by PanicTitan โ thumbnail grid UX reference
- infinite-image-browsing by zanllp โ thumbnail caching and index strategy reference
- Fooocus by lllyasviel โ style preset JSON format reference
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.