diff --git a/CLAUDE.md b/CLAUDE.md index be379ff..6dc702d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -588,6 +588,16 @@ hotkeys autofill, etc. **Device-only** (localStorage seulement) : `quickUnlockEnabled` (DPAPI lié au compte Windows), `autofillEnabled` (toggle hotkey Win32), `rememberedUsername` (auth screen autofill local). +**Piège : tout réglage lu AVANT le login doit être en pref DPAPI.** +`settings_json` demande une session, et `localStorage` est vidé à chaque +lancement (port éphémère = nouvelle origine). Un réglage qui ne vit que +dans ces deux-là est systématiquement à sa valeur par défaut sur l'écran +d'auth. C'est ce qui faisait retomber un coffre en mode PIN sur le mot de +passe maître à chaque démarrage : `unlockMode` est donc **miroité en pref +DPAPI** (écrit au changement + dans `loadServerSettings`, relu par +`showAuth`), la copie DPAPI faisant autorité au boot. Même raison pour +`rememberedUsername`. + ## Sync (WebDAV, auto-merge) Multi-device sync via a user-hosted WebDAV server (Nextcloud, ownCloud, @@ -717,7 +727,8 @@ persisted to `argon2_m/t/p`). `/login/challenge` returns them via ## PIN unlock Optional shortcut unlock with a 4–12 digit PIN, complementary to Quick -Unlock. Three modes (`state.unlockMode`, synced via `settings_json`) : +Unlock. Three modes (`state.unlockMode`, dans `settings_json` **et** en pref +DPAPI) : - `pw` — master password only (legacy, default) - `pin` — PIN unlocks the vault on this device