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:
r-zakarya
2026-07-26 00:05:49 +01:00
parent e68536420f
commit f198eaf6f3
+28
View File
@@ -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é)
1. **Attachments hors garde A11.** Le contrôle « changed elsewhere » couvre le