- Dialog « Nouveautés » (v1.3.0) : au démarrage, si la version installée est
plus récente que la dernière vue (DataStore changelog_seen_version), un
AlertDialog affiche les sections CHANGELOG non vues (ChangelogHelper
sectionsSince + comparaison SemVer NUMÉRIQUE — 1.2.9 < 1.2.10, lexicographique
aurait tort) ; asset changelog.md synchronisé à chaque build par la tâche
Gradle copyChangelog (gitignoré) ; fermable, ne réapparaît pas avant la
prochaine mise à jour
- Événements d'agenda récurrents (CalendarEvents.kt) : calendrier LOCAL dédié
« HormoneTrack » (CalendarContract, ACCOUNT_TYPE_LOCAL), événement avec
RRULE FREQ=DAILY;INTERVAL=N dérivé de la Posologie (arrondi demi-supérieur
EXPLICITE floor(x+0.5) — kotlin.math.round arrondit les ties vers l'entier
PAIR : 6,5 → 6, piège épinglé), début = prochaine occurrence à l'heure de
rappel (ou 12:00) ; switch dans l'éditeur sous « Rappels », permissions
WRITE_CALENDAR + READ_CALENDAR demandées à l'activation ; suppression/
recréation au save ; id stocké sur Treatment (Room v3, MIGRATION_2_3)
- Paramètres : version installée (BuildConfig.VERSION_NAME, buildConfig=true)
+ lien cliquable vers les releases Gitea
- Tests : ChangelogHelperTest (8) + CalendarRruleTest (3) → 78 tests verts
- versionCode 14, versionName 1.3.0
- RegressionUserCase{,2}Test chargent le backup réel depuis local-test-data/
(gitignoré) et sont IGNORÉS proprement (Assume) si le fichier est absent —
plus aucune donnée de santé personnelle embarquée dans le dépôt
- KDoc LabDialog : exemple 300.0 (au lieu d'une valeur réelle)
- script d'anonymisation /tmp/scrub.py prêt pour filter-branch (historique)