From 0eaaea40c13a8b87bcc16b6850d52100030c85b4 Mon Sep 17 00:00:00 2001 From: Siphonight Date: Sat, 5 Sep 2026 22:29:08 +0200 Subject: [PATCH] =?UTF-8?q?v1.2.8=20:=20=C2=AB=20Fr=C3=A9quence=20d'inject?= =?UTF-8?q?ion=20=C2=BB=20renomm=C3=A9=20=C2=AB=20Posologie=20=C2=BB=20;?= =?UTF-8?q?=20script=20:=20renommage=20d'asset=20apr=C3=A8s=20upload=20(qu?= =?UTF-8?q?irk=20Gitea)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - strings EN « Dosage » / FR « Posologie » ; hint « dernière prise » (au lieu de « dernière injection ») — adapté aux voies non injectables - quirk Gitea découvert : le nom d'asset passé à l'upload peut être normalisé (observé : -release.apk → .apk générique) → le script renomme l'asset via l'API d'édition (PATCH …/assets/{id}) après chaque upload - release v1.2.8 publiée avec les 2 APK (release 2,5 Mo + debug 21 Mo) - docs : §16.bis quirk, §8 (64 tests), historique, footer, README - versionCode 11, versionName 1.2.8 --- README.md | 2 +- docs/DEVELOPPEMENT.md | 10 +++++++--- scripts/gitea-release.py | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6f68631..2948f59 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,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.7 — build Android ✅, **64 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.8 — build Android ✅, **64 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/docs/DEVELOPPEMENT.md b/docs/DEVELOPPEMENT.md index c8a6f81..707cdae 100644 --- a/docs/DEVELOPPEMENT.md +++ b/docs/DEVELOPPEMENT.md @@ -71,6 +71,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.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. | Leçon importante de la session build : **les erreurs de compilation et les bugs sémantiques @@ -338,7 +339,7 @@ Type de retour : `LevelPoint(timestamp, e2, t)`. ## 8. Tests unitaires -**62 tests JVM, tous verts** (`./gradlew testDebugUnitTest`) — 44 sans les +**64 tests JVM, tous verts** (`./gradlew testDebugUnitTest`) — 44 sans les données de test locales (cf §8.bis). Dépendance : JUnit 4.13.2. Emplacement : `app/src/test/java/com/hormonetrack/`. Répertoire de travail d'exécution = `app/` → l'asset est lu via `src/main/assets/pk_profiles.json` (fallback `app/src/…`). @@ -763,7 +764,10 @@ Le script : le fallback « Voir docs/CHANGELOG.md » ; - crée la release si absente, sinon **met à jour le corps** (PATCH) ; - attache l'APK (remplace l'asset du même nom si présent) — appeler le script - DEUX FOIS pour publier les deux APK (noms distincts) : + DEUX FOIS pour publier les deux APK (noms distincts) ; + ⚠️ quirk Gitea : le nom passé à l'upload peut être normalisé (observé : + `-release.apk` → `.apk` générique) → le script RENOMME l'asset via l'API + d'édition (`PATCH …/assets/{id}`) après chaque upload — ne pas retirer ; `HormoneTrack-vX.Y.Z-release.apk` (**recommandé**, R8) et `HormoneTrack-vX.Y.Z-debug.apk` ; - lit le token Gitea dans le trousseau macOS (`security find-internet-password`) ; @@ -923,4 +927,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.7) — 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.8) — 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.* diff --git a/scripts/gitea-release.py b/scripts/gitea-release.py index 75a8757..768f8b6 100755 --- a/scripts/gitea-release.py +++ b/scripts/gitea-release.py @@ -134,6 +134,11 @@ def main(): "POST", token=token, files={"name": asset_name, "data": f.read()}, ) + # ⚠️ Quirk Gitea : le nom passé à l'upload peut être normalisé/écrasé + # (observé : "-release.apk"/"-debug.apk" → ".apk" générique) → renommage + # explicite via l'API d'édition d'asset, TOUJOURS. + request(f"{base}/releases/{release_id}/assets/{asset['id']}", + "PATCH", token=token, data={"name": asset_name}) link = asset.get("browser_download_url", "?") else: link = "—"