Nostr Compass Podcast #34

About this episode
### News - **00:00 Intro** Welcome to Nostr Compass Podcast #34 covering Sandstr client simulations, nostr-mill browser signing, nostrord relay groups, six merged protocol changes, and deep dives on NIP-50 search and NIP-84 highlights. - **00:20 nostr-mill 1.6.0 puts signing consent and account recovery in the browser** nostr-mill 1.6.0 asks consent by event kind with decoded content preview, time-limited grants, optional Google Drive NIP-49 key import, and experimental scrypt-HKDF relay backup with quorum verification before recovery. - **01:57 nostrord 2.5.0 gives relay groups stable, relay-specific identities** nostrord 2.5.0 derives NIP-29 identity from group ID plus host relay, adds NIP-56 moderation inbox, NIP-84 highlight rendering, Blossom or NIP-96 uploads, and NIP-55 Amber login. - **03:08 Primal Android 3.5.25 updates remote signing and follow-list filtering** Primal Android 3.5.25 updates remote signing, adds follow mute lists, auto-repairs stalled relay connections, rejects invalid follow-list entries, and caps cache at 100 MB with feed prefetching improvements. - **03:47 Nostur 1.30.2 expands private replies and media in direct messages** Nostur 1.30.2 always exposes private-reply actions, adds per-conversation DM media caches with clearing controls, shows referenced messages in live chat, and fixes feed pagination and nested-reply rendering. - **04:26 Chama 5.7.0 adds arbiter records and cached trade recovery** Chama 5.7.0 displays arbiter locked amounts and bond tenure, records backup-arbiter replacements, defines dormant kind 38136 fault attestations, and retries incomplete relay histories against durable device cache. - **05:25 Auditable Voting 0.1.165 restores delegated ballot delivery** Auditable Voting 0.1.165 restores delegated blind-ballot issuance through authenticated delegation delivery and control-DM backfill, keeping blind-credential DMs on configured private relays. - **07:13 Sandstr lets newcomers test-drive Nostr clients with mock data** Sandstr launched August 3 with reference-verified simulations of Damus, Amethyst, Primal, Snort, YakiHonne, Coracle, and Wisp plus previews of Gossip, Keychat, and Olas, all running locally against mock data without keys or relay connections. - **09:07 mineracks signer pairs a browser extension with a desktop bunker** mineracks signer ships a NIP-07 browser extension and desktop 0.1.0 NIP-46 bunker with NIP-49 key storage, per-request approval, and optional per-application auto-approval on Apple Silicon. ### Releases - **10:05 Jumble 26.8.1 adds proof-of-work controls and comment previews** Jumble 26.8.1 remembers NIP-13 proof-of-work difficulty, displays verified-work badges, previews linked comments above external content, and refreshes default relays. - **11:34 nostr-calendar 2.1.0 restores private-form signer binding** nostr-calendar 2.1.0 binds private-form submissions to the active signer, saves intentional duplicate events, parses calendar dates in local time, and adds app notifications plus an iOS client. - **13:47 Manent 2.0.0 adds tagging and search for saved notes** Manent 2.0.0 adds local tags and search for organizing saved Nostr notes without modifying signed event contents. - **14:15 nosvelte 0.6.1 closes empty subscriptions after EOSE** nosvelte 0.6.1 closes empty subscriptions at End of Stored Events, cancels underlying REQ on cancellation, recognizes addressable events regardless of d tag position, and deduplicates reactions by event ID. ### Project Updates - **15:01 NMP ties relay admission to declarations and broadens group queries** NMP PR #1254 ties relay admission to the declaration owner, and PR #1255 generalizes NIP-29 group queries beyond one narrow lookup shape. - **15:42 Mosaico derives managed-group identity from relay records** Mosaico PR #758 derives managed-group identity from the hosting relay, and PR #757 observes published group records when resolving administration state. - **16:42 Divine isolates slow relays during multi-relay queries** Divine PR #6673 gives each relay query its own timeout so responsive relays return results while stalled connections are abandoned independently. - **17:04 rust-nostr hardens encryption, hashes, and reconciliation** rust-nostr PR #1421 reduces NIP-44 allocation, PR #1423 adds typed hashes, and commit 21e31c2 prevents malformed NIP-77 Negentropy messages from disconnecting the local relay. - **17:38 Zeus serializes NWC payments before charging spending budgets** Zeus PR #4305 counts pending NIP-47 payments against budgets, and PR #4303 serializes payment handling to prevent concurrent authorization races. - **18:04 Nostr Components shares one relay connection attempt** Nostr Components PR #105 lets concurrently mounted web components share one in-flight relay connection attempt instead of opening duplicate sockets during handshake. ### NIP Updates - **18:42 NIPs PR #2430 proposes sticker packs as addressable kind 30031 definitions and a user's installed packs as replaceable kind 10031 — Open** PR #2430 proposes kind 30031 sticker pack definitions and kind 10031 installed packs with shortcode, SHA-256, and MIME tags while images stay on NIP-B7 Blossom servers. - **20:39 NIPs PR #2429 proposes kind 31436 addressable Gopher documents — Open** PR #2429 proposes kind 31436 addressable Gopher nodes forming a gopherhole any relay-backed RFC 1436 bridge can serve. - **22:45 NIPs PR #2428 proposes epoch-ticketed private groups — Open** PR #2428 proposes private groups that rotate membership credentials between epochs so clients present current-epoch tickets instead of permanent bearer tokens. - **23:51 NIPs PR #2425 merges a URI clarification into NIP-B0 — Merged** PR #2425 merged a URI clarification into NIP-B0 bookmarks distinguishing omitted HTTPS prefixes from explicit URI schemes in d tags. - **24:32 NIPs PR #2419 merges a smaller NIP-47 core — Merged** PR #2419 merged a smaller NIP-47 core keeping connection URIs and common methods in the NIP while moving notifications, hold invoices, and transaction history to an extension repository. - **25:19 NWC PR #2 merges BIP-321 payment methods — Merged** NWC PR #2 merged BIP-321 pay and receive methods into the NIP-47 extension repository for wallet services choosing compatible BOLT11 or BOLT12 instructions from payment URIs. - **25:38 NAP PR #95 proposes catalog discovery for Nostr-distributed sandbox applications — Open** NAP PR #95 proposes host-filtered catalog discovery so napplets learn available applications and capabilities without receiving execution authority during discovery. - **26:21 NAP PR #33 proposes shell-mediated file and blob uploads — Open** NAP PR #33 proposes shell-mediated uploads where the host selects NIP-96 or Blossom rails, signs authorization, and returns NIP-94 tags without exposing storage credentials to the napplet. - **27:15 Marmot PR #410 merged convergence and deferred-input rules — Merged** Marmot PR #410 merged rules distinguishing missing epoch dependencies from stale input, keeping objects eligible for refetch after resource refusal with a domain-separated state commitment for conformance tests. - **29:24 Concord PR #14 merged CORD-08 disappearing messages — Merged** Concord PR #14 merged CORD-08 disappearing messages where community metadata sets lifetime, chat wraps carry NIP-40 expiration tags, and kind 1740 timer notices are exempt. - **30:52 Concord PR #13 merged rotation-proof pinning into CORD-04 — Merged** Concord PR #13 merged CORD-04 rotation-proof pinning with one replace-entire pin list per channel, original signed seals plus per-message NIP-44 expansion keys, and author deletions removing pins without forking the control plane. ### NIP Deep Dives - **32:10 NIP Deep Dive: NIP-50 Search Capability** NIP-50 adds an optional search string to NIP-01 filters for open-ended discovery when a client has a human query instead of known authors or tags. Supporting relays match primarily against content, sort by their own relevance score, and may implement key:value extensions like domain:, language:, and include:spam declared through NIP-11. The specification deliberately leaves tokenization and ranking implementation-defined, so clients should query several relays and drop poor-precision results. Nostria, Ditto, and NoorNote already send NIP-50 searches in different discovery surfaces. - **35:53 NIP Deep Dive: NIP-84 Highlights** NIP-84 assigns kind 9802 to signed highlights carrying selected text or empty content for non-text media, with a or e tags pointing at Nostr sources and r tags for web URLs stripped of tracking parameters. Optional p tags attribute authors, context tags preserve surrounding passage, and comment tags enable quote highlights without a separate kind 1 note. Each highlight is a regular signed event, not replaceable, so corrections create new events and public highlights reveal reading interests. nostrord 2.5.0, NoorNote, and Ditto already render or publish kind 9802 events.