# Changelog All notable changes to the Daily Notification Plugin will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.1.6] - 2026-02-16 ### Fixed - **Android**: Alarm set after edit/reschedule now fires. Removed `existingPendingIntent.cancel()` in the "cancel existing alarm before rescheduling" path so the PendingIntent passed to `setAlarmClock` is not cancelled (only `alarmManager.cancel()` is used), fixing no-fire on some devices. ## [1.1.5] - 2026-02-16 ### Fixed - **Android**: Rollover work using a `daily_rollover_*` schedule id no longer overwrites the app's schedule row in the DB. `NotifyReceiver` post-schedule update skips the "first enabled notify" fallback when `stableScheduleId` starts with `daily_rollover_`, so the app's reminder (e.g. `daily_timesafari_reminder`) keeps the correct `nextRunAt` after a notification fires. ### Added - **Docs**: `doc/platform/android/CONSUMING_APP_ANDROID_NOTES.md` — notes for consuming apps on debouncing double `scheduleDailyNotification` calls and debugging alarms that are scheduled but do not fire (logcat with `DailyNotificationReceiver`). ## [1.1.4] - 2026-02-16 ### Fixed - **Android**: Re-setting a daily notification (edit/save same time) no longer cancels the alarm and then skips re-scheduling. DB idempotence in `NotifyReceiver.scheduleExactNotification()` now runs only when `!skipPendingIntentIdempotence`, so the app reset flow can re-register the alarm. - **Android**: Static reminder title/body no longer revert to fallback after the first fire. `DailyNotificationWorker.scheduleNextNotification()` now preserves `is_static_reminder` and stable `scheduleId` on rollover so the next occurrence keeps custom text. ### Added - **Android**: `cancelDailyReminder(call)` in `DailyNotificationPlugin.kt` for parity with iOS. Accepts `reminderId` (or `id`, `reminder_id`, `scheduleId`), cancels the AlarmManager alarm for that id, and performs best-effort DB cleanup (`setEnabled` false, `updateRunTimes` null). ## [1.1.3] - 2026-02-13 ### Fixed - **Android (Java)**: Java call sites for `NotifyReceiver.scheduleExactNotification()` now pass the 8th parameter `skipPendingIntentIdempotence`, fixing "actual and formal argument lists differ in length" when building consuming apps. Updated `DailyNotificationReceiver.java` and `DailyNotificationWorker.java`. ## [1.1.2] - 2026-02-13 ### Fixed - **Android**: Second daily notification not firing after reschedule. After cancel-then-schedule, the idempotence check could still see the cancelled PendingIntent in Android's cache and skip the new schedule. The cancel-then-schedule path now skips PendingIntent-based idempotence so the new alarm is always registered. ## [1.1.1] - 2026-02-05 ### Fixed - **Android**: Target alarm broadcast to app package so receiver is triggered correctly ### Documentation - EMULATOR_GUIDE: prerequisites, API 35, Apple Silicon; build.sh Android-only sync ## [2.1.0] - 2025-01-02 ### Added - **Static Daily Reminders**: New functionality for simple daily notifications without network content - **Cross-Platform Reminder API**: Consistent reminder management across Android, iOS, and Web - **Reminder Management**: Full CRUD operations for reminder scheduling and management - **Offline Reminder Support**: Reminders work completely offline without content caching - **Rich Reminder Customization**: Support for custom titles, bodies, sounds, vibration, and priorities - **Persistent Reminder Storage**: Reminders survive app restarts and device reboots ### New Methods - `scheduleDailyReminder(options)`: Schedule a simple daily reminder - `cancelDailyReminder(reminderId)`: Cancel a specific reminder - `getScheduledReminders()`: Get all scheduled reminders - `updateDailyReminder(reminderId, options)`: Update an existing reminder ### Features - **No Network Dependency**: Static reminders work completely offline - **Simple Time Format**: Easy HH:mm time format (e.g., "09:00") - **Priority Levels**: Support for low, normal, and high priority notifications - **Repeat Options**: Configurable daily repetition - **Platform Integration**: Native notification channels and categories - **Test App Integration**: Complete test app support for reminder functionality ### Documentation - Updated README.md with static reminder examples and API reference - Added comprehensive usage examples in USAGE.md - Created detailed example file: `examples/static-daily-reminders.ts` - Enhanced test apps with reminder management UI ## [1.0.0] - 2024-03-20 ### Added - Initial release of the Daily Notification Plugin - Basic notification scheduling functionality - Support for multiple notification schedules - Timezone-aware scheduling - Offline support with content caching - Retry logic with exponential backoff - Custom notification content handlers - Event-based notification handling - Comprehensive settings management - TypeScript support with full type definitions ### Features - Schedule daily notifications at specific times - Support for multiple notification schedules - Timezone-aware scheduling - Offline support with content caching - Retry logic with exponential backoff - Custom notification content handlers - Event-based notification handling - Comprehensive settings management ### Security - HTTPS-only network requests - Content validation before display - Secure storage of sensitive data - Permission-based access control - No sensitive data in logs ### Documentation - Comprehensive API documentation - Usage examples for basic and advanced scenarios - Enterprise-level implementation examples - Security best practices - Platform-specific implementation details ### Testing - Unit tests for core functionality - Integration tests for platform features - Advanced scenario tests - Enterprise feature tests - Security validation tests ## [0.9.0] - 2024-03-15 ### Added - Beta release with core functionality - Basic notification scheduling - Simple content handling - Basic event system ### Changed - Improved error handling - Enhanced type definitions - Better documentation ### Fixed - Initial bug fixes and improvements - TypeScript type issues - Documentation clarity ## [0.8.0] - 2024-03-10 ### Added - Alpha release with basic features - Initial plugin structure - Basic TypeScript interfaces - Simple notification scheduling ### Changed - Early development improvements - Initial documentation - Basic test setup ### Fixed - Early bug fixes - Initial type issues - Basic documentation ## [Unreleased] ### Added - Enterprise features - Notification queue system - A/B testing support - Advanced analytics tracking - User preferences management - Content personalization - Rate limiting - Additional test scenarios - More example implementations - Enhanced documentation ### Changed - Improved error handling - Enhanced type definitions - Better documentation structure - More comprehensive examples ### Fixed - TypeScript type issues - Documentation clarity - Test coverage gaps - Example code improvements ### Security - Enhanced security measures - Additional validation - Improved error handling - Better logging practices ### Documentation - Added enterprise usage examples - Enhanced API documentation - Improved security guidelines - Better troubleshooting guides ### Testing - Added enterprise scenario tests - Enhanced test coverage - Improved test organization - Better test documentation