tutao / tutanota

Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.
https://tuta.com
GNU General Public License v3.0
5.93k stars 508 forks source link

Advanced calendar event repeat rules #1666

Open charlag opened 4 years ago

charlag commented 4 years ago

As a user i want to be able to define more advanced repeat rules so that i can be more flexible with defining repeating events.

Acceptance critera

Implementation hint

We should support BY* repeat rules for the calendar events like BYMONTH/BYDAY etc to enable things like "every second Tuesday each month".

see https://tools.ietf.org/html/rfc5545#section-3.3.10

examples are:

BEGIN:VCALENDAR
PRODID:-//company//calendar app//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:byruletes
X-WR-TIMEZONE:Europe/Berlin
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200622
DTEND;VALUE=DATE:20200623
RRULE:FREQ=MONTHLY;BYMONTHDAY=22
DTSTAMP:20200624T071758Z
UID:XXX0
CREATED:20200622T083746Z
DESCRIPTION:
LAST-MODIFIED:20200622T083746Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:on 22nd monthly
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200622
DTEND;VALUE=DATE:20200623
RRULE:FREQ=MONTHLY;BYDAY=4MO
DTSTAMP:20200624T071758Z
UID:XXX2
CREATED:20200622T083804Z
DESCRIPTION:
LAST-MODIFIED:20200622T083814Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:fourth monday
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200624
DTEND;VALUE=DATE:20200625
RRULE:FREQ=WEEKLY;WKST=MO;BYDAY=MO,WE
DTSTAMP:20200624T071758Z
UID:XXX2
CREATED:20200624T071724Z
DESCRIPTION:
LAST-MODIFIED:20200624T071724Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:monday and wednesday
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR

event which starts on 22nd each month event which happens every 4th Monday and Wednesday event which happens every Monday and Wednesday

joshuaobrien commented 4 years ago

I am really interested in having this feature. I am happy to dedicate some time each day to working on this, if you are interested in additional hands!

charlag commented 4 years ago

@joshuaobrien that's nice to hear! You could start with an algorithm, you cannot really change database type but you could prototype it. See the spec I linked and CalendarModel

vaf-hub commented 2 years ago

We should also allow to modify single events that are part of a series, such as changing the description only for one event and not for the other occurrences.

BiancaMass commented 2 years ago

We should also allow to modify single events that are part of a series, such as changing the description only for one event and not for the other occurrences.

On that: would be great to have the possibility to delete or change the date for a single even of a series i.e. giving the options of "edit this event only" or "edit all events of the series" when making changes to a particular event.

jacamporaGIS commented 2 years ago

We should also allow to modify single events that are part of a series, such as changing the description only for one event and not for the other occurrences.

On that: would be great to have the possibility to delete or change the date for a single even of a series i.e. giving the options of "edit this event only" or "edit all events of the series" when making changes to a particular event.

yes this is really important

jacamporaGIS commented 2 years ago

I would also like to be able to easily copy events to other days. lets say i work the same shift 3 nights a week, I could just copy it from monday to wednesday

SjoerdV commented 4 months ago

Just adding some search terms to this issue as 'repeating' might be missed by some: advanced recurring event advanced recurring schedule complex recurrence pattern

MeatH00k commented 1 month ago

Some aspects of this could be considered a bug, see example below:

When you receive a recurring event invite from a gmail account that specifies a recurring event on the first Monday (or any other day) of every month, Tuta simply converts this to monthly. The very first event is correct, however every subsequent event ends up being completely wrong- not landing on the first Monday of every month, but simply one month from the initial event.