docs: reglages de la barrette, GitHub et depot prive, erreurs et mot de passe de synchro sur le telephone

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-18 11:39:32 +01:00
parent 395d7a70d4
commit ac97d6c207
2 changed files with 82 additions and 0 deletions
+50
View File
@@ -283,6 +283,38 @@ Détails :
Le cadre est peint dans `WM_ERASEBKGND` plutôt que par `WS_BORDER`, qui se
sert dans les couleurs système.
### Réglages de la barrette (2026-09-18)
**Settings → onglet Fill bar**, et le **clic droit** sur la barrette pour les
mêmes choix au plus court.
- **Boutons au choix** (`lazyButtons`, liste ordonnée) : Full, Password, 2FA,
**Add** (= `Ctrl+Shift+A`, nouvelle entrée depuis la fenêtre en avant),
**Search** (= `Ctrl+Shift+Q`), Open, **Settings** (ouvre cet onglet). Le `X`
est toujours là. `'none'` = aucun bouton choisi (liste vide ≠ liste par défaut).
Add et Search appellent **les mêmes corps que les raccourcis**, extraits en
`FireNewEntryRequest` / `FireQuickSearchRequest` — une seule capture de la
fenêtre cible, deux gestes. `NOACTIVATE` les rend justes : la fenêtre en avant
au clic est bien celle de l'utilisateur.
- **Icônes ou texte** (`lazyIcons`) : glyphes de la police **Segoe MDL2 Assets**
(Windows 10/11), rien à embarquer, couleur du thème comme un mot. Info-bulles
(`TOOLTIPS_CLASS`, `TTS_ALWAYSTIP` car la barrette n'est jamais active) sur
chaque bouton, dans les deux modes. **La largeur de la barrette se calcule**
(`FLazyW`) : elle dépend des boutons et du mode.
- **Tout en prefs DPAPI**, pas dans `settings_json` : la barrette s'allume coffre
fermé. Pont : `fillbar/get` → `Bridge.onFillBar({on,buttons,icons,alpha})`,
`fillbar/set?on=&buttons=&icons=&alpha=`. Rien de secret dedans.
- **Reconstruire = `ReloadLazyBar`, POSTÉ** (`WM_LAZY_RELOAD`) : le clic droit
vient de la barrette, qu'on ne détruit pas depuis son propre gestionnaire
(même raison que le `X`).
- **L'onglet suit la barrette** : un changement par clic droit ou par le menu du
tray déclenche `OnFillBarChanged` → la page relit `fillbar/get`. Gardé par
`FBrowserInitialized` : `RestoreLazyBar` passe par là au démarrage.
- **Settings depuis la barrette** (bouton ou clic droit → *Fill bar
settings...*) : la fenêtre revient, puis les réglages s'ouvrent **par-dessus**
une entrée en cours d'édition, qui reste intacte dessous (Échap ferme d'abord
les réglages). Coffre verrouillé : message, pas de réglages.
## Licences (`PM.Licence`)
Verification **hors ligne** d'une licence signee ECDSA P-256. Une licence est
@@ -1083,6 +1115,24 @@ QR que l'application Android scanne elle-meme.
toutes les icones, ce qui reduisait le QR a la taille d'une icone. La taille
est donc posee **en style direct** sur le `<svg>`.
### GitHub, et refus d'un depot public (2026-09-18)
- **GitHub parle la meme API des contenus que Gitea** (contenu base64, `sha`,
meme corps de PUT) : meme chemin, reconnu a `api.github.com/repos/` en plus de
`/api/v1/repos/`. `syncIsGitea` (JS), `LGitea` (UMainForm) et
`TSyncClient.IsGitea` (APK) reconnaissent les deux.
- **`User-Agent: PMServer` partout** : GitHub rend 403 a une requete sans ;
Gitea l'ignore.
- **Un depot PUBLIC est refuse**, Gitea comme GitHub, avant toute lecture ou
ecriture : `GET` du depot (URL des contenus coupee a `/contents/`), champ
`private`. Chaque synchro est un commit, l'historique garde tous les
instantanes chiffres ; public, n'importe qui les attaque hors ligne. Un doute
reseau ne bloque pas (pas de verdict = on laisse la vraie requete parler).
- **Limite GitHub** : au-dela de 1 Mo, l'API des contenus ne rend plus le fichier
(`encoding: none`). Le coffre chiffre fait ~250 Ko au 2026-09-18.
- Telephone : `https://github.com/O/R` <-> URL d'API, comme pour Gitea. Le QR
du PC porte aussi la forme courte `github.com/O/R`.
### Idee gardee : « Reinitialiser l'historique » du depot de synchro
**Rien n'est fait, et le code actuel reste tel quel** (decide le 2026-09-17).
+32
View File
@@ -265,6 +265,38 @@ et `RegisterLocal` refuse aussi : l'interdit ne tient pas qu'à l'écran. Dépô
vide (404) ou conteneur illisible, **rien n'est créé** — un coffre neuf
masquerait un réglage à corriger.
## Erreurs du dépôt, générateur, Save — 2026-09-18
- **Une erreur de réglage s'affiche là où on la corrige** : `ShowSettingsError`
ouvre les réglages avec le message en rouge au-dessus des champs du dépôt.
Download vault sans URL ni jeton, jeton refusé, dépôt ou utilisateur
inexistant, mauvais mot de passe de synchro, dépôt public.
- **Gitea répond 404 pour tout** (fichier absent, dépôt ou propriétaire
inexistant, dépôt privé invisible au jeton). `TSyncClient.Diagnose` tranche
par deux requêtes de plus — le dépôt, puis l'utilisateur —, seulement quand
quelqu'un attend la réponse. Même logique pour GitHub (racine de l'API = tout
ce qui précède `repos/`).
- **Générateur de mot de passe** : dé à côté du champ, à la création et à la
modification. `crypto.getRandomValues` avec rejet (un modulo favoriserait les
premiers caractères), 20 caractères, laissé visible une fois tiré.
- **Save ne s'allume que sur un vrai changement**, comparé aux valeurs
enregistrées : taper puis effacer le regrise. Après Save : « ✓ Saved »,
inactif, nouvelle référence.
### Le mot de passe de synchro : celui qu'on tape l'emporte, mais se vérifie
Le cache porte le mot de passe de synchro. Rouvrir le coffre le **reposait**
dans les réglages, par-dessus celui que l'utilisateur venait d'enregistrer : le
changement disparaissait sans un mot (`FPwdUserSet` l'empêche désormais).
Et un mot de passe changé **n'était jamais vérifié** : le `sha` inchangé faisait
répondre « rien n'a changé » sans rien déchiffrer. Tant que `FPwdUserSet`, le
dépôt est donc **retéléchargé en entier** (`Fetch('')`), le déchiffrement
tranche, puis la synchro reprend si des modifications attendaient. Les
publications, elles, n'étaient pas en danger : `CommitChange` et
`PublishPending` chiffrent avec `FKey`, la clé du dernier mot de passe qui a
réellement ouvert le dépôt.
## Saisie : ce qui a résisté
- **`user-select: none` du `body`** était hérité par les champs : le curseur ne