From a60c1685879ed0d4393d7268995371c7a7fb2156 Mon Sep 17 00:00:00 2001 From: Schalli Date: Wed, 16 Sep 2026 12:49:28 +0200 Subject: [PATCH] =?UTF-8?q?docs(quick-260916-hiv):=20Kalenderquellen-Formu?= =?UTF-8?q?lar=20=E2=80=94=20URL-Platzhalter=20je=20Typ=20+=20EWS-Hinweis;?= =?UTF-8?q?=20Zusammenfassung,=20Aktenstand?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) --- .planning/STATE.md | 3 +- .../260916-hiv-SUMMARY.md | 140 ++++++++++++++++++ 2 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 .planning/quick/260916-hiv-kalenderquellen-formular-url-platzhalter/260916-hiv-SUMMARY.md diff --git a/.planning/STATE.md b/.planning/STATE.md index a5616cb..0fa74ff 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -410,6 +410,7 @@ Gerettet aus `.continue-here.md`. Relevant fuer die noch offenen Live-Tests. | 260916-bwo | **Dashboard — feineres Raster, skalierende Widget-Inhalte, halbe Abstaende.** Raster verdoppelt (COLS 24/20/12/8/2, rowHeight 20, margin 8; WIDGET_CONSTRAINTS x2), gespeicherte Anordnungen einmalig x2 mit Marker `__gridVersion: 2` (nur im JSON, `migrateGridLayouts`/`withGridVersion`, idempotent). Widget-Rumpf `container-type: size`; Uhr/Stoppuhr/Rechner skalieren per Container-Queries; Uhr mit `timeFontSizePt` (leer = automatisch, 8..200 = fest in pt) und Feld in Einstellungen -> Dashboard -> Widgets. Abstaende halbiert: `app-shell` p-6 -> p-3 (alle Seiten, User-Nachtrag), Dashboard p-2, Grid 8 px, Widget-Innenabstaende; `mt-8` bleibt (Umschalter-Hoehe). Anwenderhandbuch. Tests Web 260 -> 286 / 46 Dateien, API 1076 -> 1078, tsc 0, 29 Dateien gegen 5f50c5f, vier Commits, CI-Lauf 351 gruen, Beta-Abbild `v1.0.0-10-g1aefaa3`. Browser-Beweis durch den Orchestrator: SQL-Probe in alten Einheiten -> DB verdoppelt + Marker; Rand 28 px (vorher 56), Abstand 8 px (vorher 16), main 12 px; Uhr 51 px -> 107 px beim Vergroessern; 36 pt = 48 px fest. Verifiziert 8/8 + Browser, gepusht. | 2026-09-16 | 3f5afb0,2d8efe1,a175c00,1aefaa3 | [260916-bwo-dashboard-feineres-raster-spalten-und-ze](./quick/260916-bwo-dashboard-feineres-raster-spalten-und-ze/) | | 260916-dyv | **Dashboard-Nachbesserung nach User-Test.** Mindestgroessen inhaltsgetrieben (clock 2/2, search 6/2, calendar 3/3, note 4/4, calculator 3/10 — vom Orchestrator im Browser von 9 auf 10 korrigiert, sechs Tastenreihen —, favorites 3/3, link 3/2, stopwatch 4/3 mit kompakter Bedienleiste), gespeicherte Layout-Eintraege bekommen minW/minH aus den Konstanten und zu kleine w/h werden angehoben (`applyConstraintMinima`, Test 9/9b). Bearbeiten-Schalter in feste Leiste unten rechts, `mt-8` weg: Rand oben 28 px statt 60. Drag & Drop: ganze Kachel als Griff mit Overlay-Kopfleiste, `dragConfig.cancel` (Eingaben, Knoepfe, .widgetNoDrag, Resize-Griff), `preventCollision: true` mit `noCompactor` (Ablegen auf belegtem Raum stoppt am Nachbarn, kein Ueberlappen). Anwenderhandbuch. Tests Web 286 -> 294 / 47 Dateien, API 67/1078, tsc 0, 12 Dateien gegen df16f46 + Fix 8792819; CI-Laeufe 353 und der Fix-Lauf gruen. Browser-Beweis: 28 px, Uhr 126x48, Ziehen an Kachelmitte, Suchfeld ohne Drag, Kollision stoppt, Rechner 272 px ohne Ueberlauf. Ledger #39 fixed. Verifiziert 6/6 + Browser, gepusht. | 2026-09-16 | dc992c9,dbbd54f,cf97b5b,8792819 | [260916-dyv-dashboard-nachbesserung-mindestgroessen-](./quick/260916-dyv-dashboard-nachbesserung-mindestgroessen-/) | | 260916-dcz | **Aenderungsliste.** `CHANGELOG.md` (Keep-a-Changelog, Alltagssprache, echte Umlaute: `## Unveröffentlicht` mit Neu/Geändert/Behoben, `## 1.0.0 – 2026-09-15` mit 11 Punkten); Seite "Was ist neu" unter `/changelog` (Server-Komponente, Text zur Bauzeit ueber `env.TESSERA_CHANGELOG_MD` in next.config.ts, nur im Server-Bundle; Kanalfilter `filterChangelogForChannel`: live ohne Unveroeffentlicht, beta/dev markiert; `MDEditor.Markdown` + `rehypeSanitize`), Versionsabzeichen als Link; Dockerfile `COPY CHANGELOG.md` + `.dockerignore !CHANGELOG.md`; `.gitea/scripts/publish-release.sh` (awk-Abschnitt, jq, API-Basis aus GITHUB_*, POST/PATCH, --dry-run, Exit 1 ohne Abschnitt) + ci.yml-Schritt nur bei Tag-Refs; Gitea-Release `v1.0.0` rueckwirkend angelegt (id 1); Handbuecher (Betrieb Kap. 9, Anwender "Was ist neu", Entwicklung, CI). Tests Web 294 -> 309 / 49 Dateien, API 67/1078, tsc 0, 19 Dateien gegen 963fa36; CI 356/357 gruen. Nachtrag c3d8e16: 21 fehlende Uebersetzungen (Kalenderquellen-Formular, Kalender-Einstellungen, Marktplatz) in de/en, Changelog "Behoben". Browser-Beweis: /changelog mit 20 Punkten, Kalender-Formular ohne Schluesselnamen. Verifiziert 8/8 + Browser, gepusht. | 2026-09-16 | ba06db9,6940bd0,c5f4ade,c3d8e16 | [260916-dcz-aenderungsliste-changelog-md-in-alltagss](./quick/260916-dcz-aenderungsliste-changelog-md-in-alltagss/) | +| 260916-hiv | **Kalenderquellen-Formular: URL-Platzhalter je Typ + EWS-Hinweis.** Adressfeld zeigt je nach Typ ein Beispiel (Exchange EWS `https://mail.firma.de/EWS/Exchange.asmx`, Graph, CalDAV, ICS) statt fix `https://`; bei Exchange EWS grauer Hinweis unter dem Feld (vollstaendige Adresse inkl. /EWS/Exchange.asmx noetig). 5 i18n-Schluessel de/en, neuer Komponententest (6 Faelle), Changelog "Geändert". Ausloeser: User scheiterte mit blossem Hostnamen `owa.ctl.de`, curl bestaetigte 401 + NTLM auf `/EWS/Exchange.asmx`. Tests Web 309 -> 315 / 50 Dateien, tsc 0. | 2026-09-16 | 618fbd6,2306a6d,9439c33 | [260916-hiv-kalenderquellen-formular-url-platzhalter](./quick/260916-hiv-kalenderquellen-formular-url-platzhalter/) | ## Deferred Items @@ -455,4 +456,4 @@ Last session: 2026-09-16T10:15:09.000Z Resumed: 2026-09-14 — Sitzung ueber /gsd-resume-work fortgesetzt; #29 und 3c als /gsd-quick --validate mit voller Kette durchgefuehrt. Stopped at: **VERSION 1.1.0 FREIGEGEBEN — 2026-09-16.** CHANGELOG `Unveröffentlicht` -> `1.1.0 – 2026-09-16` (e0d4532), `live` per ff-merge auf e0d4532, Tag `v1.1.0` gepusht; CI (Beta, live-Pruefung, Tag) gruen; Registry traegt `live`/`v1.1.0` (Stempel `v1.1.0 live e0d4532`); **erster echter CI-Beweis des Release-Wegs: Gitea-Release "Tessera 1.1.0" von der Pipeline angelegt** (Body 2146 Zeichen). Der User spielt 1.1.0 auf tessera.ctl.de ein (pull + up -d --force-recreate api web). Inhalt: Dashboard-Umbau + Nachbesserung, Seite "Was ist neu", Uebersetzungs-Fix. Offen ohne Dringlichkeit: Desktop-Client-Todo, Ship Phase 17, Ledger #35/#36/#37. Mandantenfaehigkeit RUHT. Schalter AUS. Einstieg: `/gsd-resume-work`. Resume file: .planning/HANDOFF.json + .planning/.continue-here.md (2026-09-16T10:28Z) -Last activity: 2026-09-16 - Completed quick task 260916-dcz: Aenderungsliste — CHANGELOG.md, Seite Was ist neu, Gitea-Release +Last activity: 2026-09-16 - Completed quick task 260916-hiv: Kalenderquellen-Formular — URL-Platzhalter je Typ + EWS-Hinweis diff --git a/.planning/quick/260916-hiv-kalenderquellen-formular-url-platzhalter/260916-hiv-SUMMARY.md b/.planning/quick/260916-hiv-kalenderquellen-formular-url-platzhalter/260916-hiv-SUMMARY.md new file mode 100644 index 0000000..59c5c96 --- /dev/null +++ b/.planning/quick/260916-hiv-kalenderquellen-formular-url-platzhalter/260916-hiv-SUMMARY.md @@ -0,0 +1,140 @@ +--- +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.