diff --git a/src/static/dashboard.html b/src/static/dashboard.html index 0ce9484..0ad8ebb 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -626,9 +626,9 @@ - + - + diff --git a/src/static/js/app.js b/src/static/js/app.js index 95dcf4e..1d94dfa 100644 --- a/src/static/js/app.js +++ b/src/static/js/app.js @@ -752,14 +752,6 @@ const App = { UI._showPopupProgress(state.step, {}, state); } UI._lockActionsIfFirst(state.isFirst); - // _showPopupProgress setzt .blurred bereits, aber CSS filter - // greift nach dem grossen DOM-Reshuffle (Display-Toggle, - // renderSidebar, leerge innerHTML) im selben Frame nicht - // zuverlaessig. Im naechsten Frame nochmal setzen — - // idempotent, falls schon gesetzt. - if (state.isFirst && grid && !state.minimized) { - requestAnimationFrame(() => grid.classList.add('blurred')); - } } else { // No state yet — show popup (first status update will refine) UI.showProgress('researching', {}, id, false); diff --git a/src/static/js/components.js b/src/static/js/components.js index a58fb21..5a05c8c 100644 --- a/src/static/js/components.js +++ b/src/static/js/components.js @@ -336,7 +336,16 @@ const UI = { overlay.classList.add('blocking'); // Apply blur to grid const grid = document.querySelector('.tab-panels'); - if (grid) grid.classList.add('blurred'); + if (grid) { + grid.classList.add('blurred'); + // Sicherheitsnetz: bei viel DOM-Reshuffle im selben Tick + // (Display-Wechsel, renderSidebar, leere innerHTML) greift + // CSS filter:blur erst beim naechsten Layout-Pass. Im + // naechsten Frame nochmal setzen — idempotent. + requestAnimationFrame(() => { + if (state && state.isFirst) grid.classList.add('blurred'); + }); + } } else { overlay.classList.remove('blocking'); }