From 2869da83c06ae322620c1bf59696d4889d640e9a Mon Sep 17 00:00:00 2001 From: Schalli Date: Thu, 2 Jul 2026 08:57:44 +0200 Subject: [PATCH] chore: planning artifacts + mcp.json update - .mcp.json: Playwright MCP config - 08-UAT.md: Phase 8 UAT results - quick task summaries: 260630 user-settings, 260701 calendar domain Co-Authored-By: Claude Sonnet 4.6 --- .mcp.json | 2 +- .../08-UAT.md | 68 +++++++++++++++++++ .../quick/260630-smtp-admin-move/PLAN.md | 19 ++++++ .../quick/260630-user-settings-bugfix/PLAN.md | 37 ++++++++++ .../260630-user-settings-bugfix/SUMMARY.md | 18 +++++ .../SUMMARY.md | 9 +++ 6 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 .planning/phases/08-dashboard-widgets-vollimplementierung/08-UAT.md create mode 100644 .planning/quick/260630-smtp-admin-move/PLAN.md create mode 100644 .planning/quick/260630-user-settings-bugfix/PLAN.md create mode 100644 .planning/quick/260630-user-settings-bugfix/SUMMARY.md create mode 100644 .planning/quick/260701-calendar-domain-test-button/SUMMARY.md diff --git a/.mcp.json b/.mcp.json index 259a959..8eb1e1a 100644 --- a/.mcp.json +++ b/.mcp.json @@ -2,7 +2,7 @@ "mcpServers": { "playwright": { "command": "npx", - "args": ["@playwright/mcp@latest"] + "args": ["@playwright/mcp@latest", "--executable-path", "/bin/chromium"] } } } diff --git a/.planning/phases/08-dashboard-widgets-vollimplementierung/08-UAT.md b/.planning/phases/08-dashboard-widgets-vollimplementierung/08-UAT.md new file mode 100644 index 0000000..cbfdd41 --- /dev/null +++ b/.planning/phases/08-dashboard-widgets-vollimplementierung/08-UAT.md @@ -0,0 +1,68 @@ +--- +status: testing +phase: 08-dashboard-widgets-vollimplementierung +source: [08-01-SUMMARY.md, 08-02-SUMMARY.md, 08-03-SUMMARY.md, 08-04-SUMMARY.md] +started: 2026-07-01T09:20:00Z +updated: 2026-07-01T09:20:00Z +--- + +## Current Test + +number: 1 +name: Widget-Katalog — alle 8 Typen sichtbar +expected: | + Öffne den Dashboard-Widget-Katalog ("+"-Button im Dashboard). + Der Katalog zeigt alle 8 Widget-Typen: Clock, Search, Calendar, Note, + Calculator, Favorites, Link, Stopwatch — mit je einem Icon und Label. +awaiting: user response + +## Tests + +### 1. Widget-Katalog — alle 8 Typen sichtbar +expected: Öffne den Widget-Katalog (+/Hinzufügen-Button im Dashboard). Alle 8 Typen erscheinen: Clock, Search, Calendar, Note, Calculator, Favorites, Link, Stopwatch — jeweils mit Icon und Label. +result: [pending] + +### 2. Calculator Widget — Grundrechenarten +expected: Füge ein Calculator-Widget zum Dashboard hinzu. Rechne 7+3 → Anzeige zeigt 10. Rechne 8×2 → 16. Dividiere 5÷0 → Anzeige zeigt "Fehler". Dezimalkomma: 1,5+1,5 → 3. +result: [pending] + +### 3. Calculator Widget — Tastatureingabe + Memory +expected: Klicke in das Calculator-Widget. Gib via Tastatur ein: 5*6 dann Enter → 30. Memory-Buttons: MS speichert, MR ruft zurück, MC löscht, M+/M− addieren/subtrahieren. Tastaturdruck landet NUR im Rechner, nicht im Dashboard-Grid. +result: [pending] + +### 4. Stopwatch Widget — Start/Stop/Lap/Reset +expected: Füge ein Stopwatch-Widget hinzu. Klicke Start → Timer läuft (Zeitanzeige zählt). Klicke Lap → aktueller Wert erscheint in der Rundenliste (neueste oben). Klicke Stop → Timer friert ein. Klicke Reset → Anzeige zurück auf 00:00, Rundenliste leer. +result: [pending] + +### 5. Stopwatch Widget — Reload-Persistenz +expected: Starte die Stoppuhr und lass sie ~5 Sekunden laufen. Lade die Seite neu (F5). Die Stoppuhr zeigt sofort den korrekten, weitergelaufenen Wert (~5s + Ladezeit) — kein Zurückspringen auf 00:00. +result: [pending] + +### 6. Favorites Widget — CRUD +expected: Füge ein Favorites-Widget hinzu. Im Edit-Modus: Füge einen Favoriten mit Titel und URL hinzu → erscheint in der Liste. Klicke Bearbeiten → Inline-Formular öffnet, ändere Titel, speichern → aktualisierter Titel. Klicke Löschen → Eintrag verschwindet aus der Liste. +result: [pending] + +### 7. Favorites Widget — Ansicht + Buchstaben-Fallback +expected: Im Favorites-Widget (Edit-Modus): wechsle zwischen Listen- und Kachelansicht — beide Ansichten zeigen die Favoriten korrekt. Bei einem Favoriten ohne Icon wird der erste Buchstabe des Titels als Fallback angezeigt (kein kaputtes Bild-Icon). +result: [pending] + +### 8. Link Widget — Einzelnen Link hinzufügen + anzeigen +expected: Füge ein Link-Widget hinzu. Im Edit-Modus: Trage Titel und URL ein, speichern → Link erscheint als klickbarer Eintrag (öffnet in neuem Tab). Ohne Icon: Buchstaben-Fallback sichtbar. +result: [pending] + +### 9. Link Widget — Einzellink-Enforcement + Bearbeiten + Ansichtswechsel +expected: Im Link-Widget mit bestehendem Link: das Hinzufügen-Formular erscheint NICHT (nur ein Link erlaubt). Klicke Bearbeiten → Inline-Formular, Änderungen speichern. Wechsle zwischen Listen- und Kachelansicht (Edit-Modus) → beide zeigen den Link korrekt. +result: [pending] + +## Summary + +total: 9 +passed: 0 +issues: 0 +pending: 9 +skipped: 0 +blocked: 0 + +## Gaps + +[none yet] diff --git a/.planning/quick/260630-smtp-admin-move/PLAN.md b/.planning/quick/260630-smtp-admin-move/PLAN.md new file mode 100644 index 0000000..6dfa921 --- /dev/null +++ b/.planning/quick/260630-smtp-admin-move/PLAN.md @@ -0,0 +1,19 @@ +--- +slug: smtp-admin-move +title: "SMTP aus Benutzereinstellungen in Admin verschieben" +created: 2026-06-30 +status: in-progress +--- + +# SMTP aus Benutzereinstellungen in Admin verschieben + +## Goal +SMTP-Konfiguration gehört in den Admin-Bereich, nicht in Benutzereinstellungen. + +## Tasks + +- [ ] 1. `settings-sidebar.tsx` — SMTP-Link entfernen +- [ ] 2. `admin-sidebar.tsx` — SMTP-Eintrag hinzufügen (Mail-Icon) +- [ ] 3. `apps/web/src/app/(portal)/admin/smtp/page.tsx` — neue Admin-Seite erstellen +- [ ] 4. `apps/web/src/app/(portal)/settings/general/smtp/page.tsx` — löschen +- [ ] 5. `de.json` + `en.json` — `header.admin.smtp: 'SMTP'` hinzufügen diff --git a/.planning/quick/260630-user-settings-bugfix/PLAN.md b/.planning/quick/260630-user-settings-bugfix/PLAN.md new file mode 100644 index 0000000..decacbe --- /dev/null +++ b/.planning/quick/260630-user-settings-bugfix/PLAN.md @@ -0,0 +1,37 @@ +--- +slug: user-settings-bugfix +date: 2026-06-30 +status: in-progress +--- + +# User Settings Bug Fixes + +Fix two bugs found during Playwright verification of the account settings page. + +## Bug 1: Stale password error message + +**Problem:** After a failed password submit (e.g. wrong current password), the error message stays visible while the user types new values. It only disappears on the next submit. + +**Fix:** Add `onChange` handlers to all three password inputs in `account-settings-form.tsx` that clear `pwError` and `pwMismatch` state when the user starts typing. + +**File:** `apps/web/src/components/settings/account-settings-form.tsx` + +## Bug 2: Header avatar no live update + +**Problem:** After successful avatar upload, the avatar in the account settings form updates immediately, but the small header avatar (top-right) still shows the "A" initial until page reload. The header reads `user.hasAvatar` from the Zustand auth store, which is never updated after upload. + +**Fix:** +1. Add `avatarVersion: number` and `bumpAvatarVersion: () => void` to `auth-store.ts` +2. In `account-settings-form.tsx`: after successful upload, call `bumpAvatarVersion()` AND update `user.hasAvatar = true` in the store via `setUser` +3. In `header.tsx`: use `avatarVersion` from the store as a cache-busting query param on the avatar img src + +**Files:** +- `apps/web/src/lib/stores/auth-store.ts` +- `apps/web/src/components/settings/account-settings-form.tsx` +- `apps/web/src/components/layout/header.tsx` + +## Tasks + +- [ ] auth-store: add avatarVersion + bumpAvatarVersion +- [ ] account-settings-form: clear errors on input change; call bumpAvatarVersion + update store hasAvatar on upload success +- [ ] header: use avatarVersion as cache-busting param in avatar img src diff --git a/.planning/quick/260630-user-settings-bugfix/SUMMARY.md b/.planning/quick/260630-user-settings-bugfix/SUMMARY.md new file mode 100644 index 0000000..38a5e98 --- /dev/null +++ b/.planning/quick/260630-user-settings-bugfix/SUMMARY.md @@ -0,0 +1,18 @@ +--- +slug: user-settings-bugfix +status: complete +date: 2026-06-30 +commit: 88db54f +--- + +# Summary + +Fixed two UX bugs in the account settings page found via Playwright verification. + +## Bug 1: Stale password error cleared +Added `onChange` handlers to all three password inputs. `pwError` and `pwMismatch` now reset on first keystroke — no longer visible while user types new values between submits. + +## Bug 2: Header avatar live update +- Added `avatarVersion: number` + `bumpAvatarVersion()` to `auth-store.ts` +- After successful upload: `bumpAvatarVersion()` + `setUser({...user, hasAvatar: true})` +- Header `` src uses `?v={avatarVersion}` — forces browser re-fetch when version bumps diff --git a/.planning/quick/260701-calendar-domain-test-button/SUMMARY.md b/.planning/quick/260701-calendar-domain-test-button/SUMMARY.md new file mode 100644 index 0000000..3985ab9 --- /dev/null +++ b/.planning/quick/260701-calendar-domain-test-button/SUMMARY.md @@ -0,0 +1,9 @@ +--- +slug: calendar-domain-test-button +status: complete +completed: "2026-07-01" +commit: 42daa87 +--- + +Domain-Feld (Exchange-only) und "Verbindung testen"-Button zu Kalenderquellen-Form hinzugefügt. +12 Dateien, 214 Insertions. TypeScript clean.