fix NIP-4e state hygiene and UX issues
This commit is contained in:
+13
-2
@@ -13,8 +13,19 @@
|
||||
> sync), F6 (stale stored 4455s no longer short-circuit `request()` — they are
|
||||
> validated first and a fresh request is published when invalid), F8 (device keys
|
||||
> are saved locally *before* the 10044 announcement is published, closing the
|
||||
> echo/self-request race). Still open: the P2 state-hygiene items and the UX bugs
|
||||
> in section 5.
|
||||
> echo/self-request race).
|
||||
>
|
||||
> **Update 3**: The P2/UX findings are fixed — the notification listener is now
|
||||
> restarted on account switch and `announcement_existed` is reset (no stale
|
||||
> `current_user` / false negatives after changing accounts), `NotSet` fires on
|
||||
> EOSE instead of a fixed 5-second timer, `Announcement::from_event` returns
|
||||
> `None` on a missing/malformed `n` tag instead of falling back to the identity
|
||||
> pubkey, the 4454 notification parses the requester key from the `P` tag, the
|
||||
> NotSet "Retry" button re-checks for an announcement instead of silently
|
||||
> generating (rotating) a new encryption key, and the restore dialog's
|
||||
> inverted empty-key check is fixed. Still open: the remaining security notes
|
||||
> in section 4 (plaintext backup file, one-click approval without a
|
||||
> verification code).
|
||||
|
||||
**Scope**: `crates/nip4e/src/lib.rs` (key announcement/sync), the send path (`crates/chat/src/room.rs`), the receive path (`crates/chat/src/lib.rs`), UI integration (`crates/workspace`), compared against the [NIP-4e draft](https://github.com/nostr-protocol/nips/blob/per-device-keys/4e.md) and [PsstPsst's implementation](https://github.com/CodyTseng/psstpsst) (`docs/protocols/nip4e.md` + `docs/protocols/nip17-extensions.md`, plus rust-nostr's NIP-59 source to verify crypto mechanics).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user