docs(android): section 7 - a local account, so the app serves on its own
This commit is contained in:
@@ -612,6 +612,67 @@ n''écrit rien), retirer WebDAV le jour où il n''a plus d''usage, et une purge
|
||||
périodique de l''historique — sans quoi le dépôt grossit
|
||||
d'un instantané complet à chaque synchronisation, pièces jointes comprises.
|
||||
|
||||
## 7. Se servir de l'application seule — compte local
|
||||
|
||||
Aujourd'hui le téléphone ne sait que **lire un coffre venu d'ailleurs** : sans
|
||||
URL, sans jeton et sans mot de passe de synchronisation, il n'affiche rien.
|
||||
On veut qu'il serve seul, comme le poste : on s'inscrit, le coffre vit là, et
|
||||
la synchronisation devient un ajout facultatif.
|
||||
|
||||
### Ce que ça entraîne, et qu'il vaut mieux dire tout de suite
|
||||
|
||||
Un coffre vide qu'on ne peut pas remplir ne sert à rien. **S'inscrire entraîne
|
||||
donc créer des entrées depuis le téléphone** — précisément ce que §4 avait
|
||||
écarté. C'est le vrai morceau ; l'écran de connexion n'en est que la façade.
|
||||
|
||||
### Le coffre local devient l'autorité, chiffré sous le mot de passe
|
||||
|
||||
Aujourd'hui `vault.bin` porte l'instantané **en clair**, scellé par le Keystore
|
||||
(et, depuis peu, par un code). Le conteneur chiffré sous mot de passe, lui,
|
||||
n'existe qu'au bout du réseau. Un compte local inverse la charge :
|
||||
|
||||
- un fichier local porte **exactement ce que porterait le dépôt** —
|
||||
`EncryptContainer(instantané, mot de passe, 600k)` ;
|
||||
- `vault.bin` reste ce qu'il est : le cache d'ouverture rapide.
|
||||
|
||||
Deux raisons, pas une : c'est le modèle du poste — le mot de passe maître
|
||||
protège le coffre au repos, pas seulement le matériel — et **le format reste
|
||||
celui du dépôt**, donc la synchronisation continue de marcher sans convertir
|
||||
quoi que ce soit.
|
||||
|
||||
### Le nom d'utilisateur
|
||||
|
||||
Le conteneur le porte déjà (`username`, écrit par `buildSyncSnapshot`). Un seul
|
||||
compte par appareil : plusieurs coffres sur un même téléphone est une envie
|
||||
supposée, pas un besoin constaté. Le nom saisi se compare à celui du conteneur
|
||||
après déchiffrement — c'est le mot de passe qui ouvre, le nom qui identifie.
|
||||
|
||||
### S'inscrire
|
||||
|
||||
Forge un instantané vide, le chiffre sous le mot de passe choisi, l'écrit
|
||||
localement. Aucun réseau. **Le poste ne connaîtra pas ce compte** : il crée les
|
||||
siens dans SQLite et rien ne les rapproche aujourd'hui. Un coffre né sur le
|
||||
téléphone qu'on voudra ensuite ouvrir sur le poste demandera un import.
|
||||
|
||||
### Par étapes
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
### Ce qui devient facultatif
|
||||
|
||||
Sans dépôt configuré, *Sync* n'a rien à faire : les réglages du serveur
|
||||
restent, mais l'application ne doit plus se comporter comme si le réseau était
|
||||
la seule source.
|
||||
|
||||
---
|
||||
|
||||
## Ordre proposé
|
||||
|
||||
1. **Vérifier §1 sur téléphone** — c'est ce qui valide le travail déjà fait, et
|
||||
|
||||
Reference in New Issue
Block a user