feat(android): folder and 2FA secret can be changed, and the buttons wear icons

The folder had no row of its own - it shared "Folder / tags" with the tags,
so neither could be touched. It is now CHOSEN from the known folders rather
than typed: a typo would file the entry under a folder nothing displays,
here or on the desktop, and it would look lost. Tags stay read-only because
they are an array in the snapshot, and writing one as a string would break
its shape for the desktop.

The 2FA secret gets its own masked row. The code has had a panel for a long
time, but it is computed and renewed every thirty seconds; the secret is what
one sets, changes and removes, and nothing allowed that from the phone.

User, Pass, Copy, Show and Edit become drawings. Four words on a list row left
little room for the entry's name and had to be re-read every time. Every icon
carries an aria-label: replacing a word with a drawing must not take the
information away from someone listening to a screen reader.
This commit is contained in:
r-zakarya
2026-08-21 21:51:42 +01:00
parent c25d68b721
commit 0badc5fcfc
4 changed files with 118 additions and 21 deletions
+14
View File
@@ -723,6 +723,20 @@ téléphone qu'on voudra ensuite ouvrir sur le poste demandera un import.
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.
**Dossier et secret 2FA** — ajoutés le 2026-08-21. Le dossier n'avait pas de
ligne à lui : il partageait « Folder / tags » avec les étiquettes, donc rien
n'était modifiable. Il se **choisit** dans la liste des dossiers connus
plutôt que de se taper — une faute de frappe rangerait l'entrée dans un
dossier que rien n'affiche, ni ici ni sur le poste, et elle semblerait
disparue. Les étiquettes restent en lecture seule : c'est un **tableau**
dans l'instantané, et l'écrire comme une chaîne casserait sa forme pour le
poste.
Le **secret** 2FA a désormais sa ligne, masquée comme un mot de passe. Le
*code* avait sa case depuis longtemps, mais il est calculé et renouvelé
toutes les trente secondes ; c'est le secret qui se pose, se change et se
retire, et rien ne permettait de le faire depuis le téléphone.
**Supprimer** — fait le 2026-08-21. `DeleteEntry` retire la ligne **et** pose
la pierre tombale `{uuid, deleted_at}` : les deux, sinon rien. Retirer la
ligne seule ne supprime pas — le poste tient toujours la sienne, et le