From 40ec9a0dfaf6fae4d7c25353d5518c73eca7d10f Mon Sep 17 00:00:00 2001 From: Avi Date: Mon, 24 Aug 2026 22:12:12 -0500 Subject: [PATCH] Checkpoint: DRY relay fan-out --- CHECKPOINT-encryption.md | 55 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/CHECKPOINT-encryption.md b/CHECKPOINT-encryption.md index f1d8ff8..42554c5 100644 --- a/CHECKPOINT-encryption.md +++ b/CHECKPOINT-encryption.md @@ -1,4 +1,57 @@ -# Checkpoint — NIP-46 signer handshake fix (2026-08-24) +# Checkpoint — DRY relay fan-out (2026-08-24) + +A stopping point you can return to if this session is closed. Everything below was +verified green at the moment this file was written. + +## Where things are + +- Project: `/home/avi/Projects/Nostr_Keynctr` +- Git repo: `master` @ `1c428a9` ("DRY: single parallel relay fan-out for notes + and metadata"). Before it: `64ad94d` (NIP-46 handshake fix), `b21678f`/ + `ae84526` (checkpoints), `dd50b24` (Aurora rename). +- Working tree: clean apart from this checkpoint update. `concept3.svg` deleted + and `KeynectrAppIconPossibility02.jpeg` untracked remain as the user had them. + +## What was completed + +1. **R1 DRY refactor (`1c428a9`).** The parallel relay send block (~55 lines: + JoinSet per-relay sends, 6 s timeout, indexed outcome collection, + disconnect, succeeded/failed split) existed twice — in + `publish.rs::publish_with_keys` and `profiles.rs::publish_metadata_async`. + Now one `pub(crate) publish::send_to_all_relays(client, urls, event, noun)` + serves both; callers keep their distinct add-relay policies (note path + aborts on add errors, metadata ignores them) so behavior, error strings, + and public APIs are unchanged. Removed duplicate constant + `METADATA_SEND_TIMEOUT`, dead helper `failure_for`. Net −49 lines. +2. Deliberately NOT done (pending approval): R2 shared client-bootstrap + helper, R3 modal save-lifecycle hook (frontend), R4 shortHex/shortenNpub. + +## Commits added most recently + +- `1c428a9` DRY: single parallel relay fan-out for notes and metadata + +## Verification commands run (all green) + +Rust: cargo fmt --check clean; clippy only pre-existing profiles.rs warnings; +cargo test 113 passed; release binary rebuilt. +Frontend (untouched, suite rerun): npm test 92 passed; typecheck, lint, +format:check, electron:build, vite build all clean. + +## How to use / reproduce + +No user-facing change; note and metadata publishing behave exactly as before. +Any future change to relay-send policy now happens in one place: +`send_to_all_relays` in `src/publish.rs`. + +## Notes & next steps + +- R2–R4 from the DRY audit remain unimplemented by request. +- Relay health today: nos.lol 502, nostr.wine 403, nostr.l484.com needs + NIP-42 auth, nostr.band unreachable; primal/mom/soloco healthy. + +--- + +# Older checkpoint — NIP-46 signer handshake fix (2026-08-24) A stopping point you can return to if this session is closed. Everything below was verified green at the moment this file was written.