You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 3ed31fd
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,6 +32,7 @@ This project should adhere to [Semantic Versioning](https://semver.org/spec/v2.0
32
32
* A `features="icloud"` profile, from a caldav-server-tester run by a user - the documentation already referred to it, but it did not exist. https://github.com/python-caldav/caldav/issues/730
33
33
* Compatibility feature `sync-token.invalid-token`: whether a sync token the server never issued is refused with `DAV:valid-sync-token` as RFC 6578 section 3.2 says. Xandikos and CCS answer some such tokens with a 500, and Stalwart, Ox and Purelymail with a report and no error. https://github.com/jelmer/xandikos/issues/743
34
34
* Compatibility feature `propfind.principal-depth-1`: whether a Depth: 1 PROPFIND on the principal URL works. GMX answers it with a 400. https://github.com/python-caldav/caldav/pull/755
35
+
* Compatibility feature `save-load.event.no-dtend`: whether a VEVENT with neither DTEND nor DURATION is stored, as RFC 5545 section 3.6.1 allows. iCloud refuses one with a 404. https://github.com/python-caldav/caldav-server-tester/issues/24
35
36
* Negated searches: `add_property_filter()` passes the `!=` (alias `<>`), `!contains` and `def` operators of icalendar-searcher 1.1.0 on to the search. They are decided client-side (unless `post_filter=False`): the server query leaves them out, as no server has been probed for `negate-condition` support yet. `build_search_xml_query()` renders `!contains` as a negated `text-match`, and `!=` and `def` as a bare `prop-filter` - a negated `text-match` is a negated *substring* match, so it cannot express `!=`. https://github.com/python-caldav/caldav/issues/568
36
37
* Compatibility features `sync-token.limit` and `sync-token.limit.initial-sync`, for DAV:limit and the checkpoint tokens of a truncated sync-collection report (RFC 6578 sections 3.6 and 3.7). Hints for Stalwart, Xandikos, Radicale, Baïkal, Davis, Nextcloud, CCS and Infomaniak.
Copy file name to clipboardExpand all lines: caldav/compatibility_hints.py
+25-13Lines changed: 25 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -409,6 +409,7 @@ class FeatureSet:
409
409
"default": { "support": "full" }
410
410
},
411
411
"save-load.event.no-summary": {"description": "The server stores a VEVENT without a SUMMARY property. RFC 5545 section 3.6.1 makes SUMMARY optional. 'ungraceful' when the PUT is refused with an error (Bedework 5 answers 500 missingeventproperty).", "default": {"support": "full"}},
412
+
"save-load.event.no-dtend": {"description": "The server stores a VEVENT with neither DTEND nor DURATION. RFC 5545 section 3.6.1 allows one: an event on a date lasts that day, an event at a date-time ends when it starts. 'ungraceful' when the PUT is refused with an error (iCloud answers 404, or 403).", "default": {"support": "full"}},
412
413
"save-load.event.recurrences": {"description": "it's possible to save and load recurring events to the calendar - events with an RRULE property set, including recurrence sets", "default": {"support": "full"}},
413
414
"save-load.event.recurrences.count": {"description": "The server will receive and store a recurring event with a count set in the RRULE", "default": {"support": "full"}},
414
415
## This was Claude's suggestion and it works as of today, the
0 commit comments