-
v1.3.4 Stable
released this
2026-09-06 12:38:57 +02:00 | 50 commits to main since this releaseCorrigé
- L'écran Doses faisait crasher l'app (remontée) :
MissingFormatArgumentException: Format specifier '%3$d'— la stringhrt_durationa TROIS placeholders
(%1$d mois, %2$d jours, %3$d total) mais l'appel transmettait 2 arguments.
Crash dès le premier affichage de l'écran Doses avec une donnée antérieure à
aujourd'hui. Le bug est né en v1.3.1 (string + appel dans le même commit,
jamais testés ensemble) et a survécu aux releases v1.3.1→v1.3.3. Fix : passer
totalDays en 3ᵉ argument (cf §14 #47). - L'export des logs de diagnostic faisait crasher l'app (remontée répétée ;
les « fixes » IO de v1.3.2 et v1.3.3 étaient corrects mais à côté du vrai
problème) : le nom de fichier était construit via
LocalDate.now().format(ofPattern("yyyyMMdd-HHmm"))— unLocalDaten'a pas
de champ horaire →UnsupportedTemporalTypeException: Unsupported field: HourOfDay, levée SYNCHRONEMENT dans le onClick (thread UI) au tap sur
« Exporter », avant même l'ouverture du gestionnaire de fichiers. L'export
JSON fonctionnait car son patternyyyyMMddest valide pour un LocalDate.
FIX : utilitaireExportFileNames(pur, testé) —diagnosticLogFileName()
utilise unLocalDateTime;backupFileName()reste surLocalDate.
Cf §14 #48. - Lint
StringFormatMatches(détecté en implantant le lint — nouveau filet
de la v1.3.4) : la notification de rappel passait un Double à une%s.
Fix :dose.toString()(comportement d'affichage inchangé, #49).
Ajouté
- Lint en filet bloquant :
./gradlew lintest désormais vert (it aurait
attrapé dès v1.3.1 les deux crashs ci-dessus viaStringFormatMatches).
Les deux checks Compose 1.12+ théoriques (NonObservableLocale,
LocalContextGetResourceValueCall) sont rétrogradés en warning via
app/lint.xml(staleness de config, refonte i18n plus tard, cf §19/§20). - Recette reproductible : test manuel sur émulateur (documentée §16.ter) :
émulateur + image ATD ou google_apis, seed de la DB du debug avec un backup
JSON via le nouveau scriptscripts/seed-emulator.py(générique, sans
aucune donnée embarquée), installation du APK release par-dessus (données
conservées, même signature), pilotage paruiautomator dump+input tap,
crashs viaadb logcat -b crash. C'est cette recette qui a reproduit et
confirmé les deux crashs ci-dessus ainsi que LEUR correction (flux SAF
complet : picker → SAVE → fichier écrit → message de confirmation, sur
l'APK release données réelles). - 3 nouveaux tests (
ExportFileNamesTest, 90 au total / 72 sans les
données locales) : épinglent le format des noms de fichiers d'export —
auraient attrapé le bug #48 le jour même.
Downloads
- L'écran Doses faisait crasher l'app (remontée) :