11 Commits

Author SHA1 Message Date
09cddfc8ee v1.9.8 : socle qualité — tests UI Compose (13), signature release dédiée, découpage Settings + README anglais
- 13 tests UI instrumentés (uitest/) : navigation 5 onglets, dialog Nouveautés
  (épinglage du fix v1.3.2), sections Paramètres, version installée = BuildConfig
  (anti-bug #46). Déterministes : pm grant shell, markChangelogSeen, assertions
  via targetContext (FR/EN), zéro dépendance aux données Room.
- Signature release conditionnelle : scripts/make-release-keystore.sh (shellcheck+shfmt)
  + keystore.properties gitignoré ; assembleRelease l'utilise s'il existe, sinon
  clé debug inchangée. Migration documentée §16.quater.
- SettingsScreen découpé : 840 lignes -> orchestrateur 377 + 11 cartes dans
  ui/screens/settings/ (déplacement pur, commentaires conservés). ChartScreen
  volontairement entier (garde de source #54).
- README.en.md complet + liens FR/EN croisés.

Vérifié : 249 tests JVM + 13 UI verts, lint vert, smoke RELEASE émulateur
(données réelles seedées : accueil, prochaines doses, suggestion creux,
graphiques ESE+TFS superposés, 0 crash logcat — anti-#64).
2026-09-22 22:39:42 +02:00
71659b5647 v1.3.4 : 2 crashs v1.3.3 reproduits sur émulateur (données réelles) et corrigés — #47 Doses : stringResource hrt_duration 3 placeholders vs 2 args (né v1.3.1) ; #48 export logs : LocalDate.format('…-HHmm') levait UnsupportedTemporalTypeException au tap → util ExportFileNames + 3 tests ; #49 notif dose StringFormatMatches ; lint filet bloquant (app/lint.xml) ; recette émulateur §16.ter + scripts/seed-emulator.py ; 90 tests verts 2026-09-06 12:38:57 +02:00
f5e58364a3 Docs : publish-release.py documenté (§16.bis + §14 #43 + CHANGELOG), farewell 12 releases complètes, README dépôts jumeaux 2026-09-06 10:51:46 +02:00
7e8a2f6d6f scripts/gitea-release.py : régénération complète — ensure_asset vérifie par TÉLÉCHARGEMENT (le listing a menti pendant les uploads rapprochés) ; retry DELETE+re-upload ×2 ; échec bruyant ; docs/code commentés 2026-09-05 23:51:23 +02:00
f695d3b99e scripts/gitea-release.py : ensure_asset (upload + vérif nom/taille + retry PATCH + échec bruyant) — les ?name=/PATCH pouvaient être ignorés (v1.2.6/v1.2.10) ; docs §16.bis/§14 #37 2026-09-05 23:45:45 +02:00
e2218fd3f1 Docs/scripts : correction d'attribution — le nom d'asset générique venait de l'upload interrompu (extinction machine), pas d'un quirk Gitea ; renommage PATCH conservé comme défense 2026-09-05 23:28:02 +02:00
0eaaea40c1 v1.2.8 : « Fréquence d'injection » renommé « Posologie » ; script : renommage d'asset après upload (quirk Gitea)
- 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
2026-09-05 22:29:08 +02:00
1cd3d0f2e4 scripts/gitea-release.py : DELETE renvoie {} (204 sans corps) ; nettoyage des assets v1.2.6 (release 2,4 Mo + debug 20 Mo) 2026-09-05 21:59:18 +02:00
9c6c414d9c scripts/gitea-release.py : gère les réponses 204 sans corps (DELETE d'asset) — crash json.loads sur réponse vide 2026-09-05 21:56:23 +02:00
1a06c3c844 Release script multi-instances (cloudyfy + farewell), remotes et docs §16
- scripts/gitea-release.py : argument d'instance (URL/owner/trousseau par hôte),
  usage inchangé sinon ; tokens par instance dans le trousseau macOS
- remotes : origin (cloudyfy, HTTPS) + farewell (SSH, alias giteassh:2222)
- docs §16/§16.bis : deux remotes, scopes des tokens, commande d'ajout au
  trousseau pour farewell
2026-09-05 20:21:35 +02:00
89d93f763d scripts/gitea-release.py : releases automatisées (corps = section CHANGELOG, APK en pièce jointe)
- le corps de chaque release Gitea est extrait de docs/CHANGELOG.md (la section
  [X.Y.Z] de la version) — les 5 releases existantes ont été mises à jour (le
  1er script cherchait [vX.Y.Z] et était tombé sur le fallback)
- crée ou met à jour la release (PATCH), remplace l'asset APK du même nom
- token Gitea lu dans le trousseau macOS, scope write:repository suffisant
- §16.bis documente le script + le piège du préfixe « v »
2026-09-05 19:46:10 +02:00