{
  "product": "Specification (reference)",
  "title": "Calendar",
  "summary": "Events, recurrence and invitations — where time zones go to fight.",
  "category": "apps",
  "entries": [
    {
      "path": [
        "AI",
        "Events",
        "Create, edit and delete an event"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Events",
        "All-day events distinct from timed events"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Events",
        "Location, description and attachments"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Time",
        "Events stored with a time zone, not a local offset"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Time",
        "Correct display when the viewer changes zone"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Time",
        "DST transitions do not shift recurring events"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Recurrence",
        "RRULE support"
      ],
      "value": "daily, weekly, monthly, yearly, by-day",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Recurrence",
        "Exceptions: this occurrence, this and following, all"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Recurrence",
        "Infinite series handled lazily"
      ],
      "value": "",
      "status": "yes",
      "note": "no unbounded expansion"
    },
    {
      "path": [
        "AI",
        "Invitations",
        "Send invites and process replies"
      ],
      "value": "iCalendar/iTIP",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Invitations",
        "Attendee status: accepted, declined, tentative"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Invitations",
        "Free/busy lookup"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Reminders",
        "Multiple alarms per event, relative or absolute"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Sync",
        "CalDAV or equivalent two-way sync"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Sync",
        "Import and export .ics"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Views",
        "Day, week, month and agenda"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Views",
        "Multiple calendars overlaid with colour and toggles"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Interaction",
        "Drag to move and resize an event"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Interaction",
        "Quick-add from natural language"
      ],
      "value": "\"lunch tomorrow 1pm\"",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Interaction",
        "Current-time indicator and today jump"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    }
  ]
}
