fix(quick-save): Firefox-importScripts-Guard (Event-Page), Sync-Guard auf reale Overlay/Drag-Klassen, Worker-Serialisierung + interne-URL-Filter + kurzer Fehler-Badge

This commit is contained in:
2026-06-14 14:14:31 +02:00
parent a37f34eeac
commit 5feadcc90c
2 changed files with 27 additions and 17 deletions
+6 -6
View File
@@ -241,12 +241,12 @@ function bindStorageSync() {
if (area !== 'local' || !changes.boards) return;
const next = changes.boards.newValue;
if (!Array.isArray(next)) return;
// Guard (W-c): nicht mitten in einer offenen Interaktion das boards-Array ersetzen und
// neu rendern. Ein offener Dialog (Delete/Edit) haelt evtl. eine board-Referenz per Closure;
// ein laufender Board-Drag (Phase 5) wuerde durch renderBoards() (replaceChildren) abgerissen.
// In dem Fall den Sync verwerfen — der naechste eigene Save/Render zieht den Stand nach.
if (document.querySelector('.dialog-overlay.active') ||
document.body.classList.contains('board-dragging')) return;
// Guard (W-c, nach Phase-4-Review auf REALE Klassen korrigiert): nicht mitten in einer offenen
// Interaktion das boards-Array ersetzen und neu rendern, sonst verwaist eine per-Closure gehaltene
// board-Referenz oder ein laufender Drag/Render wird abgerissen. Abgedeckt: Settings (.panel-overlay),
// Modals Add-Board/Add-Bookmark/Rename (.modal-overlay), HellionDialog/Onboarding (.dialog-overlay),
// Board-Drag (.board.dragging), Bookmark-Drag (.bm-item.dragging-source).
if (document.querySelector('.panel-overlay.active, .modal-overlay.active, .dialog-overlay.active, .board.dragging, .bm-item.dragging-source')) return;
boards = next;
renderBoards();
});