diff --git a/kez-chat/README.md b/kez-chat/README.md index eeae984..927948b 100644 --- a/kez-chat/README.md +++ b/kez-chat/README.md @@ -42,7 +42,8 @@ can verify those links themselves, without trusting anyone. - **Push notifications** that tell the push provider nothing — the payload is empty. - **Unlock with Face ID / Touch ID / Windows Hello / a security key** - (WebAuthn passkeys), or a passphrase. + (WebAuthn passkeys), or a passphrase. Passkey unlock is per-browser; + on a new or wiped browser you restore with your recovery phrase. - **Your relays, your choice.** Reorder, add, or remove nostr relays in Settings. @@ -89,6 +90,21 @@ WebCrypto key, keeps you signed in while the PWA is backgrounded, so push notifications stay useful. **Lock** ends it; **Forget this account** wipes the device. +Passkey unlock is a local convenience, not a login: the passkey-encrypted +seed lives only in this browser's IndexedDB, and nothing is stored on the +server. If the browser forgets you (storage cleared, new device), sign +back in with **Restore** and your recovery phrase (or the 64-hex seed). + +**Showing your recovery phrase** (Getting Started, or Settings → reveal) +displays it as a numbered word list: + +- 12 words for accounts created with a phrase. After a passkey unlock + the phrase isn't in memory (the passkey only unlocks the seed), so the + app asks for your passphrase once to decrypt it. +- 24 words for older accounts created before 12-word phrases (or restored + from a hex seed). Their seed has no 12-word form, but its exact 24-word + encoding restores the same account. + Your **handle** (`you@kez.lat`) is registered with the chat-server by a request signed with your identity key. It's a public directory: handle → public key. diff --git a/kez-chat/web/src/routes/Settings.svelte b/kez-chat/web/src/routes/Settings.svelte index 14d41e3..bae1a9e 100644 --- a/kez-chat/web/src/routes/Settings.svelte +++ b/kez-chat/web/src/routes/Settings.svelte @@ -1,7 +1,6 @@