Jose Olarte III
e873a46bbd
feat(plugin): add optional rolloverIntervalMinutes for dev/testing
...
Add optional rolloverIntervalMinutes to scheduleDailyNotification so the
next occurrence can be scheduled N minutes after the current trigger
(e.g. 10 minutes) instead of 24 hours. Value is persisted and used on
rollover and after reboot.
- TypeScript: NotificationOptions.rolloverIntervalMinutes?: number
- Android: Schedule.rolloverIntervalMinutes in Room (migration 2→3);
Plugin and ScheduleHelper persist it; Worker uses it in rollover and
updates nextRunAt; ReactivationManager uses it in boot recovery
- iOS: NotificationContent.rolloverIntervalMinutes (Codable); Plugin
passes it into content; Scheduler uses it in calculateNextScheduledTime
and copies to nextContent on rollover
When absent or ≤0, behavior unchanged (24h). App can clear by calling
scheduleDailyNotification without the parameter.
2026-03-03 17:45:45 +08:00
Matthew Raymer
36f2c095db
feat(ios): add deliveryStatus and lastDeliveryAttempt to NotificationContent
...
Complete final 2 Phase 2 iOS enhancements - delivery tracking properties.
Changes:
- NotificationContent: Add delivery tracking properties
- deliveryStatus: String? (e.g., "scheduled", "delivered", "missed", "error")
- lastDeliveryAttempt: Int64? (milliseconds since epoch)
- Updated Codable support (CodingKeys, init, encode)
- Updated toDictionary/fromDictionary for backward compatibility
- Properties are optional with default nil (backward compatible)
- DailyNotificationReactivationManager: Use delivery tracking
- detectMissedNotifications(): Filter by deliveryStatus != "delivered"
- markMissedNotification(): Set deliveryStatus="missed" and lastDeliveryAttempt
- Removed 2 TODOs, fully implemented
Phase 2 Progress: 8 of 8 enhancements COMPLETE ✅
- ✅ Rolling window maintenance
- ✅ TTL validation
- ✅ Database statistics
- ✅ Metrics recording
- ✅ CoreData history
- ✅ Fetcher instances clarified
- ✅ deliveryStatus property (this commit)
- ✅ lastDeliveryAttempt property (this commit)
Verification:
- TypeScript typecheck: PASS
- Tests: PASS (115 tests, 8 test suites)
- No linter errors
- Backward compatible (optional parameters with defaults)
2025-12-24 07:38:12 +00:00
Server
5844b92e18
feat(ios): implement Phase 1 permission methods and fix build issues
...
Implement checkPermissionStatus() and requestNotificationPermissions()
methods for iOS plugin, matching Android functionality. Fix compilation
errors across plugin files and add comprehensive build/test infrastructure.
Key Changes:
- Add checkPermissionStatus() and requestNotificationPermissions() methods
- Fix 13+ categories of Swift compilation errors (type conversions, logger
API, access control, async/await, etc.)
- Create DailyNotificationScheduler, DailyNotificationStorage,
DailyNotificationStateActor, and DailyNotificationErrorCodes components
- Fix CoreData initialization to handle missing model gracefully for Phase 1
- Add iOS test app build script with simulator auto-detection
- Update directive with lessons learned from build and permission work
Build Status: ✅ BUILD SUCCEEDED
Test App: ✅ Ready for iOS Simulator testing
Files Modified:
- doc/directives/0003-iOS-Android-Parity-Directive.md (lessons learned)
- ios/Plugin/DailyNotificationPlugin.swift (Phase 1 methods)
- ios/Plugin/DailyNotificationModel.swift (CoreData fix)
- 11+ other plugin files (compilation fixes)
Files Added:
- ios/Plugin/DailyNotificationScheduler.swift
- ios/Plugin/DailyNotificationStorage.swift
- ios/Plugin/DailyNotificationStateActor.swift
- ios/Plugin/DailyNotificationErrorCodes.swift
- scripts/build-ios-test-app.sh
- scripts/setup-ios-test-app.sh
- test-apps/ios-test-app/ (full test app)
- Multiple Phase 1 documentation files
2025-11-13 05:14:24 -08:00
Matthew Raymer
5eebae9556
feat(ios): implement Phase 2.1 iOS background tasks with T–lead prefetch
...
- Add DailyNotificationBackgroundTaskManager with BGTaskScheduler integration
- Add DailyNotificationTTLEnforcer for iOS freshness validation
- Add DailyNotificationRollingWindow for iOS capacity management
- Add DailyNotificationDatabase with SQLite schema and WAL mode
- Add NotificationContent data structure for iOS
- Update DailyNotificationPlugin with background task integration
- Add phase2-1-ios-background-tasks.ts usage examples
This implements the critical Phase 2.1 iOS background execution:
- BGTaskScheduler integration for T–lead prefetch
- Single-attempt prefetch with 12s timeout
- ETag/304 caching support for efficient content updates
- Background execution constraints handling
- Integration with existing TTL enforcement and rolling window
- iOS-specific capacity limits and notification management
Files: 7 changed, 2088 insertions(+), 299 deletions(-)
2025-09-08 10:30:13 +00:00