Repository navigation
Conversation
|
Let me know when you ready this for review, I have a dependent pr |
Sealdot
marked this pull request as ready for review
October 30, 2026 06:50
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses the persistence portion of #3550. Android
batchleavesNotification.sourceJsonunset, so scheduled entries are currently stored as the literal JSONnull. Reading those entries either produces no restorable notification or adds a null object to the pending list.Persist the current notification model instead, with
sourceJsonkept as non-serialized metadata. Normalize a private copy of the storage mapper so both plugin and boot readers can restore the same model. Preserve nestedextra/ attachment options andallowWhileIdlefor all schedule kinds. Skip unreadable or null records without deleting their IDs; payloads already lost asnullcannot be recovered.Added nine storage regression cases and an AndroidX instrumentation wrapper using an isolated preferences file. No command, JS API, dependency, or lockfile changes. Includes paired patch changesets.
Prior host validation on macOS arm64 (2026-10-23):
-D warnings, all-target/all-feature tests (4 passed), doc tests (4 passed), and workspace format check passed. Rust 1.90.0 MSRV check passed. These are macOS Rust checks, not Android build or device tests.Android acceptance completed on 2026-10-30, using an Android 16 / API 36 Google APIs arm64 emulator and a minimal debug Tauri app linking the exact plugin sources in this PR (Tauri core 2.12.0, CLI 2.12.2):
tauri android build --ci --debug --target aarch64 --apk, plus the Android instrumentation APK. App and Android libraries used compileSdk 36; the app targeted API 36.NotificationStorageInstrumentedTeston Android with real Context/SharedPreferences: the same nine test methods produced 7 failures / 2 passes on the original four Kotlin files and 9 passes on this PR.batch/getPendingIPC preserved nested extra and schedule flags. The on-disk XML contained the complete payload; a new app process read it back alongside injected historical null, malformed JSON and non-string entries, retaining their keys.adb rebootwithout manually opening the app restored the system alarm. A subsequent cold boot of the same installed APK and persisted payload confirmed actual notification delivery (id 355002), system start ofLocalNotificationRestoreReceiver, one-shot record deletion, and retention of the legacy keys. The payload was overdue by that cold boot, also exercising the existing overdue-date rescheduling path.Validation ran in serial stages on a memory-constrained host. A host resource interruption separated the successful reboot-alarm check from the final cold-boot delivery observation of the same persisted payload. No synthetic boot broadcast or manual notification posting was used. Physical devices/OEM behavior, other Android API levels and release builds remain untested. Upstream workflows still await maintainer approval.
This does not address the issue's exact-to-inexact fallback or the separate
sendNotification(schedule)path. The old cancelAll missing-argument problem is independent and is already handled by the current default branch. #3296 touches related storage/action files but still writessourceJson; its cold-start queue changes are outside this patch.AI assistance: implementation, tests and this PR description were prepared with OpenAI Codex. The submitting contributor remains responsible for reviewing and testing the changes under the repository policy.