diff --git a/doc/daily-notification-plugin-integration-plan.md b/doc/daily-notification-plugin-integration-plan.md index 8b317a86..58606380 100644 --- a/doc/daily-notification-plugin-integration-plan.md +++ b/doc/daily-notification-plugin-integration-plan.md @@ -613,20 +613,20 @@ interface Settings { #### Tasks 1. **Package Dependency** - - Add `@timesafari/daily-notification-plugin` to `package.json` - - Verify package availability/version - - Document in dependencies section + - [ ] Add `@timesafari/daily-notification-plugin` to `package.json` + - [ ] Verify package availability/version + - [ ] Document in dependencies section 2. **PlatformService Interface Extension** - - Add notification methods to `PlatformService` interface - - Define notification types/interfaces (NotificationStatus, ScheduleOptions, etc.) - - Implement in `CapacitorPlatformService` using `@timesafari/daily-notification-plugin` - - Implement in `WebPlatformService` with null returns / error throws - - Implement in `ElectronPlatformService` with null returns / error throws + - [ ] Add notification methods to `PlatformService` interface + - [ ] Define notification types/interfaces (NotificationStatus, ScheduleOptions, etc.) + - [ ] Implement in `CapacitorPlatformService` using `@timesafari/daily-notification-plugin` + - [ ] Implement in `WebPlatformService` with null returns / error throws + - [ ] Implement in `ElectronPlatformService` with null returns / error throws 3. **Settings Schema Extension** - - Add notification settings fields to Settings interface - - Update settings persistence methods if needed + - [ ] Add notification settings fields to Settings interface + - [ ] Update settings persistence methods if needed #### Acceptance Criteria - [ ] PlatformService interface extended with notification methods @@ -644,25 +644,25 @@ interface Settings { #### Tasks 1. **Supporting Components (Optional)** - - Create supporting components only if AccountViewView exceeds length limits - - Consider: `NotificationToggle.vue`, `NotificationTimePicker.vue`, `NotificationStatusDisplay.vue` - - Follow project styling patterns - - Add TypeScript interfaces - - Keep components focused and reusable within AccountViewView context + - [ ] Create supporting components only if AccountViewView exceeds length limits + - [ ] Consider: `NotificationToggle.vue`, `NotificationTimePicker.vue`, `NotificationStatusDisplay.vue` + - [ ] Follow project styling patterns + - [ ] Add TypeScript interfaces + - [ ] Keep components focused and reusable within AccountViewView context 2. **AccountViewView Integration** ✅ **ACCEPTED** - - Add separate "Daily Notifications" section - - Check platform capabilities before showing UI (`v-if="notificationsSupported"`) - - Add computed property for platform capability detection - - Add toggle switch for enabling/disabling notifications - - Add HTML5 time input for scheduling time - - Integrate with PlatformService via PlatformServiceFactory - - Save/load settings from `settings` table - - Implement time format conversion (display vs storage) - - Add enable/disable notification methods - - Add edit time functionality - - Add permission request flow - - Add error handling and user feedback + - [ ] Add separate "Daily Notifications" section + - [ ] Check platform capabilities before showing UI (`v-if="notificationsSupported"`) + - [ ] Add computed property for platform capability detection + - [ ] Add toggle switch for enabling/disabling notifications + - [ ] Add HTML5 time input for scheduling time + - [ ] Integrate with PlatformService via PlatformServiceFactory + - [ ] Save/load settings from `settings` table + - [ ] Implement time format conversion (display vs storage) + - [ ] Add enable/disable notification methods + - [ ] Add edit time functionality + - [ ] Add permission request flow + - [ ] Add error handling and user feedback #### Acceptance Criteria - [ ] Supporting components created only if AccountViewView exceeds length limits @@ -686,22 +686,22 @@ interface Settings { #### Tasks 1. **Permission Management** - - Implement permission request flow in AccountViewView - - Handle permission denial gracefully - - Update status after permission changes - - Show appropriate user feedback + - [ ] Implement permission request flow in AccountViewView + - [ ] Handle permission denial gracefully + - [ ] Update status after permission changes + - [ ] Show appropriate user feedback 2. **Error Handling & User Feedback** - - Add comprehensive error handling for all plugin operations - - Implement loading states during async operations - - Add success/error toast notifications - - Handle edge cases (permission denied, plugin unavailable, etc.) + - [ ] Add comprehensive error handling for all plugin operations + - [ ] Implement loading states during async operations + - [ ] Add success/error toast notifications + - [ ] Handle edge cases (permission denied, plugin unavailable, etc.) 3. **Testing & Validation** - - Test AccountViewView integration on Capacitor platforms - - Verify component hiding on Web/Electron - - Test all user workflows (enable, disable, edit time) - - Verify settings persistence + - [ ] Test AccountViewView integration on Capacitor platforms + - [ ] Verify component hiding on Web/Electron + - [ ] Test all user workflows (enable, disable, edit time) + - [ ] Verify settings persistence #### Acceptance Criteria - [ ] Permission requests handled properly @@ -720,53 +720,53 @@ interface Settings { ### Milestone 1: Foundation Complete **Success Criteria**: -- PlatformService interface extended -- Settings schema extended -- No build regressions +- [ ] PlatformService interface extended +- [ ] Settings schema extended +- [ ] No build regressions ### Milestone 2: AccountViewView Integration Complete **Success Criteria**: -- AccountViewView notification section functional -- Plugin integration working -- Settings persistence working -- Component hiding verified on unsupported platforms +- [ ] AccountViewView notification section functional +- [ ] Plugin integration working +- [ ] Settings persistence working +- [ ] Component hiding verified on unsupported platforms ### Milestone 3: Production Ready **Success Criteria**: -- All tests passing -- Cross-platform validation complete -- Error handling robust -- User feedback implemented -- Documentation complete +- [ ] All tests passing +- [ ] Cross-platform validation complete +- [ ] Error handling robust +- [ ] User feedback implemented +- [ ] Documentation complete --- ## Testing Strategy ### Unit Tests -- PlatformService platform detection -- AccountViewView notification section rendering -- Supporting component rendering (if created) +- [ ] PlatformService platform detection +- [ ] AccountViewView notification section rendering +- [ ] Supporting component rendering (if created) ### Integration Tests -- Plugin API calls from AccountViewView -- Permission flows -- Status updates -- AccountViewView enable/disable/edit workflows -- Settings persistence +- [ ] Plugin API calls from AccountViewView +- [ ] Permission flows +- [ ] Status updates +- [ ] AccountViewView enable/disable/edit workflows +- [ ] Settings persistence ### Platform Tests -- **Capacitor Android**: Notification scheduling, permissions, status, AccountViewView UI -- **Capacitor iOS**: Notification scheduling, permissions, status, AccountViewView UI -- **Web**: Feature hidden, no errors, AccountViewView section hidden -- **Electron**: Feature hidden, no errors, AccountViewView section hidden +- [ ] **Capacitor Android**: Notification scheduling, permissions, status, AccountViewView UI +- [ ] **Capacitor iOS**: Notification scheduling, permissions, status, AccountViewView UI +- [ ] **Web**: Feature hidden, no errors, AccountViewView section hidden +- [ ] **Electron**: Feature hidden, no errors, AccountViewView section hidden ### E2E Tests (Playwright) -- AccountViewView notification configuration workflow -- Permission request flow -- Enable/disable notification workflow -- Edit notification time workflow -- Error handling scenarios +- [ ] AccountViewView notification configuration workflow +- [ ] Permission request flow +- [ ] Enable/disable notification workflow +- [ ] Edit notification time workflow +- [ ] Error handling scenarios --- @@ -899,37 +899,37 @@ await platformService.scheduleDailyNotification({ ### Risk 1: Plugin Package Unavailable **Mitigation**: -- Verify package exists and is accessible -- Consider local development setup if needed -- Document package installation requirements +- [ ] Verify package exists and is accessible +- [ ] Consider local development setup if needed +- [ ] Document package installation requirements ### Risk 2: Platform Detection Failures **Mitigation**: -- Use proven patterns from `QRScannerFactory` -- Test on all platforms -- Add fallback logic +- [ ] Use proven patterns from `QRScannerFactory` +- [ ] Test on all platforms +- [ ] Add fallback logic ### Risk 3: Web/Electron Build Breaks **Mitigation**: -- Use dynamic imports exclusively -- Test web/electron builds after each phase -- Ensure no static plugin imports -- Verify AccountViewView section properly hidden +- [ ] Use dynamic imports exclusively +- [ ] Test web/electron builds after each phase +- [ ] Ensure no static plugin imports +- [ ] Verify AccountViewView section properly hidden ### Risk 4: AccountViewView Integration Issues **Mitigation**: -- Use platform capability detection before showing UI -- Test on all platforms to ensure proper hiding -- Follow existing UI patterns for consistency -- Add comprehensive error handling +- [ ] Use platform capability detection before showing UI +- [ ] Test on all platforms to ensure proper hiding +- [ ] Follow existing UI patterns for consistency +- [ ] Add comprehensive error handling ### Risk 5: Components Visible on Unsupported Platforms **Mitigation**: -- **REQUIRED**: All scheduling components must check `getDailyNotificationStatus()` and hide if `null` -- Use `v-if="notificationsSupported"` pattern consistently -- Add explicit verification in acceptance criteria -- Test on Web/Electron builds to verify hiding works -- Document required pattern in Implementation Notes section +- [ ] **REQUIRED**: All scheduling components must check `getDailyNotificationStatus()` and hide if `null` +- [ ] Use `v-if="notificationsSupported"` pattern consistently +- [ ] Add explicit verification in acceptance criteria +- [ ] Test on Web/Electron builds to verify hiding works +- [ ] Document required pattern in Implementation Notes section --- @@ -952,11 +952,11 @@ await platformService.scheduleDailyNotification({ ## Next Steps -1. **Verify Plugin Package**: Confirm `@timesafari/daily-notification-plugin` availability -2. **Extend PlatformService**: Add notification methods to PlatformService interface and implement in all platform services -3. **Extend Settings Schema**: Add notification fields to Settings interface -4. **Begin Phase 1 Implementation**: Start with foundation tasks -5. **AccountViewView Integration**: Implement Daily Notifications section in Phase 2 +- [ ] **Verify Plugin Package**: Confirm `@timesafari/daily-notification-plugin` availability +- [ ] **Extend PlatformService**: Add notification methods to PlatformService interface and implement in all platform services +- [ ] **Extend Settings Schema**: Add notification fields to Settings interface +- [ ] **Begin Phase 1 Implementation**: Start with foundation tasks +- [ ] **AccountViewView Integration**: Implement Daily Notifications section in Phase 2 ---