diff --git a/android-client/PLAN.md b/android-client/PLAN.md index 366c8a7..f404820 100644 --- a/android-client/PLAN.md +++ b/android-client/PLAN.md @@ -252,10 +252,13 @@ Par ordre de gravité, pas de taille. Ce qui reste hors de portée : le bouton *Envoyer à l'appareil* de cette vignette appartient à Android. Le drapeau masque le contenu, il ne retire pas l'action. -5. **Sortir l'URL et le jeton du code source.** Ce sont encore des constantes. - Le mot de passe de sync, lui, est déjà rangé dans le fichier chiffré par le - Keystore ; reste à en faire autant pour les deux autres, et à supprimer le - préremplissage depuis [PMA.LocalConfig.inc](PMA.LocalConfig.template.inc). +5. ~~**Sortir l'URL et le jeton du code source**~~ — **fait**. Les deux vivent + dans `settings.bin`, chiffré par le Keystore, dès que l'appareil les a une + fois enregistrés ; le mot de passe de sync y était déjà. Le préremplissage + depuis [PMA.LocalConfig.inc](PMA.LocalConfig.template.inc) subsiste **en + débogage seulement** — mesuré absent d'une release, en UTF-8 comme en + UTF-16 (voir §5). Il reste par décision, pas par oubli : hors dépôt, hors + release, et le jeton n'ouvre qu'un dépôt d'essai. 6. ~~**Verrouillage sur inactivité au premier plan**~~ — **fait**, 3 minutes, échantillonné toutes les 15 s. Reste à constater passivement sur appareil. @@ -450,16 +453,16 @@ save: published, new sha 802515d4... Les 23 ms mesurent l'économie de la clé réutilisée : la seconde dérivation valait les mêmes 4,5 secondes que la première. -**Ce qui reste ouvert**, par ordre d'importance : +**Ce qui restait ouvert a été fermé depuis** (voir §7) : le **409** a tourné — +c'était un 422 —, **tous les champs** se modifient, et créer, dupliquer et +supprimer existent avec leurs pierres tombales. -- le **409** n'a jamais tourné ; -- **pas d'édition hors ligne** : le téléphone patche l'instantané qu'il vient - de tirer, donc sans réseau *Save* échoue. C'est le prix de ne pas avoir de - fusion à écrire. Une file de modifications en attente la ramènerait, avec - l'arbitrage qui va avec ; -- **un seul champ** est modifiable. `PatchEntryField` prend déjà le nom du - champ, donc l'identifiant ou le site coûteraient une ligne ; créer ou - supprimer une entrée, en revanche, exige uuid et tombstones. +Il reste une seule chose, et c'est un choix, pas un manque : **pas d'édition +hors ligne**. Le téléphone modifie l'instantané qu'il tient et le publie ; sans +réseau, *Save* échoue. C'est le prix de ne pas avoir de fusion à écrire dans le +chemin d'écriture courant. Une file de modifications en attente la ramènerait, +avec l'arbitrage qui va avec — et `MergeSnapshots` existe désormais, ce qui en +réduit le coût. ### L'interface, remise d'aplomb — 2026-08-21