Fix: Blur greift sofort beim Anlegen einer neuen Lage

Im Create-Flow wurde .blurred in selectIncident() erst entfernt und gleich
darauf via _showPopupProgress wieder gesetzt. CSS filter:blur greift in der
Kombination (frischer isFirst-State + selectIncident im selben Tick + viel
vorausgehende DOM-Manipulation durch Modal-Close + renderSidebar) nicht
zuverlaessig im selben Frame — der Fall war bis zum Wegklicken/Zurueckklicken
unblurred.

selectIncident: remove("blurred") wird uebersprungen, wenn der zustaendige
Progress-State isFirst=true und nicht minimiert ist (Blur soll bestehen
bleiben statt remove+add im selben Tick).

createIncident: zusaetzlich requestAnimationFrame mit grid.classList.add im
naechsten Frame, falls der Browser den ersten add-Aufruf in selectIncident
nicht visuell uebernommen hat. Doppeltes Setzen ist idempotent.

dashboard.html: cache-bust app.js auf v=20260427a.
Dieser Commit ist enthalten in:
Claude Code
2026-04-27 19:29:00 +00:00
Ursprung d1f88c9e9f
Commit 2ee90a4b3b
2 geänderte Dateien mit 15 neuen und 2 gelöschten Zeilen

Datei anzeigen

@@ -628,7 +628,7 @@
<script src="/static/js/ws.js?v=20260316b"></script>
<script src="/static/js/components.js?v=20260316d"></script>
<script src="/static/js/layout.js?v=20260316b"></script>
<script src="/static/js/app.js?v=20260423a"></script>
<script src="/static/js/app.js?v=20260427a"></script>
<script src="/static/js/cluster-data.js?v=20260322f"></script>
<script src="/static/js/tutorial.js?v=20260316z"></script>
<script src="/static/js/chat.js?v=20260422a"></script>

Datei anzeigen

@@ -736,7 +736,12 @@ const App = {
const prevMini = document.getElementById('progress-mini');
if (prevMini) prevMini.style.display = 'none';
const grid = document.querySelector('.tab-panels');
if (grid) grid.classList.remove('blurred');
// Blur nur entfernen, wenn er nicht direkt danach wieder gesetzt wird.
// Beim Create-Flow (frischer isFirst-State + selectIncident im selben
// Tick) greift CSS filter:blur sonst nicht im selben Frame.
const _restState = isRefreshing ? UI._progressState[id] : null;
const _willReBlur = _restState && _restState.isFirst && !_restState.minimized;
if (grid && !_willReBlur) grid.classList.remove('blurred');
if (isRefreshing) {
const state = UI._progressState[id];
@@ -1778,6 +1783,14 @@ const App = {
await this.selectIncident(incident.id);
// Im Create-Flow greift CSS filter:blur nach dem viel DOM-Reshuffle
// (Modal-Close, renderSidebar, Tab-Wechsel) im selben Frame nicht
// zuverlaessig. Im naechsten Frame nochmal setzen — Aufwand minimal.
requestAnimationFrame(() => {
const _grid = document.querySelector('.tab-panels');
if (_grid) _grid.classList.add('blurred');
});
this._updateRefreshButton(true);
await API.refreshIncident(incident.id);
UI.showToast(`Lage "${incident.title}" angelegt. Recherche gestartet.`, 'success');