feat(android): show attachments, without carrying their bytes

One attachment took the cache from 13 to 174 KB: the content travels base64 in the snapshot and is decrypted in memory with the rest. TVault reads name, type and size and DROPS content_b64 - holding it for the whole vault while nothing displays it would be paying for nothing.

The detail now says a document exists. Saving it is what remains, and what blocks that is not code but where a file lands on Android 10+. When that is settled, the content re-reads from the raw JSON.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-15 15:05:08 +01:00
parent 7939d268f3
commit 7229028060
3 changed files with 71 additions and 7 deletions
+16 -7
View File
@@ -171,13 +171,22 @@ Par ordre de gravité, pas de taille.
Rangé par ce que ça apporte réellement sur un téléphone.
1. ~~**Pièces jointes**~~ — **abandonné** (2026-08-15) : le coffre n'en contient
pas. Elles restent dans l'instantané et le client les ignore, ce qui ne
coûte rien. À reprendre le jour où il y en aura, en tranchant d'abord où un
fichier atterrit sur Android 10+ — le répertoire privé ne sert à rien à
l'utilisateur, *Téléchargements* passe par `MediaStore` ou un partage par
`Intent` — et en surveillant la mémoire, `content_b64` étant décodé en RAM
avec le reste de l'instantané.
1. **Pièces jointes** — *listées*, pas encore enregistrables.
Une seule pièce jointe a fait passer le cache de **13 à 174 Ko** : le
contenu voyage en base64 dans l'instantané, et il est déchiffré en mémoire
avec le reste. `TVault` lit donc nom, type et taille, et **jette
`content_b64`** — le garder pour tout le coffre alors que rien ne l'affiche
serait payer sans rien acheter.
Le détail affiche l'existence du document. Ce qui manque est
l'enregistrement, et ce qui le bloque n'est pas le code mais **où un fichier
atterrit sur Android 10+** : le répertoire privé ne sert à rien à
l'utilisateur, *Téléchargements* passe par `MediaStore`, le partage par un
`Intent`. Le jour venu, le contenu se relira depuis le JSON brut.
À surveiller : quelques PDF suffiraient à peser plusieurs Mo, retéléchargés
entièrement à chaque instantané nouveau.
2. ~~**Filtre dossier**~~ — **fait**, liste déroulante à côté de la recherche,
alimentée par le tableau `folders`, et le choix survit à un rafraîchissement
de fond. **Pas de filtre d'étiquette** : la recherche texte couvre déjà les