docs(ios): update roadmap Phase 3 Week 6 with iOS app foundation progress

- 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
This commit is contained in:
saravanakumardb1 2026-02-27 21:27:02 -08:00
parent 445e25bee1
commit 885a2685ad

View File

@ -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