--- phase: quick-260916-hiv plan: 01 subsystem: ui tags: [next-intl, i18n, react, calendar, form] requires: [] provides: - "Typabhaengiger URL-Platzhalter im Kalenderquellen-Formular (CalDAV/ICS/Exchange-Graph/Exchange-EWS)" - "Grauer EWS-Hinweis unter dem Adressfeld, nur bei Exchange + EWS, unterhalb eines eventuellen Fehlers" - "Fuenf neue i18n-Schluessel unter widgets.calendar (de/en, identische Platzhalter, uebersetzter Hinweis)" affects: [dashboard-calendar-widget, calendar-source-form] actuals: tokens: 2402 tasks: 3 commits: 3 plan_head_before: a5f30d4 tech-stack: added: [] patterns: [] key-files: created: - apps/web/src/components/settings/calendar-source-form.test.tsx modified: - apps/web/src/components/settings/calendar-source-form.tsx - apps/web/src/messages/de.json - apps/web/src/messages/en.json - CHANGELOG.md key-decisions: - "Der EWS-Hinweis steht IMMER unter dem Feld bei Exchange+EWS (nicht nur wenn fehlerfrei) und bei einem Fehler UNTER dem Fehlertext, wie in der Planvorgabe festgelegt." - "Die vier Beispiel-URLs sind in de.json und en.json bewusst identisch (Beispiel-Adressen, kein zu uebersetzender Fliesstext); nur der Hinweistext ist uebersetzt." patterns-established: [] requirements-completed: [QUICK-260916-HIV] coverage: - id: D1 description: "URL-Feld zeigt je Typ das vorgegebene Platzhalter-Beispiel (EWS/Graph/CalDAV/ICS), ohne Typ weiterhin https://" requirement: "QUICK-260916-HIV" verification: - kind: unit ref: "apps/web/src/components/settings/calendar-source-form.test.tsx#Test 1-5" status: pass human_judgment: false - id: D2 description: "Grauer EWS-Hinweis erscheint nur bei Exchange+EWS, unterhalb eines eventuellen Fehlers" requirement: "QUICK-260916-HIV" verification: - kind: unit ref: "apps/web/src/components/settings/calendar-source-form.test.tsx#Test 5-6" status: pass human_judgment: false - id: D3 description: "de.json und en.json tragen dieselben fuenf neuen Schluessel, Umlaut-Waechter bleibt gruen, keine kundenspezifische Domain" requirement: "QUICK-260916-HIV" verification: - kind: unit ref: "apps/web/src/messages/umlaut-guard.spec.ts" status: pass human_judgment: false - id: D4 description: "CHANGELOG.md: Eintrag unter Unveroeffentlicht / Geaendert" requirement: "QUICK-260916-HIV" verification: - kind: unit ref: "apps/web/src/lib/changelog.test.ts" status: pass human_judgment: false duration: 3min completed: 2026-09-16 status: complete --- # Quick 260916-hiv: Kalenderquellen-Formular — URL-Platzhalter je Typ Summary **Adressfeld im Kalenderquellen-Formular zeigt jetzt je nach Typ ein passendes Beispiel (EWS/Graph/CalDAV/ICS) und bei Exchange-EWS einen grauen Hinweis, dass die vollstaendige Adresse inkl. `/EWS/Exchange.asmx` noetig ist.** ## Performance - **Duration:** ~3 min - **Started:** 2026-09-16T12:44:00+02:00 (approx.) - **Completed:** 2026-09-16T12:47:25+02:00 - **Tasks:** 3 - **Files modified:** 5 (2 neu, davon 1 Testdatei; 3 geaendert) ## Accomplishments - URL-Feld im Kalenderquellen-Formular zeigt einen typabhaengigen Beispiel-Platzhalter statt des festen `https://` (CalDAV, ICS, Exchange-Graph, Exchange-EWS), solange kein Typ gewaehlt ist bleibt es bei `https://`. - Bei Exchange + EWS erscheint ein grauer Hinweis (`text-xs text-muted-foreground`) unter dem Feld, der auf die noetige vollstaendige EWS-Adresse hinweist; bei einem gleichzeitigen Validierungsfehler steht der Hinweis unterhalb des Fehlertextes. - Fuenf neue Uebersetzungsschluessel (`widgets.calendar.formFieldUrlPlaceholderEws|Graph|Caldav|Ics`, `formFieldUrlHintEws`) in de.json und en.json, Platzhalter identisch in beiden Sprachen, Hinweistext uebersetzt, keine kundenspezifische Domain. - Neuer Komponententest `calendar-source-form.test.tsx` mit 6 Faellen (TDD: erst rot, dann gruen durch die Implementierung). - CHANGELOG.md-Eintrag unter „Unveroeffentlicht“ → „Geaendert“. ## Task Commits Each task was committed atomically: 1. **Task 1: Fuenf Uebersetzungsschluessel in de.json und en.json** - `618fbd6` (feat) 2. **Task 2: Typabhaengiger Platzhalter + EWS-Hinweis in der Komponente, mit Komponententest** - `2306a6d` (feat, TDD: Test + Implementierung in einem Commit nach rot→gruen) 3. **Task 3: Changelog-Eintrag unter Unveroeffentlicht / Geaendert** - `9439c33` (docs) **Plan metadata:** wird vom Orchestrator nach diesem SUMMARY committet (siehe Constraints — SUMMARY/STATE nicht selbst committen) ## Files Created/Modified - `apps/web/src/messages/de.json` - fuenf neue Schluessel unter `widgets.calendar` - `apps/web/src/messages/en.json` - dieselben fuenf Schluessel - `apps/web/src/components/settings/calendar-source-form.tsx` - `urlPlaceholder`-Ableitung, `placeholder={urlPlaceholder}`, EWS-Hinweisabsatz, Doku-Kommentar ergaenzt - `apps/web/src/components/settings/calendar-source-form.test.tsx` - neu, 6 Testfaelle - `CHANGELOG.md` - Eintrag unter Unveroeffentlicht / Geaendert ## Decisions Made - Der EWS-Hinweis ist bei Exchange+EWS immer sichtbar und steht bei einem Fehler unter dem Fehlertext (Plan-Vorgabe, eine von zwei erlaubten Varianten). - Platzhalter-Werte sind in de.json und en.json identisch (Beispiel-Adressen, kein Fliesstext), nur der Hinweistext ist uebersetzt. ## Deviations from Plan None - plan executed exactly as written. Alle Datei- und Zeilen-Annahmen aus dem Plankontext (Zeilennummern, Schluesselreihenfolge) haben exakt gepasst; keine Rule-1/2/3/4-Faelle aufgetreten. ## Issues Encountered None. ## User Setup Required None - keine externe Konfiguration noetig. ## Next Phase Readiness - Kein Docker-Bau, kein Deploy in diesem Auftrag — der User zieht den naechsten Pull selbst und prueft im Browser auf der Beta. - Keine offenen Punkte fuer diesen Auftrag. --- *Phase: quick-260916-hiv* *Completed: 2026-09-16* ## Self-Check: PASSED Alle fuenf Dateien vorhanden (calendar-source-form.test.tsx, calendar-source-form.tsx, de.json, en.json, CHANGELOG.md); alle drei Task-Commits (618fbd6, 2306a6d, 9439c33) in der Historie gefunden.