diff --git a/CHANGELOG.md b/CHANGELOG.md index 08f5b4da5..595e71a26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -133,7 +133,6 @@ Upgrades are still possible and supported, but above is recommended for best exp - **Startup** - all main CLI parameters can now be set as environment variable as well for example `--data-dir ` can be specified as `SD_DATADIR=` before starting SD.Next - - faster extensions loading - **Logging** - get browser session info in server log - allow custom log file destination diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js index e05cff5cc..03a90034e 100644 --- a/javascript/extraNetworks.js +++ b/javascript/extraNetworks.js @@ -207,17 +207,18 @@ function setupExtraNetworksForTab(tabname) { const div = document.createElement('div'); div.classList.add('second-line'); tabs.appendChild(div); - const txtSearch = gradioApp().querySelector(`#${tabname}_extra_search textarea`); + const txtSearch = gradioApp().querySelector(`#${tabname}_extra_search`); + const txtSearchValue = gradioApp().querySelector(`#${tabname}_extra_search textarea`); const txtDescription = gradioApp().getElementById(`${tabname}_description`); txtSearch.classList.add('search'); txtDescription.classList.add('description'); div.appendChild(txtSearch); div.appendChild(txtDescription); let searchTimer = null; - txtSearch.addEventListener('input', (evt) => { + txtSearchValue.addEventListener('input', (evt) => { if (searchTimer) clearTimeout(searchTimer); searchTimer = setTimeout(() => { - filterExtraNetworksForTab(tabname, txtSearch.value.toLowerCase()); + filterExtraNetworksForTab(tabname, txtSearchValue.value.toLowerCase()); searchTimer = null; }, 150); }); diff --git a/javascript/script.js b/javascript/script.js index d9e35376f..3711e5abb 100644 --- a/javascript/script.js +++ b/javascript/script.js @@ -79,8 +79,10 @@ document.addEventListener('DOMContentLoaded', () => { executedOnLoaded = true; executeCallbacks(uiLoadedCallbacks); } - executeCallbacks(uiUpdateCallbacks, m); - scheduleAfterUiUpdateCallbacks(); + if (executedOnLoaded) { + executeCallbacks(uiUpdateCallbacks, m); + scheduleAfterUiUpdateCallbacks(); + } const newTab = getUICurrentTab(); if (newTab && (newTab !== uiCurrentTab)) { uiCurrentTab = newTab; diff --git a/javascript/settings.js b/javascript/settings.js index 554010787..ff91ec995 100644 --- a/javascript/settings.js +++ b/javascript/settings.js @@ -1,3 +1,4 @@ +let settingsInitialized = false; let opts_metadata = {}; const opts_tabs = {}; @@ -47,6 +48,7 @@ function showAllSettings() { } function markIfModified(setting_name, value) { + if (!opts_metadata[setting_name]) return; const elem = gradioApp().getElementById(`modification_indicator_${setting_name}`); if (!elem) return; const previous_value = JSON.stringify(opts[setting_name]); @@ -137,7 +139,9 @@ onOptionsChanged(() => { }); }); -onUiLoaded(() => { +function initSettings() { + if (settingsInitialized) return; + settingsInitialized = true; const tab_nav_element = gradioApp().querySelector('#settings > .tab-nav'); const tab_nav_buttons = gradioApp().querySelectorAll('#settings > .tab-nav > button'); const tab_elements = gradioApp().querySelectorAll('#settings > div:not(.tab-nav)'); @@ -158,4 +162,6 @@ onUiLoaded(() => { observer.observe(elem, { attributes: true, attributeFilter: ['style'] }); }); log('initSettings'); -}); +} + +onUiLoaded(initSettings); diff --git a/javascript/uiConfig.js b/javascript/uiConfig.js index a91790add..9a0d8ea69 100644 --- a/javascript/uiConfig.js +++ b/javascript/uiConfig.js @@ -10,12 +10,14 @@ function uiOpenSubmenus() { return states; } -onUiLoaded(() => { +function getUIDefaults() { const btn = gradioApp().getElementById('ui_defaults_view'); if (!btn) return; const intersectionObserver = new IntersectionObserver((entries) => { - if (entries[0].intersectionRatio <= 0) {} + if (entries[0].intersectionRatio <= 0) { } if (entries[0].intersectionRatio > 0) btn.click(); }); intersectionObserver.observe(btn); // monitor visibility of tab -}); +} + +onUiLoaded(getUIDefaults); diff --git a/modules/extensions.py b/modules/extensions.py index ce27f1230..dd571fe3d 100644 --- a/modules/extensions.py +++ b/modules/extensions.py @@ -37,7 +37,6 @@ class Extension: self.have_info_from_repo = False self.mtime = 0 self.ctime = 0 - self.script_files = [] def read_info_from_repo(self): if self.have_info_from_repo: @@ -75,9 +74,6 @@ class Extension: self.remote = None def list_files(self, subdir, extension): - if len(self.script_files) > 0: - return self.script_files - from modules import scripts dirpath = os.path.join(self.path, subdir) if not os.path.isdir(dirpath): @@ -94,7 +90,6 @@ class Extension: if priority != '50': shared.log.debug(f'Extension priority override: {os.path.dirname(dirpath)}:{priority}') res = [x for x in res if os.path.splitext(x.path)[1].lower() == extension and os.path.isfile(x.path)] - self.script_files = res return res def check_updates(self): diff --git a/modules/scripts.py b/modules/scripts.py index 2c2316518..dca8b3f64 100644 --- a/modules/scripts.py +++ b/modules/scripts.py @@ -193,11 +193,9 @@ ScriptFile = namedtuple("ScriptFile", ["basedir", "filename", "path", "priority" scripts_data = [] postprocessing_scripts_data = [] ScriptClassData = namedtuple("ScriptClassData", ["script_class", "path", "basedir", "module"]) -scripts_list_per_dir = {} + def list_scripts(scriptdirname, extension): - if scriptdirname in scripts_list_per_dir: - return scripts_list_per_dir[scriptdirname] tmp_list = [] base = os.path.join(paths.script_path, scriptdirname) if os.path.exists(base): @@ -227,7 +225,6 @@ def list_scripts(scriptdirname, extension): priority_list.append(ScriptFile(script.basedir, script.filename, script.path, priority)) # log.debug(f'Adding script: {script.basedir} {script.filename} {script.path} {priority}') priority_sort = sorted(priority_list, key=lambda item: item.priority + item.path.lower(), reverse=False) - scripts_list_per_dir[scriptdirname] = priority_sort return priority_sort diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index b3e618859..c0b72d414 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -469,7 +469,7 @@ def create_ui(container, button_parent, tabname, skip_indexing = False): ui.button_save = ToolButton(symbols.book, elem_id=tabname+"_extra_save", visible=False) ui.button_close = ToolButton(symbols.close, elem_id=tabname+"_extra_close") ui.button_model = ToolButton(symbols.refine, elem_id=tabname+"_extra_model", visible=True) - ui.search = gr.Textbox('', show_label=False, elem_id=tabname+"_extra_search", placeholder="Search...", elem_classes="textbox", lines=2) + ui.search = gr.Textbox('', show_label=False, elem_id=tabname+"_extra_search", placeholder="Search...", elem_classes="textbox", lines=2, container=True) ui.description = gr.Textbox('', show_label=False, elem_id=tabname+"_description", elem_classes="textbox", lines=2, interactive=False) if ui.tabname == 'txt2img': # refresh only once