
patrickandClaude Opus 4.8
d13350b38b
feat(ical): abonnierbarer read-only Kalender-Feed pro Nutzer
Token-gescoper iCal-Feed (/absences/ical/<token>.ics), abonnierbar in
Outlook/Apple/Google. Anders als der CalDAV-Client (Push nach Nextcloud)
pollt der Kalender die URL selbst. Feed zeigt nur die eigenen bestätigten
Abwesenheiten des Token-Inhabers.
- users.ical_token_hash (SHA-256, rotierbar) + Migration 0041 (nur Spalte,
keine RLS-Aenderung; users-Policy deckt neue nullable Spalte ab)
- Router ical.py: oeffentlicher Feed (kein JWT) + Token-Verwaltung
POST/GET/DELETE /users/me/ical-token (authentifiziert)
- ProfilePage: Sektion "Kalender-Abo (iCal)" mit Erzeugen/Rotieren/
Deaktivieren, URL-Anzeige einmalig + Kopieren
- test_ical.py: Token-Lifecycle + oeffentlicher Feed (3 Tests)
Deployed auf 137 (Migration 0041, 196/196 Tests gruen). 164 ausstehend.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 16:12:05 +02:00
..
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 20:03:27 +02:00
2026-05-24 12:08:33 +02:00
2026-05-24 12:08:33 +02:00
2026-05-23 20:03:27 +02:00
2026-05-23 22:34:48 +02:00
2026-05-24 12:45:47 +02:00
2026-05-24 19:45:09 +02:00
2026-05-24 23:52:46 +02:00
2026-05-25 00:08:03 +02:00
2026-05-25 00:58:00 +02:00
2026-05-25 22:17:52 +02:00
2026-05-25 22:48:30 +02:00
2026-05-26 11:13:42 +02:00
2026-06-02 15:58:38 +02:00
2026-06-23 01:15:51 +02:00
2026-06-23 11:47:47 +02:00
2026-06-23 12:03:42 +02:00
2026-06-23 12:21:14 +02:00
2026-06-23 13:17:32 +02:00
2026-06-23 14:06:19 +02:00
2026-06-23 14:31:14 +02:00
2026-07-08 16:12:05 +02:00