docs(calendar): Kalender im README und Stand im Plan nachtragen

Der Kalender kam im README bislang mit keinem Wort vor -- weder in der
Phasentabelle noch als Abschnitt, obwohl er ein eigener Zugangsweg mit
eigener Anmeldung ist. Jetzt steht er neben WebDAV, wo er hingehoert:
gleiche Adresse-plus-App-Passwort-Logik, gleiche Sperre nach zehn
Fehlversuchen.

Zwei Dinge stehen dort ausdruecklich, weil sie beim Einrichten sonst
eine halbe Stunde Suche kosten:

  - Die Kalenderfarbe holt DAVx5 nur beim Erfassen der Sammlungen, nicht
    bei jedem Abgleich. Sie bleibt im Telefon alt, bis man dort einmal
    "Kalenderliste aktualisieren" antippt. Am Geraet nachgemessen.
  - Kalender verwalten kann die Kalender-App des Telefons gar nicht;
    Android ueberlaesst das der Sync-App.

Im Plan die Phasen 1 bis 3 auf erledigt, und darunter das, was ueber die
Phasen hinaus dazukam, weil es sich beim Pruefen als noetig erwies:
Umhaengen, EXDATE, getctag/calendar-color, Kalenderverwaltung vom Client
aus, die beiden Selbsttests.

Abbild veroeffentlicht als 2026.09.06 und latest.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-09-06 23:14:40 +02:00
1 parent f71ab710e1
commit ac61df9796
2 files changed
+81 -5

No files matched your search

+34 -5
View File
@@ -81,14 +81,34 @@ Die abgeleiteten Spalten sind nur zum Vorsortieren da.
## Phasen
| | Inhalt | Aufwand |
| | Inhalt | Stand |
|---|---|---|
| **1** | CalDAV lesend und schreibend, ein Kalender, Anmeldung über App-Passwörter, Auffindpfade (`/.well-known/caldav`, `current-user-principal`, `calendar-home-set`). Ziel: DAVx5 gleicht ab. | 1–2 Abende |
| **2** | Mehrere Kalender, Farbe, Umbenennen, Löschen. Export als `.ics`, Import einer bestehenden Datei. | 1 Abend |
| **3** | Weboberfläche in Aether: Monat, Woche, Liste; Termin anlegen, ändern, löschen. Der Teil, der Spaß macht – und dessen Fehler man **sieht**. | 2–3 Abende |
| **1** | CalDAV lesend und schreibend, ein Kalender, Anmeldung über App-Passwörter, Auffindpfade (`/.well-known/caldav`, `current-user-principal`, `calendar-home-set`). Ziel: DAVx5 gleicht ab. | ✅ |
| **2** | Mehrere Kalender, Farbe, Umbenennen, Löschen. Export als `.ics`, Import einer bestehenden Datei. | ✅ |
| **3** | Weboberfläche in Aether: Monat, Woche, Liste; Termin anlegen, ändern, löschen. Der Teil, der Spaß macht – und dessen Fehler man **sieht**. | ✅ |
| **4** | `sync-collection` statt Vollabgleich, Aufgabenansicht, Teilen mit anderen Nutzern, öffentlicher Abo-Link, Kalender in der HoneyOS-Leiste. | offen |
| **5** | Kontakte (CardDAV). Dieselbe Maschinerie, dieselbe Bibliothek – und **einfacher**, weil es dort keine Wiederholungen gibt. | später entscheiden |
Über die Phasen hinaus dazugekommen, weil es sich beim Prüfen als nötig
erwies:
- **Termin umhängen** in einen anderen Kalender, unter Erhalt der UID – per
Ziehen in der Oberfläche, am Handy mit langem Drücken.
- **Einzelnen Termin aus einer Reihe streichen** (`EXDATE`), statt nur die
ganze Reihe löschen zu können.
- **`getctag` und `calendar-color`**, die go-webdav nicht kennt: aus der
Anfrage genommen und der Antwort selbst wieder angehängt
(`internal/calendar/propfind.go`).
- **Kalender vom Client aus verwalten** – `MKCALENDAR`, erweitertes `MKCOL`,
`PROPPATCH`, `DELETE` einer Sammlung (`internal/calendar/collections.go`).
Dafür Migration 23: Bei `MKCALENDAR` sucht der Client die Adresse aus, die
seither in `path_segment` steht. Leer = es gilt weiterhin die UUID, damit
eingerichtete Geräte ihre Kalender unter der gewohnten Adresse behalten.
- **Zwei Selbsttests**, einer je Zugangsweg: `scripts/kalender-selbsttest.py`
(JSON, 36 Prüfungen) und `scripts/caldav-selbsttest.py` (CalDAV, 62). Beide
Wege führen auf dieselben Daten, aber über völlig verschiedenen Code – ein
grüner Lauf des einen sagt nichts über den anderen.
## Teilen – drei Bedeutungen, zwei davon gehen
„Geteilter Kalender" meint je nach Person etwas anderes:
@@ -237,7 +257,16 @@ Zwei verschiedene Dinge, die man leicht verwechselt:
de-facto-Standard: Nextcloud, Thunderbird und DAVx5 können es. **Geht.**
- **Farbe eines einzelnen Termins** – `COLOR` aus RFC 7986. In unserer eigenen
Oberfläche jederzeit möglich; wie weit DAVx5 und Samsung Kalender das
weiterreichen, ist offen und muss am Gerät geprüft werden.
weiterreichen, ist offen und muss am Gerät geprüft werden. Geschrieben wird
sie als CSS3-**Name** (`tomato`), nicht als Hex-Wert – so verlangt es RFC
7986, und so liest DAVx5 sie. Der genaue Wert steht zusätzlich in
`X-AETHER-COLOR`, damit die eigene Palette verlustfrei zurückkommt.
**Am Gerät geprüft (06.09.2026):** Die Kalenderfarbe kommt an – aber erst,
nachdem in DAVx5 einmal *Kalenderliste aktualisieren* angetippt wurde. Beim
normalen Abgleich fragt DAVx5 `calendar-color` gar nicht ab; ein Mitschnitt
der Anfragen hat das gezeigt. Wer das nicht weiß, sucht den Fehler auf der
Serverseite, wo keiner ist.
**Emojis im Kalendernamen** sind kein Protokollthema – der Name ist Text.
„🏠 Haushalt" kommt überall an.