diff --git a/.planning/.continue-here.md b/.planning/.continue-here.md
deleted file mode 100644
index ea419bf..0000000
--- a/.planning/.continue-here.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-context: default
-phase: quick-auftraege-1.7.x (keine GSD-Phase)
-task: 2
-total_tasks: 2
-status: in_progress
-last_updated: 2026-09-29T14:30:00.000Z
----
-
-# BLOCKING CONSTRAINTS — Read Before Anything Else
-
-- [ ] CONSTRAINT: live NICHT pushen/taggen, bis der User es verlangt.
-- [ ] CONSTRAINT: Gebündelt pushen, nicht nach jeder Kleinigkeit.
-- [ ] CONSTRAINT: Browser-Prüfungen im Dunkelmodus.
-
-
-main = e72814a (gepusht, CI lief beim Pausieren), alpha zuletzt 8c644de, live = v1.7.0 (d0e649b). Arbeitsbaum sauber.
-
-
-
-- v1.6.0 + v1.7.0 freigegeben (alpha+live).
-- Danach auf main: Update-Klick prüft frisch (41d00a3, Fehler mit altem Client in VM reproduziert), eigene Module ohne Kopfzeile (cd1f8f6), Erinnerungen-Widget 260929-if2 (Browser inkl. echter Mail über MailHog bestanden, Verifier human_needed nur wegen Windows-Toast), Favoriten-Symbol-Fix 260929-lh3.
-- Plattenpflege: ~/bin/disk-cleanup.sh (cron 3:30 + stündlich ab 80 %), ~/bin/registry-cleanup.py.
-
-
-
-- CI e72814a prüfen, User alpha ziehen lassen.
-- Windows-VM 8233 (Zugang: Memory reference_windows_test_vm; Tunnel setsid socat :8017): Client 41d00a3 an alpha -> Tray „Auf … aktualisieren“ muss ohne Signaturfehler installieren; dann Erinnerung in 3 Min, Fenster schließen (Infobereich) -> Windows-Toast „Erinnerung: …“ binnen ~1 Min.
- - Kein alpha-Login bekannt: entweder User fragen oder lokalen Stack nutzen: in der VM Admin-Terminal `netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=3000 connectaddress=192.168.13.11 connectport=3000`, App-Server auf http://localhost:3000 (Secure-Cookies nur auf localhost), admin/admin123; danach portproxy löschen und App zurück auf https://alpha.tessera.ctl.de. Achtung: Toast braucht auch lokal den neuen Client (e72814a-Paket aus api:beta per docker cp).
-- Offen/unklar: Benutzerliste im Client auf alpha („konnte nicht geladen werden“) – keine Serverfehler, lokal ok; nachfragen, falls es wieder auftaucht.
-- Morgen: df -h / und ~/.local/state/disk-cleanup.log prüfen (Registry-GC in der Nacht).
-
-
-
-CI-Status e72814a holen, dann User um alpha-Pull bitten und Windows-VM-Test fahren.
-
diff --git a/.planning/HANDOFF.json b/.planning/HANDOFF.json
deleted file mode 100644
index d99d1e3..0000000
--- a/.planning/HANDOFF.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "version": "1.0",
- "timestamp": "2026-09-29T14:30:00.000Z",
- "phase": null,
- "phase_name": "Quick-Auftraege nach Freigabe 1.7.0 (keine GSD-Phase)",
- "phase_dir": null,
- "plan": null,
- "task": 2,
- "total_tasks": 2,
- "status": "paused",
- "completed_tasks": [
- {"id": 1, "name": "Freigaben v1.6.0 (cd4b5b5) und v1.7.0 (d0e649b) auf alpha+live; danach auf main (alpha): Update-Klick prueft frisch (41d00a3), eigene Module ohne Kopfzeile (cd1f8f6), Erinnerungen-Widget 260929-if2 (325c5dd,709b41a,6879c75), Favoriten-Symbol-Fix 260929-lh3 (7188c5b,b15c746,0e72ad4)", "status": "done", "commit": "e72814a"}
- ],
- "remaining_tasks": [
- {"id": 2, "name": "Windows-VM-Test: (a) Update ueber Tray auf neuen Stand (Signatur-Fix 41d00a3), (b) Windows-Toast des Erinnerungen-Widgets auch aus dem Infobereich", "status": "not_started"}
- ],
- "blockers": [],
- "async_jobs": [],
- "human_actions_pending": [
- {"action": "CI-Lauf fuer e72814a pruefen (main), danach User bitten, alpha zu ziehen: cd /opt/tessera && docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d --force-recreate web api", "context": "Push um ca. 16:30 Uhr; alpha lief zuletzt auf 8c644de", "blocking": false},
- {"action": "live bleibt auf v1.7.0 bis der User eine Freigabe verlangt (\"live noch nicht pushen\")", "context": "naechste Version waere 1.8.0 (neue Funktion Erinnerungen)", "blocking": true}
- ],
- "decisions": [
- {"decision": "Gebuendelt pushen, nicht jede Kleinigkeit (Memory feedback_push_gebuendelt)", "rationale": "User 29.09.", "phase": "quick"},
- {"decision": "Erinnerungen: einmalig, keine Vorwarnung, Erledigt loescht, Spaeter erinnern 10 Min/1 Std/morgen, Browser-Hinweis ja, E-Mail genau einmal (max 3 Versuche)", "rationale": "AskUserQuestion 29.09.", "phase": "quick"},
- {"decision": "Desktop-Notification per Laufzeit-Capability nur fuer die gespeicherte Server-Origin (3 notification-Rechte), Pattern escaped und vorab geprueft", "rationale": "Plan 260929-if2 E-01", "phase": "quick"},
- {"decision": "macOS-Client zurueckgestellt, nicht vorschlagen", "rationale": "User 29.09.", "phase": "quick"}
- ],
- "uncommitted_files": [],
- "next_action": "CI fuer e72814a pruefen, alpha ziehen lassen, dann Windows-VM 8233: Client 41d00a3 bietet Update auf e72814a an -> Klick muss ohne Signaturfehler installieren; danach Erinnerung in 3 Min, Fenster in den Infobereich, Windows-Toast abwarten. Login alpha: User fragen oder portproxy-Trick gegen lokalen Stack (localhost:3000 via netsh, siehe .continue-here.md).",
- "context_notes": "alpha = 8c644de (vor Pull), main = e72814a, live = d0e649b (v1.7.0). Platte ~68 %; cron 3:30 + stuendlicher Waechter >80 % (~/bin/disk-cleanup.sh, registry-cleanup.py); heute Nacht sollen ~25-30 GB Registry-Blobs frei werden -> morgen df pruefen. Alpha SMTP-Absender war falsch, vom User korrigiert. Benutzerliste im Client (Admin > Benutzer) meldete Fehler auf alpha; Serverlogs zeigten nichts, lokal ok; Frage an User (Browser? Konto?) unbeantwortet, User hat Thema nicht weiter verfolgt."
-}
diff --git a/.planning/STATE.md b/.planning/STATE.md
index 528272c..ebbd347 100644
--- a/.planning/STATE.md
+++ b/.planning/STATE.md
@@ -6,7 +6,7 @@ current_phase_name: desktop-client-fertigstellen
status: verified
stopped_at: "22.09.2026: 1.3.0 freigegeben; danach quick-260922-hk4 — Bilderrahmen-Bilder liegen jetzt im Dateibereich (user-files) statt in der Datenbank, Umzug laeuft automatisch beim Start, Selbstheilung aus der alten data-Spalte eingebaut; im Browser nachgewiesen. NAECHSTER SCHRITT, vom Nutzer noch nicht bestaetigt: (1) einmaliges Aufraeumen, damit ein Modul seine Dashboard-Kachel selbst mitbringt (heute sieben Hartkodierungen je Kachel; Katalog zeigt auch Kacheln gesperrter Module; gesperrte Kachel bleibt leer statt zu erklaeren) — das Geruest WIDGET_MODULE_MAP existiert und ist leer; (2) danach das Proxmox-Modul (PVE/PBS/PMG) und seine Kachel. Offen beim Nutzer: Live-Server auf 1.3.0 ziehen, neuen Client per Browser installieren."
last_updated: "2026-09-23T15:30:00.000Z"
-last_activity: 2026-09-23
+last_activity: 2026-09-30
last_activity_desc: Quick 260928-ujj — Design Mosaik uebernommen, Hintergrund pro Benutzer in der DB; Freigabe 1.5.0
state_head: 4d485432c003a6caf68f6d85aff7de0bd27794e2
progress:
@@ -31,7 +31,7 @@ See: .planning/PROJECT.md (updated 2026-07-17)
Phase: 18 (desktop-client-fertigstellen) — COMPLETE (2026-09-17, Verifikation passed, Windows-Bedienprobe bestanden)
Plan: 6 of 6
Status: Alle 18 Phasen abgeschlossen; Version 1.2.0 freigegeben. Kein laufender Meilenstein. Nach 1.2.0 auf main (Beta): Bildmarke in Akzentfarbe, CI-Desktop-Skip, Favoriten-Symbol/-Sortierung, Desktop-Server-Adresse, Update in der App (signiert), Versionszeile auf der Setup-Seite — alles verifiziert und auf VM/CI nachgewiesen
-Last activity: 2026-09-29 - Quick 260929-if2 Erinnerungen-Widget (lokal, nicht gepusht); v1.7.0 auf alpha+live
+Last activity: 2026-09-30 - Windows-Test (Tray-Update + Erinnerungs-Toast) bestanden; Review aller Aenderungen seit 26.09. mit 4 Fix-Commits (be1e003, c2e4467, 0710829, 12214a9)
Progress: [██████████] 99%