- Add complete Service Worker implementation with IndexedDB storage
- Implement background sync for content fetch and notification delivery
- Add Service Worker Manager for registration and communication
- Include push notification support with VAPID key handling
- Implement TTL-at-fire logic with IndexedDB persistence
- Add callback management with HTTP and local callback support
- Include comprehensive error handling and fallback mechanisms
- Support for periodic sync and background task scheduling
- Mirror Android SQLite and iOS Core Data schema in IndexedDB
BREAKING CHANGE: Web implementation requires Service Worker support and HTTPS
- Add complete SQLite schema with Room database (content_cache, schedules, callbacks, history)
- Implement WorkManager FetchWorker with exponential backoff and network constraints
- Add AlarmManager NotifyReceiver with TTL-at-fire logic and notification delivery
- Create BootReceiver for automatic rescheduling after device reboot
- Update AndroidManifest.xml with necessary permissions and receivers
- Add Room, WorkManager, and Kotlin coroutines dependencies to build.gradle
feat(callback-registry)!: implement callback registry with circuit breaker
- Add CallbackRegistryImpl with HTTP, local, and queue callback support
- Implement circuit breaker pattern with exponential backoff retry logic
- Add CallbackEvent interface with structured event types
- Support for exactly-once delivery semantics with retry queue
- Include callback status monitoring and health checks
feat(observability)!: add comprehensive observability and health monitoring
- Implement ObservabilityManager with structured logging and event codes
- Add performance metrics tracking (fetch, notify, callback times)
- Create health status API with circuit breaker monitoring
- Include log compaction and metrics reset functionality
- Support for DNP-* event codes throughout the system
feat(web)!: enhance web implementation with new functionality
- Integrate callback registry and observability into web platform
- Add mock implementations for dual scheduling methods
- Implement performance tracking and structured logging
- Support for local callback registration and management
- Enhanced error handling and event logging
BREAKING CHANGE: New Android dependencies require Room, WorkManager, and Kotlin coroutines
- Add DailyNotificationPerformanceOptimizer for Android with comprehensive optimization
- Add DailyNotificationPerformanceOptimizer for iOS with Swift performance management
- Implement database query optimization with indexes and PRAGMA settings
- Add memory usage monitoring with automatic cleanup and thresholds
- Implement object pooling for frequently used objects to reduce allocation
- Add battery usage tracking and background CPU optimization
- Add network request optimization and efficiency monitoring
- Add comprehensive performance metrics and reporting
- Add production-ready optimization with stress testing support
- Add phase3-3-performance-optimization.ts usage examples
This implements Phase 3.3 performance optimization for production reliability:
- Database indexes for query optimization (slot_id, fetched_at, status, etc.)
- Memory monitoring with warning/critical thresholds and automatic cleanup
- Object pooling for String, Data, and other frequently used objects
- Battery optimization with background CPU usage minimization
- Network request batching and efficiency improvements
- Comprehensive performance metrics tracking and reporting
- Production-ready optimization with configurable thresholds
- Cross-platform implementation (Android + iOS)
Files: 3 changed, 1200+ insertions(+)
- Add DailyNotificationExactAlarmManager with SCHEDULE_EXACT_ALARM permission handling
- Add DailyNotificationRebootRecoveryManager for system reboot and time-change recovery
- Update DailyNotificationScheduler with exact alarm manager integration
- Add exact alarm status checking and permission request methods
- Add windowed alarm fallback (±10m) when exact alarms are denied
- Add deep-link to exact alarm settings for user guidance
- Add reboot recovery with broadcast receiver registration
- Update TypeScript interface with new exact alarm and recovery methods
- Update web implementations with placeholder methods
- Add phase2-2-android-fallback.ts usage examples
This completes Phase 2.2 Android fallback implementation:
- Exact alarm permission handling with graceful fallback
- Windowed alarm support (±10m) for battery optimization
- Reboot and time-change recovery with broadcast receivers
- Deep-link to exact alarm settings for user enablement
- Integration with existing TTL enforcement and rolling window
- Comprehensive fallback scenarios and error handling
Files: 7 changed, 1200+ insertions(+)
- Add DailyNotificationDatabase.java with three-table schema and WAL configuration
- Add DailyNotificationMigration.java for SharedPreferences to SQLite migration
- Add DailyNotificationDatabaseTest.java with comprehensive unit tests
- Add ConfigureOptions interface with dbPath, storage mode, and TTL settings
- Add configure() method to DailyNotificationPlugin interface
- Update Android plugin with SQLite integration and automatic migration
- Update web implementations to implement new configure() method
- Add phase1-sqlite-usage.ts example demonstrating shared storage configuration
This implements the critical Phase 1.1 gate for shared SQLite storage:
- App and plugin can open the same SQLite file with WAL mode
- Automatic migration from SharedPreferences preserves existing data
- Schema version checking prevents compatibility issues
- Concurrent reads during background writes enabled
- Configuration API supports both shared and tiered storage modes
Files: 8 changed, 1204 insertions(+)
- Add comprehensive dual scheduling interfaces to definitions.ts
- Implement ContentFetchConfig, UserNotificationConfig, and DualScheduleConfiguration
- Add new plugin methods for dual scheduling, content management, and callbacks
- Update web implementations with mock functionality for all new methods
- Fix all test files to include new dual scheduling method mocks
- Ensure TypeScript compilation and all tests pass successfully
Resolves: Plugin API design for dual scheduling system implementation
- Fix time format validation regex to require leading zeros
- Fix content handler validation with proper async/await
- Resolve Jest configuration issues with dist directory exclusion
- All test suites now passing: advanced-scenarios, enterprise-scenarios, daily-notification, edge-cases
- Complete validation system working correctly for time, timezone, content handlers
- Test suite stability confirmed with multiple runs
- Add URL requirement validation
- Add time format validation (24-hour format)
- Add timezone validation using Intl.DateTimeFormat
- Add retry count and interval range validation
- Add content handler validation with timeout support
- Add basic schedule conflict detection
- Update validation to run before plugin calls
- Make validation methods async for content handler testing
- All validation now happens in DailyNotification class before calling native plugin
- Fix test structure to use DailyNotification class with mocks
- Add proper validation for required URL parameter
- Fix event handler error handling in setupEventListeners
- Update all tests to use mock plugin instead of Capacitor plugin
- Add comprehensive validation tests for URL, time, timezone, retry settings
- All 18 daily-notification tests now passing
- Update interface definitions to match test requirements
- Add missing methods to DailyNotificationPlugin interface
- Fix ContentHandler signature compatibility
- Switch Jest test environment from node to jsdom
- Install required jsdom dependencies
- Update mock plugin objects with all required methods
- Fix timestamp type mismatches in tests
- Fix TypeScript compilation errors and interface mismatches
- Update interface definitions with complete type safety
- Resolve build system issues with Rollup configuration
- Fix web implementation and method signatures
- Update test files to match current interfaces
- Remove duplicate Jest configuration
- Add comprehensive project assessment documentation
Core Improvements:
- Complete interface definitions with proper type safety
- Fix validation logic in daily-notification.ts
- Update web platform implementation with all required methods
- Resolve module import/export issues
- Convert Rollup config to CommonJS for compatibility
Documentation:
- Add PROJECT_ASSESSMENT.md with comprehensive analysis
- Create CRITICAL_IMPROVEMENTS.md with detailed roadmap
- Add IMPROVEMENT_SUMMARY.md with current status
- Document missing Android implementation requirements
- Outline priority improvements and timeline
Build System:
- Fix Rollup configuration syntax
- Remove duplicate Jest configuration
- Ensure successful TypeScript compilation
- Resolve all module resolution issues
Testing:
- Update test files to match current interfaces
- Fix mock implementations and expectations
- Align test structure with actual implementation
Breaking Changes:
- Updated interface definitions for better type safety
- Removed non-existent method references
- Fixed timestamp types (string vs number)
Dependencies:
- No new dependencies added
- Build system compatibility improved
- TypeScript configuration optimized
The project now builds successfully and has a clear roadmap for
restoring the missing Android implementation and completing
production-ready features.
- Update package.json with modern build tooling and dependencies
- Streamline and enhance TypeScript definitions for better type safety
- Reorganize plugin structure for better maintainability
- Add comprehensive interface definitions for notification features
- Implement proper build configuration with rollup
- Update tsconfig.json for stricter type checking and ES2020 modules
Breaking Changes:
- Changed module structure to use ES modules
- Updated interface definitions with stricter typing
- Removed redundant notification options
- Simplified API surface while maintaining core functionality
Dependencies:
- Upgrade @capacitor dependencies to v5.7.8
- Add rollup and typescript build tools
- Update test framework configuration
- Add build scripts for Android and iOS platforms
- Remove duplicate web implementation (src/web.ts)
- Add proper TypeScript configuration
- Add module documentation to index.ts
- Clean up package.json scripts
This commit improves the project structure and build process by:
1. Adding dedicated build scripts for native platforms
2. Removing redundant web implementation
3. Adding proper TypeScript configuration with strict mode
4. Improving code documentation
5. Organizing package.json scripts
The changes maintain backward compatibility while improving
the development experience and code quality.