CivArchive
    Prompt Commander - 4.5.0
    NSFW
    Preview 138011343
    Preview 138010107
    Preview 138010108
    Preview 138010246

    🦌 Prompt Commander

    A visual prompt editor for Stable Diffusion WebUI (Forge / Auto1111).

    Stop wrestling with raw text. Prompt Commander replaces your prompt textboxes with an interactive bubble editor that sits directly beneath the existing prompt fields — no scrolling, no extra panels to expand. Each token in your prompt becomes its own clickable, draggable bubble that you can reorder, weight, hide, edit, or save with a single click.

    Built originally because sd-webui-prompt-all-in-one broke from API failures — Prompt Commander is lighter, dependency-free, vanilla JS, and stays out of your way.


    ✨ What It Does

    • Visual bubble editor — every token in your prompt becomes a pill-shaped bubble, color-coded by type (emphasis orange, de-emphasis blue, LoRA purple, BREAK red, ghost dimmed)

    • One-click weight adjustment+ and buttons on each bubble step the weight by 0.1 and produce clean (word:1.2) or [word:0.8)] syntax automatically

    • LoRA-aware — weight buttons on LoRAs adjust the <lora:name:weight> value safely without corrupting the syntax

    • Ghost system 👻 — temporarily hide tokens from the prompt without losing them. Click the ghost icon to dim a token; click the dimmed bubble to revive it. Toggle styles or LoRAs on/off without retyping

    • Drag to reorder — grab any bubble and drop it elsewhere to rearrange your prompt

    • Double-click to edit any bubble's text inline

    • Selection + batch ops — Ctrl-click bubbles or rubber-band drag to select multiple, then bulk-adjust weight, copy, delete, or save them

    • Keyword library with categories — left-click a chip to insert into positive, right-click for negative, drag chips between categories to organize

    • Saved full prompts — name and save complete positive + negative + seed combos, recall them from a dropdown

    • Token counter with warning when you cross the 77-token CLIP limit

    • Keyboard shortcuts — Ctrl+Z/Y undo/redo (per-prompt), Ctrl+C copy selected, Delete, Ctrl+A select all, = and for batch weight changes

    • Link / Unlink — merge selected tokens into grouped emphasis (word1, word2) or explode them back


    🆕 Recent Updates

    • Inline positioning — editor panels now sit immediately below your prompt textboxes instead of buried in a Scripts accordion. Less clicking, more painting

    • LoRA weight controls fixed — +/− buttons now work properly on LoRA bubbles without breaking their syntax. Ghost button works on LoRAs too, so you can quickly toggle them off without removing them

    • Weight math overhauled — no more accidental double-wrapping like ((word:1.2):1.1); epsilon comparisons handle floating-point drift correctly

    • Ghost system rebuilt — index calculation rewritten so ghosts always revive at their correct positions

    • Auto-restore — if Gradio re-renders the editor panels (after a library update, for example), they're automatically detected and re-positioned

    • Modernized UI — pill-shaped bubbles, monospace font, hover glow effects, color theming per token type

    • Token counter with amber warning at 75+ tokens

    • Cleaner, more efficient — replaced polling with event-driven updates, fixed undo/redo targeting drift, hardened the chip drag/reorder pipeline


    📦 Installation

    Drop the extension folder into your WebUI's extensions/ directory and restart. No dependencies, no build step, no API keys.

    Compatible with Auto1111 and Forge / Forge-Neo. (img2img tab support is temporarily limited while a tab-switching edge case is being investigated — txt2img works fully.)


    💡 Why Use It

    If you build prompts with more than five or six concepts, the raw textbox becomes a maze of commas and parentheses. Prompt Commander makes the prompt visible — you can see what you have, rearrange it, weight individual ideas, and try variations without retyping. It's especially useful for:

    • Tuning multiple LoRAs on the fly

    • Building complex prompts incrementally

    • Saving and recalling prompt presets

    • Curating a personal keyword library you can reuse across sessions

    Built by someone who actually uses SD daily. Bug reports and suggestions welcome.

    Description

    - Txt2img and Img2img now have separate keyword libraries. The words you reach for on img2img are usually different from txt2img, so the 📚 Keywords tab now keeps two independent sets. A small ✍️ txt2img / 🖼️ img2img toggle at the top of the Keywords tab switches between them, and it automatically follows whichever generation tab you're on (you can still flip it manually to peek at or edit the other set). Adding, saving (❤️), deleting, reordering, and Random Word all act on the currently-shown library.

    - Zero migration. Your existing library is untouched — it simply becomes your txt2img set. The img2img library starts empty; populate it by selecting bubbles on img2img and pressing ❤️ Save (or add words directly). Stored in commander_keywords.json (txt2img) and a new commander_keywords_img2img.json (img2img).

    ### v4.4.0 — Animated drag (Stage 4)

    - Reordering bubbles now animates. When you drag a bubble (or a selected group) to a new spot, the bubbles glide smoothly into their new positions instead of snapping. Everything that shifts to make room slides too, so the reorder reads as one fluid motion rather than an instant jump. Built as a hand-rolled FLIP animation — no new dependencies, staying true to the extension's zero-dependency design — and it only runs on an actual reorder, so ordinary edits and the background sync stay as light as before.

    ### v4.3.1 — Edit-mode fix

    - Fixed the bubble editor occasionally getting stuck in edit mode. Double-clicking a bubble to edit it could leave the text input behind (and the bubble's text hidden) until you nudged the prompt textbox to force a rebuild. Since v4.3.0 reuses bubble DOM nodes across renders instead of rebuilding them, the editor now tears itself down explicitly on save, blur, and Escape, and an in-progress edit is left untouched by unrelated re-renders (the 2-second sync poll, tab switches). A safety net also heals any bubble that somehow still carries a leftover edit box.

    ### v4.3.0 — Surgical rendering (Stage 3b)

    - The editor no longer rebuilds every bubble on every change. It now reconciles the existing bubbles against the prompt by stable identity: untouched bubbles are left alone, a changed one is repainted in place, only genuinely new words create new bubbles, and reordering moves bubbles instead of recreating them.

    - What you'll notice: no flicker when editing; hover controls stay put under your cursor (clicking + repeatedly just works — the bubble is never destroyed out from under you); the pop-in animation only fires for genuinely new words; and a re-render can no longer wipe out an in-progress drag-select box.

    ### v4.2.1 — Stage 3a fixes

    - Typing a comma while editing a bubble splits it into new bubbles again (a v4.2.0 regression). Also applies to inserting keywords that contain commas. Bracketed/linked groups like (a, b) are left intact.

    - Fixed the rubber-band (drag-to-select) box freezing / not appearing. Its listeners were being re-added on every render and stacking up; they're now bound once.

    ### v4.2.0 — The engine (Stage 3a)

    - New core: a persistent tag-object model is now the source of truth. Each bubble is a stable object; the prompt textarea is generated from the model and external changes (typing, paste, generation restore) are folded back in.

    - Ghosts rebuilt on the new model — simpler and better. A ghost is now just a disabled tag that keeps its exact slot in the list. Consequences you'll feel:

    - Dragging a ghost's neighbor no longer drags the ghost along — it holds its slot and ownership hands off naturally.

    - Ghosts are now draggable — reorder them like any bubble.

    - Ghosts survive typing, pasting, and even full external prompt replacements (they re-attach by their position in the list).

    - Undo/redo now covers ghost state — ghosting, reviving, and purging are all undoable.

    - The entire ghost-anchoring subsystem (~200 lines of the trickiest code in the extension) is deleted.

    - Selection-based operations (link, unlink, batch weight, delete, H-to-ghost) now target bubbles by a stamped index instead of positional math — immune to ghosts sitting in between.

    - Rendering still does a full rebuild this stage; the surgical per-bubble renderer (the big smoothness payoff) is Stage 3b.

    ### v4.1.0 — Keywords tab (Stage 2)

    - The keyword library is now a tab on the editor, not a shelf below it. A ✍️ Prompt / 📚 Keywords tab strip sits at the top of the bubble editor. "Prompt" shows your bubbles (the library is hidden, reclaiming the vertical space it used to take permanently); "📚 Keywords" swaps to the library so you can pick words — left-click appends to the positive prompt, right-click to the negative, same as before. The old always-open library shelf is gone.

    ### v4.0.0 — "new dawn" (Stage 1 of a staged rollout)

    - Removed saved full prompts. Saving/recalling whole prompts is now State Commander's job (it does it far better — thumbnails, params, model, compare). Prompt Commander focuses on live prompt authoring. The #commander_bridge full-prompt-load path and the saved-prompts dropdown are gone; the keyword library is untouched. (Upcoming v4 stages: the keyword library becomes a tab on the bubble box; then a persistent tag-object render engine for smoothness and simpler ghosts; then animated drag.)

    ### v3.8.3

    - Fixed switching back to txt2img on some WebUI forks (Forge Neo). Tab detection no longer depends on matching the tab button's text label — the editor now follows whichever prompt box is actually visible, checked on a lightweight poll plus tab-bar clicks. Works regardless of how the tab is changed (click, keyboard, or programmatically) and leaves the panels put on tabs that have no prompt (Extras, PNG Info).

    ### v3.8.2

    - Fixed img2img tab breakage (panels invisible after a switch, "Delete All Words" doing nothing). A single authoritative reflow() now collapses any duplicate panels (Gradio clones them into the accordion during re-renders) down to one set and repositions it under the active tab. Tab switches trigger it directly rather than through a shared debounce timer that the accordion watcher was clearing out from under it — which was leaving the panels stranded in a hidden subtree. Rendering also targets the visible container, and pcDiagnose() is available in the console for troubleshooting.

    FAQ

    Comments (1)

    guiltyai69Aug 7, 2026
    CivitAI

    Could you add the ability to automatically add a comma after the lora name?

    Other
    SDXL 1.0

    Details

    Downloads
    50
    Platform
    CivitAI
    Platform Status
    Available
    Created
    7/28/2026
    Updated
    8/12/2026
    Deleted
    -

    Files

    promptCommander_450.zip

    Mirrors

    CivitAI (1 mirrors)