diff --git a/main.py b/main.py index 4c3078c..159ce7b 100644 --- a/main.py +++ b/main.py @@ -522,4 +522,4 @@ def render_sidebar(state: AppState, dual_pane: dict): if _shared_db is not None: register_api_routes(_shared_db) -ui.run(title='AI Settings Manager', port=8080, reload=True, reload_includes=['*.py']) +ui.run(title='AI Settings Manager', port=8080, reload=False) diff --git a/tab_comfy_ng.py b/tab_comfy_ng.py index 3c4c359..c2bcc18 100644 --- a/tab_comfy_ng.py +++ b/tab_comfy_ng.py @@ -82,15 +82,18 @@ def render_comfy_monitor(state: AppState): _live_refreshables = state._live_refreshables def poll_all(): - timeout_val = config.get('monitor_timeout', 0) - if timeout_val > 0: - for key, start_time in list(state.live_toggles.items()): - if start_time and (time.time() - start_time) > (timeout_val * 60): - state.live_toggles[key] = None - if key in _live_checkboxes: - _live_checkboxes[key].set_value(False) - if key in _live_refreshables: - _live_refreshables[key].refresh() + try: + timeout_val = config.get('monitor_timeout', 0) + if timeout_val > 0: + for key, start_time in list(state.live_toggles.items()): + if start_time and (time.time() - start_time) > (timeout_val * 60): + state.live_toggles[key] = None + if key in _live_checkboxes: + _live_checkboxes[key].set_value(False) + if key in _live_refreshables: + _live_refreshables[key].refresh() + except RuntimeError: + pass # Parent slot deleted during refresh ui.timer(300, poll_all) diff --git a/tab_timeline_ng.py b/tab_timeline_ng.py index bc618ed..0721d09 100644 --- a/tab_timeline_ng.py +++ b/tab_timeline_ng.py @@ -437,6 +437,8 @@ def render_timeline_tab(state: AppState): render_timeline() # --- Poll for graph node clicks (JS → Python bridge) --- + graph_timer = None + async def _poll_graph_click(): if view_mode.value == 'Linear Log': return @@ -446,6 +448,9 @@ def render_timeline_tab(state: AppState): 'window.graphSelectedNode = null; v;' ) except Exception: + # Deactivate timer if parent slot was deleted + if graph_timer is not None: + graph_timer.active = False return if not result: return @@ -458,7 +463,7 @@ def render_timeline_tab(state: AppState): selected['node_id'] = node_id render_timeline.refresh() - ui.timer(0.2, _poll_graph_click) + graph_timer = ui.timer(0.2, _poll_graph_click) def _render_graphviz(dot_source: str, selected_node_id: str | None = None):