Commit Graph

60 Commits

Author SHA1 Message Date
saravanakumardb1
e61858db15 feat(ios): add TestFlight release script, README, BUILD_STATE + bundle ID migration
- Add release-testflight.sh — one-command archive + upload to TestFlight
- Add README_TESTFLIGHT.md — setup guide for home laptop
- Add BUILD_STATE.md — build tracking
- Migrate bundle IDs: com.chronomind.app → com.saravana.chronomind (original was taken)
- Remove App Groups entitlement temporarily (not registered in dev portal yet)
- Fix duplicate theme enums in generated file
2026-04-04 23:20:54 -07:00
saravanakumardb1
1ea3965492 fix(ios): remove duplicate theme enums + add ExportOptions.plist for TestFlight
- Remove duplicate CMColors, CMSpacing, CMRadius, Color.init(hex:) from generated theme file
- Keep canonical versions in ChronoMindTheme.swift
- Add ExportOptions.plist for app-store-connect export
2026-04-04 23:20:54 -07:00
saravanakumardb1
bc7430a436 chore(design-system): deploy canonical generated Swift theme tokens from @bytelyst/design-tokens 2026-03-28 00:26:05 -07:00
saravanakumardb1
d22e73fa0f fix(widgets): add .privacySensitive() to timer label and countdown views 2026-03-27 13:57:15 -07:00
saravanakumardb1
d179c4c624 feat(watch,mac): complete watchOS + macOS companion targets
- watchOS: add WatchSessionManager (WCSession bridge), WatchNotificationHandler
  (snooze/dismiss actions), recommendations() for AppIntentTimelineProvider
- watchOS: WatchTimerStore tick loop with cascade haptics, App Group sync
- macOS: CreateTimerSheet (countdown/alarm/pomodoro), launch-at-login toggle
- macOS: MenuBarState showCreateSheet, MacSettingsView data tab
- Xcode project updated with new file references
2026-03-27 11:28:13 -07:00
saravanakumardb1
ab400fbb6a chore: update project files 2026-03-22 14:06:48 -07:00
saravanakumardb1
5e8c46b5f3 fix(ios): correct iPad sidebar filter closure indentation 2026-03-21 20:56:58 -07:00
saravanakumardb1
39f8a70b6b feat(ios): gate Focus tab behind focus_mode_enabled feature flag 2026-03-21 20:39:56 -07:00
saravanakumardb1
995cdb8e7d fix(ios): align tests with current PomodoroConfig/PomodoroState/CreateCountdownParams signatures
- PomodoroConfig: add longBreakMinutes parameter
- PomodoroState: add isLongBreak, completedRounds parameters; remove roundStartedAt
- CreateCountdownParams: duration → durationSeconds
- RescheduleEngineTests: compare timeIntervalSince1970 (not Date) with accuracy
2026-03-21 08:34:50 -07:00
saravanakumardb1
d3c3affc1b fix(ios): Fix KillSwitchService — BLKillSwitchClient.check() returns Void
Swift BLKillSwitchClient.check() sets isDisabled/maintenanceMessage as
properties on the client, not a returned result. Expose isDisabled and
maintenanceMessage as computed properties on the wrapper.
2026-03-20 23:09:36 -07:00
saravanakumardb1
c328216a0e refactor(ios): Phase 9A — Add Config.swift + KillSwitchService.swift
- Create Shared/Cloud/Config.swift with shared BLPlatformConfig for ChronoMind
- Create Shared/Cloud/KillSwitchService.swift thin wrapper over BLKillSwitchClient

Part of Mobile DRY Refactoring Roadmap Phase 9A.
2026-03-20 22:48:34 -07:00
saravanakumardb1
424e804396 fix(ios): resolve Swift compile errors for iOS 26 / Xcode 26
- Fix CloudKitSyncManager deinit concurrency violation
- Replace deprecated List(selection:) with VStack+ForEach sidebar
- Replace removed Animation.none with Animation.linear(duration: 0)
- Fix CountdownRing initializer parameter mismatch
- Unwrap optional timer.duration in ShareableTimerManager and DataExportManager
- Add missing .event case to exhaustive switch
- Change CascadeWarning.scheduledTime from let to var
- Fix CalendarSyncManager CMTimer init (add elapsedBeforePause, remove non-existent params)
- Add missing UserNotifications import in SleepManager
- Remove parameterized App Intents phrases (iOS 26 restriction)
- Temporarily remove watchOS target dependency for iOS build
2026-03-19 14:22:50 -07:00
saravanakumardb1
d6b1bb6f63 fix(sync): fix BatchResult.errors type mismatch — backend returns {id,error} objects not strings 2026-03-01 21:27:44 -08:00
saravanakumardb1
48b88d3a29 fix(sync): add x-product-id header and fix pullDelta response decode mismatch 2026-03-01 21:26:12 -08:00
saravanakumardb1
b7688b55d1 fix(security): move PlatformSyncManager auth token from UserDefaults to Keychain 2026-03-01 16:37:39 -08:00
saravanakumardb1
3adab843cd refactor(ios): migrate CrashReporter to ByteLystPlatformSDK's BLCrashReporter
Replaced standalone MetricKit crash reporter (153 lines) with thin wrapper (34 lines)
delegating to SDK's BLCrashReporter. Preserves existing call-site API.
2026-02-28 22:38:55 -08:00
saravanakumardb1
d1b4534b22 refactor(ios): migrate Cloud/ files to ByteLystPlatformSDK — eliminate duplicated platform code
Replaced standalone implementations with thin wrappers over shared SDK:
- KeychainHelper → delegates to BLKeychain (53→27 lines)
- TelemetryService → delegates to BLTelemetryClient (139→55 lines)
- FeatureFlagService → delegates to BLFeatureFlagClient (72→39 lines)
- AuthService → delegates to BLAuthClient (359→171 lines)
- project.yml → added ByteLystPlatformSDK local package dependency

Total: 623 lines of duplicated code → 292 lines of thin wrappers.
PlatformSyncManager kept as-is (product-specific timer DTOs).
All existing call-site APIs preserved — zero breaking changes.
2026-02-28 22:12:37 -08:00
saravanakumardb1
3596a8f350 feat(sync): wire platform sync into timer and routine stores, extend fullSync for routines, add error/not-found pages 2026-02-28 20:24:53 -08:00
saravanakumardb1
77254b751e fix(telemetry): lowercase osFamily to match server enum 2026-02-28 19:26:52 -08:00
saravanakumardb1
75927d00e2 chore(ios): add TelemetryService + FeatureFlagService to Xcode project 2026-02-28 19:25:01 -08:00
saravanakumardb1
180c98160b feat(ios): add telemetry client, feature flags client, Settings login/register form 2026-02-28 19:10:08 -08:00
saravanakumardb1
e3add90f87 feat(auth): add forgot password, reset password, change password, delete account, email verify, token refresh
Web:
- platform-sync.ts: Added forgotPassword, resetPassword, changePassword, verifyEmail, resendVerification, deleteAccount API functions
- auth-context.tsx: Added forgotPassword, resetPassword, changePassword, deleteAccount actions + successMessage state + 45min auto-refresh timer
- settings/page.tsx: Added forgot password link, change password form, delete account form with confirmation
- reset-password/page.tsx: New page for password reset via email token
- verify-email/page.tsx: New page for email verification via token

iOS:
- AuthService.swift: Added forgotPassword, changePassword, deleteAccount methods
- SettingsView.swift: Added change password, delete account, forgot password UI sections

Android:
- AuthService.kt: Added forgotPassword, changePassword, deleteAccount methods
2026-02-28 04:08:58 -08:00
saravanakumardb1
6a41cc9f48 feat(mobile): add auth login/register flow for iOS and Android
- iOS: Add KeychainHelper.swift for secure token storage
- iOS: Add AuthService.swift (CMAuthService) with login/register/refresh/logout
- iOS: Add LoginView.swift (CMLoginView) with ChronoMind theme
- iOS: Wire auth gate in ChronoMindApp.swift (LoginView vs ContentView)
- iOS: Add Account section to SettingsView with email/plan/sign-out
- iOS: Add Cloud group + 3 files to Xcode project.pbxproj
- Android: Add AuthService.kt with Hilt @Singleton, login/register/refresh/logout
- Android: Add LoginScreen.kt with Compose login/register form
- Android: Wire auth gate in MainActivity via Hilt-injected AuthService
- Android: Add Account section to SettingsScreen via HiltViewModel
- Android: Add x-product-id header to PlatformApiClient
2026-02-28 03:22:23 -08:00
saravanakumardb1
11e50295ea feat: fix web build, add repo infra, port iOS engine modules, add routine screens
- fix(web): cast window through unknown in platform-sync.ts (TS2352)
- docs: add AGENTS.md, README.md, CLAUDE.md, .windsurfrules, .cursorrules, env.example
- feat(ios): port Recurrence.swift from web/src/lib/recurrence.ts
- feat(ios): port NLParser.swift from web/src/lib/nl-parser.ts
- feat(ios): port ContextMessages.swift from web/src/lib/context-messages.ts
- feat(ios): add CMRoutine model + Routines.swift engine with state machine + templates
- feat(ios): add RoutineListView, RoutineRunnerView, RoutineEditorView
- feat(android): add RoutineScreen.kt with list, runner, templates, step controls

Web: 373 tests passing, build succeeds with --webpack flag
2026-02-28 01:50:35 -08:00
saravanakumardb1
af33a2c86d feat(sync): add cross-platform sync managers for iOS, Android, and Web
- iOS: PlatformSyncManager — URLSession, delta sync, batch upload, offline queue, HMAC auth
- Android: PlatformApiClient + SyncRepository — HttpURLConnection, Room integration, offline queue
- Web: platform-sync.ts + use-sync.ts — fetch client, localStorage queue, React hook with 60s auto-sync

All consume platform-service /timers/*, /routines/*, /households/* endpoints.
Sync protocol: syncVersion optimistic concurrency, delta sync via ?since=, batch upsert for offline flush.
2026-02-28 00:25:35 -08:00
saravanakumardb1
bebb566caf feat(growth): add referral program — unique codes, invite tracking, Pro reward months 2026-02-27 22:59:02 -08:00
saravanakumardb1
fdcae8297a feat(share): add shareable timer links with universal link support + import/export 2026-02-27 22:58:57 -08:00
saravanakumardb1
9be48f0abf feat(gdpr): add data export (JSON) + account deletion — App Store and GDPR compliance 2026-02-27 22:57:56 -08:00
saravanakumardb1
3df8ac597b feat(wellness): add sleep manager (HealthKit, bedtime routine, smart alarm) + mood/energy check-in with weekly insights 2026-02-27 22:57:47 -08:00
saravanakumardb1
639d606233 feat(web): add Playwright E2E tests, service worker, package updates 2026-02-27 22:37:04 -08:00
saravanakumardb1
4341502e33 feat(location): add CoreLocation geofencing triggers + MapKit travel time intelligence 2026-02-27 22:35:48 -08:00
saravanakumardb1
351410ba41 feat(calendar): add EventKit calendar sync — read events, convert to timers, auto-sync every 15m 2026-02-27 22:35:36 -08:00
saravanakumardb1
2fc277b663 feat(macos): add macOS menu bar app — popover timeline, quick timer, keyboard shortcut, settings 2026-02-27 22:35:26 -08:00
saravanakumardb1
e87e027c0f feat(testflight): add MetricKit crash reporting + feedback form in Settings 2026-02-27 22:24:00 -08:00
saravanakumardb1
01c0f5759e feat(sync): add iCloud sync via NSUbiquitousKeyValueStore with merge strategy 2026-02-27 22:23:45 -08:00
saravanakumardb1
2c224c5c4f test(week9): add urgency tests (14) + accessibility tests (14) + update roadmap Week 9 2026-02-27 22:20:29 -08:00
saravanakumardb1
3bec3602d2 feat(a11y): add VoiceOver, Dynamic Type, Reduce Motion, High Contrast accessibility helpers 2026-02-27 22:20:22 -08:00
saravanakumardb1
be0e8748b2 feat(ipad): adaptive layout — NavigationSplitView sidebar + timer detail side panel on iPad 2026-02-27 22:20:15 -08:00
saravanakumardb1
4b579750a2 test(week8): add reschedule engine tests (14) + gamification engine tests (15) + update roadmap 2026-02-27 22:14:01 -08:00
saravanakumardb1
40fd63e748 feat(gamification): integrate gamification into app — badge celebration overlay, history stats+badges tabs 2026-02-27 22:13:50 -08:00
saravanakumardb1
58dde35cc9 feat(gamification): add streak card, focus score card, badge grid, confetti, weekly summary card with share 2026-02-27 22:13:44 -08:00
saravanakumardb1
f6208e65d1 feat(gamification): add streak engine, focus score, badge definitions, and GamificationStore 2026-02-27 22:13:39 -08:00
saravanakumardb1
a86ed05271 feat(reschedule): add reschedule sheet UI, undo banner, suggestion banner, and timeline integration 2026-02-27 22:13:32 -08:00
saravanakumardb1
931746a119 feat(reschedule): add AI reschedule engine with shift, skip, push, undo and smart suggestions 2026-02-27 22:13:27 -08:00
saravanakumardb1
0b798bf9ff test(shared): add SharedTimerData tests + update roadmap Week 7 checkmarks 2026-02-27 22:01:57 -08:00
saravanakumardb1
016a3d14e5 feat(project): add widget, watchOS, and complications targets to project.yml with dependencies 2026-02-27 22:01:51 -08:00
saravanakumardb1
36523334c4 feat(siri): add App Intents for Siri Shortcuts — set timer, start pomodoro, next timer info 2026-02-27 22:01:46 -08:00
saravanakumardb1
71bda1dab9 feat(watch): add watchOS app with timeline, timer detail, quick presets, haptics, and complications 2026-02-27 22:01:39 -08:00
saravanakumardb1
5936016a36 feat(widget): add WidgetKit widgets — small, medium, lock screen with AppIntentTimelineProvider 2026-02-27 22:01:34 -08:00
saravanakumardb1
4b1cbcf81b feat(live-activity): add ActivityKit attributes and LiveActivityManager for Dynamic Island 2026-02-27 22:01:28 -08:00