feat(android): every field of an entry can be changed, not just the password
PatchEntryField already took a field name; what was missing was carrying it from the row. It travels in the detail row itself rather than being guessed from the label - a caption is prose, and the day it changes the page would send a field name that does not exist, or quietly stop offering the edit. Delphi does not take it on trust either: four names accepted, the rest refused. The snapshot also carries tombstones, attachments and timestamps that PatchEntryField would overwrite without understanding them. An empty row now shows IF it can be filled - a missing username you cannot add is a dead end. Emptying is allowed, except on a password, where it would almost always be a slip; the refusal says so rather than doing nothing. Show only appears on a masked field: on a site in clear it has nothing to reveal, and would in fact hide it. A note keeps only Name and Content - a site and a username mean nothing there.
This commit is contained in:
+12
-2
@@ -659,8 +659,18 @@ téléphone qu'on voudra ensuite ouvrir sur le poste demandera un import.
|
||||
1. **Identité** : écran connexion / inscription, conteneur local, coffre vide.
|
||||
2. **Créer une entrée** — l'étape qui rend l'application utile seule. Un uuid
|
||||
neuf, `updated_at` posé ; pas de tombstone, on ne supprime pas encore.
|
||||
3. **Modifier n'importe quel champ, supprimer** : `PatchEntryField` prend déjà
|
||||
le nom du champ ; supprimer exige les tombstones.
|
||||
3. **Modifier n'importe quel champ** — fait le 2026-08-21. `Name`, `Site`,
|
||||
`Username`, `Mot de passe` (le corps pour une note) sont éditables. Le nom du
|
||||
champ voyage dans la ligne du détail (`TDetailRow.Field`) plutôt que d'être
|
||||
déduit du libellé côté page : un intitulé est de la prose, et le jour où il
|
||||
change, la page enverrait un nom de champ inexistant. Delphi ne le croit pas
|
||||
sur parole pour autant — quatre noms admis, le reste refusé, parce que
|
||||
l'instantané porte aussi des tombstones et des pièces jointes que
|
||||
`PatchEntryField` écraserait sans rien y comprendre.
|
||||
Une ligne vide s'affiche désormais **si elle est éditable** : un identifiant
|
||||
absent qu'on ne pourrait pas ajouter serait une impasse. Vider est permis,
|
||||
sauf sur un mot de passe où ce serait presque toujours une fausse manoeuvre.
|
||||
**Reste : supprimer**, qui exige les tombstones.
|
||||
4. **Réconcilier avec la synchronisation** : un coffre né seul auquel on
|
||||
ajoute un dépôt. C'est là que la fusion revient, et elle a été évitée
|
||||
jusqu'ici pour de bonnes raisons.
|
||||
|
||||
Reference in New Issue
Block a user