Blame Raw
permissionBRICK · 08ed06d0 · · 745 lines (51.8 KB)
3 contributors
1<div class="sd_settings">
2 <div class="inline-drawer">
3 <div class="inline-drawer-toggle inline-drawer-header">
4 <b>
5 <span data-i18n="Image Generation">Image Generation</span>
6 <a href="https://docs.sillytavern.app/extensions/stable-diffusion/" class="notes-link" target="_blank">
7 <span class="note-link-span">?</span>
8 </a>
9 </b>
10 <div class="inline-drawer-icon fa-solid fa-circle-chevron-down down"></div>
11 </div>
12 <div class="inline-drawer-content">
13 <label for="sd_refine_mode" class="checkbox_label" data-i18n="[title]sd_refine_mode" title="Allow to edit prompts manually before sending them to generation API">
14 <input id="sd_refine_mode" type="checkbox" />
15 <span data-i18n="sd_refine_mode_txt">Edit prompts before generation</span>
16 </label>
17 <label for="sd_function_tool" class="checkbox_label" data-i18n="[title]sd_function_tool" title="Use the function tool to automatically detect intents to generate images.">
18 <input id="sd_function_tool" type="checkbox" />
19 <span data-i18n="sd_function_tool_txt">Use function tool</span>
20 </label>
21 <label for="sd_interactive_mode" class="checkbox_label" data-i18n="[title]sd_interactive_mode" title="Automatically generate images when sending messages like 'send me a picture of cat'.">
22 <input id="sd_interactive_mode" type="checkbox" />
23 <span data-i18n="sd_interactive_mode_txt">Use interactive mode</span>
24 </label>
25 <label for="sd_multimodal_captioning" class="checkbox_label" data-i18n="[title]sd_multimodal_captioning" title="Use multimodal captioning to generate prompts for user and character portraits based on their avatars.">
26 <input id="sd_multimodal_captioning" type="checkbox" />
27 <span data-i18n="sd_multimodal_captioning_txt">Use multimodal captioning for portraits</span>
28 </label>
29 <label for="sd_free_extend" class="checkbox_label" data-i18n="[title]sd_free_extend" title="Automatically extend free mode subject prompts (not portraits or backgrounds) using a currently selected LLM.">
30 <input id="sd_free_extend" type="checkbox" />
31 <span data-i18n="sd_free_extend_txt">Extend free mode prompts</span>
32 <small data-i18n="sd_free_extend_small">(interactive/commands)</small>
33 </label>
34 <label for="sd_snap" class="checkbox_label" data-i18n="[title]sd_snap" title="Snap generation requests with a forced aspect ratio (portraits, backgrounds) to the nearest known resolution, while trying to preserve the absolute pixel counts (recommended for SDXL).">
35 <input id="sd_snap" type="checkbox" />
36 <span data-i18n="sd_snap_txt">Snap auto-adjusted resolutions</span>
37 </label>
38 <label for="sd_minimal_prompt_processing" class="checkbox_label" data-i18n="[title]sd_minimal_prompt_processing" title="Reduce post-processing on a prompt generated by the LLM to preserve JSON and other structured output.">
39 <input id="sd_minimal_prompt_processing" type="checkbox" />
40 <span data-i18n="sd_minimal_prompt_processing_txt">Minimal response prompt processing</span>
41 </label>
42 <label for="sd_prompt_generation_profile" data-i18n="Prompt generation connection profile">Prompt generation connection profile</label>
43 <select id="sd_prompt_generation_profile" class="text_pole"></select>
44 <small data-i18n="sd_prompt_generation_profile_small">Connection profile always used to generate the image prompt text. Leave empty to use the currently active model.</small>
45 <hr>
46 <h4 data-i18n="Provider Fallback Chain">Provider Fallback Chain</h4>
47 <small data-i18n="sd_settings_presets_small">Save the current backend/connection settings (source, model, sampler, dimensions, etc.) as named presets and arrange them into an ordered chain. Prompt templates, styles, custom entries, and the reference image library are not included.</small>
48 <div id="sd_preset_chain_list" class="flex-container flexFlowColumn marginTopBot5"></div>
49 <div class="flex-container marginTopBot5">
50 <input id="sd_preset_chain_name" type="text" class="text_pole flex1" placeholder="New preset name" data-i18n="[placeholder]New preset name" />
51 <div id="sd_preset_chain_add" class="menu_button menu_button_icon">
52 <i class="fa-solid fa-plus"></i>
53 <span data-i18n="Add current settings">Add current settings</span>
54 </div>
55 </div>
56 <label for="sd_fallback_enabled" class="checkbox_label" data-i18n="[title]sd_fallback_enabled" title="Generate using the chain presets in order: unreachable local servers are skipped after a short probe, and failed attempts fall through to the next preset. Your live settings are restored afterward.">
57 <input id="sd_fallback_enabled" type="checkbox" />
58 <span data-i18n="sd_fallback_enabled_txt">Generate through the chain (auto-fallback)</span>
59 </label>
60 <small data-i18n="sd_fallback_enabled_small">When enabled, each generation tries the chain presets top to bottom until one succeeds. Unreachable local backends (e.g. a powered-off ComfyUI machine) are skipped after about a second.</small>
61 <hr>
62 <h4 data-i18n="Reference Image Library">Reference Image Library</h4>
63 <label for="sd_ref_images_enabled" class="checkbox_label" data-i18n="[title]sd_ref_images_enabled" title="When the ComfyUI workflow contains a %reference_image% placeholder, the image-prompt LLM picks the best-fitting image from this library and it is passed to the workflow as Base64.">
64 <input id="sd_ref_images_enabled" type="checkbox" />
65 <span data-i18n="sd_ref_images_enabled_txt">Use tagged reference images</span>
66 </label>
67 <small data-i18n="sd_ref_images_small">Upload images and tag them with a short name plus a description. If the active ComfyUI workflow uses the &quot;%reference_image%&quot; placeholder, the best-fitting image for the scene is selected automatically and injected like %user_avatar% / %char_avatar%.</small>
68 <div id="sd_ref_images_list" class="flex-container flexFlowColumn marginTopBot5"></div>
69 <div class="flex-container marginTopBot5">
70 <div id="sd_ref_images_add" class="menu_button menu_button_icon">
71 <i class="fa-solid fa-plus"></i>
72 <span data-i18n="Add reference image">Add reference image</span>
73 </div>
74 <input id="sd_ref_images_file" type="file" accept="image/png, image/jpeg, image/webp" multiple hidden />
75 </div>
76 <hr>
77 <h4 data-i18n="RunPod On-Demand Pod">RunPod On-Demand Pod</h4>
78 <label for="sd_runpod_lazy_url" data-i18n="Lazy proxy URL">Lazy proxy URL</label>
79 <input id="sd_runpod_lazy_url" type="text" class="text_pole" placeholder="http://10.0.0.4:8189" />
80 <div class="flex-container alignItemsCenter marginTopBot5">
81 <span id="sd_runpod_dot" class="sd_runpod_dot"></span>
82 <span id="sd_runpod_status_text" class="flex1">unknown</span>
83 <div id="sd_runpod_warmup" class="menu_button menu_button_icon" title="Start the pod and pre-download all models" data-i18n="[title]sd_runpod_warmup">
84 <i class="fa-solid fa-fire"></i>
85 <span data-i18n="Warm up">Warm up</span>
86 </div>
87 <div id="sd_runpod_shutdown" class="menu_button menu_button_icon" title="Terminate the pod now" data-i18n="[title]sd_runpod_shutdown">
88 <i class="fa-solid fa-power-off"></i>
89 <span data-i18n="Shut down">Shut down</span>
90 </div>
91 <a id="sd_runpod_open" class="menu_button menu_button_icon" href="#" target="_blank" rel="noopener" title="Open the pod's ComfyUI web interface" data-i18n="[title]sd_runpod_open" style="display: none;">
92 <i class="fa-solid fa-up-right-from-square"></i>
93 <span data-i18n="Open ComfyUI">Open ComfyUI</span>
94 </a>
95 </div>
96 <small data-i18n="sd_runpod_small">While a SillyTavern tab is open, a keepalive ping keeps the pod alive; it shuts down 15 minutes after the last activity either way. Red = off, orange = starting/downloading models, green = ready.</small>
97 <hr>
98 <label for="sd_source" data-i18n="Source">Source</label>
99 <select id="sd_source" class="text_pole">
100 <option value="aimlapi">AI/ML API</option>
101 <option value="bfl">BFL (Black Forest Labs)</option>
102 <option value="chutes">Chutes</option>
103 <option value="workersai">Cloudflare Workers AI</option>
104 <option value="comfy">ComfyUI</option>
105 <option value="drawthings">DrawThings HTTP API</option>
106 <option value="electronhub">Electron Hub</option>
107 <option value="extras">Extras API (deprecated)</option>
108 <option value="falai">FAL.AI</option>
109 <option value="google">Google AI</option>
110 <option value="huggingface">HuggingFace Inference API (serverless)</option>
111 <option value="nanogpt">NanoGPT</option>
112 <option value="novel">NovelAI Diffusion</option>
113 <option value="openai">OpenAI</option>
114 <option value="openrouter">OpenRouter</option>
115 <option value="pollinations">Pollinations</option>
116 <option value="vlad">SD.Next (vladmandic)</option>
117 <option value="stability">Stability AI</option>
118 <option value="auto">Stable Diffusion Web UI (AUTOMATIC1111)</option>
119 <option value="sdcpp">stable-diffusion.cpp server</option>
120 <option value="horde">Stable Horde</option>
121 <option value="togetherai">TogetherAI</option>
122 <option value="xai">xAI (Grok)</option>
123 <option value="zai">Z.AI</option>
124 </select>
125 <div data-sd-source="auto">
126 <label for="sd_auto_url">SD Web UI URL</label>
127 <div class="flex-container flexnowrap">
128 <input id="sd_auto_url" type="text" class="text_pole" data-i18n="[placeholder]sd_auto_url" placeholder="Example: {{auto_url}}" value="{{auto_url}}" />
129 <div id="sd_auto_validate" class="menu_button menu_button_icon">
130 <i class="fa-solid fa-check"></i>
131 <span data-i18n="Connect">
132 Connect
133 </span>
134 </div>
135 </div>
136 <label for="sd_auto_auth" data-i18n="Authentication (optional)">Authentication (optional)</label>
137 <input id="sd_auto_auth" type="text" class="text_pole" data-i18n="[placeholder]Example: username:password" placeholder="Example: username:password" value="" />
138 <!-- (Original Text)<b>Important:</b> run SD Web UI with the <tt>--api</tt> flag! The server must be accessible from the SillyTavern host machine. -->
139 <i><b data-i18n="Important:">Important:</b></i><i data-i18n="sd_auto_auth_warning_1"> run SD Web UI with the </i><i><tt>--api</tt></i><i data-i18n="sd_auto_auth_warning_2"> flag! The server must be accessible from the SillyTavern host machine.</i>
140 </div>
141 <div data-sd-source="sdcpp">
142 <label for="sd_sdcpp_url">stable-diffusion.cpp URL</label>
143 <div class="flex-container flexnowrap">
144 <input id="sd_sdcpp_url" type="text" class="text_pole" placeholder="Example: {{sdcpp_url}}" value="{{sdcpp_url}}" />
145 <div id="sd_sdcpp_validate" class="menu_button menu_button_icon">
146 <i class="fa-solid fa-check"></i>
147 <span data-i18n="Connect">
148 Connect
149 </span>
150 </div>
151 </div>
152 <i data-i18n="The server must be accessible from the SillyTavern host machine.">The server must be accessible from the SillyTavern host machine.</i>
153 </div>
154 <div data-sd-source="drawthings">
155 <label for="sd_drawthings_url">DrawThings API URL</label>
156 <div class="flex-container flexnowrap">
157 <input id="sd_drawthings_url" type="text" class="text_pole" data-i18n="[placeholder]sd_drawthings_url" placeholder="Example: {{drawthings_url}}" value="{{drawthings_url}}" />
158 <div id="sd_drawthings_validate" class="menu_button menu_button_icon">
159 <i class="fa-solid fa-check"></i>
160 <span data-i18n="Connect">
161 Connect
162 </span>
163 </div>
164 </div>
165 <label for="sd_drawthings_auth" data-i18n="Authentication (optional)">Authentication (optional)</label>
166 <input id="sd_drawthings_auth" type="text" class="text_pole" data-i18n="[placeholder]Example: username:password" placeholder="Example: username:password" value="" />
167 <!-- (Original Text)<b>Important:</b> run DrawThings app with HTTP API switch enabled in the UI! The server must be accessible from the SillyTavern host machine. -->
168 <i><b data-i18n="Important:">Important:</b></i><i data-i18n="sd_drawthings_auth_txt"> run DrawThings app with HTTP API switch enabled in the UI! The server must be accessible from the SillyTavern host machine.</i>
169 </div>
170 <div data-sd-source="huggingface">
171 <i data-i18n="Hint: Save an API key in the Hugging Face (Text Completion) API settings to use it here.">Hint: Save an API key in the Hugging Face (Text Completion) API settings to use it here.</i>
172 <label for="sd_huggingface_model_id" data-i18n="Model ID">Model ID</label>
173 <input id="sd_huggingface_model_id" type="text" class="text_pole" data-i18n="[placeholder]e.g. black-forest-labs/FLUX.1-dev" placeholder="e.g. black-forest-labs/FLUX.1-dev" value="" />
174 </div>
175 <div data-sd-source="chutes">
176 <i data-i18n="Hint: Save an API key in the Chutes (Chat Completion) API settings to use it here.">Hint: Save an API key in the Chutes (Chat Completion) API settings to use it here.</i>
177 </div>
178 <div data-sd-source="electronhub">
179 <i data-i18n="Hint: Save an API key in the Electron Hub (Chat Completion) API settings to use it here.">Hint: Save an API key in the Electron Hub (Chat Completion) API settings to use it here.</i>
180 <div class="flex-container" id="sd_electronhub_quality_row">
181 <div class="flex1">
182 <label for="sd_electronhub_quality" data-i18n="Image Quality">Image Quality</label>
183 <select id="sd_electronhub_quality" class="text_pole"></select>
184 </div>
185 </div>
186 </div>
187 <div data-sd-source="nanogpt">
188 <i data-i18n="Hint: Save an API key in the NanoGPT (Chat Completion) API settings to use it here.">Hint: Save an API key in the NanoGPT (Chat Completion) API settings to use it here.</i>
189 </div>
190 <div data-sd-source="vlad">
191 <label for="sd_vlad_url">SD.Next API URL</label>
192 <div class="flex-container flexnowrap">
193 <input id="sd_vlad_url" type="text" class="text_pole" data-i18n="[placeholder]sd_vlad_url" placeholder="Example: {{vlad_url}}" value="{{vlad_url}}" />
194 <div id="sd_vlad_validate" class="menu_button menu_button_icon">
195 <i class="fa-solid fa-check"></i>
196 <span data-i18n="Connect">
197 Connect
198 </span>
199 </div>
200 </div>
201 <label for="sd_vlad_auth" data-i18n="Authentication (optional)">Authentication (optional)</label>
202 <input id="sd_vlad_auth" type="text" class="text_pole" data-i18n="[placeholder]Example: username:password" placeholder="Example: username:password" value="" />
203 <i data-i18n="The server must be accessible from the SillyTavern host machine.">The server must be accessible from the SillyTavern host machine.</i>
204 </div>
205 <div data-sd-source="horde">
206 <i data-i18n="Hint: Save an API key in AI Horde API settings to use it here.">Hint: Save an API key in AI Horde API settings to use it here.</i>
207 <label for="sd_horde_nsfw" class="checkbox_label">
208 <input id="sd_horde_nsfw" type="checkbox" />
209 <span data-i18n="Allow NSFW images from Horde">
210 Allow NSFW images from Horde
211 </span>
212 </label>
213 <label for="sd_horde_sanitize" class="checkbox_label">
214 <input id="sd_horde_sanitize" type="checkbox" />
215 <span data-i18n="Sanitize prompts (recommended)">
216 Sanitize prompts (recommended)
217 </span>
218 </label>
219 </div>
220 <div data-sd-source="novel">
221 <div class="flex-container flexFlowColumn">
222 <label for="sd_novel_anlas_guard" class="checkbox_label flex1" data-i18n="[title]Automatically adjust generation parameters to ensure free image generations." title="Automatically adjust generation parameters to ensure free image generations.">
223 <input id="sd_novel_anlas_guard" type="checkbox" />
224 <span data-i18n="Avoid spending Anlas">
225 Avoid spending Anlas
226 </span>
227 <span data-i18n="Opus tier" class="toggle-description">(Opus tier)</span>
228 </label>
229 <div id="sd_novel_view_anlas" class="menu_button menu_button_icon" data-i18n="View my Anlas">
230 View my Anlas
231 </div>
232 </div>
233 <i data-i18n="Hint: Save an API key in the NovelAI API settings to use it here.">Hint: Save an API key in the NovelAI API settings to use it here.</i>
234 </div>
235 <div data-sd-source="aimlapi">
236 <div class="flex-container flexnowrap alignItemsBaseline marginBot5">
237 <strong class="flex1" data-i18n="API Key">API Key</strong>
238 <div id="sd_aimlapi_key" class="menu_button menu_button_icon manage-api-keys" data-key="api_key_aimlapi">
239 <i class="fa-fw fa-solid fa-key"></i>
240 <span data-i18n="Click to set">Click to set</span>
241 </div>
242 </div>
243 </div>
244 <div data-sd-source="zai">
245 <b>Will use Common API. Coding API is not supported!</b>
246 </div>
247 <div data-sd-source="openai,aimlapi,zai">
248 <div class="flex-container">
249 <div data-sd-model="dall-e-3" class="flex1">
250 <label for="sd_openai_style" data-i18n="Image Style">Image Style</label>
251 <select id="sd_openai_style" class="text_pole">
252 <option value="vivid">Vivid</option>
253 <option value="natural">Natural</option>
254 </select>
255 </div>
256 <div data-sd-model="gpt-image" class="flex1">
257 <label for="sd_openai_quality_gpt" data-i18n="Image Quality">Image Quality</label>
258 <select id="sd_openai_quality_gpt" class="text_pole">
259 <option value="auto" data-i18n="Auto">Auto</option>
260 <option value="low" data-i18n="Low">Low</option>
261 <option value="medium" data-i18n="Medium">Medium</option>
262 <option value="high" data-i18n="High">High</option>
263 </select>
264 </div>
265 <div data-sd-model="dall-e-3,cogview-4,glm-image,cogvideox" class="flex1">
266 <label for="sd_openai_quality" data-i18n="Image Quality">Image Quality</label>
267 <select id="sd_openai_quality" class="text_pole">
268 <option value="standard" data-i18n="Standard">Standard</option>
269 <option value="hd" data-i18n="HD">HD</option>
270 </select>
271 </div>
272 </div>
273 <div data-sd-model="sora-2,sora-2-pro" class="flex-container">
274 <div class="flex1">
275 <label for="sd_openai_duration" data-i18n="Duration">Duration</label>
276 <select id="sd_openai_duration" class="text_pole">
277 <option value="4" data-i18n="Short (4 seconds)">Short (4 seconds)</option>
278 <option value="8" data-i18n="Medium (8 seconds)">Medium (8 seconds)</option>
279 <option value="12" data-i18n="Long (16 seconds)">Long (12 seconds)</option>
280 </select>
281 </div>
282 </div>
283 </div>
284 <div data-sd-source="comfy">
285 <label for="sd_comfy_type">Server Type</label>
286 <select id="sd_comfy_type" class="text_pole">
287 <option value="standard">Standard Server</option>
288 <option value="runpod_serverless">RunPod Serverless Endpoint</option>
289 </select>
290 <div data-sd-comfy-type="standard">
291 <label for="sd_comfy_url">ComfyUI URL</label>
292 <div class="flex-container flexnowrap">
293 <input id="sd_comfy_url" type="text" class="text_pole" data-i18n="[placeholder]sd_comfy_url" placeholder="Example: {{comfy_url}}" value="{{comfy_url}}" />
294 <div id="sd_comfy_validate" class="menu_button menu_button_icon">
295 <i class="fa-solid fa-check"></i>
296 <span data-i18n="Connect">
297 Connect
298 </span>
299 </div>
300 </div>
301 </div>
302 <div data-sd-comfy-type="runpod_serverless">
303 <label for="sd_comfy_runpod_url">ComfyUI RunPod URL</label>
304 <div class="flex-container flexnowrap">
305 <input id="sd_comfy_runpod_url" type="text" class="text_pole" data-i18n="[placeholder]sd_comfy_runpod_url" placeholder="eg: https://api.runpod.ai/v2/<your endpoint id>" value="{{comfy_runpod_url}}" />
306 <div id="sd_comfy_runpod_validate" class="menu_button menu_button_icon">
307 <i class="fa-solid fa-check"></i>
308 <span data-i18n="Connect">
309 Connect
310 </span>
311 </div>
312 </div>
313 <div class="flex-container flexnowrap alignItemsBaseline marginBot5">
314 <a href="https://console.runpod.io/user/settings" target="_blank" rel="noopener noreferrer">
315 <strong data-i18n="API Key">API Key</strong>
316 <i class="fa-solid fa-share-from-square"></i>
317 </a>
318 <span class="expander"></span>
319 <div id="sd_runpod_key" class="menu_button menu_button_icon manage-api-keys" data-key="api_key_comfy_runpod">
320 <i class="fa-fw fa-solid fa-key"></i>
321 <span data-i18n="Click to set">Click to set</span>
322 </div>
323 </div>
324 </div>
325 <p><i><b data-i18n="Important:">Important:</b></i><i data-i18n="The server must be accessible from the SillyTavern host machine."> The server must be accessible from the SillyTavern host machine.</i></p>
326 <label for="sd_comfy_workflow">ComfyUI Workflow</label>
327 <div class="flex-container flexnowrap">
328 <select id="sd_comfy_workflow" class="flex1 text_pole"></select>
329 <div id="sd_comfy_open_workflow_editor" class="menu_button menu_button_icon" data-i18n="[title]Open workflow editor" title="Open workflow editor">
330 <i class="fa-solid fa-pen-to-square"></i>
331 </div>
332 <div id="sd_comfy_new_workflow" class="menu_button menu_button_icon" data-i18n="[title]Create new workflow" title="Create new workflow">
333 <i class="fa-solid fa-plus"></i>
334 </div>
335 <div id="sd_comfy_rename_workflow" class="menu_button menu_button_icon" data-i18n="[title]Rename workflow" title="Rename workflow">
336 <i class="fa-solid fa-pencil"></i>
337 </div>
338 <div id="sd_comfy_delete_workflow" class="menu_button menu_button_icon" data-i18n="[title]Delete workflow" title="Delete workflow">
339 <i class="fa-solid fa-trash-can"></i>
340 </div>
341 </div>
342 </div>
343 <div data-sd-source="pollinations">
344 <a href="https://enter.pollinations.ai">Pollinations.ai</a>
345 <div class="flex-container flexnowrap alignItemsBaseline marginBot5">
346 <strong class="flex1" data-i18n="API Key">API Key</strong>
347 <div id="sd_pollinations_key" class="menu_button menu_button_icon manage-api-keys" data-key="api_key_pollinations">
348 <i class="fa-fw fa-solid fa-key"></i>
349 <span data-i18n="Click to set">Click to set</span>
350 </div>
351 </div>
352 <div class="flex-container">
353 <label class="flex1 checkbox_label" for="sd_pollinations_enhance" data-i18n="[title]Enables prompt enhancing (passes prompts through an LLM to add detail)." title="Enables prompt enhancing (passes prompts through an LLM to add detail).">
354 <input id="sd_pollinations_enhance" type="checkbox" />
355 <span data-i18n="Enhance">
356 Enhance
357 </span>
358 </label>
359 </div>
360 </div>
361 <div data-sd-source="stability">
362 <div class="flex-container flexnowrap alignItemsBaseline marginBot5">
363 <strong class="flex1" data-i18n="API Key">API Key</strong>
364 <div id="sd_stability_key" class="menu_button menu_button_icon manage-api-keys" data-key="api_key_stability">
365 <i class="fa-fw fa-solid fa-key"></i>
366 <span data-i18n="Click to set">Click to set</span>
367 </div>
368 </div>
369 <div class="marginBot5">
370 <i data-i18n="You can find your API key in the Stability AI dashboard.">
371 You can find your API key in the Stability AI dashboard.
372 </i>
373 </div>
374
375 <div class="flex-container">
376 <div class="flex1">
377 <label for="sd_stability_style_preset" data-i18n="Style Preset">Style Preset</label>
378 <select id="sd_stability_style_preset" class="text_pole">
379 <option value="anime">Anime</option>
380 <option value="3d-model">3D Model</option>
381 <option value="analog-film">Analog Film</option>
382 <option value="cinematic">Cinematic</option>
383 <option value="comic-book">Comic Book</option>
384 <option value="digital-art">Digital Art</option>
385 <option value="enhance">Enhance</option>
386 <option value="fantasy-art">Fantasy Art</option>
387 <option value="isometric">Isometric</option>
388 <option value="line-art">Line Art</option>
389 <option value="low-poly">Low Poly</option>
390 <option value="modeling-compound">Modeling Compound</option>
391 <option value="neon-punk">Neon Punk</option>
392 <option value="origami">Origami</option>
393 <option value="photographic">Photographic</option>
394 <option value="pixel-art">Pixel Art</option>
395 <option value="tile-texture">Tile Texture</option>
396 </select>
397 </div>
398 </div>
399 </div>
400
401 <div data-sd-source="bfl">
402 <div class="flex-container flexnowrap alignItemsBaseline marginBot5">
403 <a href="https://api.bfl.ml/" target="_blank" rel="noopener noreferrer">
404 <strong data-i18n="API Key">API Key</strong>
405 <i class="fa-solid fa-share-from-square"></i>
406 </a>
407 <span class="expander"></span>
408 <div id="sd_bfl_key" class="menu_button menu_button_icon manage-api-keys" data-key="api_key_bfl">
409 <i class="fa-fw fa-solid fa-key"></i>
410 <span data-i18n="Click to set">Click to set</span>
411 </div>
412 </div>
413 <label class="checkbox_label marginBot5" for="sd_bfl_upsampling" data-i18n="[title]Whether to perform upsampling on the prompt. If active, automatically modifies the prompt for more creative generation." title="Whether to perform upsampling on the prompt. If active, automatically modifies the prompt for more creative generation.">
414 <input id="sd_bfl_upsampling" type="checkbox" />
415 <span data-i18n="Prompt Upsampling">
416 Prompt Upsampling
417 </span>
418 </label>
419 </div>
420
421 <div data-sd-source="falai">
422 <div class="flex-container flexnowrap alignItemsBaseline marginBot5">
423 <a href="https://fal.ai/dashboard" target="_blank" rel="noopener noreferrer">
424 <strong data-i18n="API Key">API Key</strong>
425 <i class="fa-solid fa-share-from-square"></i>
426 </a>
427 <span class="expander"></span>
428 <div id="sd_falai_key" class="menu_button menu_button_icon manage-api-keys" data-key="api_key_falai">
429 <i class="fa-fw fa-solid fa-key"></i>
430 <span data-i18n="Click to set">Click to set</span>
431 </div>
432 </div>
433 </div>
434
435 <div data-sd-source="workersai">
436 <a href="https://dash.cloudflare.com" target="_blank" rel="noopener noreferrer">Cloudflare Workers AI</a>
437 <div class="flex-container flexnowrap alignItemsBaseline marginBot5">
438 <strong class="flex1" data-i18n="API Key">API Key</strong>
439 <div id="sd_cf_workers_key" class="menu_button menu_button_icon manage-api-keys" data-key="api_key_workers_ai">
440 <i class="fa-fw fa-solid fa-key"></i>
441 <span data-i18n="Click to set">Click to set</span>
442 </div>
443 </div>
444 <div class="flex-container flexnowrap alignItemsBaseline">
445 <small class="flex1" data-i18n="Hint: Account ID and API key are pulled from API connections.">Hint: Account ID and API key are pulled from API connections.</small>
446 </div>
447 </div>
448
449 <div data-sd-source="google">
450 <div class="flex-container">
451 <div class="flex1">
452 <label for="sd_google_api" data-i18n="API Type">API Type</label>
453 <select id="sd_google_api" class="text_pole">
454 <option value="makersuite">Google AI Studio</option>
455 <option value="vertexai">Google Vertex AI</option>
456 </select>
457 </div>
458 </div>
459 <div class="flex-container alignItemsCenter">
460 <label class="flex1 checkbox_label" for="sd_google_enhance" data-i18n="[title]Enables prompt enhancing (passes prompts through an LLM to add detail)." title="Enables prompt enhancing (passes prompts through an LLM to add detail).">
461 <input id="sd_google_enhance" type="checkbox" />
462 <span data-i18n="Enhance">
463 Enhance
464 </span>
465 </label>
466 <div class="flex1">
467 <label for="sd_google_duration" data-i18n="Duration (Veo)">Duration (Veo)</label>
468 <select id="sd_google_duration" class="text_pole">
469 <option value="4">Short (4 seconds)</option>
470 <option value="6">Medium (6 seconds)</option>
471 <option value="8">Long (8 seconds)</option>
472 </select>
473 </div>
474 </div>
475 </div>
476
477 <div class="flex-container">
478 <div class="flex1">
479 <label for="sd_model" class="flex-container justifySpaceBetween">
480 <span data-i18n="Model">Model</span>
481 <div id="sd_models_refresh" class="right_menu_button margin0 padding0" title="Refresh model list" data-i18n="[title]Refresh model list">
482 <i class="fa-solid fa-sync"></i>
483 </div>
484 </label>
485 <select id="sd_model" class="text_pole"></select>
486 </div>
487
488 <div class="flex1" data-sd-source="comfy,auto">
489 <label for="sd_vae">VAE</label>
490 <select id="sd_vae" class="text_pole"></select>
491 </div>
492 </div>
493
494 <div class="flex-container">
495 <div class="flex1" data-sd-source="extras,horde,auto,drawthings,novel,vlad,comfy,sdcpp">
496 <label for="sd_sampler" data-i18n="Sampling method">Sampling method</label>
497 <select id="sd_sampler" class="text_pole"></select>
498 </div>
499
500 <div class="flex1" data-sd-source="comfy,auto,novel,sdcpp">
501 <label for="sd_scheduler" data-i18n="Scheduler">Scheduler</label>
502 <select id="sd_scheduler" class="text_pole"></select>
503 </div>
504 </div>
505
506 <div class="flex-container">
507 <div class="flex1">
508 <label for="sd_resolution" data-i18n="Resolution">Resolution</label>
509 <select id="sd_resolution" class="text_pole"><!-- Populated in JS --></select>
510 </div>
511
512 <div class="flex1" data-sd-source="auto,vlad,drawthings">
513 <label for="sd_hr_upscaler" data-i18n="Upscaler">Upscaler</label>
514 <select id="sd_hr_upscaler" class="text_pole"></select>
515 </div>
516 </div>
517
518 <div class="flex-container">
519 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p">
520 <small>
521 <span data-i18n="Sampling steps">Sampling steps</span>
522 </small>
523 <input class="neo-range-slider" type="range" id="sd_steps" name="sd_steps" min="{{steps_min}}" max="{{steps_max}}" step="{{steps_step}}" value="{{steps}}" >
524 <input class="neo-range-input" type="number" id="sd_steps_value" data-for="sd_steps" min="{{steps_min}}" max="{{steps_max}}" step="{{steps_step}}" value="{{steps}}" >
525 </div>
526
527 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p">
528 <small>
529 <span data-i18n="CFG Scale">CFG Scale</span>
530 </small>
531 <input class="neo-range-slider" type="range" id="sd_scale" name="sd_scale" min="{{scale_min}}" max="{{scale_max}}" step="{{scale_step}}" value="{{scale}}" >
532 <input class="neo-range-input" type="number" id="sd_scale_value" data-for="sd_scale" min="{{scale_min}}" max="{{scale_max}}" step="{{scale_step}}" value="{{scale}}" >
533 </div>
534 </div>
535
536 <div id="sd_dimensions_block" class="flex-container">
537 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p">
538 <small>
539 <span data-i18n="Width">Width</span>
540 </small>
541 <input class="neo-range-slider" type="range" id="sd_width" name="sd_width" max="{{dimension_max}}" min="{{dimension_min}}" step="{{dimension_step}}" value="{{width}}" >
542 <input class="neo-range-input" type="number" id="sd_width_value" data-for="sd_width" max="{{dimension_max}}" min="{{dimension_min}}" step="{{dimension_step}}" value="{{width}}" >
543 </div>
544
545 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p">
546 <small>
547 <span data-i18n="Height">Height</span>
548 </small>
549 <input class="neo-range-slider" type="range" id="sd_height" name="sd_height" max="{{dimension_max}}" min="{{dimension_min}}" step="{{dimension_step}}" value="{{height}}" >
550 <input class="neo-range-input" type="number" id="sd_height_value" data-for="sd_height" max="{{dimension_max}}" min="{{dimension_min}}" step="{{dimension_step}}" value="{{height}}" >
551 </div>
552
553 <div id="sd_swap_dimensions" class="right_menu_button" title="Swap width and height" data-i18n="[title]Swap width and height">
554 <i class="fa-solid fa-arrow-right-arrow-left"></i>
555 </div>
556 </div>
557
558 <div class="flex-container">
559 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p" data-sd-source="auto,vlad,drawthings,novel">
560 <small>
561 <span data-i18n="Upscale by">Upscale by</span>
562 </small>
563 <input class="neo-range-slider" type="range" id="sd_hr_scale" name="sd_hr_scale" min="{{hr_scale_min}}" max="{{hr_scale_max}}" step="{{hr_scale_step}}" value="{{hr_scale}}" >
564 <input class="neo-range-input" type="number" id="sd_hr_scale_value" data-for="sd_hr_scale" min="{{hr_scale_min}}" max="{{hr_scale_max}}" step="{{hr_scale_step}}" value="{{hr_scale}}" >
565 </div>
566
567 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p" data-sd-source="auto,vlad,comfy">
568 <small>
569 <span data-i18n="Denoising strength">Denoising strength</span>
570 </small>
571 <input class="neo-range-slider" type="range" id="sd_denoising_strength" name="sd_denoising_strength" min="{{denoising_strength_min}}" max="{{denoising_strength_max}}" step="{{denoising_strength_step}}" value="{{denoising_strength}}" >
572 <input class="neo-range-input" type="number" id="sd_denoising_strength_value" data-for="sd_denoising_strength" min="{{denoising_strength_min}}" max="{{denoising_strength_max}}" step="{{denoising_strength_step}}" value="{{denoising_strength}}" >
573 </div>
574
575 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p" data-sd-source="auto,vlad">
576 <small>
577 <span data-i18n="Hires steps (2nd pass)">Hires steps (2nd pass)</span>
578 </small>
579 <input class="neo-range-slider" type="range" id="sd_hr_second_pass_steps" name="sd_hr_second_pass_steps" max="{{hr_second_pass_steps_max}}" step="{{hr_second_pass_steps_step}}" value="{{hr_second_pass_steps}}" >
580 <input class="neo-range-input" type="number" id="sd_hr_second_pass_steps_value" data-for="sd_hr_second_pass_steps" max="{{hr_second_pass_steps_max}}" step="{{hr_second_pass_steps_step}}" value="{{hr_second_pass_steps}}" >
581 </div>
582
583 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p" data-sd-source="auto,vlad,comfy,horde,drawthings,extras,sdcpp">
584 <small>
585 <span data-i18n="CLIP Skip">CLIP Skip</span>
586 </small>
587 <input class="neo-range-slider" type="range" id="sd_clip_skip" name="sd_clip_skip" min="{{clip_skip_min}}" max="{{clip_skip_max}}" step="{{clip_skip_step}}" value="{{clip_skip}}" >
588 <input class="neo-range-input" type="number" id="sd_clip_skip_value" data-for="sd_clip_skip" min="{{clip_skip_min}}" max="{{clip_skip_max}}" step="{{clip_skip_step}}" value="{{clip_skip}}" >
589 </div>
590 </div>
591
592 <div class="flex-container marginTopBot5" data-sd-source="auto,vlad,extras,horde,drawthings">
593 <label class="flex1 checkbox_label">
594 <input id="sd_restore_faces" type="checkbox" />
595 <small data-i18n="Restore Faces">Restore Faces</small>
596 </label>
597 <label class="flex1 checkbox_label">
598 <input id="sd_enable_hr" type="checkbox" />
599 <small data-i18n="Hires. Fix">Hires. Fix</small>
600 </label>
601 <label data-sd-source="horde" for="sd_horde_karras" class="flex1 checkbox_label">
602 <input id="sd_horde_karras" type="checkbox" />
603 <small data-i18n="Karras">Karras</small>
604 <i class="fa-solid fa-info-circle fa-sm opacity50p" data-i18n="[title]Not all samplers supported." title="Not all samplers supported."></i>
605 </label>
606 </div>
607
608 <div class="flex-container marginTopBot5" data-sd-source="auto,vlad">
609 <label for="sd_adetailer_face" class="flex1 checkbox_label" data-i18n="[title]sd_adetailer_face" title="Use ADetailer with face model during the generation. The ADetailer extension must be installed on the backend.">
610 <input id="sd_adetailer_face" type="checkbox" />
611 <small data-i18n="Use ADetailer (Face)">Use ADetailer (Face)</small>
612 </label>
613 <div class="flex1">
614 <!-- I will be useful later! -->
615 </div>
616 </div>
617
618 <div class="flex-container marginTopBot5" data-sd-source="novel">
619 <label class="flex1 checkbox_label" data-i18n="[title]SMEA versions of samplers are modified to perform better at high resolution." title="SMEA versions of samplers are modified to perform better at high resolution.">
620 <input id="sd_novel_sm" type="checkbox" />
621 <small data-i18n="SMEA">SMEA</small>
622 </label>
623 <label class="flex1 checkbox_label" data-i18n="[title]DYN variants of SMEA samplers often lead to more varied output, but may fail at very high resolutions." title="DYN variants of SMEA samplers often lead to more varied output, but may fail at very high resolutions.">
624 <input id="sd_novel_sm_dyn" type="checkbox" />
625 <small data-i18n="DYN">DYN</small>
626 </label>
627 <label class="flex1 checkbox_label" for="sd_novel_decrisper" title="Reduce artifacts caused by high guidance values.">
628 <input id="sd_novel_decrisper" type="checkbox" />
629 <small data-i18n="Decrisper">Decrisper</small>
630 </label>
631 <label class="flex1 checkbox_label" data-i18n="[title]Enable guidance only after body has been formed, to improve diversity and saturation of samples. May reduce relevance" title="Enable guidance only after body has been formed, to improve diversity and saturation of samples. May reduce relevance">
632 <input id="sd_novel_variety_boost" type="checkbox" />
633 <small data-i18n="Variety+">Variety+</small>
634 </label>
635 </div>
636
637 <div data-sd-source="novel,togetherai,pollinations,comfy,drawthings,vlad,auto,horde,extras,stability,bfl,sdcpp" class="marginTop5">
638 <label for="sd_seed">
639 <span data-i18n="Seed">Seed</span>
640 <small data-i18n="(-1 for random)">(-1 for random)</small>
641 </label>
642 <input id="sd_seed" type="number" class="text_pole" min="-1" max="9999999999" step="1" />
643 </div>
644
645 <hr>
646 <h4 data-i18n="[title]Preset for prompt prefix and negative prompt" title="Preset for prompt prefix and negative prompt">
647 <span data-i18n="Style">Style</span>
648 </h4>
649 <div class="flex-container">
650 <select id="sd_style" class="flex1 text_pole"></select>
651 <div id="sd_save_style" data-i18n="[title]Save style" title="Save style" class="menu_button">
652 <i class="fa-solid fa-save"></i>
653 </div>
654 <div id="sd_rename_style" data-i18n="[title]Rename style" title="Rename style" class="menu_button">
655 <i class="fa-solid fa-pencil"></i>
656 </div>
657 <div id="sd_delete_style" data-i18n="[title]Delete style" title="Delete style" class="menu_button">
658 <i class="fa-solid fa-trash-can"></i>
659 </div>
660 </div>
661 <label for="sd_prompt_prefix" data-i18n="Common prompt prefix">Common prompt prefix</label>
662 <textarea id="sd_prompt_prefix" class="text_pole textarea_compact autoSetHeight" data-i18n="[placeholder]sd_prompt_prefix_placeholder" placeholder="Use {prompt} to specify where the generated prompt will be inserted"></textarea>
663 <label for="sd_negative_prompt" data-i18n="Negative common prompt prefix">Negative common prompt prefix</label>
664 <textarea id="sd_negative_prompt" class="text_pole textarea_compact autoSetHeight"></textarea>
665 <div id="sd_character_prompt_block">
666 <label for="sd_character_prompt" data-i18n="Character-specific prompt prefix">Character-specific prompt prefix</label>
667 <small data-i18n="Won't be used in groups.">Won't be used in groups.</small>
668 <textarea id="sd_character_prompt" class="text_pole textarea_compact autoSetHeight" data-i18n="[placeholder]sd_character_prompt_placeholder" placeholder="Any characteristics that describe the currently selected character. Will be added after a common prompt prefix.&#10;Example: female, green eyes, brown hair, pink shirt"></textarea>
669 <label for="sd_character_negative_prompt" data-i18n="Character-specific negative prompt prefix">Character-specific negative prompt prefix</label>
670 <small data-i18n="Won't be used in groups.">Won't be used in groups.</small>
671 <textarea id="sd_character_negative_prompt" class="text_pole textarea_compact autoSetHeight" data-i18n="[placeholder]sd_character_negative_prompt_placeholder" placeholder="Any characteristics that should not appear for the selected character. Will be added after a negative common prompt prefix.&#10;Example: jewellery, shoes, glasses"></textarea>
672 <label for="sd_character_prompt_share" class="checkbox_label flexWrap marginTop5">
673 <input id="sd_character_prompt_share" type="checkbox" />
674 <span data-i18n="Shareable">
675 Shareable
676 </span>
677 <small class="flexBasis100p" data-i18n="When checked, character-specific prompts will be saved with the character card data.">
678 When checked, character-specific prompts will be saved with the character card data.
679 </small>
680 </label>
681 </div>
682 <hr>
683 <h4 data-i18n="Chat Message Visibility (by source)">
684 Chat Message Visibility (by source)
685 </h4>
686 <small data-i18n="Uncheck to hide the extension's messages in chat prompts.">
687 Uncheck to hide the extension's messages in chat prompts.
688 </small>
689 <div class="flex-container flexFlowColumn marginTopBot5 flexGap10">
690 <label for="sd_wand_visible" class="checkbox_label">
691 <span class="flex1 flex-container alignItemsCenter">
692 <i class="fa-solid fa-wand-magic-sparkles fa-fw"></i>
693 <span data-i18n="Extensions Menu">Extensions Menu</span>
694 </span>
695 <input id="sd_wand_visible" type="checkbox" />
696 </label>
697 <label for="sd_command_visible" class="checkbox_label">
698 <span class="flex1 flex-container alignItemsCenter">
699 <i class="fa-solid fa-terminal fa-fw"></i>
700 <span data-i18n="Slash Command">Slash Command</span>
701 </span>
702 <input id="sd_command_visible" type="checkbox" />
703 </label>
704 <label for="sd_interactive_visible" class="checkbox_label">
705 <span class="flex1 flex-container alignItemsCenter">
706 <i class="fa-solid fa-message fa-fw"></i>
707 <span data-i18n="Interactive Mode">Interactive Mode</span>
708 </span>
709 <input id="sd_interactive_visible" type="checkbox" />
710 </label>
711 <label for="sd_tool_visible" class="checkbox_label">
712 <span class="flex1 flex-container alignItemsCenter">
713 <i class="fa-solid fa-wrench fa-fw"></i>
714 <span data-i18n="Function Tool">Function Tool</span>
715 </span>
716 <input id="sd_tool_visible" type="checkbox" />
717 </label>
718 </div>
719 </div>
720 </div>
721 <div class="inline-drawer">
722 <div class="inline-drawer-toggle inline-drawer-header">
723 <b data-i18n="Image Prompt Templates">Image Prompt Templates</b>
724 <div class="inline-drawer-icon fa-solid fa-circle-chevron-down down"></div>
725 </div>
726 <div id="sd_prompt_templates" class="inline-drawer-content">
727 </div>
728 </div>
729 <div class="inline-drawer">
730 <div class="inline-drawer-toggle inline-drawer-header">
731 <b data-i18n="Custom Wand Entries">Custom Wand Entries</b>
732 <div class="inline-drawer-icon fa-solid fa-circle-chevron-down down"></div>
733 </div>
734 <div class="inline-drawer-content">
735 <small data-i18n="sd_custom_entries_small">Add your own entries to the image generation wand dropdown. Clicking an entry uses its prompt as the LLM instruction, just like the built-in entries.</small>
736 <div class="flex-container marginTopBot5">
737 <div id="sd_custom_entry_add" class="menu_button menu_button_icon">
738 <i class="fa-solid fa-plus"></i>
739 <span data-i18n="Add entry">Add entry</span>
740 </div>
741 </div>
742 <div id="sd_custom_entries_list"></div>
743 </div>
744 </div>
745</div>