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:
@@ -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).
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user