Hello, I am attaching an updated patch for ox-icalendar unscheduled and repeating TODOs, incorporating some of Ihor's feedback to my RFC some months ago. Compared to my original RFC, here are the main changes: - For unscheduled TODOs with repeating deadline, the deadline warning days is used as the start time by default, in order to comply with the iCalendar spec which demands a start time in this case. - Previously I had separate patches for unscheduled and repeating TODOs, but now I combine them into a single patch because of the way repeats and start times are intertwined for repeating deadlines. - New customization `org-icalendar-todo-unscheduled-start' controls the exported start time for unscheduled TODOs. It replaces `org-icalendar-todo-force-scheduling' from my previous version of the patch. - In case of a SCHEDULED repeater, and a DEADLINE with no repeater, the task repeats until the deadline, using the RRULE UNTIL keyword. - Added linting for the case where SCHEDULED and DEADLINE have mismatching repeaters. - Added several tests for ox-icalendar, and a test for the new lint as well. There are still a few cases that are not yet handled, but they are less common and will take some more work to implement, so I would prefer to leave them to future patches: - Case where SCHEDULED and DEADLINE have mismatched repeaters. We can use RDATE with differing DURATION for this. - Case where DEADLINE has repeater but SCHEDULED does not. We can use RDATE for the first instance, and RRULE for the subsequent repeats. - Case of catch-up "++" repeaters. We can use EXDATE to exclude repeats before today. - Case of restart ".+" repeaters. I don't think iCalendar can handle this case, and we should ignore it.