From 885a2685adbddfc351e364a78c697e935fce9e78 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Fri, 27 Feb 2026 21:27:02 -0800 Subject: [PATCH] docs(ios): update roadmap Phase 3 Week 6 with iOS app foundation progress MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Xcode project setup: ✅ (XcodeGen, iOS 17+, zero third-party deps) - Timer engine Swift port: ✅ (TimerEngine, Cascade, Urgency, Format, TimeBlindness) - Data models: ✅ partial (CMTimer Codable struct, UserDefaults persistence) - iOS screens: ✅ (Timeline, CreateTimer, Pomodoro, History, Settings, AlarmOverlay) - Notification scheduling: ✅ (UNUserNotificationCenter, cascade warnings, actions) - Haptic engine: ✅ (urgency-mapped feedback patterns) - XCTest: 58 tests passing (TimerEngine, Cascade, Format) - Remaining: Recurrence, NLParser, ContextMessages (Phase 2 web deps), SwiftData migration --- docs/roadmap.md | 86 ++++++++++++++++++++++++++----------------------- 1 file changed, 46 insertions(+), 40 deletions(-) diff --git a/docs/roadmap.md b/docs/roadmap.md index 8b6396c..be94e03 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -412,54 +412,60 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat ### Week 6: iOS App Foundation -- [ ] **Xcode project setup** - - [ ] Multi-target Xcode project: ChronoMind (iOS), ChronoMindWatch (watchOS), ChronoMindMac (macOS) - - [ ] Shared Swift package: `Shared/` folder included in all targets - - [ ] SwiftData for persistence (or Core Data if SwiftData has issues) - - [ ] Dependency: none beyond Apple frameworks (zero third-party for v1) - - [ ] Minimum deployment: iOS 17, watchOS 10, macOS 14 +- [x] **Xcode project setup** + - [x] Multi-target Xcode project: ChronoMind (iOS), ChronoMindWatch (watchOS), ChronoMindMac (macOS) + - [x] Shared Swift package: `Shared/` folder included in all targets + - [ ] SwiftData for persistence (or Core Data if SwiftData has issues) — using UserDefaults for v1, SwiftData migration planned + - [x] Dependency: none beyond Apple frameworks (zero third-party for v1) + - [x] Minimum deployment: iOS 17, watchOS 10, macOS 14 -- [ ] **Timer engine Swift port (`Shared/TimerEngine/`)** - - [ ] `Cascade.swift` — port from `cascade.ts` - - [ ] `Urgency.swift` — port from `urgency.ts` - - [ ] `Recurrence.swift` — port from `recurrence.ts` - - [ ] `Scheduler.swift` — port from `timer-engine.ts` - - [ ] `NLParser.swift` — port from `nl-parser.ts` (use NSDataDetector + custom patterns) - - [ ] `ContextMessages.swift` — port from `context-messages.ts` - - [ ] XCTest unit tests mirroring all Vitest tests from web - - [ ] **Estimated effort: 2-3 days** (~500-800 lines, logic is pure computation) +- [x] **Timer engine Swift port (`Shared/TimerEngine/`)** (partial) + - [x] `Cascade.swift` — port from `cascade.ts` + - [x] `Urgency.swift` — port from `urgency.ts` + - [ ] `Recurrence.swift` — port from `recurrence.ts` (Phase 2 web dependency) + - [x] `TimerEngine.swift` — port from `timer-engine.ts` (state machine, factory functions, transitions) + - [ ] `NLParser.swift` — port from `nl-parser.ts` (Phase 2 web dependency) + - [ ] `ContextMessages.swift` — port from `context-messages.ts` (Phase 2 web dependency) + - [x] `Format.swift` — port from `format.ts` + - [x] `TimeBlindness.swift` — port from `time-blindness.ts` + - [x] XCTest unit tests: 58 tests passing (TimerEngineTests, CascadeTests, FormatTests) + - [x] **Completed:** ~1500 lines of Swift, all core timer logic ported -- [ ] **Data models (`Shared/Models/`)** - - [ ] `CMTimer` — SwiftData model matching web Timer interface - - [ ] `CMRoutine` + `CMRoutineStep` +- [x] **Data models (`Shared/`)** (partial) + - [x] `CMTimer` — Codable struct matching web Timer interface (in TimerEngine.swift) + - [ ] `CMRoutine` + `CMRoutineStep` (Phase 2 web dependency) - [ ] `CMCategory` - [ ] `CMTimerHistory` - [ ] `CMUserPreferences` - - [ ] All models tagged with `@Model` for SwiftData + - [ ] Migrate to `@Model` for SwiftData (currently UserDefaults + JSON) -- [ ] **iOS screens** - - [ ] `TimelineView` — vertical timeline (main screen, tab 1) - - [ ] `CreateTimerView` — alarm, countdown, pomodoro creation - - [ ] `QuickTimerSheet` — bottom sheet with one-tap presets - - [ ] `RoutineListView` + `RoutineRunnerView` - - [ ] `FocusView` — focus/Pomodoro session - - [ ] `HistoryView` — past timers, stats, streaks - - [ ] `SettingsView` — preferences, categories, sounds, neurodivergent mode - - [ ] Tab navigation: Timeline | Focus | History | Settings +- [x] **iOS screens** (partial) + - [x] `TimelineView` — vertical timeline with clock header, next-up card, quick timer bar, active/recent lists + - [x] `CreateTimerView` — alarm, countdown, pomodoro creation with urgency/cascade selectors + - [x] `QuickTimerSheet` — bottom sheet with 12 one-tap presets + time references + - [ ] `RoutineListView` + `RoutineRunnerView` (Phase 2 web dependency) + - [x] `PomodoroView` — focus session with countdown ring, round tracking, auto-transitions + - [x] `HistoryView` — past timers, stats (completion rate, type breakdown, snooze count) + - [x] `SettingsView` — notifications, haptics, sound, default urgency/cascade, data management + - [x] Tab navigation: Timeline | Focus | History | Settings + - [x] `AlarmOverlay` — full-screen critical alarm with confirm-to-dismiss + - [x] `CountdownRing` — visual countdown with color transitions (green→yellow→orange→red) + - [x] `TimerCard` — timer display with state indicators, cascade progress, actions + - [x] `UrgencyBadge`, `CascadeProgressBar`, `FiringCard` components -- [ ] **Notification scheduling (`Shared/Notifications/`)** - - [ ] `UNUserNotificationCenter` for all pre-warnings - - [ ] Schedule cascade notifications when timer is created - - [ ] Critical alerts: request `.criticalAlert` authorization for CRITICAL urgency - - [ ] Time Sensitive notifications for Important urgency - - [ ] Custom notification sounds per urgency - - [ ] Notification actions: Snooze 5m, Snooze 15m, Dismiss - - [ ] Reschedule all notifications when timer is modified +- [x] **Notification scheduling (`Shared/Notifications/`)** + - [x] `UNUserNotificationCenter` for all pre-warnings + - [x] Schedule cascade notifications when timer is created + - [x] Critical alerts: request `.criticalAlert` authorization for CRITICAL urgency + - [x] Time Sensitive notifications for Important urgency (interruptionLevel) + - [ ] Custom notification sounds per urgency (using system defaults for v1) + - [x] Notification actions: Snooze 5m, Snooze 15m, Dismiss + - [x] Reschedule all notifications when timer is modified -- [ ] **Haptic engine** - - [ ] `UIImpactFeedbackGenerator` for pre-warning taps - - [ ] Escalating haptic pattern matching urgency (gentle → standard → heavy) - - [ ] Continuous haptic for Critical alarm (repeating pattern until dismissed) +- [x] **Haptic engine** + - [x] `UIImpactFeedbackGenerator` for pre-warning taps + - [x] Escalating haptic pattern matching urgency (gentle → standard → heavy) + - [ ] Continuous haptic for Critical alarm (repeating pattern until dismissed) — needs background audio session ### Week 7: Apple Watch + Widgets