Skip to content

v2.5.11: ADHD Intake Safeguards, Take All Actions, Dynamic Snooze, and 100% Translations Parity

Latest

Choose a tag to compare

@saad2134 saad2134 released this 19 Oct 19:13
f30b275

v2.5.11: ADHD Intake Safeguards, Take All Actions, Dynamic Snooze, and 100% Translations Parity

Summary of Changes

Release v2.5.11 introduces a dose intake countdown timer and re-alert safeguard tailored for patients with ADHD, a bulk "Take All" confirmation action for multi-medication time slots, dynamic per-alarm snooze duration selectors, 100% complete translation parity across all 12 supported languages, comprehensive architectural modularization, and critical reliability fixes across profile isolation, backup restoration, and alarm lifecycle management.

⚠️ Note for existing GitHub APK users:
Because Dosezy v2.4.2+ transitions to our official production release signing key (required for Google Play), updating directly over older debug-signed APKs requires a quick backup & reinstall:

  1. In Dosezy, go to Menu -> Backup & Restore and tap Export/Create Backup.
  2. Uninstall the older version.
  3. Install the new v2.5.11 APK.
  4. Go to Menu -> Backup & Restore and tap Restore Backup to restore all profiles, medicines, and history in 1 tap.

📱 Patient App (Android)

  • ADHD Intake Countdown Timer and Re-Alert Safeguard (#104):
    • Added a countdown buffer before confirming intake with automatic audio and visual re-alert if distracted or forgotten.
    • Configurable countdown buffer durations (60s, 120s, 180s, 300s) available in user profile preferences.
    • Interactive ongoing notification with immediate actions: Extend (+1 Min), Confirm Taken, and Cancel.
    • Live countdown progress pill card displayed directly on the Home screen while a dose is pending intake confirmation.
    • Dedicated ADHD INTAKE RE-ALERT full-screen alarm screen with high-visibility badge and prompt.
  • Take All Multi-Medication Slot Action (#102):
    • Added a consolidated "Take All (X)" multi-dose confirmation card when two or more medications share the exact same scheduled time slot.
    • Prevents accidental bulk logging with an accessible confirmation dialog: "Mark all X medications scheduled for HH:mm as taken?".
    • Simultaneously decrements inventory stock and logs adherence records in a single atomic transaction.
    • Added a dedicated "Slide to Take All (X)" sliding gesture track in full-screen alarms.
  • Dynamic Per-Alarm Snooze Duration Selector (#103):
    • Added interactive duration chips (5m, 10m, 15m, 20m, 30m) directly on full-screen alarms, enabling patients to customize snooze time per-alarm without modifying global profile settings.
    • Integrated dynamic snooze actions into system notification actions.
  • 100% Locale Translation Parity Across 12 Languages:
    • Translated all newly introduced UI strings, notifications, settings, and dialogue options across Arabic, Bengali, German, Spanish, French, Hindi, Italian, Japanese, Portuguese, Russian, and Chinese.
    • Achieved 100% symmetric key parity (757 / 757 string keys) across all supported language catalogs.
  • Missed Dose Status Transitions and Action Flow (#105):
    • Resolved historical undo loop in ScheduleViewModel.kt allowing patients to directly take or skip doses that have transitioned to MISSED status without getting trapped in infinite prompt cycles.
  • Architecture and Modularization Refactoring (#106):
    • Modularized monolithic screens (NewUserScreen, MedicineFormComponents, MedicineTimingsAndDosagesCard, AlarmActivity) into maintainable, single-responsibility components.
    • Unified user and app preferences into reactive UserPreferencesDataStore.
    • Decoupled ViewModels by introducing formal domain layer use cases (ScheduleRecurrenceEngine, cohort dose actions).
    • Extracted PdfReportGenerator from DataExporter and BackupRestoreViewModel from BackupRestoreScreen.
  • Cross-Profile Emergency Contacts and Database Isolation:
    • Guarded Room database migration to prevent schema discrepancies and ensured emergency contacts and dial actions remain strictly scoped to the active patient profile.
    • Prevented cross-profile data leakage upon profile switching or deletion.
  • Backup and Restore Hardening:
    • Enforced atomic transactions and canonical path checks during ZIP extraction to eliminate Zip Slip and temp file leakage.
    • Preserved custom imported alarm audio tracks and medication photos across backup and restore cycles.
    • Resolved schedule entry ID collision risks during multi-file restores.
  • Alarm Lifecycle and Keyguard Compatibility:
    • Fixed lockscreen keyguard dismiss casting guard on Android 7.0 and 7.1 (API 24 and 25) avoiding ClassCastException.
    • Ensured profile deletion cleanly disarms and unregisters all associated alarms and Glance widget preferences.
    • Invalidated PRN calendar caches immediately upon logging as-needed doses.

🔌 OpenAPI 3.0 Platform & Ecosystem Parity

  • Updated OpenAPI 3.0 specification (api/openapi.yaml) to v2.5.11.
  • Added intakeSafeguardEnabled and intakeCountdownSeconds to User and UserCreateInput schemas.
  • Updated bidirectional Kotlin data mappers and mapping tables in api/README.md.

🔍 Full Changelog & Compare

Compare v2.5.10...v2.5.11