- Fix TestNativeFetcher to read from same SharedPreferences as plugin
- Changed PREFS_NAME from 'DailyNotificationPrefs' to 'daily_notification_timesafari'
- Changed KEY_STARRED_PLAN_IDS from 'starred_plan_ids' to 'starredPlanIds'
- Updated getStarredPlanIds() to read from plugin's SharedPreferences location
- Added diagnostic logging for plan ID loading
- Add updateStarredPlans() call in App.vue mounted() hook
- Ensures starred plan IDs are persisted to native storage on app startup
- Allows native fetcher to read plan IDs from SharedPreferences
- Added diagnostic logging for configuration flow
- Document cross-platform storage pattern
- Created docs/CROSS_PLATFORM_STORAGE_PATTERN.md with architecture flow
- Documented TypeScript → Capacitor bridge → Plugin → Native storage → Native fetcher flow
- Added iOS implementation checklist with code examples
- Clarified why native storage is needed (background workers can't use bridge)
- Add JWT generation logging to test-user-zero.ts
- Log JWT algorithm (ES256K) and DID when token is generated
- Helps diagnose JWT verification issues
Fixes:
- Empty planIds array in native fetcher requests
- SharedPreferences key mismatch between plugin and native fetcher
- Missing documentation for iOS implementation
All changes maintain backward compatibility.