Client v5: BLE, BLE Hosting, HTTP, Jobs - Linux, MacOS, & Blazor Support! Full AOT, RX on BLE only & MANY other features! Power up!
Calendar Store Releases
v5.3.0 - TBD
Section titled “v5.3.0 - TBD” Feature
Shiny.Calendar — new cross-platform calendar library.
ICalendarStore provides full CRUD on calendars and events plus a LINQ Query() over events. Register with builder.Services.AddCalendarStore(). Feature iOS
EventKit backend for iOS, Mac Catalyst, and macOS, with iOS 17 full / write-only access via
CalendarAccessType. Feature Android
CalendarContract backend with
READ_CALENDAR / WRITE_CALENDAR permissions and full event CRUD. Feature Windows
Best-effort
AppointmentStore backend — reads/queries all calendars; create/update/delete are supported inside an app-owned calendar (system-calendar writes throw). Feature
LINQ querying —
IQueryable<CalendarEvent> pushes calendar id and the Start/End window down to the native fetch, with an exact in-memory pass for everything else. Feature
Rich event model — attendees, reminders, availability, URL, and read-only recurrence/organizer.
EventAttendee.ResolveContact(IContactStore) bridges an attendee to a device contact by email. Feature
Shiny.Calendar.Extensions.AI — exposes
ICalendarStore as Microsoft.Extensions.AI tools with per-operation allow-listing (Read / Create / Update / Delete). Generates list_calendars, search_events, get_event, create_event, update_event, delete_event. AOT-compatible. See AI Tools. Chore
Recurrence is surfaced read-only; on Apple, attendee writes are ignored (EventKit limitation).
Fix Mac Catalyst
Document the
com.apple.security.personal-information.calendars sandbox entitlement, and add it to the MAUI sample. Mac Catalyst enables the App Sandbox by default, so without it RequestAccess returned Denied and no prompt ever appeared. See Permissions. Feature
DeleteEvent gained a deleteSeries flag — DeleteEvent(string eventId, bool deleteSeries = false, CancellationToken ct = default). For a recurring event, false removes only that occurrence and true removes it and all future ones; it is ignored for non-recurring events. Previously every delete was hardcoded to the single occurrence on Apple and to the whole series on Android. The delete_event AI tool takes the flag too. See Deleting a Recurring Event. Fix
Calendar pills in the MAUI sample’s calendar list are now selectable and actually filter the event list — they were previously non-interactive, with no
SelectionMode, no selection binding, and no filter state in the view model.