Dosezy
Abstract
v2.5.10: Dosage Units (mEq, Puffs, Ampules), Home Timeline View, Slide Alarm Actions, and Appearance Settings Summary of Changes Release v2.5.10 introduces support for additional medication dosage units (mEq, puffs, and ampules), a clean expanded vertical timeline view for the home screen, dedicated sliding gesture tracks for taking and snoozing alarms, thicker full-frame calendar day highlights, a reorganized Appearance preferences section, and critical data portability and synchronization fixes. ⚠️ 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.10 APK. Go to Menu → Backup & Restore and tap Restore Backup to restore all profiles, medicines, and history in 1 tap. 📱 Patient App (Android) Appearance Section & Preference Organization: Reorganized app preferences with a new Appearance section positioned right below General, housing Theme customization, navigation button visibility, and new visual toggles. Separate Slide to Take & Slide to Snooze Alarms: Added dedicated large sliding action tracks in alarm alerts: drag left-to-right to record taken doses and right-to-left to snooze, with crisp vector arrow icons and tremor-friendly geometry. Buttons remain strictly separate with clear directional guidance; enabled by default and togglable from Preferences. Variable Dosage Setup Toggle & Form Layout: Redesigned the per-time variable dosage option with a prominent toggle switch placed above the dosage section. Automatically hides the redundant single dose input when variable dosing is enabled, and perfectly aligns scheduled time containers and dose input fields to matching heights. Home Page Timeline View Mode: Introduced an optional clean, large vertical timeline view mode displaying the day's doses along a continuous progress track with color-coded status nodes and quick top bar switching. Thicker Full Frame Calendar Day Highlights: Added an option in Appearance to outline scheduled days on the calendar with a full colored frame and container tint instead of only bottom underlines. Additional Medication Dosage Units (mEq, Puffs, Ampules): Added support for mEq (milliequivalents for electrolyte supplements), puff (actuations for metered-dose inhalers), and ampule (single-use liquid containers) across medication setup, reminders, full-screen alarms, and histories. Implemented unit-specific inventory stock deduction: discrete per-intake deduction for mEq and ampules, and exact dose puff deduction for inhaler canisters. Integrated with pharmacy refill calculations, WhatsApp order formatting, Doctor PDF reports, and JSON backups with backward-compatible alias parsing (actuations, ampoules, etc.). Added native translations across all 12 supported app languages. Medication Frequency Deserialization Parity: Fixed a critical deserialization defect in BackupRestoreManager.kt where medication frequency schedules (EVERY_X_HOURS, EVERY_X_DAYS, WEEKLY, MONTHLY, CUSTOM) were wiped and defaulted to DAILY when restoring flattened archives or JSON exports generated by DataExporter. Added defensive multi-format frequency decoding in parseMedicinesFromJson supporting both nested {"frequency": {...}} and flattened JSON attributes (frequencyPattern, intervalHours, daysPerWeek, etc.). Updated DataExporter.kt to serialize both nested and flattened frequency structures for maximum cross-format compatibility. Theme & Widget Preference Synchronization on Profile Deletion: Fixed an issue in UserViewModel.kt where deleting the currently active profile promoted the next available user but left app_prefs and DosezyWidgetPrefs locked to the deleted profile's theme. Automatically synchronizes theme settings with the newly promoted user's theme upon deletion and falls back cleanly to system theme when no profiles remain. Multi-Profile Onboarding Restore Selection: Fixed an issue in NewUserScreen.kt where restoring a multi-profile backup during onboarding picked the first arbitrary database record rather than the profile marked as active (isCurrentUser = true). Added safe active-profile resolution (updatedUsers.find { it.isCurrentUser } ?: updatedUsers.first()) to navigate patients to the correct primary profile. Backup and Restore Tab Group (Automatic and Manual): Redesigned the Backup & Restore screen into a clean tab group with Material 3 TabRow and smooth Crossfade animation. Distinctly separates future network sync options (Automatic tab for Cloud Sync & Self-Hosted server backups) from local offline tools (Manual tab for Encrypted ZIP Export and Selective Profile Restore). Designed with accessible 52.dp touch targets and translated across all 12 supported languages. Low-End and Older Device Performance and Smoothness Optimizations: Integrated androidx.profileinstaller for Ahead-Of-Time (AOT) ART bytecode compilation on Android 7.0–11 and sideloaded APKs, reducing initial screen composition lag by 30–40%. Added @Immutable stability annotations across core data models (Medicine, ScheduleEntry, ScheduleWithMedicine, User) to enable Compose compiler smart recomposition skipping. Converted HomeScreen and ScheduleScreen scroll containers to virtualized LazyColumn with stable item keys, eliminating simultaneous multi-card layout measurement lag. Introduced hardware-accelerated 140ms micro-fade navigation transitions (fadeIn / fadeOut) to eliminate abrupt "frozen tap" frame hitches. Hoisted ViewModel resolutions and state collections out of schedule list rows, eliminating redundant StateFlow observers. Cached custom squircle drawing paths in NavigationBar to prevent per-frame GPU allocations. Backup Export Path Display in Success Dialog: Fixed an issue in BackupRestoreScreen.kt where exporting a full backup archive displayed "Data exported to:" without rendering the destination archive filename or full storage path. Added an accessible path details container with SelectionContainer and vertical scroll support, allowing users to view, select, and locate the exported .zip archive on device storage. 🔍 Full Changelog & Compare Compare v2.5.9...v2.5.10