Skip to content

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Dec 22, 2025

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

@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@netlify
Copy link

netlify bot commented Dec 22, 2025

Deploy Preview for hyprnote-storybook ready!

Name Link
🔨 Latest commit f6cf5b9
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/694a13ff054116000862eaa3
😎 Deploy Preview https://deploy-preview-2473--hyprnote-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 22, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands and usage tips.

@netlify
Copy link

netlify bot commented Dec 22, 2025

Deploy Preview for hyprnote ready!

Name Link
🔨 Latest commit f6cf5b9
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/694a13ffb4bd230008af9d28
😎 Deploy Preview https://deploy-preview-2473--hyprnote.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

devin-ai-integration bot and others added 3 commits December 23, 2025 12:59
- 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]>
@yujonglee yujonglee force-pushed the devin/1766409508-calendar-picker-ui branch from 70cb9ca to f6cf5b9 Compare December 23, 2025 04:01
Copy link
Contributor


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • merge - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

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.

Copy link
Contributor

yujonglee commented Dec 23, 2025

Merge activity

  • Dec 23, 4:06 AM UTC: The merge label 'merge' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.
  • Dec 23, 4:06 AM UTC: yujonglee added this pull request to the Graphite merge queue.
  • Dec 23, 4:06 AM UTC: CI is running for this pull request on a draft pull request (#2479) due to your merge queue CI optimization settings.
  • Dec 23, 4:07 AM UTC: Merged by the Graphite merge queue via draft PR: #2479.

graphite-app bot pushed a commit that referenced this pull request Dec 23, 2025
# 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
@graphite-app graphite-app bot closed this Dec 23, 2025
@graphite-app graphite-app bot removed the merge label Dec 23, 2025
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