From 415dc6c8ba02d48944d9319e46cf903ed58ed4e6 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Tue, 28 Jul 2026 22:51:00 +0100 Subject: [PATCH] docs(claude): record that pre-login settings must live in DPAPI prefs --- CLAUDE.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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