handle startup errors

Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
Vladimir Mandic
2025-07-22 10:19:30 -04:00
parent 36c356785e
commit 41269b05c0
7 changed files with 19 additions and 6 deletions
+4 -3
View File
@@ -1,8 +1,8 @@
# Change Log for SD.Next
## Update for 2025-07-21
## Update for 2025-07-22
### Highlights for 2025-07-21
### Highlights for 2025-07-22
Feature highlights include:
- **ModernUI** layout redesign which should make it more user friendly and easier to navigate
@@ -29,7 +29,7 @@ For details, see [ChangeLog](https://github.com/vladmandic/automatic/blob/master
[ReadMe](https://github.com/vladmandic/automatic/blob/master/README.md) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [WiKi](https://github.com/vladmandic/automatic/wiki) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867)
### Details for 2025-07-21
### Details for 2025-07-22
- **License**
- SD.Next [license](https://github.com/vladmandic/sdnext/blob/dev/LICENSE.txt) switched from **aGPL-v3.0** to **Apache-v2.0**
@@ -162,6 +162,7 @@ For details, see [ChangeLog](https://github.com/vladmandic/automatic/blob/master
- remove legacy clip/blip interrogate module
- remove modern-ui remove `only-original` vs `only-diffusers` code paths
- refactor control processing and separate preprocessing and image save ops
- refactor modernui layouts to rely on accordions more than individual controls
- split monolithic `shared.py`
- cleanup `/modules`: move pipeline loaders to `/pipelines` root
- cleanup `/modules`: move code folders used by pipelines to `/pipelines/<pipeline>` folder
+4
View File
@@ -60,6 +60,10 @@ function changelogNavigate(found) {
async function initChangelog() {
const search = gradioApp().querySelector('#changelog_search > label> textarea');
const md = gradioApp().getElementById('changelog_markdown');
if (!search || !md) {
error('initChangelog', 'Missing search or markdown elements');
return;
}
const searchChangelog = async (e) => {
if (changelogElements.length < 100) changelogElements = getAllChildren(md);
const found = [];
+4
View File
@@ -469,6 +469,10 @@ async function initGallery() { // triggered on gradio change to monitor when ui
el.files = gradioApp().getElementById('tab-gallery-files');
el.status = gradioApp().getElementById('tab-gallery-status');
el.search = gradioApp().querySelector('#tab-gallery-search textarea');
if (!el.folders || !el.files || !el.status || !el.search) {
error('initGallery', 'Missing gallery elements');
return;
}
el.search.addEventListener('input', gallerySearch);
el.btnSend = gradioApp().getElementById('tab-gallery-send-image');
document.getElementById('tab-gallery-files').style.height = opts.logmonitor_show ? '75vh' : '85vh';
+4
View File
@@ -181,6 +181,10 @@ async function initSettings() {
if (settingsInitialized) return;
settingsInitialized = true;
const tabNavElements = gradioApp().querySelector('#settings > .tab-nav');
if (!tabNavElements) {
error('initSettings', 'No tab nav elements found');
return;
}
const tabNavButtons = gradioApp().querySelectorAll('#settings > .tab-nav > button');
const tabElements = gradioApp().querySelectorAll('#settings > div:not(.tab-nav)');
const observer = new MutationObserver((mutations) => {
+1 -1
View File
@@ -387,7 +387,7 @@ class YoloRestorer(Detailer):
enabled = gr.Checkbox(label="Enable detailer pass", elem_id=f"{tab}_detailer_enabled", value=False)
with gr.Row():
detailers = gr.Dropdown(label="Detailer models", elem_id=f"{tab}_detailers", choices=self.list, value=shared.opts.detailer_models, multiselect=True, visible=True)
detailers_text = gr.Textbox(label="Detailer models", elem_id=f"{tab}_detailers_text", placeholder="Comma separated list of detailer models", lines=2, visible=False, interactive=True)
detailers_text = gr.Textbox(label="Detailer list", elem_id=f"{tab}_detailers_text", placeholder="Comma separated list of detailer models", lines=2, visible=False, interactive=True)
refresh_btn = ui_common.create_refresh_button(detailers, self.enumerate, {}, elem_id=f"{tab}_detailers_refresh")
ui_mode = ui_components.ToolButton(value=ui_symbols.view)
ui_mode.click(fn=self.change_mode, inputs=[detailers, detailers_text], outputs=[detailers, detailers_text, refresh_btn])
+1 -1
View File
@@ -364,7 +364,7 @@ def create_ui():
create_safetensors = gr.Checkbox(label="Save safetensors", value=True)
debug = gr.Checkbox(label="Debug info", value=False)
model_modules_btn = gr.Button(value="Modules", variant='primary')
model_modules_btn = gr.Button(value="Merge Modules", variant='primary')
model_modules_btn.click(
fn=extras.run_model_modules,
inputs=[