docs: K1 — the clear-field toggle vs Tab-selects-all, intentional
Records why disabling "Clear the field before typing" still leaves the password replaced: Tab selects the target field's content, so the keystrokes overwrite it. Our code clears nothing — verified from the JS clear=0 through both ClearFieldIfWanted guards. The toggle exists to avoid sending Ctrl+A (terminals, remote desktops), not to preserve field content. Filed as intentional so it isn't "fixed" later into appending a new password onto the old one. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -413,6 +413,34 @@ est précisément le piège de coalescence documenté dans CLAUDE.md.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## K — Autofill : comportements intentionnels (à ne pas « corriger »)
|
||||||
|
|
||||||
|
### K1 · « Clear the field before typing » désactivé → le password est quand même remplacé
|
||||||
|
- **ACTION** : Settings → Autofill → décocher *Clear the field before typing*.
|
||||||
|
Puis remplissage complet (`Ctrl+Shift+L`, ou clic-droit dans la quick search)
|
||||||
|
sur un formulaire dont les deux champs contiennent déjà quelque chose.
|
||||||
|
- **OBSERVÉ** : le **username** n'est pas effacé (la frappe s'insère), mais
|
||||||
|
l'ancien **password** disparaît et est remplacé.
|
||||||
|
- **C'EST NORMAL** — vérifié de bout en bout : le JS envoie `&clear=0`, Delphi
|
||||||
|
met `FAutofillPendingClear := False`, et les **deux** `ClearFieldIfWanted`
|
||||||
|
(avant username et avant password) sortent immédiatement. Notre code
|
||||||
|
n'efface rien.
|
||||||
|
La cause est le **Tab** du pipeline `username → Tab → password` : arriver
|
||||||
|
dans un champ par Tab **sélectionne tout son contenu** (comportement standard
|
||||||
|
Windows / navigateur), et la frappe remplace la sélection. Le username, lui,
|
||||||
|
a été focalisé par un **clic** de l'utilisateur → curseur sans sélection →
|
||||||
|
insertion.
|
||||||
|
- **Ce que le réglage fait réellement** : empêcher l'envoi de `Ctrl+A`. Il
|
||||||
|
existe pour les terminaux / bureaux distants où `Ctrl+A` signifie « début de
|
||||||
|
ligne » ou déclenche le préfixe tmux, ce qui casserait le remplissage. Il ne
|
||||||
|
promet pas de préserver le contenu des champs.
|
||||||
|
- **Ne pas « corriger »** : désélectionner après le Tab ferait **concaténer** le
|
||||||
|
nouveau mot de passe à l'ancien — jamais souhaitable.
|
||||||
|
- **Test qui isole la cause** : `Ctrl+Shift+P` (password seul) en cliquant
|
||||||
|
directement dans le champ → pas de Tab → l'ancienne valeur **reste**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Reste à traiter (constaté pendant l'audit, non corrigé)
|
## Reste à traiter (constaté pendant l'audit, non corrigé)
|
||||||
|
|
||||||
1. **Attachments hors garde A11.** Le contrôle « changed elsewhere » couvre le
|
1. **Attachments hors garde A11.** Le contrôle « changed elsewhere » couvre le
|
||||||
|
|||||||
Reference in New Issue
Block a user