Update index.js to use ADetailer in Auto1111/Forge/Vlad added events, listener, and function for ADetailer/aiFaceDetailer. Rewrote function generateAutoImage to allow for tacking on of alwayson_scripts (maybe redo for a textbox/json later for other Auto1111 extensions?) paired with settings.html edits

2689025ec38c5d797709f09b050751e422480759

error-usernotavailable <anonymoususernotavailable@gmail.com>

Signed
1 files changed, +35 -10Showing whitespace changes
public/scripts/extensions/stable-diffusion/index.js+35 -10
@@ -219,6 +219,7 @@ const defaultSettings = {
219219 // Automatic1111/Horde exclusives
220220 restore_faces: false,
221221 enable_hr: false,
222+ aiFaceDetailer: false,
222223
223224 // Horde settings
224225 horde: false,
@@ -435,6 +436,7 @@ async function loadSettings() {
435436 $('#sd_horde_sanitize').prop('checked', extension_settings.sd.horde_sanitize);
436437 $('#sd_restore_faces').prop('checked', extension_settings.sd.restore_faces);
437438 $('#sd_enable_hr').prop('checked', extension_settings.sd.enable_hr);
439+ $('#sd_aiFaceDetailer').prop('checked', extension_settings.sd.aiFaceDetailer);
438440 $('#sd_refine_mode').prop('checked', extension_settings.sd.refine_mode);
439441 $('#sd_multimodal_captioning').prop('checked', extension_settings.sd.multimodal_captioning);
440442 $('#sd_auto_url').val(extension_settings.sd.auto_url);
@@ -853,6 +855,11 @@ function onSamplerChange() {
853855 saveSettingsDebounced();
854856}
855857
858+function onAiFaceDetailerChange() {
859+ extension_settings.sd.aiFaceDetailer = $('#sd_aiFaceDetailer').prop('checked');
860+ saveSettingsDebounced();
861+}
862+
856863const resolutionOptions = {
857864 sd_res_512x512: { width: 512, height: 512, name: '512x512 (1:1, icons, profile pictures)' },
858865 sd_res_600x600: { width: 600, height: 600, name: '600x600 (1:1, icons, profile pictures)' },
@@ -2920,11 +2927,7 @@ async function generateHordeImage(prompt, negativePrompt, signal) {
29202927 */
29212928async function generateAutoImage(prompt, negativePrompt, signal) {
29222929 const isValidVae = extension_settings.sd.vae && !['N/A', placeholderVae].includes(extension_settings.sd.vae);
2923- const result = await fetch('/api/sd/generate', {
2930+ let payload = {
2924- method: 'POST',
2925- headers: getRequestHeaders(),
2926- signal: signal,
2927- body: JSON.stringify({
29282931 ...getSdRequestBody(),
29292932 prompt: prompt,
29302933 negative_prompt: negativePrompt,
@@ -2941,22 +2944,43 @@ async function generateAutoImage(prompt, negativePrompt, signal) {
29412944 denoising_strength: extension_settings.sd.denoising_strength,
29422945 hr_second_pass_steps: extension_settings.sd.hr_second_pass_steps,
29432946 seed: extension_settings.sd.seed >= 0 ? extension_settings.sd.seed : undefined,
2944- // For AUTO1111
29452947 override_settings: {
29462948 CLIP_stop_at_last_layers: extension_settings.sd.clip_skip,
29472949 sd_vae: isValidVae ? extension_settings.sd.vae : undefined,
29482950 },
29492951 override_settings_restore_afterwards: true,
29502952 clip_skip: extension_settings.sd.clip_skip, // For SD.Next
2951- clip_skip: extension_settings.sd.clip_skip,
2952- // Ensure generated img is saved to disk
29532953 save_images: true,
29542954 send_images: true,
29552955 do_not_save_grid: false,
29562956 do_not_save_samples: false,
2957- }),
2957+ };
2958+ // Conditionally add the ADetailer if aiFaceDetailer is enabled
2959+ console.log('extension_settings.sd.aiFaceDetailer:', extension_settings.sd.aiFaceDetailer);
2960+ if (extension_settings.sd.aiFaceDetailer) {
2961+ payload.alwayson_scripts = {
2962+ ADetailer: {
2963+ args: [
2964+ true, // ad_enable
2965+ true, // skip_img2img
2966+ {
2967+ "ad_model": "face_yolov8n.pt"
2968+ }
2969+ ]
2970+ }
2971+ };
2972+ }
2973+
2974+ // Make the fetch call with the payload
2975+ const result = await fetch('/api/sd/generate', {
2976+ method: 'POST',
2977+ headers: getRequestHeaders(),
2978+ signal: signal,
2979+ body: JSON.stringify(payload),
29582980 });
29592981
2982+
2983+
29602984 if (result.ok) {
29612985 const data = await result.json();
29622986 return { format: 'png', data: data.images[0] };
@@ -4186,6 +4210,7 @@ jQuery(async () => {
41864210 $('#sd_horde_sanitize').on('input', onHordeSanitizeInput);
41874211 $('#sd_restore_faces').on('input', onRestoreFacesInput);
41884212 $('#sd_enable_hr').on('input', onHighResFixInput);
4213+ $('#sd_aiFaceDetailer').on('change', onAiFaceDetailerChange);
41894214 $('#sd_refine_mode').on('input', onRefineModeInput);
41904215 $('#sd_character_prompt').on('input', onCharacterPromptInput);
41914216 $('#sd_character_negative_prompt').on('input', onCharacterNegativePromptInput);