feat(android): dire pourquoi le cache est illisible, et accepter un mot de passe comme code

"Local vault unreadable" laissait croire a une corruption, donc a une
perte, alors que le coffre est intact dans le depot. Quand Android a
lui-meme detruit la cle - verrouillage d'ecran retire ou reinitialise -
l'application le dit maintenant, et dit aussi que rien n'est perdu.

Le tri passe par un drapeau pose la ou l'invalidation se constate, pas
par un test sur le texte du message : c'est ce tri-la, fait sur des
chaines, qui detruisait autrefois le cache en se trompant.

Le code de deverrouillage accepte un mot de passe, et l'a toujours
accepte - aucune validation n'a jamais impose des chiffres. Seul
inputmode="numeric" le laissait croire, et le clavier numerique
decourageait d'essayer. Clavier complet, libelles et note mis a jour.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-28 15:24:29 +01:00
parent 8b4130f13e
commit ea2450abfd
3 changed files with 44 additions and 7 deletions
+15 -1
View File
@@ -2082,7 +2082,21 @@ begin
FVaultUnreadable := True;
ShowUnlock;
Log('Local vault unreadable: ' + LastStoreError);
Status('Local vault unreadable - see log');
// DIRE LAQUELLE DES DEUX. "Illisible" laisse croire a une corruption, donc
// a une perte - alors que le coffre est intact dans le depot et qu'il n'y a
// qu'a le reprendre. Quand le systeme a lui-meme detruit la cle parce que
// le verrouillage d'ecran a ete retire ou reinitialise, il faut le dire :
// c'est une consequence attendue d'un geste que l'utilisateur a fait, pas
// une panne.
if LastStoreKeyInvalidated then
begin
Status('Device protection changed - download the vault again');
WebCall('PM.toast("This phone''s screen lock was removed or reset, so ' +
'Android destroyed the key that sealed the local copy. ' +
'Nothing is lost - the vault is in the repository.")');
end
else
Status('Local vault unreadable - see log');
end;
end;