fix(app): the short reading's nits on the device

- Deleting an identified account whose security can't be read (the
  instance out of reach) says so and deletes nothing; it went on to a
  deletion by the session alone, refused for an account with a password,
  and the person saw a spinner, then nothing. A refusal still leaves the
  session's own deletion.
- InstanceChoice's sharesStorage is required, so no app leaves it out and
  removes a folder another instance uses.
- A PasswordUnlock forgotten is spent: its secrets read again fail
  (StateError) rather than make a proof or a wrapping of zeros.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-21 18:15:14 +02:00
commit 012f2375a5
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -53,9 +53,8 @@ void main() {
finished: finished,
);
bool wiped(PasswordUnlock unlock) =>
unlock.srpSecret.every((byte) => byte == 0) &&
unlock.keyEncryptionKey.every((byte) => byte == 0);
/// Whether [unlock] was wiped, and so spent (the short reading).
bool wiped(PasswordUnlock unlock) => unlock.isForgotten;
test(
'wipes what the password unlocked once signed in, once another '