<div dir="ltr">Thanks Jeffrey! I'd gone round in circles on trying to work out what the expected behaviour was from the spec, but I'd obviously missed that part which makes it clear.</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><br><div><span style="text-align:-webkit-auto;border-spacing:0px;border-collapse:separate;font-family:Helvetica"><span style="border-collapse:separate;border-spacing:0px"><div style="color:rgb(0,0,0)"><b style="text-align:-webkit-auto;color:rgb(102,102,102)">Garry Shutler</b><font color="#666666" style="text-align:-webkit-auto"> </font><font color="#3d85c6" style="text-align:-webkit-auto">|</font><font color="#666666" style="text-align:-webkit-auto"> CTO</font></div></span></span></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On 9 April 2018 at 18:14, Jeffrey Harris <span dir="ltr"><<a href="mailto:jeffrey_harris@apple.com" target="_blank">jeffrey_harris@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space">Hi Garry,<div><br></div><div>From <a href="https://tools.ietf.org/html/rfc5545#page-41" target="_blank">https://tools.ietf.org/html/<wbr>rfc5545#page-41</a></div><div><div><br></div><div><pre class="m_1788875816773383687newpage" style="font-size:13.333333015441895px;margin-top:0px;margin-bottom:0px">The COUNT rule part defines the number of occurrences at which to
range-bound the recurrence. The "DTSTART" property value always
counts as the first occurrence.</pre><div><br></div><div>So, for COUNT=1, you should always resolve the series to just DTSTART, and nothing more, regardless of the other details in the RRULE.<br></div><div><br></div><div>It’s weird to have RRULEs which don’t match DTSTART, but they’re legal, you just have to remember to always include DTSTART as the first occurrence.</div><div><br></div><div>If you set the COUNT to 2, you should get Thursday and then Tuesday.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>- Jeffrey</div></font></span><div><div class="h5"><div><br></div><div><blockquote type="cite"><div>On Apr 9, 2018, at 8:29 AM, Garry Shutler <<a href="mailto:garry@cronofy.com" target="_blank">garry@cronofy.com</a>> wrote:</div><br class="m_1788875816773383687Apple-interchange-newline"><div><div dir="ltr"><div><div><div><div><div><div><div>Thanks Filip.<br><br></div>Rather than starting a new thread, it seems recurrence oddities come along like buses. I think in this case Calendar.app (both macOS and iOS) is expanding the series incorrectly, but as that's usually correct I thought I'd ask before submitting a bug report to them.<br><span style="font-family:monospace,monospace"><br></span></div><span style="font-family:monospace,monospace">BEGIN:VCALENDAR<br>VERSION:2.0<br>CALSCALE:GREGORIAN<br>BEGIN:VEVENT<br>CREATED:20180401T000000Z<br>DTSTAMP:20180401T000000Z<br>UID:thursday-then-tuesday<br><b>DTSTART;TZID=Europe/London:<wbr>20180405T110000</b><br>DTEND;TZID=Europe/London:<wbr>20180405T120000<br><b>RRULE:FREQ=WEEKLY;WKST=SU;<wbr>COUNT=1;BYDAY=TU</b><br>SUMMARY:Thursday then Tuesday<br>SEQUENCE:0<br>TRANSP:OPAQUE<br>END:VEVENT<br>END:VCALENDAR</span><br><br></div>When imported into Google this shows an event on 2018-04-05 (Thursday) and 2018-04-10 (following Tuesday), this seems correct to me. However, Calendar.app only shows the event on 2018-04-05 (Thursday).<br><br></div>From my testing the actual days of the week doesn't seem to matter but I've presented them in the form of the report we received in case it has some bearing. An event like this can be created through Calendar.app so whilst a bit of an outlier it's not an exotic hand-crafted iCalendar file or something like that.<br><br></div>If anyone could confirm that the Google behaviour is correct (or not!) that would be great.<br><br></div>Thanks,<br></div>Garry<br></div><div class="gmail_extra"><br clear="all"><div><div class="m_1788875816773383687gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><br><div><span style="text-align:-webkit-auto;border-spacing:0px;border-collapse:separate;font-family:Helvetica"><span style="border-collapse:separate;border-spacing:0px"><div><b style="text-align:-webkit-auto;color:rgb(102,102,102)">Garry Shutler</b><font style="text-align:-webkit-auto" color="#666666"> </font><font style="text-align:-webkit-auto" color="#3d85c6">|</font><font style="text-align:-webkit-auto" color="#666666"> CTO</font></div></span></span></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On 5 April 2018 at 12:26, Filip Navara <span dir="ltr"><<a href="mailto:navara@emclient.com" target="_blank">navara@emclient.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="m_1788875816773383687m_4297226817455247462iw_mail" dir="ltr"><div style="margin:0px">It is possible to have both properties in some cases, but it's also not universally supported and interoperable.</div><div style="margin:0px"><br></div><div style="margin:0px">The case is having "<span style="background-color:rgb(253,253,252)">RECURRENCE-ID;RANGE=THISANDFU<wbr>TURE:" and then overriding the rest of a the recurring series with a new RRULE. In practice most clients split the recurrence into two separate events and deal with the consequences (</span><a href="https://github.com/apple/ccs-calendarserver/blob/master/doc/Extensions/caldav-recursplit.txt)." target="_blank">https://github.com/apple/ccs-<wbr>calendarserver/blob/master/doc<wbr>/Extensions/caldav-recursplit.<wbr>txt).</a></div><div style="margin:0px"><br></div><div style="margin:0px">F.</div>
<div class="m_1788875816773383687m_4297226817455247462signature"> </div>
<br><blockquote class="m_1788875816773383687m_4297226817455247462reply_block" dir="ltr" style="border-left:2px solid #0088cc;margin:5pt 0 5pt 10pt;padding:0 0 0 5pt;font-size:13px;font-family:roboto,tahoma,helvetica,sans-serif">
<hr size="1"><div><div class="m_1788875816773383687h5">-----Original Message-----<br>From: "Garry Shutler" <<a href="mailto:garry@cronofy.com" target="_blank">garry@cronofy.com</a>><br>To: <a href="mailto:caldeveloper-l@lists.calconnect.org" target="_blank">caldeveloper-l@lists.calconnec<wbr>t.org</a><br>Date: 04/05/18 12:46<br>Subject: [caldeveloper-l] Recurrence override with RRULE<br><br><div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>Hi,<br><br>
</div>We've come across a weird one which I can't decide from the RFCs how it should be dealt with (so we're going by how it's displayed when imported).<br><br>
</div>
<div>Here's a cut down example of what we've seen:<br>
</div>
<div><br></div>
<span style="font-family:monospace,monospace">BEGIN:VCALENDAR<br>VERSION:2.0<br>BEGIN:VEVENT<br>DTSTART:20180323T070000Z<br>DTEND:20180323T083000Z<br>RRULE:FREQ=DAILY<br>SEQUENCE:0<br>SUMMARY:example<br>UID:override-with-rrule<br>END:VEVENT<br>BEGIN:VEVENT<br>DTSTART:20180323T080000Z<br>DTEND:20180323T093000Z<br><b>RECURRENCE-ID:20180323T070000z<br>RRULE:FREQ=DAILY</b><br>SEQUENCE:0<br>SUMMARY:example<br>UID:override-with-rrule<br>END:VEVENT<br>END:VCALENDAR</span><br><br>
</div>I thought that a RECURRENCE-ID couldn't have a RRULE and/or that only the master should have RRULEs. I can't find anything in the RFCs to confirm this (my Google-fu/reading skills may be weak!).<br><br>
</div>To reflect what is displayed in Calendar.app we're ignoring the RRULE in the override. However, I wanted to check here to see if that's what we should be doing, whether this is valid, etc.<br><br>
</div>Cheers,<br>
</div>Garry<br clear="all"><div><div><div><div><div><div><div><div><div><div><div><div class="m_1788875816773383687m_4297226817455247462gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr">
<br><div><div><span style="border-spacing:0px;border-collapse:separate;font-family:Helvetica"><b style="color:rgb(102,102,102)">Garry Shutler</b> <font color="#3D85C6">|</font> <font color="#666666">CTO</font></span></div></div>
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
</div></div><hr>______________________________<wbr>_________________<br>caldeveloper-l mailing list<br><a href="mailto:caldeveloper-l@lists.calconnect.org" target="_blank">caldeveloper-l@lists.calconnec<wbr>t.org</a><br><a href="http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org" target="_blank">http://lists.calconnect.org/li<wbr>stinfo.cgi/caldeveloper-l-calc<wbr>onnect.org</a><br>
</blockquote>
</div></div>
</blockquote></div><br></div>
______________________________<wbr>_________________<br>caldeveloper-l mailing list<br><a href="mailto:caldeveloper-l@lists.calconnect.org" target="_blank">caldeveloper-l@lists.<wbr>calconnect.org</a><br><a href="http://lists.calconnect.org/listinfo.cgi/caldeveloper-l-calconnect.org" target="_blank">http://lists.calconnect.org/<wbr>listinfo.cgi/caldeveloper-l-<wbr>calconnect.org</a><br></div></blockquote></div><br></div></div></div></div></div></blockquote></div><br></div>