From 0311980bfe33841d41321657db4e331c775e92fb Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Fri, 27 Feb 2026 22:59:55 -0800 Subject: [PATCH] =?UTF-8?q?docs(roadmap):=20update=20Phase=204=20Weeks=201?= =?UTF-8?q?0-14=20=E2=80=94=20macOS,=20calendar,=20location,=20sleep,=20mo?= =?UTF-8?q?od,=20GDPR,=20sharing,=20referrals?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/roadmap.md | 116 ++++++++++++++++++++++++------------------------ 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/docs/roadmap.md b/docs/roadmap.md index caf88fd..7525c40 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -615,56 +615,56 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat ### Week 10-11: macOS + Calendar + Location -- [ ] **macOS menu bar app (`ChronoMindMac/`)** — deferred from Phase 3 - - [ ] Menu bar icon: shows countdown of next timer - - [ ] Click → popover with mini timeline - - [ ] Quick timer creation from popover - - [ ] Notification center integration (UNUserNotificationCenter) - - [ ] Keyboard shortcut: `Cmd+Shift+T` → quick timer - - [ ] Share 90%+ code with iOS via Shared/ folder +- [x] **macOS menu bar app (`ChronoMindMac/`)** — deferred from Phase 3 + - [x] Menu bar icon: shows countdown of next timer + - [x] Click → popover with mini timeline + - [x] Quick timer creation from popover + - [x] Notification center integration (UNUserNotificationCenter) + - [x] Keyboard shortcut: `Cmd+Shift+T` → quick timer + - [x] Share 90%+ code with iOS via Shared/ folder -- [ ] **Full calendar sync** - - [ ] Google Calendar OAuth 2.0 integration - - [ ] Apple Calendar (EventKit) read access - - [ ] Outlook Calendar (Microsoft Graph API) integration - - [ ] One-way sync: imported events become timers with auto-cascade (read-only — ChronoMind does NOT write back to calendars) - - [ ] Conflict resolution: calendar events take priority, manual timers preserved - - [ ] Sync frequency: every 15 minutes + on-demand refresh - - [ ] Visual distinction: synced events vs manual timers on timeline - - [ ] Web: OAuth flow in Next.js API routes - - [ ] iOS: EventKit for Apple Calendar, OAuth for Google/Outlook +- [x] **Full calendar sync** + - [ ] Google Calendar OAuth 2.0 integration (deferred — needs server-side OAuth) + - [x] Apple Calendar (EventKit) read access + - [ ] Outlook Calendar (Microsoft Graph API) integration (deferred — needs server-side OAuth) + - [x] One-way sync: imported events become timers with auto-cascade (read-only) + - [x] Conflict resolution: calendar events take priority via deterministic IDs + - [x] Sync frequency: every 15 minutes + on-demand refresh + - [x] Visual distinction: synced events tagged with `isCalendarSync` + calendar color + - [ ] Web: OAuth flow in Next.js API routes (deferred) + - [x] iOS: EventKit for Apple Calendar -- [ ] **Location-based triggers** - - [ ] iOS: CoreLocation geofencing (enter/exit region) - - [ ] "Remind me when I leave home" → geofence exit trigger - - [ ] "Remind me when I arrive at office" → geofence enter trigger - - [ ] Saved locations: Home, Work, Gym (user-configured) - - [ ] Privacy-first: all location processing on-device, no server tracking - - [ ] Web: use Geolocation API (less reliable, best-effort) +- [x] **Location-based triggers** + - [x] iOS: CoreLocation geofencing (enter/exit region) + - [x] "Remind me when I leave home" → geofence exit trigger + - [x] "Remind me when I arrive at office" → geofence enter trigger + - [x] Saved locations: Home, Work, Gym (user-configured, preset icons) + - [x] Privacy-first: all location processing on-device, no server tracking + - [ ] Web: use Geolocation API (deferred) -- [ ] **Travel time intelligence** - - [ ] Apple Maps API (MapKit) for travel time estimates - - [ ] "Your dentist appointment is in 45 minutes. Leave now — 28 min drive with current traffic." - - [ ] Auto-adjust pre-warning cascade based on real-time travel time - - [ ] Transport mode: driving, transit, walking (user preference per timer) - - [ ] Web: fallback to static estimate (user enters travel time manually) +- [x] **Travel time intelligence** + - [x] Apple Maps API (MapKit) for travel time estimates + - [x] Travel advisory messages: "Leave now — 28 min drive" + - [x] Auto-adjust pre-warning cascade based on real-time travel time + - [x] Transport mode: driving, transit, walking (user preference per timer) + - [ ] Web: fallback to static estimate (deferred) ### Week 12: Sleep + Wellness -- [ ] **Sleep integration** - - [ ] Bedtime routine: customizable wind-down sequence - - [ ] Smart alarm: set a wake window (e.g., 6:30-7:00) → alarm fires at optimal time - - [ ] Sleep tracking via HealthKit (Apple) — read sleep data, don't track directly - - [ ] "You slept 6h 20m. Shift your morning by 15 minutes?" (AI reschedule tie-in) - - [ ] Wind-down notifications: "Bedtime in 30 minutes — start winding down" - - [ ] Blue light reminder: "Consider turning on Night Shift" +- [x] **Sleep integration** + - [x] Bedtime routine: customizable wind-down sequence (4-step default) + - [x] Smart alarm: set a wake window (e.g., 6:30-7:00) with HealthKit optimization + - [x] Sleep tracking via HealthKit (Apple) — read sleep data, don't track directly + - [x] "You slept 6h 20m. Shift your morning by 15 minutes?" (AI reschedule tie-in) + - [x] Wind-down notifications: "Bedtime in 30 minutes" via UNCalendarNotificationTrigger + - [ ] Blue light reminder (deferred — no API to trigger Night Shift programmatically) -- [ ] **Mood/energy check-in** - - [ ] Quick check-in after completing a timer/routine: 😴 😐 😊 🔥 (4 energy levels) - - [ ] Correlate mood with time of day, timer type, sleep data - - [ ] Weekly insight: "You're most productive between 9-11 AM" - - [ ] Optional: prompt at consistent times (morning, post-lunch, evening) - - [ ] All data local — never sent to any server +- [x] **Mood/energy check-in** + - [x] Quick check-in after completing a timer/routine: 😴 😐 😊 🔥 (4 energy levels) + - [x] Correlate mood with time of day, timer type, sleep data + - [x] Weekly insight: "You're most productive between 9-11 AM" (peak hours + best day) + - [x] Optional: prompt at consistent times (morning, post-lunch, evening) with rate limiting + - [x] All data local — never sent to any server - [ ] **Cloud sync (Apple-only via iCloud, privacy-first)** - [ ] iCloud/CloudKit sync for Apple devices only (iPhone ↔ Mac ↔ Watch) @@ -675,10 +675,10 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat - [ ] TLS in transit + encrypted at rest in Cosmos DB (E2E encryption deferred — timer data is not sensitive enough to justify complexity) - [ ] Delete account: wipes all cloud data immediately -- [ ] **Data export / account deletion (App Store + GDPR requirement)** - - [ ] "Export all my data" → JSON download of all timers, routines, stats - - [ ] "Delete my account" → wipe all cloud data, revoke tokens - - [ ] Required before App Store submission (Apple requirement since 2022) +- [x] **Data export / account deletion (App Store + GDPR requirement)** + - [x] "Export all my data" → JSON download of all timers, routines, stats, mood check-ins + - [x] "Delete my account" → wipe UserDefaults, App Group, iCloud KV, notifications, temp files + - [x] Required before App Store submission (Apple requirement since 2022) - [ ] **Advanced NL parsing (upgrade path from chrono-node)** - [ ] Define `timer-parse` extraction task in extraction-service (port 4005) @@ -696,18 +696,18 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat - [ ] Deep link back to ChronoMind (UTM tracked) - [ ] **This is the #1 viral mechanic — make it irresistible to share** -- [ ] **Shareable timer** - - [ ] Create a timer and share link: "chronom.ind/t/abc123" - - [ ] Recipient opens link → timer auto-added to their ChronoMind - - [ ] Use case: "Here's the pasta recipe timing" / "Here's our meeting prep timer" - - [ ] Web link works without app (PWA fallback) - - [ ] iOS: Universal Link → opens app directly +- [x] **Shareable timer** + - [x] Create a timer and share link: "chronomind.app/t/abc123" + - [x] Recipient opens link → timer auto-added via `importFromURL` + - [x] Use case: "Here's the pasta recipe timing" / "Here's our meeting prep timer" + - [x] Web link works without app (PWA fallback URL) + - [x] iOS: Universal Link → `canHandleURL` + `extractShareCode` -- [ ] **Referral program** - - [ ] "Invite a friend → both get 1 month Pro free" - - [ ] Unique referral code per user - - [ ] Track referral chain - - [ ] Show referral count in profile +- [x] **Referral program** + - [x] "Invite a friend → both get 1 month Pro free" + - [x] Unique referral code per user (CM-XXXX format) + - [x] Track referral chain (incoming/outgoing history) + - [x] Show referral count + Pro reward months - [ ] **ProductHunt launch prep** - [ ] Maker profile + product page