-
Notifications
You must be signed in to change notification settings - Fork 449
feat(desktop): add calendar picker UI with permission handling #2473
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
✅ Deploy Preview for hyprnote-storybook ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the Comment |
✅ Deploy Preview for hyprnote ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
- Reorganize calendar settings into configure/ directory structure - Add CalendarSelection component for selecting/toggling calendars - Add AppleCalendarProviderCard with permission request UI - Add DisabledProviderCard for coming soon cloud providers - Include note that event fetching is not implemented yet Co-Authored-By: yujonglee <[email protected]>
The calendars table schema doesn't have tracking_id, enabled, source, or provider fields yet. Use local React state for calendar selection until the schema is updated to support persistence. Co-Authored-By: yujonglee <[email protected]>
70cb9ca to
f6cf5b9
Compare
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Merge activity
|
# feat(desktop): add calendar picker UI with permission handling ## Summary This PR adds a calendar picker UI to the desktop settings, allowing users to request calendar/contacts permissions and select which Apple calendars to track. The implementation reorganizes the calendar settings into a modular directory structure. Key changes: - Reorganized `configure.tsx` into `configure/` directory with separate files for Apple, cloud providers, and shared components - Added `CalendarSelection` component that displays calendars grouped by source (iCloud, Exchange, etc.) with toggle switches - Added permission request UI for calendar and contacts access - Includes a note indicating that event fetching is not yet implemented (per requirements) **Important limitation:** Calendar selection state is stored in local React state only and does **not persist** across sessions. The TinyBase `calendars` table schema does not currently have the required fields (`tracking_id`, `enabled`, `source`, `provider`). Persistence can be added once the schema is updated. ## Review & Testing Checklist for Human - [ ] **Test on macOS** (required): This feature uses Apple Calendar APIs and can only be fully tested on macOS. Verify: - Permission request flow works correctly (request → grant → calendar list appears) - Calendar list populates after granting permission - Calendar colors display correctly (RGBA conversion from Apple's color format) - Toggle switches work within the session - [ ] **Verify non-persistence is acceptable**: Calendar toggle state resets when closing/reopening settings. Confirm this is OK until schema changes are made to support persistence. - [ ] **Visual review**: Check that the calendar selection UI renders correctly within the settings panel accordion **Recommended test plan:** 1. Open Settings > Calendar on macOS 2. Expand Apple Calendar provider 3. Request calendar permission if not already granted 4. Verify calendars appear grouped by source (iCloud, Exchange, etc.) 5. Toggle some calendars on/off 6. Close and reopen settings - confirm toggles reset (expected with current implementation) ### Notes - Event fetching is intentionally not implemented yet - the calendar selection will be used once event syncing is available - Calendar selection does not persist - this is a known limitation pending schema updates - Requested by @yujonglee ([email protected]) - Devin session: https://app.devin.ai/sessions/438145d499b246d4b7d2ab257e7f8ecb

feat(desktop): add calendar picker UI with permission handling
Summary
This PR adds a calendar picker UI to the desktop settings, allowing users to request calendar/contacts permissions and select which Apple calendars to track. The implementation reorganizes the calendar settings into a modular directory structure.
Key changes:
configure.tsxintoconfigure/directory with separate files for Apple, cloud providers, and shared componentsCalendarSelectioncomponent that displays calendars grouped by source (iCloud, Exchange, etc.) with toggle switchesImportant limitation: Calendar selection state is stored in local React state only and does not persist across sessions. The TinyBase
calendarstable schema does not currently have the required fields (tracking_id,enabled,source,provider). Persistence can be added once the schema is updated.Review & Testing Checklist for Human
Recommended test plan:
Notes