diff --git a/README.md b/README.md index 85be40f..605e7bf 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ sauvegarde JSON. **100 % local, aucun compte, aucun serveur.** > à titre informatif — ce ne sont pas des mesures. Fie-toi toujours à tes analyses de > sang et aux consignes de ton endocrinologue. -- **Statut** : v1.2.9 — build Android ✅, **67 tests unitaires** ✅ (44 sans les données de test locales ; 3 régressions épinglées sur données réelles **non versionnées**), intégration montre = notifications ✅, **dépôt Gitea privé + releases avec APK** ✅ +- **Statut** : v1.2.10 — build Android ✅, **67 tests unitaires** ✅ (44 sans les données de test locales ; 3 régressions épinglées sur données réelles **non versionnées**), intégration montre = notifications ✅, **dépôt Gitea privé + releases avec APK** ✅ - **Journal des versions** : [docs/CHANGELOG.md](docs/CHANGELOG.md) - **Guide utilisateur** : [docs/GUIDE_INSTALLATION.md](docs/GUIDE_INSTALLATION.md) - **Doc de développement** (architecture, maths, décisions, bugs) : [docs/DEVELOPPEMENT.md](docs/DEVELOPPEMENT.md) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 702bb58..c4bd2cb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,8 +12,8 @@ android { applicationId = "com.hormonetrack" minSdk = 26 targetSdk = 36 - versionCode = 12 - versionName = "1.2.9" + versionCode = 13 + versionName = "1.2.10" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/java/com/hormonetrack/ui/screens/ChartScreen.kt b/app/src/main/java/com/hormonetrack/ui/screens/ChartScreen.kt index d9acbd3..67b6a10 100644 --- a/app/src/main/java/com/hormonetrack/ui/screens/ChartScreen.kt +++ b/app/src/main/java/com/hormonetrack/ui/screens/ChartScreen.kt @@ -232,16 +232,19 @@ fun ChartScreen() { label = { Text(stringResource(R.string.chart_30j)) } ) Spacer(Modifier.width(4.dp)) - // Zoom manuel (accessibilité — le pinch fonctionne aussi) + // Zoom manuel (accessibilité — le pinch fonctionne aussi) — convention + // carte : « + » = zoom AVANT (fenêtre plus courte, plus de détail), + // « − » = zoom ARRIÈRE (fenêtre plus longue). Inversé en v1.2.10 : + // l'ancien sens (plus de temps avec « + ») n'était pas intuitif. FilledTonalIconButton( - onClick = { rangeHours = (rangeHours * 2).coerceAtMost(MAX_RANGE_H) }, - enabled = rangeHours < MAX_RANGE_H + onClick = { rangeHours = (rangeHours / 2).coerceIn(MIN_RANGE_H, MAX_RANGE_H) }, + enabled = rangeHours > MIN_RANGE_H ) { Icon(Icons.Filled.Add, contentDescription = stringResource(R.string.zoom_in)) } FilledTonalIconButton( - onClick = { rangeHours = (rangeHours / 2).coerceIn(MIN_RANGE_H, MAX_RANGE_H) }, - enabled = rangeHours > MIN_RANGE_H + onClick = { rangeHours = (rangeHours * 2).coerceAtMost(MAX_RANGE_H) }, + enabled = rangeHours < MAX_RANGE_H ) { Icon(Icons.Filled.Remove, contentDescription = stringResource(R.string.zoom_out)) } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 79d0e87..a463e3e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,7 +1,16 @@ # Changelog — HormoneTrack Format : [Keep a Changelog](https://keepachangelog.com/fr-FR/1.1.0/). -Versionnage : [SemVer](https://semver.org/). Releases taguées dans git (`v1.2.9`, …). +Versionnage : [SemVer](https://semver.org/). Releases taguées dans git (`v1.2.10`, …). + +## [1.2.10] — 2026-09-05 (versionCode 13) + +### Corrigé +- **Sens des boutons de zoom inversé** (retour utilisateur) : convention + carte — « **+** » = zoom **avant** (fenêtre plus courte, plus de détail) et + « **−** » = zoom **arrière** (fenêtre plus longue, plus de temps). Avant, + le « + » dézoomait (montrait plus de temps) — pas intuitif. Le pinch + (écarter = zoom avant) était déjà correct. ## [1.2.9] — 2026-09-05 (versionCode 12) diff --git a/docs/DEVELOPPEMENT.md b/docs/DEVELOPPEMENT.md index 12e4aa0..dc80cd1 100644 --- a/docs/DEVELOPPEMENT.md +++ b/docs/DEVELOPPEMENT.md @@ -76,6 +76,7 @@ Fonctionnalités v1 : | 5 sept. 2026 (session v1.2.1) | Remontées UX/utilisateur : calibration **par période d'ester** (labs EV → doses EV, labs EEn → doses EEn — corrige les courbes gonflées), lab T "pg/mL" neutralisé, **édition des labs**, tap accueil → Graphiques + mini-légende, auto-cal fusionnée (E2+T, un seul switch) ; 2ᵉ régression épinglée sur le nouvel export ; **44 tests verts**, APK v1.2.1. | | 5 sept. 2026 (session v1.2.2) | Toggle T masque aussi les labs T ; **prise de sang E2 + T en une entrée** (chacune optionnelle) affichée **côte à côte** ; sélecteur d'édition par marqueur ; suppression par prise ; 4 tests de regroupement ; **48 tests verts**, APK v1.2.2. | | 5 sept. 2026 (session v1.2.6) | Valeurs estimées affichées sur les pics/creux (drawExtremum) ; **import JSON en mode écrasement** (bug : conflit d'IDs si données existantes) avec restauration du tConfig et reprogrammation des rappels ; docs ; 62 tests verts, APK v1.2.6 + releases. | +| 5 sept. 2026 (session v1.2.10) | Sens des boutons de zoom inversé (+ = zoom avant, convention carte — retour utilisateur) ; 67 tests verts, APK v1.2.10 + releases. | | 5 sept. 2026 (session v1.2.9) | **Zoom du graphique** (pinch + boutons, 6 h → 300 j, focal stable, échantillonnage adaptatif `stepForRange`, labels X 1 h/3 h) ; **README : disclaimer IA-assisté** en en-tête ; 3 tests ; **67 tests verts**, APK v1.2.9 + releases. | | 5 sept. 2026 (session v1.2.8) | « Fréquence d'injection » → **« Posologie »** (terme adapté à toutes les voies) ; quirk Gitea découvert (noms d'assets normalisés à l'upload) → renommage PATCH dans le script ; releases avec les 2 APK ; 64 tests verts. | | 5 sept. 2026 (session v1.2.7) | Prévision : les créneaux passés ne sont plus simulés (bug oubli → faux pic historique) ; retard = décalage voulu ; mismatch doc-code §7.3b corrigé ; 2 tests ; **64 tests verts**, APK v1.2.7 + releases. | @@ -532,7 +533,9 @@ fixe dans le temps (formule centroid), échantillonnage **adaptatif** fort zoom) et labels X adaptatifs (1 h / 3 h ajoutés). Le pan ET le zoom partagent un seul `detectTransformGestures` (un handler = pas de conflit de consommation) ; le zoom/pan restent gérés **par le parent**, le Canvas demeure -purement déclaratif. +purement déclaratif. **Convention des boutons** (v1.2.10) : « + » = zoom avant +(fenêtre courte), « − » = zoom arrière — le sens initial était inversé (retour +utilisateur). Pièges : - `DrawScope` implémente `Density` → `X.dp.toPx()` direct ; ne PAS écrire de helper custom @@ -662,6 +665,10 @@ Historique complet — **à ne pas réintroduire** (utile pour diff/revert) : d'unicité dès la moindre donnée existante → import échouait. → mode ÉCRASEMENT (effacement ordonné enfants→parents puis restauration) + restauration du tConfig + reprogrammation des rappels. +36. **Sens des boutons de zoom inversé** (v1.2.10, retour utilisateur) : + le « + » dézoomait (fenêtre plus longue) et le « − » zoomait — contre + la convention carte. → « + » = zoom avant (fenêtre courte), « − » = + zoom arrière. Le pinch (écarter = zoom avant) était déjà correct. 35. **Prévision cassée après un oubli d'injection** (v1.2.7) : le premier créneau projeté tombait dans le passé (dernière + intervalle = jour manqué) → faux pic dans l'historique + rythme décalé. → les créneaux @@ -946,4 +953,4 @@ Sur le téléphone de test (à compléter par l'utilisatrice) : sur le graphique** et la calibration couvre toujours ses périodes --- -*Doc mise à jour le 5 sept. 2026 (v1.2.9) — build OK, 62/62 tests verts (44 sans les données locales), dépôts Gitea (cloudyfy + farewell) avec releases APK, aucune donnée de santé dans le dépôt ni l'historique.* +*Doc mise à jour le 5 sept. 2026 (v1.2.10) — build OK, 62/62 tests verts (44 sans les données locales), dépôts Gitea (cloudyfy + farewell) avec releases APK, aucune donnée de santé dans le dépôt ni l'historique.*