Dosezy
Abstract
v2.5.9: Custom Multi-Week Recurrence, Android 15 Edge-to-Edge, and Cross-Platform Schema Parity Summary of Changes Release v2.5.9 introduces custom multi-week recurrence scheduling (e.g. taking medications every 2 or 3 weeks on specific days), enforces strict portrait orientation across all activities, normalizes device UI zoom to a 412dp baseline, adopts modern Android 15 edge-to-edge insets while removing deprecated window APIs, adds outside-tap soft keyboard dismissal and IME padding to prevent obscured inputs, fixes Eastern Arabic-Indic and Persian or Urdu digit parsing, resolves older Android runtime localization, and achieves 100% cross-platform parity with the OpenAPI 3.0 specification. ⚠️ 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: In Dosezy, go to Menu → Backup & Restore and tap Export/Create Backup. Uninstall the older version. Install the new v2.5.9 APK. Go to Menu → Backup & Restore and tap Restore Backup to restore all profiles, medicines, and history in 1 tap. 📱 Patient App (Android) Custom Multi-Week Recurrence Scheduling: Added multi-week cycle recurrence support (intervalWeeks) allowing patients to schedule doses every 2, 3, or more weeks on specific selected weekdays. Updated dose schedule generation algorithm in Medicine.kt to calculate accurate recurring week offsets from prescription start dates. Integrated cycle-aware refill calculations and stock forecasting for custom week intervals. Fully translated week recurrence labels and stepper controls across all 12 supported locales. Portrait Orientation Lock: Enforced locked portrait orientation across SplashActivity, MainActivity, and AlarmActivity in AndroidManifest.xml and programmatically at runtime to guarantee predictable mobile layouts. Normalized Device Zoom & Font Scaling: Implemented a 412dp baseline scaling container in Theme.kt with a capped font scale (minOf(fontScale, 1.0f)) to normalize display density and prevent oversized elements on zoomed small screens. Android 15+ Edge-to-Edge & Deprecated Flag Cleanup: Migrated to enableEdgeToEdge() across all activities to comply with Android 15 and 16 requirements. Removed deprecated window flags (statusBarColor, windowLightStatusBar, windowFullscreen) and decor view background overrides. Keyboard Insets & Outside-Tap Dismissal: Configured windowSoftInputMode="adjustResize" and added .imePadding() across all input subscreens (AddMedScreen, EditMedScreen, ManageProfileScreen, NewUserScreen, MedicinesScreen) so bottom action buttons and text fields remain fully accessible above the soft keyboard. Added outside-tap gesture listeners to clear input focus and dismiss the soft keyboard automatically. Eastern Arabic-Indic & Persian or Urdu Digit Normalization: Added normalizeArabicDigits() helper to sanitize localized numerals (\u0660-\u0669 and \u06F0-\u06F9) and decimal separators into ASCII before interval parsing and slot map storage. Runtime Localization on Older Android Versions: Fixed resource string resolution and ContextWrapper configuration for runtime locale switching on API 24–32. Interactive Scrollable Widget & Profile Binding: Replaced the static widget with an interactive, scrollable medication list powered by an adapter-backed RemoteViewsService. Added widget profile configuration (DosezyWidgetConfigureActivity) to lock home-screen widgets to specific family members or follow the dynamic active profile. Automatically switches the active patient profile upon tapping a profile-bound widget. Variable Dosage & Search Bar Refinements: Fixed multi-dosage by time editing bug where modifying a time entry cleared the configured dosage quantity. Aligned frequency selection options logically (Daily, Weekly, Monthly, Every X [time], As Needed). Balanced search bar padding across medication list screens. Data Exporter Parity: Updated DataExporter.kt to serialize daysPerWeek, daysPerMonth, selectedDaysOfWeek, selectedDaysOfMonth, and imageUri in exported patient JSON reports. 🔌 API & Cross-Platform Parity OpenAPI 3.0 Full Schema Parity: Synchronized api/openapi.yaml to v2.5.9 with complete 1:1 Room database model field mapping. Defined explicit security schemes (BearerAuth) and public bypass for /health. Added standard RESTful 4XX (BadRequest, NotFound) and 5XX error responses. Refactored enum defaults from $ref siblings directly into component schemas (Theme, TimeFormat, Language, AlarmSound). Validated with Redocly CLI: 0 errors, 0 warnings. Bidirectional Data Mappers: Added complete, bidirectional Kotlin extension functions in api/README.md for User, Frequency, Medicine, and ScheduleEntry. 🔍 Full Changelog & Compare Compare v2.5.8...v2.5.9