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