Skip to content

feat: calendar integration#431

Draft
rmitchellscott wants to merge 1 commit intoddvk:masterfrom
rmitchellscott:cal-integration
Draft

feat: calendar integration#431
rmitchellscott wants to merge 1 commit intoddvk:masterfrom
rmitchellscott:cal-integration

Conversation

@rmitchellscott
Copy link
Copy Markdown
Collaborator

@rmitchellscott rmitchellscott commented Mar 25, 2026

Adds support for the calendar integration added in 3.27.

  • ICS URL calendar integration
  • xochitl user-agent check for >=3.27 to avoid issue where lower rM OSes incorrectly display cal integrations as storage integrations
  • Filtering to events happening next 24 hrs to send to tablet, rM OS seems to display even less time
  • 5 min cache on events

Draft for now as 3.27 is still in beta, will verify functionality on release version and mark ready for review.

@nemunaire
Copy link
Copy Markdown
Collaborator

I think instead of filtering "events happening next 24 hrs", it could be "the next X events", perhaps capped to the week or month.

For people with a very busy schedule, it'll never excess the remarkable screen. For people with a more flexible schedule (eg. a few meetings per week), it will show their next meeting even if it is in more than a day. So the menu is still always relevant and non-bloated for everyone.

@rmitchellscott
Copy link
Copy Markdown
Collaborator Author

I haven't seen the rM UI show a meeting for "tomorrow" even if it's the only meeting on the calendar.

I will try to figure out what the rM cloud event count or duration is (or what xochitl is limiting too)

@rmitchellscott
Copy link
Copy Markdown
Collaborator Author

xochitl is filtering for <10hrs in the future

@rmitchellscott
Copy link
Copy Markdown
Collaborator Author

rmitchellscott commented Mar 30, 2026

Given these calendar events:
image

The cloud response was:

{
    "retrievedAtUtc": "2026-03-30T16:03:04.375925971Z",
    "events": [
        {
            "id": "AAMkADVkYTc3ZDUyLTM3NzUtNDU5Ny1hYmExLTZmNGJkNmJkOTYzNwBGAAAAAADMO9bdWyyiSr9TjalsCjNRBwAoiIUqv_BITbL4okBWvr95AAAAAAENAAAoiIUqv_BITbL4okBWvr95AAmgzQZ7AAA=",
            "title": "11 mon",
            "startTimeUtc": "2026-03-30T17:00:00Z",
            "endTimeUtc": "2026-03-30T17:30:00Z",
            "lastModifiedTimeUtc": "2026-03-30T16:01:27.4196683Z",
            "startTime": "2026-03-30T11:00:00-06:00",
            "endTime": "2026-03-30T11:30:00-06:00",
            "responseStatus": "accepted",
            "organizer": {
                "name": "Mitchell Scott",
                "email": "mitchell@x.y"
            }
        },
        {
            "id": "AAMkADVkYTc3ZDUyLTM3NzUtNDU5Ny1hYmExLTZmNGJkNmJkOTYzNwBGAAAAAADMO9bdWyyiSr9TjalsCjNRBwAoiIUqv_BITbL4okBWvr95AAAAAAENAAAoiIUqv_BITbL4okBWvr95AAmgzQZ8AAA=",
            "title": "12 mon",
            "startTimeUtc": "2026-03-30T18:00:00Z",
            "endTimeUtc": "2026-03-30T18:30:00Z",
            "lastModifiedTimeUtc": "2026-03-30T16:01:24.0426563Z",
            "startTime": "2026-03-30T12:00:00-06:00",
            "endTime": "2026-03-30T12:30:00-06:00",
            "responseStatus": "accepted",
            "organizer": {
                "name": "Mitchell Scott",
                "email": "mitchell@x.y"
            }
        },
        {
            "id": "AAMkADVkYTc3ZDUyLTM3NzUtNDU5Ny1hYmExLTZmNGJkNmJkOTYzNwBGAAAAAADMO9bdWyyiSr9TjalsCjNRBwAoiIUqv_BITbL4okBWvr95AAAAAAENAAAoiIUqv_BITbL4okBWvr95AAmgzQZ9AAA=",
            "title": "13 mon",
            "startTimeUtc": "2026-03-30T19:00:00Z",
            "endTimeUtc": "2026-03-30T19:30:00Z",
            "lastModifiedTimeUtc": "2026-03-30T16:01:31.2327561Z",
            "startTime": "2026-03-30T13:00:00-06:00",
            "endTime": "2026-03-30T13:30:00-06:00",
            "responseStatus": "accepted",
            "organizer": {
                "name": "Mitchell Scott",
                "email": "mitchell@x.y"
            }
        },
        {
            "id": "AAMkADVkYTc3ZDUyLTM3NzUtNDU5Ny1hYmExLTZmNGJkNmJkOTYzNwBGAAAAAADMO9bdWyyiSr9TjalsCjNRBwAoiIUqv_BITbL4okBWvr95AAAAAAENAAAoiIUqv_BITbL4okBWvr95AAmgzQZ_AAA=",
            "title": "14 mon",
            "startTimeUtc": "2026-03-30T20:00:00Z",
            "endTimeUtc": "2026-03-30T20:30:00Z",
            "lastModifiedTimeUtc": "2026-03-30T16:01:36.1150089Z",
            "startTime": "2026-03-30T14:00:00-06:00",
            "endTime": "2026-03-30T14:30:00-06:00",
            "responseStatus": "accepted",
            "organizer": {
                "name": "Mitchell Scott",
                "email": "mitchell@x.y"
            }
        },
        {
            "id": "AAMkADVkYTc3ZDUyLTM3NzUtNDU5Ny1hYmExLTZmNGJkNmJkOTYzNwBGAAAAAADMO9bdWyyiSr9TjalsCjNRBwAoiIUqv_BITbL4okBWvr95AAAAAAENAAAoiIUqv_BITbL4okBWvr95AAmgzQZ-AAA=",
            "title": "16 mon",
            "startTimeUtc": "2026-03-30T22:00:00Z",
            "endTimeUtc": "2026-03-30T22:30:00Z",
            "lastModifiedTimeUtc": "2026-03-30T16:01:42.3912462Z",
            "startTime": "2026-03-30T16:00:00-06:00",
            "endTime": "2026-03-30T16:30:00-06:00",
            "responseStatus": "accepted",
            "organizer": {
                "name": "Mitchell Scott",
                "email": "mitchell@x.y"
            }
        },
        {
            "id": "AAMkADVkYTc3ZDUyLTM3NzUtNDU5Ny1hYmExLTZmNGJkNmJkOTYzNwBGAAAAAADMO9bdWyyiSr9TjalsCjNRBwAoiIUqv_BITbL4okBWvr95AAAAAAENAAAoiIUqv_BITbL4okBWvr95AAmgzQaAAAA=",
            "title": "18 mon",
            "startTimeUtc": "2026-03-31T00:00:00Z",
            "endTimeUtc": "2026-03-31T00:30:00Z",
            "lastModifiedTimeUtc": "2026-03-30T16:01:51.6208468Z",
            "startTime": "2026-03-30T18:00:00-06:00",
            "endTime": "2026-03-30T18:30:00-06:00",
            "responseStatus": "accepted",
            "organizer": {
                "name": "Mitchell Scott",
                "email": "mitchell@x.y"
            }
        },
        {
            "id": "AAMkADVkYTc3ZDUyLTM3NzUtNDU5Ny1hYmExLTZmNGJkNmJkOTYzNwBGAAAAAADMO9bdWyyiSr9TjalsCjNRBwAoiIUqv_BITbL4okBWvr95AAAAAAENAAAoiIUqv_BITbL4okBWvr95AAmgzQaBAAA=",
            "title": "20 mon",
            "startTimeUtc": "2026-03-31T02:00:00Z",
            "endTimeUtc": "2026-03-31T02:30:00Z",
            "lastModifiedTimeUtc": "2026-03-30T16:02:04.6905226Z",
            "startTime": "2026-03-30T20:00:00-06:00",
            "endTime": "2026-03-30T20:30:00-06:00",
            "responseStatus": "accepted",
            "organizer": {
                "name": "Mitchell Scott",
                "email": "mitchell@x.y"
            }
        }
    ]
}

In that instance, the tablet displayed the next 5 events. So it looks like it's only returning about 10 hrs of events as well, and limiting to the next 10 events (I ran an additional test with more events in the 10 hr window, it returned only the first 10)

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants