Repository navigation
Conversation
1c52705 to
ad180ea
Compare
|
Thanks for adding Reminders support! I recommend addressing these three items before merging:
The existing 27 Calendar tests passed. Thanks for following up on these! |
ad180ea to
6cedba6
Compare
|
Thanks for the review! I've addressed all three items:
Added/updated tests covering the cached-snapshot reuse across month navigation, the |
|
Thanks for the update! I confirmed the “Show Reminders” preference now survives backup and restore, and changing it notifies the host. Three issues remain in
|
Fetch incomplete and completed reminders with due dates from EventKit and merge them into the month grid, agenda list, and day popover. Completed reminders are marked with a filled checkmark, strikethrough, and dimmed dot. Adds a reminders permission card, a show-reminders toggle, and the required Reminders usage descriptions.
Require host 2.2.4 (the first release with the Reminders usage descriptions) and document the host requirement in an app changelog. Cache the reminder library as a Sendable snapshot and filter date ranges from it, refreshing the snapshot only when EventKit data changes and cancelling superseded fetches. Include the show-reminders toggle in the portable preferences backup and apply the restored value to the view model.
- Mark the reminder snapshot stale when the widget closes so reopening refetches instead of reusing a possibly-stale cache. - Cancel a superseded reminder fetch by sharing a continuation that is resumed exactly once through either completion or cancellation, since EventKit skips its callback after cancelFetchRequest. - Reject Reminders access on hosts that lack the privacy usage description and prompt for an app update instead.
6cedba6 to
5d4378a
Compare
|
Thanks for the second review! All three items are addressed in the latest commits. 1. Hidden widget must refresh the reminder snapshot on reopen 2. Cancellation must not leave the waiting task hanging 3. Reject Reminders access when the host lacks the privacy description Added tests for items 1 and 3; the suite compiles and all local validations (changelog, localization audit, generated plugin data, backup inventory, script tests) pass. |
Events and reminders that have only a start time (zero-duration events, reminders with only a due time) rendered as a synthetic one-minute range such as 09:00-09:01. Show the single start time instead.
The assertions compared against a literal 09:00 string, which fails under 12-hour locales where the renderer emits '9:00 AM'. Assert on the range separator instead and add a ranged-event control to keep the check meaningful.
Summary
The Calendar widget now reads macOS reminders from EventKit and shows them in the month grid, the recent agenda, and the day popover, next to calendar events.
Fetches reminders with a due date (both incomplete and completed).
Completed reminders are marked with a filled checkmark, strikethrough title, and a dimmed month-grid dot; incomplete items sort before completed ones.
New permission card 系统提醒事项 / System Reminders requests Reminders access and opens
Privacy_Reminderswhen denied.New settings toggle 显示提醒事项 / Show Reminders (default on) to include reminders in the agenda.
Adds
NSRemindersUsageDescription/NSRemindersFullAccessUsageDescriptionto the host Info.plist.Updates plugin privacy metadata (
dataObserved) and regenerates the website plugin data.Events and reminders that have only a start time (zero-duration events, reminders with only a due time) now show the single start time instead of a synthetic one-minute range such as 09:00-09:01.
Notes / known limitations
Testing
CalendarComponentViewModelTests,CalendarEventGrouperTests,CalendarSettingsStoreTestspass.make validate-changelog,make validate-generated-plugin-data,make script-testspass.