Lemenzo Clock v1.2 Premium ========================= Package: com.lemenzo.clock Soong module: LemenzoClock Replacement: DeskClock Integration: 1. Copy this folder to packages/apps/LemenzoClock. 2. Add LemenzoClock to vendor/secureline/secureline.mk PRODUCT_PACKAGES. 3. Build `m LemenzoClock LemenzoClockTests`. 4. Keep DeskClock until LemenzoClock compiles and passes device tests. 5. Then remove DeskClock from build/make/target/product/handheld_product.mk and verify target-files contains LemenzoClock.apk and not DeskClock.apk. Key v1.2 changes: - Correct split Android AlarmClock intent contract. - AlarmManager.setAlarmClock for user alarms and Bedtime wake alarm. - Multi-timers ring with foreground media service and full-screen UI. - Active timers reschedule after boot/time/timezone changes. - Bedtime includes an actual local wake alarm with snooze/dismiss. - Device-protected local storage; no INTERNET permission, account, analytics or cloud dependency. - English, Danish, German, Swedish and Norwegian core localization resources. - Expanded alarm/timer/privacy instrumentation regression tests. Do not remove DeskClock until compile + Pixel runtime verification is green. LemenzoOS production integration (required after app build is green): - Remove DeskClock from build/make/target/product/handheld_product.mk. - Keep LemenzoClock in vendor/secureline/secureline.mk. - Add com.lemenzo.clock to DefaultPermissionGrantPolicy notification packages so alarm/timer notifications work from first boot. - Verify target_files contains LemenzoClock.apk and no DeskClock.apk. - Do not grant READ_CALENDAR by default: upcoming events is optional and user-controlled. V1.4 production hardening: - reboot-safe skipped alarm occurrence timestamps - concurrent multi-timer ringing manager - user-selectable ambiguous DISMISS_ALARM handling - external skip-UI one-shot cleanup semantics - real local Clock settings applied to new alarms and ringing behavior - expanded regression tests