-
Notifications
You must be signed in to change notification settings - Fork 439
feat: unified calendar event schema and Apple Calendar integration #1816
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
base: main
Are you sure you want to change the base?
feat: unified calendar event schema and Apple Calendar integration #1816
Conversation
- Design unified calendar event schema supporting Google, Apple, and Outlook - Add tracking_id, provider, participants, recurrence fields to events schema - Add provider, selected, source, color, timezone fields to calendars schema - Integrate Apple Calendar plugin with macOS platform guards - Implement TinyTick-based periodic sync (calendars: 10min, events: 5min) - Replace Rust worker-based sync with frontend TinyTick scheduling Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
🤖 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:
|
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the ✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
✅ Deploy Preview for hyprnote ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
- Add @hypr/plugin-apple-calendar workspace dependency to desktop app - Replace non-existent @tauri-apps/plugin-os with user-agent based platform check - Fix TypeScript errors: add Channel import and progress parameter type - Use isMacOS() helper function for platform detection instead of async API Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
- Add tauri-plugin-apple-calendar to desktop app's Cargo.toml under target-specific dependencies - This fixes the macOS CI build failure where the plugin was referenced but not declared - Uses workspace = true to reference the plugin from workspace dependencies - Platform guard ensures it only compiles on macOS builds Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
- Replace user-agent based platform detection with @tauri-apps/plugin-os - Add @tauri-apps/plugin-os to desktop app dependencies - Make isMacOS() async with module-level caching for efficiency - Update calendar sync tasks to await async platform check - Addresses CodeRabbit review feedback for more reliable OS detection Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
cd99174 to
cb527d5
Compare
feat: unified calendar schema and Apple Calendar integration
Summary
This PR implements a unified calendar event schema that supports Google Calendar, Apple Calendar, and Outlook, and integrates the Apple Calendar plugin with TinyTick-based periodic syncing.
Key Changes:
Expanded calendar/event schemas in
schema-external.tsto include provider-specific fields:tracking_id,provider,participants,is_recurring,recurrence_rule,all_day,timezone,status,visibility,organizer_name,organizer_email,provider_urltracking_id,provider,selected,source,color,timezoneApple Calendar plugin integration with macOS platform guards in
lib.rsTinyTick-based periodic sync in
task-manager.tsx:Wired Apple Calendar plugin dependencies:
@hypr/plugin-apple-calendaras workspace dependency (JS)tauri-plugin-apple-calendaras macOS-only Rust dependencyPlatform detection using
@tauri-apps/plugin-oswith asyncisMacOS()helper and module-level cachingUpdates Since Last Revision
Fixed CI Failures:
tauri-plugin-apple-calendarto desktop app's Cargo.toml as a macOS-only dependency (fixes Rust compilation error)@tauri-apps/plugin-os)isMacOS()async with module-level caching for efficiencyReview & Testing Checklist for Human
plugins/apple-calendar/src/sync.rs. There may be field name mismatches (e.g.,namevstitle).@tauri-apps/plugin-osbasedisMacOS()check correctly identifies macOS and prevents sync tasks from running on Linux/Windows. Test that the async await doesn't cause timing issues with TinyTick task execution.Test Plan
Notes
@tauri-apps/plugin-os(the official Tauri v2 plugin) instead of user-agent parsingisMacOS()function is async with module-level caching to minimize overhead (tasks only run every 5-10 minutes)[target.'cfg(target_os = "macos")'.dependencies]Session: https://app.devin.ai/sessions/efa6da15cbba48d9800627dad471c449
Requested by: yujonglee (@yujonglee)