Skip to content

[BUG] All-day recurring task exceptions serialize RECURRENCE-ID without VALUE=DATE #2334

Description

@josesantosdigital

Describe the bug

Completing an occurrence of an imported all-day recurring task fails to sync to CalDAV because the generated recurrence exception is serialized with an invalid RECURRENCE-ID.

When the task is marked as completed, DAVx⁵ attempts to upload the updated VTODO, but Nextcloud rejects it with HTTP 415 Unsupported Media Type. The server log reports:

Validation error in iCalendar: The supplied value (20260707) is not a correct DATE-TIME

Inspecting the uploaded VTODO shows:

DTSTART;VALUE=DATE:20260706
RECURRENCE-ID:20260707

Since the recurring task is an all-day task (DTSTART;VALUE=DATE), the RECURRENCE-ID should also be a DATE value:

RECURRENCE-ID;VALUE=DATE:20260707

Without VALUE=DATE, the CalDAV server interprets RECURRENCE-ID as a DATE-TIME and rejects the update.


To Reproduce

  1. Import an all-day recurring VTODO from an ICS file.
  2. Sync with a CalDAV server (tested with Nextcloud).
  3. Mark one occurrence of the recurring task as completed.
  4. Synchronize using DAVx⁵.

Observed behavior

The synchronization fails.

DAVx⁵ reports an HTTP 415 error and the CalDAV server rejects the uploaded VTODO with:

Validation error in iCalendar: The supplied value (20260707) is not a correct DATE-TIME

The uploaded recurrence exception contains:

RECURRENCE-ID:20260707

Expected behavior

For all-day recurring tasks, recurrence exceptions should be serialized with:

RECURRENCE-ID;VALUE=DATE:YYYYMMDD

This matches RFC 5545, where RECURRENCE-ID must have the same value type as the corresponding DTSTART.

Using RECURRENCE-ID;VALUE=DATE allows the task to be accepted by standards-compliant CalDAV servers such as Nextcloud/SabreDAV.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions