tasks: CalDAV provider (Nextcloud Tasks/iOS), review reports unknown values; bump stops pointing at release (#139)
Files changed: - CHANGES.md - INSTALL.md - VERSION - instructions/dev/version-parts.md - instructions/gtd-weekly-review/SKILL.md - tools/CONTRACT.md - tools/chemenu/commands/doctor.py - tools/chemenu/commands/version_cmd.py - tools/chemenu/review.py - tools/chemenu/tasks/__init__.py - tools/chemenu/tasks/caldav.py - tools/chemenu/tasks/config.py - tools/chemenu/tests/test_caldav.py - tools/chemenu/tests/test_doctor.py - tools/chemenu/tests/test_review.py - tools/requirements.txt
This commit is contained in:
1 parent
4446424e01
commit
6d53c55d0d
16 files changed
+1912
-14
No files matched your search
+48
-4
@@ -323,10 +323,13 @@ unlesbare Konfiguration darf nicht als „kein Tracker" durchgehen.
|
||||
}
|
||||
```
|
||||
|
||||
`provider` wählt den Adapter - ausgeliefert wird bislang `superproductivity`. Der `thresholds`-
|
||||
Block trägt die drei Schwellwerte des Rückblicks (Konfiguration, nicht Schema): ab wann ein
|
||||
Waiting-For überfällig ist, ab welchem Alter ein Tracker-Projekt ohne `kb/`-Seite gemeldet wird,
|
||||
und ab wann ein Someday-Eintrag als verstaubt gilt.
|
||||
`provider` wählt den Adapter - ausgeliefert werden `superproductivity` und `caldav`. Der
|
||||
`thresholds`-Block trägt die drei Schwellwerte des Rückblicks (Konfiguration, nicht Schema): ab
|
||||
wann ein Waiting-For überfällig ist, ab welchem Alter ein Tracker-Projekt ohne `kb/`-Seite
|
||||
gemeldet wird, und ab wann ein Someday-Eintrag als verstaubt gilt. Ein Wert, den der Provider
|
||||
gar nicht liefern kann - ein Waiting-Posten ohne Wiedervorlagedatum, ein Tracker-Projekt ohne
|
||||
bestimmbares Anlagedatum - wird vom Rückblick nicht still übersprungen, sondern als eigene
|
||||
Fundstelle gemeldet (`waiting_no_follow_up`/`project_age_unknown`).
|
||||
|
||||
Der gleichnamige Provider-Block trägt dessen Verbindungsangaben, und bei Super Productivity
|
||||
entscheidet `access` **verpflichtend und ohne Rückfall**, welcher von zwei sich ausschließenden
|
||||
@@ -350,6 +353,47 @@ Schreibweg - er markiert einen Posten erledigt, löscht ihn nie - und verweigert
|
||||
`access: "snapshot"` auf dieselbe Weise. `tools/wikitool task list --project` ist rein lesend
|
||||
und beantwortet daher auf beiden Zugriffsarten.
|
||||
|
||||
**`caldav`** ist der standardbasierte zweite Adapter (RFC 4791/5545), gegen Nextcloud Tasks
|
||||
verifiziert, mit iOS *Erinnerungen* als mobilem Client - gebaut nach dem Zuschnitt: auf dem
|
||||
Telefon wird abgehakt, gepflegt wird am Schreibtisch. Anders als bei Super Productivity gibt es
|
||||
nur einen Zugriffsweg - CalDAV ist immer ein Netzwerkzugriff, kein `access`-Feld nötig:
|
||||
|
||||
```json
|
||||
"caldav": {
|
||||
"url": "https://<host>/remote.php/dav/calendars/<user>/",
|
||||
"username": "<login>",
|
||||
"app_password": "<Nextcloud-App-Passwort>",
|
||||
"inbox_list": "Inbox",
|
||||
"someday_list": "Someday",
|
||||
"exclude_lists": ["<vorhandene Liste, die kein Projekt ist>"]
|
||||
}
|
||||
```
|
||||
|
||||
`url` zeigt auf das CalDAV-Calendar-Home-Set des Kontos; sie darf ein Alias sein (Nextcloud
|
||||
akzeptiert dort einen Kurznamen), da jede spätere Adresse ausschließlich aus den vom Server
|
||||
gelieferten `href`s stammt, nie aus dieser URL und einem Namen zusammengesetzt wird. `username`
|
||||
ist der Login-Name, der von der Benutzer-ID in der URL abweichen kann - ein
|
||||
Nextcloud-App-Passwort wird empfohlen, nicht das Kontopasswort. `inbox_list`/`someday_list`
|
||||
nennen die beiden festen Listen (je genau eine pro Instanz); `exclude_lists` nimmt vorhandene
|
||||
reine Aufgabenlisten heraus, die keine Projekte sind - eine Liste mit `VEVENT`-Anteil zählt
|
||||
ohnehin nie als Projekt.
|
||||
|
||||
Ein Projekt ist dort eine Liste, deren unterstützte Komponente ausschließlich `VTODO` ist; `tools/wikitool
|
||||
new project` legt sie automatisch per `MKCALENDAR` an - anders als bei Super Productivity ohne
|
||||
Rückfrage, weil CalDAV einen echten Anlage-Befehl für Listen kennt. Die Eindeutigkeitsprüfung
|
||||
läuft gegen **jede** Liste im Konto, auch gegen ausgeschlossene, Inbox, Someday und gemischte
|
||||
Kalender - kollidiert ein neuer Name mit einer davon, wird nichts angelegt und die Kollision
|
||||
genannt; die vorhandene Liste in Nextcloud umzubenennen bleibt Handarbeit. `tools/wikitool task
|
||||
new`/`task close` funktionieren auf einer `caldav`-Instanz uneingeschränkt - es gibt keinen
|
||||
reinen Lesemodus wie `access: "snapshot"`. Beim Abhaken ändert `task close` ausschließlich
|
||||
`STATUS`, `COMPLETED`, `PERCENT-COMPLETE`, `LAST-MODIFIED` und `DTSTAMP` an der bestehenden
|
||||
`.ics`-Ressource; jede andere Eigenschaft - auch eine unbekannte `X-`-Eigenschaft oder ein Alarm
|
||||
- bleibt unverändert erhalten, und eine seit dem Lesen veränderte Ressource (ETag-Konflikt)
|
||||
schreibt nichts und bricht mit exit 1 ab. Gelöscht wird nie etwas.
|
||||
|
||||
Listen abgeschlossener Projekte bleiben nach dem Archivieren bestehen - der Adapter löscht nie
|
||||
eine Liste; das übernimmt der Betreiber von Hand in Nextcloud, sobald gewünscht.
|
||||
|
||||
## Verifikation
|
||||
|
||||
```bash
|
||||
|
||||
Reference in new issue
Block a user