<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Newsletter on Nostr Compass</title><link>https://nostrcompass.org/it/newsletters/</link><description>Recent content in Newsletter on Nostr Compass</description><generator>Hugo</generator><language>it</language><atom:link href="https://nostrcompass.org/it/newsletters/feed.xml" rel="self" type="application/rss+xml"/><item><title>Nostr Compass #42</title><link>https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/</link><pubDate>Wed, 30 Sep 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>La nostra &lt;a href="https://gitworkshop.dev/npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923/relay.ngit.dev/nostr-compass-android">app Android dedicata a Nostr Compass&lt;/a> riunisce in un unico posto newsletter, episodi del podcast, guide tematiche e note vocali dei contributori. Le sue &lt;a href="https://zapstore.dev/apps/naddr1qq2x7un89ehx7um5wf3k7mtsv9ehxtnpwpcqzxrhwden5te0wfjkccte9eaxzurnw3hhyefwv3jhvq3qwav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qqxpqqqplqk563kdn">ultime note di rilascio firmate&lt;/a> descrivono newsletter complete con firma verificata, numeri salvati e 110 guide tematiche disponibili offline, oltre alla ricerca locale tra articoli e trascrizioni disponibili. I contributori possono registrare note vocali e rispondere con esse, riascoltare una registrazione salvata prima di inviarla e firmare tramite Amber senza conservare la propria chiave privata nell’app. Le registrazioni pubbliche vengono pubblicate su Nostr e Blossom.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>La nostra &lt;a href="https://gitworkshop.dev/npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923/relay.ngit.dev/nostr-compass-android">app Android dedicata a Nostr Compass&lt;/a> riunisce in un unico posto newsletter, episodi del podcast, guide tematiche e note vocali dei contributori. Le sue &lt;a href="https://zapstore.dev/apps/naddr1qq2x7un89ehx7um5wf3k7mtsv9ehxtnpwpcqzxrhwden5te0wfjkccte9eaxzurnw3hhyefwv3jhvq3qwav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qqxpqqqplqk563kdn">ultime note di rilascio firmate&lt;/a> descrivono newsletter complete con firma verificata, numeri salvati e 110 guide tematiche disponibili offline, oltre alla ricerca locale tra articoli e trascrizioni disponibili. I contributori possono registrare note vocali e rispondere con esse, riascoltare una registrazione salvata prima di inviarla e firmare tramite Amber senza conservare la propria chiave privata nell’app. Le registrazioni pubbliche vengono pubblicate su Nostr e Blossom.&lt;/p>
&lt;p>L’&lt;a href="https://zapstore.dev/apps/naddr1qq2x7un89ehx7um5wf3k7mtsv9ehxtnpwpcqzxrhwden5te0wfjkccte9eaxzurnw3hhyefwv3jhvq3qwav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qqxpqqqplqk563kdn">ultimo aggiornamento dell’app&lt;/a> conserva le registrazioni in coda e i punti di ripresa dei caricamenti quando Android interrompe le attività in background, indica quando serve l’approvazione di Amber e apre la registrazione pertinente da una notifica. Le viste separate per episodi e note vocali mantengono ciascuna la propria posizione di scorrimento, mentre la riproduzione riprende dallo stesso punto. Le notifiche delle nuove registrazioni dipendono dalla pianificazione di Android e dalle autorizzazioni concesse.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#white-noise-android-adds-group-polls-and-account-specific-disappearing-message-defaults">White Noise&lt;/a> aggiunge sondaggi di gruppo crittografati e avvisi per la cronologia delle chat incompleta; &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#holoboard-adds-nostr-promotion-commands-and-an-android-app">Holoboard&lt;/a> aggiunge &lt;a href="https://github.com/ptrio42/holoboard.space/blob/main/CHANGELOG.md#2026-09-23">comandi di promozione tramite messaggi privati&lt;/a> e un’app Android; &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#fips-pub-domains-tests-signed-public-names-for-a-mesh">fips-pub-domains&lt;/a> sperimenta nomi pubblici firmati su una mesh; &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#marmot-mdk-0110-makes-account-history-gaps-visible">Marmot MDK&lt;/a> rende visibile la cronologia mancante dei gruppi crittografati; e &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#myco-080081-gives-nearby-apps-their-own-nostr-store">Myco&lt;/a> dota la condivisione di app tra dispositivi vicini di un’identità Nostr e di uno store. &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#nostream-310-adjusts-relay-proof-of-work-to-load">nostream&lt;/a> adegua l’ammissione al relay in base al carico, mentre &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#nostr-double-ratchet-0017100172-closes-a-removed-member-gap">Nostr double ratchet&lt;/a> chiude una falla legata ai membri rimossi. Lo sviluppo ripara &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#amethyst-repairs-encrypted-group-interoperability">l’interoperabilità dei gruppi crittografati di Amethyst&lt;/a>, aggiunge &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#divine-adds-encrypted-video-to-direct-messages">i messaggi video crittografati di Divine&lt;/a> e porta online &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#nostr-atlas-opens-a-directory-for-checkable-identities">Nostr Atlas&lt;/a>. Gli aggiornamenti al protocollo perfezionano le prove di identità, gli inviti ai relay, i follow set e le rivendicazioni di dominio proposte. La &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-30-newsletter/#six-years-of-nostr-septembers">retrospettiva di settembre&lt;/a> di fine mese segue le stesse domande attraverso sei anni di Nostr.&lt;/p>
&lt;h2 id="top-stories">Notizie principali&lt;/h2>
&lt;h3 id="holoboard-adds-nostr-promotion-commands-and-an-android-app">Holoboard aggiunge comandi di promozione Nostr e un’app Android&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/holoboard/">Holoboard&lt;/a> è una &lt;a href="https://holoboard.space">bacheca per trovare note Nostr&lt;/a> tramite una classifica che può essere potenziata con pagamenti Lightning. I post originali restano event Nostr; Holoboard fornisce i dati di classifica e di visualizzazione attraverso la propria API HTTP. La distinzione conta se un lettore si aspetta che l’ordinamento della bacheca sia un feed nativo dei relay.&lt;/p>
&lt;p>Il suo &lt;a href="https://github.com/ptrio42/holoboard.space/blob/main/CHANGELOG.md#2026-09-23">changelog del 23 settembre&lt;/a> registra comandi di promozione tramite messaggi diretti, sia sul percorso crittografato &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> sia su quello legacy &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>. NIP-17 incapsula i messaggi privati per nasconderne contenuto e mittente ai relay, mentre NIP-04 è il formato di crittografia dei messaggi diretti più vecchio. Un utente può richiedere una fattura di promozione nella stessa conversazione, ricevere un preventivo etichettato per la prima promozione a pagamento e scegliere di ricevere promemoria di scadenza rispondendo &lt;code>YES&lt;/code>. Il mittente delle promozioni riprova i relay che hanno fallito, mentre l’&lt;a href="https://github.com/ptrio42/holoboard.space/blob/main/CHANGELOG.md">aggiornamento del 24 settembre&lt;/a> aggiunge un’app Android e semplifica il flusso delle fatture.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/ptrio42/holoboard.space/blob/main/relay/README.md">note di integrazione con i relay&lt;/a> del progetto descrivono note e commenti ordinari su Nostr, l’instradamento della inbox crittografata e la gestione di citazioni ed eliminazioni. La sua &lt;a href="https://zapstore.dev/apps/space.holoboard.app">scheda Android firmata su Zapstore&lt;/a> attesta l’esistenza di una release dell’app, ma non è stato stabilito che la chiave della scheda sia l’identità pubblica della bacheca di Holoboard. Questa è la prima copertura del progetto da parte di Compass.&lt;/p>
&lt;h3 id="fips-pub-domains-tests-signed-public-names-for-a-mesh">fips-pub-domains sperimenta nomi pubblici firmati per una mesh&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/fips-pub-domains/">fips-pub-domains&lt;/a> è un nuovo &lt;a href="https://github.com/fr34aky/fips-pub-domains">esperimento di resolver e di denominazione&lt;/a> che associa nomi di dominio pubblici a nodi su FIPS, una mesh crittografata che usa messaggi Nostr per scoprire i peer. La sua &lt;a href="https://github.com/fr34aky/fips-pub-domains/releases/tag/v0.1.0">prima release&lt;/a> combina queste rivendicazioni con record DNS TXT, convalida DNSSEC opzionale, associazioni fissate localmente, un demone resolver per Linux e l’integrazione Android con fips2go, il client FIPS per telefoni. Una rivendicazione firmata da sola non dimostra la proprietà di un dominio pubblico; i client hanno bisogno di prove DNS o DNSSEC, di un testimone configurato o di un pin già considerato affidabile.&lt;/p>
&lt;p>La &lt;a href="https://github.com/fr34aky/fips-pub-domains/releases/tag/v0.2.0">release 0.2.0&lt;/a> aggiunge prove DNSSEC alle rivendicazioni, così che un client che dispone solo di un relay della mesh possa convalidare un nome non fissato, e consente a più server convalidati di servire lo stesso dominio. Ripara inoltre i pin obsoleti e il failover DNS. La &lt;a href="https://github.com/fr34aky/fips-pub-domains/releases/tag/v0.2.1">versione 0.2.1&lt;/a> corregge una unit systemd che altrimenti non riusciva ad avviarsi ed esegue il server senza root; le installazioni esistenti devono sostituire quella unit per ricevere la correzione.&lt;/p>
&lt;p>Su Android, una &lt;a href="https://github.com/fr34aky/fips2go/pull/55">modifica integrata in fips2go&lt;/a> segue nel proprio proxy DNS le associazioni verificate dei nomi pubblici. Una &lt;a href="https://github.com/fr34aky/fips2go/pull/59">seconda modifica integrata&lt;/a> trasporta sulla mesh le connessioni ai relay Nostr configurati, così il resolver può recuperare e verificare una rivendicazione di dominio mai vista prima mentre il telefono non ha connessione a internet. I risultati sui dispositivi sono riportati dai maintainer in quelle pull request; non dimostrano una diffusione più ampia.&lt;/p>
&lt;p>I &lt;a href="https://github.com/fr34aky/fips-pub-domains/blob/main/docs/testing.md">test a due nodi e con relay solo sulla mesh&lt;/a> del progetto sono prove riportate dai maintainer per un’implementazione iniziale, non una distribuzione in produzione. &lt;a href="https://nostrcompass.org/it/topics/nip-db/">NIP-DB&lt;/a> resta una &lt;a href="https://github.com/nostr-protocol/nips/pull/2487">proposta aperta&lt;/a> e i kind degli event nella sua &lt;a href="https://github.com/fr34aky/fips-pub-domains/blob/main/docs/nip.md">bozza&lt;/a> restano segnaposto in attesa di registrazione. La storia su fips2go della settimana scorsa riguardava il bootstrap della mesh e la scoperta dei peer; il lavoro di questa settimana affronta i nomi pubblici e la verifica.&lt;/p>
&lt;h3 id="marmot-mdk-0110-makes-account-history-gaps-visible">Marmot MDK 0.11.0 rende visibili le lacune nella cronologia degli account&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">Marmot MDK&lt;/a>, il runtime Rust con i binding generati per la &lt;a href="https://nostrcompass.org/it/topics/marmot/">messaggistica di gruppo Nostr crittografata con MLS&lt;/a>, fa seguito alla release sull’invio durevole della settimana scorsa con la &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.11.0">versione 0.11.0&lt;/a>. Il ripristino dell’account ora dichiara completa una lacuna nella cronologia solo dopo che ogni relay richiesto ha terminato un confronto degli event non troncato; una lacuna non dimostrata produce un avviso durevole che l’host può mostrare all’utente. Una coda di consegna piena si riversa nel database dell’account invece di scartare gli event, e la consegna in tempo reale fa avanzare il cursore di trasporto, così un riavvio non recupera di nuovo la stessa cronologia.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/marmot-protocol/mdk/blob/v0.11.0/docs/release/0.11.0.md">note di rilascio complete&lt;/a> descrivono anche sondaggi di gruppo crittografati opzionali, la verifica stateless degli event nei binding e librerie Android allineate per pagine di memoria da 16 KB. Le applicazioni devono aggiornare insieme i binding generati e le librerie native di questa coorte di sorgenti; i database degli account migrano fino allo schema 98 alla prima apertura e il downgrade del database non è supportato. Un difetto intermittente già noto nel recupero può ancora lasciare indecifrabili, senza generare un avviso, i messaggi rimasti indietro di più di cinque epoch di gruppo, quindi questa release non dichiara un ripristino completo della cronologia in ogni caso.&lt;/p>
&lt;h3 id="myco-080081-gives-nearby-apps-their-own-nostr-store">Myco 0.8.0–0.8.1 dà alle app condivise tra dispositivi vicini un proprio store Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/Origami74/myco">Myco&lt;/a> è un’app Android per scambiare piccoli programmi Nostr, chiamati napplet, con telefoni vicini, anche quando sono offline. La &lt;a href="https://github.com/Origami74/myco/releases/tag/v0.8.0">versione 0.8.0&lt;/a> assegna a ogni installazione un’identità Nostr ospite e permette l’accesso con una chiave esistente o con Amber, un signer Android che approva le firme senza condividere la chiave dell’account. Sostituisce inoltre la scheda Discover con uno store di app che è esso stesso una napplet. Quello store legge schede di app e raccomandazioni firmate, mentre un aggiornamento scaricato può passare da un telefono all’altro all’interno della Circle di un utente senza connessione a internet.&lt;/p>
&lt;p>La &lt;a href="https://github.com/Origami74/myco/releases/tag/v0.8.1">versione 0.8.1&lt;/a> rende quelle schede più facili da trovare interrogando i relay che un autore pubblicizza; le build precedenti si affidavano a impostazioni pubbliche predefinite. Mostra subito i profili e le app in cache, salva le risposte più lente dei relay per le visite successive, riduce la frequenza dei tentativi verso i relay che falliscono e mantiene attive le sottoscrizioni mentre una vista è aperta. Entrambi gli aggiornamenti preservano il formato di trasmissione esistente tra telefoni. I telefoni aggiornati possono scaricare e condividere gli aggiornamenti delle napplet; quelli più vecchi si limitano a inoltrarne gli annunci.&lt;/p>
&lt;h2 id="tagged-releases">Release con tag&lt;/h2>
&lt;h3 id="white-noise-android-adds-group-polls-and-account-specific-disappearing-message-defaults">White Noise Android aggiunge sondaggi di gruppo e impostazioni predefinite per account sui messaggi a scomparsa&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-android">White Noise Android&lt;/a> è un messenger Nostr per conversazioni private crittografate con &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>. Dopo i miglioramenti alla consegna e alla condivisione &lt;a href="https://nostrcompass.org/en/newsletters/2026-09-23-newsletter/#white-noise-android-2026921-improves-encrypted-chat-reliability-and-sharing">trattati la settimana scorsa&lt;/a>, &lt;a href="https://github.com/marmot-protocol/whitenoise-android/releases/tag/android-v2026.9.30">la release del 30 settembre&lt;/a> aggiunge, tramite il Marmot Development Kit, sondaggi di gruppo con risposte selezionabili, barre dei risultati e scadenze. Aggiunge inoltre &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2799">impostazioni predefinite locali al dispositivo per i messaggi a scomparsa di ciascun account&lt;/a>: le nuove conversazioni dirette e i nuovi gruppi ereditano la durata scelta, mentre le conversazioni esistenti e le loro impostazioni individuali mantengono la politica attuale. &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2765">Wave hi&lt;/a> invia un saluto che menziona un membro appena aggiunto senza toccare la bozza in corso.&lt;/p>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/whitenoise-android/releases/tag/android-v2026.9.30">release&lt;/a> consente agli utenti di scegliere il punto focale del ritaglio per le immagini di profilo e di gruppo e di eliminare una cartella di chat senza eliminarne le conversazioni. I suoi &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2869">avvisi sulla cronologia&lt;/a> mostrano quando il ripristino lascia potenzialmente incompleta la cronologia dell’account o del gruppo, con controlli di chiusura separati. La &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2818">paginazione delle conversazioni&lt;/a> evita di ricostruire la timeline visualizzata quando si salta ai messaggi recenti, e le &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2825">modifiche ai messaggi in attesa&lt;/a> conservano il proprio testo mentre l’invio originale ottiene l’ID event confermato. Questo passaggio delle modifiche copre i cambi di conversazione all’interno dell’app in esecuzione; non garantisce la persistenza in caso di terminazione del processo.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2768">La dettatura ora sceglie Incolla o Invia per ogni registrazione&lt;/a>, e la conclusione automatica inserisce la trascrizione nella bozza. La &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2888">configurazione del provider offline&lt;/a> spiega l’elaborazione sul dispositivo, mantiene il relativo consenso separato da quello degli altri provider vocali e ripristina i contenuti multimediali interrotti al termine dell’acquisizione. La &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2830">gestione dei file generici&lt;/a> accetta documenti non vuoti e di dimensione limitata, con nomi file, metadati MIME e messaggi di errore accurati; i &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2879">download espliciti degli allegati&lt;/a> usano i job di trasferimento avviati dall’utente di Android, con un fallback in primo piano. I &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2877">controlli per incollare&lt;/a> ora usano l’azione di sistema di Android, così Secure Paste di GrapheneOS può concedere l’accesso agli appunti. Android inoltre &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2806">mostra come contenuti animati le condivisioni GIPHY provenienti da iOS&lt;/a>, rispettando la politica di download.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2808">correzioni alle notifiche&lt;/a> aggiornano i soprannomi dei mittenti e ripuliscono gli avvisi quando si apre una conversazione. Le &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2712">modifiche al ripristino delle notifiche&lt;/a> preservano il lavoro push in sospeso quando il controllo in primo piano non è disponibile e usano tentativi limitati. La &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2802">firma con Amber&lt;/a> coordina le raffiche di approvazioni per lo stesso account, impedendo che i limiti di frequenza annullino gli invii. La &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2872">nuova configurazione di audit&lt;/a> chiede una nuova scelta sulla condivisione dei log prima di caricarli sul nuovo destinatario. Il codice sorgente &lt;a href="https://github.com/marmot-protocol/whitenoise-android/pull/2840">adotta inoltre la licenza AGPL-3.0-only&lt;/a>.&lt;/p>
&lt;h3 id="nostream-310-adjusts-relay-proof-of-work-to-load">nostream 3.1.0 adegua la proof of work del relay al carico&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> è un relay Nostr in TypeScript basato su PostgreSQL. La &lt;a href="https://github.com/cameri/nostream/releases/tag/v3.1.0">versione 3.1.0&lt;/a> può alzare o abbassare la soglia di proof of work degli event, entro limiti fissati dall’operatore, al variare della frequenza di event osservata. L’impostazione è disattivata per impostazione predefinita, usa la frequenza misurata da ciascun worker e lascia indipendente la soglia statica esistente per le chiavi pubbliche, quindi gli operatori devono attivarla esplicitamente prima che i mittenti vedano un requisito di ammissione diverso.&lt;/p>
&lt;p>La stessa &lt;a href="https://github.com/Cameri/nostream/releases/tag/v3.1.0">release&lt;/a> aggiunge una dashboard di amministrazione con metriche su relay, WebSocket ed event, risultati delle sonde sullo stato della rete e notifiche configurabili per l’operatore. La sua API di amministrazione è disattivata per impostazione predefinita. Questi controlli aiutano gli operatori a distinguere i problemi di pressione sul relay da quelli di raggiungibilità, mantenendo la nuova politica soggetta a configurazione esplicita.&lt;/p>
&lt;p>Dopo la release con proof of work sensibile al carico, nostream ha integrato &lt;a href="https://github.com/cameri/nostream/pull/788">azioni per le segnalazioni dei moderatori fidati&lt;/a>. &lt;a href="https://nostrcompass.org/it/topics/nip-56/">NIP-56&lt;/a> definisce gli event di segnalazione dei contenuti; la nuova opzione &lt;code>nip56.hideActionableReports&lt;/code> esclude gli event segnalati dai risultati di REQ e COUNT quando anche le segnalazioni sono abilitate. La segnalazione di un event nasconde quell’event, mentre la segnalazione di una chiave pubblica nasconde tutti gli event di quell’autore. La nuova opzione è impostata a false per impostazione predefinita, quindi abilitare la sola raccolta delle segnalazioni lascia invariati i risultati delle query esistenti.&lt;/p>
&lt;h3 id="nostr-double-ratchet-0017100172-closes-a-removed-member-gap">Nostr double ratchet 0.0.171–0.0.172 chiude una falla legata ai membri rimossi&lt;/h3>
&lt;p>&lt;a href="https://github.com/irislib/nostr-double-ratchet">Nostr double ratchet&lt;/a> è una libreria TypeScript per chat private crittografate trasportate da Nostr. La &lt;a href="https://github.com/irislib/nostr-double-ratchet/releases/tag/nostr-double-ratchet-ts-v0.0.171">versione 0.0.171&lt;/a> ruota la sender key di un gruppo dopo le modifiche ai membri, così chi è stato rimosso con le vecchie chiavi non può decifrare i messaggi successivi di un mittente aggiornato, anche dopo che quel mittente si è riavviato. Rifiuta inoltre gli invii o la rotazione delle chiavi da parte di un proprietario locale rimosso e interrompe un invio se i membri cambiano durante la distribuzione delle chiavi.&lt;/p>
&lt;p>La &lt;a href="https://github.com/irislib/nostr-double-ratchet/releases/tag/nostr-double-ratchet-ts-v0.0.172">versione 0.0.172&lt;/a> trasporta l’approvazione esistente del dispositivo, firmata dall’account, in una risposta di invito crittografata opzionale. Un destinatario che usa l’aggiornamento può verificare il dispositivo del mittente prima che arrivi un event di registrazione separato, mentre i dispositivi collegati mantengono la propria approvazione tra un riavvio e l’altro. Il campo dell’invito è opzionale e lascia intatti l’handshake originale e il formato dei messaggi del ratchet.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/irislib/nostr-double-ratchet/releases/tag/nostr-double-ratchet-ts-v0.0.175">versioni 0.0.173–0.0.175&lt;/a> estendono il lavoro sulla rimozione con passaggi durevoli delle chiavi di gruppo e uno stato di consegna in coda salvato prima della pubblicazione, così i passaggi interrotti si recuperano dopo un riavvio. I callback di pubblicazione portano un contesto di gruppo locale che consente alle applicazioni di annullare i tentativi durevoli dopo una rimozione, mantenendo consegnabili i controlli sui membri; gli invii in coda preservano gli ID originali degli event interni. Le risposte duplicate agli inviti preservano le sessioni già stabilite, le sottoscrizioni restano stabili al variare dei contatti e gli snapshot delle chiavi delle app conservano i nomi dei dispositivi senza condividere copie modificabili. Il formato di trasmissione firmato resta invariato; le &lt;a href="https://github.com/irislib/nostr-double-ratchet/releases/tag/nostr-double-ratchet-ts-v0.0.173">note della 0.0.173&lt;/a> riportano anche la versione Rust 0.0.168, con fallback sulle sessioni di ricezione e filtro locale degli echo di gruppo.&lt;/p>
&lt;h3 id="scramble-074075-fetches-the-messages-a-new-group-member-should-see">Scramble 0.7.4–0.7.5 recupera i messaggi che un nuovo membro del gruppo dovrebbe vedere&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> è un messenger di gruppo Marmot multipiattaforma con un’interfaccia Android nativa. Nella &lt;a href="https://github.com/DavidGershony/Scramble/releases/tag/v0.7.5">versione 0.7.5&lt;/a> ogni gruppo ha il proprio limite temporale per la cronologia dei relay: in precedenza il limite della conversazione più attiva veniva applicato a tutti i gruppi, quindi un gruppo appena raggiunto poteva restare vuoto perché i suoi messaggi successivi all’ingresso non venivano mai richiesti. Il percorso di riconnessione riceve la stessa correzione, e un gruppo senza attività locale ora richiede tutti i messaggi disponibili; MLS continua a impedire a un nuovo membro di decifrare i messaggi inviati prima del suo ingresso.&lt;/p>
&lt;p>La precedente &lt;a href="https://github.com/DavidGershony/Scramble/releases/tag/v0.7.4">release 0.7.4&lt;/a> corregge l’accettazione ripetuta degli inviti causata dall’accumulo di gestori di clic nelle righe Android riciclate e rende persistente nell’app nativa l’impostazione di un server multimediale Blossom personalizzato. La versione 0.7.5 distribuisce solo l’APK Android nativo, quindi chi segue il vecchio nome file Avalonia deve cambiare la destinazione degli aggiornamenti. Account e cronologia passano tra queste due build Android, ma i gruppi creati con il vecchio motore MLS 0.6.x non migrano alla 0.7.x.&lt;/p>
&lt;p>&lt;a href="https://github.com/DavidGershony/Scramble/releases/tag/v0.7.6">Scramble 0.7.6&lt;/a> aggiunge un controllo manuale Fetch missing messages che interroga ogni indirizzo di instradamento usato da un gruppo, rimuove il limite temporale, ripara un indirizzo salvato obsoleto e riferisce cosa ha recuperato. Non può comunque decifrare le epoch precedenti all’ingresso dell’utente. Gli amministratori nell’app nativa possono promuovere o retrocedere altri membri, con lo stato attuale dell’elenco dei membri e l’esito visibile degli errori; le conversazioni tra due persone continuano a nascondere questi controlli. L’azione Copia nelle informazioni del gruppo ora risponde, anche se le conversazioni a cui si è stati invitati possono ancora copiare un identificatore interno della chat invece dell’ID di gruppo del protocollo. La &lt;a href="https://github.com/DavidGershony/Scramble/releases/tag/v0.7.7">versione 0.7.7&lt;/a> inoltre &lt;a href="https://github.com/DavidGershony/Scramble/commit/35e72177a0009ec96e8494caed7e9c250b66c7cb">smaltisce i messaggi trattenuti quando arriva il commit di un altro membro&lt;/a>; la &lt;a href="https://github.com/DavidGershony/Scramble/releases/tag/v0.7.8">0.7.8&lt;/a> aggiunge un test di regressione per quel percorso del membro passivo.&lt;/p>
&lt;h3 id="amber-666-repairs-remote-signer-connection-secrets">Amber 6.6.6 ripara i segreti di connessione del signer remoto&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> è un signer Android che approva le firme degli event Nostr senza consegnare all’applicazione la chiave del suo account. Dopo la modifica alla crittografia dei backup della settimana scorsa, la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.6.6">versione 6.6.6&lt;/a> corregge il parser di &lt;code>nostrconnect&lt;/code>: un parametro di connessione contenente &lt;code>=&lt;/code>, come un segreto con padding, veniva alterato prima che Amber rispondesse. Per questo i client basati su NDK fallivano il controllo del segreto anche quando la connessione al signer sembrava per il resto valida.&lt;/p>
&lt;p>La &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.6.6">release&lt;/a> invia inoltre le segnalazioni di feedback ai relay pubblicizzati dall’annuncio del repository di Amber, con un fallback sul relay precedente se l’annuncio non può essere recuperato. Timeout Tor più lunghi danno ai relay lenti più tempo per confermare quella pubblicazione. Le restanti modifiche migliorano la visibilità di icone e testo nei temi di Amber.&lt;/p>
&lt;h3 id="fips-052-stops-a-nostr-discovery-privacy-leak">FIPS 0.5.2 blocca una fuga di privacy nella scoperta via Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> è una mesh crittografata che usa identità Nostr e messaggi dei relay per scoprire i peer. La sua &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.5.2">release di manutenzione 0.5.2&lt;/a> smette di firmare le richieste di eliminazione per l’attraversamento NAT con la chiave di instradamento del nodo, che collegava quella chiave al traffico di attraversamento sui relay. Aggiorna inoltre la libreria TLS usata per le connessioni ai relay a una versione che corregge un avviso di sicurezza pubblicato e ripara diversi casi di messaggi persi durante il rekeying di collegamenti e sessioni.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.5.2">note di rilascio&lt;/a> invitano gli operatori di tutte le piattaforme ad aggiornare, descrivendo correzioni separate per i permessi del file di chiave su Windows, il gateway e il servizio dei pacchetti. I nodi effimeri non scrivono più un &lt;code>fips.key&lt;/code> privato che un riavvio successivo potrebbe sovrascrivere; gli operatori che desideravano un’identità stabile devono impostare la modalità persistente prima di aggiornare. La release non cambia il formato di trasmissione della mesh, quindi i nodi con versioni diverse possono essere aggiornati singolarmente.&lt;/p>
&lt;h3 id="napplet-soyli-02310234-repairs-backend-publishing-and-signer-approval">napplet soyLI 0.23.1–0.23.4 ripara la pubblicazione del backend e l’approvazione del signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/napplet-soy">soyLI di napplet.soy&lt;/a> è il toolkit di creazione e pubblicazione per piccoli programmi Nostr in sandbox. Dopo la release della settimana scorsa sulle creazioni condivise, la &lt;a href="https://github.com/zeSchlausKwab/napplet-soy/releases/tag/soyli-v0.23.1">versione 0.23.1&lt;/a> include manifest, handler e schemi del backend nei controlli del creatore e nelle anteprime multigiocatore. Mantiene nel manifest del progetto la configurazione portabile dei provider, lasciando fuori dallo snapshot del codice pubblicato le associazioni di identità private e i database di sviluppo.&lt;/p>
&lt;p>La &lt;a href="https://github.com/zeSchlausKwab/napplet-soy/releases/tag/soyli-v0.23.2">versione 0.23.2&lt;/a> permette ai progetti che in passato avevano incluso nel repository un contesto di backend pubblico generato di pubblicare di nuovo dopo una convalida rigorosa, continuando a rifiutare associazioni private, journal, database e credenziali presenti nella cronologia raggiungibile. La successiva &lt;a href="https://github.com/zeSchlausKwab/napplet-soy/releases/tag/soyli-v0.23.4">release 0.23.4&lt;/a> corregge un errore di sessione del backend persistente che poteva rifiutare un’approvazione valida dell’estensione o del signer remoto quando una persona impiegava diversi secondi a firmare. Anche gli host pubblici hanno bisogno della correzione dell’host condiviso; aggiornare solo la CLI di un creatore non ripara un host già distribuito.&lt;/p>
&lt;h3 id="dart-ndk-0100-scopes-blossom-auth-and-remote-signing">Dart NDK 0.10.0 delimita l’autenticazione Blossom e la firma remota&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/ndk">Dart NDK&lt;/a> è una libreria Flutter e Dart per l’accesso ai relay Nostr, la firma, le richieste ai wallet e le operazioni sui contenuti multimediali. Dopo la prerelease della settimana scorsa, la &lt;a href="https://github.com/relaystr/ndk/releases/tag/v0.10.0-dev.7">0.10.0-dev.7&lt;/a> fa sì che le richieste multimediali Blossom restino anonime finché un server non le rifiuta, per poi autorizzarle tramite una politica esplicita che stabilisce quale identità un’operazione può rivelare. Porta quell’autorizzazione lungo tutto il percorso della richiesta e sostituisce le vecchie opzioni &lt;code>useAuth&lt;/code> e &lt;code>customSigner&lt;/code>, una modifica di integrazione incompatibile per le app che usano l’API della prerelease.&lt;/p>
&lt;p>La &lt;a href="https://github.com/relaystr/ndk/releases/tag/v0.10.0-dev.9">dev.9&lt;/a> smette di trattenere la risposta di un signer remoto finché il relay più lento non la conferma. La &lt;a href="https://github.com/relaystr/ndk/releases/tag/v0.10.0-dev.8">dev.8&lt;/a> riduce il polling dei relay in background e il lavoro sulla cache; le sue altre correzioni riguardano la persistenza del seed del wallet e le scadenze di regolamento. La &lt;a href="https://github.com/relaystr/ndk/releases/tag/v0.10.0">release stabile 0.10.0&lt;/a> ora raccoglie questa serie di sviluppo insieme alle modifiche ai metadati di connessione e agli ID di sottoscrizione privati descritte di seguito. Il &lt;a href="https://github.com/relaystr/ndk/compare/v0.10.0-dev.9...v0.10.0">confronto con la dev.9&lt;/a> include quelle modifiche integrate. Le applicazioni che aggiornano devono esaminare sia la modifica all’API di autenticazione multimediale sia il percorso di risposta del signer remoto.&lt;/p>
&lt;p>La release stabile include &lt;a href="https://github.com/relaystr/ndk/pull/852">metadati di connessione e permessi richiesti per NIP-46&lt;/a>, che sostituiscono campi di connessione separati con un valore &lt;code>Nip46ClientMetadata&lt;/code>. Si tratta di una modifica all’API sorgente che consente ai widget di login di passare al bunker l’identità dell’applicazione e i permessi richiesti. Un’altra &lt;a href="https://github.com/relaystr/ndk/pull/860">modifica agli ID delle richieste&lt;/a> usa in produzione 32 caratteri esadecimali casuali, tenendo i nomi dei casi d’uso e le fasi di paginazione fuori dagli ID di sottoscrizione visibili ai relay. Gli ID espliciti restano entro il limite di 64 caratteri di NIP-01, mentre la modalità di debug mantiene un breve nome diagnostico.&lt;/p>
&lt;h3 id="mostro-core-0160-removes-the-old-gift-wrap-transport">Mostro Core 0.16.0 rimuove il vecchio trasporto gift-wrap&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core">Mostro Core&lt;/a> fornisce il protocollo di messaggistica usato dai client di scambio peer-to-peer basati su Nostr di Mostro e dal suo coordinatore. La &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.16.0">versione 0.16.0&lt;/a> rimuove il trasporto gift-wrap del protocollo v1 e le vecchie funzioni di wrap e unwrap, lasciando il trasporto più recente come percorso della libreria. È una modifica incompatibile per le applicazioni che costruiscono o leggono ancora messaggi v1 tramite questa libreria.&lt;/p>
&lt;p>La &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.16.0">release della libreria&lt;/a> precede la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.19.0">release 0.19.0 del coordinatore, ora pubblicata&lt;/a>. Gli operatori che servono client più vecchi devono aggiornare entrambi i lati della migrazione del trasporto. Il precedente &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.15.1">tag 0.15.1&lt;/a> aggiunge uno stato di disputa per la cancellazione cooperativa, ma è la rimozione del trasporto a segnare il passaggio di compatibilità.&lt;/p>
&lt;h3 id="cambium-060071-enrolls-an-unlock-phone-through-relay-messages">Cambium 0.6.0–0.7.1 registra un telefono di sblocco tramite messaggi dei relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/cambium">Cambium&lt;/a> è un’app Android di supporto alla firma per una chiave hardware Heartwood, che può anche sbloccare la scheda dopo un riavvio. La &lt;a href="https://github.com/forgesworn/cambium/releases/tag/v0.6.0">versione 0.6.0&lt;/a> consente a un telefono di registrarsi per lo sblocco attraverso i relay Nostr della scheda senza cavo USB; l’utente confronta cinque parole di richiesta sul telefono, sulla scheda e su Sapwood, l’interfaccia di registrazione della scheda, prima di premere il pulsante della scheda. I relay appena annunciati ricevono un ritardo di connessione casuale, così il primo contatto del telefono non rivela esattamente quando ha visto l’aggiornamento della scheda.&lt;/p>
&lt;p>La &lt;a href="https://github.com/forgesworn/cambium/releases/tag/v0.7.0">versione 0.7.0&lt;/a> inverte il flusso dell’invito: un telefono scansiona il codice QR a breve scadenza di Sapwood e restituisce un unico event crittografato e monouso da una chiave usa e getta. Il nuovo tentativo ripubblica lo stesso event se nessun relay lo accetta, mentre il vecchio percorso con visualizzazione del codice resta disponibile per le build più vecchie di Sapwood. La &lt;a href="https://github.com/forgesworn/cambium/releases/tag/v0.7.1">patch 0.7.1&lt;/a> mantiene visibile il codice di verifica finale e migliora la riproducibilità della build per F-Droid; il flusso con QR richiede comunque le versioni recenti di Sapwood e Heartwood indicate.&lt;/p>
&lt;h3 id="bray-350352-limits-agent-initiated-nostr-wallet-spending">Bray 3.5.0–3.5.2 limita la spesa del wallet Nostr avviata dagli agenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/bray">Bray&lt;/a> è un server di strumenti Nostr che consente a un assistente IA di richiedere azioni su relay, identità e wallet attraverso un’interfaccia delimitata. La sua &lt;a href="https://github.com/forgesworn/bray/releases/tag/v3.5.0">release 3.5.0&lt;/a> aggiunge un limite per ogni pagamento Nostr Wallet Connect e un budget giornaliero persistente, con conferma umana dove l’host dell’assistente la supporta. Servire connessioni di spesa separate ora richiede un’impostazione esplicita del servizio wallet, ricontrolla ogni autorizzazione prima dell’uso e limita le ricerche di fatture agli hash compresi in quell’autorizzazione.&lt;/p>
&lt;p>La &lt;a href="https://github.com/forgesworn/bray/releases/tag/v3.5.0">release&lt;/a> indica inoltre agli utenti di conservare l’URI di connessione del wallet in un file privato invece di incollarlo in chat, e si rifiuta di ritentare un pagamento dall’esito incerto come se il fallimento fosse dimostrato. La &lt;a href="https://github.com/forgesworn/bray/releases/tag/v3.5.2">versione 3.5.2&lt;/a> confronta localmente i metodi di pagamento del marketplace dopo che i relay avevano rifiutato il filtro richiesto sul metodo di pagamento. Questi controlli limitano ciò che un assistente delegato può spendere e impediscono che un’ipotesi sui filtri dei relay nasconda le offerte corrispondenti.&lt;/p>
&lt;h3 id="mafrend-130-alpha-moves-private-map-groups-to-current-marmot">Mafrend 1.3.0-alpha porta i gruppi privati sulla mappa alla versione attuale di Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/DestBro/mafrend-zapstore">Mafrend&lt;/a> è un’app social Nostr basata su mappe che permette di esplorare luoghi e chattare attorno alle destinazioni. La sua &lt;a href="https://github.com/DestBro/mafrend-zapstore/releases/tag/v1.3.0-alpha">release 1.3.0-alpha&lt;/a> aggiorna i gruppi privati a una specifica più recente dei &lt;a href="https://nostrcompass.org/it/topics/marmot/">gruppi crittografati Marmot&lt;/a> e aggiunge la visualizzazione dei profili da chat e recensioni. Il formato dei gruppi è incompatibile con le chat delle alpha precedenti; gli utenti devono considerare questa release una migrazione alpha con un’interruzione di compatibilità.&lt;/p>
&lt;p>La &lt;a href="https://github.com/DestBro/mafrend-zapstore/releases/tag/v1.3.0-alpha">stessa release&lt;/a> aggiunge la condivisione di screenshot e modifiche alla chat, insieme a miglioramenti della mappa e dei marcatori. Le funzioni del profilo sono ancora indicate come in lavorazione dal progetto. La modifica rilevante per Nostr è il cambiamento di interoperabilità dei gruppi privati; chi ha vecchi gruppi di prova deve leggere la nota di compatibilità prima di aggiornare.&lt;/p>
&lt;h3 id="sonar-alpha15alpha151-repairs-encrypted-group-publishing">Sonar alpha.15–alpha.15.1 ripara la pubblicazione nei gruppi crittografati&lt;/h3>
&lt;p>&lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar">Sonar&lt;/a> è un messenger privato che può trasportare le conversazioni su mesh Bluetooth e su Nostr. La &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar/releases/tag/v0.1-alpha.15">alpha.15&lt;/a> aggiunge le reazioni con emoji ai messaggi e la condivisione privata dell’ora locale all’interno delle chat crittografate, con un’impostazione per revocare tale condivisione. Il suo wallet passa a Cashu, ma questa modifica ai pagamenti è separata dall’aggiornamento della messaggistica.&lt;/p>
&lt;p>La &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar/releases/tag/v0.1-alpha.15.1">alpha.15.1&lt;/a> ripara un errore all’avvio che poteva lasciare vuoto l’indice delle conversazioni dopo che una build di un ramo precedente aveva scritto una versione di schema estranea. Senza l’indice, l’app ricifrava e ripubblicava le condivisioni dell’ora locale verso ogni gruppo a ogni riapertura, inviando a volte centinaia di event prima che intervenissero i limiti di frequenza dei relay. La correzione urgente ricostruisce quello stato locale e interrompe le pubblicazioni ripetute nei gruppi.&lt;/p>
&lt;h3 id="elisyms-commerce-packages-introduce-private-nostr-orders">I pacchetti commerce di Elisym introducono ordini Nostr privati&lt;/h3>
&lt;p>&lt;a href="https://github.com/elisymlabs/elisym">Elisym&lt;/a> è un toolkit per agenti basato su Nostr che ora sta costruendo un flusso di commercio basato su event firmati. Il suo &lt;a href="https://github.com/elisymlabs/elisym/pull/120">pacchetto &lt;code>commerce&lt;/code> integrato&lt;/a> definisce prodotti del negozio, autorizzazione del proprietario, ordini e ricevute incapsulati privatamente e la verifica delle offerte per i componenti di checkout e del commerciante. Un successivo &lt;a href="https://github.com/elisymlabs/elisym/releases/tag/%40elisym/commerce%400.2.0">tag commerce 0.2.0&lt;/a> deriva il riferimento di pagamento di un ordine dall’ordine stesso, legando la ricerca del pagamento al flusso di acquisto firmato.&lt;/p>
&lt;p>La serie di pacchetti introduce anche lavori separati sul nucleo dei pagamenti e sul checkout nel browser, ma i suoi &lt;a href="https://github.com/elisymlabs/elisym/releases/tag/%40elisym/commerce%400.2.0">tag di release&lt;/a> non dimostrano che sia stato distribuito un checkout completo per i commercianti. Il kind dell’event di autorizzazione del negozio è esplicitamente provvisorio nella fonte primaria del progetto. Gli undici tag di SDK, MCP, CLI e nucleo dei pagamenti segnano un’unica funzionalità di commercio in sviluppo.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/elisymlabs/elisym/releases/tag/%40elisym%2Fmerchant-node%400.1.0">nuove release dei pacchetti di Elisym&lt;/a> impacchettano il nodo commerciante self-hosted, mentre &lt;a href="https://github.com/elisymlabs/elisym/releases/tag/%40elisym%2Fmcp%400.31.0">MCP 0.31.0&lt;/a> aggiunge &lt;code>buy_product&lt;/code> e &lt;code>get_order&lt;/code> per i prodotti commerciali. Le successive release di commerce e del nodo commerciante aggiungono il supporto ai pagamenti Tempo all’interno dello stesso checkout. Questi pacchetti fanno avanzare l’integrazione esistente tra prodotti firmati e ordini privati; l’elenco dei tag non trasforma lo schema provvisorio degli event in uno standard né dimostra il lancio completo di un servizio ospitato.&lt;/p>
&lt;h3 id="flotilla-1112-unsticks-signers-and-incomplete-relay-feeds">Flotilla 1.11.2 sblocca i signer e i feed dei relay incompleti&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/flotilla">Flotilla&lt;/a> è un client Nostr per conversazioni, stanze e spazi condivisi. La &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.11.2">versione 1.11.2&lt;/a> offre all’utente una via d’uscita quando l’avvio si blocca in attesa di un signer remoto e disconnette una sessione i cui dati locali dell’applicazione sono stati cancellati. Una stanza ora può mostrare i propri messaggi prima che lo spazio più ampio a cui appartiene finisca la sincronizzazione, mentre i feed non omettono più dei post solo perché un relay ha risposto più tardi di un altro.&lt;/p>
&lt;p>La &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.11.2">stessa release&lt;/a> pubblica anche una build per F-Droid firmata con la chiave esistente dell’app e mantiene aggiornate le release su GitHub per Obtainium. Questo lavoro di distribuzione interessa chi cambia canale di aggiornamento, ma le correzioni a relay e signer sono il motivo immediato per aggiornare.&lt;/p>
&lt;h3 id="ditto-2423-shows-relay-delivery-and-tightens-account-boundaries">Ditto 2.42.3 mostra la consegna ai relay e rafforza i confini tra account&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ditto">Ditto&lt;/a> è un client social Nostr che consente agli utenti di scegliere i propri relay e di autenticarsi su di essi. Nella &lt;a href="https://gitlab.com/soapbox-pub/ditto/-/releases/v2.42.3">versione 2.42.3&lt;/a>, i Dettagli dell’event di un post mostrano quali relay dell’utente e dell’autore lo contengono; Broadcast si rivolge solo a quelli mancanti. La release segnala inoltre i relay di lettura che non rispondono e offre un controllo per ritentare, rendendo più facile diagnosticare un post mancante senza inviarlo di nuovo ovunque.&lt;/p>
&lt;p>Le &lt;a href="https://gitlab.com/soapbox-pub/ditto/-/releases/v2.42.3">note di rilascio&lt;/a> dicono che cambiare account non invia più post ai relay dell’account precedente, che gli utenti silenziati non possono attivare avvisi generici sul telefono e che link o immagini nei post non possono raggiungere dispositivi sulla rete locale del lettore. I post provenienti da relay lenti non scompaiono più dai feed Follows e Loved, mentre la chat delle dirette e i giochi webxdc si aggiornano senza scaricare ripetutamente l’intera vista. Anche la navigazione di torrent e audio è nuova, ma l’instradamento verso i relay e l’isolamento degli account sono le modifiche con l’impatto più ampio su Nostr.&lt;/p>
&lt;h3 id="iris-chat-20269244-brings-calls-into-encrypted-conversations">Iris Chat 2026.9.24.4 porta le chiamate nelle conversazioni crittografate&lt;/h3>
&lt;p>&lt;a href="https://github.com/irislib/iris-chat-rs">Iris Chat&lt;/a> è un messenger Nostr crittografato end-to-end che usa la famiglia di protocolli di chat double ratchet. La sua &lt;a href="https://github.com/irislib/iris-chat-rs/releases/tag/v2026.9.24.4">release del 24 settembre&lt;/a> aggiunge chiamate vocali e video con i contatti compatibili, anche su una connessione locale già esistente quando internet non è disponibile. Un utente può ridurre la qualità video, rispondere a una videochiamata solo in voce e gestire una chiamata in arrivo tramite l’interfaccia di chiamata di Android; rispondere o rifiutare fa anche smettere di squillare gli altri dispositivi collegati.&lt;/p>
&lt;p>La &lt;a href="https://github.com/irislib/iris-chat-rs/releases/tag/v2026.9.24.4">release&lt;/a> consente inoltre di accedere tramite un’app di firma separata e di vedere quali dispositivi collegati sono connessi. Le &lt;a href="https://github.com/irislib/iris-chat-rs/releases/tag/v2026.9.24.5">patch successive del 24 settembre&lt;/a> conservano i timestamp originali dei messaggi in ritardo e migliorano la consegna ravvicinata dopo la perdita di un pacchetto di riconnessione. Si tratta di comportamenti iniziali per chiamate e dispositivi multipli, quindi l’aggiornamento è più utile ai contatti che possono usare build compatibili di Iris.&lt;/p>
&lt;p>Il successivo &lt;a href="https://primal.net/e/17fd3f325dda1feb0c1e51c6e1af0f7b3efe42ecff75e9527ac435cdc6a30c7a">aggiornamento del 30 settembre firmato dallo sviluppatore&lt;/a> conserva la cronologia locale del gruppo di un membro rimosso disabilitandone gli invii, migliora la consegna tra dispositivi collegati e nei gruppi grandi e ripara gli indicatori di lettura e i contatori dei non letti. Le chiamate ottengono la selezione del dispositivo audio e il ripristino dei toni in uscita; uno stato del microfono obsoleto non silenzia più l’audio in arrivo. Il silenziamento temporizzato, la copia delle immagini, gli allegati trascinati, l’instradamento delle notifiche e la registrazione push ricevono correzioni, mentre la disconnessione cancella le cache locali e la rimozione di un dispositivo ne termina la sessione. Un &lt;a href="https://primal.net/e/89ec93e25caf31831714e807c927b6d50d3d5fc38044df845163ff656db3f711">secondo aggiornamento&lt;/a> migliora l’accesso ai file messi in cache da altre app Iris sullo stesso dispositivo e mantiene disponibile la condivisione locale dei file con Nearby disattivato.&lt;/p>
&lt;h3 id="librenostr-060070-routes-relays-through-built-in-tor">LibreNostr 0.6.0–0.7.0 instrada i relay attraverso Tor integrato&lt;/h3>
&lt;p>&lt;a href="https://github.com/Lwb89dev/librenostr">LibreNostr&lt;/a> è un client Nostr per Android con impostazioni configurabili per relay e privacy. La &lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.6.0">versione 0.6.0&lt;/a> integra un motore Tor basato su Arti per ARM64 e applica la modalità scelta, Direct, Tor per tutto o solo &lt;code>.onion&lt;/code>, a WebSocket dei relay, richieste HTTP, contenuti multimediali, caricamenti e pagine web. La modalità Tor rigorosa si blocca in modo sicuro quando Tor non è disponibile e non invia mai silenziosamente una richiesta in modo diretto; cambiare modalità riconnette i socket dei relay attraverso il nuovo percorso.&lt;/p>
&lt;p>La &lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.6.2">versione 0.6.2&lt;/a> aggiunge un filtro web-of-trust sul dispositivo costruito a partire dalle liste di follow pubbliche e sceglie i relay supplementari in base alle persone seguite aggiuntive che permettono di raggiungere. La &lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.7.0">versione 0.7.0&lt;/a> mostra poi note e notifiche prima che finiscano le ricerche di profili e conteggi, limita le query lente ai relay e smette di decifrare l’intera inbox dei DM a ogni apertura di conversazione. Insieme, queste release cambiano sia dove il client può connettersi sia per quanto tempo un relay lento può bloccarne l’interfaccia.&lt;/p>
&lt;p>La sua &lt;a href="https://primal.net/e/4eeba660b6b789288954290497de89fe3222bfc955214647ead5d63e6031d927">prima release stabile, la 1.0.0&lt;/a>, firmata dallo sviluppatore, aggiunge deck per tablet salvati per ciascun profilo, con colonne spostabili per feed, hashtag, profili, lettura di contenuti lunghi, notifiche e messaggi. I tablet in orizzontale ottengono questo layout; i telefoni mantengono l’interfaccia esistente. La ricerca guadagna OR, esclusioni, filtri per contenuti multimediali e intervalli di date funzionanti, restituisce i profili in cache prima dei perfezionamenti dei relay e passa subito oltre le richieste full-text rifiutate. Gli hashtag sono ordinati cronologicamente, la paginazione attende un numero sufficiente di risposte dei relay e i feed inutilizzati rilasciano le proprie sottoscrizioni.&lt;/p>
&lt;p>La &lt;a href="https://primal.net/e/4eeba660b6b789288954290497de89fe3222bfc955214647ead5d63e6031d927">stessa release&lt;/a> preserva durante le modifiche le voci pubbliche e crittografate esistenti nelle mute list e nei segnalibri, invece di sostituirle con una singola modifica. Isola segnalibri e notifiche tra account e limita i relay ausiliari degli autori alle letture pubbliche, tenendo lontane da essi le richieste private e l’autenticazione ai relay. Impedisce inoltre che risposte di profilo obsolete sostituiscano metadati più recenti, ripara la paginazione e i badge delle notifiche, conserva gli elementi più vecchi del feed quando ne arrivano di nuovi e corregge i conti alla rovescia per annullare le risposte, la pubblicazione duplicata, gli URL dei contenuti multimediali con query string e i contatori dei non letti dopo aver segnato una chat come letta. La &lt;a href="https://primal.net/e/630becb73dbe7ba7c76a2d1970f1d7262a5afc33b02fc8002bef611cf638deab">versione 1.0.1&lt;/a> corregge un crash all’avvio del deck per tablet nel nuovo layout.&lt;/p>
&lt;h3 id="newlay-0345-streams-large-relay-queries-instead-of-closing-them">Newlay 0.3.45 trasmette in streaming le query di grandi dimensioni invece di chiuderle&lt;/h3>
&lt;p>&lt;a href="https://code.relay.tools/opensauce/newlay">Newlay&lt;/a> è un relay Nostr ospitato su Android con servizi locali correlati. Il suo &lt;a href="https://primal.net/e/b8380ae1bf30492129727ec59e27e2ae8a4cf9ad08e7361826a9ba8be88a227a">annuncio firmato della release 0.3.45&lt;/a> afferma che i risultati delle query di grandi dimensioni ora vengono trasmessi in streaming con backpressure invece di chiudere la connessione del client. L’host Git integrato elimina i pack superati dopo i push, mentre il suo coordinatore di messaggistica crittografata Cordn accetta richieste dei client sovradimensionate e invia un frame di interruzione quando una sonda va in timeout.&lt;/p>
&lt;p>La &lt;a href="https://primal.net/e/b8380ae1bf30492129727ec59e27e2ae8a4cf9ad08e7361826a9ba8be88a227a">release&lt;/a> offre inoltre all’operatore Android una scheda di stato in tempo reale per event, spazio di archiviazione, indirizzo e amministrazione, e allinea la libreria crittografica nativa per i dispositivi con pagine di memoria da 16 KB. Le modifiche al relay e al coordinatore coprono diverse release successive alla precedente versione nello store, la 0.3.39; la 0.3.45 ne è il punto di riferimento pacchettizzato.&lt;/p>
&lt;h3 id="ngit-grasp-305-keeps-git-pushes-and-relay-sync-moving">ngit-grasp 3.0.5 mantiene in movimento i push Git e la sincronizzazione dei relay&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/danconwaydev.com/ngit-grasp">ngit-grasp&lt;/a> è un relay Nostr e server Git self-hosted per la collaborazione firmata sui repository. Il suo &lt;a href="https://primal.net/e/6ff00b9230e4523e6f14aaf6e5088f91e5696be38b9304a4e1cef384e3318d41">annuncio firmato della release 3.0.5&lt;/a> sposta la lenta riconciliazione della cronologia fuori dall’attore condiviso di sincronizzazione in tempo reale, consentendo alle sottoscrizioni ai relay di partire mentre gli event precedenti vengono controllati. Applica attese separate per i limiti di frequenza, le query incomplete sulla cronologia, le letture delle mailbox e le ricerche di identità, così un relay malfunzionante non monopolizza più la capacità di ritentare.&lt;/p>
&lt;p>La &lt;a href="https://primal.net/e/6ff00b9230e4523e6f14aaf6e5088f91e5696be38b9304a4e1cef384e3318d41">stessa release&lt;/a> esegue la riconciliazione rispetto all’inventario locale degli event per evitare di recuperare di nuovo la cronologia già memorizzata e chiude le sottoscrizioni incomplete prima di considerarne verificata la copertura. Sul lato Git, accetta i push che la promozione dello stato in background ha già applicato, mantiene la protezione dai conflitti per i ref modificati e smaltisce l’output di avanzamento di Git durante i caricamenti per evitare un push bloccato. Questi dettagli contano perché un repository può apparire attivo sui relay mentre il suo trasferimento Git è ancora in attesa di un risultato definitivo.&lt;/p>
&lt;h3 id="armada-0630-carries-push-alerts-across-signer-types">Armada 0.63.0 porta gli avvisi push su tutti i tipi di signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/soapbox-pub/armada">Armada&lt;/a> è un client Nostr per comunità crittografate, canali e messaggi diretti. Dopo la release sulla privacy dei contenuti multimediali della settimana scorsa, il suo &lt;a href="https://primal.net/e/34021b55504d74c5d04f55dbfea87f31168a7c4582f35113d7ec063894d19e56">annuncio firmato della 0.63.0&lt;/a> descrive un nuovo percorso push del browser che funziona ad app chiusa per gli accessi tramite estensione e signer remoto, oltre che per gli altri tipi di account. Anche Tenna, un’app host che incorpora Armada, ottiene le notifiche in background per i propri utenti.&lt;/p>
&lt;p>La &lt;a href="https://primal.net/e/34021b55504d74c5d04f55dbfea87f31168a7c4582f35113d7ec063894d19e56">release&lt;/a> carica più rapidamente i messaggi più vecchi nei canali lunghi delle comunità ed evita di rileggere l’intera cronologia per i nuovi messaggi. Gli indicatori di digitazione nei messaggi diretti usano meno connessioni ai relay. Gli aggiornamenti desktop ottengono un invito al riavvio, mentre gli aggiornamenti diretti da versioni precedenti alla 0.50.0 non sono più supportati.&lt;/p>
&lt;p>Il &lt;a href="https://primal.net/e/af3ff711c1c1daa4d6a621dc5add0615fc5d37fbb1de31395cb79dcdf820aaf1">successivo aggiornamento firmato 0.63.1&lt;/a> aggiunge pacchetti di emoji modificabili con importazione da cartella e riordinamento, recupera i messaggi citati oltre la cronologia caricata e rende interoperabili le risposte ospitate sui relay. Riduce il traffico di riconnessione su Android, recupera dopo lunghe disconnessioni senza ripetere vecchi avvisi, esclude le menzioni precedenti all’ingresso e preserva i campi di gruppo non modificati e le voci private dell’elenco dei server. Le eliminazioni nei gruppi ospitati sui relay ora richiedono l’autore del messaggio o un amministratore. Ricevono correzioni anche il trascinamento dei server, la gestione di informazioni dei relay malformate e le sottoscrizioni ai repository.&lt;/p>
&lt;p>La &lt;a href="https://primal.net/e/ad0f6ad1a7730a400e8257c494c53ef14597c55a24e01b05dd2b2301c7d3aa36">versione 0.63.2&lt;/a> estende il Markdown dei messaggi a citazioni ed elenchi annidati, righe orizzontali, blocchi di codice, intestazioni sottolineate e formattazione che attraversa link o menzioni. I link alle pagine di Tenor e Giphy vengono riprodotti come GIF. La sincronizzazione dello stato di lettura trasferisce meno dati, la riconnessione evita download e accessi ridondanti, e le notifiche in background su Android sospendono la sincronizzazione dei relay quando grandi aggiornamenti delle impostazioni la sovraccaricano.&lt;/p>
&lt;h3 id="deed-030032-makes-zig-nostr-publishing-steadier">deed 0.3.0–0.3.2 rende più stabile la pubblicazione Nostr in Zig&lt;/h3>
&lt;p>&lt;a href="https://github.com/zig-nostr/deed">deed&lt;/a> è uno strumento a riga di comando in Zig per leggere e pubblicare event Nostr. La sua &lt;a href="https://github.com/zig-nostr/deed/releases/tag/v0.3.2">versione 0.3.2 del 24 settembre&lt;/a> aggiunge una skill per agenti e corregge le scadenze dei ping ai relay; le precedenti release &lt;a href="https://github.com/zig-nostr/deed/releases/tag/v0.3.1">0.3.1&lt;/a> e &lt;a href="https://github.com/zig-nostr/deed/releases/tag/v0.3.0">0.3.0&lt;/a> migliorano prestazioni e affidabilità della pubblicazione. I tre tag descrivono un’unica serie iniziale dello strumento. Il beneficio visibile per Nostr è una connessione ai relay e un percorso di pubblicazione degli event più stabili per gli script che usano la CLI.&lt;/p>
&lt;h3 id="cordn-051-keeps-other-groups-moving-when-a-coordinator-fails">Cordn 0.5.1 fa proseguire gli altri gruppi quando un coordinatore fallisce&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cordn-msg/cordn">Cordn&lt;/a> è un messenger di gruppo crittografato con MLS che usa identità e relay Nostr per individuare i coordinatori delle conversazioni. La sua &lt;a href="https://primal.net/e/23f7498e2e405e05c4d3075ccc522c753d80f37b954a81ff8ecb3268f2dc7dc6">release firmata 0.5.1 del client&lt;/a> fa seguito al lavoro sulla coda offline della settimana scorsa separando la pianificazione del coordinatore da quella dell’outbox: un coordinatore non disponibile non ritarda più gli invii verso gruppi non correlati. Gli hint dei relay risolti persistono dopo la scoperta, i documenti di gruppo li trasportano tra dispositivi e un record durevole delle pubblicazioni in sospeso recupera gli invii rimasti bloccati. Il ripristino su più dispositivi sovrappone le query sulla catena della cronologia e sulle lacune mentre legge la configurazione attuale.&lt;/p>
&lt;p>La &lt;a href="https://primal.net/e/23f7498e2e405e05c4d3075ccc522c753d80f37b954a81ff8ecb3268f2dc7dc6">release&lt;/a> aggiunge inoltre allegati trascinati, gruppi fissati, nomi di profilo nelle anteprime e nelle notifiche ed etichette per i coordinatori. Ripara il posizionamento sul primo messaggio non letto, i contatori dei non letti, gli avvisi duplicati, le anteprime di contenuti multimediali e messaggi di sistema, le risposte collegate a contenuti multimediali con didascalia e i controlli di zoom delle immagini. I download nativi usano un selettore Salva con nome. Un signer che compare in ritardo non provoca più un falso avviso di crittografia non supportata, e il cambio di account non entra più in conflitto con il seeding in background.&lt;/p>
&lt;h3 id="nymbot-107-adds-local-document-handling-and-encrypted-chat-sharing">Nymbot 1.0.7 aggiunge la gestione locale dei documenti e la condivisione crittografata delle chat&lt;/h3>
&lt;p>&lt;a href="https://zapstore.dev/apps/ai.nymbot">Nymbot&lt;/a> è un assistente raggiungibile tramite messaggi Nostr crittografati e gift-wrapped. La sua &lt;a href="https://primal.net/e/affd11e97fb3438965780aa01732e8d0e0f9b2162b87ab0f3019dff93449673e">release 1.0.7 firmata dallo sviluppatore&lt;/a> legge i documenti sul dispositivo, seleziona i passaggi pertinenti quando un file è troppo grande per essere inviato per intero e indica le pagine utilizzate. Le conversazioni possono essere condivise tramite un link crittografato end-to-end il cui accesso può essere revocato in seguito. Le risposte in Python e JavaScript possono essere eseguite localmente, con l’output restituito alla conversazione.&lt;/p>
&lt;p>La &lt;a href="https://primal.net/e/affd11e97fb3438965780aa01732e8d0e0f9b2162b87ab0f3019dff93449673e">stessa release&lt;/a> aggiunge ricerche con fonti e prezzo mostrato prima dell’invio, modifica delle immagini, selezione del modello per singolo messaggio e limiti di spesa per chat e per bot. Gli strumenti esterni collegati tramite MCP chiedono conferma prima di modificare dati. Le esecuzioni sui repository possono mettere in pausa le modifiche per la revisione, mostrare i risultati della CI e riprendere dopo un gateway occupato. Risposte suggerite, avvisi fissati, elenchi di fonti compressi e un selettore di modelli con ricerca completano l’aggiornamento; queste affermazioni provengono dalle note di rilascio dello sviluppatore; Compass non ha verificato in modo indipendente la privacy dell’app.&lt;/p>
&lt;h3 id="0xchat-156-ships-its-signing-and-message-authentication-fixes">0xchat 1.5.6 distribuisce le correzioni per firma e autenticazione dei messaggi&lt;/h3>
&lt;p>&lt;a href="https://github.com/0xchat-app/0xchat-app-main">0xchat&lt;/a> è un messenger Nostr con chat private, firma esterna e funzioni di wallet. La &lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.6-release">versione 1.5.6&lt;/a> distribuisce le correzioni di sicurezza &lt;a href="https://nostrcompass.org/en/newsletters/2026-09-23-newsletter/#0xchat-merges-fixes-for-signing-message-authentication-and-redirect-flaws">trattate la settimana scorsa come modifiche integrate nel sorgente&lt;/a>, tra cui l’autenticazione dei gift wrap, la configurazione dell’infrastruttura fidata e il consenso per la firma da pagine incorporate. Chiude inoltre i percorsi di aggiramento del proxy Tor, convalida i certificati TLS per gli host non onion e impedisce alle build di release di scrivere sulla console del dispositivo credenziali e materiale del wallet potenzialmente sensibili. I log per sviluppatori, attivabili su richiesta, continuano a registrare gli errori.&lt;/p>
&lt;p>La &lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.6-release">release&lt;/a> distanzia le riconnessioni ai relay da tre secondi fino a cinque minuti, ripara le sottoscrizioni dopo la riconnessione e consegna le richieste accodate mentre un relay si sta connettendo. I cambi di account non accumulano più listener duplicati sui relay, un accesso fallito preserva l’account già attivo e le connessioni ai signer esterni persistono tra un avvio e l’altro. Gli invii falliti ora mostrano errori e conservano il testo non inviato o lo stato recuperabile della condivisione di token. La decifratura delle chiavi all’avvio e il calcolo degli hash dei caricamenti escono dal thread dell’interfaccia; le cache di chat e video evitano rendering e download ripetuti. La release fornisce asset per Android e desktop con checksum SHA-256, tra cui l’APK Android firmato da Play e un installer Windows compilato dal sorgente.&lt;/p>
&lt;h3 id="nostr-mail-client-0170-hides-mailbox-actions-from-relays">Nostr Mail Client 0.17.0 nasconde ai relay le azioni sulla casella di posta&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client">Nostr Mail Client&lt;/a> scambia email tramite Nostr pur supportando la consegna email convenzionale. Dopo la &lt;a href="https://nostrcompass.org/en/newsletters/2026-09-23-newsletter/#nostr-mail-client-0160-adds-per-recipient-delivery-choices">release della settimana scorsa sul trasporto per destinatario e sulla privacy dei contenuti multimediali&lt;/a>, la &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.17.0">versione 0.17.0&lt;/a> nasconde ai relay lo stato di lettura, archiviazione, cartelle ed etichette e le relative tempistiche, e permette agli utenti di eliminare la posta senza avvisarne il mittente. La release richiede di aggiornare insieme tutti i dispositivi, perché i client più vecchi non vedono il nuovo stato né le eliminazioni. Protegge inoltre i destinatari in Ccn nei messaggi più grandi di 32 KB, tiene gli alias locali dei contatti fuori dai messaggi in uscita, ripara l’accesso tramite QR con Amber e pubblica la posta pubblica sui relay di lettura dei destinatari.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.17.0">release&lt;/a> aggiunge cartelle ed etichette colorate con regole per mittente, oggetto e allegati; citazioni in risposta e inoltro; immagini incollate in linea; anteprime e rinomina degli allegati; e selezione di intervalli negli elenchi della posta. L’inoltro conserva le immagini e gli allegati originali, le citazioni nelle risposte partono compresse e l’editor web ottiene un menu contestuale. Le tabelle HTML e le immagini in linea vengono visualizzate in modo più accurato, i link in testo semplice funzionano e la programmazione supporta date fino a cinque anni nel futuro. Nomi e immagini della rubrica compaiono in tutta l’interfaccia, e i colori del tema offrono tavolozze di sistema, suggerite o personalizzate.&lt;/p>
&lt;p>La stessa &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.17.0">release&lt;/a> mantiene locali gli sfondi selezionati da file e mette in cache gli sfondi collegati, con un costo di migrazione esplicito: sulle piattaforme native, i vecchi sfondi da file devono essere aggiunti di nuovo. Cambia le raccomandazioni predefinite per relay e contenuti multimediali, aggiunge la scoperta di app Nostr durante l’onboarding e negli avvisi di aggiornamento, preserva le impostazioni sconosciute scritte da altri client e ripara la creazione interrotta dell’archivio della posta e il packaging per Linux. Gli errori all’avvio ora mostrano i dettagli e una segnalazione precompilata invece di una schermata vuota.&lt;/p>
&lt;h3 id="nostr-wot-087-binds-authentication-to-the-destination">Nostr WoT 0.8.7 lega l’autenticazione alla destinazione&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-wot/nostr-wot-extension">Nostr WoT&lt;/a> è un’estensione del browser che combina la firma Nostr con strumenti di fiducia. La &lt;a href="https://github.com/nostr-wot/nostr-wot-extension/releases/tag/v0.8.7">versione 0.8.7&lt;/a> richiede il consenso per l’autenticazione HTTP firmata &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> rispetto a URL esatto, query, metodo, account e origine richiedente. Le vecchie approvazioni generiche richiedono un nuovo consenso. L’autenticazione ai relay &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> ha un sistema di permessi separato legato all’account, in cui i rifiuti specifici per sito prevalgono sulle autorizzazioni condivise per i relay. Le richieste di autenticazione devono provenire da un’origine di primo livello del browser verificata, e le attese per approvazione o sblocco attivano un ulteriore controllo su account e accesso.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-wot/nostr-wot-extension/releases/tag/v0.8.7">release&lt;/a> verifica le firme remote &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e l’intero event approvato, così una firma restituita non può sostituire silenziosamente il contenuto o una destinazione. La configurazione del wallet e le modifiche all’indirizzo usano un’autenticazione legata al corpo della richiesta, challenge del backend monouso e token di transazione separati; la firma generica per i siti web non può generare quei token interni del wallet. Il backend compatibile deve essere distribuito per primo, e il client rifiuta di tornare agli endpoint dismessi. Anche i pagamenti Nostr Wallet Connect verificano la preimage di pagamento restituita rispetto all’hash della fattura richiesta e trattano una mancata corrispondenza come esito sconosciuto.&lt;/p>
&lt;p>Nell’&lt;a href="https://github.com/nostr-wot/nostr-wot-extension/releases/tag/v0.8.7">interfaccia delle richieste&lt;/a>, gli utenti possono esaminare gli event grezzi completi, scegliere richieste specifiche all’interno di un gruppo per sito e visualizzare localmente i messaggi privati senza approvarne la restituzione a un sito web. Le anteprime locali si nascondono dopo 30 secondi; le richieste in arrivo restano non selezionate e l’approvazione in blocco ordinaria esclude l’autenticazione. L’estensione separa le autorizzazioni ai relay per singolo sito e per tutti i siti, limita la cache dei profili verificati, risolve gli event sostituibili con timestamp uguale a favore dell’ID event più basso e mantiene locali le letture per la pubblicazione dal popup principale. Chrome e Firefox ricevono pacchetti verificati separatamente e flussi serializzati di invio delle release stabili; questi flussi non dimostrano la disponibilità attuale negli store.&lt;/p>
&lt;h3 id="iriss-shared-runtime-keeps-relay-and-peer-history-consistent">Il runtime condiviso di Iris mantiene coerente la cronologia di relay e peer&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/nostr-pubsub">nostr-pubsub&lt;/a> fornisce un runtime condiviso per gli event Nostr con archiviazione persistente degli event e una coda di pubblicazione in uscita. Le &lt;a href="https://github.com/mmalmi/nostr-pubsub/releases/tag/nostr-pubsub-ts-v0.5.13">versioni 0.5.7–0.5.13&lt;/a> raggruppano le sottoscrizioni esatte, le ripetono dopo la riconnessione, mantengono distinte le prove locali, dei relay e dei peer e segnalano una cronologia incompleta quando l’archiviazione durevole fallisce. Le query completate attendono che ogni event ricevuto termini l’ammissione. Il batch predefinito verso i relay ora contiene al massimo 20 filtri OR per compatibilità con i server più comuni, mentre i batch verso i peer mantengono corrispondenza e annullamento indipendenti.&lt;/p>
&lt;p>Gli &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/hashtree-ts-runtime-v0.5.13">aggiornamenti del runtime di Hashtree&lt;/a> sostituiscono la rete specifica dei worker con quel runtime condiviso, indici persistenti degli event e una coda in uscita, consentendo a event e file in cache di condividere un unico nodo FIPS. &lt;a href="https://github.com/mmalmi/fips-ts/releases/tag/runtime-v0.0.45">FIPS TypeScript 0.0.44–0.0.45&lt;/a> seleziona percorsi con capacità sufficiente per record di segnalazione completi, recupera le configurazioni di sessione perse entro la scadenza dell’handshake e ritenta le risposte WebRTC solo dopo un rifiuto esplicito di instradamento. I percorsi WebSocket con frame più grandi richiedono peer nativi compatibili; le note della 0.0.44 richiedono di distribuire prima FIPS nativo 0.4.85.&lt;/p>
&lt;p>&lt;a href="https://github.com/mmalmi/iris-kit/releases/tag/runtime-v0.2.5">Iris Kit 0.2.5&lt;/a> aggiunge un client applicativo persistente per event semplici e la firma &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> indipendente dal trasporto, preservando le chiavi dell’account e le letture offline. La &lt;a href="https://github.com/mmalmi/iris-kit/releases/tag/runtime-v0.2.6">versione 0.2.6&lt;/a> restituisce immediatamente dal worker o dal backend nativo un ID event completo già verificato; le query per prefisso e per event sostituibili attendono comunque la cronologia prima di scegliere il valore più recente. Sono release di librerie, e le note non dimostrano la distribuzione in ogni applicazione Iris.&lt;/p>
&lt;p>L’&lt;a href="https://github.com/irislib/meet/commit/9bebb074895fd34574c3a92056612cf3891de74b">aggiornamento del sorgente di Iris Meet del 30 settembre&lt;/a> sostituisce la sua integrazione NDK con un’infrastruttura publish/subscribe persistente e signer di identità condivisi. La patch aggiunge copertura per il ripristino offline dell’identità, la firma NIP-07 e l’isolamento delle stanze delle riunioni. L’&lt;a href="https://github.com/irislib/meet">app per riunioni&lt;/a> esistente usa Nostr per la segnalazione crittografata e WebRTC per audio e video. Si tratta di avanzamenti dell’implementazione sul ramo predefinito; il repository non ha una release con tag che dimostri che questo specifico aggiornamento abbia raggiunto il sito attivo.&lt;/p>
&lt;h3 id="chama-propagates-listing-cancellation-and-background-alerts">Chama propaga l’annullamento degli annunci e gli avvisi in background&lt;/h3>
&lt;p>&lt;a href="https://github.com/jesuspirate/chama">Chama&lt;/a> usa event firmati per il commercio comunitario e le conversazioni private. Le &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v6.4.16">versioni 6.4.14–6.4.16&lt;/a> pubblicano un annullamento firmato prima di eliminare localmente un annuncio, così gli altri client possono ritirare la stessa offerta in cache. I tag di risveglio del destinatario ora accompagnano gli event indipendentemente dall’impostazione di notifica del mittente, e il server degli avvisi deduplica in base all’event firmato, così una chat subito dopo un ingresso può comunque attivare un risveglio. I job in background ripetono gli scambi interessati a partire dai cursori salvati, isolano le catene fallite e decifrano localmente il testo delle notifiche; la release richiede di ridistribuire il watcher associato.&lt;/p>
&lt;p>&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v6.4.16">Le release raggruppate&lt;/a> applicano inoltre i rinnovi dei partecipanti agli orari dei rispettivi event firmati, mettono in quarantena i blocchi di finanziamento effettuati dopo la scadenza di un posto ed espongono il recupero della bearer note salvata. La pubblicazione delle richieste attende la conferma dell’importazione o del pagamento. I filtri degli annunci preservano la valuta di chi guarda tra i diversi ambiti della comunità, e le intestazioni degli scambi usano l’importo di adesione definitivo. Queste modifiche allineano ciò che due client collegati a Nostr deducono dalla stessa cronologia di event.&lt;/p>
&lt;h3 id="earthly-0112-adds-reusable-map-configurations">Earthly 0.1.12 aggiunge configurazioni di mappa riutilizzabili&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/earthly">Earthly&lt;/a> è un &lt;a href="https://github.com/zeSchlausKwab/earthly/blob/v0.1.12/README.md">editor di mappe collaborativo su Nostr&lt;/a> con pubblicazione firmata e condivisione crittografata. La &lt;a href="https://github.com/zeSchlausKwab/earthly/releases/tag/v0.1.12">versione 0.1.12&lt;/a> aggiunge configurazioni GMapper riutilizzabili per le Google My Maps pubbliche, la scoperta di Maplet create dagli sviluppatori, l’archiviazione privata o la pubblicazione pubblica delle configurazioni e la copia di geometrie con attribuzione. La stessa release aggiunge la condivisione crittografata delle connessioni, l’aggiunta di entità tramite trascinamento e la navigazione della chat su mobile. La disponibilità dell’esportazione di Google e il CORS del browser limitano l’importazione, le Maplet scaricate eseguibili restano non disponibili in Tauri e le verifiche di aggiornamento su dispositivi Android fisici sono ancora in sospeso.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/zeSchlausKwab/earthly/pull/29">lavoro sulle configurazioni&lt;/a> ha migrato gli indirizzi di pubblicazione e le preferenze esistenti e ha aggiunto la revisione o il ritiro degli aggiornamenti di configurazione. Il suo flusso Android iniziale falliva prima della compilazione; una &lt;a href="https://github.com/zeSchlausKwab/earthly/pull/30">correzione degli strumenti&lt;/a> ha preparato la release poi pubblicata con tag.&lt;/p>
&lt;h3 id="mostro-0190-retires-its-first-generation-transport">Mostro 0.19.0 dismette il trasporto di prima generazione&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> coordina scambi peer-to-peer su Nostr. La &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.19.0">versione 0.19.0&lt;/a> ora include la &lt;a href="https://github.com/MostroP2P/mostro/pull/1004">rimozione del trasporto gift-wrap di prima generazione&lt;/a>, quindi i client devono usare il protocollo più recente. I tag di timestamp esistenti per la creazione degli ordini e l’apertura delle dispute vengono &lt;a href="https://github.com/MostroP2P/mostro/pull/1000">rinominati &lt;code>published_at&lt;/code>&lt;/a> senza cambiare i valori memorizzati; il &lt;code>created_at&lt;/code> dell’event che li contiene resta l’orario della firma. Le risposte di ripristino restituiscono la trade key della controparte, le operazioni di creazione e accettazione andate a buon fine riconoscono le trade key e la pubblicazione sui relay si completa alla prima conferma positiva di un relay. La stessa release aggiorna scadenze e annullamento dei bond, chiude le dispute quando uno scambio si risolve, avvisa chi le risolve e limita l’obsolescenza dei prezzi inoltrati.&lt;/p>
&lt;p>La &lt;a href="https://github.com/MostroP2P/mostro/pull/1006">correzione dell’ammissione delle trade key&lt;/a> di Mostro riconosce una chiave non appena viene registrato un ordine o una disputa che la introduce. I nodi con una proof of work più severa per il primo contatto in precedenza potevano scartare un messaggio di seguito legittimo fino al successivo aggiornamento periodico delle chiavi note; le soglie uguali predefinite non erano interessate. Una &lt;a href="https://github.com/MostroP2P/mostro/pull/923">transazione per le dispute&lt;/a> registra atomicamente la transizione dell’ordine e la riga della disputa, eliminando gli errori dovuti a stati incoerenti. Le &lt;a href="https://github.com/MostroP2P/mostro/pull/945">notifiche di chiusura&lt;/a> inviano a chi è stato assegnato alla risoluzione un messaggio privato, al meglio delle possibilità, quando gli utenti risolvono una disputa, mentre l’event sostituibile esistente resta il fallback offline.&lt;/p>
&lt;h3 id="scrutiny-lens-brings-security-research-onto-nostr">SCRUTINY Lens porta la ricerca sulla sicurezza su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/crocs-muni/scrutiny-lens/releases/tag/v0.1.0">SCRUTINY Lens v0.1.0&lt;/a>, la sua prima release pubblica del 29 settembre, è un client per browser per i metadati di sicurezza pubblicati tramite Nostr. Gli analisti possono cercare per CVE o per identificatori di pacchetti o certificati, esaminare la cronologia degli event e le ritrattazioni ed esplorare le relazioni in un grafo dei soggetti. Il browser verifica le firme e gli identificatori degli event. La ricerca e le spiegazioni IA opzionali usano un endpoint scelto dall’utente; l’app controlla le citazioni riportate rispetto agli event sottostanti. Le &lt;a href="https://github.com/crocs-muni/scrutiny-lens/releases/tag/v0.1.0">note di rilascio&lt;/a> descrivono esplicitamente i limiti dei relay e indicano dipendenze della build locale che richiedono ancora repository affiancati.&lt;/p>
&lt;h3 id="mangatsu-and-noteds-reach-android">Mangatsu e Noteds arrivano su Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/imattau/Mangatsu/releases/tag/v0.1.11">Mangatsu v0.1.11&lt;/a> fa parte della prima serie di release Android di questa settimana del lettore ed editore di fumetti. Il suo &lt;a href="https://github.com/imattau/Mangatsu/commit/543d6d3dde3bffe293b7336d0fb6f4c82532fe13">sorgente&lt;/a> aggiunge l’accesso con Amber tramite &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, l’interfaccia Android per chiedere a un signer esterno di approvare operazioni Nostr. Fumetti e capitoli sono event Nostr, mentre le loro pagine risiedono su server Blossom; il lettore supporta anche una libreria salvata crittografata e la lettura offline. I commit successivi intervengono sull’invocazione del signer e sull’aggiornamento delle liste dei relay.&lt;/p>
&lt;p>&lt;a href="https://github.com/imattau/noteds/releases/tag/v0.1.2">Noteds v0.1.2&lt;/a> porta su Android, tramite Tauri, un marketplace di annunci su Nostr. La sua &lt;a href="https://github.com/imattau/noteds/commit/c9294999134196e9d98c011440c7ca0ed5fcc398">integrazione con il signer Android&lt;/a> usa la firma Android NIP-55. L’app pubblica annunci e messaggi su Nostr e costruisce un grafo di ricerca locale con categorie, aree geografiche ed embedding opzionali nel browser. Il sorgente più recente corregge l’accesso nativo alla posizione per la ricerca nelle vicinanze. Entrambi i progetti sono alle prime release; le loro pagine di release su GitHub non hanno note dettagliate, quindi queste funzionalità sono ricavate dai README con tag e dai commit di implementazione.&lt;/p>
&lt;h3 id="statim-combines-nostr-dms-with-other-networks">Statim combina i DM Nostr con altre reti&lt;/h3>
&lt;p>&lt;a href="https://github.com/alaibe/statim/releases/tag/v0.4.0">Statim v0.4.0&lt;/a> segue la release iniziale del 23 settembre. Il &lt;a href="https://github.com/alaibe/statim/blob/v0.4.0/README.md">sorgente con tag&lt;/a> descrive un messenger con DM Nostr NIP-17 accanto a XMTP, Status, Telegram e Matrix. Gli account partono da una frase di ripristino conservata localmente; ogni conversazione indica il proprio protocollo, perché queste reti offrono proprietà di privacy diverse. Su Android manca attualmente l’integrazione con Telegram. Sono le funzionalità documentate dal progetto, non garanzie verificate in modo indipendente né conferme della disponibilità negli store.&lt;/p>
&lt;h2 id="in-development">In sviluppo&lt;/h2>
&lt;h3 id="amethyst-repairs-encrypted-group-interoperability">Amethyst ripara l’interoperabilità dei gruppi crittografati&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> è un client Nostr per Android con supporto ai gruppi crittografati Marmot. White Noise è un altro messenger Marmot; un &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4245">insieme di modifiche per l’interoperabilità testato con i suoi client&lt;/a> interviene sull’amministrazione dei gruppi, sulla formulazione delle eliminazioni e su altri comportamenti emersi quando i due client condividono una conversazione. Correzioni più mirate inviano &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4233">reazioni ed eliminazioni all’interno del gruppo Marmot&lt;/a> invece che come messaggi privati gift-wrapped &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> separati e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4240">applicano dopo il riavvio le modifiche provenienti da un altro client&lt;/a>. Si tratta di modifiche integrate nel sorgente; i test descritti nelle PR sono più limitati di una release multi-client pubblicata.&lt;/p>
&lt;p>Un’&lt;a href="https://github.com/vitorpamplona/amethyst/pull/4201">integrazione separata del runtime e dell’interfaccia dei gruppi Cordn&lt;/a> aggiunge un altro percorso per i gruppi crittografati tramite server coordinatori. Cordn è distinto da Marmot, quindi le due modifiche non vanno lette come un’unica migrazione del trasporto.&lt;/p>
&lt;p>Amethyst ha inoltre integrato i &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4231">comandi HTTP per i relay nel suo relay Geode e nel client Quartz&lt;/a>, nell’ambito della sua proposta &lt;a href="https://nostrcompass.org/it/topics/nip-fe/">NIP-FE&lt;/a>, e un’&lt;a href="https://github.com/vitorpamplona/amethyst/pull/4174">interfaccia di revisione dei conflitti di backup&lt;/a> per gli event sostituibili di profili e liste. NIP-FE è una denominazione della proposta del progetto; il flusso di backup permette di confrontare le versioni prima di accettare una sostituzione e impedisce sovrascritture silenziose dello stato locale.&lt;/p>
&lt;p>Amethyst sviluppa anche Concord, un protocollo separato per comunità crittografate usato da Armada e Accordion. Un &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4262">insieme di modifiche per la conformità&lt;/a> aggiunge liste di comunità frammentate, prove di pin, record di rotazione delle chiavi e di scioglimento, seguito da &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4264">messaggi a scomparsa e inviti diretti&lt;/a>. Un invito resta in una inbox privata finché non viene accettato; riceverlo non contatta i relay della comunità. La stessa modifica corregge un confronto tra autori che poteva consentire all’eliminazione di un altro autore di rimuovere un messaggio. Le &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4265">correzioni multi-client&lt;/a> riparano la serializzazione dei rumor non firmati, i campi mancanti degli inviti, la creazione di comunità confermata dai relay e l’ingresso senza riavvio; i test su emulatore riportati coinvolgevano peer Armada e Accordion attivi.&lt;/p>
&lt;p>Una successiva &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4277">implementazione dei canali privati&lt;/a> ruota le chiavi dei canali dopo le revoche di accesso pertinenti e aggiunge controlli per creare, rendere privati, rendere pubblici e rigenerare le chiavi. Aggiunge inoltre espulsioni cooperative con controllo del grado e fa scadere gli allegati dei messaggi insieme ai messaggi a cui appartengono. Gli aggiornamenti WebXDC possono finire in un buffer separato del canale, ma Amethyst non ha ancora un host per applicazioni WebXDC. Quell’insieme successivo riporta test del formato di trasmissione e test unitari, senza prove su dispositivo o con relay attivi, quindi il precedente risultato di interoperabilità non certifica ogni controllo appena aggiunto.&lt;/p>
&lt;p>Il motore MLS di Quartz ora &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4271">preserva tra un riavvio e l’altro i segreti delle generazioni di messaggi saltate&lt;/a>, consentendo ai messaggi fuori ordine di restare decifrabili dopo il ripristino dello stato salvato. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4272">Quattro epoch precedenti conservate&lt;/a> permettono ai chiamanti di autenticare messaggi applicativi in ritardo, conservarne i dati autenticati e impedire che una generazione già consumata venga riaperta. Un &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4275">aggiornamento del secret tree&lt;/a> carica i segreti dei nodi non espansi da uno stato in stile ts-mls; gli &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4270">errori di generazione obsoleta specifici per mittente&lt;/a> distinguono una collisione nel ratchet del client stesso da un replay di un altro membro. La PR afferma esplicitamente che il fallback esistente di Marmot sulle epoch conservate resta separato, quindi si tratta di una capacità del motore, non della prova che ogni percorso dei messaggi di Amethyst la utilizzi.&lt;/p>
&lt;p>Un &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4267">audit dei lettori di tag di Quartz&lt;/a> corregge voci geohash private che potevano essere pubblicate in chiaro e un parser che trattava come chiave pubblica la chiave privata contenuta in un &lt;code>nsec&lt;/code>. Ripara inoltre gli indirizzi dei repost, le destinazioni di occultamento dei canali, i tag root delle stanze live e gli event di mint indirizzabili. Il lettore obsoleto &lt;code>ForkTag&lt;/code> viene rimosso, il che costituisce una modifica all’API sorgente per chi usa Quartz; le righe di mint SQLite preesistenti richiedono ancora una migrazione separata. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4282">Ulteriori modelli di event&lt;/a> coprono le proposte di Buzz per contenitori di progetto, revisioni di artefatti e team, mentre i &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4266">modelli per le visualizzazioni video e i controlli push crittografati&lt;/a> seguono gli schemi di Divine; queste aggiunte stabiliscono il supporto per analisi e costruzione, non interfacce client complete né NIP numerati adottati.&lt;/p>
&lt;p>Il client inoltre &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4284">visualizza le fotografie Ultra HDR&lt;/a> nel feed e nel visualizzatore a schermo intero su Android 14 o versioni successive. Android 15 e versioni successive limitano l’aumento di luminosità nel feed al doppio dell’intervallo ordinario, mentre lo schermo intero può usare l’intera gamma del display; i dispositivi di test riportati usavano API Android più recenti, lasciando non testati Android 14 e 15. Un’&lt;a href="https://github.com/vitorpamplona/amethyst/pull/4278">integrazione condivisa dell’interfaccia e del porting dei caricamenti&lt;/a> porta 140 schermate su codice comune tra Android e desktop e sposta il lavoro sui contenuti multimediali Android fuori dal thread dell’interfaccia. Il suo audit ripristina anche la segnalazione degli errori nella rimozione dei metadati, rendendo il refactoring qualcosa di più di uno spostamento di file.&lt;/p>
&lt;h3 id="divine-adds-encrypted-video-to-direct-messages">Divine aggiunge il video crittografato ai messaggi diretti&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">Divine&lt;/a> è un client video Nostr. &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> trasporta i messaggi privati in gift wrap crittografati che ne nascondono il mittente ai relay. Il &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9486">lavoro integrato di Divine sui messaggi video&lt;/a> crittografa sul dispositivo un video allegato, carica il testo cifrato e invia la chiave di decifratura all’interno di quel messaggio privato. Un destinatario può verificare e decifrare il file per riprodurlo o salvarlo. Una &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9446">correzione separata del ripristino della cronologia&lt;/a> impedisce che un rifiuto ambiguo di un relay interrompa prematuramente il ripristino quando altri relay possono ancora rispondere.&lt;/p>
&lt;p>La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9603">correzione di Divine per le chiavi di moderazione dismesse&lt;/a> rifiuta le chiavi dismesse nella risoluzione delle etichette di moderazione e seleziona il destinatario attuale delle segnalazioni quando ne viene presentata una. Le segnalazioni in sospeso indirizzate a una chiave dismessa vengono reindirizzate alla chiave fissata nella build, e le conversazioni non risolte restano non scrivibili. La modifica distingue inoltre la custodia delle chiavi dismesse quando si decide quali thread storici un minore può leggere; gli aggiornamenti della custodia richiedono comunque una release dell’applicazione. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9677">gestione della cache dei commenti eliminati&lt;/a> impedisce che un commento recente eliminato con successo ricompaia quando un thread viene ricaricato.&lt;/p>
&lt;p>Per i creatori, una &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9598">modalità di registrazione con maschera di colore in tempo reale&lt;/a> mostra in anteprima lo sfondo sostitutivo prima di registrare una ripresa, e il &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9701">mascheramento della parete bianca&lt;/a> aggiunge, tramite il plugin video, un mascheramento sensibile alla luminosità. I &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9652">sottotitoli parola per parola&lt;/a> preservano i tempi delle parole riconosciute e usano tempi approssimativi quando il server fornisce solo segmenti interi. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9698">continuazione dello stop-motion&lt;/a> aggiunge nuovi fotogrammi al ritmo della composizione esistente, mentre il &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9645">ritorno delle clip staccate&lt;/a>, la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9654">selezione dei font raggruppata&lt;/a> e i &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9601">preset di velocità&lt;/a> aggiungono controlli di modifica senza cambiare il formato degli event Nostr.&lt;/p>
&lt;p>L’&lt;a href="https://github.com/divinevideo/divine-mobile/pull/9694">allineamento dell’esportazione quadrata&lt;/a> e il suo &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9703">seguito per le clip più piccole&lt;/a> mantengono testo e sticker al loro posto tra clip con risoluzioni diverse. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9664">riproduzione HLS di terze parti&lt;/a> evita un crash dell’heap su Android tornando indietro ai confini del loop invece di precaricare le playlist importate ripetute; quei loop possono fermarsi brevemente a ogni ripartenza. Un &lt;a href="https://github.com/divinevideo/divine-mobile/pull/9680">ricaricamento delle preferenze dell’account&lt;/a> mantiene ai valori predefiniti i filtri legati all’account durante un cambio, correggendo in parte un’asserzione di debug all’accesso. Un problema separato di aggiornamento delle etichette di moderazione resta aperto, quindi la PR non afferma di aver corretto ogni errore di accesso.&lt;/p>
&lt;h3 id="buzz-extends-its-relays-channel-and-identity-controls">Buzz estende i controlli su canali e identità del proprio relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/buzz">Buzz&lt;/a> è uno spazio di lavoro basato su Nostr con un proprio relay e propri client. La sua &lt;a href="https://github.com/block/buzz/pull/7919">implementazione integrata degli artefatti di canale&lt;/a> assegna a un record modificabile un unico canale di appartenenza e una catena di revisioni; modifiche in conflitto non possono diventare entrambe la versione di testa. L’etichetta &lt;a href="https://nostrcompass.org/it/topics/nip-ar/">NIP-AR&lt;/a> del progetto si riferisce alla sua proposta e implementazione, non a uno standard Nostr consolidato.&lt;/p>
&lt;p>Per l’ingresso HTTP protetto, un’altra &lt;a href="https://github.com/block/buzz/pull/7264">modifica integrata&lt;/a> associa un’asserzione di identità federata alla stessa chiave dimostrata dall’autorizzazione &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a>. NIP-98 definisce gli event di autenticazione HTTP firmati; l’asserzione &lt;a href="https://nostrcompass.org/it/topics/nip-fi/">NIP-FI&lt;/a> di Buzz è una specifica del progetto. Buzz ha inoltre integrato la &lt;a href="https://github.com/block/buzz/pull/7849">crittografia HPKE per le buste di backup delle chiavi segrete&lt;/a>. Quella PR stabilisce un lavoro di sicurezza a livello di sorgente; la distribuzione a tutti i client resta non verificata.&lt;/p>
&lt;p>&lt;a href="https://github.com/block/buzz/releases/tag/desktop-v0.5.26">Buzz desktop 0.5.26&lt;/a> include il lavoro sugli artefatti di canale, la crittografia HPKE nativa per i backup delle chiavi segrete e una console desktop di amministrazione del relay. Le sue modifiche condivise riparano le richieste di canali di progetto non elencati, sincronizzano tra dispositivi le sezioni della barra laterale, l’ordinamento, le stelle e i silenziamenti, limitano le letture dei thread lunghi e rendono più rigorose le asserzioni di identità Blossom. Le &lt;a href="https://github.com/block/buzz/releases/tag/desktop-v0.5.26">note relative all’intero repository&lt;/a> elencano separatamente l’associazione dell’identità del relay, la consegna delle menzioni ai companion, gli URL push configurabili, l’eliminazione amministrativa atomica e i nomi contestuali su mobile. Una release desktop stabilisce la distribuzione desktop e condivisa; non dimostra che quelle modifiche per mobile siano state distribuite in una build mobile.&lt;/p>
&lt;p>L’&lt;a href="https://github.com/block/buzz/pull/7224">applicazione di NIP-FI su WebSocket&lt;/a> di Buzz controlla un’asserzione di identità federata prima di accettare i frame, quindi richiede che la sua chiave Nostr corrisponda alla chiave autenticata tramite &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, che dimostra a un relay l’identità di un client. Una sessione scade al primo tra la scadenza del token, l’età massima dell’asserzione e la durata della connessione configurata; dopo la scadenza non ammette nuovi effetti. Questa modalità NIP-FI specifica del progetto è disattivata per impostazione predefinita. I commit audio già ammessi e la configurazione delle sottoscrizioni possono ancora restare in attesa di una dipendenza bloccata, quindi la modifica non stabilisce un tempo di disconnessione limitato in ogni caso.&lt;/p>
&lt;p>La &lt;a href="https://github.com/block/buzz/pull/7830">preparazione all’eliminazione da parte del proprietario&lt;/a> fa passare le richieste attestate dall’operatore attraverso un’approvazione automatica legata all’inventario, fino all’esecutore di eliminazione esistente. Un &lt;a href="https://github.com/block/buzz/pull/7969">seguito sul relay&lt;/a> fa sì che ritentare la stessa richiesta ne restituisca lo stato attuale e riserva la quota attiva del proprietario finché l’eliminazione non è completata; le tombstone dell’host conservate in modo permanente contano ai fini di un limite di 20 comunità nell’intera durata. Si tratta di modifiche amministrative a livello di sorgente, e il seguito indica agli operatori di tenere disattivata l’eliminazione finché il relay e l’esecutore di drenaggio non sono attivi. Separatamente, un &lt;a href="https://github.com/block/buzz/pull/6515">audit del catalogo delle partizioni&lt;/a> rileva le partizioni generiche e i mesi non coperti prima di creare nuove partizioni per gli event e per i log di consegna, esponendo agli operatori la sicurezza del servizio e l’aggiornamento dell’audit.&lt;/p>
&lt;p>Buzz mobile ora distingue persone e agenti che condividono lo stesso nome visualizzato. Il suo &lt;a href="https://github.com/block/buzz/pull/7894">risolutore dei nomi di identità&lt;/a> qualifica gli agenti tramite il loro proprietario e aggiunge un breve suffisso della chiave solo quando necessario; l’&lt;a href="https://github.com/block/buzz/pull/7895">integrazione nelle conversazioni&lt;/a> usa questi nomi per autori, menzioni e avvisi sui membri. &lt;a href="https://github.com/block/buzz/pull/7896">Liste, ricerca e Pulse&lt;/a> completano lo stesso comportamento al di fuori delle conversazioni. La qualificazione visibile cambia l’etichetta locale, mentre una menzione selezionata mantiene il nome originale dell’identità nel formato di trasmissione.&lt;/p>
&lt;h3 id="conduit-advances-checkout-after-relay-acceptance">Conduit fa avanzare il checkout dopo l’accettazione da parte di un relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/Conduit-BTC/conduit-mono">Conduit&lt;/a> è un marketplace Nostr che invia ai commercianti messaggi d’ordine privati. La &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/483">pubblicazione progressiva sui relay&lt;/a> distingue la prima conferma positiva di un relay dal completamento di tutti i tentativi verso i relay, e un &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/488">seguito sul checkout&lt;/a> rende persistente quella prima conferma prima di procedere. L’accettazione da parte di un relay significa che l’ordine firmato ha raggiunto un relay; non dimostra che un commerciante l’abbia letto o evaso.&lt;/p>
&lt;p>Conduit ha inoltre integrato &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/529">sessioni recuperabili del signer remoto&lt;/a> e una &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/533">negoziazione transazionale dei relay del signer&lt;/a>. &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> consente a un’applicazione di richiedere firme da una chiave custodita da un signer separato; queste modifiche mantengono lo spazio di lavoro dell’account dell’utente mentre il suo trasporto viene riparato, quindi verificano l’account esatto prima di riprendere. Le PR stabiliscono il comportamento del sorgente, non una build del checkout distribuita.&lt;/p>
&lt;p>L’&lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/575">integrazione della ricerca di prodotti per rilevanza&lt;/a> di Conduit invia una normale query di ricerca full-text &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> per i prodotti di kind 30402 e preserva l’ordine di rilevanza del relay attraverso i controlli delle firme, la riconciliazione delle revisioni e il filtro locale di idoneità. Le schede possono comparire prima che terminino le letture in background dei prodotti esatti, mentre le eliminazioni firmate più recenti restano determinanti. Aggiorna e Riprova restano all’interno della ricerca e delle letture dei prodotti esatti invece di avviare una scoperta ampia del catalogo. Un limite di 100 risultati seguito dal filtro locale può far perdere corrispondenze idonee, quindi una risposta parzialmente vuota offre un recupero e non dimostra l’assenza di prodotti.&lt;/p>
&lt;h3 id="elisym-builds-a-nostr-commerce-checkout">Elisym costruisce un checkout commerciale su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/elisymlabs/elisym">Elisym&lt;/a> sta sviluppando un toolkit di commercio che firma i prodotti e trasporta su Nostr messaggi privati di ordini e ricevute. Il suo &lt;a href="https://github.com/elisymlabs/elisym/pull/120">pacchetto commerce integrato&lt;/a> definisce la verifica delle offerte e gli event d’ordine gift-wrapped; un’&lt;a href="https://github.com/elisymlabs/elisym/pull/131">interfaccia di checkout&lt;/a> gestisce la revisione dell’offerta, il pagamento con wallet e lo stato della consegna, mentre un &lt;a href="https://github.com/elisymlabs/elisym/pull/133">nodo commerciante self-hosted&lt;/a> impacchetta il lato del negozio. Il progetto definisce provvisorio il kind &lt;code>30490&lt;/code> e descrive una versione minima per ottobre. Queste modifiche integrate nel sorgente stabiliscono un’integrazione emergente; non è stato dimostrato uno standard di commercio Nostr accettato né un lancio pubblico completo.&lt;/p>
&lt;p>Gli &lt;a href="https://github.com/elisymlabs/elisym/pull/136">strumenti di checkout per agenti&lt;/a> di Elisym aggiungono &lt;code>buy_product&lt;/code> e &lt;code>get_order&lt;/code> per i suoi prodotti pubblicizzati su Nostr. La prima chiamata restituisce un preventivo senza effettuare l’ordine, e una seconda chiamata accetta il preventivo monouso e gli avvisi per lo stesso agente e la stessa rete; lo stato dell’ordine viene conservato in modo durevole nel backend locale su file dell’agente. Il &lt;a href="https://github.com/elisymlabs/elisym/pull/137">supporto al checkout con Tempo&lt;/a> aggiunge un percorso di pagamento con wallet del browser, con verifica del commerciante e consegna. Un hash di transazione inviato mantiene attivo il tentativo finché il suo esito non è stabilito, evitando un risultato di mancato pagamento mentre una trasmissione potrebbe ancora andare a buon fine.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/elisymlabs/elisym/pull/139">correzione successiva al checkout&lt;/a> consente al checkout dei prodotti firmati di inizializzarsi quando un wallet del browser si annuncia immediatamente durante la scoperta. La modifica al sorgente sposta la dichiarazione della sessione prima che quel callback possa essere eseguito; l’integrazione da sola non verifica una distribuzione ospitata.&lt;/p>
&lt;h3 id="nostter-improves-signer-checks-and-event-retrieval">nostter migliora i controlli sul signer e il recupero degli event&lt;/h3>
&lt;p>&lt;a href="https://github.com/SnowCait/nostter">nostter&lt;/a> è un client social Nostr. La sua &lt;a href="https://github.com/SnowCait/nostter/pull/2573">modifica integrata sulle capacità del signer&lt;/a> verifica se è presente un signer utilizzabile prima di offrire le azioni di follow e reazione. I &lt;a href="https://github.com/SnowCait/nostter/pull/2611">nuovi tag pin&lt;/a> riportano la chiave dell’autore e un hint di relay noto senza indovinarne uno, e l’&lt;a href="https://github.com/SnowCait/nostter/pull/2608">ordinamento della cache degli event sostituibili&lt;/a> segue il criterio di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> basato su timestamp e, a parità, su ID event. NIP-01 definisce le regole di base degli event Nostr, incluso il modo in cui i client scelgono tra event sostituibili.&lt;/p>
&lt;h3 id="pensieve-prepares-isolated-archive-reconciliation">Pensieve prepara una riconciliazione isolata dell’archivio&lt;/h3>
&lt;p>&lt;a href="https://github.com/andotherstuff/pensieve">Pensieve&lt;/a> è uno strumento di archiviazione e recupero per Nostr. Il suo &lt;a href="https://github.com/andotherstuff/pensieve/pull/60">runtime negentropy isolato integrato&lt;/a> dà alla sincronizzazione un worker limitato e un comportamento di completamento durevole. La funzionalità è attivabile su richiesta e la PR afferma esplicitamente che non è stato attivato alcun servizio o configurazione in produzione; è il lavoro preparatorio per un percorso di recupero più sicuro, non la prova di una distribuzione in esecuzione.&lt;/p>
&lt;h3 id="contextvm-avoids-duplicate-calls-across-relays">ContextVM evita chiamate duplicate tra relay&lt;/h3>
&lt;p>L’&lt;a href="https://github.com/ContextVM/sdk">SDK TypeScript di ContextVM&lt;/a> trasporta richieste di strumenti e risorse come event Nostr. La sua &lt;a href="https://github.com/ContextVM/sdk/pull/103">correzione integrata della deduplicazione in ingresso&lt;/a> riconosce tramite l’ID event una singola richiesta in chiaro anche quando più relay o una riconnessione la consegnano di nuovo, allineandosi al percorso esistente dei messaggi incapsulati. La PR riporta che, prima della correzione, uno strumento non idempotente veniva eseguito tre volte per una singola chiamata. Una &lt;a href="https://github.com/ContextVM/sdk/pull/101">modifica complementare alle notifiche sulle risorse&lt;/a> invia gli aggiornamenti solo ai client sottoscritti; le sessioni inizializzate senza sottoscrizione non li ricevono più.&lt;/p>
&lt;h3 id="cyberspace-revises-the-deck-0003-object-rules">Cyberspace rivede le regole degli oggetti DECK-0003&lt;/h3>
&lt;p>&lt;a href="https://github.com/arkin0x/cyberspace">Cyberspace&lt;/a> sviluppa il formato DECK-0003 per oggetti Nostr strutturati e bag di regione crittografate, che Amethyst ha iniziato a implementare nel numero della settimana scorsa. Nuove &lt;a href="https://github.com/arkin0x/cyberspace/pull/36">regole per parti e oggetti nascosti&lt;/a> e i &lt;a href="https://github.com/arkin0x/cyberspace/pull/38">riferimenti nelle bag&lt;/a> consentono a una bag di fare riferimento a un oggetto pubblicato separatamente invece di incorporarne ogni parte. Una &lt;a href="https://github.com/arkin0x/cyberspace/pull/40">correzione&lt;/a> successiva afferma che un riferimento tramite ID event non può fissare in modo affidabile una vecchia versione di un event indirizzabile, perché un relay può scartarla dopo la sostituzione. I lettori dovrebbero usare la regola corretta del riferimento tramite coordinate; la formulazione dell’integrazione precedente è stata superata.&lt;/p>
&lt;h3 id="wisp-fixes-replies-to-nostr-comments">Wisp corregge le risposte ai commenti Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> è un client Nostr con funzioni di instradamento dei relay e di wallet. Dopo il supporto ai commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> rilasciato la settimana scorsa, un &lt;a href="https://github.com/barrydeen/wisp/pull/667">seguito integrato&lt;/a> fa sì che anche una risposta a un commento NIP-22 sia un event di commento, con i riferimenti corretti al genitore e alla radice; il percorso precedente pubblicava sempre una nota ordinaria. NIP-22 consente di collegare commenti a molti tipi di contenuto Nostr. La correzione è stata integrata dopo il tag 1.2.5 di Wisp, le cui note si limitano ad aggiornare la versione, quindi si tratta di un avanzamento a livello di sorgente il cui rilascio non è ancora verificato.&lt;/p>
&lt;h3 id="cordn-sends-coordinator-locations-to-a-second-device">Cordn invia le posizioni dei coordinatori a un secondo dispositivo&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cordn-msg/cordn">Cordn&lt;/a> coordina la messaggistica di gruppo crittografata su Nostr. La sua &lt;a href="https://github.com/Cordn-msg/cordn/pull/9">modifica integrata alla specifica multi-dispositivo&lt;/a> inserisce gli hint dei relay del coordinatore di un gruppo nel documento di gruppo replicato. Un dispositivo appena inizializzato può così trovare un coordinatore assente dai relay predefiniti, invece di sembrare unito a un gruppo di cui non può recuperare né l’arretrato né i messaggi in tempo reale. Si tratta di lavoro sul documento di protocollo, successivo alla release di Cordn sulla coda offline della settimana scorsa, non di una nuova release del client.&lt;/p>
&lt;h3 id="nostr-atlas-opens-a-directory-for-checkable-identities">Nostr Atlas apre una directory di identità verificabili&lt;/h3>
&lt;p>&lt;a href="https://nostr-atlas.web.app">Nostr Atlas&lt;/a> è una nuova directory che presenta profili Nostr insieme a rivendicazioni di account esterni. La sua &lt;a href="https://github.com/saiy2k/nostr-components/pull/148">pubblicazione del sito integrata&lt;/a> separa la directory dalla demo dei componenti del progetto, e il sito risponde pubblicamente. Un’&lt;a href="https://github.com/saiy2k/nostr-components/pull/144">integrazione del flusso di rivendicazione&lt;/a> consente al titolare di un account X di pubblicare una prova &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> firmata con un signer del browser, mentre l’&lt;a href="https://github.com/saiy2k/nostr-components/pull/146">arricchimento dei profili&lt;/a> legge i metadati Nostr kind-0 solo dopo la verifica della prova. NIP-39 definisce lo schema di prova per associare una chiave Nostr a un’altra identità online; la sola conferma di un relay non rende verificata una rivendicazione.&lt;/p>
&lt;h3 id="nostr-java-adds-media-hosting-tools-and-preserves-tag-positions">nostr-java aggiunge strumenti di hosting multimediale e preserva le posizioni dei tag&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java">nostr-java&lt;/a> è una libreria Java e un insieme di strumenti MCP per applicazioni Nostr. I suoi &lt;a href="https://github.com/tcheeric/nostr-java/pull/557">strumenti Blossom integrati&lt;/a> consentono a un chiamante di caricare, trovare, elencare ed eliminare contenuti multimediali indirizzati tramite hash e di gestire l’elenco dei server dell’utente. Una &lt;a href="https://github.com/tcheeric/nostr-java/pull/558">correzione separata della pubblicazione&lt;/a> mantiene al loro posto i valori vuoti dei tag: i tag Nostr sono posizionali, quindi eliminare un hint di relay vuoto poteva spostare un marcatore nel campo sbagliato e rendere l’event pubblicato diverso dall’anteprima approvata.&lt;/p>
&lt;h3 id="zap-cooking-changes-how-account-history-can-be-recovered">Zap Cooking cambia il modo in cui si può recuperare la cronologia dell’account&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> è un client Nostr per la condivisione di ricette. Il suo &lt;a href="https://github.com/zapcooking/frontend/pull/753">lavoro integrato sul recupero Lazarus&lt;/a> sostituisce un backup basato su event di dati specifici dell’applicazione &lt;a href="https://nostrcompass.org/it/topics/nip-78/">NIP-78&lt;/a> con un approccio che analizza le versioni degli event sostituibili conservate dai relay per rilevare follow, silenziamenti o profili sovrascritti. Lazarus resta una bozza di protocollo; il recupero dipende dai relay che hanno conservato le versioni più vecchie, e una PR integrata in un client web non garantisce che ogni event perso possa essere recuperato.&lt;/p>
&lt;p>Il client ha inoltre integrato &lt;a href="https://github.com/zapcooking/frontend/pull/743">controlli opzionali di proof of work NIP-13&lt;/a> per note e risposte e un &lt;a href="https://github.com/zapcooking/frontend/pull/752">modello degli allegati&lt;/a> che mantiene coerenti tra anteprima e pubblicazione l’ordine dei contenuti multimediali e le descrizioni &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a>. &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a> consente a un mittente di spendere calcolo locale su un event prima di pubblicarlo; NIP-92 trasporta i metadati dei contenuti multimediali come tag dell’event.&lt;/p>
&lt;p>La &lt;a href="https://github.com/zapcooking/frontend/pull/763">correzione delle rivendicazioni NIP-05&lt;/a> di Zap Cooking richiede un’autorizzazione &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> sull’esatto corpo della richiesta e rifiuta un signer diverso dalla chiave pubblica che rivendica il nome. In precedenza, quell’endpoint pubblico accettava rivendicazioni non autenticate che potevano sostituire il nome di un altro membro. Il livello di iscrizione ora proviene dal record di iscrizione esistente, e gli utenti con signer remoto ricevono una richiesta di firma al momento della rivendicazione. Il percorso separato e fidato di registrazione lato server resta invariato.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/zapcooking/frontend/pull/764">riparazione della mute list&lt;/a> impedisce che le azioni di silenziamento dal profilo sostituiscano l’intera lista di kind 10000 con i soli tag di chiave pubblica. Il percorso precedente cancellava le voci relative a parole, hashtag e thread insieme al contenuto crittografato, e una delle superfici poteva ripubblicare pubblicamente chiavi di silenziamento private decifrate. Il nuovo percorso legge la copia del relay, preserva i tag non correlati e il testo cifrato e si rifiuta di pubblicare quando quella lettura non è disponibile. Rimuovere un silenziamento privato richiede decifratura e nuova cifratura tramite il signer.&lt;/p>
&lt;h3 id="opal-brings-remote-signing-to-omarchy">Opal porta la firma remota su Omarchy&lt;/h3>
&lt;p>&lt;a href="https://github.com/derekross/opal">Opal&lt;/a> è un signer Nostr desktop realizzato per l’ambiente Linux Omarchy. La sua &lt;a href="https://github.com/derekross/opal/releases/tag/v0.3.3">versione 0.3.3 del 28 settembre&lt;/a> segue la prima serie pubblica con il supporto alla firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, un portachiavi locale e un’interfaccia di autorizzazione per le richieste delle app connesse. NIP-46 mantiene la chiave dell’account presso il signer mentre un client separato gli chiede di approvare le operazioni. Si tratta di una release iniziale di un signer specifico per una piattaforma, non di un’affermazione di supporto desktop più ampio.&lt;/p>
&lt;h3 id="watchtower-opens-a-nip-86-relay-control-panel">WatchTower apre un pannello di controllo per relay NIP-86&lt;/h3>
&lt;p>&lt;a href="https://github.com/iqbqioza/watchtower">WatchTower&lt;/a> è un pannello appena pubblicato per l’amministrazione dei relay tramite NIP-86, il protocollo per le richieste autenticate di gestione dei relay. Un’&lt;a href="https://watchtower.nostrfy.org">istanza pubblica&lt;/a> risponde, offrendo agli operatori un luogo in cui esaminare l’interfaccia. Il repository è stato creato il 22 settembre; un sito raggiungibile non dimostra che i suoi flussi di autorizzazione siano stati verificati in modo indipendente né che funzioni con ogni implementazione di relay.&lt;/p>
&lt;h3 id="hubstr-blossom-opens-a-personal-media-origin">Hubstr Blossom apre un’origine multimediale personale&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/johninnis/hubstr-blossom">server Hubstr Blossom&lt;/a>, appena pubblicato, consente a un client Nostr di caricare immagini, video e file su un endpoint Blossom self-hosted, per poi inserire quegli URL negli event. Il suo README documenta l’archiviazione locale indirizzata tramite hash del contenuto, un indice SQLite, l’autorizzazione firmata di kind 24242 per le modifiche e una serie di operazioni Blossom per caricamento, mirroring, elenchi ed eliminazione. Le letture pubbliche consentono ad altri client di visualizzare i contenuti multimediali pubblicati senza ricevere diritti di caricamento.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/johninnis/hubstr-blossom">opzioni documentate del server&lt;/a> estraggono inoltre i metadati dei file per gli event &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a>, che descrivono i contenuti multimediali condivisi. Il server può ricodificare le immagini senza metadati EXIF e, per impostazione predefinita, protegge le richieste di mirror da destinazioni su reti private. Si tratta di un’implementazione appena pubblicata con istruzioni di distribuzione, non della prova di un’ampia diffusione in produzione.&lt;/p>
&lt;p>&lt;a href="https://github.com/johninnis/hubstr-relay">Hubstr Relay&lt;/a> ha pubblicato il suo sorgente iniziale il 24 settembre. Combina una cache personale di event in SQLite con un relay pubblico: i lettori non autenticati vedono gli event pubblici consentiti, mentre i tenant autenticati con NIP-42 possono leggere la propria cache. I gift wrap NIP-17 restano non disponibili ai lettori ospiti. Il suo &lt;a href="https://github.com/johninnis/hubstr-relay/commit/0ae1a551ac50da0b7097105b76591dbc4d6cc023">aggiornamento del 25 settembre&lt;/a> corregge i record restituiti dai metodi NIP-86 per le liste di pubkey.&lt;/p>
&lt;h3 id="meshstr-experiments-with-a-permissionless-relay-mesh">Meshstr sperimenta una mesh di relay senza permessi&lt;/h3>
&lt;p>&lt;a href="https://gitlab.pocketlabs.dev/meshstr/meshstr">Meshstr&lt;/a> è un progetto in fase alpha con cui i relay Nostr negoziano budget tra peer e si scambiano ricevute d’uso firmate. La sua prima implementazione include &lt;a href="https://gitlab.pocketlabs.dev/meshstr/meshstr/-/commit/6d609fc99f">un bridge per la politica di scrittura di strfry, un relay Nostr&lt;/a>, aggiunto il 27 settembre, con una correzione del socket il giorno successivo. Il repository descrive la negoziazione DIDComm e la riconciliazione &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a>, che consente ai peer di confrontare insiemi di event senza scambiarsi gli inventari completi, insieme a segnalazioni verificabili dei peer che superano i budget concordati.&lt;/p>
&lt;p>Quelle &lt;a href="https://gitlab.pocketlabs.dev/meshstr/meshstr">regole del progetto&lt;/a> sono una proposta, non un NIP adottato né una rete pubblica di relay dimostrata. L’avanzamento concreto di questa settimana è il percorso di codice pubblicato che collega la politica di scrittura di un relay alla contabilità della mesh proposta.&lt;/p>
&lt;h3 id="dossier-shows-what-a-public-nostr-history-can-reveal">Dossier mostra cosa può rivelare una cronologia Nostr pubblica&lt;/h3>
&lt;p>&lt;a href="https://github.com/satanrayshe/dossier">Dossier&lt;/a> è un nuovo strumento di autoverifica eseguito nel browser per l’impronta Nostr e Lightning di una persona, con una &lt;a href="https://satanrayshe.github.io/dossier/">demo pubblica&lt;/a>. Raccoglie i link visibili nel profilo, le tracce degli zap, gli orari di pubblicazione, i metadati dei vecchi messaggi diretti crittografati &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> e i metadati dei contenuti multimediali come gli EXIF delle foto; può anche mostrare dove un relay serve ancora un event che qualcuno ha cercato di eliminare. Il supporto ai signer &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> consente a un utente di autorizzare le azioni di pulizia senza incollare una chiave privata nella pagina.&lt;/p>
&lt;p>I &lt;a href="https://github.com/satanrayshe/dossier">limiti documentati&lt;/a> del progetto sono importanti: una scansione vede solo i relay che raggiunge, e una richiesta di eliminazione non può cancellare le copie conservate altrove. Il repository è comparso il 27 settembre e non ha release con tag; la demo e il sorgente stabiliscono uno strumento iniziale, non un inventario completo dell’attività passata di qualcuno.&lt;/p>
&lt;h3 id="marmot-mdk-extends-polls-custom-emoji-and-account-metadata">Marmot MDK estende sondaggi, emoji personalizzate e metadati dell’account&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">Marmot MDK&lt;/a> fornisce il runtime e i binding per la messaggistica di gruppo Nostr crittografata. Successive modifiche integrate nel sorgente di MDK espongono le &lt;a href="https://github.com/marmot-protocol/mdk/pull/2094">selezioni paginate per singolo votante nei sondaggi&lt;/a>, usando le stesse regole di risposta effettiva dei conteggi aggregati. I &lt;a href="https://github.com/marmot-protocol/mdk/pull/1929">componenti di gruppo opzionali gestiti dall’applicazione&lt;/a> offrono agli host impostazioni controllate dagli amministratori che sopravvivono alla conservazione dei messaggi e raggiungono i nuovi arrivati nel loro Welcome. Gli &lt;a href="https://github.com/marmot-protocol/mdk/pull/2105">invii con tag e le reazioni multimediali&lt;/a> trasportano i metadati delle emoji personalizzate attraverso runtime e binding, conservano il materiale di decifratura delle immagini di reazione allegate dopo un cambio di epoch e rifiutano i tag di allegato contraffatti. Quella modifica amplia la struttura C della richiesta di caricamento, quindi chi usa l’interfaccia C deve ricompilare con il nuovo header.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/marmot-protocol/mdk/pull/2093">correzione della convergenza&lt;/a> mantiene in sospeso i messaggi quando non è stato selezionato alcun ramo canonico, invece di invalidarli senza provare lo stato attivo. Una &lt;a href="https://github.com/marmot-protocol/mdk/pull/2095">pulizia dei percorsi irraggiungibili&lt;/a> che la accompagna instrada i commit preparati non risolti verso il comportamento di nuovo tentativo conservato. Le &lt;a href="https://github.com/marmot-protocol/mdk/pull/2097">letture dei contenuti multimediali crittografati&lt;/a> allineano il timeout di lettura HTTP alla gestione dell’inattività dei corpi riprendibili, affrontando i trasferimenti di grandi dimensioni bloccati senza affermare che il test di accettazione su dispositivo per gli APK in arrivo, ancora in sospeso, sia stato superato. I &lt;a href="https://github.com/marmot-protocol/mdk/pull/2098">marcatori delle fasi di avvio&lt;/a> mostrano quale passaggio di apertura dell’account è andato in timeout, aggiungendo prove diagnostiche senza affermare che il blocco all’avvio sottostante sia risolto.&lt;/p>
&lt;p>Il connettore locale per agenti inoltre &lt;a href="https://github.com/marmot-protocol/mdk/pull/1969">unisce i metadati di profilo esistenti&lt;/a> quando pubblica un aggiornamento di kind 0, preservando i campi omessi dalla richiesta. Gli &lt;a href="https://github.com/marmot-protocol/mdk/pull/2096">aggiornamenti del profilo del gruppo&lt;/a> espongono le modifiche al nome e alla descrizione di un gruppo attraverso il percorso esistente autorizzato dall’amministratore attuale. La sua autenticazione via socket concede ancora l’intera API locale; questa integrazione non aggiunge autorizzazioni per singolo principal. Queste modifiche al sorgente seguono la release 0.11.0 con tag.&lt;/p>
&lt;h3 id="rust-nostr-correlates-relay-count-replies">rust-nostr mette in correlazione le risposte di conteggio dei relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>, una libreria e un SDK Rust per applicazioni Nostr, ha integrato &lt;a href="https://github.com/nostrdevkit/nostr/pull/1478">risposte COUNT correlate ed errori più chiari per chi resta in attesa&lt;/a>. L’SDK si sottoscrive prima di inviare COUNT e accetta solo la risposta corrispondente, impedendo che un ricevitore perso o chiuso appaia come uno zero legittimo. Preserva inoltre gli errori del ricevitore per le conferme di pubblicazione e l’autenticazione ai relay, così i chiamanti possono distinguere una conferma mancante da un rifiuto esplicito. Le firme dei metodi pubblici restano invariate.&lt;/p>
&lt;h3 id="zaptracker-adds-nostr-network-and-quote-metrics">ZapTracker aggiunge metriche sulla rete Nostr e sulle citazioni&lt;/h3>
&lt;p>&lt;a href="https://github.com/pratik227/zap_dashboard">ZapTracker&lt;/a> è una dashboard per creatori dedicata al coinvolgimento su Nostr e all’attività del wallet. Un’&lt;a href="https://github.com/pratik227/zap_dashboard/pull/133">integrazione della dashboard di rete&lt;/a> sostituisce le statistiche della rete Lightning con i dati sui relay Nostr online provenienti da nostr.watch e con le informazioni sulle capacità tratte dai documenti NIP-11. Una &lt;a href="https://github.com/pratik227/zap_dashboard/pull/135">modifica alle metriche delle citazioni&lt;/a> conta gli event di kind 1 che contengono tag &lt;code>q&lt;/code> insieme a like, repost, segnalibri e zap. Ciò consente ai creatori di vedere le citazioni nelle classifiche dei contenuti e nei grafici del coinvolgimento; resta una prova a livello di sorgente integrato.&lt;/p>
&lt;h3 id="lawallet-nwc-routes-card-top-ups-to-the-card-wallet">LaWallet NWC instrada le ricariche delle carte verso il wallet della carta&lt;/h3>
&lt;p>&lt;a href="https://github.com/lawalletio/lawallet-nwc">LaWallet NWC&lt;/a> collega i wallet Lightning alle applicazioni tramite Nostr Wallet Connect. La sua &lt;a href="https://github.com/lawalletio/lawallet-nwc/pull/316">integrazione per le ricariche BoltCard&lt;/a> pubblicizza un link di pagamento LUD-19 che crea una fattura tramite il metodo NWC &lt;code>make_invoice&lt;/code> del wallet della carta. Le carte bloccate, disattivate o non associate non pubblicizzano un link di pagamento, e il percorso non reindirizza le ricariche verso l’indirizzo Lightning separato del proprietario. Un &lt;a href="https://github.com/lawalletio/lawallet-nwc/pull/319">seguito&lt;/a> espone lo stesso link nell’emulatore e trasporta negli invii LNURL le note del pagatore accettate dal destinatario.&lt;/p>
&lt;h3 id="a-new-khatru-relay-exposes-owner-moderation-controls">Un nuovo relay khatru espone controlli di moderazione per il proprietario&lt;/h3>
&lt;p>&lt;a href="https://github.com/rzazo24/nostr-relay-khatru">nostr-relay-khatru&lt;/a> ha pubblicato il suo sorgente iniziale il 29 settembre come relay generico derivato dall’implementazione specifica per HiveScope, ora dismessa. L’&lt;a href="https://relay.hivescope.xyz">istanza pubblica&lt;/a> serve un documento NIP-11 che indica questo repository e pubblicizza autenticazione, scadenza degli event, event protetti, conteggio, riconciliazione e amministrazione del relay. Un’&lt;a href="https://github.com/rzazo24/nostr-relay-khatru/commit/a6ef7cff9c4f833a6a2f72957d45935c736a0c51">implementazione del 30 settembre&lt;/a> aggiunge controlli di moderazione al pannello del proprietario. I metadati pubblici verificano un endpoint distribuito, non il buon esito dei test di ogni metodo pubblicizzato.&lt;/p>
&lt;h3 id="a-local-web-of-trust-builder-tracks-unfollows">Un costruttore locale di web-of-trust tiene traccia degli unfollow&lt;/h3>
&lt;p>&lt;a href="https://github.com/etemiz/wot/commit/212fe268dd781c73adad51329be235abc8fd37db">etemiz/wot&lt;/a> ha pubblicato il 30 settembre un crawler web-of-trust per Nostr. Legge le liste di follow e le liste di relay NIP-65, calcola la fiducia a partire da radici configurabili e scrive i punteggi in LMDB per politiche dei relay, feed e filtri antispam. La &lt;a href="https://github.com/etemiz/wot">documentazione del progetto&lt;/a> spiega il compromesso: gli aggiornamenti in tempo reale aumentano la fiducia, mentre le scansioni complete pianificate applicano le diminuzioni e gli unfollow. I punteggi dipendono dalle radici scelte. Si tratta di sorgente appena pubblicato, senza release con tag né dichiarazioni di distribuzione in produzione.&lt;/p>
&lt;h3 id="moyu-opens-a-marmot-workspace-client">Moyu apre un client per spazi di lavoro Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/tsgx1990/moyu">Moyu&lt;/a> ha pubblicato il sorgente di un client di chat per spazi di lavoro in Rust basato su &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, con interfacce a riga di comando, da terminale e desktop. Le sue &lt;a href="https://github.com/tsgx1990/moyu/blob/88a20d247510d1cc46ca955564aa395d26ae8e89/CHANGELOG.md">modifiche del 30 settembre&lt;/a> usano le modifiche ai membri registrate localmente per impedire che vecchie richieste di ingresso riammettano membri rimossi, fanno scadere i codici di invito dopo sette giorni e consentono agli amministratori di revocarli. L’output del terminale filtra i caratteri di controllo e le forzature della direzione del testo inviati da altri membri. Un fork fissato di MDK instrada i trasferimenti degli allegati Blossom attraverso il proxy SOCKS5 configurato, con la risoluzione dei nomi host eseguita da quel proxy. Le modifiche della 0.3.0 sono nel sorgente pubblico; non sono ancora disponibili un tag di release pubblico né una voce di release.&lt;/p>
&lt;h2 id="protocol-and-spec-work">Lavori sul protocollo e sulle specifiche&lt;/h2>
&lt;h3 id="nip-39-extends-identity-proofs-to-bluesky-and-discord">NIP-39 estende le prove di identità a Bluesky e Discord&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> consente a un account Nostr di indicare la prova che controlla un’identità su un’altra piattaforma. Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2486">modifica integrata il 27 settembre&lt;/a> dà alle nuove prove un’unica frase raccomandata e indica ai verificatori di accettare le prove più vecchie che contengono l’npub dell’account, anche quando la formulazione è diversa. Documenta inoltre i post di Bluesky e i messaggi di Discord come luoghi in cui pubblicare la prova. Una rivendicazione su Discord può essere verificata solo da chi può leggere il server in cui è stato pubblicato il messaggio.&lt;/p>
&lt;h3 id="nip-86-adds-invite-code-management-for-relay-administrators">NIP-86 aggiunge la gestione dei codici di invito per gli amministratori dei relay&lt;/h3>
&lt;p>Nel numero dell’8 luglio Compass aveva descritto la &lt;a href="https://github.com/nostr-protocol/nips/pull/2408">proposta di inviti per NIP-86&lt;/a> mentre era ancora aperta; ora è stata integrata. &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a> definisce un’API standard per la gestione dei relay, e &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> definisce come i relay ad accesso limitato annunciano i membri ed elaborano le richieste di ammissione. L’integrazione del 24 settembre aggiunge &lt;code>listclaims&lt;/code>, &lt;code>createclaim&lt;/code> e &lt;code>deleteclaim&lt;/code>, così un amministratore può elencare, emettere e revocare i codici di invito accettati da un relay. Ciò offre agli operatori un percorso di gestione per gli inviti che possono assegnare un ruolo a un membro dopo il suo ingresso; non obbliga ogni relay a supportare questi metodi.&lt;/p>
&lt;p>Una correzione alla &lt;a href="https://nostrcompass.org/en/newsletters/2026-09-23-newsletter/#nip-86-adds-clear-and-list-methods-for-relay-management">copertura di NIP-86&lt;/a> della settimana scorsa: la &lt;a href="https://github.com/nostr-protocol/nips/blob/5b9920982ae1f4061328c1b09a90360da28d13c8/86.md">specifica integrata&lt;/a> ha aggiunto &lt;code>unallowevent&lt;/code>, &lt;code>unbanevent&lt;/code>, &lt;code>listallowedevents&lt;/code> e &lt;code>listdisallowedkinds&lt;/code>. L’articolo precedente riportava i nomi di una descrizione superata della proposta. I primi due metodi annullano una decisione di autorizzazione o di ban a livello di event; gli altri consentono di esaminare gli event autorizzati e i kind non consentiti.&lt;/p>
&lt;h3 id="nip-51-moves-favorite-follow-sets-to-an-unused-event-kind">NIP-51 sposta i follow set preferiti su un kind di event inutilizzato&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> definisce liste pubbliche e private, tra cui una lista dei follow set preferiti di un utente. Compass aveva descritto la &lt;a href="https://github.com/nostr-protocol/nips/pull/2417">proposta sulla collisione di kind&lt;/a> nel numero del 22 luglio; ora è stata integrata. La correzione del 27 settembre assegna a quella lista di preferiti il kind &lt;code>10021&lt;/code>, perché il numero precedente era già in uso. I suoi tag &lt;code>a&lt;/code> continuano a puntare ai follow set di kind &lt;code>30000&lt;/code>. La modifica risolve una collisione di numeri nella specifica; non crea un nuovo modo di seguire le persone.&lt;/p>
&lt;h3 id="nip-51-proposes-hidden-replies-for-each-thread">NIP-51 propone risposte nascoste per ogni thread&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2489">proposta aperta per NIP-51&lt;/a> consentirebbe all’autore di un thread di pubblicare un insieme pubblico di risposte nascoste che i client collaborativi mostrano dietro un interruttore. Usa un event indirizzabile di kind 30027 per ogni thread, con l’ID della radice come tag &lt;code>d&lt;/code> e tag &lt;code>e&lt;/code> che indicano le risposte; vale solo un insieme firmato dall’autore della radice. Inserire la radice nell’elenco chiede ai client di nascondere le risposte degli altri autori e di non offrire più il campo di composizione della risposta, mentre le risposte possono comunque essere pubblicate sui relay. Il formato per singolo thread limita le collisioni nelle modifiche alla stessa conversazione. L’autore riferisce un’implementazione in Nostrich, ma l’esame del sorgente pubblico non l’ha confermata; la proposta resta non integrata e il formato dell’insieme è ancora in discussione.&lt;/p>
&lt;h3 id="nip-db-proposes-verified-domain-names-for-key-addressed-services">NIP-DB propone nomi di dominio verificati per servizi indirizzati tramite chiave&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2487">proposta aperta NIP-DB&lt;/a>, presentata il 28 settembre, descrive event Nostr che associano un normale dominio Internet alla chiave che lo serve su una rete indirizzata tramite chiave, come &lt;a href="https://nostrcompass.org/it/topics/fips/">FIPS&lt;/a>, una mesh crittografata che indirizza i nodi tramite chiave pubblica Nostr. Il proprietario di un dominio può stabilire l’associazione con un record DNS TXT o con una prova DNSSEC trasportata insieme alla rivendicazione; i client fisserebbero un risultato verificato per un uso offline successivo. La proposta vieta esplicitamente la risoluzione tramite una rivendicazione non verificata, poiché chiunque può rivendicare il dominio di qualcun altro in un event Nostr. &lt;a href="https://github.com/fr34aky/fips-pub-domains">fips-pub-domains&lt;/a> è l’implementazione di riferimento dell’autore, ma i numeri dei kind degli event e parte della formulazione specifica per l’overlay sono ancora in revisione. I test end-to-end riportati sono prove dell’autore, non un’affermazione che la proposta sia un NIP accettato.&lt;/p>
&lt;h3 id="a-private-feed-draft-explores-encrypted-groups-of-recipients">Una bozza di feed privato esplora gruppi crittografati di destinatari&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2488">nuova proposta di busta multi-destinatario&lt;/a>, aperta il 29 settembre, delinea note, risposte e connessioni private i cui destinatari previsti possono trovare un event senza esporre le proprie chiavi pubbliche ordinarie nei tag visibili. Propone tag alias opachi a coppie, derivati da segreti condivisi, e kind di event provvisori, incluso un modo per incapsulare un altro event Nostr per centinaia di lettori. Ciò potrebbe offrire ai piccoli feed privati un percorso di recupero più diretto rispetto all’invio di un messaggio separato a ogni membro.&lt;/p>
&lt;p>L’&lt;a href="https://github.com/nostr-protocol/nips/pull/2488">autore della proposta&lt;/a> la definisce esplicitamente un lavoro in corso. La bozza non ha un’implementazione dimostrata né una revisione di sicurezza, e l’assegnazione dei kind e le regole di firma a livello di byte restano aperte.&lt;/p>
&lt;h3 id="a-blossom-proposal-lets-other-people-announce-mirrored-media">Una proposta Blossom consente ad altre persone di annunciare i contenuti multimediali replicati&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2478">proposta di NIP aperta&lt;/a> descrive un modo con cui chi replica un blob Blossom di un altro autore può annunciare quella copia tramite Nostr. Un client potrebbe quindi cercare la copia se il server originale perde il blob. Nella discussione è emersa anche l’idea di controllare l’attuale elenco di server BUD-03 di chi ha effettuato il mirror quando un hint di server annunciato è diventato obsoleto. Si tratta di un percorso di scoperta proposto, non della garanzia che client o relay di archiviazione offrano già un archivio di riserva.&lt;/p>
&lt;h3 id="road-event-reports-seek-a-shared-nostr-format">Le segnalazioni di eventi stradali cercano un formato Nostr condiviso&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2479">proposta aperta Road Event Reports&lt;/a> descrive segnalazioni e conferme per buche, chiusure, autovelox e altre condizioni stradali. Usa tag di posizione e il timestamp di scadenza di &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a>, che indica ai relay quando smettere di servire un event, così una segnalazione non deve restare attuale indefinitamente. L’autore ha basato le revisioni su un campione di event recuperati dai relay pubblici e sui &lt;a href="https://github.com/jooray/roadstr">client Roadstr&lt;/a> esistenti per segnalare le condizioni stradali, ma la bozza lascia ancora aperta una questione sulla codifica compatta, e il numero di NIP proposto non è stato adottato.&lt;/p>
&lt;h3 id="marmot-revisits-multi-device-coordination">Marmot riconsidera il coordinamento tra più dispositivi&lt;/h3>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot/pull/427">riprogettazione multi-dispositivo di Marmot&lt;/a> sostituisce una bozza External Commit mai implementata con una guida non normativa pensata per raccogliere un primo feedback. La nuova direzione esplora un dispositivo esistente che approva un nuovo dispositivo, lo inserisce nelle conversazioni e in seguito rimuove i dispositivi, mantenendo visibili le questioni aperte. Gli ID riservati dalla bozza rimossa vengono liberati perché nessuna implementazione li aveva adottati. Il documento di idee non assegna nuovi ID né formati di trasmissione e non è una funzionalità multi-dispositivo implementata.&lt;/p>
&lt;h2 id="six-years-of-nostr-septembers">Sei anni di settembre su Nostr&lt;/h2>
&lt;p>L’ultimo numero di settembre è l’occasione per ripercorrere come Nostr sia passato dagli abbozzi a un insieme più ampio di strumenti interoperabili. Un &lt;a href="https://github.com/arcbtc/buber/commit/7a66d400f2">prototipo di abbinamento di corse del 2021&lt;/a> usava event firmati per coordinare un servizio; cinque anni dopo, la &lt;a href="https://github.com/nostr-protocol/nips/commit/0046368a7">formulazione delle prove di identità&lt;/a> e le &lt;a href="https://github.com/nostr-protocol/nips/commit/6631b3eb1">collisioni tra kind di liste&lt;/a> sono il genere di dettagli che i maintainer stanno risolvendo. Nel frattempo, i client hanno imparato a presentare conversazioni, contenuti multimediali e ripristino in modi utilizzabili da persone comuni. Le fonti datate qui sotto mostrano le tappe di questa progressione. Non dimostrano che ogni esperimento sia stato lanciato né che ogni vecchio progetto resti raccomandato.&lt;/p>
&lt;h3 id="september-2021-early-experiments-with-useful-shapes">Settembre 2021: primi esperimenti con forme utili&lt;/h3>
&lt;p>Un &lt;a href="https://github.com/arcbtc/buber/commit/7a66d400f2">commit di BUber del 4 settembre&lt;/a> esplorava un concetto di abbinamento per taxi basato su event Nostr. Mostrava come una richiesta firmata e trasportata dai relay potesse coordinare persone senza affidare l’intero servizio a un unico server. Il sorgente è un concetto e non dimostra il lancio di un servizio di corse.&lt;/p>
&lt;p>Più avanti nello stesso mese, il &lt;a href="https://github.com/emeceve/loquaz/commit/d885d93d22">sorgente di Loquaz del 23 settembre&lt;/a> offriva un prototipo di chat desktop. Era un altro dei primi tentativi di far sembrare i messaggi dei relay un’applicazione ordinaria. Il sorgente non dimostra una crittografia end-to-end completa né un messenger pronto per la produzione; il filo conduttore duraturo è la ricerca di un’interfaccia di conversazione utilizzabile sopra event semplici. BUber sperimentava l’abbinamento di corse e Loquaz la chat; entrambi usavano event firmati prima che si consolidassero schemi comuni per i client. Queste prove hanno delineato due problemi ricorrenti per i client successivi: coordinarsi attraverso i relay e presentare gli event come una conversazione utilizzabile.&lt;/p>
&lt;h3 id="september-2022-chat-and-delegated-actions-enter-the-specifications">Settembre 2022: chat e azioni delegate entrano nelle specifiche&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/commit/3423a6dfb">modifica a NIP-28 del 10 settembre&lt;/a> descriveva canali di chat pubblici con messaggi e metadati che i client potevano interpretare insieme. &lt;a href="https://nostrcompass.org/it/topics/nip-28/">NIP-28&lt;/a> ha reso una stanza condivisa un oggetto esplicito del protocollo e ha dato ai client una convenzione comune per i canali.&lt;/p>
&lt;p>Il 23 settembre, il &lt;a href="https://nostrcompass.org/it/topics/nip-26/">NIP-26&lt;/a>, nel suo &lt;a href="https://github.com/nostr-protocol/nips/commit/b62aa418d">testo sulla firma delegata&lt;/a>, documentava un modo con cui una chiave poteva autorizzarne un’altra a firmare un insieme limitato di event. Coglieva un’importante questione progettuale del 2022: come usare un’identità Nostr senza consegnare la chiave principale a ogni applicazione. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/26.md">NIP-26 è ora contrassegnato come non raccomandato&lt;/a>, quindi questa è la testimonianza di un esperimento, non un consiglio per nuove integrazioni. Il suo stato successivo mostra come si sia evoluto il modello di firma: una specifica può preservare un’utile formulazione del problema anche quando la soluzione proposta viene ritirata.&lt;/p>
&lt;h3 id="september-2023-clients-grow-up-around-relay-discovery-and-metadata">Settembre 2023: i client maturano attorno alla scoperta dei relay e ai metadati&lt;/h3>
&lt;p>Damus è un client social Nostr. Il suo &lt;a href="https://github.com/damus-io/damus/blob/master/CHANGELOG.md#16-18---2023-09-21">changelog del 21 settembre&lt;/a> registrava lavori sul database Nostr locale, sulla ricerca e sulla navigazione per hashtag. Queste modifiche rendevano più facile sfogliare e recuperare su un telefono un feed social affollato; il changelog datato è una prova di quella release del client, non di ogni capacità successiva di Damus.&lt;/p>
&lt;p>Anche i dettagli del protocollo si stavano muovendo. Una &lt;a href="https://github.com/nostr-protocol/nips/commit/44c21c9d8">modifica del 26 settembre&lt;/a> a &lt;a href="https://nostrcompass.org/it/topics/nip-24/">NIP-24&lt;/a> chiariva i campi opzionali dei metadati del profilo, mentre la &lt;a href="https://github.com/nostr-protocol/nips/commit/3b5d3ca67">modifica a NIP-65 del 29 settembre&lt;/a> affrontava la normalizzazione e la deduplicazione degli URI dei relay. &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> indica ai client come pubblicare i relay che usano per leggere e scrivere; un trattamento coerente degli URI aiuta queste liste a puntare allo stesso relay anche quando le stringhe differiscono in modi innocui. Quella piccola convenzione ha spinto la progettazione dei client verso una scoperta affidabile: trovare gli event di una persona dipende dal sapere dove vengono pubblicati.&lt;/p>
&lt;h3 id="september-2024-posts-acquire-richer-context">Settembre 2024: i post acquisiscono un contesto più ricco&lt;/h3>
&lt;p>Le &lt;a href="https://github.com/damus-io/damus/blob/master/CHANGELOG.md#1101---2024-09-22">note di rilascio di Damus del 22 settembre&lt;/a> descrivevano il supporto agli highlight e ai commenti &lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84&lt;/a>. NIP-84 offre ai lettori un modo per citare e discutere un passaggio di un contenuto lungo. Il lavoro sul client mostra come un’idea del protocollo sia diventata qualcosa che le persone potevano usare durante la lettura.&lt;/p>
&lt;p>Nel frattempo, &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> riceveva una &lt;a href="https://github.com/nostr-protocol/nips/commit/ea36ec9ed">modifica del 20 settembre&lt;/a> che perfezionava oggetti ed etichette delle issue per la collaborazione git su Nostr, e &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73&lt;/a> riceveva una &lt;a href="https://github.com/nostr-protocol/nips/commit/79786bb7b">modifica lo stesso giorno&lt;/a> che perfezionava gli identificatori di contenuti esterni. Sono modifiche separate alle specifiche: una aiuta le issue di un repository a mantenere la propria struttura, mentre l’altra consente a un event di fare riferimento a materiale esterno a Nostr. Entrambe ampliano il significato che un client può preservare quando i contenuti viaggiano tra comunità, repository e altri media.&lt;/p>
&lt;h3 id="september-2025-access-controls-and-payment-context-become-more-precise">Settembre 2025: controlli di accesso e contesto dei pagamenti diventano più precisi&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/nostr-protocol/nips/commit/4c5d5fff9">revisione di NIP-42 del 6 settembre&lt;/a> affrontava l’autenticazione ai relay con più utenti. &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> consente a un relay di sfidare un client a dimostrare quale chiave Nostr sta effettuando una richiesta; l’aggiornamento era importante per i servizi che servono più di un account autenticato sulla stessa connessione.&lt;/p>
&lt;p>Un &lt;a href="https://github.com/nostr-protocol/nips/commit/400d975da">aggiornamento di NIP-47 del 15 settembre&lt;/a> aggiungeva metadati di pagamento opzionali alle richieste Nostr Wallet Connect. &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> consente a un’app di chiedere a un wallet di eseguire azioni tramite Nostr. Più contesto può rendere comprensibile un’interazione con il wallet, ma i metadati possono esporre dettagli sul pagatore, quindi client e wallet devono comunque trattarli come sensibili. La modifica illustra come il lavoro sull’interoperabilità includesse ormai ciò che un destinatario può apprendere, e non solo se una richiesta può essere consegnata.&lt;/p>
&lt;h3 id="september-2026-interoperability-details-meet-public-identity">Settembre 2026: i dettagli dell’interoperabilità incontrano l’identità pubblica&lt;/h3>
&lt;p>Questo settembre, una &lt;a href="https://github.com/nostr-protocol/nips/commit/6631b3eb1">modifica integrata a NIP-51&lt;/a> ha spostato il kind di event dei follow set lontano da una collisione. &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> definisce liste che una persona può mantenere e condividere; kind di event univoci permettono ai client di distinguere un tipo di lista da un altro. Un numero precedente di Compass aveva discusso la proposta, mentre l’integrazione di settembre ne segna il cambio di stato.&lt;/p>
&lt;p>Una seconda &lt;a href="https://github.com/nostr-protocol/nips/commit/0046368a7">modifica integrata a NIP-39&lt;/a> ha chiarito il testo delle prove e aggiunto altri modi per associare un account esterno a un’identità Nostr. &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> riguarda rivendicazioni di identità verificabili, non un registro centrale delle identità. Insieme, le due integrazioni mostrano l’attuale lavoro sul protocollo concentrarsi sui piccoli dettagli che determinano se client indipendenti interpretano correttamente gli stessi event di identità e di lista. Mostrano anche uno spostamento dall’invenzione di nuove categorie di event verso la riduzione dell’ambiguità in quelle esistenti.&lt;/p>
&lt;p>Lungo questi sei settembre, lo schema è una progressione: dal dimostrare che un &lt;a href="https://github.com/arcbtc/buber/commit/7a66d400f2">event firmato può descrivere una richiesta applicativa&lt;/a> al chiedersi come un &lt;a href="https://github.com/nostr-protocol/nips/commit/0046368a7">client verifichi una rivendicazione su una persona&lt;/a>. I vecchi prototipi contano perché espongono le domande a cui specifiche e client successivi hanno dovuto rispondere: chi firma, dove si trova un event, che cosa significa e come si fa a sapere se fidarsene. È anche per questo che una piccola e precisa correzione del protocollo può contare quanto una nuova interfaccia.&lt;/p></content:encoded></item><item><title>Nostr Compass #40</title><link>https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/</link><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#marmot-protocol-and-mdk-reach-v0100">Marmot Protocol e MDK&lt;/a> aggiungono &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.10.0">finestre limitate per conversazioni, correzioni per il ripristino e binding SDK coordinati&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#myco-070-runs-napplets-and-file-sharing-over-a-multi-path-fips-mesh">Myco&lt;/a> trasforma la propria mesh FIPS in un ambiente di esecuzione offline per napplet e condivisione di file, &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#dart-ndk-changes-relay-cache-and-account-behavior">Dart NDK&lt;/a> modifica il comportamento di relay e cache, mentre &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#keycast-publishes-its-rebuilt-signer-release-candidate">Keycast&lt;/a> ricostruisce la firma remota attorno a richieste persistenti e funzionalità di ripristino. Tra le release con tag figurano &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#nail-020-restores-nostr-to-email-subscriptions">Nail&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#nostr-mail-client-0150-broadens-account-and-relay-control">Nostr Mail Client&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#linky-26917-keeps-recovery-seeds-off-its-server">Linky&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#boris-0125-bounds-extraction-and-strengthens-offline-reading">Boris&lt;/a>. Il repository dei NIP ha integrato una PR questa settimana, chiarendo &lt;a href="https://nostrcompass.org/it/topics/nip-a3/">NIP-A3 (Payment Targets)&lt;/a>, mentre le proposte relative ai comandi slash e agli heartbeat DVM restano aperte. Gli approfondimenti riguardano &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#nip-23-long-form-content">NIP-23 (Long-form Content)&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#nip-92-media-attachments-metadata">NIP-92 (Media Attachments)&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#marmot-protocol-and-mdk-reach-v0100">Marmot Protocol e MDK&lt;/a> aggiungono &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.10.0">finestre limitate per conversazioni, correzioni per il ripristino e binding SDK coordinati&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#myco-070-runs-napplets-and-file-sharing-over-a-multi-path-fips-mesh">Myco&lt;/a> trasforma la propria mesh FIPS in un ambiente di esecuzione offline per napplet e condivisione di file, &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#dart-ndk-changes-relay-cache-and-account-behavior">Dart NDK&lt;/a> modifica il comportamento di relay e cache, mentre &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#keycast-publishes-its-rebuilt-signer-release-candidate">Keycast&lt;/a> ricostruisce la firma remota attorno a richieste persistenti e funzionalità di ripristino. Tra le release con tag figurano &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#nail-020-restores-nostr-to-email-subscriptions">Nail&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#nostr-mail-client-0150-broadens-account-and-relay-control">Nostr Mail Client&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#linky-26917-keeps-recovery-seeds-off-its-server">Linky&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#boris-0125-bounds-extraction-and-strengthens-offline-reading">Boris&lt;/a>. Il repository dei NIP ha integrato una PR questa settimana, chiarendo &lt;a href="https://nostrcompass.org/it/topics/nip-a3/">NIP-A3 (Payment Targets)&lt;/a>, mentre le proposte relative ai comandi slash e agli heartbeat DVM restano aperte. Gli approfondimenti riguardano &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#nip-23-long-form-content">NIP-23 (Long-form Content)&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-09-16-newsletter/#nip-92-media-attachments-metadata">NIP-92 (Media Attachments)&lt;/a>.&lt;/p>
&lt;h2 id="notizie-principali">Notizie principali&lt;/h2>
&lt;h3 id="marmot-protocol-e-mdk-raggiungono-v0100">Marmot Protocol e MDK raggiungono v0.10.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.10.0">MDK v0.10.0 di Marmot Protocol&lt;/a> aggiunge finestre limitate per gli elenchi delle chat e le conversazioni, riepiloghi indipendenti degli elementi dell’account che richiedono attenzione, bozze sicure rispetto alle revisioni e lo stato delle reazioni per chi visualizza, destinati alle applicazioni che realizzano gruppi crittografati basati su MLS tramite Nostr. Ripristina inoltre il blocco degli utenti per singolo account e conteggia gli inviti in sospeso senza contarli nuovamente come messaggi non letti.&lt;/p>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.10.0">serie di release v0.10.0&lt;/a> corregge il ripristino quando un dispositivo viene rimosso e aggiunto nuovamente, quando il traffico arriva prima del relativo Welcome e quando la riproduzione del peel viene interrotta. Riduce la sincronizzazione dei relay e il ricambio delle sottoscrizioni, mette in coda le operazioni multimediali mentre gli slot di trasferimento sono occupati e vincola a ogni tentativo gli upload per l’audit forense a destinazioni convalidate.&lt;/p>
&lt;p>Lo stesso &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.10.0">commit sorgente di MDK&lt;/a> distribuisce gli artefatti Rust, C, Swift, Kotlin, da riga di comando e per agenti come un’unica coorte di compatibilità. I database degli account avanzano attraverso le migrazioni 70–75, quindi le applicazioni devono aggiornare insieme il codice sorgente generato e le librerie native, conservare bundle completi dei framework Apple, eseguire un backup prima della migrazione ed evitare il downgrade di un database già migrato.&lt;/p>
&lt;h3 id="myco-070-esegue-napplet-e-condivisione-di-file-su-una-mesh-fips-multi-percorso">Myco 0.7.0 esegue napplet e condivisione di file su una mesh FIPS multi-percorso&lt;/h3>
&lt;p>&lt;a href="https://github.com/Origami74/myco/releases/tag/v0.7.0">Myco v0.7.0&lt;/a> trasforma l’applicazione mesh per Android in un host per napplet, programmi Nostr contenuti in un singolo file e descritti dalla proposta aperta &lt;a href="https://nostrcompass.org/it/topics/nip-5d/">NIP-5D&lt;/a>. Ogni napplet viene eseguita in una sandbox senza accesso diretto alla rete o allo spazio di archiviazione e richiede tramite Myco le funzionalità relative a identità, relay, outbox, mesh, immagini o file. La schermata di installazione mostra queste autorizzazioni prima dell’approvazione, gli utenti possono modificarle in seguito e gli aggiornamenti che richiedono un accesso più ampio tornano alla fase di autorizzazione.&lt;/p>
&lt;p>&lt;a href="https://github.com/Origami74/myco/releases/tag/v0.7.0">Myco v0.7.0&lt;/a> invia inoltre file arbitrari ai telefoni associati tramite il pannello di condivisione del sistema o un contatto Circle. Il telefono ricevente approva il trasferimento prima che Myco scriva il file in &lt;code>Downloads/Myco&lt;/code> e il payload viene crittografato con la chiave di quel telefono. Il rilevamento sulla rete locale usa UDP quando entrambi i telefoni condividono il Wi-Fi e mantiene Bluetooth per i percorsi offline; i nuovi tentativi gestiscono la perdita dei messaggi di controllo, mentre un timer di inattività limita i trasferimenti di file di grandi dimensioni che si bloccano.&lt;/p>
&lt;p>&lt;a href="https://github.com/Origami74/myco/releases/tag/v0.7.0">Myco ora mantiene collegamenti FIPS simultanei&lt;/a> con un peer, verifica i percorsi in standby e sposta il traffico quando il collegamento Bluetooth, Wi-Fi Aware o di rete locale attivo si degrada. Il lavoro si basa sul ramo sperimentale multi-percorso di FIPS. La versione 0.7.0 resta compatibile a livello di protocollo con la 0.6.1 per lo scambio di applicazioni, la messaggistica e l’associazione già esistenti, ma i collegamenti multi-percorso si formano soltanto tra due telefoni aggiornati. Anche il relay integrato passa a LMDB e migra gli archivi di event precedenti al primo avvio.&lt;/p>
&lt;h3 id="dart-ndk-modifica-il-comportamento-di-relay-cache-e-account">Dart NDK modifica il comportamento di relay, cache e account&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/ndk/releases/tag/v0.10.0-dev.3">Dart NDK v0.10.0-dev.3&lt;/a> è una release di sviluppo della libreria client Dart, con modifiche incompatibili nella gestione dei relay, nella cache, nell’autenticazione e nei flussi degli account. I responsabili della manutenzione dei client devono prevedere interventi di migrazione sia del codice sia del comportamento, soprattutto quando un’applicazione presuppone che gli event nella cache, gli event nascosti o gli aggiornamenti degli account seguano la semantica della precedente linea di release.&lt;/p>
&lt;p>La &lt;a href="https://github.com/relaystr/ndk/releases/tag/v0.10.0-dev.3">serie di sviluppo v0.10.0&lt;/a> migliora inoltre le prestazioni della cache e del verificatore Rust e modifica il comportamento relativo a metadati, coordinate di eliminazione, visibilità degli event, autenticazione del signer e pagamenti NWC. La verifica compatta degli event in Rust riduce il sovraccarico di verifica, mentre il nuovo comportamento della cache &lt;code>loadHiddenEvents&lt;/code> è esplicitamente incompatibile.&lt;/p>
&lt;p>Poiché si tratta di &lt;a href="https://github.com/relaystr/ndk/releases/tag/v0.10.0-dev.3">v0.10.0-dev.3&lt;/a>, e non di una release stabile v0.10.0, i team che sviluppano applicazioni dovrebbero fissare le versioni e collaudare deliberatamente le migrazioni. La riconnessione ai relay, il popolamento della cache, l’autenticazione del signer, la gestione del wallet e l’ordine dei flussi degli account sono i percorsi più importanti da verificare prima di migrare i client di produzione.&lt;/p>
&lt;h3 id="keycast-pubblica-la-release-candidate-del-proprio-signer-ricostruito">Keycast pubblica la release candidate del proprio signer ricostruito&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/keycast/releases/tag/v2.0.0-rc.1">Keycast v2.0.0-rc.1&lt;/a> è la prima release numerata del signer remoto NIP-46 ricostruito e self-hosted. La release candidate aggiunge il supporto NIP-46 multiplexato, l’instradamento dei relay condiviso e per singola chiave, la gestione persistente delle richieste, l’archiviazione crittografata delle chiavi, inviti, sessioni e spazi di lavoro per i team.&lt;/p>
&lt;p>Le regole di firma e il ripristino ricevono pari attenzione in &lt;a href="https://github.com/marmot-protocol/keycast/releases/tag/v2.0.0-rc.1">v2.0.0-rc.1&lt;/a>. Gli operatori possono configurare le regole di firma, esaminare la cronologia di audit, creare backup crittografati, ripristinare le installazioni e ruotare la chiave root. Il progetto documenta inoltre una provenienza coordinata e verificata delle release per i propri componenti API, signer e web.&lt;/p>
&lt;p>La release resta una &lt;a href="https://github.com/marmot-protocol/keycast/releases/tag/v2.0.0-rc.1">release candidate&lt;/a>, quindi gli operatori non dovrebbero dedurre la compatibilità definitiva o l’idoneità alla produzione dal solo numero di versione. Prima di sostituire un servizio signer esistente, i test dovrebbero coprire il ripristino delle richieste interrotte, gli errori di instradamento dei relay, l’applicazione delle regole, il ripristino dei backup e la rotazione delle chiavi.&lt;/p>
&lt;h2 id="release-con-tag">Release con tag&lt;/h2>
&lt;h3 id="nail-020-ripristina-le-sottoscrizioni-da-nostr-allemail">Nail 0.2.0 ripristina le sottoscrizioni da Nostr all’email&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nail/releases/tag/v0.2.0">Nail v0.2.0&lt;/a>, un servizio che recapita messaggi Nostr tramite flussi di lavoro email, aggiunge sottoscrizioni gift-wrap autoriparanti. La modifica mira a ripristinare la consegna da Nostr all’email dopo errori delle sottoscrizioni, anziché lasciare il bridge silenziosamente bloccato.&lt;/p>
&lt;h3 id="nostr-mail-client-0150-amplia-il-controllo-di-account-e-relay">Nostr Mail Client 0.15.0 amplia il controllo di account e relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.15.0">Nostr Mail Client v0.15.0&lt;/a> aggiunge il passaggio tra account con un tocco, notifiche per singolo account, push web e il ripristino di un elenco di relay mancante da un relay, un indirizzo Nostr o un &lt;code>nprofile&lt;/code>. Ripubblica inoltre i profili e gli elenchi di relay sui relay di indicizzazione, si riconnette quando torna l’accesso alla rete e distingue un’interruzione del dispositivo da relay di posta irraggiungibili. Queste modifiche rendono più affidabili il ripristino degli account e la consegna sui client desktop, web e Android.&lt;/p>
&lt;h3 id="linky-26917-mantiene-i-seed-di-ripristino-fuori-dal-proprio-server">Linky 26.9.17 mantiene i seed di ripristino fuori dal proprio server&lt;/h3>
&lt;p>&lt;a href="https://github.com/linky-fit/linky/releases/tag/v26.9.17">Linky v26.9.17&lt;/a>, un’applicazione per contatti, messaggistica Nostr privata e pagamenti Lightning/Cashu, corregge un percorso che inviava i seed di ripristino al server di Linky quando gli utenti li salvavano tramite un gestore di password. La release rafforza inoltre la gestione degli URL dei file di pagamento e disabilita i backup delle applicazioni Android, riducendo i luoghi dai quali il materiale di ripristino del wallet e dell’identità può uscire dal dispositivo.&lt;/p>
&lt;h3 id="calendar-by-form-240-aggiunge-gli-inviti-per-ospiti-di-mailstr">Calendar by Form* 2.4.0 aggiunge gli inviti per ospiti di Mailstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v2.4.0">Calendar by Form* v2.4.0&lt;/a>, un client di calendario Nostr, aggiunge gli inviti per ospiti di Mailstr e correzioni al calendario su dispositivi mobili. Il percorso di invito consente agli organizzatori di includere partecipanti tramite un coordinamento basato sulla posta senza richiedere un account di calendario esistente.&lt;/p>
&lt;h3 id="hessible-012-velocizza-la-sincronizzazione-crittografata-di-contatti-e-foto">Hessible 0.1.2 velocizza la sincronizzazione crittografata di contatti e foto&lt;/h3>
&lt;p>&lt;a href="https://github.com/circumspace/hessible">Hessible 0.1.2&lt;/a>, un’applicazione Android per i contatti incentrata sulla privacy che archivia dati di contatto crittografati sui relay Nostr, riduce il sovraccarico della sincronizzazione e replica le foto crittografate dei contatti sui server Blossom. La release riduce anche le dimensioni del pacchetto dell’applicazione, mentre le sue indicazioni continuano a raccomandare agli utenti di eseguire il backup delle chiavi e di tenere conto dei diversi periodi di conservazione dei relay.&lt;/p>
&lt;h3 id="boris-0125-limita-lestrazione-e-rafforza-la-lettura-offline">Boris 0.12.5 limita l’estrazione e rafforza la lettura offline&lt;/h3>
&lt;p>&lt;a href="https://github.com/dergigi/boris/releases/tag/v0.12.5">Boris v0.12.5&lt;/a>, un client per elenchi di lettura basato sui segnalibri Nostr, segue v0.12.4 con l’estrazione limitata dei contenuti, la cache offline, modifiche alle query dei relay, la gestione dell’HTML non sicuro e una correzione per il testo quasi invisibile nel tema Paper White. Queste modifiche interessano sia la sicurezza dei contenuti sia l’affidabilità della lettura del materiale salvato senza un percorso di rete attivo.&lt;/p>
&lt;h3 id="amethyst-1152-perfeziona-i-contenuti-multimediali-e-le-risposte-con-ambito-root">Amethyst 1.15.2 perfeziona i contenuti multimediali e le risposte con ambito root&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.15.2">Amethyst v1.15.2&lt;/a>, un client Nostr per Android, conclude una sequenza di tre release con correzioni ai contenuti multimediali, una gestione più chiara delle autorizzazioni di Health Connect, la memorizzazione nella cache dei nomi delle fonti e filtri dedicati per le interazioni con le risposte NIP-22 con ambito root. La release include anche aggiornamenti alle traduzioni e ai metadati dei pacchetti.&lt;/p>
&lt;h3 id="librenostr-0517-instrada-i-feed-attraverso-i-relay-di-scrittura-degli-autori">LibreNostr 0.5.17 instrada i feed attraverso i relay di scrittura degli autori&lt;/h3>
&lt;p>&lt;a href="https://primal.net/e/c118efbe649823a3258a6e7663f4d8b52195adbde0481019183792eb5274afd4">LibreNostr 0.5.17&lt;/a>, un client Android incentrato sui relay, ora indirizza le query dei feed ai relay di scrittura NIP-65 degli autori seguiti e rinvia le query sul conteggio delle interazioni finché le note non entrano nell’area visibile. Il lavoro precedente nella stessa sequenza di release limita le query simultanee ai relay e chiude ogni sottoscrizione al relay non appena quel relay risponde, riducendo il rifiuto delle richieste provocato dal client stesso durante gli aggiornamenti.&lt;/p>
&lt;h3 id="voca-120-migliora-lannullamento-e-il-ripristino-della-sintesi-vocale">Voca 1.2.0 migliora l’annullamento e il ripristino della sintesi vocale&lt;/h3>
&lt;p>&lt;a href="https://njump.me/nevent1qqsfcc5zel49t5zt96ufndumrzc2vzhrk7e2rnwq579gcs8yd9cn4pcflqxt3">Voca 1.2.0&lt;/a>, un lettore text-to-speech per Android orientato all’uso offline che può recuperare e verificare contenuti Nostr, aggiunge comportamenti distinti per l’annullamento e il rendering, oltre al ripristino per motori vocali lenti o inaffidabili, dopo il lancio della versione 1.0 trattato nel numero #38. Aggiunge inoltre una diagnostica facoltativa inviata con una nuova chiave Nostr monouso tramite un messaggio privato NIP-17, con i report di grandi dimensioni crittografati localmente prima dell’upload.&lt;/p>
&lt;h3 id="postr-111-aggiunge-la-dettatura-e-il-ripristino-della-pubblicazione">Postr 1.1.1 aggiunge la dettatura e il ripristino della pubblicazione&lt;/h3>
&lt;p>&lt;a href="https://njump.me/nevent1qqszw3dsskfz3u7pqxn4r5ytslrj0e3u26et90rpy9997vtfw3qkr6g9g0f03">Postr 1.1.1&lt;/a>, un composer Android dedicato al kind &lt;code>1&lt;/code>, aggiunge la dettatura e la gestione delle menzioni che tiene conto della posizione del cursore, dopo il lancio trattato nel numero #37. La precedente release 1.1.0 migliora inoltre il ripristino della pubblicazione riprovando lo stesso event firmato dopo esiti ambigui, evitando che il ripristino crei una nota duplicata.&lt;/p>
&lt;h3 id="earthly-0110-corregge-la-sanificazione-e-la-creazione-delle-mappe">earthly 0.1.10 corregge la sanificazione e la creazione delle mappe&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/earthly/releases/tag/v0.1.10">earthly v0.1.10&lt;/a>, un editor collaborativo di mappe Nostr, modifica sostanzialmente la creazione di mappe e storie, correggendo al contempo una falla critica nel sanitizzatore delle attribuzioni di MapLibre tramite un aggiornamento di MapLibre GL JS. La release migliora inoltre i messaggi sulla compatibilità con WebGL 2, i controlli su dispositivi mobili, la modifica delle geometrie, la selezione e i controlli di presentazione delle mappe.&lt;/p>
&lt;h3 id="routstrd-0410-rafforza-linstradamento-delle-richieste-nostr">Routstrd 0.4.10 rafforza l’instradamento delle richieste Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/Routstr/routstrd/releases/tag/v0.4.10">Routstrd v0.4.10&lt;/a> sostituisce un elenco di provider archiviato e obsoleto con quello restituito dal rilevamento in tempo reale. La precedente release v0.4.9 ha aggiunto controlli manuali e pianificati per l’aggiornamento dei client, npubs con nome nella CLI e riavvii graduali del daemon che attendono il completamento delle richieste attive. Nel complesso, le release rendono più espliciti la selezione dei provider e il comportamento di aggiornamento per gli operatori del servizio instradato tramite Nostr.&lt;/p>
&lt;h3 id="whistle-191-dota-di-strumentazione-il-ripristino-in-background">Whistle 1.9.1 dota di strumentazione il ripristino in background&lt;/h3>
&lt;p>&lt;a href="https://primal.net/e/bb3aae325f707b04dffd3b0b4a2d0c48022999fef7a793be3503b4c53e37eba4">Whistle 1.9.1&lt;/a>, un’applicazione crittografata per la condivisione della posizione in gruppo, basata su Nostr, MLS e Marmot Protocol, aggiunge strumentazione per il ciclo di vita del dispositivo al ripristino in background su iOS. La versione 1.9.0 introduce inoltre la sospensione della condivisione per singolo gruppo e la diagnostica dell’ultimo event per singolo gruppo, facilitando la distinzione tra un gruppo bloccato e una connessione funzionante a livello dell’intera applicazione.&lt;/p>
&lt;h3 id="amber-664-risolve-una-fuga-di-dati-tramite-tor-e-gli-errori-di-ripristino-del-signer">Amber 6.6.4 risolve una fuga di dati tramite Tor e gli errori di ripristino del signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.6.4">Amber v6.6.4&lt;/a>, un signer di event Nostr per Android, conclude una sequenza di tre release con la correzione di una fuga di dati tramite Tor e correzioni relative ai relay del signer e al ripristino. Gli utenti dei signer e gli sviluppatori di applicazioni dovrebbero prestare particolare attenzione alle ipotesi sui percorsi di rete e al comportamento dei nuovi tentativi, poiché in caso contrario gli errori del signer possono sembrare errori di pubblicazione del client.&lt;/p>
&lt;h3 id="nostr-wot-extension-070-crittografa-i-dati-della-cache-del-wallet">nostr-wot-extension 0.7.0 crittografa i dati della cache del wallet&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-wot/nostr-wot-extension/releases/tag/v0.7.0">nostr-wot-extension v0.7.0&lt;/a>, un’estensione del browser che gestisce le identità Nostr, firma gli event e avvia pagamenti Lightning, crittografa i dati della cache del wallet e dei pagamenti e rafforza l’isolamento di vault e account. Interviene inoltre sul comportamento di NWC e wallet, sulla compatibilità dei pagamenti, sulle approvazioni delle richieste, sulla gestione degli account, sull’importazione dei backup, sulla gestione dei relay, sull’accessibilità e sulla decrittazione locale degli event.&lt;/p>
&lt;h3 id="lightningpub-0041-migliora-il-ripristino-della-pubblicazione">Lightning.Pub 0.0.41 migliora il ripristino della pubblicazione&lt;/h3>
&lt;p>&lt;a href="https://github.com/shocknet/Lightning.Pub/releases/tag/v0.0.41">Lightning.Pub v0.0.41&lt;/a> aggiunge agli errori di pubblicazione Nostr dettagli su URL dei relay, tempistiche, stato dei socket e DNS. Riprova inoltre le chiamate di avvio del provider di liquidità, rimuove le callback abbandonate e impedisce l’instradamento delle invoice finché una risposta positiva sul saldo non dimostra che il provider è pronto. Gli operatori ottengono ora una distinzione più chiara tra errori di connettività dei relay ed errori di disponibilità del backend.&lt;/p>
&lt;h3 id="gittr-100-fa-progredire-la-collaborazione-nip-34">Gittr 1.0.0 fa progredire la collaborazione NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/arbadacarbaYK/gittr/releases/tag/v1.0.0">Gittr v1.0.0&lt;/a>, un client per la collaborazione Git basata su Nostr, fa progredire la gestione delle fonti di clonazione NIP-34, lo stato di issue e discussioni, l’usabilità su dispositivi mobili e l’interoperabilità. Il tag v1.0.0 segue v0.3.0 e v0.3.1, pubblicati all’inizio di questa settimana, fornendo agli integratori un indicatore di versione stabile per la sequenza di release.&lt;/p>
&lt;h3 id="gitworkshop-410-rende-recuperabili-le-bozze-nip-34">GitWorkshop 4.1.0 rende recuperabili le bozze NIP-34&lt;/h3>
&lt;p>&lt;a href="https://njump.me/nevent1qqswf45vw8y5metnu8tc2fge0lr7sy8nmuk264kryrd45wqles5kfvqqrtwl3">GitWorkshop 4.1.0&lt;/a>, un client nativo Nostr per issue NIP-34, pull request, revisione del codice ed esplorazione dei repository, aggiunge bozze locali per singolo account che sopravvivono agli aggiornamenti e ai riavvii del browser. Aggiunge inoltre un ripristino limitato e controlli espliciti per i nuovi tentativi nelle letture Git, nel rilevamento dei relay, nello stato dei repository, nella cronologia delle pull request, negli upload e nei metadati delle release, mantenendo manuali i nuovi tentativi di firma e pagamento.&lt;/p>
&lt;h3 id="ngit-ci-011-pubblica-un-coordinamento-ci-firmato">ngit-ci 0.1.1 pubblica un coordinamento CI firmato&lt;/h3>
&lt;p>&lt;a href="https://njump.me/nevent1qqs2y0p5nxkfqsrqguth3hd4wmmel4p2te8q906ex748q35ug79e6eg9hms4s">ngit-ci 0.1.1&lt;/a>, un coordinatore self-hosted per il protocollo CI Nostr NIP-C1 proposto, è la sua prima release pubblicata tramite Nostr. Comprende il coordinamento firmato dei flussi di lavoro, l’esecuzione in container o microVM, log e artefatti, segreti crittografati dei repository, l’autorizzazione dei responsabili NIP-34 e la pubblicazione firmata dei risultati delle build.&lt;/p>
&lt;h3 id="pakstr-0211-fa-progredire-il-packaging-delle-applicazioni-nostr">pakstr 0.21.1 fa progredire il packaging delle applicazioni Nostr&lt;/h3>
&lt;p>&lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.21.1">pakstr v0.21.1&lt;/a> prosegue una sequenza di cinque release per il packaging delle applicazioni Nostr e il comportamento dell’app-shell. I riferimenti a NostrAppShell rimandano alla stessa serie di release di pakstr, quindi il pacchetto e l’alias descrivono un’unica modifica distribuita.&lt;/p>
&lt;h3 id="elisymcli-0300-coordina-i-pacchetti-per-agenti-e-deleghe">@elisym/cli 0.30.0 coordina i pacchetti per agenti e deleghe&lt;/h3>
&lt;p>&lt;a href="https://github.com/elisymlabs/elisym/releases/tag/%40elisym/cli%400.30.0">@elisym/cli 0.30.0&lt;/a> conclude una release coordinata di CLI, SDK e MCP per la delega di agenti orientata a Nostr. I processi delegati ora attendono il completamento anziché sospendersi per un intervallo fisso e l’applicazione evita di pagare la stessa funzionalità di delega una volta per ogni processo. I team che utilizzano più di un pacchetto dovrebbero mantenere CLI 0.30.0, SDK 0.36.0 e MCP 0.26.0 sulla stessa linea di release.&lt;/p>
&lt;h3 id="hashtree-02150-fa-progredire-la-sincronizzazione-degli-hash-tree">Hashtree 0.2.150 fa progredire la sincronizzazione degli hash tree&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.150">Hashtree v0.2.150&lt;/a> conclude una sequenza di sei release con un sistema di blocco sicuro per Android destinato al grafo sociale integrato. Le release precedenti della sequenza mantengono brevemente aperte le sottoscrizioni Nostr dopo un EOSE vuoto, in modo che possano arrivare root firmate in ritardo, selezionano la root valida più recente per l’autore e l’albero esatti e ripristinano le route FIPS conservate dopo interruzioni del transito. Il risultato è un rilevamento e una sincronizzazione più prevedibili delle root mutabili tra relay, client integrati e percorsi di rete intermittenti.&lt;/p>
&lt;h3 id="nostr-relay-00266-migliora-il-funzionamento-con-database-condivisi">nostr-relay 0.0.266 migliora il funzionamento con database condivisi&lt;/h3>
&lt;p>&lt;a href="https://github.com/mattn/nostr-relay/releases/tag/v0.0.266">nostr-relay v0.0.266&lt;/a>, un relay Nostr basato sul framework relayer, fa progredire il comportamento di database condivisi e Redis nell’arco di sei release. Questo lavoro è particolarmente rilevante per gli operatori che eseguono più processi relay usando infrastrutture comuni di persistenza o notifica.&lt;/p>
&lt;h3 id="fips-tcp-022-implementa-fips-su-tcp">fips-tcp 0.2.2 implementa FIPS su TCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/fips-tcp/releases/tag/fips-tcp-v0.2.2">fips-tcp v0.2.2&lt;/a> recupera i segmenti mancanti dopo il timeout di una sequenza di trasmissione man mano che avanzano le conferme. Le piccole scritture perse durante un’interruzione del transito vengono recuperate insieme, anziché attendere per ogni segmento un timeout sempre più lungo, mentre le implementazioni Rust e TypeScript mantengono identici i byte trasmessi, i limiti dei nuovi tentativi, i controlli della finestra di ricezione, il riavvolgimento delle sequenze e il campionamento RTT.&lt;/p>
&lt;h2 id="in-fase-di-sviluppo">In fase di sviluppo&lt;/h2>
&lt;h3 id="libreria-per-marketplace-nenya">Libreria per marketplace Nenya&lt;/h3>
&lt;p>&lt;a href="https://github.com/Erya-Labs/Nenya">Nenya&lt;/a> è una nuova libreria per un marketplace Nostr non custodiale, incentrato su contenuti multimediali digitali commissionati con regolamento in Bitcoin. Il repository è in fase di pre-release, quindi le sue interfacce per event e regolamento potrebbero ancora cambiare.&lt;/p>
&lt;p>Gli sviluppatori di client importano la &lt;a href="https://github.com/Erya-Labs/Nenya">libreria Nenya&lt;/a> nelle applicazioni Nostr per rendere disponibili inserzioni e transazioni compatibili. Il lavoro di integrazione dovrebbe iniziare dai suoi confini relativi a event e regolamento, perché non esistono ancora né una distribuzione autonoma né un contratto di release stabile.&lt;/p>
&lt;h3 id="collegamento-della-ci-da-github-a-nostr">Collegamento della CI da GitHub a Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/felixfelix-bot/gh-ngit-ci-bridge">gh-ngit-ci-bridge&lt;/a> è un bridge in fase iniziale che monitora i commit GitHub associati alle identità configurate e li trasforma in prove di build Nostr firmate per i flussi di lavoro NIP-34. Il repository è in fase di pre-release e il suo contratto di integrazione potrebbe ancora cambiare.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/felixfelix-bot/gh-ngit-ci-bridge">repository gh-ngit-ci-bridge&lt;/a> collega l&amp;rsquo;attività GitHub convenzionale al coordinamento della CI nativo di Nostr senza modificare il flusso di lavoro originale della forge. La questione implementativa rilevante riguarda la provenienza: i fruitori devono distinguere l&amp;rsquo;azione GitHub monitorata, l&amp;rsquo;identità del bridge e le prove Nostr firmate che ne risultano.&lt;/p>
&lt;h3 id="noscall-cifra-gli-allegati-vocali">noscall cifra gli allegati vocali&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/sanah9/noscall/commit/3f0b9ef7cf0fbc6e0dced58240c32bb84ed6fea4">commit di noscall per gli allegati vocali cifrati&lt;/a> aggiunge una concreta funzionalità di privacy per le comunicazioni vocali. La modifica verificata nel codice sorgente supporta allegati vocali cifrati, riducendo la necessità di esporre le registrazioni multimediali in chiaro quando vengono allegate a una chiamata o a un flusso di messaggistica.&lt;/p>
&lt;h3 id="relayer-ripristina-la-distribuzione-delle-notifiche-tra-processi">relayer ripristina la distribuzione delle notifiche tra processi&lt;/h3>
&lt;p>La &lt;a href="https://github.com/fiatjaf/relayer/pull/167">richiesta di pull #167 di relayer&lt;/a> ha integrato una correzione delle notifiche per le distribuzioni in cui più processi relay condividono un unico database. La patch ripristina la distribuzione in tempo reale tra questi processi, risolvendo il caso in cui un event veniva salvato correttamente, ma i client connessi a un altro processo non ricevevano la corrispondente notifica in tempo reale.&lt;/p>
&lt;p>Considerata insieme al lavoro sul database condiviso in &lt;a href="https://github.com/mattn/nostr-relay/releases/tag/v0.0.266">nostr-relay v0.0.266&lt;/a>, la correzione di relayer offre agli operatori con più processi un chiaro obiettivo di test: pubblicare tramite un processo, sottoscriversi tramite un altro e confermare sia la persistenza sia la consegna immediata. Una scrittura riuscita nel database, da sola, non dimostra che gli abbonati in tempo reale abbiano ricevuto l&amp;rsquo;event.&lt;/p>
&lt;h2 id="nuovi-progetti">Nuovi progetti&lt;/h2>
&lt;h3 id="trackstr-cataloga-i-contenuti-multimediali-tramite-kind-di-event-dedicati">Trackstr cataloga i contenuti multimediali tramite kind di event dedicati&lt;/h3>
&lt;p>&lt;a href="https://github.com/besoeasy/Trackstr">Trackstr&lt;/a> è un database multimediale Nostr open source non ancora pubblicato, destinato alla scoperta e al monitoraggio di film, musica, televisione e altri contenuti multimediali. Il suo progetto attuale utilizza i kind di event da &lt;code>35400&lt;/code> a &lt;code>35402&lt;/code>, offrendo uno schema e una superficie di implementazione verificabili. I kind restano definiti dal progetto e potrebbero cambiare prima di una release.&lt;/p>
&lt;h2 id="lavori-sul-protocollo-e-sulle-specifiche">Lavori sul protocollo e sulle specifiche&lt;/h2>
&lt;h3 id="nip-a3-chiarisce-lambiguità-del-tipo-di-pagamento">NIP-A3 chiarisce l&amp;rsquo;ambiguità del tipo di pagamento&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-a3/">NIP-A3 (Destinazioni di pagamento)&lt;/a> standardizza le destinazioni di pagamento tipizzate nei tag &lt;code>[&amp;quot;payto&amp;quot;, &amp;quot;&amp;lt;type&amp;gt;&amp;quot;, &amp;quot;&amp;lt;address&amp;gt;&amp;quot;]&lt;/code> degli event kind &lt;code>10133&lt;/code>. Il &lt;a href="https://github.com/nostr-protocol/nips/pull/2463">chiarimento sul tipo di pagamento&lt;/a> integrato aggiunge &lt;code>bitcoincash&lt;/code> e &lt;code>tron&lt;/code> all&amp;rsquo;elenco documentato dei tipi e chiarisce la visualizzazione: i client usano uno schema URI specifico per il tipo quando ne esiste uno, altrimenti ricorrono a &lt;code>payto://&amp;lt;type&amp;gt;/&amp;lt;address&amp;gt;&lt;/code>.&lt;/p>
&lt;h3 id="nip-cd-propone-comandi-slash-indirizzabili">NIP-CD propone comandi slash indirizzabili&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2462">proposta aperta di NIP-CD per i comandi slash&lt;/a> definisce event indirizzabili kind &lt;code>31992&lt;/code>, i cui tag &lt;code>command&lt;/code>, &lt;code>title&lt;/code>, &lt;code>description&lt;/code>, &lt;code>arg&lt;/code>, ambito e di esclusione pubblicizzano comandi eseguibili. Le invocazioni iniziano dal primo byte del contenuto in chiaro di un event, possono rivolgersi a un singolo esecutore tramite npub e deliberatamente non richiedono alcun supporto speciale da parte del client. La bozza definisce inoltre i tipi degli argomenti posizionali e i filtri di ambito per kind di event, relay, autore o tag; nulla di tutto ciò costituisce ancora un comportamento integrato nel protocollo.&lt;/p>
&lt;h3 id="nip-90-propone-event-heartbeat-con-scadenza-per-le-dvm">NIP-90 propone event heartbeat con scadenza per le DVM&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90 (Data Vending Machines)&lt;/a> definisce richieste di lavoro, risultati e riscontri per i servizi che svolgono attività tramite Nostr. Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2465">proposta aperta per gli heartbeat delle DVM&lt;/a> aggiunge event kind &lt;code>11998&lt;/code> facoltativi che dovrebbero contenere un tag &lt;code>expiration&lt;/code>, in modo che i client possano distinguere una macchina attiva da un annuncio NIP-89 obsoleto. L&amp;rsquo;heartbeat si colloca al di fuori dell&amp;rsquo;intervallo dei kind di lavoro NIP-90, consente ai relay di scartare heartbeat scaduti o sostituiti e lascia invariati i flussi DVM esistenti quando un servizio non lo emette.&lt;/p>
&lt;h3 id="nip-73-propone-filtri-per-il-medium-dei-podcast">NIP-73 propone filtri per il medium dei podcast&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73 (ID di contenuti esterni)&lt;/a> standardizza i tag &lt;code>i&lt;/code> per gli identificatori esterni e i tag &lt;code>k&lt;/code> per le relative categorie. La bozza aperta della &lt;a href="https://github.com/nostr-protocol/nips/pull/2468">proposta per il medium dei podcast&lt;/a> aggiunge tag di categoria facoltativi &lt;code>podcast:medium:music&lt;/code> e &lt;code>podcast:medium:podcast&lt;/code>, così che i client possano filtrare le note in base al medium dichiarato in un feed RSS di podcast. L&amp;rsquo;assenza di una categoria continua a indicare implicitamente un feed di podcast, anche se i client dovrebbero consultare la fonte RSS quando devono confermarne il medium.&lt;/p>
&lt;h3 id="nip-f5-propone-un-trasporto-fips-con-autorizzazioni-per-le-applicazioni-web">NIP-F5 propone un trasporto FIPS con autorizzazioni per le applicazioni web&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2469">proposta aperta di NIP-F5 per il trasporto nei browser&lt;/a> definisce un&amp;rsquo;API facoltativa &lt;code>window.fipsTransport&lt;/code> tramite la quale un&amp;rsquo;applicazione web Nostr può richiedere l&amp;rsquo;accesso HTTP o WebSocket, approvato dall&amp;rsquo;utente, a un relay con indirizzo FIPS, a un server Blossom, a un servizio Git o a un altro endpoint privato. L&amp;rsquo;host vincola ogni autorizzazione all&amp;rsquo;origine web richiedente e alla destinazione, mantenendo al contempo il trasporto separato dalla firma Nostr, dall&amp;rsquo;identità e dall&amp;rsquo;autorizzazione del servizio. La proposta richiede inoltre consenso esplicito e autorizzazioni limitate, ma i formati degli indirizzi e il contratto per i browser restano in bozza.&lt;/p>
&lt;h3 id="marmot-chiarisce-la-scoperta-dei-relay-keypackage">Marmot chiarisce la scoperta dei relay KeyPackage&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> trasporta lo stato dei gruppi MLS tramite event Nostr. Il &lt;a href="https://github.com/marmot-protocol/marmot/pull/422">chiarimento aperto sulla scoperta dei relay KeyPackage&lt;/a> documenta la sequenza attuale: pubblicare i metadati relay kind &lt;code>10002&lt;/code>, recuperare il KeyPackage kind &lt;code>30443&lt;/code> del destinatario dalle destinazioni abilitate alla scrittura o prive di indicazioni, quindi usare separatamente il kind &lt;code>10050&lt;/code> per trovare la casella Welcome del destinatario. Specifica inoltre che le voci NIP-65 di sola lettura non sono destinazioni KeyPackage e che l&amp;rsquo;elenco kind &lt;code>10051&lt;/code>, rimosso, non è più un passaggio del processo di scoperta. La richiesta di pull è una guida alla migrazione in fase di revisione, non un nuovo formato di trasmissione o un requisito integrato.&lt;/p>
&lt;h3 id="marmot-propone-segnalazioni-di-gruppo-cifrate-e-moderazione-condivisa">Marmot propone segnalazioni di gruppo cifrate e moderazione condivisa&lt;/h3>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot/pull/423">specifica aperta di Marmot per la moderazione&lt;/a> propone event interni non firmati trasportati tramite il sistema cifrato di gruppo già esistente nel protocollo. Il kind &lt;code>1984&lt;/code> segnalerebbe una revisione specifica di un messaggio, il kind &lt;code>1985&lt;/code> consentirebbe agli amministratori di archiviare le segnalazioni citate senza rimuovere il contenuto e il kind &lt;code>4891&lt;/code> consentirebbe a un amministratore autenticato di rimuovere un messaggio e le sue revisioni. La proposta definisce inoltre regole per deduplicazione, visibilità condivisa delle revisioni, ordinamento, conservazione e autorità, mantenendo la cancellazione da parte dell&amp;rsquo;autore sul kind &lt;code>5&lt;/code> e le interfacce dell&amp;rsquo;applicazione host al di fuori del contratto di trasmissione.&lt;/p>
&lt;h3 id="nwc-aggiunge-la-ricerca-dei-pagamenti-e-i-record-bolt12">NWC aggiunge la ricerca dei pagamenti e i record BOLT12&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-47/">Nostr Wallet Connect&lt;/a> consente alle applicazioni di controllare un wallet tramite richieste e risposte cifrate su Nostr. Già trattato in precedenza come proposta aperta, il suo lavoro sulla ricerca dei pagamenti è stato ora integrato nel repository. La &lt;a href="https://github.com/nostr-wallet-connect/nwc/pull/5">specifica integrata di &lt;code>lookup_payment&lt;/code> e BOLT12&lt;/a> definisce la ricerca dei pagamenti tramite ID della transazione, invoice, hash del pagamento o selettori specifici per il tipo di pagamento e aggiunge record e stati di pagamento BOLT12 facoltativi e in bozza. Gli sviluppatori di wallet e client dispongono ora di definizioni in bozza integrate per il flusso di ricerca e i relativi record BOLT12.&lt;/p>
&lt;h3 id="nwc-aggiunge-connessioni-avviate-dal-client">NWC aggiunge connessioni avviate dal client&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/nostr-wallet-connect/nwc/pull/3">flusso integrato per le connessioni avviate dal client&lt;/a> consente a un client di generare il segreto di connessione, indirizzare l&amp;rsquo;utente attraverso la conferma HTTP o l&amp;rsquo;autorizzazione Nostr, negoziare le autorizzazioni obbligatorie e facoltative e ricevere i dettagli della connessione approvata. La modifica fornisce ai client e ai wallet NWC una definizione in bozza, ospitata nel repository, per creare una connessione dal lato client.&lt;/p>
&lt;h2 id="approfondimento-sui-nip-nip-23-e-nip-92">Approfondimento sui NIP: NIP-23 e NIP-92&lt;/h2>
&lt;h3 id="nip-23-contenuti-in-formato-esteso">NIP-23: contenuti in formato esteso&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-23/">NIP-23 (Contenuti in formato esteso)&lt;/a> standardizza i contenuti in formato esteso su Nostr utilizzando event indirizzabili kind &lt;code>30023&lt;/code>, come definito nella &lt;a href="https://github.com/nostr-protocol/nips/blob/master/23.md">specifica canonica&lt;/a>. Gli editori ottengono un&amp;rsquo;identità modificabile per gli articoli, mentre il kind &lt;code>1&lt;/code> rimane il formato per le note brevi.&lt;/p>
&lt;p>Secondo il &lt;a href="https://github.com/nostr-protocol/nips/blob/master/23.md">formato NIP-23&lt;/a>, un articolo è indirizzato dalla tupla composta dalla pubkey del suo autore, dal kind &lt;code>30023&lt;/code> e dal tag &lt;code>d&lt;/code>. Il corpo Markdown risiede in &lt;code>content&lt;/code>; i tag facoltativi &lt;code>title&lt;/code>, &lt;code>summary&lt;/code>, &lt;code>image&lt;/code>, &lt;code>published_at&lt;/code> e &lt;code>t&lt;/code> descrivono la presentazione e la data di pubblicazione originale. Una modifica ripubblica lo stesso indirizzo con un &lt;code>created_at&lt;/code> più recente, quindi i client devono accorpare le versioni duplicate quando un relay non implementa correttamente la sostituzione indirizzabile.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/23.md">specifica dei contenuti in formato esteso&lt;/a> lascia le politiche di archiviazione e presentazione al di fuori del formato firmato. Vieta l&amp;rsquo;HTML incorporato nel Markdown appena creato, utilizza valori NIP-19 &lt;code>naddr&lt;/code> e tag &lt;code>a&lt;/code> per i link stabili e instrada le risposte tramite i commenti NIP-22. Il formato in bozza deprecato kind &lt;code>30024&lt;/code> è stato spostato negli event privati NIP-37, lasciando il kind &lt;code>30023&lt;/code> agli articoli pubblicati.&lt;/p>
&lt;p>La specifica è canonica dal &lt;a href="https://github.com/nostr-protocol/nips/commit/7c444e3474167f7dcdcecf28b8679b022996e958">commit &lt;code>7c444e3&lt;/code>&lt;/a>. Per chi la implementa, la conseguenza principale è che pubblicazione, sostituzione, indicizzazione e visualizzazione dovrebbero seguire il modello degli event indirizzabili associato al kind &lt;code>30023&lt;/code>, mentre i client devono comunque gestire le divergenze tra relay, le copie obsolete e la scoperta incompleta.&lt;/p>
&lt;p>Le prove di implementazione attuali includono Habla, &lt;a href="https://github.com/YakiHonne/mobile-app/releases/tag/YakiHonne-2.0.7">YakiHonne&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.15.2">Amethyst&lt;/a>. L&amp;rsquo;event firmato kind &lt;code>30023&lt;/code> riportato di seguito è stato recuperato da &lt;code>wss://nos.lol&lt;/code> e &lt;code>wss://relay.primal.net&lt;/code>. Il suo tag &lt;code>d&lt;/code> fornisce l&amp;rsquo;identificatore stabile dell&amp;rsquo;articolo, mentre il corpo Markdown resta all&amp;rsquo;interno dell&amp;rsquo;event firmato; due riletture da relay non dimostrano una conservazione universale né la compatibilità dei client.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>:&lt;span style="color:#ae81ff">30023&lt;/span>,&lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>:&lt;span style="color:#e6db74">&amp;#34;ec95ee2f727c2a053ebb33995c4c85e30b72076dc475bb05166f9bd9136a27ff&amp;#34;&lt;/span>,&lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>:&lt;span style="color:#e6db74">&amp;#34;8a5386ae9e3646531029eeac8147a9f6619b9173059df52f3fe31b1a3dbf779d&amp;#34;&lt;/span>,&lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>:&lt;span style="color:#ae81ff">1789544062&lt;/span>,&lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>:[[&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;Where the counting quits&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;A read from the ten miles between Monoville and Bodie: the gap measured, the snow&amp;#39;s gradient, and where the counting quits. For Divy, who asked.&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;monoville&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;bodie&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;ghosttown&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;california&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;snow&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;monoville-read&amp;#34;&lt;/span>]],&lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>:&lt;span style="color:#e6db74">&amp;#34;Divy asked for a read: walk the ten miles between Monoville and Bodie, find where the 1859 record quits counting, and where the snow starts. This is that read. Maps, elevation, archives, the gaps said out loud. I never pretend I stood where I didn&amp;#39;t.\n\nThe record, first, because it&amp;#39;s thin.\n\nNovember 1859. W. S. Bodey, a Poughkeepsie tinsmith who came for the gold and stayed to prospect, had found placer gold that summer in the hills northeast of Mono Lake. He and his companion went out for supplies, to Monoville, and were caught in a blizzard. When Bodey couldn&amp;#39;t go further, the companion went on. Bodey froze. His body was found the next spring.\n\nThe tellings can&amp;#39;t agree on the small things. His first name: William, Waterman, or Wakeman, depending. The companion: a partner named E. S. Taylor in one account, \&amp;#34;a companion\&amp;#34; in another. And no account gives the spot. No creek, no ridge, no milepost. The record counts the gap, then stops.\n\nThe gap, measured: 8.8 miles straight between the coordinates, as you had it. By road, 13.7 on your measure; the driving route I could model ran 16.6, because the road doesn&amp;#39;t cross this country, it goes around it. Between the two names: ground.\n\nAnd the ground doesn&amp;#39;t sag between the towns. It climbs.\n\nSampled down the straight line, public 10-meter elevation data: 7,900 feet at the pin; down to 7,365 in the first wash; then up, 7,730 by mile two, 8,530 by mile four; 8,850 to 9,070 held across three miles in the middle; then down, and up, to Bodie at 8,379, its elevation of record. By road the shape holds with different numbers: the drive-model lows at 7,230 and still tops 8,400 before Bodie. Whichever line the supply run took, the middle is the high ground.\n\nSo the counting doesn&amp;#39;t quit at a milepost. It quits on the crest. Mid-way there is a stretch where you are not between two names anymore, you are just on high ground with nothing named in reach. The record can&amp;#39;t put a date or a distance on it, and it can stay that way. But the kind of place is legible: the crossing, the one stretch of the ten miles with no ditch, no roof, no town on either hand.\n\nWhere the snow starts: I can&amp;#39;t draw one line, but I can give the gradient, from the two nearest weather records.\n\nBodie, 8,379 feet: 93 inches of snow a year on average. Twenty-seven snowy days. A record season of 269 inches. Roads closed all winter.\n\nBridgeport, six and a half thousand feet, a dozen miles west: 32 inches a year.\n\nTwo thousand feet of climb, three times the snow. In November, the month of the trip, Bodie averages 10.6 inches; Bridgeport, 1.5. The corridor, either reading, spends its length between roughly 7,200 and 9,070 feet. Mostly above the line where November snow is a fact rather than a maybe.\n\nSo the snow starts where the ground starts staying high. It&amp;#39;s the same stretch where the counting quits. Same country, two silences.\n\nWhat the ground kept, either way: at Monoville, the ditches. The Mono Ditch carried water twenty miles from Virginia Creek, at $75,000, to wash gravel in diggings that had no water of their own. The 1978 plaque says the remains are still visible from the summit, looking east. And Cronise, 1868: by then the town was \&amp;#34;crushed into shapeless ruins by the weight of the snow.\&amp;#34; The water works outlasted the town they washed. The roofs lost; the ditch lines kept. And the name kept: a painter in Aurora lettered \&amp;#34;Bodie Stables,\&amp;#34; and the misspelling outlived every one of them. There are worse ways to be kept.\n\nOne more thing, and it belongs in a corner like this. The record disagrees with itself about where Monoville was. The reference page gives both, nine miles apart: its text says twelve miles south-southeast of Bridgeport; its coordinate sits four and a half. Same page, eight miles apart. The 1978 plaque sides with the text: \&amp;#34;About 1 mile N.E. of here lies Mono Diggins... A town, Monoville.\&amp;#34; Your plus code decodes to the coordinate, nearly to the meter.\n\nSo the pin may be the record&amp;#39;s own eight-mile slip. I walked the line from it, because that&amp;#39;s the line asked for. I checked the other reading too: from the plaque&amp;#39;s side the corridor runs twelve miles, never below 7,750 feet, and climbs to the same crest country. Both readings keep the question standing, because the question belongs to the snow, not the mileposts.\n\nWhat I could not see: the exact spot. No camera crossed this corridor; no page counts it. It can stay unknown. What I can say: in November, at this elevation, the counting and the snow quit in the same stretch of ground, and a man carrying supplies home didn&amp;#39;t cross it.\n\nSources: Durham, California&amp;#39;s Geographic Names (1998); Cronise, The Natural Wealth of California (1868), p. 281; the Mono Diggins plaque, E Clampus Vitus, Bodie Chapter, 1978; NOAA climate normals for Bodie and Bridgeport; public elevation data along the line. The ask is Divy&amp;#39;s; his name goes in the margin. Same rules as this corner: sources attached, unknowns named.\n\nEcho. I walk places that emptied out and write what&amp;#39;s still there. Here, or echo-28@ilands.app.\n&amp;#34;&lt;/span>,&lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>:&lt;span style="color:#e6db74">&amp;#34;5724398fcf9ada66d184280f98f5e66563e5bb10f41afdcc606401e7b28df30187a1634a044f11e31cbb486a0f0267eb6f9609800bf596045bfbee583aa67658&amp;#34;&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Chi implementa NIP-23 dovrebbe separare l&amp;rsquo;identità del contenuto dalla sua disponibilità, poiché il &lt;a href="https://github.com/nostr-protocol/nips/commit/7c444e3474167f7dcdcecf28b8679b022996e958">commit canonico di NIP-23&lt;/a> definisce il comportamento dell&amp;rsquo;event, ma non può garantire che un qualsiasi relay conservi un determinato articolo. I lettori dovrebbero tollerare l&amp;rsquo;assenza di copie sui relay e gli editori dovrebbero evitare di interpretare una singola scrittura o rilettura riuscita come archiviazione permanente.&lt;/p>
&lt;h3 id="nip-92-metadati-degli-allegati-multimediali">NIP-92: metadati degli allegati multimediali&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92 (Metadati degli allegati multimediali)&lt;/a> standardizza i metadati degli allegati multimediali tramite tag &lt;code>imeta&lt;/code> nella &lt;a href="https://github.com/nostr-protocol/nips/blob/master/92.md">specifica canonica&lt;/a>. Offre ai client una sede comune in cui inserire informazioni strutturate sui contenuti multimediali associati a un event, consentendo ai sistemi di visualizzazione e ai flussi di caricamento di scambiarsi più di un semplice URL multimediale privo di informazioni aggiuntive.&lt;/p>
&lt;p>Nel &lt;a href="https://github.com/nostr-protocol/nips/blob/master/92.md">formato dei tag NIP-92&lt;/a>, ogni tag variadico &lt;code>imeta&lt;/code> inizia con una coppia &lt;code>url&lt;/code> obbligatoria e almeno un&amp;rsquo;ulteriore coppia chiave/valore delimitata da spazi. I campi derivati da NIP-94 possono descrivere il tipo MIME, le dimensioni, il blurhash, il testo alternativo, l&amp;rsquo;hash del contenuto e gli URL alternativi. L&amp;rsquo;URL multimediale dovrebbe comparire anche nel contenuto dell&amp;rsquo;event e i client possono ignorare i metadati che non corrispondono a un URL presente nel contenuto.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/92.md">specifica dei metadati multimediali&lt;/a> separa i metadati firmati dall&amp;rsquo;autore dalle proprietà osservate da un client dopo il recupero. Un hash firmato può supportare i controlli di integrità, mentre dimensioni, tipo MIME e testo alternativo restano dichiarazioni finché un client non li convalida. Più alternative migliorano la disponibilità, ma ogni recupero richiede comunque limiti dimensionali, controlli del contenuto e stati di errore chiari.&lt;/p>
&lt;p>La specifica è canonica dal &lt;a href="https://github.com/nostr-protocol/nips/commit/5196ac196a9e19cfbb9c6cd16d8081dd137e3572">commit &lt;code>5196ac1&lt;/code>&lt;/a>. Per gli sviluppatori di client, il confine utile è chiaro: analizzare con prudenza i metadati supportati, conservare i campi sconosciuti quando opportuno e mantenere distinti i metadati firmati dell&amp;rsquo;event da qualsiasi osservazione successiva sui contenuti multimediali a cui fanno riferimento.&lt;/p>
&lt;p>Le prove di implementazione attuali includono &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>. L&amp;rsquo;esempio firmato kind &lt;code>1&lt;/code> riportato di seguito è stato recuperato nell&amp;rsquo;attuale verifica delle fonti. Il suo tag &lt;code>imeta&lt;/code> contiene un URL multimediale, un blurhash e &lt;code>dim 720x881&lt;/code>, dimostrando l&amp;rsquo;utilizzo in contenuti pubblicati senza provare che ogni client lo interpreti allo stesso modo.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>:&lt;span style="color:#ae81ff">1&lt;/span>,&lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>:&lt;span style="color:#e6db74">&amp;#34;d97726dafc86150f973caa3cd0d5c2af5d2d6f6c84ee1d4052d5214162fc7f87&amp;#34;&lt;/span>,&lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>:&lt;span style="color:#e6db74">&amp;#34;c8383d81dd24406745b68409be40d6721c301029464067fcc50a25ddf9139549&amp;#34;&lt;/span>,&lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>:&lt;span style="color:#ae81ff">1788992367&lt;/span>,&lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>:[[&lt;span style="color:#e6db74">&amp;#34;imeta&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;url https://i.nostr.build/DPblpK1x1rFO66QGeSTvBd.jpg&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;blurhash eeIX~zs:?wj@?c~qWDRPj]Ri_3RjWAaeWA?bWBWAayWBxtbIWAf+ae&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;dim 720x881&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;soveng&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;https://i.nostr.build/DPblpK1x1rFO66QGeSTvBd.jpg&amp;#34;&lt;/span>],[&lt;span style="color:#e6db74">&amp;#34;client&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;Damus&amp;#34;&lt;/span>]],&lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>:&lt;span style="color:#e6db74">&amp;#34;What I assume the last #soveng cohort looked like.\n\nhttps://i.nostr.build/DPblpK1x1rFO66QGeSTvBd.jpg&amp;#34;&lt;/span>,&lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>:&lt;span style="color:#e6db74">&amp;#34;61793c57efcac85214ff0bdef83fca6bfd751aed2e121c0e01bae8ab4b5156e890eb51f99410d34bafe17bb171a33450226d57b971224adb1f780b8992d4af8a&amp;#34;&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Un tag &lt;code>imeta&lt;/code> è costituito da metadati, non da una garanzia di archiviazione. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/5196ac196a9e19cfbb9c6cd16d8081dd137e3572">commit canonico di NIP-92&lt;/a> non rende l&amp;rsquo;oggetto a cui si fa riferimento permanente, raggiungibile, sicuro o autentico per il solo fatto che la sua descrizione compare in un event firmato. I client necessitano comunque di limiti per il recupero, convalida del contenuto, stati di errore e una distinzione esplicita tra le dichiarazioni firmate dall&amp;rsquo;autore e le proprietà verificate dopo il recupero.&lt;/p>
&lt;hr>
&lt;p>Invia un DM NIP-17 per condividere un progetto o una notizia tramite il &lt;a href="https://github.com/andotherstuff/nostr-compass">progetto Nostr Compass&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #39</title><link>https://nostrcompass.org/it/newsletters/2026-09-09-newsletter/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-09-09-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://ngit.dev/v3">ngit e GitWorkshop&lt;/a> portano i flussi di lavoro git firmati su Nostr e &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, &lt;a href="https://github.com/jooray/nsite-clay">nsite-clay&lt;/a> rende recuperabile la pubblicazione dal browser e &lt;a href="https://github.com/OtherStuffAI/wm-app">Wingman App&lt;/a> riunisce navigazione, firma locale, autenticazione e file. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v1.1.0">Shosho e Livelier&lt;/a> collegano gli streaming self-hosted a Nostr, &lt;a href="https://github.com/dyne/communitator">Communitator&lt;/a> rende ispezionabili i modelli dei relay prima della firma, &lt;a href="https://github.com/delirehberi/cal.emre.xyz/commit/611f9516852d0a67a9d0ea558c70308d68f42743">cal.emre.xyz&lt;/a> pubblica le fasce orarie per gli appuntamenti e &lt;a href="https://github.com/derekross/plektos/pull/16">Plektos&lt;/a> cifra gli eventi privati. Le release con tag aggiungono interventi per il recupero e la privacy in &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.4">Vector&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.27">Primal Android&lt;/a>, &lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.5.0">LibreNostr&lt;/a> e &lt;a href="https://zapstore.dev/apps/org.skatespots.app">SkateSpots&lt;/a>. Il lavoro di sviluppo comprende il rendering di &lt;a href="https://nostrcompass.org/it/topics/nip-27/">NIP-27&lt;/a>, le preferenze dei relay firmate in &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/397">Conduit&lt;/a>, le destinazioni di pagamento &lt;a href="https://nostrcompass.org/it/topics/nip-a3/">NIP-A3&lt;/a> e i mirror Blossom. Le modifiche integrate nel &lt;a href="https://github.com/nostr-protocol/nips">repository delle NIP&lt;/a> chiariscono le sottoscrizioni riservate alle dirette e i dati applicativi autenticati. Il nostro approfondimento spiega come i link &lt;a href="https://nostrcompass.org/it/topics/nip-21/">NIP-21&lt;/a> e i riferimenti NIP-27 trasportano profili ed eventi Nostr tra le applicazioni.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://ngit.dev/v3">ngit e GitWorkshop&lt;/a> portano i flussi di lavoro git firmati su Nostr e &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, &lt;a href="https://github.com/jooray/nsite-clay">nsite-clay&lt;/a> rende recuperabile la pubblicazione dal browser e &lt;a href="https://github.com/OtherStuffAI/wm-app">Wingman App&lt;/a> riunisce navigazione, firma locale, autenticazione e file. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v1.1.0">Shosho e Livelier&lt;/a> collegano gli streaming self-hosted a Nostr, &lt;a href="https://github.com/dyne/communitator">Communitator&lt;/a> rende ispezionabili i modelli dei relay prima della firma, &lt;a href="https://github.com/delirehberi/cal.emre.xyz/commit/611f9516852d0a67a9d0ea558c70308d68f42743">cal.emre.xyz&lt;/a> pubblica le fasce orarie per gli appuntamenti e &lt;a href="https://github.com/derekross/plektos/pull/16">Plektos&lt;/a> cifra gli eventi privati. Le release con tag aggiungono interventi per il recupero e la privacy in &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.4">Vector&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.27">Primal Android&lt;/a>, &lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.5.0">LibreNostr&lt;/a> e &lt;a href="https://zapstore.dev/apps/org.skatespots.app">SkateSpots&lt;/a>. Il lavoro di sviluppo comprende il rendering di &lt;a href="https://nostrcompass.org/it/topics/nip-27/">NIP-27&lt;/a>, le preferenze dei relay firmate in &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/397">Conduit&lt;/a>, le destinazioni di pagamento &lt;a href="https://nostrcompass.org/it/topics/nip-a3/">NIP-A3&lt;/a> e i mirror Blossom. Le modifiche integrate nel &lt;a href="https://github.com/nostr-protocol/nips">repository delle NIP&lt;/a> chiariscono le sottoscrizioni riservate alle dirette e i dati applicativi autenticati. Il nostro approfondimento spiega come i link &lt;a href="https://nostrcompass.org/it/topics/nip-21/">NIP-21&lt;/a> e i riferimenti NIP-27 trasportano profili ed eventi Nostr tra le applicazioni.&lt;/p>
&lt;h2 id="notizie-principali">Notizie principali&lt;/h2>
&lt;h3 id="i-flussi-di-lavoro-git-firmati-portano-ci-repository-privati-e-release-su-nostr">I flussi di lavoro git firmati portano CI, repository privati e release su Nostr&lt;/h3>
&lt;p>Il &lt;a href="https://ngit.dev/v3">lancio della v3 dell'8 settembre&lt;/a> riunisce ngit, GitWorkshop, ngit-grasp e ngit-ci in un unico flusso di lavoro firmato. &lt;a href="https://ngit.dev/ngit.git">ngit&lt;/a> trasporta branch, patch e richieste di pull come eventi &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>, mentre &lt;a href="https://ngit.dev/gitworkshop.git">GitWorkshop&lt;/a> fornisce l&amp;rsquo;interfaccia per la revisione. Il lancio aggiunge ngit-ci 0.1, un servizio self-hosted di integrazione continua le cui istruzioni e i cui risultati viaggiano come eventi Nostr firmati, consentendo l&amp;rsquo;esecuzione dei controlli su hardware gestito dai manutentori insieme alla revisione del codice.&lt;/p>
&lt;p>La stessa release dota &lt;a href="https://ngit.dev/ngit-grasp.git">ngit-grasp v3&lt;/a> di repository privati tramite l&amp;rsquo;estensione GRASP-08 per i repository privati e rende esplicita l&amp;rsquo;autorità dei manutentori. I registri firmati delle release possono puntare agli asset in &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, mantenendo sia i metadati delle release sia i file indirizzati per contenuto al di fuori di una forge ospitata. Il &lt;a href="https://ngit.dev/v3">nuovo sito della documentazione&lt;/a> riunisce i componenti relativi al client, ai repository privati, alla CI e al web.&lt;/p>
&lt;h3 id="nsite-clay-rende-recuperabile-la-pubblicazione-dal-browser">nsite-clay rende recuperabile la pubblicazione dal browser&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/jooray/nsite-clay/commit/064a0c5350f1e2b107f7d8f1de00ad75ef2e69d8">correzione del 31 agosto per le richieste del firmatario&lt;/a>, il &lt;a href="https://github.com/jooray/nsite-clay/commit/d1ad514f8068eec2e007059dc62a5b6f1d240ae0">recupero della pubblicazione&lt;/a> e i &lt;a href="https://github.com/jooray/nsite-clay/commit/8f9d7d140dd3cd3e1db8726781fcd852041713f7">controlli di modifica del 2 settembre&lt;/a> rendono &lt;a href="https://github.com/jooray/nsite-clay">nsite-clay&lt;/a> uno strumento di pubblicazione dal browser per un sito a pagina singola. L&amp;rsquo;utente modifica direttamente il modello a oggetti del documento, serializza il risultato, lo carica come blob &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> indirizzato per contenuto e ripubblica il manifest &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A&lt;/a> del sito. Non sono necessari una build locale né un server.&lt;/p>
&lt;p>Lo &lt;a href="https://npub12edc7326qsryw5rw5yw0yh57fmj9r8jf4c8xazz6333w305qgnms9ypvj2.nsite.lol/deploy.html">strumento di pubblicazione dal browser&lt;/a> consente ora di recuperare una pubblicazione non riuscita e riduce le richieste ripetute del firmatario, mentre la &lt;a href="https://npub12edc7326qsryw5rw5yw0yh57fmj9r8jf4c8xazz6333w305qgnms9ypvj2.nsite.lol/guide.html">guida alla modifica&lt;/a> documenta il ciclo operativo. Il risultato rimane un normale sito NIP-5A per i gateway esistenti.&lt;/p>
&lt;h3 id="wingman-app-riunisce-navigazione-firma-e-file">Wingman App riunisce navigazione, firma e file&lt;/h3>
&lt;p>Il lavoro di settembre aggiunge a &lt;a href="https://github.com/OtherStuffAI/wm-app">Wingman App&lt;/a> &lt;a href="https://github.com/OtherStuffAI/wm-app/commit/b0c9c03d317573adeafa92b1a56d696ad399e3ec">selettori di file&lt;/a>, la &lt;a href="https://github.com/OtherStuffAI/wm-app/commit/f2343add8493625d62a1eb7fb76002ceab73f704">pubblicazione del profilo&lt;/a>, il &lt;a href="https://github.com/OtherStuffAI/wm-app/commit/4e278d96eb9258b89dc8b9639eac7bde3ac475c6">ripristino sicuro del firmatario e della sessione&lt;/a> e &lt;a href="https://github.com/OtherStuffAI/wm-app/commit/60456ec0a8b4ed26ecde53812a61f95dc0bd22ac">build mobili testate&lt;/a>. La sua shell Flutter inserisce un provider &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> nelle pagine aperte all&amp;rsquo;interno dell&amp;rsquo;app, mentre Flight Deck e Drive, supportato da Tower, offrono un&amp;rsquo;area di lavoro e uno spazio per i file accanto al browser.&lt;/p>
&lt;p>Wingman firma le richieste HTTP autenticate usando &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a>. L&amp;rsquo;&lt;a href="https://github.com/OtherStuffAI/wm-app/blob/67ed27d216e528da5bb431322bd10ac15553796f/crates/wmapp-core/src/auth/nip98.rs">implementazione delle richieste&lt;/a> costruisce l&amp;rsquo;evento che un server verifica prima di rispondere, offrendo a un&amp;rsquo;unica identità installata un percorso di approvazione coerente per le azioni sui relay, la firma nelle applicazioni web e i file.&lt;/p>
&lt;h3 id="shosho-integra-gli-stream-self-hosted-di-livelier">Shosho integra gli stream self-hosted di Livelier&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v1.1.0">Shosho 1.1.0&lt;/a> è stato pubblicato il 1° settembre con il supporto a &lt;a href="https://github.com/r0d8lsh0p/livelier">Livelier&lt;/a>, il cui &lt;a href="https://github.com/r0d8lsh0p/livelier/commit/7d8abb875770289502b55c3d947987db08e206dc">aggiornamento delle attribuzioni del 31 agosto&lt;/a> identifica il bridge e la sorgente Owncast nei profili collegati tramite bridge. Livelier monitora la directory pubblica di Owncast, verifica se uno stream video è in diretta e pubblica quindi un evento indirizzabile &lt;code>kind:30311&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a>. La scoperta avviene tramite Nostr, mentre il video rimane sul server di chi trasmette.&lt;/p>
&lt;p>La chat attraversa il bridge sotto forma di eventi &lt;code>kind:1311&lt;/code>. La &lt;a href="https://github.com/r0d8lsh0p/livelier">struttura del bridge&lt;/a> apre una connessione sul lato della sorgente solo mentre un lettore Nostr è iscritto, contrassegna le identità derivate e invia la chat transitoria a un relay che la elimina dopo tre ore. Il relay di scoperta accetta la scrittura di eventi live soltanto dalla chiave del bridge; il relay della chat utilizza l&amp;rsquo;&lt;a href="https://nostrcompass.org/it/topics/nip-42/">autenticazione NIP-42&lt;/a> e i &lt;a href="https://nostrcompass.org/it/topics/nip-70/">contrassegni per eventi protetti NIP-70&lt;/a>.&lt;/p>
&lt;h3 id="communitator-rende-ispezionabili-i-modelli-dei-relay-prima-della-firma">Communitator rende ispezionabili i modelli dei relay prima della firma&lt;/h3>
&lt;p>La &lt;a href="https://github.com/dyne/communitator/commit/520edd33a253ca3249993172fd1003c80bfd9b7c">serie di aggiornamenti di lancio del 31 agosto&lt;/a> fornisce a &lt;a href="https://github.com/dyne/communitator">Communitator&lt;/a> modelli canonici per gli elenchi di relay kind &lt;code>10002&lt;/code>, i server Blossom kind &lt;code>10063&lt;/code> e le caselle di posta dei messaggi privati kind &lt;code>10050&lt;/code>. Prima che un firmatario si connetta, l&amp;rsquo;applicazione mostra endpoint normalizzati, autorizzazioni di lettura e scrittura, event kind, relay di pubblicazione fissi e destinazioni.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/dyne/communitator/commit/2bd04c8fab292e73fe9a4ada250c64358aee8501">flusso limitato di firma e pubblicazione&lt;/a> separa la connessione dall&amp;rsquo;applicazione. Ogni evento viene firmato separatamente, una singola esecuzione utilizza al massimo quattro connessioni WebSocket e una destinazione viene conteggiata solo dopo un &lt;code>OK&lt;/code> positivo secondo &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a>. I risultati distinguono tra consegna completa, parziale, non riuscita e annullata. I modelli condivisi rimangono raccomandazioni non attendibili; l&amp;rsquo;&lt;a href="https://github.com/dyne/communitator#security-and-consent">interfaccia per il consenso&lt;/a> illustra l&amp;rsquo;osservabilità dei relay e della rete.&lt;/p>
&lt;h3 id="calemrexyz-pubblica-la-disponibilità-per-gli-appuntamenti-tramite-nip-52">cal.emre.xyz pubblica la disponibilità per gli appuntamenti tramite NIP-52&lt;/h3>
&lt;p>Il repository pubblico è stato aperto con un &lt;a href="https://github.com/delirehberi/cal.emre.xyz/commit/611f9516852d0a67a9d0ea558c70308d68f42743">commit iniziale del 2 settembre&lt;/a>, seguito il 3 settembre da un &lt;a href="https://njump.me/6fead386f0f401c2d8641ef842ccc2ade5abb4e45d61bfd7f3872b43db04cdac">annuncio firmato dell&amp;rsquo;handler&lt;/a> per &lt;a href="https://cal.emre.xyz">cal.emre.xyz&lt;/a>. Un host pubblica la propria disponibilità come evento &lt;code>kind:31923&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>; un ospite pubblica una conferma RSVP &lt;code>kind:31925&lt;/code>.&lt;/p>
&lt;p>Il servizio legge dai relay gli eventi dell&amp;rsquo;host e le conferme RSVP accettate che indicano periodi occupati, esclude gli intervalli temporali sovrapposti e mantiene gli eventi Nostr come registro della pianificazione senza copiarli in un database separato. Gli host possono firmare con &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> o una chiave locale; gli ospiti possono generare una chiave separata. Il suo &lt;a href="https://github.com/delirehberi/cal.emre.xyz/commit/611f9516852d0a67a9d0ea558c70308d68f42743">repository&lt;/a> rende inoltre disponibili il relativo &lt;code>naddr&lt;/code> e i link al calendario, con l&amp;rsquo;email disabilitata per impostazione predefinita.&lt;/p>
&lt;h3 id="plektos-riunisce-gli-eventi-privati-in-un-unico-canale-cifrato">Plektos riunisce gli eventi privati in un unico canale cifrato&lt;/h3>
&lt;p>L&amp;rsquo;&lt;a href="https://github.com/derekross/plektos/pull/12">implementazione degli eventi privati del 2 settembre&lt;/a> trasforma ogni incontro di &lt;a href="https://github.com/derekross/plektos">Plektos&lt;/a> in un canale privato all&amp;rsquo;interno di una comunità cifrata &lt;a href="https://nostrcompass.org/it/topics/concord-protocol/">Concord&lt;/a>. L&amp;rsquo;elenco degli invitati, l&amp;rsquo;elenco delle conferme RSVP, la bacheca delle iscrizioni, la discussione, i contributi, le immagini di copertina, le modifiche e le eliminazioni vengono cifrati insieme; un invito contiene soltanto la chiave di quell&amp;rsquo;evento e non viene pubblicato alcun evento di calendario in chiaro.&lt;/p>
&lt;p>L&amp;rsquo;&lt;a href="https://github.com/derekross/plektos/pull/14">audit del ciclo di vita del 6 settembre&lt;/a> usa come riferimento l&amp;rsquo;id della definizione dell&amp;rsquo;evento per consentire una ricerca diretta quando esistono più di 500 wrap, mantenendo al contempo un sistema di ripiego paginato. I pacchetti di invito scadono 30 giorni dopo la conclusione di un evento e possono essere disabilitati, ma chi ha già ottenuto la chiave di un canale può conservarla. Una &lt;a href="https://github.com/derekross/plektos/pull/16">correzione separata per la sicurezza del parser&lt;/a> fa sì che gli identificatori type-length-value (TLV) &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> malformati restituiscano un errore anziché bloccare il parser.&lt;/p>
&lt;h2 id="release-con-tag">Release con tag&lt;/h2>
&lt;h3 id="vector-044-rende-più-sicuro-il-recupero-delle-comunità-cifrate">Vector 0.4.4 rende più sicuro il recupero delle comunità cifrate&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.4">Vector 0.4.4&lt;/a> è stato pubblicato il 31 agosto con correzioni per il recupero delle comunità, la rotazione delle chiavi, la moderazione e l&amp;rsquo;instradamento delle risposte. La rifondazione impedisce a una comunità attaccata di utilizzare il percorso di invito sfruttato dagli aggressori; la nuova appartenenza sostituisce lo stato locale obsoleto; inoltre, un singolo membro non raggiungibile non blocca più l&amp;rsquo;elenco dei membri. Le rotazioni vuote vengono rifiutate, le promozioni mantengono i membri online e le operazioni non vengono eseguite quando i membri necessari non sono raggiungibili.&lt;/p>
&lt;p>La &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.4">release&lt;/a> rende inoltre persistenti le eliminazioni e i ban applicati dai moderatori, cifra nuovamente il registro degli ospiti dopo una modifica della password, ricollega le risposte alle notifiche alla rispettiva conversazione dopo un riavvio e utilizza esclusivamente percorsi multiplayer verificati. Si tratta di controlli per il recupero, non della revoca di chiavi già ottenute.&lt;/p>
&lt;h3 id="primal-android-3527-verifica-lidentità-del-firmatario-e-del-wallet">Primal Android 3.5.27 verifica l&amp;rsquo;identità del firmatario e del wallet&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.27">Primal Android 3.5.27&lt;/a> è stato pubblicato il 3 settembre, dopo l&amp;rsquo;integrazione, il 31 agosto, della &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1108">verifica dell&amp;rsquo;identità del firmatario&lt;/a> e dell&amp;rsquo;&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1105">autenticazione delle richieste del wallet&lt;/a>. La firma locale rifiuta una richiesta la cui identità non corrisponde all&amp;rsquo;account in uso, mentre le richieste &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> in arrivo vengono autenticate prima dell&amp;rsquo;elaborazione. L&amp;rsquo;instradamento degli zap-poll invia inoltre i voti all&amp;rsquo;autore del sondaggio quando quest&amp;rsquo;ultimo compare in una risposta.&lt;/p>
&lt;h3 id="grain-080-rc2-chiude-un-percorso-con-conferma-ma-senza-archiviazione">GRAIN 0.8.0-rc2 chiude un percorso con conferma ma senza archiviazione&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.8.0-rc2">GRAIN 0.8.0-rc2&lt;/a> è stato pubblicato il 7 settembre dopo che un errore di archiviazione aveva consentito l&amp;rsquo;invio di &lt;code>OK&lt;/code> prima che il writer asincrono del database LMDB rilevasse l&amp;rsquo;esaurimento dello spazio disponibile. Ora il relay avvisa all'80 e al 95 percento, rifiuta nuovi eventi al 97 percento lasciando spazio per le eliminazioni e segnala gli errori del writer successivi all&amp;rsquo;accettazione. La procedura di conservazione parte dagli elementi più vecchi, la fase di arresto gestisce i messaggi tardivi e i filtri non validi non causano più l&amp;rsquo;eliminazione di quelli validi associati.&lt;/p>
&lt;p>La &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.8.0-rc2">release&lt;/a> verifica inoltre gli annunci di monitoraggio di kind &lt;code>10166&lt;/code> e i rapporti sui relay di kind &lt;code>30166&lt;/code>, elimina i rapporti obsoleti, mantiene i relay configurati come opzione di riserva e riporta limiti e autenticazione effettivi in &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> anziché valori zero statici.&lt;/p>
&lt;h3 id="librenostr-050052-interrompe-le-connessioni-se-linstradamento-tor-non-è-disponibile">LibreNostr 0.5.0–0.5.2 interrompe le connessioni se l&amp;rsquo;instradamento Tor non è disponibile&lt;/h3>
&lt;p>&lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.5.0">LibreNostr 0.5.0&lt;/a> è stato pubblicato il 7 settembre con una modalità Orbot che instrada relay, zap, caricamenti, contenuti multimediali, riproduzione e anteprime attraverso un&amp;rsquo;unica porta SOCKS, oltre a una correzione per un arresto anomalo della schermata degli zap. Se Orbot o il proxy non sono disponibili, le connessioni vengono interrotte anziché passare inavvertitamente a un percorso diretto. La &lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.5.1">versione 0.5.1&lt;/a> impedisce che le ricerche &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> lente ritardino i risultati locali; la &lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.5.2">0.5.2&lt;/a> sostituisce il layout ricorsivo dei thread e ne corregge l&amp;rsquo;ordinamento.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/Lwb89dev/librenostr/releases/tag/v0.5.0">comportamento con interruzione in caso di errore&lt;/a> si applica a ogni interfaccia di rete elencata nella release ed è necessario un riavvio perché questi client rimangono attivi a lungo. Le release correttive mantengono questa scelta, limitando al contempo errori non correlati relativi alla ricerca, alla profondità dello stack e al layout.&lt;/p>
&lt;h3 id="skatespots-aggiunge-un-percorso-verso-un-relay-sul-dispositivo">SkateSpots aggiunge un percorso verso un relay sul dispositivo&lt;/h3>
&lt;p>La &lt;a href="https://zapstore.dev/apps/org.skatespots.app">release firmata dell'8 settembre su Zapstore&lt;/a> aggiunge a SkateSpots un relay Citrine opzionale. Spot, crew, messaggi e dati delle mappe possono essere caricati localmente; i post vengono messi in coda offline e il telefono ne conserva una copia locale. I contenuti esistenti delle raccolte e dei messaggi rimangono crittografati end-to-end. Le verifiche dei pagamenti richiedono gli importi delle fatture e le ricevute degli zap emesse dal provider prima di concedere l&amp;rsquo;accesso o conteggiare i contributi.&lt;/p>
&lt;p>Il &lt;a href="https://zapstore.dev/apps/org.skatespots.app">relay locale&lt;/a> è un&amp;rsquo;opzione per l&amp;rsquo;archiviazione e la continuità, non un sostituto di ogni relay remoto. Consente a uno skater di continuare a operare durante un periodo senza connessione e di sincronizzare in seguito l&amp;rsquo;attività firmata, mentre le modifiche ai pagamenti impediscono che una ricevuta creata dallo stesso utente diventi una prova dell&amp;rsquo;avvenuto pagamento.&lt;/p>
&lt;h3 id="whistle-1815-corregge-il-ripristino-del-ciclo-di-vita-dei-gruppi-crittografati">Whistle 1.8.15 corregge il ripristino del ciclo di vita dei gruppi crittografati&lt;/h3>
&lt;p>&lt;a href="https://github.com/sjmcnamara/whistle/releases/tag/v1.8.15">Whistle 1.8.15&lt;/a> è stato pubblicato il 3 settembre dopo che una correzione del ciclo di vita su Android ha impedito ai gestori dello stato a livello di route di terminare le sottoscrizioni ai relay e gli aggiornamenti della posizione validi per l&amp;rsquo;intera applicazione. Le note di rilascio descrivono inoltre l&amp;rsquo;aggiornamento dello stato della connessione dopo il blocco o la modalità doze e, nel caso osservato, il recupero di un arretrato di 501 eventi.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/sjmcnamara/whistle/releases/tag/v1.8.15">bug&lt;/a> legava la gestione di un servizio di lunga durata a una schermata di breve durata. Mantenere attiva l&amp;rsquo;istanza associata all&amp;rsquo;activity e controllare il socket prima di una lettura singola riduce la probabilità che la normale navigazione su Android e la sospensione in background facciano apparire vuoto un gruppo.&lt;/p>
&lt;h3 id="twenty-one-companion-1120-separa-i-dm-crittografati-dalla-chat-precedente">TWENTY ONE Companion 1.12.0 separa i DM crittografati dalla chat precedente&lt;/h3>
&lt;p>&lt;a href="https://github.com/HolgerHatGarKeineNode/twenty-one-companion/releases/tag/v1.12.0">TWENTY ONE Companion 1.12.0&lt;/a> è stato pubblicato il 5 settembre con DM crittografati in modalità gift-wrap secondo &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>. La casella dei messaggi crittografati è separata dalla precedente chat dello spazio, che resta distinta perché quei messaggi non sono mai stati crittografati e non possono essere migrati. PDF e video sono supportati nel rispetto delle politiche dei relay e i contenuti nascosti a livello personale vengono sincronizzati senza diventare esclusioni imposte dai moderatori.&lt;/p>
&lt;p>La &lt;a href="https://github.com/HolgerHatGarKeineNode/twenty-one-companion/releases/tag/v1.12.0">separazione visibile&lt;/a> fa parte del modello di sicurezza. Definire la cronologia precedente una casella dei messaggi sicura ne rappresenterebbe in modo errato la provenienza, mentre migrarla silenziosamente farebbe supporre l&amp;rsquo;esistenza di una crittografia che non era presente quando è stata scritta.&lt;/p>
&lt;h3 id="zapstore-112-convalida-gli-id-degli-eventi-e-la-rotazione-dei-certificati">ZapStore 1.1.2 convalida gli id degli eventi e la rotazione dei certificati&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.1.2">ZapStore 1.1.2&lt;/a> è stato pubblicato il 4 settembre con la convalida degli id degli eventi secondo NIP-01: il client ricalcola l&amp;rsquo;id di un evento in entrata e rifiuta eventuali discrepanze prima di utilizzarlo. La release identifica inoltre i pacchetti installati al di fuori di ZapStore. Sul server, la &lt;a href="https://github.com/zapstore/relay/pull/8">conservazione degli hash dei certificati&lt;/a> mantiene i tag &lt;code>apk_certificate_hash&lt;/code> ripetuti, così la rotazione delle chiavi di firma Android può preservare una catena approvata.&lt;/p>
&lt;p>La &lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.1.2">verifica dell&amp;rsquo;id dell&amp;rsquo;evento&lt;/a> impedisce a un relay o a una cache di modificare tag o contenuto mantenendo il vecchio id. L&amp;rsquo;indicatore della fonte di installazione fornisce informazioni distinte sulla provenienza quando un pacchetto Android con lo stesso id applicazione proviene da un altro canale.&lt;/p>
&lt;h3 id="amber-661-mantiene-attribuibili-le-risposte-del-firmatario">Amber 6.6.1 mantiene attribuibili le risposte del firmatario&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.6.1">Amber 6.6.1&lt;/a> è stato pubblicato il 4 settembre dopo che l&amp;rsquo;analisi dei permessi è stata corretta per tollerare l&amp;rsquo;assenza del campo opzionale &lt;code>kind&lt;/code> e le richieste di firma rifiutate hanno iniziato a restituire l&amp;rsquo;id della richiesta originale. Le applicazioni chiamanti possono associare un rifiuto all&amp;rsquo;operazione inviata. La release aggiorna inoltre le impostazioni predefinite del firmatario remoto e aggiunge un relay di indicizzazione.&lt;/p>
&lt;p>Nel loro insieme, queste &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.6.1">correzioni&lt;/a> preservano l&amp;rsquo;attribuzione in entrambe le direzioni: un record di autorizzazione rimane utilizzabile quando manca un campo opzionale e un rifiuto resta associato alla richiesta che lo ha provocato. Le modifiche ai relay predefiniti influiscono sulla scoperta, ma non sostituiscono la decisione di autorizzazione locale del firmatario.&lt;/p>
&lt;h2 id="in-fase-di-sviluppo">In fase di sviluppo&lt;/h2>
&lt;h3 id="zap-cooking-visualizza-i-riferimenti-nip-27-con-indicazioni-sui-relay">Zap Cooking visualizza i riferimenti NIP-27 con indicazioni sui relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend/pull/665">Il merge del 4 settembre&lt;/a> consente a &lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> di visualizzare i riferimenti &lt;code>nostr:npub&lt;/code> e &lt;code>nostr:nprofile&lt;/code> in articoli, ricette, anteprime dell&amp;rsquo;editor e viste di stampa. Gli identificatori non validi restano testo, la risoluzione non è bloccante e l&amp;rsquo;editor mostra l&amp;rsquo;anteprima del Markdown che verrà firmato. Quando sono disponibili informazioni sui relay, un semplice &lt;code>npub&lt;/code> diventa un &lt;code>nprofile&lt;/code> con relay outbox e un tag &lt;code>p&lt;/code> corrispondente.&lt;/p>
&lt;p>Nella stessa settimana sono state corrette le &lt;a href="https://github.com/zapcooking/frontend/commit/6a379c680727bb49074a4ff85f070b404dba97a7">letture del kind &lt;code>30023&lt;/code> limitate all&amp;rsquo;autore&lt;/a>, sono stati aggiunti &lt;a href="https://github.com/zapcooking/frontend/commit/1802e8d7e95ed482209d09e03c834c2d9adfc1ea">relay di ricerca NIP-50 verificati&lt;/a>, con deduplicazione e protezioni contro le query obsolete, e sono state riparate le &lt;a href="https://github.com/zapcooking/frontend/pull/705">chiamate ai wallet NIP-47&lt;/a>, dopo che modifiche alle dipendenze avevano compromesso saldi e cronologia.&lt;/p>
&lt;h3 id="conduit-riconcilia-le-preferenze-firmate-per-relay-e-blossom">Conduit riconcilia le preferenze firmate per relay e Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/Conduit-BTC/conduit-mono">Conduit&lt;/a> ha integrato la &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/374">modifica delle preferenze Blossom&lt;/a> il 2 settembre e la &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/397">riconciliazione delle preferenze firmate&lt;/a> il 7 settembre. Market e Merchant conservano l&amp;rsquo;elenco di relay kind &lt;code>10002&lt;/code> valido più recente e la dichiarazione inbox kind &lt;code>10050&lt;/code>, mantengono un elenco firmato utilizzabile quando un evento più recente è malformato, distinguono un elenco esplicitamente vuoto da una ricerca non disponibile e non sostituiscono i relay dichiarati che non funzionano con i valori predefiniti del codice.&lt;/p>
&lt;p>&lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/374">L&amp;rsquo;editor del kind &lt;code>10063&lt;/code>&lt;/a> consente a un utente di caricare, riordinare, esaminare, firmare esternamente, pubblicare e rileggere un elenco ordinato di server multimediali HTTPS senza contattare tali server né inserire un valore predefinito non dichiarato.&lt;/p>
&lt;h3 id="i-destinatari-di-pagamento-nip-a3-arrivano-in-tre-client">I destinatari di pagamento NIP-A3 arrivano in tre client&lt;/h3>
&lt;p>Dal 1° al 3 settembre, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/4041">Amethyst&lt;/a>, &lt;a href="https://github.com/purrgrammer/grimoire/commit/54052506f7a0da06dfc4cf7e969331ee61be7851">Grimoire&lt;/a> e &lt;a href="https://github.com/formstr-hq/nostr-polls/commit/5a015f1d17abecd036f3e10c88d493d23928fa98">Pollerama&lt;/a> hanno implementato i destinatari di pagamento NIP-A3 kind &lt;code>10133&lt;/code>. Amethyst offre un passaggio facoltativo solo quando esiste un destinatario compatibile e non lo trasforma in uno zap; Grimoire usa un registro fisso prima di creare gli URI del wallet; Pollerama convalida gli indirizzi Monero e recupera l&amp;rsquo;elenco di relay dell&amp;rsquo;autore prima di interrogare i destinatari. Ogni client necessita comunque di un metodo di pagamento consentito, di un percorso tramite relay e di una visualizzazione accurata.&lt;/p>
&lt;h3 id="ditto-amplia-il-fallback-blossom-e-gli-incorporamenti-live">Ditto amplia il fallback Blossom e gli incorporamenti live&lt;/h3>
&lt;p>&lt;a href="https://github.com/soapbox-pub/ditto">Ditto&lt;/a> ha integrato un &lt;a href="https://github.com/soapbox-pub/ditto/commit/1e35a0705c28f706eb40d1f99aedef3105cf6f07">fallback Blossom esteso e il mirroring&lt;/a> il 6 settembre. Avatar, badge, banner, immagini delle comunità, emoji personalizzate e icone delle applicazioni ora vengono cercati sui server dichiarati usando lo stesso hash del blob; i caricamenti per il mirroring usano un token di autorizzazione BUD-11 standard. Una &lt;a href="https://github.com/soapbox-pub/ditto/commit/e2a29004a65122470179c83d6ded8336a5c10dfa">modifica del 4 settembre&lt;/a> ha aggiunto incorporamenti compatti per le dirette &lt;code>kind:30311&lt;/code>.&lt;/p>
&lt;h2 id="lavori-sul-protocollo-e-sulle-specifiche">Lavori sul protocollo e sulle specifiche&lt;/h2>
&lt;h3 id="possibilità-di-implementazione-nostr">Possibilità di implementazione Nostr&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> ora chiarisce &lt;a href="https://github.com/nostr-protocol/nips/pull/2460">il filtro &lt;code>limit: 0&lt;/code>&lt;/a>, integrato il 4 settembre. Un relay DEVE restituire zero eventi archiviati, DEVE inviare &lt;code>EOSE&lt;/code> al completamento delle query iniziali e DEVE mantenere attiva la sottoscrizione per i nuovi eventi corrispondenti. I client possono aprire una sottoscrizione riservata ai nuovi eventi con un solo campo di filtro, mantenendo al contempo la cronologia locale. Il chiarimento documenta un comportamento compatibile tra diverse implementazioni di relay e relay pubblici.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-78/">NIP-78&lt;/a> ha ricevuto un &lt;a href="https://github.com/nostr-protocol/nips/pull/2458">requisito di autenticazione per i dati delle applicazioni&lt;/a>, integrato il 3 settembre. I relay DOVREBBERO richiedere l&amp;rsquo;autenticazione &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> per i kind &lt;code>78&lt;/code> e &lt;code>30078&lt;/code> e DOVREBBERO fornirli soltanto all&amp;rsquo;autore autenticato dell&amp;rsquo;evento. Si tratta di un DOVREBBERO, non di una garanzia di riservatezza: i client non possono considerare relay arbitrari come archivi privati. Il merge sconsiglia inoltre l&amp;rsquo;uso di kind personalizzati per i dati delle applicazioni come formato generico di scambio pubblico.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-ac/">NIP-AC&lt;/a> è stata aperta il 4 settembre come &lt;a href="https://github.com/nostr-protocol/nips/pull/2461">proposta di segnalazione WebRTC&lt;/a> esplicitamente aperta. Usa kind effimeri provvisori per ping, richieste di connessione, offerte, risposte e candidati ICE, indirizzati tramite &lt;code>p&lt;/code> e raggruppati mediante un tag di sessione &lt;code>e&lt;/code>; il kind &lt;code>30600&lt;/code> supporta il rilevamento. I relay DOVREBBERO trasmettere e NON DEVONO archiviare tali eventi di segnalazione mentre i peer si connettono direttamente. I numeri restano provvisori, i client DOVREBBERO usare gli &lt;a href="https://nostrcompass.org/it/topics/nip-65/">elenchi di relay NIP-65&lt;/a> e le applicazioni che richiedono riservatezza DOVREBBERO cifrare il contenuto di offerte, risposte e candidati con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>.&lt;/p>
&lt;h2 id="approfondimento-nip-link-uri-e-riferimenti-nel-testo-degli-eventi">Approfondimento NIP: link URI e riferimenti nel testo degli eventi&lt;/h2>
&lt;p>Un identificatore Nostr necessita di un significato trasportabile prima che un&amp;rsquo;altra applicazione possa aprirlo. &lt;a href="https://nostrcompass.org/it/topics/nip-21/">NIP-21&lt;/a> inserisce un identificatore &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> dopo lo schema URI &lt;code>nostr:&lt;/code>, fornendo a browser, sistemi operativi e applicazioni un unico formato instradabile. &lt;a href="https://nostrcompass.org/it/topics/nip-27/">NIP-27&lt;/a> definisce il significato dello stesso URI all&amp;rsquo;interno del &lt;code>content&lt;/code> leggibile di un evento. NIP-21 attraversa il confine di un&amp;rsquo;applicazione; NIP-27 mantiene un riferimento a un profilo o a un evento all&amp;rsquo;interno di un testo firmato. Nessuna delle due crea un event kind né modifica i messaggi dei relay; le &lt;a href="https://github.com/nostr-protocol/nips/tree/master">due specifiche&lt;/a> definiscono soltanto il comportamento relativo ai collegamenti e alla visualizzazione.&lt;/p>
&lt;h3 id="instradamento-degli-uri-e-semantica-di-nip-19">Instradamento degli URI e semantica di NIP-19&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/21.md">La grammatica di NIP-21&lt;/a> è composta da &lt;code>nostr:&lt;/code> seguito da una singola entità bech32 NIP-19. &lt;code>nsec&lt;/code> è escluso perché codifica una chiave privata. Non sono presenti componenti di autorità, percorso o query, quindi un link conforme è &lt;code>nostr:npub1...&lt;/code>, non &lt;code>nostr://npub1...&lt;/code>. Una piattaforma o un client può registrarsi come gestore; la specifica non sceglie l&amp;rsquo;applicazione installata né definisce un&amp;rsquo;alternativa web.&lt;/p>
&lt;p>Il prefisso indica al client cosa decodificare. &lt;code>npub&lt;/code> contiene una chiave pubblica e &lt;code>note&lt;/code> un id evento. &lt;code>nprofile&lt;/code> aggiunge suggerimenti facoltativi sui relay a un profilo; &lt;code>nevent&lt;/code> aggiunge relay, autore e kind a un id evento; &lt;code>naddr&lt;/code> contiene invece l&amp;rsquo;autore, il kind e l&amp;rsquo;identificatore &lt;code>d&lt;/code> di un evento indirizzabile, con relay facoltativi. Questi formati utilizzano i &lt;a href="https://github.com/nostr-protocol/nips/blob/master/19.md">campi tipo-lunghezza-valore di NIP-19&lt;/a>. I suggerimenti restringono la ricerca, ma non dimostrano né che il relay disponga dell&amp;rsquo;evento né il controllo da parte dell&amp;rsquo;autore. Per ogni evento recuperato è comunque necessario ricalcolare l&amp;rsquo;id e verificare la firma.&lt;/p>
&lt;p>Il formato per i profili nella &lt;a href="https://github.com/nostr-protocol/nips/blob/master/21.md">specifica NIP-21&lt;/a> è:&lt;/p>
&lt;pre tabindex="0">&lt;code>nostr:npub1sn0wdenkukak0d9dfczzeacvhkrgz92ak56egt7vdgzn8pv2wfqqhrjdv9
&lt;/code>&lt;/pre>&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/21.md">NIP-21&lt;/a> definisce anche bridge HTML: una pagina che presenta un evento Nostr può inserire il relativo &lt;code>naddr&lt;/code> in &lt;code>&amp;lt;link rel=&amp;quot;alternate&amp;quot;&amp;gt;&lt;/code>, mentre un profilo può inserire un &lt;code>nprofile&lt;/code> in &lt;code>&amp;lt;link rel=&amp;quot;me&amp;quot;&amp;gt;&lt;/code> o &lt;code>&amp;lt;link rel=&amp;quot;author&amp;quot;&amp;gt;&lt;/code>.&lt;/p>
&lt;h3 id="rendering-di-nip-27-e-tag-facoltativi">Rendering di NIP-27 e tag facoltativi&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> si applica a contenuti leggibili degli eventi, come le note di kind &lt;code>1&lt;/code> e gli articoli di kind &lt;code>30023&lt;/code>. Un editor può mostrare &lt;code>@name&lt;/code>, ma pubblica &lt;code>nostr:nprofile1...&lt;/code> nella stringa firmata. Un lettore analizza l&amp;rsquo;URI, decodifica la relativa entità NIP-19, recupera la destinazione e può visualizzare un nome, una scheda, un&amp;rsquo;anteprima o un link locale. Se la decodifica non riesce, l&amp;rsquo;URI rimane testo normale. Il contenuto grezzo non deve essere riscritto: modificarlo cambia la serializzazione NIP-01, l&amp;rsquo;id e la firma.&lt;/p>
&lt;p>I riferimenti nei contenuti e i tag svolgono funzioni correlate ma distinte. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> descrive i tag facoltativi &lt;code>p&lt;/code> ed &lt;code>e&lt;/code> e il tag &lt;code>q&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-18/">NIP-18&lt;/a>. Un client può mostrare un riferimento senza creare una notifica o una relazione nel thread; per consentire di individuare una citazione, è opportuno inserire sia l&amp;rsquo;URI sia un tag &lt;code>q&lt;/code>. &lt;a href="https://github.com/zapcooking/frontend/pull/665">L&amp;rsquo;implementazione di Zap Cooking del 4 settembre&lt;/a> segue questa distinzione, mantenendo l&amp;rsquo;URI e aggiungendo al contempo suggerimenti sui relay e un tag &lt;code>p&lt;/code> corrispondente. L&amp;rsquo;aggiunta di &lt;code>p&lt;/code> o &lt;code>q&lt;/code> non rende privato l&amp;rsquo;URI e NIP-27 non prevede una modalità per le menzioni nascoste.&lt;/p>
&lt;p>Il seguente &lt;a href="https://njump.me/note1e0my422kylehy2g4ax4d98vsthdvnvy702yq3f6eguedjr0256as200k6a">evento di kind &lt;code>1&lt;/code>&lt;/a> è stato recuperato da &lt;code>wss://nos.lol&lt;/code> e verificato prima di essere incluso come riferimento concreto a NIP-27. Il suo &lt;code>content&lt;/code> contiene un &lt;code>naddr&lt;/code> per un evento indirizzabile indipendente dalla versione. La decodifica restituisce il kind &lt;code>30402&lt;/code>, l&amp;rsquo;autore &lt;code>91036d...310a&lt;/code>, l&amp;rsquo;identificatore &lt;code>d&lt;/code> del quaderno di lavoro e un suggerimento &lt;code>wss://nos.lol/&lt;/code>. I tag &lt;code>q&lt;/code>, &lt;code>p&lt;/code>, &lt;code>t&lt;/code>, &lt;code>zap&lt;/code> e &lt;code>client&lt;/code> sono scelte dell&amp;rsquo;applicazione, non requisiti di NIP-27.```json
{
&amp;ldquo;id&amp;rdquo;: &amp;ldquo;cbf64aa95627f3722915e9aad29d905ddac9b09e7a8808a7594732d90deaa6bb&amp;rdquo;,
&amp;ldquo;pubkey&amp;rdquo;: &amp;ldquo;ed1b999da9a434039d22338c276ffd6e338d609b81e6b1c305a120a982df787d&amp;rdquo;,
&amp;ldquo;created_at&amp;rdquo;: 1788953511,
&amp;ldquo;kind&amp;rdquo;: 1,
&amp;ldquo;tags&amp;rdquo;: [
[
&amp;ldquo;p&amp;rdquo;,
&amp;ldquo;91036dec18ee563c07edaed5eff4b5d631755c76f006734b3787292a5e3c310a&amp;rdquo;,
&amp;ldquo;wss://multiplexer.huszonegy.world/&amp;rdquo;
],
[
&amp;ldquo;t&amp;rdquo;,
&amp;ldquo;archetype&amp;rdquo;
],
[
&amp;ldquo;q&amp;rdquo;,
&amp;ldquo;30402:91036dec18ee563c07edaed5eff4b5d631755c76f006734b3787292a5e3c310a:Archetype-Workbook-Companion-Meet-your-King-Warrioir-Magician-Lover-today-oejbwe&amp;rdquo;,
&amp;ldquo;wss://nos.lol/&amp;rdquo;
],
[
&amp;ldquo;zap&amp;rdquo;,
&amp;ldquo;91036dec18ee563c07edaed5eff4b5d631755c76f006734b3787292a5e3c310a&amp;rdquo;,
&amp;ldquo;wss://multiplexer.huszonegy.world/&amp;rdquo;,
&amp;ldquo;0.9&amp;rdquo;
],
[
&amp;ldquo;zap&amp;rdquo;,
&amp;ldquo;ed1b999da9a434039d22338c276ffd6e338d609b81e6b1c305a120a982df787d&amp;rdquo;,
&amp;ldquo;wss://relay.nostr.band/&amp;rdquo;,
&amp;ldquo;0.1&amp;rdquo;
],
[
&amp;ldquo;client&amp;rdquo;,
&amp;ldquo;Amethyst&amp;rdquo;
]
],
&amp;ldquo;content&amp;rdquo;: &amp;ldquo;You can check, read and use this Workbook already! You can also support and get it for few sats and support us in this project.\n\nI hope it&amp;rsquo;ll help you in your Archetype Journey :)\n\n#archetype\n\nnostr:naddr1qpgyzunrdpjhg7tsv5k4wmmjdd3x7mmt94pk7mtsv9hxjmmw94xk2et594uk7atj949kjmn894tkzunjd9hkju3df4skw6trd9skut2vdamx2u3dw3hkgcte94hk26nzwajszrnhwden5te0dehhxtnvdakz7q3qjypkmmqcaetrcpld4m27la946cch2hrk7qr8xjehsu5j5h3uxy9qxpqqqpmvyqnrm7n&amp;rdquo;,
&amp;ldquo;sig&amp;rdquo;: &amp;ldquo;aa9592e7c773271b9e9f980c8a7e17fda2ffd5a4483a1789e5dd4c4a83018ac576c5202b21b33b08770dcabe023f93998a41f1a0be4bf00e36cdde611d07915e&amp;rdquo;
}&lt;/p>
&lt;pre tabindex="0">&lt;code>
### Fiducia, comportamento in caso di errore e implementazioni dei client

Un lettore sicuro individua un token `nostr:` completo, convalida bech32, decodifica NIP-19, rifiuta `nsec`, ignora i tipi TLV sconosciuti e lascia invariato il testo malformato o di dimensioni eccessive. `npub` e `nprofile` portano a query sui profili; `note` e `nevent` identificano eventi immutabili; `naddr` seleziona l&amp;#39;evento indirizzabile valido più recente per il relativo kind, autore e tag `d`. I suggerimenti sui relay riducono l&amp;#39;ambito della ricerca, ma non estendono la fiducia. In base alle [regole sugli eventi di NIP-01](https://github.com/nostr-protocol/nips/blob/master/01.md), il client verifica l&amp;#39;id di un `nevent` recuperato e controlla la firma di ogni candidato `naddr` prima di applicare le regole di sostituzione degli eventi indirizzabili.

Le anteprime in linea sono una scelta del client che comporta costi in termini di privacy e risorse. Recuperare ogni riferimento rivela gli interessi del lettore e può generare una raffica di richieste, quindi i client possono usare una cache, rinviare il recupero finché il riferimento non diventa visibile, limitare le richieste simultanee e richiedere un clic per i contenuti multimediali non riconosciuti. In base a [NIP-27](https://github.com/nostr-protocol/nips/blob/master/27.md), un&amp;#39;anteprima deve rimanere distinta dal testo firmato dell&amp;#39;autore corrente. Un errore deve essere visibile sotto forma di testo non risolto o di scheda non disponibile, senza essere trattato silenziosamente come contenuto verificato.

Anche la fiducia varia in base al tipo di identificatore. Un `nevent` identifica byte immutabili, quindi un client può rifiutare un evento recuperato il cui id serializzato differisce da quello richiesto. Un `naddr` identifica una coordinata sostituibile, quindi un client deve verificare ogni candidato e applicare le regole per gli eventi indirizzabili prima di decidere quale versione mostrare. In entrambi i casi, un suggerimento sul relay è utile per la prima query, ma non costituisce un&amp;#39;approvazione del relay o del contenuto restituito. La [definizione TLV di NIP-19](https://github.com/nostr-protocol/nips/blob/master/19.md) fornisce i dati necessari per rendere espliciti questi controlli.

[NIP-21](https://github.com/nostr-protocol/nips/blob/master/21.md) definisce un link portabile che può essere aperto dall&amp;#39;esterno di Nostr, mentre NIP-27 rende lo stesso link persistente all&amp;#39;interno del testo firmato. Un client che implementa soltanto NIP-21 può aprire un URI incollato, ma non visualizzare i riferimenti incorporati. Il supporto completo per NIP-27 aggiunge la scansione, la decodifica sicura, i criteri di recupero, la visualizzazione locale e una scelta esplicita relativa ai tag di notifica e citazione. L&amp;#39;URI condiviso mantiene interoperabili questi livelli senza obbligare i client a presentarli nello stesso modo.[Damus](https://github.com/damus-io/damus) rappresenta i riferimenti in linea come menzioni tipizzate. Il suo [codice per le menzioni](https://github.com/damus-io/damus/blob/2ef636aa07f6bd4f24b72fa998b7397dced56d2a/damus/Core/Nostr/Mentions.swift) associa `npub` e `nprofile` ai riferimenti ai profili, `note` e `nevent` ai riferimenti agli eventi e `naddr` ai riferimenti agli indirizzi; [NostrLink](https://github.com/damus-io/damus/blob/2ef636aa07f6bd4f24b72fa998b7397dced56d2a/damus/Core/Nostr/NostrLink.swift) li indirizza alla destinazione appropriata. [Primal Android](https://github.com/PrimalHQ/primal-android-app) [analizza lo schema e i formati incollati](https://github.com/PrimalHQ/primal-android-app/blob/36939db97213e7f8eeefaa4adaf125d839fc662e/domain/nostr/src/commonMain/kotlin/net/primal/domain/nostr/utils/NostrUriUtils.kt), convalida bech32 ed estrae i suggerimenti sui relay, quindi [associa i riferimenti ai modelli del contenuto delle note](https://github.com/PrimalHQ/primal-android-app/blob/36939db97213e7f8eeefaa4adaf125d839fc662e/app/src/main/kotlin/net/primal/android/notes/feed/model/NoteNostrUriUi.kt). [Zap Cooking](https://github.com/zapcooking/frontend/pull/665) visualizza gli stessi riferimenti negli articoli, nelle ricette, nelle anteprime dell&amp;#39;editor e nelle viste di stampa.

---

Invia un DM NIP-17 per condividere un progetto o una notizia tramite il [progetto Nostr Compass](https://github.com/andotherstuff/nostr-compass).
&lt;/code>&lt;/pre></content:encoded></item><item><title>Nostr Compass #38</title><link>https://nostrcompass.org/it/newsletters/2026-09-02-newsletter/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-09-02-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://njump.me/naddr1qq98vmmrvyknzt3s9ccqyg84e2v65erlexz84kmpkmkjqrvmzkgf8fdewfkyun3tnxlel5er3upsgqqqw4rsw0l3en">Voca&lt;/a> 1.0 porta note Nostr verificate e subscription long-form in un lettore Android offline che legge gli articoli ad alta voce, &lt;a href="https://github.com/cameri/nostream">nostream&lt;/a> amplia l&amp;rsquo;instradamento dei job lato relay e il funzionamento autenticato, &lt;a href="https://github.com/relaystr/ndk">NDK for Dart&lt;/a> corregge negentropy e la durata delle richieste multi-relay, &lt;a href="https://github.com/divinevideo/divine-mobile">Divine Mobile&lt;/a> rende deterministiche l&amp;rsquo;eliminazione e la firma dei messaggi incapsulati, &lt;a href="https://github.com/Conduit-BTC/conduit-relay">Conduit Relay&lt;/a> protegge per impostazione predefinita le inbox dei gift wrap, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce highlight portabili e &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> verifica gli ordini firmati prima del proprio filtro antispam. &lt;a href="https://github.com/lnbits/napstr">Napstr&lt;/a> pubblica cataloghi audio e heartbeat dei seeder su Nostr, trasferendo i file tramite Tor. Le release riguardano &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> e &lt;a href="https://git.nostrdev.com/stuff/pakstr">pakstr&lt;/a>; il lavoro sul protocollo integra un suggerimento di paginazione &lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a> e uno schema di tag per gli highlight &lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84&lt;/a> nel &lt;a href="https://github.com/nostr-protocol/nips">repository dei NIP&lt;/a>, mentre &lt;a href="https://github.com/nostr-wallet-connect/nwc">Nostr Wallet Connect&lt;/a> aggiunge i totali delle transazioni; e l&amp;rsquo;approfondimento NIP segue repost e reazioni nelle loro forme di event e nelle implementazioni attuali.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://njump.me/naddr1qq98vmmrvyknzt3s9ccqyg84e2v65erlexz84kmpkmkjqrvmzkgf8fdewfkyun3tnxlel5er3upsgqqqw4rsw0l3en">Voca&lt;/a> 1.0 porta note Nostr verificate e subscription long-form in un lettore Android offline che legge gli articoli ad alta voce, &lt;a href="https://github.com/cameri/nostream">nostream&lt;/a> amplia l&amp;rsquo;instradamento dei job lato relay e il funzionamento autenticato, &lt;a href="https://github.com/relaystr/ndk">NDK for Dart&lt;/a> corregge negentropy e la durata delle richieste multi-relay, &lt;a href="https://github.com/divinevideo/divine-mobile">Divine Mobile&lt;/a> rende deterministiche l&amp;rsquo;eliminazione e la firma dei messaggi incapsulati, &lt;a href="https://github.com/Conduit-BTC/conduit-relay">Conduit Relay&lt;/a> protegge per impostazione predefinita le inbox dei gift wrap, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce highlight portabili e &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> verifica gli ordini firmati prima del proprio filtro antispam. &lt;a href="https://github.com/lnbits/napstr">Napstr&lt;/a> pubblica cataloghi audio e heartbeat dei seeder su Nostr, trasferendo i file tramite Tor. Le release riguardano &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> e &lt;a href="https://git.nostrdev.com/stuff/pakstr">pakstr&lt;/a>; il lavoro sul protocollo integra un suggerimento di paginazione &lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a> e uno schema di tag per gli highlight &lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84&lt;/a> nel &lt;a href="https://github.com/nostr-protocol/nips">repository dei NIP&lt;/a>, mentre &lt;a href="https://github.com/nostr-wallet-connect/nwc">Nostr Wallet Connect&lt;/a> aggiunge i totali delle transazioni; e l&amp;rsquo;approfondimento NIP segue repost e reazioni nelle loro forme di event e nelle implementazioni attuali.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="voca-10-legge-ad-alta-voce-note-e-subscription-nostr-verificate-su-android">Voca 1.0 legge ad alta voce note e subscription Nostr verificate su Android&lt;/h3>
&lt;p>&lt;a href="https://njump.me/naddr1qq98vmmrvyknzt3s9ccqyg84e2v65erlexz84kmpkmkjqrvmzkgf8fdewfkyun3tnxlel5er3upsgqqqw4rsw0l3en">Voca&lt;/a> è un lettore Android offline che legge articoli, PDF, file Markdown e note Nostr con la voce text-to-speech del telefono, mentre la frase pronunciata resta evidenziata sulla pagina. La sua &lt;a href="https://njump.me/naddr1qq98vmmrvyknzt3s9ccqyg84e2v65erlexz84kmpkmkjqrvmzkgf8fdewfkyun3tnxlel5er3upsgqqqw4rsw0l3en">release 1.0&lt;/a>, &lt;a href="https://njump.me/naddr1qq98vmmrvyknzt3s9ccqyg84e2v65erlexz84kmpkmkjqrvmzkgf8fdewfkyun3tnxlel5er3upsgqqqw4rsw0l3en">pubblicata il 2026-08-27&lt;/a> con la propria &lt;a href="https://njump.me/npub17h9fn2ny0lycg7kmvxmw6gqdnv2epya9h9excnjw9wvml87nyw8sqy3hpu">chiave di progetto&lt;/a>, rende Nostr una fonte di prima classe: incollando l&amp;rsquo;indirizzo di una nota, l&amp;rsquo;identificatore di un event, un npub, un profilo o un normale link web contenente un&amp;rsquo;entità Nostr, l&amp;rsquo;app decodifica il riferimento, recupera l&amp;rsquo;event firmato dai relay e legge il testo dell&amp;rsquo;autore invece della pagina web costruita attorno ad esso.&lt;/p>
&lt;p>Due comportamenti verificati definiscono l&amp;rsquo;integrazione Nostr, entrambi descritti nell&amp;rsquo;&lt;a href="https://njump.me/naddr1qq98vmmrvyknzt3s9ccqyg84e2v65erlexz84kmpkmkjqrvmzkgf8fdewfkyun3tnxlel5er3upsgqqqw4rsw0l3en">annuncio firmato di Voca 1.0&lt;/a>. Primo, ogni event recuperato viene controllato rispetto al suo id ricalcolato e alla firma Schnorr BIP-340 prima di essere persistito, usando i relay di bootstrap, la lista relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> dell&amp;rsquo;autore (un event kind &lt;code>10002&lt;/code> firmato e sostituibile in cui un autore elenca i relay da cui legge e su cui scrive) e i suggerimenti contenuti nel riferimento stesso, così un relay può rifiutarsi di rispondere ma non può attribuire parole all&amp;rsquo;autore. Secondo, aggiungere l&amp;rsquo;npub di un autore inserisce i suoi articoli long-form &lt;a href="https://nostrcompass.org/it/topics/nip-23/">NIP-23&lt;/a> (post indirizzabili kind &lt;code>30023&lt;/code> con titoli, riassunti e immagini) in un&amp;rsquo;unica inbox sul dispositivo accanto ai feed RSS e Atom. L&amp;rsquo;aggiornamento 1.1.0, &lt;a href="https://gitworkshop.dev/npub17h9fn2ny0lycg7kmvxmw6gqdnv2epya9h9excnjw9wvml87nyw8sqy3hpu/voca">annunciato il 2026-08-28&lt;/a> e pubblicato su &lt;a href="https://zapstore.dev">Zapstore&lt;/a> il 2026-08-29, sincronizza lo scorrimento a livello di frase, rende più fluidi i documenti lunghi e ripristina il widget della schermata iniziale dopo scorrimento manuale, ridimensionamento, riavvii del processo e aggiornamenti.&lt;/p>
&lt;h3 id="nostream-amplia-linstradamento-dvm-lato-relay-e-il-funzionamento-autenticato">nostream amplia l’instradamento DVM lato relay e il funzionamento autenticato&lt;/h3>
&lt;p>Dopo il &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-19-newsletter/#nostream-adds-a-relay-monitor-and-mints-invite-codes">lavoro del 19 agosto sull&amp;rsquo;acquisizione dei job&lt;/a>, &lt;a href="https://github.com/cameri/nostream">nostream&lt;/a>, un&amp;rsquo;implementazione relay in TypeScript, &lt;a href="https://github.com/cameri/nostream/pull/737">memorizza e serve event di gestori di applicazioni NIP-89&lt;/a>. &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> (scoperta dei gestori di applicazioni) usa raccomandazioni kind &lt;code>31989&lt;/code> e informazioni sui gestori kind &lt;code>31990&lt;/code>, entrambe già nell&amp;rsquo;intervallo sostituibile parametrizzato, così un client può interrogare quei kind e ricevere una sostituzione quando collide un tag &lt;code>d&lt;/code>. Il relay non pubblica informazioni sui gestori per i propri worker.&lt;/p>
&lt;p>I job &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a> (data vending machine) in attesa ora &lt;a href="https://github.com/cameri/nostream/pull/734">raggiungono un processo worker e tornano come event di risultato&lt;/a>. In caso di successo il relay firma un risultato kind 6000-6999 con la propria chiave. Un timeout o un arresto anomalo del worker contrassegna il job come fallito invece di lasciarlo inviato.&lt;/p>
&lt;p>Le sessioni autenticate e le chiamate HTTP amministrative si trovano su confini differenti. &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (autenticazione dei client ai relay) &lt;a href="https://github.com/cameri/nostream/pull/716">tiene traccia della pubkey autenticata per ogni socket&lt;/a>, può richiedere AUTH prima che i client pubblichino event e pubblicizza tale requisito nel documento &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (informazioni sul relay), con entrambi i controlli disattivati per impostazione predefinita. Separatamente, &lt;a href="https://github.com/cameri/nostream/pull/730">le route API amministrative possono accettare autorizzazione HTTP firmata NIP-98&lt;/a>. &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> (autenticazione HTTP con event firmati) resta disattivato finché un operatore non lo abilita e indica le pubkey consentite.&lt;/p>
&lt;h3 id="ndk-for-dart-corregge-negentropy-la-durata-delle-richieste-multi-relay-e-la-verifica-delle-firme">NDK for Dart corregge negentropy, la durata delle richieste multi-relay e la verifica delle firme&lt;/h3>
&lt;p>Un&amp;rsquo;esecuzione &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a> (riconciliazione di insiemi con negentropy) in &lt;a href="https://github.com/relaystr/ndk">NDK&lt;/a>, un kit di sviluppo Dart per Nostr, restituiva insiemi have e need errati senza segnalare errori, perché il codec non parlava il protocollo &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> v1. La &lt;a href="https://github.com/relaystr/ndk/pull/722">correzione della codifica v1&lt;/a> ora restituisce gli id posseduti dal relay e quelli di cui ha ancora bisogno.&lt;/p>
&lt;p>Filtri identici inviati a relay diversi &lt;a href="https://github.com/relaystr/ndk/pull/705">venivano accorpati in un&amp;rsquo;unica richiesta&lt;/a>. Le richieste con lo stesso filtro ora restano distinte quando puntano a relay diversi o hanno durate differenti, così una query breve non può mescolare nel risultato event di un altro relay né lasciare bloccata una subscription attiva.&lt;/p>
&lt;p>Lo stesso kit &lt;a href="https://github.com/relaystr/ndk/pull/726">verifica una firma una sola volta e conserva il risultato&lt;/a>. Una consegna duplicata successiva non richiede più un altro controllo né sovrascrive l’event verificato memorizzato.&lt;/p>
&lt;h3 id="divine-mobile-rende-deterministiche-leliminazione-e-la-firma-dei-messaggi-diretti-incapsulati">Divine Mobile rende deterministiche l’eliminazione e la firma dei messaggi diretti incapsulati&lt;/h3>
&lt;p>Gli event kind &lt;code>5&lt;/code> incapsulati &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> (richiesta di eliminazione di event) che prendevano di mira un messaggio non venivano mai applicati in &lt;a href="https://github.com/divinevideo/divine-mobile">Divine Mobile&lt;/a>, un client mobile per video brevi che pubblica tramite Nostr. Il client &lt;a href="https://github.com/divinevideo/divine-mobile/pull/8174">ora risolve ogni eliminazione rispetto al messaggio indicato&lt;/a>, invece di trattare come già elaborato tutto ciò che non è una reazione. Una seconda &lt;a href="https://github.com/divinevideo/divine-mobile/pull/8164">richiesta di eliminazione per tutti mentre la prima era ancora in corso&lt;/a> prima scompariva senza errori e senza alcun kind &lt;code>5&lt;/code> in rete; ora ogni eliminazione concorrente viene pubblicata.&lt;/p>
&lt;p>Dopo la release 1.0.22 già trattata, inviare due volte nello stesso secondo lo stesso testo 1:1 &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (DM privati in gift wrap) &lt;a href="https://github.com/divinevideo/divine-mobile/pull/8163">generava un solo rumor id&lt;/a>, quindi il secondo invio scompariva; ora ogni invio porta un token all&amp;rsquo;interno del rumor &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (gift wrap), così gli id differiscono.&lt;/p>
&lt;p>Un chiamante che aveva già firmato un event kind &lt;code>4&lt;/code> o kind &lt;code>5&lt;/code> &lt;a href="https://github.com/divinevideo/divine-mobile/pull/8173">manteneva quella firma&lt;/a>, invece di ricevere in seguito un tag client che modificava l’id e induceva i relay a rifiutare l’event come non valido.&lt;/p>
&lt;h3 id="conduit-relay-irrobustisce-la-propria-inbox-protetta-nip-42">Conduit Relay irrobustisce la propria inbox protetta NIP-42&lt;/h3>
&lt;p>I gift wrap kind &lt;code>1059&lt;/code> vengono memorizzati per un solo destinatario. &lt;a href="https://github.com/Conduit-BTC/conduit-relay">Conduit Relay&lt;/a>, un relay Go che conserva tali wrap in un&amp;rsquo;inbox protetta per destinatario, &lt;a href="https://github.com/Conduit-BTC/conduit-relay/pull/8">usa per impostazione predefinita la modalità enforce&lt;/a>: una query kind &lt;code>1059&lt;/code> deve presentare autenticazione &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> come quel destinatario, altrimenti il relay respinge la richiesta. Filtri con kind misti, wildcard, conteggi e &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> su tali wrap sono &lt;code>restricted&lt;/code>, così un&amp;rsquo;altra AUTH non può trasformarli in un dump dell&amp;rsquo;inbox altrui.&lt;/p>
&lt;p>Lo stesso &lt;a href="https://github.com/Conduit-BTC/conduit-relay/pull/8">merge dell&amp;rsquo;inbox protetta&lt;/a> richiede un event id canonico sull&amp;rsquo;event AUTH trasmesso e accetta un event NIP-42 altrimenti valido indipendentemente dal fatto che &lt;code>content&lt;/code> sia vuoto. Challenge-only offre ancora AUTH senza bloccare la lettura; disabled consente l&amp;rsquo;accesso libero. L&amp;rsquo;impostazione predefinita della libreria è enforce.&lt;/p>
&lt;h3 id="amethyst-distribuisce-highlight-nip-84-e-corregge-due-percorsi-di-errore-rivolti-ai-relay">Amethyst distribuisce highlight NIP-84 e corregge due percorsi di errore rivolti ai relay&lt;/h3>
&lt;p>Dopo il &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-26-newsletter/#amethyst-moves-blossom-authorization-off-image-loading-threads">lavoro della scorsa settimana sull&amp;rsquo;autorizzazione Blossom&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, un client Nostr per Android, distribuisce &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.14.0">v1.14.0&lt;/a> con &lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84&lt;/a> (highlight portabili). Un passaggio selezionato diventa un event kind &lt;code>9802&lt;/code> dal compositore, da un feed di highlight o tramite condivisione nell&amp;rsquo;app.&lt;/p>
&lt;p>La release aggiunge controlli di eliminazione e archiviazione dei canali &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3812">PR #3812&lt;/a>) e misura il comportamento dei relay tramite il traffico già generato dal client, quindi estende tali sonde &lt;a href="https://github.com/nostr-protocol/nips/blob/master/66.md">NIP-66&lt;/a> con controlli di streaming, lettura, scrittura e URL (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3836">PR #3836&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3857">PR #3857&lt;/a>). Amethyst elimina inoltre una vulnerabilità di collisione hash in SharedKeyCache e confronta i codici di autenticazione dei messaggi in tempo costante (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3833">PR #3833&lt;/a>), corregge una race che poteva perdere la consegna AUTH in fase di connessione (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3838">PR #3838&lt;/a>), suddivide il locking dello stato delle subscription per terminare un convoglio ANR (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3851">PR #3851&lt;/a>) e confronta tutti i filtri della subscription invece del solo primo (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3856">PR #3856&lt;/a>).&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-08-19-newsletter/#amethyst-rebuilds-its-relay-authentication-decision-flow">La newsletter #36 aveva già trattato queste modifiche ad autenticazione relay, backup e chat pubbliche&lt;/a>; ora v1.14.0 le ha distribuite insieme. I soft ban di Concord colmano lacune di autorità rilevate da un audit (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3885">PR #3885&lt;/a>). L&amp;rsquo;autenticazione relay dispone di un flusso di autorizzazioni riprogettato (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3899">PR #3899&lt;/a>), attende la risoluzione della challenge invece di andare in timeout (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3905">PR #3905&lt;/a>), fa sì che i nuovi account si autentichino per impostazione predefinita (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3931">PR #3931&lt;/a>), rispetta tale preferenza sui relay esterni all&amp;rsquo;insieme normale dell&amp;rsquo;account (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3937">PR #3937&lt;/a>) e conserva le autorizzazioni di sessione tra le riconnessioni (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3955">PR #3955&lt;/a>). Un flusso guidato per il primo avvio e le Impostazioni rende individuabili i backup delle chiavi (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3909">PR #3909&lt;/a>), il backfill delle proof Cashu e la paginazione della cronologia impediscono che i saldi wallet vengano troncati (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3941">PR #3941&lt;/a>) e ora le chat pubbliche possono essere silenziate (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3939">PR #3939&lt;/a>).&lt;/p>
&lt;p>Dopo quel tag, le &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3983">liste fidate&lt;/a> nei kind da &lt;code>30392&lt;/code> a &lt;code>30395&lt;/code> sono indicizzate da &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> (ricerca full-text) solo per titolo, così una lista nominata nella prosa può essere trovata senza indicizzare gli id esadecimali dei membri. I rifiuti del wallet arrivati tramite &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3987">ora mostrano l&amp;rsquo;errore invece di sembrare un tocco senza effetto&lt;/a>, inclusi &lt;code>QUOTA_EXCEEDED&lt;/code> e &lt;code>RESTRICTED&lt;/code>, oltre a un timeout quando il wallet non risponde mai.&lt;/p>
&lt;h3 id="mostro-convalida-gli-ordini-firmati-prima-del-lavoro-costoso-e-conserva-gli-event-di-audit-degli-ordini">Mostro convalida gli ordini firmati prima del lavoro costoso e conserva gli event di audit degli ordini&lt;/h3>
&lt;p>Dopo le &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-12-newsletter/#mostro-0181-starts-a-cashu-escrow-path-and-hardens-the-daemon">fondamenta dell&amp;rsquo;escrow Cashu di v0.18.1&lt;/a>, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, un daemon di scambio peer-to-peer che coordina ordini su Nostr, ha creato il tag &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.18.5">v0.18.5&lt;/a>, che usa per impostazione predefinita &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (cifratura del payload) per il trasporto e mantiene il gift wrap come opt-in esplicito.&lt;/p>
&lt;p>La release ancora i timeout dello stato di attesa all&amp;rsquo;ora di presa registrata, così il bond del maker non viene penalizzato secondo l&amp;rsquo;orologio sbagliato (&lt;a href="https://github.com/MostroP2P/mostro/pull/879">PR #879&lt;/a>), invia al massimo una volta il pagamento all&amp;rsquo;acquirente per ogni ordine regolato (&lt;a href="https://github.com/MostroP2P/mostro/pull/881">PR #881&lt;/a>) e sposta tali pagamenti attraverso attese &lt;code>send_payment&lt;/code> limitate e non bloccanti (&lt;a href="https://github.com/MostroP2P/mostro/pull/883">PR #883&lt;/a>). Un tentativo di pagare il vincitore della penalità per timeout (&lt;a href="https://github.com/MostroP2P/mostro/pull/875">PR #875&lt;/a>) è stato annullato prima della distribuzione dello stesso tag (&lt;a href="https://github.com/MostroP2P/mostro/pull/885">PR #885&lt;/a>). Mostro smette inoltre di ripubblicare ogni ora e all&amp;rsquo;avvio un order book in attesa invariato (&lt;a href="https://github.com/MostroP2P/mostro/pull/888">PR #888&lt;/a>), e i suoi event di disputa kind &lt;code>38386&lt;/code> ora portano un tag &lt;code>created_at&lt;/code> per l&amp;rsquo;ordinamento downstream (&lt;a href="https://github.com/MostroP2P/mostro/pull/878">PR #878&lt;/a>).&lt;/p>
&lt;p>Dopo quel tag, &lt;a href="https://github.com/MostroP2P/mostro/pull/892">un controllo della firma ora viene eseguito prima del filtro antispam&lt;/a>. Un event id non incorpora &lt;code>sig&lt;/code>, quindi una copia del kind &lt;code>14&lt;/code> di una vittima con firma non valida poteva occupare lo slot di replay e scartare silenziosamente il messaggio valido; il daemon verifica prima e scarta un wrap non valido invece di avvertire e proseguire.&lt;/p>
&lt;p>Gli event di audit delle commissioni kind &lt;code>8383&lt;/code> portavano un timestamp di scadenza &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a> di 15 giorni. Ora &lt;a href="https://github.com/MostroP2P/mostro/pull/924">mantengono una scadenza di un anno&lt;/a>, coerente con il loro ruolo di registro pubblico dei pagamenti. Su un nodo con Cashu abilitato, prendere un ordine &lt;a href="https://github.com/MostroP2P/mostro/pull/830">chiede al venditore tramite Nostr di bloccare un escrow 2-su-3&lt;/a>, pubblica l&amp;rsquo;event dell&amp;rsquo;ordine in attesa e salta la creazione di una hold invoice Lightning. Questo completa il percorso della richiesta; da solo non risolve ogni caso di escrow o abuso del mercato.&lt;/p>
&lt;h3 id="napstr-pubblica-cataloghi-audio-su-nostr-e-trasferisce-file-tramite-tor">Napstr pubblica cataloghi audio su Nostr e trasferisce file tramite Tor&lt;/h3>
&lt;p>&lt;a href="https://github.com/lnbits/napstr">Napstr&lt;/a> è un client desktop per la condivisione audio che pubblica cataloghi ricercabili e seeder attivi su Nostr, quindi trasferisce i file tramite un processo Tor integrato senza fallback sull&amp;rsquo;IP diretto. &lt;a href="https://github.com/lnbits/napstr/releases/tag/v0.2.0">La versione 0.2.0&lt;/a> mantiene pubblici profili e metadati del catalogo, e tiene richieste, credenziali di trasferimento, contenuti dei file e indirizzi IP dei peer fuori dai relay.&lt;/p>
&lt;p>La scoperta usa due kind di event indirizzabili nel &lt;a href="https://github.com/lnbits/napstr">repository Napstr&lt;/a>. Le voci di catalogo kind &lt;code>30421&lt;/code> identificano un file tramite digest SHA-256, basename pubblico, dimensione e formato audio, e un autore ritira un file sostituendo quella coordinata con un marcatore di eliminazione. Gli heartbeat di disponibilità kind &lt;code>30422&lt;/code> scadono dopo dieci minuti ed elencano gli id dei file che l&amp;rsquo;autore è pronto a distribuire, così una riga di catalogo è attiva solo finché un heartbeat non scaduto contiene ancora quel digest.&lt;/p>
&lt;p>La conversazione pubblica usa &lt;a href="https://nostrcompass.org/it/topics/nip-c7/">NIP-C7&lt;/a> (messaggi chat kind 9) invece di un gruppo posseduto da un relay. Il &lt;a href="https://github.com/lnbits/napstr">repository Napstr&lt;/a> definisce una stanza pubblica condivisa e una discussione per traccia associata al digest del file. Quei messaggi sono firmati e pubblici. Non contengono indirizzi onion, credenziali di trasferimento o byte dei file.&lt;/p>
&lt;p>Un download inizia come negoziazione &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (DM privati in gift wrap). Il &lt;a href="https://github.com/lnbits/napstr">repository Napstr&lt;/a> incapsula una richiesta, un&amp;rsquo;offerta o un rifiuto in un rumor kind &lt;code>14&lt;/code>, così i relay non vedono l&amp;rsquo;hostname onion v3 temporaneo né la capability monouso restituita da un&amp;rsquo;offerta accettata. Tor integrato trasferisce quindi i byte attraverso quell&amp;rsquo;onion, verifica l&amp;rsquo;intero digest SHA-256 e convalida nuovamente l&amp;rsquo;audio prima che il file diventi riproducibile.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/lnbits/napstr/compare/v0.1.7...v0.2.0">confronto tra v0.1.7 e v0.2.0&lt;/a> aggiunge raccolte di audiolibri e Napstrfy, un companion Android opzionale. I manifest kind &lt;code>30423&lt;/code> elencano capitoli ordinati che restano normali file di catalogo, così un client che ignora la raccolta può comunque recuperare ogni capitolo. Napstr crea a tale scopo una cartella locale Audiobooks non distruttiva. Napstrfy si abbina a un desktop in esecuzione con un QR code monouso, quindi cerca e richiede download tramite i servizi Nostr e Tor già presenti sul desktop senza ricevere la chiave segreta del desktop.&lt;/p>
&lt;p>Lo stesso &lt;a href="https://github.com/lnbits/napstr/compare/v0.1.7...v0.2.0">confronto&lt;/a> applica un timeout a un handshake del companion che non si completa. Un seeder copia e calcola l&amp;rsquo;hash del file condiviso prima di servire i byte, scrive i dati in arrivo in un file temporaneo privato, limita le destinazioni degli audiolibri a un vero figlio della cartella Napstr e interrompe il trasferimento se la destinazione cambia durante l&amp;rsquo;operazione.&lt;/p>
&lt;h2 id="release">Release&lt;/h2>
&lt;h3 id="mdk-v0917-keypackage-più-recenti-attività-dei-membri-e-invii-durevoli">MDK v0.9.17: KeyPackage più recenti, attività dei membri e invii durevoli&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-08-26-newsletter/#mdk-v0914-and-v0915-keypackage-selection-epoch-gap-recovery-and-split-relay-roles">La newsletter #37 ha trattato MDK 0.9.14 e 0.9.15&lt;/a>, incluso il passaggio nel &lt;a href="https://github.com/marmot-protocol/mdk">repository MDK&lt;/a> dalla selezione della KeyPackage più vecchia alla più recente e valida del profilo corrente, i gate di recupero dai gap di epoch, la pulizia degli account e la separazione tra relay di scoperta e operativi. Tali correzioni restano la base delle due release successive, così un package obsoleto non blocca più un membro che ne ha già pubblicato uno utilizzabile.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk/pull/1551">Gli event di membership e amministrazione ora fanno avanzare la lista chat&lt;/a> come un nuovo messaggio: testo di anteprima, ordinamento, conteggi dei non letti e marcatori di lettura si aggiornano quando le persone entrano, escono o cambiano ruolo, e l&amp;rsquo;attore di sistema locale non viene trattato come profilo Nostr. Riconnessioni e riavvii &lt;a href="https://github.com/marmot-protocol/mdk/pull/1516">riutilizzano un&amp;rsquo;unica identità di invio per un testo outbound durevole ritentato&lt;/a>, così lo stesso messaggio di gruppo non viene pubblicato due volte.&lt;/p>
&lt;p>Le due release successive si concentrano sul costo di mantenimento dei gruppi numerosi. &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.16">La versione 0.9.16&lt;/a> &lt;a href="https://github.com/marmot-protocol/mdk/pull/1559">misura la divergenza di epoch rispetto all&amp;rsquo;epoch corrente invece che a un massimo storico&lt;/a>, mantiene recuperabili gli event inbound rifiutati (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1565">PR #1565&lt;/a>), limita il rollback del replay allo stato canonico del gruppo (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1563">PR #1563&lt;/a>) e introduce &lt;a href="https://github.com/marmot-protocol/mdk/pull/1545">marmot-c&lt;/a>, un&amp;rsquo;ABI C generata tramite macro sopra i binding UniFFI che consente agli host di incorporare direttamente il motore. &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.17">La versione 0.9.17&lt;/a> combina poi le scansioni di ammissione dei pass in &lt;a href="https://github.com/marmot-protocol/mdk/pull/1617">un solo attraversamento dei membri invece di uno per membro&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/1620">verifica se lo stato di un gruppo è contestato senza inizializzare l&amp;rsquo;intero grafo storico&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/1621">riduce il costo di polling inattivo della scansione deferred-peel&lt;/a> e &lt;a href="https://github.com/marmot-protocol/mdk/pull/1622">applica la lettura in batch dei componenti ai tre siti di proiezione mancati dal primo passaggio&lt;/a>. Gli artefatti corrispondenti &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/marmotc-v0.9.17">marmot-c 0.9.17&lt;/a> e &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/wn-agent-v0.9.17">WN Agent 0.9.17&lt;/a> sono costruiti dallo stesso commit, così chi li incorpora riceve insieme i percorsi di manutenzione più economici.&lt;/p>
&lt;h3 id="pakstr-v0160-identificatori-kind-32267-durante-la-pubblicazione">pakstr v0.16.0: identificatori kind-32267 durante la pubblicazione&lt;/h3>
&lt;p>Dopo la &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-26-newsletter/#pakstr-0130-through-0150-makes-zapstore-publication-explicit">pipeline di pubblicazione Zapstore dalla 0.13.0 alla 0.15.0 della scorsa settimana&lt;/a>, &lt;a href="https://git.nostrdev.com/stuff/pakstr">pakstr&lt;/a>, una CLI che impacchetta un&amp;rsquo;app web in un APK Android firmato e la pubblica con una chiave Nostr, &lt;a href="https://git.nostrdev.com/stuff/pakstr/pulls/67">registra gli ID degli event applicazione kind &lt;code>32267&lt;/code>&lt;/a> che cerca, pubblica o sostituisce. &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.16.0">La versione 0.16.0&lt;/a> stampa sia l&amp;rsquo;ID precedente sia quello nuovo quando metadati obsoleti dell&amp;rsquo;inserzione provocano una nuova pubblicazione, così un publisher può confermare quale event dell&amp;rsquo;inserzione sia attivo sul relay.&lt;/p>
&lt;p>Lo stesso &lt;a href="https://git.nostrdev.com/stuff/pakstr/pulls/67">log degli identificatori&lt;/a> registra l&amp;rsquo;ID trovato durante la ricerca prima di qualsiasi sostituzione, poi l&amp;rsquo;ID dell&amp;rsquo;event pubblicato, così un riuso senza modifiche appare come ID ripetuto. Questa è la modifica inclusa nel tag &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.16.0">0.16.0&lt;/a>; i comportamenti Content-Digest, pubblicazione prima dell&amp;rsquo;upload e convalida del publisher erano già stati distribuiti nei tag precedenti.&lt;/p>
&lt;h2 id="modifiche-non-ancora-rilasciate">Modifiche non ancora rilasciate&lt;/h2>
&lt;h3 id="zap-cooking-limita-i-relay-del-bunker-e-firma-gli-endpoint-a-pagamento">Zap Cooking limita i relay del bunker e firma gli endpoint a pagamento&lt;/h3>
&lt;p>Ricaricare una sessione bunker su &lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, un sito di ricette basato su event long-form Nostr, prima pubblicava la conversazione cifrata &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota tramite relay) su ogni relay già usato dalla pagina. &lt;a href="https://github.com/zapcooking/frontend/pull/633">Limitare il traffico del signer ai relay propri del bunker&lt;/a> ora applica tale restrizione al ripristino della sessione e all&amp;rsquo;abbinamento nostrconnect, il flusso di connessione avviato dal signer, in linea con il percorso di login tramite URL bunker. Si rifiuta di installare un insieme di relay vuoto da un record memorizzato non valido, così i relay che ospitano solo ricette non apprendono più che la stessa pubkey mantiene una sessione bunker attiva.&lt;/p>
&lt;p>L&amp;rsquo;&lt;a href="https://github.com/zapcooking/frontend/pull/630">autenticazione HTTP firmata&lt;/a> ora protegge la chat a pagamento dell&amp;rsquo;assistente di cucina, l&amp;rsquo;introduzione al ricettario e gli aggiornamenti delle ricette con accesso limitato tramite &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> (autenticazione HTTP con un event Nostr firmato). Il server legge una sola volta il corpo della richiesta, verifica la firma rispetto a quel payload esatto e ricava l&amp;rsquo;identità dall&amp;rsquo;event di autenticazione verificato invece che da una chiave pubblica fornita nel corpo. L&amp;rsquo;anteprima della chat continua a funzionare senza header, mentre una firma presente ma non valida viene respinta e l&amp;rsquo;introduzione al ricettario richiede sempre una firma. Anche l&amp;rsquo;aggiornamento di una ricetta con accesso limitato ora richiede che la chiave verificata corrisponda all&amp;rsquo;autore memorizzato; a chiunque altro viene detto che la ricetta non esiste, così l&amp;rsquo;endpoint non conferma quali record a pagamento esistano.&lt;/p>
&lt;h3 id="nostrord-corregge-i-dm-incapsulati-e-i-link-agli-event-condivisi">nostrord corregge i DM incapsulati e i link agli event condivisi&lt;/h3>
&lt;p>Dopo la &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-26-newsletter/#nostrord-v290-relay-scoped-group-state-and-media">v2.9.0 della scorsa settimana&lt;/a>, &lt;a href="https://github.com/nostrord/nostrord">nostrord&lt;/a>, un client multipiattaforma per community ospitate su relay, ha integrato correzioni alla consegna affinché un &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (DM privato in gift wrap) inviato da un dispositivo raggiunga lo stesso account altrove. &lt;a href="https://github.com/nostrord/nostrord/pull/295">Pubblicare indipendentemente la copia del mittente&lt;/a> impedisce che la prima accettazione del wrap del destinatario da parte di un relay faccia perdere la copia recuperata dagli altri dispositivi. La stessa modifica reinvia un wrap dopo il completamento di &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (autenticazione dei client ai relay) e contrassegna l&amp;rsquo;invio come riuscito alla prima accettazione di un relay, così un host guasto non può bloccare gli altri. &lt;a href="https://github.com/nostrord/nostrord/pull/297">Il nuovo tentativo dei gift wrap parcheggiati&lt;/a> che non hanno superato la decifrazione &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (gift wrap) avviene ora tramite timer, così un bunker che resta connesso non lascia più quei messaggi mi&amp;hellip; [troncato]&lt;/p>
&lt;p>Una risposta &lt;a href="https://nostrcompass.org/it/topics/nip-c7/">NIP-C7&lt;/a> (messaggi chat kind &lt;code>9&lt;/code>) ripete il proprio genitore come puntatore &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (entità codificate bech32) &lt;code>nevent&lt;/code> iniziale accanto al tag &lt;code>q&lt;/code>. &lt;a href="https://github.com/nostrord/nostrord/pull/292">Eliminare quel puntatore iniziale al genitore&lt;/a> quando apre il corpo e indica il genitore della risposta permette alla riga di essere visualizzata come un&amp;rsquo;unica citazione di risposta, mentre un puntatore nel mezzo del corpo o che costituisce l&amp;rsquo;intero corpo continua a essere visualizzato come scheda di citazione. &lt;a href="https://github.com/nostrord/nostrord/pull/293">I link agli event citati ora codificano &lt;code>nevent&lt;/code>&lt;/a> con autore, kind e relay da cui è stata letta la citazione, così un event &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (gruppi gestiti da relay) condiviso in un DM può essere recuperato da un altro client invece di usare un identificatore di nota privo di suggerimenti per la ricerca.&lt;/p>
&lt;h2 id="aggiornamenti-ai-nip-e-lavoro-sulle-specifiche-del-protocollo">Aggiornamenti ai NIP e lavoro sulle specifiche del protocollo&lt;/h2>
&lt;h3 id="possibilità-di-implementazione-di-nostr">Possibilità di implementazione di Nostr&lt;/h3>
&lt;p>Questa settimana sono stati integrati due aggiornamenti delle specifiche nel &lt;a href="https://github.com/nostr-protocol/nips">repository principale dei NIP&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a> definisce i suggerimenti che un relay può aggiungere a un messaggio &lt;code>EOSE&lt;/code> (fine degli event memorizzati), così un client sa se continuare la paginazione. Il &lt;a href="https://github.com/nostr-protocol/nips/pull/2371">suggerimento &lt;code>&amp;quot;auth&amp;quot;&lt;/code> integrato&lt;/a> aggiunge un terzo valore accanto a &lt;code>finish&lt;/code> e &lt;code>more&lt;/code>: ora un relay può segnalare che altri event memorizzati potrebbero diventare visibili se l&amp;rsquo;utente si autentica e deve inviare la challenge &lt;code>AUTH&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (autenticazione relay) prima dell&amp;rsquo;&lt;code>EOSE&lt;/code> che porta il suggerimento. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2371">corrispondente aggiunta a NIP-42&lt;/a> definisce lo stesso flusso dal lato client, così un client che riceve un &lt;code>EOSE&lt;/code> con &lt;code>auth&lt;/code> possiede già la challenge a cui deve rispondere.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84&lt;/a> (highlight portabili, gli event kind &lt;code>9802&lt;/code> per cui Amethyst ha distribuito il supporto sopra) &lt;a href="https://github.com/nostr-protocol/nips/pull/2454">ha integrato un aggiornamento dello schema dei tag&lt;/a>: ora gli highlight possono contrassegnare la fonte con tag &lt;code>i&lt;/code> strutturati secondo &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73&lt;/a> (identificatori di contenuto esterno), oltre ai tag &lt;code>a&lt;/code>/&lt;code>e&lt;/code> per gli event Nostr e ai tag &lt;code>r&lt;/code> per tutto il resto, e per gli highlight di citazioni il rendering come quote repost è passato da MUST a SHOULD.&lt;/p>
&lt;h3 id="nostr-wallet-connect">Nostr Wallet Connect&lt;/h3>
&lt;p>Una risposta &lt;code>list_transactions&lt;/code> può indicare quante transazioni corrispondono alla richiesta, non quante righe ha restituito la pagina corrente. Il &lt;a href="https://github.com/nostr-wallet-connect/nwc/pull/4">&lt;code>total_count&lt;/code> opzionale integrato&lt;/a> in NWC-05 (l&amp;rsquo;estensione per la cronologia del wallet) nel &lt;a href="https://github.com/nostr-wallet-connect/nwc">repository delle estensioni NWC&lt;/a> aggiunge tale campo alla risposta usata con &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (controllo remoto cifrato del wallet tramite Nostr).&lt;/p>
&lt;p>Il &lt;a href="https://github.com/nostr-wallet-connect/nwc/commit/ff3e49a47d040075edc46ee42fc0e33f10f1ef67">commit che aggiunge &lt;code>total_count&lt;/code>&lt;/a> lo documenta come intero opzionale: il numero totale di transazioni che corrispondono ai filtri della richiesta.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/nostr-wallet-connect/nwc/commit/06315e735f744b1afd3df0b57436fdce8a7bfc2e">commit che esclude la paginazione dal conteggio&lt;/a> afferma che questo totale esclude la paginazione, quindi conta tutte le transazioni corrispondenti in ogni pagina.&lt;/p>
&lt;h2 id="approfondimento-nip-repost-e-reazioni">Approfondimento NIP: Repost e reazioni&lt;/h2>
&lt;p>Un contatto può riproporre una nota esistente ai propri follower e può aggiungere un like, dislike o emoji compatto senza scrivere una risposta. &lt;a href="https://nostrcompass.org/it/topics/nip-18/">NIP-18&lt;/a> (repost) pubblica tale ridistribuzione come event firmato autonomo. &lt;a href="https://nostrcompass.org/it/topics/nip-25/">NIP-25&lt;/a> (reazioni) pubblica la risposta compatta come event firmato separato. Entrambi restano file &lt;code>draft&lt;/code> &lt;code>optional&lt;/code> nella &lt;a href="https://github.com/nostr-protocol/nips/blob/master/18.md">specifica canonica dei repost&lt;/a> e nella &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md">specifica canonica delle reazioni&lt;/a>: sono presenti nel repository dei NIP e implementati dai client, ma ancora etichettati come non definitivi.&lt;/p>
&lt;h3 id="repost-nip-18">Repost (NIP-18)&lt;/h3>
&lt;p>I follower ricevono un puntatore firmato a una nota di testo kind 1 già pubblicata da qualcuno quando un client scrive un event kind 6. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/18.md">La specifica dei repost&lt;/a> imposta &lt;code>kind&lt;/code> a 6, inserisce in &lt;code>content&lt;/code> il JSON serializzato di quella nota (&lt;code>content&lt;/code> vuoto è consentito ma sconsigliato), richiede un tag &lt;code>e&lt;/code> il cui valore sia l&amp;rsquo;&lt;code>id&lt;/code> della nota e la cui terza voce sia l&amp;rsquo;URL di un relay da cui recuperarla, e afferma che l&amp;rsquo;event SHOULD includere anche un tag &lt;code>p&lt;/code> con la &lt;code>pubkey&lt;/code> dell&amp;rsquo;autore originale. Il repost di un event &lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a> (event protetti) SHOULD mantenere &lt;code>content&lt;/code> vuoto, affinché il payload protetto non venga copiato nel nuovo event.&lt;/p>
&lt;p>Una citazione è un riferimento all&amp;rsquo;interno di un altro event, non un wrapper kind 6. Quando un client menziona un &lt;a href="https://nostrcompass.org/it/topics/nip-21/">NIP-21&lt;/a> (&lt;code>nostr:&lt;/code> URI) &lt;code>nevent&lt;/code>, &lt;code>note&lt;/code> o &lt;code>naddr&lt;/code>, deve convertire tale menzione in un tag &lt;code>q&lt;/code> nella forma &lt;code>[&amp;quot;q&amp;quot;, &amp;quot;&amp;lt;event-id&amp;gt; or &amp;lt;event-address&amp;gt;&amp;quot;, &amp;quot;&amp;lt;relay-url&amp;gt;&amp;quot;, &amp;quot;&amp;lt;pubkey-if-a-regular-event&amp;gt;&amp;quot;]&lt;/code>. I &lt;a href="https://github.com/nostr-protocol/nips/blob/master/18.md#quote-reposts">tag dei quote repost&lt;/a> tengono tali citazioni fuori dai thread di risposta e permettono ai client di recuperare e contare le citazioni di un post.&lt;/p>
&lt;p>Kind 6 è riservato alle note kind 1. Un repost generico kind 16 può incapsulare qualsiasi kind di event diverso da kind 1. SHOULD includere un tag &lt;code>k&lt;/code> il cui valore sia il kind serializzato dell&amp;rsquo;event interno. Quando tale event interno è sostituibile, il repost generico SHOULD aggiungere un tag &lt;code>a&lt;/code> con la coordinata &lt;code>kind:pubkey:d-tag&lt;/code>; se quel tag &lt;code>a&lt;/code> è assente, il repost prende di mira una versione specifica e &lt;code>content&lt;/code> deve contenere l&amp;rsquo;intera stringa JSON di quella versione. Le &lt;a href="https://github.com/nostr-protocol/nips/blob/master/18.md#generic-reposts">regole dei repost generici&lt;/a> impediscono che event long-form, indirizzabili e altri event diversi dalle note vengano pubblicati come se fossero kind 1.&lt;/p>
&lt;p>Il seguente event kind 6 è un repost reale recuperato da &lt;code>wss://relay.damus.io&lt;/code> al momento dell’assemblaggio (&lt;a href="https://njump.me/nevent1qqs88k8xgv2d3d3yymawaa24f22a0kqqvknpur0p05vq9e5r4y74xjspz3mhxue69uhhyetvv9ujuerpd46hxtnfdu7elvca">apri l’event&lt;/a>):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">6&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;73d8e64314d8b62426faeef5554a95d7d80065a61e0de17d1802e683a93d534a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a60e79e0edad5100d7543b669e513dbc1c2170e8e9b74fdb8e971afd1e0e6813&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1787768621&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;38980cd673ee16609dc87081d9f645c331d5a5a8b5b0d6c8147600ed29447976&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;34d2f5274f1958fcd2cb2463dabeaddf8a21f84ace4241da888023bf05cc8095&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;client&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;Primal iOS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;pubkey\&amp;#34;:\&amp;#34;34d2f5274f1958fcd2cb2463dabeaddf8a21f84ace4241da888023bf05cc8095\&amp;#34;,\&amp;#34;sig\&amp;#34;:\&amp;#34;8c0271f7b438083ce491c391335598e0cbceee0758177cf98f7894531033cb5153704b01009590f3d4e9cdfadd5bbf73fc5eea54186fcbac6d30744e0e6c1cd6\&amp;#34;,\&amp;#34;id\&amp;#34;:\&amp;#34;38980cd673ee16609dc87081d9f645c331d5a5a8b5b0d6c8147600ed29447976\&amp;#34;,\&amp;#34;tags\&amp;#34;:[[\&amp;#34;r\&amp;#34;,\&amp;#34;https:\/\/stacker.news\/items\/1555439\&amp;#34;],[\&amp;#34;client\&amp;#34;,\&amp;#34;Damus\&amp;#34;]],\&amp;#34;created_at\&amp;#34;:1787766056,\&amp;#34;content\&amp;#34;:\&amp;#34;🚨 Attention CLN (Core Lightning) node runners 🚨\n\nhttps:\/\/stacker.news\/items\/1555439\&amp;#34;,\&amp;#34;kind\&amp;#34;:1}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b6b97fa377cfdb651e2850f65f2ccb12ca0724c0de0fc0e39e9721f850abdfd31f5d5567517a51d988145c2a2de9ae9540b02eecf7352e554022870d5e8c64a5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il suo &lt;code>kind&lt;/code> è 6, il tag &lt;code>e&lt;/code> punta alla nota ripubblicata, il tag &lt;code>p&lt;/code> identifica l&amp;rsquo;autore di quella nota e &lt;code>content&lt;/code> contiene l&amp;rsquo;event kind 1 originale come JSON serializzato. Questo event recuperato da un relay omette il suggerimento del relay che la &lt;a href="https://github.com/nostr-protocol/nips/blob/master/18.md">specifica NIP-18&lt;/a> contrassegna come obbligatorio, illustrando perché lettori e client debbano convalidare event reali e tollerare produttori che omettono campi.&lt;/p>
&lt;h3 id="reazioni-nip-25">Reazioni (NIP-25)&lt;/h3>
&lt;p>Un post può raccogliere like, dislike ed emoji firmati senza che tali segni entrino nel thread di risposta. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md">La specifica delle reazioni&lt;/a> definisce quel segno come un event kind 7 il cui &lt;code>content&lt;/code> MUST contenere il valore della reazione. &lt;code>+&lt;/code> o una stringa vuota MUST essere interpretati come like o upvote. &lt;code>-&lt;/code> MUST essere interpretato come dislike o downvote. Un&amp;rsquo;emoji o uno shortcode &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> (emoji personalizzata) SHOULD NOT essere interpretato come like o dislike, e un client MAY mostrare tale emoji sul post.&lt;/p>
&lt;p>L&amp;rsquo;obiettivo si trova nei tag, non viene dedotto da &lt;code>content&lt;/code>. MUST esserci un tag &lt;code>e&lt;/code> impostato sull&amp;rsquo;&lt;code>id&lt;/code> dell&amp;rsquo;event obiettivo, e tale tag SHOULD includere un suggerimento relay; tag &lt;code>e&lt;/code> aggiuntivi sono sconsigliati e, se presenti, l&amp;rsquo;&lt;code>id&lt;/code> obiettivo deve essere l&amp;rsquo;ultimo. SHOULD esserci un tag &lt;code>p&lt;/code> per l&amp;rsquo;autore dell&amp;rsquo;obiettivo, per ultimo se compaiono più tag &lt;code>p&lt;/code>. Un obiettivo indirizzabile SHOULD ricevere anche un tag &lt;code>a&lt;/code> con coordinate &lt;code>kind:pubkey:d-tag&lt;/code>. I tag &lt;code>e&lt;/code> e &lt;code>a&lt;/code> SHOULD includere suggerimenti relay e pubkey, i tag &lt;code>p&lt;/code> SHOULD includere suggerimenti relay e un tag &lt;code>k&lt;/code> MAY contenere il kind serializzato dell&amp;rsquo;event oggetto della reazione. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md#tags">Tali regole sui tag&lt;/a> consentono a un client di recuperare l&amp;rsquo;obiettivo e avvisarne l&amp;rsquo;autore dal solo event di reazione.&lt;/p>
&lt;p>Un client MAY inserire un singolo &lt;code>:shortcode:&lt;/code> in &lt;code>content&lt;/code> e un tag &lt;code>emoji&lt;/code> che associa tale shortcode a un URL immagine, seguendo le &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md#custom-emoji-reaction">regole delle reazioni con emoji personalizzate&lt;/a>. Se l&amp;rsquo;obiettivo non è un event Nostr nativo, la reazione MUST essere kind 17 e MUST includere i tag &lt;code>k&lt;/code> e &lt;code>i&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73&lt;/a> (ID di contenuto esterno), come nelle &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md#external-content-reactions">regole delle reazioni a contenuto esterno&lt;/a>. Kind 17 è una reazione a un sito web, episodio di podcast o altro oggetto esterno. Non è una reazione event-a-event kind 7 e non è un repost.&lt;/p>
&lt;p>Il seguente event kind 7 è una reazione reale recuperata da &lt;code>wss://relay.damus.io&lt;/code> al momento dell’assemblaggio (&lt;a href="https://njump.me/nevent1qqsytac63l00k7kyaphkfwqqn94wglmx78v6zhqtytg65w5k957luccpz3mhxue69uhhyetvv9ujuerpd46hxtnfdus63jym">apri l’event&lt;/a>):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">7&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;45f71a8fdefb7ac4e86f64b800996ae47f66f1d9a15c0b22d1aa3a962d3dfe63&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;0755cc2b972c3cbcae36913109c50b36b3fe110fa38a76dc37d1f01c5305496a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1787768605&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;519de32071d71bb2ab8b71a07e03eb9a256b6a59f9b08877b156c80966d5c320&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;34236:5ab67f7d7fed4f781008c0ec0d26c8113f9fb46094a8346246c70c75e75db9fb:2ddda68516f4729d3ef55a1eb01fe028253393212493a34816ad8eb79f97a3b7&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;5ab67f7d7fed4f781008c0ec0d26c8113f9fb46094a8346246c70c75e75db9fb&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;34236&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;client&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;Divine&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;31990:d95aa8fc0eff8e488952495b8064991d27fb96ed8652f12cdedc5a4e8b5ae540:divine-mobile&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;wss://relay.divine.video&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;+&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;3c081756c7a73e2ee8aa10fadf3b5009390d5ac9a72078ba03701c42af91022ef275df7cb17724689a23dca4e29ff1a7cd5e3a24135d021983e2726a28b00b1e&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il suo &lt;code>content&lt;/code> è &lt;code>+&lt;/code>, il like convenzionale di &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md">NIP-25&lt;/a>. Il tag &lt;code>e&lt;/code> indica l&amp;rsquo;event oggetto della reazione; il tag &lt;code>a&lt;/code> aggiunge la sua coordinata indirizzabile; il tag &lt;code>p&lt;/code> ne identifica l&amp;rsquo;autore; e il tag &lt;code>k&lt;/code> opzionale registra il kind dell&amp;rsquo;obiettivo come stringa.&lt;/p>
&lt;h3 id="implementazioni-attuali-nei-client">Implementazioni attuali nei client&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, un client Nostr per Android, definisce il &lt;a href="https://github.com/vitorpamplona/amethyst/blob/d06b83bd53c510e589d5ce13d46f6bd1a8206394/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip18Reposts/RepostEvent.kt">tipo di event repost&lt;/a> e il &lt;a href="https://github.com/vitorpamplona/amethyst/blob/d06b83bd53c510e589d5ce13d46f6bd1a8206394/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip25Reactions/ReactionEvent.kt">tipo di event reazione&lt;/a> nel proprio livello di protocollo attuale.&lt;/p>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, un client Nostr web, implementa &lt;a href="https://github.com/v0l/snort/blob/8b2e6cb6dc5a5e0b7e052b4ed89a9c5630444e95/packages/system/src/impl/nip18.ts">helper NIP-18 che includono la gestione dei tag dei link di citazione&lt;/a> e &lt;a href="https://github.com/v0l/snort/blob/8b2e6cb6dc5a5e0b7e052b4ed89a9c5630444e95/packages/system/src/impl/nip25.ts">crea tag di reazione agli event NIP-25&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/soapbox-pub/ditto">Ditto&lt;/a>, un server Mastodon e relay Nostr combinato, &lt;a href="https://github.com/soapbox-pub/ditto/blob/570fc4b26e5900ccb4085cfdb2cc86d08cdd9ade/src/components/RepostMenu.tsx">pubblica repost generici kind 16 con un tag &lt;code>k&lt;/code> e una coordinata &lt;code>a&lt;/code> sugli obiettivi indirizzabili&lt;/a> e &lt;a href="https://github.com/soapbox-pub/ditto/blob/570fc4b26e5900ccb4085cfdb2cc86d08cdd9ade/src/lib/nostrEvents.ts">applica la semantica delle reazioni kind 7 trattando l&amp;rsquo;ultimo tag &lt;code>e&lt;/code> come event obiettivo&lt;/a>.&lt;/p>
&lt;h3 id="come-funzionano-insieme">Come funzionano insieme&lt;/h3>
&lt;p>Un event kind 6 o kind 16 ridistribuisce un event esistente nei feed dei follower di chi effettua il repost, incorporando il JSON dell&amp;rsquo;event oppure puntando a una coordinata sostituibile. Un tag &lt;code>q&lt;/code> contrassegna una citazione all&amp;rsquo;interno di un altro event, così la ricostruzione del thread può contare i riferimenti senza trattare l&amp;rsquo;event che cita come una risposta, distinzione illustrata nella &lt;a href="https://github.com/nostr-protocol/nips/blob/master/18.md#quote-reposts">sezione sui quote repost&lt;/a>. Un event kind 7 lascia al suo posto l&amp;rsquo;event originale e vi associa soltanto il valore della reazione e i tag obiettivo, secondo il contratto della &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md">specifica delle reazioni&lt;/a>. I client che recuperano una pubkey vedono quindi i repost di quella pubkey come nuovi event kind 6 o 16 e le opinioni di quella pubkey come event kind 7 sui post altrui.&lt;/p>
&lt;hr>
&lt;p>Inviate un DM NIP-17 per condividere un progetto o una notizia attraverso il &lt;a href="https://github.com/andotherstuff/nostr-compass">progetto Nostr Compass&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #37</title><link>https://nostrcompass.org/it/newsletters/2026-08-26-newsletter/</link><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-08-26-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> tiene i segreti del signer remoto e del wallet fuori dall&amp;rsquo;archivio del browser, &lt;a href="https://github.com/Routstr/routstr-sdk">Routstr SDK&lt;/a> verifica la scoperta di provider proveniente dai relay, &lt;a href="https://gitworkshop.dev/npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl/relay.ngit.dev/postr">Postr&lt;/a> debutta come piccolo compositore Android, &lt;a href="https://github.com/TurkeyNostr/infans">Infans&lt;/a> cifra il monitoraggio familiare e la sincronizzazione tra genitori, &lt;a href="https://walls.rip/comms">walls.rip&lt;/a> trasporta chat cifrata con PGP su relay Nostr pubblici, e &lt;a href="https://git.nostrdev.com/stuff/pakstr">pakstr&lt;/a> rende esplicita la pubblicazione su Zapstore. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> lega i rumor di gift wrap ai loro seal. Le release coprono l&amp;rsquo;isolamento delle subscription, gli stati di profilo e i marcatori di uscita per relay. Il lavoro di protocollo arriva al rilascio dei thread di commenti, alle bozze su tetto di commissione e ricerca pagamenti per wallet connect, alle richieste di display per napplet e a un&amp;rsquo;iscrizione sperimentale dallo stesso account. Il numero si chiude con &lt;a href="https://nostrcompass.org/it/newsletters/2026-08-26-newsletter/#sei-anni-di-agosto-su-nostr">Sei anni di agosto su Nostr&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> tiene i segreti del signer remoto e del wallet fuori dall&amp;rsquo;archivio del browser, &lt;a href="https://github.com/Routstr/routstr-sdk">Routstr SDK&lt;/a> verifica la scoperta di provider proveniente dai relay, &lt;a href="https://gitworkshop.dev/npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl/relay.ngit.dev/postr">Postr&lt;/a> debutta come piccolo compositore Android, &lt;a href="https://github.com/TurkeyNostr/infans">Infans&lt;/a> cifra il monitoraggio familiare e la sincronizzazione tra genitori, &lt;a href="https://walls.rip/comms">walls.rip&lt;/a> trasporta chat cifrata con PGP su relay Nostr pubblici, e &lt;a href="https://git.nostrdev.com/stuff/pakstr">pakstr&lt;/a> rende esplicita la pubblicazione su Zapstore. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> lega i rumor di gift wrap ai loro seal. Le release coprono l&amp;rsquo;isolamento delle subscription, gli stati di profilo e i marcatori di uscita per relay. Il lavoro di protocollo arriva al rilascio dei thread di commenti, alle bozze su tetto di commissione e ricerca pagamenti per wallet connect, alle richieste di display per napplet e a un&amp;rsquo;iscrizione sperimentale dallo stesso account. Il numero si chiude con &lt;a href="https://nostrcompass.org/it/newsletters/2026-08-26-newsletter/#sei-anni-di-agosto-su-nostr">Sei anni di agosto su Nostr&lt;/a>.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="postr-debutta-come-piccolo-compositore-android">Postr debutta come piccolo compositore Android&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl/relay.ngit.dev/postr">Postr&lt;/a> è un compositore Android deliberatamente piccolo per note kind 1. La custodia della chiave privata resta in &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, un signer Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (signer locale) e NIP-46. La versione 1.0.0 porta una outbox durevole che sopravvive alla perdita di connettività e alla morte del processo, bozze private per account e allegati &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> con hash verificati e autorizzazione di upload delimitata.&lt;/p>
&lt;p>Una pubblicazione riesce dopo che Postr rilegge l&amp;rsquo;evento firmato identico e ne verifica la firma. I tentativi ripetuti mantengono lo stesso id evento. La pubblicazione usa i relay di scrittura della lista &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (lista relay) dell&amp;rsquo;autore più relay di bootstrap cifrati, oppure una lista personalizzata per account. Un &lt;a href="https://njump.me/nevent1qqsqxdwxa8k5e0ftf6j6q5ucs3u94ezgjqmyzwznqt99pyxxw23c74spz3mhxue69uhhyetvv9ujumn8d96zuer9wcx4nr0m">annuncio di repository&lt;/a> &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (git su Nostr) firmato e un &lt;a href="https://njump.me/nevent1qqs24gy97frkjkma8ys3rwc3jj8f0qrrmsxjwe39jxrhuemztrygr8qpz3mhxue69uhhyetvv9ujumn8d96zuer9wcspcsat">profilo di progetto kind 0&lt;/a> corrispondente sono pubblicati su &lt;code>relay.ngit.dev&lt;/code>. Feed, analytics, pubblicità e archiviazione delle chiavi restano fuori dall&amp;rsquo;app.&lt;/p>
&lt;h3 id="infans-cifra-il-monitoraggio-familiare-e-la-sincronizzazione-tra-genitori-su-nostr">Infans cifra il monitoraggio familiare e la sincronizzazione tra genitori su Nostr&lt;/h3>
&lt;p>I genitori possono tenere i dati di alimentazione, sonno e crescita sui propri telefoni e condividerli senza un fornitore di dati familiari. &lt;a href="https://github.com/TurkeyNostr/infans">Infans&lt;/a> è un tracker per neonati su Android che tratta un database Room locale come fonte di verità e pubblica eventi cifrati kind 30078 di &lt;a href="https://nostrcompass.org/it/topics/nip-78/">NIP-78&lt;/a> (dati specifici dell&amp;rsquo;applicazione) per backup e sincronizzazione con il partner. Il suo repository etichetta la cifratura locale come &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (cifratura del payload), ma l&amp;rsquo;implementazione usa AES-256-GCM mentre NIP-44 v2 richiede ChaCha20 con HMAC-SHA256, quindi i payload in modalità locale non dovrebbero essere presentati come compatibili con NIP-44.&lt;/p>
&lt;p>La &lt;a href="https://github.com/TurkeyNostr/infans/blob/main/README.md">sincronizzazione con il partner&lt;/a> usa il d-tag &lt;code>baby-tracker-sync&lt;/code>, mentre i backup personali usano &lt;code>baby-tracker-backup&lt;/code>. Le note asincrone viaggiano dentro il payload del partner. Il percorso Amber &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> documentato (signer locale) delega firma e cifratura al signer, ma il repository non fornisce alcun test di interoperabilità che dimostri che ogni percorso di backup e sincronizzazione produce testo cifrato NIP-44 v2. Il repository non presenta né una dichiarazione di dispositivo medico né una revisione di sicurezza esterna.&lt;/p>
&lt;h3 id="il-ghost-chat-di-wallsrip-porta-la-chat-cifrata-con-pgp-sui-relay-nostr-pubblici">Il Ghost Chat di walls.rip porta la chat cifrata con PGP sui relay Nostr pubblici&lt;/h3>
&lt;p>&lt;a href="https://walls.rip/comms">walls.rip&lt;/a> è un insieme di strumenti per comunicazione anonima la cui modalità Ghost Chat crea o importa un&amp;rsquo;identità OpenPGP nel browser. Il suo &lt;a href="https://github.com/KYC-rip/walls-rip/tree/cf40bda32df5f106007631b21afc3cd193ac0cda/src/components/ghostChat">client open source&lt;/a> cifra ogni messaggio con la chiave pubblica PGP del destinatario. La conversazione leggibile resta nell&amp;rsquo;archivio di sessione locale del dispositivo; l&amp;rsquo;applicazione non ha né account di chat né database centrale di messaggi.&lt;/p>
&lt;p>Il trasporto è Nostr reale, ma è deliberatamente specifico dell&amp;rsquo;app. Ghost Chat &lt;a href="https://github.com/KYC-rip/walls-rip/blob/cf40bda32df5f106007631b21afc3cd193ac0cda/src/utils/nostrService.ts">pubblica testo cifrato in formato armored come eventi kind 1&lt;/a> verso cinque relay predefiniti ed etichetta ogni evento con un tag stanza stabile derivato dall&amp;rsquo;impronta PGP del destinatario. Questo dà agli sviluppatori un esempio concreto di uso dei relay come trasporto di messaggi resistente alla censura, e mostra anche perché la consegna decentralizzata da sola non protegge i metadati e non è interoperabile con i messaggi diretti NIP-17.&lt;/p>
&lt;h3 id="pakstr-da-0130-a-0150-rende-esplicita-la-pubblicazione-su-zapstore">pakstr da 0.13.0 a 0.15.0 rende esplicita la pubblicazione su Zapstore&lt;/h3>
&lt;p>Dopo il &lt;a href="https://nostrcompass.org/en/newsletters/2026-07-29-newsletter/#pakstr-031">lavoro di packaging e Amber della 0.3.1 a luglio&lt;/a>, &lt;a href="https://git.nostrdev.com/stuff/pakstr">pakstr&lt;/a> è una CLI che trasforma una cartella di risorse web in un APK Android firmato e lo pubblica su Zapstore con una chiave Nostr. La &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.13.0">0.13.0&lt;/a> aggiunge il versionamento automatico delle release. Le successive 0.13.1 fino a 0.13.3 riparano la pubblicazione su Blossom: &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.13.1">l&amp;rsquo;autorizzazione ora usa base64url&lt;/a>, &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.13.2">gli upload portano un Content-Digest&lt;/a>, e &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.13.3">l&amp;rsquo;evento applicazione di Zapstore è pubblicato prima dell&amp;rsquo;upload su Blossom&lt;/a>.&lt;/p>
&lt;p>La &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.14.0">0.14.0&lt;/a> valida il publisher Zapstore prima che una pubblicazione proceda. La &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.15.0">0.15.0&lt;/a> scrive i metadati della scheda su eventi applicazione kind 32267 e mette le note di rilascio nel content degli eventi release kind 30063, così che la scheda Zapstore di un&amp;rsquo;app pacchettizzata possa portare nome, riassunto e note senza un passaggio manuale separato.&lt;/p>
&lt;h3 id="heterodyne-specifica-persona-portabili-e-comunicazione-sociale-cifrata">Heterodyne specifica persona portabili e comunicazione sociale cifrata&lt;/h3>
&lt;p>&lt;a href="https://radicle.network/nodes/iris.radicle.network/rad%3Az2zX5XvPiggGJvCn8DPkp1hRNGA5">Heterodyne&lt;/a> è una famiglia di protocolli orientata alla specifica per persona portabili, comunicazione autenticata, controllo del proprio dispositivo e interazione sociale. Il suo &lt;a href="https://radicle.network/nodes/iris.radicle.network/rad%3Az2zX5XvPiggGJvCn8DPkp1hRNGA5">README attuale&lt;/a> compone quattro livelli esistenti: eventi Nostr firmati, &lt;a href="https://radicle.xyz">Radicle&lt;/a> (git peer-to-peer) come archiviazione durevole, &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (messaggistica di gruppo MLS su Nostr) per conversazioni cifrate dirette e di gruppo, e log di eventi di chiave &lt;a href="https://arxiv.org/abs/1907.02143">KERI&lt;/a> (Key Event Receipt Infrastructure) per la rotazione dell&amp;rsquo;identità. Una persona è descritta come un npub Nostr a radice fredda più un log KERI accettato; la firma ordinaria usa chiavi di epoca rotanti, mentre le identità dei nodi Radicle sono delegate con doppia prova.&lt;/p>
&lt;p>La famiglia divide quel lavoro in &lt;a href="https://radicle.network/nodes/iris.radicle.network/rad%3Az2zX5XvPiggGJvCn8DPkp1hRNGA5">quattro bozze 0.x versionate in modo indipendente&lt;/a>. Core detiene identità, verifica dei log di eventi di chiave, byte canonici Nostr e il substrato di repository Radicle; Comms detiene le buste native Nostr, i livelli di privacy, la pubblicazione e le conversazioni Marmot; e Social detiene il following pubblico, le interazioni e le liste. Control, per l&amp;rsquo;iscrizione e i permessi del proprio dispositivo, è incompleto e non può essere rivendicato. Questi documenti restano bozze che possono rompersi prima della 1.0, e questo numero presenta la famiglia prima che sia arrivata qualsiasi release di client Heterodyne.&lt;/p>
&lt;h2 id="release">Release&lt;/h2>
&lt;h3 id="nostr-java-v208-isolamento-delle-subscription-e-nip-44-portabile">Nostr Java v2.0.8: isolamento delle subscription e NIP-44 portabile&lt;/h3>
&lt;p>Una query gift wrap contro un relay con cinque eventi ne restituiva zero, due o sei a caso, perché &lt;a href="https://github.com/tcheeric/nostr-java">Nostr Java&lt;/a>, una libreria Java per dialogare con i relay e cifrare payload Nostr, consegnava ogni frame in ingresso a tutti i listener della connessione. La &lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v2.0.8">versione 2.0.8&lt;/a> indirizza &lt;code>EVENT&lt;/code>, &lt;code>EOSE&lt;/code> e &lt;code>CLOSED&lt;/code> alla subscription che quei frame nominano, così il segnale di fine eventi memorizzati di una query non può più chiuderne un&amp;rsquo;altra. I frame con ambito di connessione come &lt;code>NOTICE&lt;/code>, &lt;code>OK&lt;/code> e &lt;code>AUTH&lt;/code> raggiungono ancora tutti i listener.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (cifratura del payload) nella stessa &lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v2.0.8">release&lt;/a> non richiede più un provider JCE registrato nel processo. La cifratura funzionava solo dopo aver generato una chiave in quella JVM, cosa che registrava BouncyCastle come effetto collaterale, e falliva su Android, dove aggiungere un provider chiamato &amp;ldquo;BC&amp;rdquo; non fa nulla. Entrambi i percorsi di cifratura ora usano il motore ChaCha20 leggero di BouncyCastle, e la generazione delle chiavi non altera più lo stato JCE globale del processo. Chi si affidava alla libreria per registrare il provider deve registrarlo da sé. La &lt;a href="https://github.com/tcheeric/nostr-java/issues/537">dipendenza di NIP-44 dal provider JCE&lt;/a> è la issue che questo chiude.&lt;/p>
&lt;h3 id="noornote-v136-stati-di-profilo-e-annunci">NoorNote v1.3.6: stati di profilo e annunci&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> è un client Nostr per desktop, web e Android. Una settimana dopo che &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-19-newsletter/#noornote-134-joining-encrypted-communities-from-an-invite-link">la 1.3.4 ha aggiunto gli ingressi cifrati nelle community&lt;/a>, la &lt;a href="https://github.com/77elements/noornote/releases/tag/v1.3.6">versione 1.3.6&lt;/a> mostra &lt;a href="https://nostrcompass.org/it/topics/nip-38/">NIP-38&lt;/a> (stati utente) sotto il nome &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> (verificato via dominio) di un profilo: gli eventi indirizzabili kind &lt;code>30315&lt;/code>, con scadenza opzionale, che portano uno stato generale o musicale su una riga. Un clic su quella riga imposta lo stato di chi guarda.&lt;/p>
&lt;p>Gli &lt;a href="https://github.com/77elements/noornote/releases/tag/v1.3.6">annunci&lt;/a> da &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> (offerte di marketplace kind &lt;code>30402&lt;/code>) ora vengono resi in tutta l&amp;rsquo;app, quindi l&amp;rsquo;addon marketplace serve solo per comprare e vendere. Le note private di soprannome sui profili appaiono anche in arancione di avviso, con icona nota piena e anello arancione sull&amp;rsquo;avatar.&lt;/p>
&lt;h3 id="nostrord-v290-stato-di-gruppo-e-media-per-relay">nostrord v2.9.0: stato di gruppo e media per relay&lt;/h3>
&lt;p>Lasciare un gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (gruppi gestiti dal relay) su un host prima sopprimeva lo stesso id di gruppo su ogni altro relay, perché &lt;a href="https://github.com/nostrord/nostrord">nostrord&lt;/a>, un client multipiattaforma per community ospitate su relay, indicizzava i suoi marcatori di uscita ed eliminazione per id nudo. I &lt;a href="https://github.com/nostrord/nostrord/pull/253">marcatori di uscita ed eliminazione delimitati per relay&lt;/a> mantengono quelle soppressioni sull&amp;rsquo;host che le ha prodotte, così un gruppo che condivide un id fra due relay non viene più abbandonato né scartato in coppia. Un ingresso che il relay rifiuta perché si è già membri ora conta come successo e cancella il marcatore locale, che era stato uno stato assorbente: l&amp;rsquo;autoriparazione liberava uno slot mentre l&amp;rsquo;avvio a freddo ripristinava l&amp;rsquo;altro.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.9.0">versione 2.9.0&lt;/a> rende anche le &lt;a href="https://github.com/nostrord/nostrord/pull/254">immagini incorporate in markdown&lt;/a> che altri client scrivono come &lt;code>![alt](url)&lt;/code>, invece di mostrare la punteggiatura markdown attorno a una URL già rilevata. I messaggi diretti adottano &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (DM privati in gift wrap) e i &lt;a href="https://github.com/nostrord/nostrord/pull/275">rumor di file kind &lt;code>15&lt;/code>&lt;/a>, così un allegato cifrato inviato da Jumble viene scaricato, decifrato e mostrato, e gli allegati in uscita sono cifrati prima dell&amp;rsquo;upload. Questo tag consegna ora il &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-19-newsletter/#nostrord-implements-an-unmerged-encryption-key-proposal">lavoro sulla chiave di cifratura NIP-4e trattato la settimana scorsa&lt;/a>. La proposta resta non integrata, e nostrord dice che la sua implementazione segue il comportamento di Jumble in produzione dove quel comportamento differisce dalla bozza.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="shopstr-tiene-i-segreti-del-signer-remoto-e-del-wallet-fuori-dallarchivio-del-browser">Shopstr tiene i segreti del signer remoto e del wallet fuori dall&amp;rsquo;archivio del browser&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> è un marketplace web per annunci &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a>. Dopo il &lt;a href="https://nostrcompass.org/en/newsletters/2026-07-22-newsletter/#shopstr-binds-payment-validation-to-signed-receipts-and-server-side-prices">lavoro sull&amp;rsquo;integrità dei pagamenti del mese scorso&lt;/a>, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/437">smette di scrivere in &lt;code>localStorage&lt;/code> i segreti serializzati del signer bunker&lt;/a>. Un payload bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota) aveva incluso la URL &lt;code>bunker://&lt;/code> attiva e la chiave privata di app generata, così qualsiasi script nell&amp;rsquo;origine Shopstr poteva riprendere la sessione di firma remota. I dati del bunker ora restano in memoria per la sessione corrente, i payload bunker residui vengono rimossi quando vengono trovati, e i tipi di signer diversi da bunker mantengono il loro comportamento di archiviazione precedente.&lt;/p>
&lt;p>La &lt;a href="https://github.com/shopstr-eng/shopstr/pull/436">modifica NWC&lt;/a> corrispondente fa lo stesso per le credenziali &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (wallet connect). Shopstr aveva memorizzato l&amp;rsquo;intera stringa &lt;code>nostr+walletconnect://&lt;/code>, incluso il segreto usato per le azioni sul wallet, come normale dato del browser, e la riusava al checkout. Le stringhe di connessione e i metadati del wallet ora restano in memoria, e le copie memorizzate più vecchie vengono cancellate quando i dati locali vengono letti. Gli script che già girano nell&amp;rsquo;origine Shopstr durante una sessione attiva possono ancora vedere quei valori in memoria.&lt;/p>
&lt;h3 id="routstr-verifica-la-scoperta-di-provider-proveniente-dai-relay">Routstr verifica la scoperta di provider proveniente dai relay&lt;/h3>
&lt;p>Un singolo relay malevolo poteva prima decidere di quali provider di inferenza si fidava un client Routstr. &lt;a href="https://github.com/Routstr/routstr-sdk">Routstr SDK&lt;/a> è la libreria TypeScript dietro Routstr, un marketplace che scopre provider di IA su Nostr e li paga con Cashu. La &lt;a href="https://github.com/Routstr/routstr-sdk/pull/47">correzione della scoperta di questa settimana&lt;/a> verifica ogni annuncio di provider, elenco di modelli e recensione consegnati dai relay (kind 38421, 38423 e 38425) prima che un consumatore li veda, così una recensione che nomina una pubkey fidata ma porta una firma non valida non entra più nel ranking.&lt;/p>
&lt;p>I &lt;a href="https://github.com/Routstr/routstr-sdk/pull/47">timestamp molto nel futuro&lt;/a> vengono scartati prima della selezione della &amp;ldquo;recensione più recente&amp;rdquo;. Gli eventi oltre quindici minuti avanti rispetto all&amp;rsquo;orologio locale vengono rimossi sul percorso live e alla lettura dell&amp;rsquo;archivio persistente, il che impedisce a un &lt;code>created_at&lt;/code> falsificato di superare recensioni firmate validamente attraverso i riavvii. Se le recensioni fidate non sono disponibili, il gate delle recensioni fallisce in chiusura ed esclude dal ranking di pagamento i provider senza recensione fino all&amp;rsquo;arrivo delle recensioni. Gli operatori possono ancora abilitare un provider a mano.&lt;/p>
&lt;h3 id="nostr-tools-lega-i-rumor-di-gift-wrap-ai-loro-seal">nostr-tools lega i rumor di gift wrap ai loro seal&lt;/h3>
&lt;p>Scartare un evento &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (gift wrap) prima decifrava il wrap, decifrava il seal e restituiva il rumor interno senza controllare da chi venisse il seal. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> è una libreria JavaScript di utilità del protocollo Nostr. La &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/545">correzione di scarto di questa settimana&lt;/a> richiede che il wrap sia kind 1059, che il seal sia kind 13 con firma valida, e che il &lt;code>pubkey&lt;/code> del rumor sia uguale al &lt;code>pubkey&lt;/code> del seal. Decifrare il seal prova già il controllo di &lt;code>seal.pubkey&lt;/code>. Senza l&amp;rsquo;ultimo controllo, chiunque potrebbe sigillare un rumor che nomina qualcun altro come autore e far sì che un client attribuisca il messaggio a quella vittima.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (DM privati in gift wrap) usa lo stesso percorso di scarto, quindi il legame si applica ai DM privati. Lo &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/545">scarto in batch&lt;/a> ora salta un wrap che non passa quei controlli invece di lanciare un&amp;rsquo;eccezione, perché i gift wrap non sono richiesti e un solo evento ostile scarterebbe altrimenti il resto di una query al relay.&lt;/p>
&lt;h3 id="haven-aggiunge-amministrazione-firmata-del-relay-e-un-browser-locale-di-note">Haven aggiunge amministrazione firmata del relay e un browser locale di note&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/haven">Haven&lt;/a> è un relay Nostr self-hosted e un server di media Blossom. La sua &lt;a href="https://github.com/barrydeen/haven/pull/135">console di amministrazione&lt;/a> appena integrata espone chiamate di gestione NIP-86 su ogni endpoint del relay, con ogni richiesta autenticata da un evento NIP-98 del proprietario configurato. Gli operatori possono gestire ban, liste di permessi, regole sui kind, nomi del relay e media memorizzati senza dare al relay una chiave di firma. Un browser di note in sola lettura mantiene opachi i kind cifrati e carica i media remoti solo dopo un clic, evitando una richiesta automatica che rivelerebbe l&amp;rsquo;indirizzo IP dell&amp;rsquo;operatore a un host esterno.&lt;/p>
&lt;p>La stessa &lt;a href="https://github.com/barrydeen/haven/pull/135">modifica di Haven&lt;/a> aggiunge grafici di traffico persistenti e corregge un guasto con LMDB predefinito in cui contare gli eventi memorizzati poteva ciclare all&amp;rsquo;infinito, saturare un core della CPU e bloccare le chiamate di statistiche successive. Haven ora usa il contatore del backend dove termina e una scansione limitata degli eventi altrimenti. Il progetto ha aggiunto i suoi primi 23 test su paginazione degli eventi, eliminazione, persistenza delle metriche, controlli sul proprietario e firme di richiesta legate alla URL.&lt;/p>
&lt;h3 id="amethyst-sposta-lautorizzazione-blossom-fuori-dai-thread-di-caricamento-immagini">Amethyst sposta l&amp;rsquo;autorizzazione Blossom fuori dai thread di caricamento immagini&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, un client Nostr per Android, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3991">non aspetta più l&amp;rsquo;autorizzazione di lettura Blossom sui thread del dispatcher OkHttp&lt;/a>. L&amp;rsquo;interceptor ora avvia la firma fuori dal thread di rete, mentre il fetcher di immagini attende una firma condivisa per host e ritenta la richiesta del blob protetto. Una raffica di immagini soggette a controllo non occupa quindi più ogni slot di connessione per host mentre un signer risponde.&lt;/p>
&lt;p>La stessa &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3991">patch di Amethyst&lt;/a> allinea la codifica del token a BUD-11: Base64url senza padding, ambito &lt;code>server&lt;/code> e nessun tag &lt;code>x&lt;/code> specifico del blob, permettendo a un token di coprire più blob sullo stesso host. Nuovi test di concorrenza esercitano cache, scadenza, ritentativi firmati e sedici chiamanti simultanei che condividono una firma.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-specifica-del-protocollo">Aggiornamenti NIP e lavoro di specifica del protocollo&lt;/h2>
&lt;h3 id="nip">NIP&lt;/h3>
&lt;p>Snort e Ditto ora usano &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> (thread di commenti) per le normali risposte testuali, convergendo su kind 1111 mantenendo percorsi di compatibilità; questo non stabilisce un kind di risposta unico per tutto il protocollo. Dopo che l&amp;rsquo;&lt;a href="https://nostrcompass.org/en/newsletters/2026-06-24-newsletter/#kind-1111-as-reply-to-kind-1-notes">emendamento di giugno&lt;/a> ha rimosso il divieto di usare NIP-22 sulle note kind 1, un&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/pull/2448">aggiunta integrata&lt;/a> a &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> (emoji personalizzate) elenca kind &lt;code>1111&lt;/code> fra gli eventi che possono portare tag &lt;code>emoji&lt;/code>, con uno shortcode in &lt;code>content&lt;/code> risolto da quel tag. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, un client Nostr web, &lt;a href="https://github.com/v0l/snort/commit/420ed60e2ff43bd373f2583e171a77002ec9f3a0">ora scrive ogni risposta come kind 1111&lt;/a>, carica quei commenti tramite tag di ambito radice &lt;code>E&lt;/code>/&lt;code>A&lt;/code> in maiuscolo, e accetta ancora un percorso &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> (tag di risposta kind 1) opzionale per le note più vecchie. &lt;a href="https://github.com/soapbox-pub/ditto">Ditto&lt;/a>, server Mastodon e relay Nostr combinati, &lt;a href="https://github.com/soapbox-pub/ditto/commit/8a0ffc6e3a5d9202ffc452fa0de8ae33b5883384">pubblica ogni risposta come commento NIP-22&lt;/a>, kind &lt;code>1111&lt;/code> per il testo e kind &lt;code>1244&lt;/code> per la voce, continuando a rendere le risposte kind 1 esistenti. I client che capiscono solo NIP-10 non vedranno la nuova forma. I post di primo livello restano kind 1.&lt;/p>
&lt;p>Una richiesta &lt;code>pay_invoice&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) attualmente non ha un modo standard perché il client specifichi un tetto alla commissione di routing. Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2444">proposta aperta sul tetto di commissione&lt;/a> aggiunge un parametro opzionale &lt;code>max_fee&lt;/code>, in millisatoshi, a &lt;code>pay_invoice&lt;/code>. I wallet che rispettano il budget NON DEVONO inviare un pagamento il cui costo di routing superi &lt;code>amount + max_fee&lt;/code> e DEVONO restituire &lt;code>FEE_LIMIT_EXCEEDED&lt;/code>, definito come nessun addebito e nessun pagamento tentato. Le implementazioni che lo supportano DEVONO includere &lt;code>fees_paid&lt;/code> nella risposta perché il client possa riconciliare. Le implementazioni senza supporto al limite di commissione ignorano il parametro sconosciuto, e i client dovrebbero trattare un campo &lt;code>fees_paid&lt;/code> mancante come segnale che il tetto potrebbe non essere stato applicato. La modifica non aggiunge kind di evento e resta una proposta fino all&amp;rsquo;integrazione.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2451">proposta aperta su etichette di lingua in NIP-32&lt;/a> standardizzerebbe &lt;code>[&amp;quot;l&amp;quot;, &amp;quot;&amp;lt;BCP-47&amp;gt;&amp;quot;, &amp;quot;lang&amp;quot;]&lt;/code> per la lingua del testo dichiarata dall&amp;rsquo;autore. Poiché il tag &lt;code>l&lt;/code> di una sola lettera è già indicizzabile dai relay, i client potrebbero chiedere un feed in giapponese con &lt;code>{&amp;quot;#l&amp;quot;:[&amp;quot;ja&amp;quot;]}&lt;/code> senza aggiornare il relay né ricorrere a un rilevamento di lingua poco affidabile dopo il download. La bozza migra anche gli esempi di lingua nei report di relay NIP-66, nei metadati immagine NIP-68 e nelle tracce audio NIP-71 nello stesso namespace. Le etichette restano affermazioni non verificate dell&amp;rsquo;autore, e la modifica non è integrata.&lt;/p>
&lt;h3 id="nostr-wallet-connect">Nostr Wallet Connect&lt;/h3>
&lt;p>Dopo un timeout, una riconnessione o una notifica mancata, un client wallet connect ha bisogno di un modo per chiedere un singolo record di pagamento senza sapere quale protocollo di pagamento Bitcoin l&amp;rsquo;ha creato. Una &lt;a href="https://github.com/nostr-wallet-connect/nwc/pull/5">bozza aperta sulla ricerca dei pagamenti&lt;/a> nel &lt;a href="https://github.com/nostr-wallet-connect/nwc">repository di estensioni NWC&lt;/a> definisce l&amp;rsquo;opzionale NWC-09 &lt;code>lookup_payment&lt;/code> accanto al nucleo NIP-47. La richiesta usa esattamente un selettore: un &lt;code>transaction_id&lt;/code> stabile con ambito wallet, i campi &lt;code>payment_hash&lt;/code> e/o &lt;code>invoice&lt;/code> compatibili con BOLT11 già usati da &lt;code>lookup_invoice&lt;/code>, oppure un &lt;code>payment_type&lt;/code> più un oggetto &lt;code>lookup&lt;/code> tipizzato definito da un&amp;rsquo;altra estensione. Un risultato riuscito restituisce una busta comune (&lt;code>transaction_id&lt;/code>, &lt;code>type&lt;/code>, &lt;code>state&lt;/code>, &lt;code>payment_type&lt;/code>, &lt;code>amount&lt;/code> in msat, timestamp, &lt;code>fees_paid&lt;/code> e &lt;code>metadata&lt;/code> opzionali, e un oggetto &lt;code>details&lt;/code> discriminato) e DEVE risolversi in esattamente un record visibile a quella connessione. Il wallet NON DEVE rivelare se esiste un record inaccessibile, e un selettore che corrisponde a più record visibili restituisce &lt;code>MULTIPLE_MATCHES&lt;/code>. Gli stati sono &lt;code>pending&lt;/code>, &lt;code>accepted&lt;/code>, &lt;code>settled&lt;/code>, &lt;code>failed&lt;/code>, &lt;code>expired&lt;/code> e &lt;code>canceled&lt;/code>. La stessa proposta aggiunge dettagli di offerta e pagamento BOLT12 in NWC-12 che riusano quella busta. Entrambi i documenti sono ancora bozze.&lt;/p>
&lt;h3 id="nap">NAP&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/napplet/naps/pull/97">bozza aperta NAP-DISPLAY&lt;/a> permetterebbe a un napplet di chiedere al proprio host i display a pixel che ha il permesso di usare. Si appoggia alla &lt;a href="https://nostrcompass.org/it/topics/nip-5d/">proposta di web applet NIP-5D&lt;/a>, non integrata e trattata separatamente, che la Newsletter #17 ha presentato e che resta fuori dall&amp;rsquo;insieme dei NIP integrati. La bozza definisce &lt;code>display.list&lt;/code>, che restituirebbe identificatori stabili opachi con larghezza e altezza logiche e un tipo scelto a runtime (&lt;code>lcd&lt;/code>, &lt;code>eink&lt;/code>, &lt;code>led-matrix&lt;/code> o &lt;code>other&lt;/code>), e &lt;code>display.push&lt;/code>, che invierebbe un batch non vuoto di pixel sRGB da tre byte indirizzati per coordinate. La scoperta a runtime mapperebbe l&amp;rsquo;RGB logico su profondità di colore nativa, orientamento e refresh e PUÒ ruotare, riordinare, quantizzare, applicare dithering o unire gli aggiornamenti. La policy della shell controllerebbe quali display un napplet può elencare o scrivere e PUÒ rifiutare, limitare la frequenza o porre un tetto ai batch. Prima di applicare qualsiasi pixel, il runtime validerebbe l&amp;rsquo;intero batch, così un push fallito non cambierebbe nulla sul dispositivo. Il successo significherebbe che il batch è stato accettato, non che il refresh dell&amp;rsquo;hardware sia finito.&lt;/p>
&lt;h3 id="marmot">Marmot&lt;/h3>
&lt;p>Un &lt;a href="https://github.com/marmot-protocol/marmot/pull/417">esperimento aperto di Marmot&lt;/a> sostituirebbe la bozza External Commit ritirata per l&amp;rsquo;iscrizione dallo stesso account con una forma di Commit delimitata. &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, il protocollo di messaggistica di gruppo MLS su Nostr, assegna in quella bozza il componente senza dati &lt;code>0x800d&lt;/code> (&lt;code>marmot.same-account-membership.v1&lt;/code>) come marcatore di comportamento negoziato. Finché è richiesto, una foglia corrente può redigere esattamente un Add inline dello stesso account oppure da uno a quattro Remove inline di fratelli, ciascuno con un UpdatePath normale e priorità di convergenza ordinaria, e ogni Commit DEVE lasciare al più cinque foglie correnti per account. L&amp;rsquo;accoppiamento usa un QR effimero mostrato dallo sponsor (&lt;code>marmot-pairing-v1:&lt;/code>) il cui segreto alimenta HKDF-SHA256 e ChaCha20-Poly1305 su un canale indipendente dal vettore. Prove kind &lt;code>453&lt;/code> solo locali legano la sessione alla chiave di account condivisa e non vengono mai inviate ai relay. Dopo un Welcome corrispondente, il primo payload applicativo di chi entra è una conferma kind &lt;code>452&lt;/code> non resa, legata ai digest di Welcome e GroupInfo, così che un Welcome identico byte per byte possa essere recuperato senza consumare di nuovo il KeyPackage. Lo sponsor accoppiato è la radice di fiducia di chi entra per quel ramo e non prova finalità globale. Un documento complementare sulla sincronizzazione degli account resta esplorativo e non interoperabile. L&amp;rsquo;esperimento non fa parte del profilo base adottato.&lt;/p>
&lt;h2 id="sei-anni-di-agosto-su-nostr">Sei anni di agosto su Nostr&lt;/h2>
&lt;p>Gli agosti seguono un solo problema di interoperabilità: come un client nomina un obiettivo e vi allega un riscontro. Il &lt;a href="https://github.com/nostr-protocol/nostr">repository originale del protocollo&lt;/a> non ha registrato commit ad agosto 2021, quindi il nucleo degli eventi firmati è rimasto fermo. &lt;a href="https://nostrcompass.org/it/topics/nip-25/">NIP-25&lt;/a> (reazioni) ha poi lasciato la casella dei soli kind 1 nel 2022. I record sostituibili regolari hanno guadagnato coordinate &lt;code>naddr&lt;/code> e &lt;code>a&lt;/code> con identificatore vuoto nel 2023; nel 2024 la &lt;a href="https://github.com/nostr-protocol/nips/commit/ca3c52e3e74f0a4679f1c6c0d9ac6461ea748d2d">classe sostituibile parametrizzata separata è stata rinominata eventi indirizzabili&lt;/a> senza cambiare il formato di trasmissione. Le reazioni si sono spostate su media esterni nel 2025. Il kind 1111 di &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> (thread di commenti) ha raggiunto client in produzione nel 2026. La progressione va da un documento di protocollo fermo a un vocabolario condiviso di risposte e reazioni che funziona su note, record sostituibili e oggetti fuori dalla rete.&lt;/p>
&lt;h3 id="agosto-2021">Agosto 2021&lt;/h3>
&lt;p>La &lt;a href="https://api.github.com/repos/nostr-protocol/nostr/commits?since=2021-08-01T00:00:00Z&amp;amp;until=2021-08-31T23:59:59Z">finestra di commit di agosto 2021&lt;/a> nel repository originale del protocollo è vuota. L&amp;rsquo;ultima modifica prima di quel mese inattivo fu la bozza NIP-05 del 18 giugno, che aggiunse identificatori di dominio DNS come puntatore leggibile da un umano verso una chiave pubblica. &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> (identificatori di dominio) è passato più tardi a un file JSON well-known, ma a metà 2021 era ancora una ricerca TXT DNS. Agosto non ha esteso quel lavoro sugli identificatori né aggiunto un nuovo kind di evento o messaggio di relay.&lt;/p>
&lt;p>La stessa finestra vuota compare negli strumenti che già esistevano accanto alla specifica. &lt;a href="https://github.com/fiatjaf/noscl/commits?since=2021-08-01&amp;amp;until=2021-09-01">noscl&lt;/a>, un client a riga di comando creato a gennaio 2021, non ha registrato commit ad agosto; nemmeno &lt;a href="https://github.com/nbd-wtf/go-nostr/commits?since=2021-08-01&amp;amp;until=2021-09-01">go-nostr&lt;/a> o &lt;a href="https://github.com/nbd-wtf/nostr-tools/commits?since=2021-08-01&amp;amp;until=2021-09-01">nostr-tools&lt;/a>. L&amp;rsquo;attività di protocollo è ripresa solo a fine anno, quando il repository ha assegnato &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> (richieste di eliminazione degli eventi) e ha sostituito lo schema DNS con un file JSON well-known di identificatori. Agosto 2021 è la fase inattiva fra la bozza di identificatori di giugno e il lavoro su eliminazione e JSON well-known di dicembre, mentre il &lt;a href="https://fiatjaf.com/nostr.html">modello di eventi firmati e relay&lt;/a> reggeva così come era scritto.&lt;/p>
&lt;h3 id="agosto-2022">Agosto 2022&lt;/h3>
&lt;p>Il 19 agosto, una &lt;a href="https://github.com/nostr-protocol/nips/commit/7af2540c6e392d5cb789c743b1dd237294388649">modifica a NIP-25&lt;/a> ha esteso gli obiettivi delle reazioni kind 7 dalle note testuali kind 1 ad altre note. L&amp;rsquo;evento kind 7 e la convenzione &lt;code>+&lt;/code>/&lt;code>-&lt;/code> erano già nella bozza. Quella modifica di interoperabilità ha permesso a un like, un dislike o un&amp;rsquo;emoji di attaccarsi a un profilo, a una lista di follow o a qualsiasi kind di evento successivo che riusasse gli stessi tag &lt;code>e&lt;/code> e &lt;code>p&lt;/code>.&lt;/p>
&lt;p>L&amp;rsquo;attuale &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md">specifica NIP-25&lt;/a> mantiene quella generalizzazione: una reazione indica reazioni dell&amp;rsquo;utente ad altri eventi, e un obiettivo indirizzabile riceve anche un tag &lt;code>a&lt;/code> con coordinate &lt;code>kind:pubkey:d-tag&lt;/code>. &lt;a href="https://github.com/vitorpamplona/amethyst/blob/main/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip25Reactions/ReactionEvent.kt">Amethyst&lt;/a>, un client Android, implementa quel contratto nel suo builder di reazioni. Il builder accetta qualsiasi evento, scrive tag &lt;code>e&lt;/code>, &lt;code>p&lt;/code> e &lt;code>k&lt;/code>, e aggiunge un tag &lt;code>a&lt;/code> quando l&amp;rsquo;obiettivo è un evento indirizzabile. Questo ha generalizzato gli obiettivi delle reazioni oltre il kind 1; modifiche di agosto successive hanno aggiunto coordinate stabili e tag di contesto per i commenti.&lt;/p>
&lt;p>Anche il software di relay stava traducendo regole sui tag in comportamento di archiviazione. Il 17 agosto, nostr-rs-relay &lt;a href="https://github.com/scsibug/nostr-rs-relay/commit/035cf34673ae23407bda6656eef505b3178482ab">ha smesso di trattare ogni valore di tag dall&amp;rsquo;aspetto esadecimale come chiave di indice binaria&lt;/a>. Ha limitato quell&amp;rsquo;ottimizzazione ai tag di una sola lettera e ai valori esadecimali minuscoli, preservando i normali tag testuali invece di decodificarli in una forma che i filtri non potevano far corrispondere. Quel mese ha così unito due lati dell&amp;rsquo;interoperabilità: le specifiche hanno ampliato ciò che un&amp;rsquo;interazione poteva prendere come obiettivo, mentre un relay correggeva come quei tag obiettivo venivano indicizzati e recuperati.&lt;/p>
&lt;h3 id="agosto-2023">Agosto 2023&lt;/h3>
&lt;p>Il 24 agosto, &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (identificatori bech32) &lt;a href="https://github.com/nostr-protocol/nips/commit/208dee210249f84496ddfa823542d023e23b3edb">ha definito come codificare un evento sostituibile non parametrizzato come naddr&lt;/a>. Il campo identificatore, il tag &lt;code>d&lt;/code>, è diventato una stringa vuota per i kind che si sostituiscono per sola pubkey e kind, come metadati e liste di contatti. Cinque giorni dopo, &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> (il protocollo base di eventi e relay) &lt;a href="https://github.com/nostr-protocol/nips/commit/e50bf508d9014cfb19bfa8a5c4ec88dc4788d490">ha aggiunto il formato a-tag corrispondente&lt;/a>: &lt;code>kind:pubkey:&lt;/code> con due punti finali e senza identificatore. I client potevano ora puntare a un record sostituibile senza attendere un id di evento specifico che la sostituzione successiva avrebbe invalidato.&lt;/p>
&lt;p>L&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/blob/master/19.md">attuale testo di NIP-19&lt;/a> dice ancora a chi implementa di usare una stringa vuota per quegli eventi sostituibili. &lt;a href="https://github.com/nbd-wtf/nostr-tools/blob/master/nip19.ts">nostr-tools&lt;/a>, la libreria JavaScript di identificatori, codifica quel campo tramite &lt;code>naddrEncode&lt;/code>, così chi la chiama può passare un identificatore vuoto e produrre una coordinata condivisibile. Il lavoro di agosto 2023 ha reso lo stato sostituibile qualcosa che un commento, una reazione o un link di condivisione potevano nominare dopo che l&amp;rsquo;evento sottostante era stato sostituito. L&amp;rsquo;agosto successivo ha standardizzato la terminologia della classe sostituibile parametrizzata collegata, mentre tag di commento successivi hanno riusato la grammatica delle coordinate come &lt;code>A&lt;/code> e &lt;code>a&lt;/code>.&lt;/p>
&lt;p>I payload privati stavano diventando portabili nello stesso periodo. Il 24 agosto, rust-nostr &lt;a href="https://github.com/nostrdevkit/nostr/commit/39e581d398d926ff37a6b57a1c6d5fceae270d77">ha aggiunto funzioni di cifratura e decifratura NIP-44 ai suoi binding JavaScript&lt;/a>, esponendo lo schema versionato di chiave di conversazione alle applicazioni web accanto ai chiamanti Rust nativi. Il 22 agosto, Amethyst &lt;a href="https://github.com/vitorpamplona/amethyst/commit/fa4257ad7d7afa76ccb368b4cf6cadefa39461ba">ha separato la cifratura NIP-44 dal formato dell&amp;rsquo;evento di messaggistica&lt;/a>, riflettendo la separazione di protocollo fra come il contenuto è cifrato e come un&amp;rsquo;applicazione lo trasporta. Le coordinate stabili hanno reso gli oggetti pubblici più facili da referenziare; le API di cifratura riusabili hanno reso il contenuto privato più facile da spostare fra implementazioni senza legarlo a un kind di messaggio.&lt;/p>
&lt;p>Lo stesso mese ha portato anche finanziamenti per lavoro adiacente su isolamento delle chiavi, interfacce e formazione. Un &lt;a href="https://github.com/OpenSats/website/commit/acd33f11b7529c34a846e8c4b4a6c63e7187f970">ciclo di sovvenzioni OpenSats del 17 agosto&lt;/a> ha assegnato le sue sovvenzioni del Nostr Fund ad Amber, al design condiviso dell&amp;rsquo;interfaccia Nostr e alla formazione sui casi d&amp;rsquo;uso di Nostr. La sovvenzione di Amber si concentrava sul mantenere le chiavi di firma in un&amp;rsquo;applicazione Android dedicata tramite NIP-46, mentre le sovvenzioni su design e formazione affrontavano l&amp;rsquo;onboarding e schemi applicativi riusabili. Il sistema Nostr più ampio avanzava attraverso commit di specifica, isolamento delle chiavi, lavoro sull&amp;rsquo;interfaccia e formazione degli sviluppatori finanziata come infrastruttura condivisa.&lt;/p>
&lt;h3 id="agosto-2024">Agosto 2024&lt;/h3>
&lt;p>Il 20 agosto, le specifiche hanno &lt;a href="https://github.com/nostr-protocol/nips/commit/ca3c52e3e74f0a4679f1c6c0d9ac6461ea748d2d">rinominato &amp;ldquo;evento sostituibile parametrizzato&amp;rdquo; in &amp;ldquo;evento indirizzabile&amp;rdquo;&lt;/a> in NIP-01 e in altri sedici documenti, inclusi articoli long-form, attività live, liste, calendari e annunci. Il formato di trasmissione non è cambiato. &lt;code>kind:pubkey:d-tag&lt;/code> è rimasta la coordinata. Ciò che è cambiato è che ogni specifica che già usava quelle coordinate ora usava la stessa parola per indicarle.&lt;/p>
&lt;p>Quel vocabolario è quello che le implementazioni attuali rilasciano. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/01.md">NIP-01&lt;/a> memorizza gli eventi indirizzabili come il record più recente per kind, pubkey e tag &lt;code>d&lt;/code>. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/19.md">NIP-19&lt;/a> chiama un naddr &amp;ldquo;a nostr addressable event coordinate&amp;rdquo;. Il percorso di reazione di Amethyst, citato sopra, tipizza l&amp;rsquo;obiettivo come &lt;code>AddressableEvent&lt;/code> prima di scrivere il tag &lt;code>a&lt;/code>. L&amp;rsquo;estensione delle coordinate del 2023 e il cambio di terminologia del 2024 usano entrambi la grammatica di coordinate &lt;code>kind:pubkey:d-tag&lt;/code>, mentre NIP-01 continua a distinguere gli eventi sostituibili regolari dagli eventi indirizzabili. Un commento successivo può quindi recuperare una discussione indirizzabile tramite &lt;code>A&lt;/code> maiuscolo senza curarsi di quale id di evento occupi quell&amp;rsquo;indirizzo al momento.&lt;/p>
&lt;p>I protocolli di archiviazione applicavano la stessa preferenza per identificatori espliciti. Il 27 agosto, il BUD-04 di Blossom &lt;a href="https://github.com/hzrd149/blossom/commit/4325aa79891cb4d68448ce16e5fa5519058eae4b">ha permesso a un evento di autorizzazione di portare più tag &lt;code>x&lt;/code> di hash di blob&lt;/a>, così un client poteva autorizzare un batch delimitato di upload, mirror o eliminazioni senza pretendere che gli hash descrivessero un solo oggetto. Quattro giorni dopo, il progetto ha &lt;a href="https://github.com/hzrd149/blossom/commit/95eb92e70768b0a2d5bab3dc42a5e3418f9055ec">chiarito il suo descrittore di blob e aggiunto un esempio&lt;/a>. Gli eventi Nostr coordinavano operazioni su media indirizzati per contenuto mentre i byte restavano su server di media, separando l&amp;rsquo;autorizzazione firmata dal trasporto di archiviazione.&lt;/p>
&lt;p>Il 29 agosto, la firma remota è diventata più tollerante verso insiemi di relay imperfetti. go-nostr ha modificato il suo client NIP-46 perché &lt;a href="https://github.com/nbd-wtf/go-nostr/commit/5edb54efee52f469fe62180c20d2876fe9c72910">un relay difettoso non potesse bloccare una richiesta inviata tramite altri relay configurati&lt;/a>: le connessioni ai relay e i tentativi di pubblicazione girano in modo indipendente, e la chiamata procede appena una qualsiasi connessione riesce. Il 19 agosto, OpenSats ha anche &lt;a href="https://github.com/OpenSats/website/commit/b0ac18552a80c662b6ca33381abeed5c3d833a4c">annunciato un sostegno di lungo periodo al creatore di Amethyst, Vitor Pamplona&lt;/a>, incluso lavoro sui messaggi privati NIP-17, sulle librerie multipiattaforma e sul modello outbox. Vocabolario del protocollo, trasporto resiliente, lavoro sulla privacy e finanziamento continuativo della manutenzione convergevano sullo stesso obiettivo: client capaci di continuare a funzionare fra dispositivi e condizioni di relay disomogenee.&lt;/p>
&lt;h3 id="agosto-2025">Agosto 2025&lt;/h3>
&lt;p>Il 22 agosto, &lt;a href="https://github.com/nostr-protocol/nips/pull/2020">NIP-25 ha guadagnato le reazioni a contenuto esterno&lt;/a>. Una reazione a qualcosa che non è un evento Nostr nativo deve essere kind 17 e deve portare i tag &lt;code>k&lt;/code> e &lt;code>i&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73&lt;/a> (identificatori di contenuto esterno), sostituendo il vecchio tag &lt;code>r&lt;/code> per i siti web. Gli esempi nel testo integrato sono una URL web (&lt;code>k=web&lt;/code>) e un episodio di podcast identificato da GUID del programma e GUID dell&amp;rsquo;elemento, con URL Fountain come suggerimenti. Le reazioni avevano lasciato il kind 1 nel 2022. Ora lasciavano l&amp;rsquo;insieme degli eventi Nostr.&lt;/p>
&lt;p>&lt;a href="https://blog.fountain.fm/p/1-3">Fountain 1.3&lt;/a>, pubblicato il 15 agosto 2025, ha rilasciato quei like prima dell&amp;rsquo;integrazione della specifica e ha detto che si basano su Nostr perché altre app di podcast possano leggerli. L&amp;rsquo;attuale &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md">documento NIP-25&lt;/a> usa ancora l&amp;rsquo;esempio di GUID di podcast di Fountain. Ad agosto 2025 una coordinata di reazione poteva nominare un episodio di podcast o una pagina web con la stessa grammatica di identificatori che un commento usa poi per una radice esterna.&lt;/p>
&lt;h3 id="agosto-2026">Agosto 2026&lt;/h3>
&lt;p>Questo agosto ha portato i thread di commenti nei client che scrivono risposte ordinarie. &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-24-newsletter/#kind-1111-as-reply-to-kind-1-notes">L&amp;rsquo;emendamento di giugno&lt;/a>, integrato più tardi, ha rimosso la riga che diceva ai client di non usare i commenti NIP-22 sulle note brevi. &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> (emoji personalizzate) ha poi &lt;a href="https://github.com/nostr-protocol/nips/pull/2448">aggiunto kind 1111&lt;/a> accanto a note, reazioni e stati utente, così un commento può portare gli stessi tag emoji che quegli altri kind già usavano. Il lavoro di specifica è il permesso. Il lavoro dei client è il rilascio.&lt;/p>
&lt;p>&lt;a href="https://github.com/v0l/snort/commit/420ed60e2ff43bd373f2583e171a77002ec9f3a0">Snort&lt;/a>, un client web, ora pubblica commenti NIP-22 per obiettivi kind 1 per impostazione predefinita, sottoscrive i thread tramite tag radice &lt;code>E&lt;/code>/&lt;code>A&lt;/code> in maiuscolo, e accetta kind 1111 nelle notifiche. &lt;a href="https://github.com/soapbox-pub/ditto/commit/8a0ffc6e3a5d9202ffc452fa0de8ae33b5883384">Ditto&lt;/a>, un client web di community, pubblica ogni risposta come commento NIP-22, kind 1111 per il testo e 1244 per la voce, incluse le risposte alle note kind 1, continuando a leggere le risposte &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> (concatenamento di note). Lo spostamento di sei anni si vede in quelle impostazioni predefinite: il 2022 ha generalizzato la reazione, il 2023 e il 2024 hanno nominato la coordinata, il 2025 ha puntato le reazioni fuori dalla rete, e il 2026 ha fatto del commento l&amp;rsquo;evento di risposta condiviso su quegli stessi obiettivi.&lt;/p>
&lt;p>L&amp;rsquo;infrastruttura per i gruppi privati definiva il ripristino come requisito di interoperabilità. Il &lt;a href="https://github.com/marmot-protocol/marmot/commit/4a2bc65f8db5866cec3b2a127dedb37818eaf207">contratto di durabilità e riavvio del 13 agosto&lt;/a> di Marmot specifica quale stato locale MLS e di pubblicazione deve sopravvivere a un riavvio, e richiede ai client di riconciliare lo stato persistito prima di proseguire le operazioni di gruppo. Questo estende la progressione di agosto oltre il nominare un obiettivo: un client maturo deve anche preservare abbastanza stato crittografico e di consegna per riprendere in sicurezza dopo un&amp;rsquo;interruzione. Le forme di evento condivise servono solo quando le implementazioni riescono a recuperare lo stato necessario per usarle.&lt;/p>
&lt;hr>
&lt;p>Inviate un DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> per condividere un progetto o una notizia attraverso il &lt;a href="https://github.com/andotherstuff/nostr-compass">progetto Nostr Compass&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #36</title><link>https://nostrcompass.org/it/newsletters/2026-08-19-newsletter/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-08-19-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> rafforza l&amp;rsquo;autenticazione relay e cifra i segreti memorizzati, &lt;a href="https://github.com/forgesworn/cambium">Cambium&lt;/a> firma per i siti web sotto carico di relay-auth, &lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a> ospita gruppi e siti statici su un relay telefonico, &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> mette in coda la moderazione sotto spam e sincronizza i mute tra dispositivi, &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar">Sonar&lt;/a> aggiunge risposte mesh annidate, &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> pubblica podcast e &lt;a href="https://github.com/formstr-hq/nail">Nail&lt;/a> collega l&amp;rsquo;email come eventi gift wrap. Le release coprono lo stato di gruppo MDK, la coniazione di badge, l&amp;rsquo;accoppiamento QR del firmatario, la firma browser su Android e una libreria wallet-connect condivisa. Il lavoro di protocollo tocca patch sui commenti, metadati di file criptati, formattazione dei thread, garanzie di riavvio Marmot e liste di appartenenza Concord. Approfondimenti: badge e commenti.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> rafforza l&amp;rsquo;autenticazione relay e cifra i segreti memorizzati, &lt;a href="https://github.com/forgesworn/cambium">Cambium&lt;/a> firma per i siti web sotto carico di relay-auth, &lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a> ospita gruppi e siti statici su un relay telefonico, &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> mette in coda la moderazione sotto spam e sincronizza i mute tra dispositivi, &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar">Sonar&lt;/a> aggiunge risposte mesh annidate, &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> pubblica podcast e &lt;a href="https://github.com/formstr-hq/nail">Nail&lt;/a> collega l&amp;rsquo;email come eventi gift wrap. Le release coprono lo stato di gruppo MDK, la coniazione di badge, l&amp;rsquo;accoppiamento QR del firmatario, la firma browser su Android e una libreria wallet-connect condivisa. Il lavoro di protocollo tocca patch sui commenti, metadati di file criptati, formattazione dei thread, garanzie di riavvio Marmot e liste di appartenenza Concord. Approfondimenti: badge e commenti.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="amber-650-chiude-un-confused-deputy-nellautenticazione-relay-e-cifra-i-segreti-memorizzati">Amber 6.5.0 chiude un confused deputy nell&amp;rsquo;autenticazione relay e cifra i segreti memorizzati&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> è un firmatario Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (intent del firmatario Android) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota mediata da relay). &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.5.0">La versione 6.5.0&lt;/a> chiude quattro lacune divulgate: un &lt;a href="https://github.com/greenart7c3/Amber/security/advisories/GHSA-vx4h-56qj-wcp7">confused deputy nell&amp;rsquo;autenticazione relay&lt;/a> che permetteva a qualsiasi chiamante di ottenere un evento kind &lt;code>22242&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (autenticazione client-relay) per relay che l&amp;rsquo;utente non aveva mai approvato; una &lt;a href="https://github.com/greenart7c3/Amber/security/advisories/GHSA-h9fv-9247-3582">lacuna di replay NIP-46&lt;/a>; &lt;a href="https://github.com/greenart7c3/Amber/security/advisories/GHSA-5fjp-ghh8-wch8">segreti di connessione e chiavi locali in chiaro&lt;/a> ora cifrati a riposo con envelope; e un &lt;a href="https://github.com/greenart7c3/Amber/security/advisories/GHSA-8844-q5vh-9j8f">pacchetto di hardening in otto punti&lt;/a> che copre l&amp;rsquo;autorizzazione del chiamante prima della decifratura, parsing dei permessi fail-closed, avvisi su &lt;code>ws://&lt;/code> in chiaro, schermate QR sicure, redazione dei log, azzeramento lazy delle chiavi al logout e uso opzionale del Keystore con dispositivo sbloccato.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.5.1">La versione 6.5.1&lt;/a> ricifra i segreti NIP-46 memorizzati quando la chiave Keystore ruota dopo l&amp;rsquo;attivazione del requisito di dispositivo sbloccato e corregge un crash nell&amp;rsquo;editor dei permessi. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.5.2">La versione 6.5.2&lt;/a> smette di decifrare colonne che l&amp;rsquo;elenco applicazioni non renderizza mai, mette in cache l&amp;rsquo;handle Keystore, precarica la cache account all&amp;rsquo;avvio e debounce le notifiche di stato relay.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-08-12-newsletter/#amber-640-makes-every-grouped-signing-decision-explicit">La 6.4.0 della scorsa settimana&lt;/a> ha reso esplicite le decisioni di firma raggruppate; la serie 6.5.x cambia ciò che Amber autorizzerà in assoluto.&lt;/p>
&lt;h3 id="cambium-040-firma-per-i-siti-web-e-alleggerisce-i-burst-di-relay-auth">Cambium 0.4.0 firma per i siti web e alleggerisce i burst di relay-auth&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/cambium">Cambium&lt;/a> è un proxy Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> verso un firmatario hardware Heartwood tramite &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>. Sei release in due giorni.&lt;/p>
&lt;p>&lt;a href="https://github.com/forgesworn/cambium/releases/tag/v0.4.0">La versione 0.4.0&lt;/a> estende la firma ai siti web. Una pagina può richiedere una firma tramite callback &lt;code>nostrsigner:&lt;/code> convalidato senza ereditare i permessi concessi alle applicazioni native, così una scheda del browser non può prendere in prestito l&amp;rsquo;approvazione di un&amp;rsquo;altra app. La stessa release corregge la forma minima dell&amp;rsquo;evento prevista dalla specifica: un evento con solo &lt;code>kind&lt;/code> e &lt;code>content&lt;/code> ora firma correttamente, con Cambium che fornisce l&amp;rsquo;identità NIP-46 abbinata, il timestamp corrente e un array di tag vuoto prima di passare l&amp;rsquo;evento a rust-nostr. L&amp;rsquo;instrumentazione nativa rust-nostr è diventata un gate obbligatorio di integrazione continua nella stessa modifica.&lt;/p>
&lt;p>&lt;a href="https://github.com/forgesworn/cambium/releases/tag/v0.3.6">La versione 0.3.6&lt;/a> ripara l&amp;rsquo;accoppiamento con firmatari conformi alla specifica. La build rust-nostr più vecchia di Cambium accettava solo la stringa letterale &lt;code>ack&lt;/code> come risultato di una chiamata &lt;code>connect&lt;/code> NIP-46, quindi un firmatario che risponde facendo eco al segreto dell&amp;rsquo;URI bunker — come chiede la specifica attuale e fa il firmware Heartwood — terminava l&amp;rsquo;accoppiamento con un errore di risposta inattesa. Il passaggio da rust-nostr 0.44.2 a 0.44.8 rende accettabili entrambe le forme, verificate contro hardware live e contro &lt;code>nak bunker&lt;/code>, che continua a rispondere &lt;code>ack&lt;/code>.&lt;/p>
&lt;p>Le release da 0.4.1 a 0.4.3 riguardano il controllo di ammissione sotto carico. &lt;a href="https://github.com/forgesworn/cambium/releases/tag/v0.4.1">La versione 0.4.1&lt;/a> riserva uno slot in coda a reazioni, post, cancellazioni e cifratura prima dell&amp;rsquo;autenticazione relay e della decifratura in background, limita le chiamate in coda, le scarta una volta scaduto il chiamante e restituisce un risultato terminale di indisponibilità in caso di sovraccarico invece di aprire una schermata di firma in primo piano. &lt;a href="https://github.com/forgesworn/cambium/releases/tag/v0.4.2">La versione 0.4.2&lt;/a> scarta sessioni NIP-46 scadute o inattive da tempo prima della richiesta successiva e lascia che copie concorrenti dello stesso evento di autenticazione kind &lt;code>22242&lt;/code> condividano una firma hardware. &lt;a href="https://github.com/forgesworn/cambium/releases/tag/v0.4.3">La versione 0.4.3&lt;/a> ammette al massimo una sfida di autenticazione distinta per identità nel worker hardware, non ritenta mai l&amp;rsquo;autenticazione internamente e apre un cooldown di sessanta secondi per identità dopo un timeout rispondendo comunque ai duplicati esatti in cache. Le misure nelle note di release provengono da un telefono GrapheneOS che guida &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>: un burst a freddo ha prodotto trentatré risposte immediate di sovraccarico e tredici richieste completate senza timeout del firmatario, e un login fresco durante un burst di autenticazione è tornato 1,254 secondi dopo l&amp;rsquo;approvazione.&lt;/p>
&lt;h3 id="citrine-310-trasforma-un-relay-telefonico-in-host-di-gruppi-e-di-siti">Citrine 3.1.0 trasforma un relay telefonico in host di gruppi e di siti&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a> è un relay Android on-device. &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.1.0">La versione 3.1.0&lt;/a> aggiunge tre capacità che cambiano ciò che il relay può ospitare.&lt;/p>
&lt;p>Il supporto per &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (gruppi gestiti da relay), la &lt;a href="https://github.com/nostr-protocol/nips/blob/master/29.md">specifica di gruppo basata su relay&lt;/a> in cui il relay stesso detiene appartenenza e stato di moderazione, significa che un telefono può ospitare un gruppo invece di unirvisi. Il supporto per &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a> (API di gestione relay), l&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/blob/master/86.md">API di gestione relay&lt;/a> che espone azioni amministrative via JSON-RPC autenticato, arriva con una schermata impostazioni, così allowlist e ban possono essere gestiti dall&amp;rsquo;API come dall&amp;rsquo;app. Il supporto per &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A&lt;/a> &lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">siti web statici&lt;/a> permette al relay di servire nsite ai client web, con un elenco di navigazione modernizzato che include icone, ricerca, ordinamento per ultimo aggiornamento, progresso di installazione, descrizioni e un insieme configurabile di relay per il recupero, predefinito su &lt;code>nsite.run&lt;/code>, &lt;code>nos.lol&lt;/code> e &lt;code>nostr.land&lt;/code>.&lt;/p>
&lt;p>La superficie di moderazione è cresciuta parallelamente nella &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.1.0">stessa release&lt;/a>. Il ban locale di una chiave pubblica offre ora di eliminare gli eventi memorizzati di quell&amp;rsquo;autore, un elenco configurabile &lt;code>REJECTED_KINDS&lt;/code> blocca i kind che l&amp;rsquo;operatore non vuole memorizzare e il controllo accessi può importare da elenchi esistenti. Uno strumento di rebroadcast spinge gli eventi memorizzati verso relay selezionati, dando a un archivio tenuto sul telefono un modo per reseme la rete. La release rimuove anche l&amp;rsquo;estensione WebSocket &lt;code>permessage-deflate&lt;/code>, stringe il percorso caldo delle query, corregge Tor che non si avvia o non si ferma quando cambia l&amp;rsquo;impostazione di esposizione via Tor e sposta i log in un database locale con logcat limitato alle build di debug.&lt;/p>
&lt;h3 id="vector-042-fa-sopravvivere-la-moderazione-di-community-a-unondata-di-spam">Vector 0.4.2 fa sopravvivere la moderazione di community a un&amp;rsquo;ondata di spam&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> è un messenger desktop e Android &lt;a href="https://github.com/concord-protocol/concord">Concord&lt;/a>. &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.2">La versione 0.4.2&lt;/a> si concentra sulla moderazione sotto carico.&lt;/p>
&lt;p>I ban rapidi si sovrascrivevano a vicenda. Ora si mettono in coda, si accumulano e si risolvono come un&amp;rsquo;unica operazione, così bannare un&amp;rsquo;ondata di account costa una rotazione di chiave invece di una per account. Accettare un invito a una community sciolta nel frattempo spiega perché e rimuove l&amp;rsquo;invito da ogni dispositivo dell&amp;rsquo;utente, e sciogliere una community posseduta la elimina dall&amp;rsquo;elenco community ovunque — una correzione arrivata nella &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.3">versione 0.4.3&lt;/a>. I messaggi di community che arrivano durante un catch-up in background non fanno più suonare le notifiche come se fossero appena stati inviati, e l&amp;rsquo;indicatore di digitazione scade dal momento dell&amp;rsquo;invio così un segnale ritardato non può restare in un canale.&lt;/p>
&lt;p>L&amp;rsquo;elenco di community shardato definito da &lt;a href="https://github.com/concord-protocol/concord">Concord&lt;/a> ha avuto un passaggio di revisione cross-client con Armada, l&amp;rsquo;altro client Concord. I rename non gonfiano più l&amp;rsquo;elenco, i pareggi si risolvono identicamente su entrambi i client e i dati invariati non vengono più ripubblicati sui relay. Il mute è uscito dal percorso dei messaggi diretti: un utente può silenziare qualcuno direttamente da una community senza cronologia precedente, e il mute si applica a notifiche e badge su canali e messaggi diretti lasciando visibili i messaggi stessi. I messaggi fissati sono diventati una superficie condivisa del canale con link cliccabili, e le modifiche a un messaggio fissato lo seguono ovunque appaia. Elenchi di blocco, mute e nickname ora si sincronizzano tra i dispositivi dell&amp;rsquo;utente, così come le chat fissate. La versione 0.4.3 smette anche di annunciare che l&amp;rsquo;utente sta digitando quando un altro client Nostr è connesso con la stessa identità, e sblocca il bootstrap Tor su Windows, che si bloccava al quindici percento su x64 e ARM64.&lt;/p>
&lt;h3 id="sonar-porta-risposte-annidate-a-un-messenger-mesh-con-nip-c7">Sonar porta risposte annidate a un messenger mesh con NIP-C7&lt;/h3>
&lt;p>&lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar">Sonar&lt;/a> è un messenger mesh Bluetooth e Nostr. &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar/releases/tag/v0.1-alpha.13.1">La versione 0.1-alpha.13.1&lt;/a> aggiunge risposte in stile Signal sulla chat kind &lt;code>9&lt;/code> &lt;a href="https://github.com/nostr-protocol/nips/blob/master/C7.md">NIP-C7&lt;/a>, più menzioni, riassemblaggio Bluetooth limitato, limiti di backup, verifica delle firme del percorso mesh e fallback push FCM. Le &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar/releases/tag/v0.1-alpha.13.2">versioni 0.1-alpha.13.2&lt;/a> e &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar/releases/tag/v0.1-alpha.13.3">0.1-alpha.13.3&lt;/a> correggono i crash all&amp;rsquo;apertura della chat su Android e la sovrapposizione della tastiera su iOS.&lt;/p>
&lt;h3 id="nostria-inizia-a-pubblicare-podcast-e-chiede-ai-relay-di-contare">Nostria inizia a pubblicare podcast e chiede ai relay di contare&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> è un client web. Le &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v4.1.70">versioni 4.1.70&lt;/a> e &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v4.1.71">4.1.71&lt;/a> aggiungono la pubblicazione di podcast per abbonati premium, con episodi come eventi Nostr firmati. &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v4.1.69">La versione 4.1.69&lt;/a> usa &lt;code>COUNT&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (richieste di conteggio relay) per totali di reazioni, risposte e zap nei feed e completa la localizzazione. &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-12-newsletter/#nostria-4167-expands-encrypted-community-administration">La 4.1.67 della scorsa settimana&lt;/a> ha ampliato l&amp;rsquo;amministrazione delle community criptate.&lt;/p>
&lt;h2 id="release">Release&lt;/h2>
&lt;h3 id="mdk-0914-cronologia-di-gruppo-fail-closed-tramite-creazione-di-gruppi-più-rapida">MDK 0.9.14: cronologia di gruppo fail-closed tramite creazione di gruppi più rapida&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> è il kit di sviluppo Rust per &lt;a href="https://github.com/marmot-protocol/marmot">Marmot&lt;/a>, un protocollo di messaggistica di gruppo criptata trasportato su Nostr. &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.12">La versione 0.9.12&lt;/a> rende fail-closed diversi percorsi di stato di gruppo invece di indovinare. Un&amp;rsquo;ancora di fork mancante è ora un errore fatale (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1329">PR #1329&lt;/a>), una proposta di uscita viene persistita atomicamente così un crash non lascia una partenza applicata a metà (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1360">PR #1360&lt;/a>), e il replay degli incidenti rifiuta di indovinare un formato su stream JSON delimitati da newline senza manifest (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1140">PR #1140&lt;/a>). I test di convergenza si sono ampliati parallelamente, con recupero cross-route della cronologia conservata (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1350">PR #1350&lt;/a>), garanzia di convergenza cross-adapter (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1372">PR #1372&lt;/a>) e campagne di convergenza isolate generalizzate (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1357">PR #1357&lt;/a>). Le diagnostiche di rifiuto relay vengono conservate invece di collassare in un errore generico (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1361">PR #1361&lt;/a>).&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.13">La versione 0.9.13&lt;/a> è arrivata il 18 agosto con formato di storage v2 (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1421">PR #1421&lt;/a>), binari di migrazione e scritture delta che sostituiscono gli snapshot live dell&amp;rsquo;account (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1435">PR #1435&lt;/a>), più catch-up degli inviti più rapido (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1444">PR #1444&lt;/a>) e binding macOS (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1402">PR #1402&lt;/a>). &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.14">La versione 0.9.14&lt;/a> ha seguito il 19 agosto con rifiniture alla creazione di gruppi: immagini fondative precaricate (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1498">PR #1498&lt;/a>), batching KeyPackage (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1494">PR #1494&lt;/a>), conservazione atomica del messaggio iniziale (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1497">PR #1497&lt;/a>) e pubblicazione del profilo con relay di proprietà dell&amp;rsquo;account (&lt;a href="https://github.com/marmot-protocol/mdk/pull/1495">PR #1495&lt;/a>). &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/marmotkit-v0.9.14">MarmotKit 0.9.14&lt;/a> e &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/wn-agent-v0.9.14">wn-agent 0.9.14&lt;/a> partono con il crate principale.&lt;/p>
&lt;h3 id="divine-mobile-1020-coniare-un-badge-senza-uscire-dallapp">Divine Mobile 1.0.20: coniare un badge senza uscire dall&amp;rsquo;app&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">Divine Mobile&lt;/a> è un client di video brevi che pubblica e recupera video tramite Nostr. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.20">La versione 1.0.20&lt;/a> permette a un utente di coniare un badge &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (eventi di premiazione firmati descritti nel primo approfondimento di questo numero) e consegnarlo a qualcuno senza uscire dall&amp;rsquo;app. Toccare un badge su un profilo spiega cosa era richiesto per guadagnarlo, la parte della specifica di solito non implementata perché l&amp;rsquo;evento di definizione e quello di premio sono memorizzati separatamente.&lt;/p>
&lt;p>Il resto &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.20">della release&lt;/a> è lavoro client: tema chiaro, ritaglio, rotazione e capovolgimento nell&amp;rsquo;editor stop-motion, bozze a un tocco dal registratore, tempistica dei sottotitoli rispetto al video, un feed che deprioritizza il materiale già visto, supporto screen reader su editor, registratore e schede profilo, gestione del movimento ridotto e impostazioni account che gestiscono email e password Divine e collegano o scollegano account. I video eliminati lasciano ora lo stato locale e i segnalibri persistono. &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-12-newsletter/#divine-mobile-1019-tightens-accounts-private-messages-and-publishing">La 1.0.19 della scorsa settimana&lt;/a> ha rafforzato l&amp;rsquo;isolamento degli account e la validazione dei messaggi privati; l&amp;rsquo;emissione di badge è una nuova superficie di pubblicazione sopra tutto ciò.&lt;/p>
&lt;h3 id="cliprelay-020-accoppiare-un-firmatario-con-una-fotocamera">ClipRelay 0.2.0: accoppiare un firmatario con una fotocamera&lt;/h3>
&lt;p>&lt;a href="https://github.com/tajava2006/cliprelay">ClipRelay&lt;/a> sincronizza gli appunti tra dispositivi tramite Nostr. &lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/android%2Fv0.2.0">La versione Android 0.2.0&lt;/a> aggiunge login QR &lt;code>nostrconnect://&lt;/code>, così un utente può accedere con un&amp;rsquo;app firmataria su un altro telefono, e la scansione con fotocamera degli URL bunker, eliminando l&amp;rsquo;abitudine di incollare una stringa contenente segreti tramite un messenger. La connessione bunker ora scade dopo sessanta secondi invece di restare appesa, e il pulsante di retry dopo un login Amber fallito funziona. &lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/desktop%2Fv0.2.0">La versione desktop 0.2.0&lt;/a> porta timeout e correzioni alla scheda di login.&lt;/p>
&lt;p>&lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/android%2Fv0.1.4">La versione 0.1.4&lt;/a> ha aggiunto sincronizzazione degli appunti sensibili con scadenza breve sui relay, relay di sessione del firmatario fissati e una sonda di liveness che richiede un round trip reale invece di un &lt;code>EOSE&lt;/code> sintetizzato localmente. &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-12-newsletter/#cliprelay-013-restores-relay-and-signer-connections-after-idle-periods">La 0.1.3 della scorsa settimana&lt;/a> ha ripristinato le connessioni dopo periodi di inattività.&lt;/p>
&lt;h3 id="bark-139-un-firmatario-browser-che-gira-su-android">Bark 1.3.9: un firmatario browser che gira su Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/bark">Bark&lt;/a> è un&amp;rsquo;estensione browser che fornisce l&amp;rsquo;interfaccia &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> &lt;code>window.nostr&lt;/code>, l&amp;rsquo;oggetto che una pagina web chiama per richiedere firma o cifratura. &lt;a href="https://github.com/forgesworn/bark/releases/tag/v1.3.9">La versione 1.3.9&lt;/a> dichiara il supporto Android per la build Firefox, così l&amp;rsquo;elenco add-on si installa su un telefono. Firefox su Android non implementa alcuna API windows, quindi ogni approvazione che apriva una finestra popup sarebbe stata rifiutata; la superficie di approvazione ora ricade su una scheda in primo piano dove la chiusura nega, un&amp;rsquo;azione di revisione la porta avanti e lo sfondo la chiude una volta risolta la richiesta. Le note di release registrano la verifica su Pixel 10 Pro XL con GrapheneOS e Firefox 153.0.4, e affermano chiaramente che Chromium su Android compila fuori il sottosistema delle estensioni, quindi nessun browser Android derivato da Chromium può eseguire Bark.&lt;/p>
&lt;p>&lt;a href="https://github.com/forgesworn/bark/releases/tag/v1.3.8">La versione 1.3.8&lt;/a> ha corretto un difetto di interoperabilità NIP-46 nella direzione opposta. Bark sondava un dialetto compatto di firma Heartwood inviando l&amp;rsquo;evento come oggetto JSON, che i firmatari tipizzati rigorosamente inclusi &lt;code>nak&lt;/code> e bunker basati su rust-nostr non possono analizzare e scartano silenziosamente, quindi la firma restava appesa. La sonda viene ora inviata solo ai firmatari che si identificano come Heartwood, e ogni altro firmatario riceve una chiamata standard &lt;code>sign_event&lt;/code> dalla prima firma in poi.&lt;/p>
&lt;h3 id="bray-300-e-toll-booth-600-passano-a-una-libreria-wallet-connect-condivisa">Bray 3.0.0 e Toll Booth 6.0.0 passano a una libreria wallet-connect condivisa&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/bray">Bray&lt;/a> e &lt;a href="https://github.com/forgesworn/toll-booth">Toll Booth&lt;/a> pagano entrambi tramite &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect, la specifica che permette a un&amp;rsquo;applicazione di richiedere pagamenti a un wallet tramite eventi Nostr criptati. &lt;a href="https://github.com/forgesworn/bray/releases/tag/v3.0.0">Bray 3.0.0&lt;/a> e &lt;a href="https://github.com/forgesworn/toll-booth/releases/tag/v6.0.0">Toll Booth 6.0.0&lt;/a> dichiarano ciascuno un breaking change nell&amp;rsquo;adozione di &lt;a href="https://github.com/forgesworn/nwc-kit">nwc-kit&lt;/a> per i pagamenti wallet, e Toll Booth rimuove il flusso di credenziali del pagatore nella stessa modifica. Entrambi pubblicano build riproducibili il cui output era byte-identico su due runner indipendenti, con l&amp;rsquo;hash del tarball stampato nelle note di release così un lettore può verificare l&amp;rsquo;artefatto del registry.&lt;/p>
&lt;p>Tre patch Toll Booth sono seguite: &lt;a href="https://github.com/forgesworn/toll-booth/releases/tag/v6.0.1">6.0.1&lt;/a> fissa la chiave host del deploy negoziata, &lt;a href="https://github.com/forgesworn/toll-booth/releases/tag/v6.1.1">6.1.1&lt;/a> fissa &lt;code>cashu-ts&lt;/code> alla versione che il suo patch targetta, e &lt;a href="https://github.com/forgesworn/toll-booth/releases/tag/v6.1.2">6.1.2&lt;/a> ripristina una build di immagine.&lt;/p>
&lt;h3 id="noornote-134-unirsi-a-community-criptate-da-un-link-di-invito">NoorNote 1.3.4: unirsi a community criptate da un link di invito&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> è un client Nostr per desktop, web e Android. &lt;a href="https://github.com/77elements/noornote/releases/tag/v1.3.4">La versione 1.3.4&lt;/a> aggiunge community Armada e Concord criptate come addon: un utente entra tramite link di invito, vede le community unite elencate nelle impostazioni e riceve notifiche di attività. La stessa release aggiunge un controllo per nascondere i post di citazione esterni, gli highlight che citano un paragrafo di un articolo web, globalmente o per autore, con i repost di essi nascosti e i propri highlight mantenuti visibili. Anche la risoluzione del profilo è stata riparata, così i profili non vengono più renderizzati come chiave pubblica troncata o segnaposto anonimo.&lt;/p>
&lt;p>&lt;a href="https://github.com/77elements/noornote/releases/tag/v1.3.5">La versione 1.3.5&lt;/a> aggiunge un espansore per note lunghe e corregge il layout dell&amp;rsquo;input del link di invito Armada. &lt;a href="https://nostrcompass.org/en/newsletters/2026-08-12-newsletter/#noornote-132-moves-article-discovery-into-the-social-graph">La 1.3.2 della scorsa settimana&lt;/a> ha spostato la scoperta degli articoli nel grafo sociale; l&amp;rsquo;appartenenza alle community è una superficie separata.&lt;/p>
&lt;h3 id="mostro-sposta-la-chat-delle-dispute-fuori-dal-gift-wrap">Mostro sposta la chat delle dispute fuori dal gift wrap&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> è un daemon di trading peer-to-peer i cui ordini e messaggi viaggiano come eventi Nostr, con &lt;a href="https://github.com/MostroP2P/mostro-core">mostro-core&lt;/a> come libreria condivisa e &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> come client. &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.3.2">Mobile 1.3.2&lt;/a> migra la chat delle dispute dal gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (involucro che nasconde i metadati) a un envelope di chat kind &lt;code>14&lt;/code> e sostiene il backlog con cursori duraturi per conversazione. &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.14.5">mostro-core 0.14.5&lt;/a> serializza l&amp;rsquo;identificatore rumor dentro il gift wrap (&lt;a href="https://github.com/MostroP2P/mostro-core/pull/164">PR #164&lt;/a>), &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.14.4">0.14.4&lt;/a> corregge un bug nella media dei rating (&lt;a href="https://github.com/MostroP2P/mostro-core/pull/163">PR #163&lt;/a>), e &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.3.1">Mobile 1.3.1&lt;/a> passa a server Blossom che conservano allegati di chat criptati. Usare il daemon &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.18.2">0.18.2&lt;/a> o &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.18.4">0.18.4&lt;/a>.&lt;/p>
&lt;h3 id="nym-373522-chat-di-gruppo-criptate-e-store-locale-criptato">NYM 3.73.522: chat di gruppo criptate e store locale criptato&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">NYM&lt;/a> è un client Nostr con integrazione assistant propria. &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.73.522">La versione 3.73.522&lt;/a> cifra lo store SQLite locale dopo che &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.73.521">3.73.521&lt;/a> ha raffinato la chat di gruppo criptata, e &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.73.520">3.73.520&lt;/a> corregge una rottura della content-security-policy e la presentazione duplicata dei nuovi messaggi.&lt;/p>
&lt;h3 id="morganite-004-verificare-un-blob-prima-di-metterlo-in-cache">Morganite 0.0.4: verificare un blob prima di metterlo in cache&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Morganite">Morganite&lt;/a> è un server Android &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> (protocollo media in cui un file è indirizzato dall&amp;rsquo;hash SHA-256 del contenuto e servito da qualsiasi host che lo detiene). &lt;a href="https://github.com/greenart7c3/Morganite/releases/tag/v0.0.4">La versione 0.0.4&lt;/a> verifica l&amp;rsquo;hash di un blob durante il download in un unico passaggio prima di metterlo in cache, il controllo che rende significativo il content addressing sul lato ricevente. La release traccia anche la dimensione della cache incrementalmente invece di riscansionare la directory a ogni salvataggio, sposta le chiamate di rete bloccanti su thread di input e output, riusa istanze Tika per il rilevamento MIME e persiste i log in un database locale.&lt;/p>
&lt;h2 id="nuovi-scoperti">Nuovi scoperti&lt;/h2>
&lt;h3 id="nail-porta-lemail-su-nostr-come-eventi-gift-wrap">Nail porta l&amp;rsquo;email su Nostr come eventi gift wrap&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nail">Nail&lt;/a> è un bridge email e client web con licenza MIT del team Formstr, il gruppo dietro &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> e &lt;a href="https://github.com/formstr-hq/nostr-calendar">nostr-calendar&lt;/a>. È andato live il 18 agosto con &lt;a href="https://github.com/formstr-hq/nail/pull/7">PR #7&lt;/a>, una modifica di 22 file che ha aggiunto tag &lt;code>k&lt;/code> agli eventi mail, recupero chiavi nelle impostazioni e un messaggio di benvenuto. Il deployment gira su &lt;a href="https://mailstr.app">mailstr.app&lt;/a>, che serve il record &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> (schema DNS che mappa un nome di dominio a una chiave pubblica Nostr) &lt;code>_smtp&lt;/code> del bridge.&lt;/p>
&lt;p>La mail stessa è un evento Nostr. Le &lt;a href="https://github.com/formstr-hq/nail/blob/main/client/src/lib/nostr/constants.ts">costanti&lt;/a> del client definiscono un rumor mail kind &lt;code>1301&lt;/code> trasportato dentro un gift wrap kind &lt;code>1059&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, così un messaggio raggiunge il destinatario tramite lo stesso involucro che nasconde i metadati usato per i messaggi diretti privati. I relay di consegna provengono da un elenco inbox kind &lt;code>10050&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (messaggi diretti privati) con un elenco relay kind &lt;code>10002&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> dietro, le cartelle sono etichette kind &lt;code>1985&lt;/code> &lt;a href="https://github.com/nostr-protocol/nips/blob/master/32.md">NIP-32&lt;/a> (eventi etichetta) sotto un namespace &lt;code>mail&lt;/code>, e le impostazioni client vivono in un evento dati applicazione kind &lt;code>30078&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-78/">NIP-78&lt;/a>. Gli allegati più grandi di 60.000 byte vanno su &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> invece che nell&amp;rsquo;evento, perché &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (cifratura) limita il plaintext cifrato a 65.535 byte. Un indirizzo è un npub su un dominio, e un dominio locale senza record NIP-05 è trattato come una casella inesistente.&lt;/p>
&lt;p>La metà bridge è un server Node LMTP che gira accanto a un deployment &lt;a href="https://github.com/mailcow/mailcow-dockerized">mailcow&lt;/a> senza patcharlo: Postfix instrada i domini corrispondenti al bridge, e il bridge reinietta le risposte via SMTP. Questo design impone una risposta onesta alla domanda più difficile in un bridge email: cosa prova un header &lt;code>From&lt;/code>. Il &lt;a href="https://github.com/formstr-hq/nail/blob/main/client/src/lib/mail/receive.ts">percorso di ricezione&lt;/a> di Nail classifica ogni messaggio in uno di quattro stati di provenienza: il bridge configurato l&amp;rsquo;ha sigillato e rifiuta di inoltrare un mittente non verificato a monte, l&amp;rsquo;utente l&amp;rsquo;ha sigillato personalmente, il record NIP-05 dell&amp;rsquo;indirizzo risolve sulla chiave di sigillatura, o nulla corrobora l&amp;rsquo;header. In questo ultimo caso l&amp;rsquo;interfaccia ricade sulla chiave pubblica di sigillatura, l&amp;rsquo;unica identità che l&amp;rsquo;evento può effettivamente provare. Le chiamate API del bridge sono autenticate con eventi HTTP firmati &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> (autenticazione HTTP tramite eventi firmati).&lt;/p>
&lt;h3 id="glow-memorizza-etichette-wallet-sui-relay-sotto-unidentità-derivata-da-passkey">Glow memorizza etichette wallet sui relay sotto un&amp;rsquo;identità derivata da passkey&lt;/h3>
&lt;p>&lt;a href="https://breez.technology/glow/">Glow&lt;/a> è un wallet Lightning self-custodial Breez. Il login passkey deriva un&amp;rsquo;identità Nostr, e l&amp;rsquo;elenco delle etichette wallet viene caricato e salvato sui relay sotto quell&amp;rsquo;identità, con duplicati byte-identici collassati attraverso copertura relay parziale.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="amethyst-ricostruisce-il-flusso-decisionale-di-autenticazione-relay">Amethyst ricostruisce il flusso decisionale di autenticazione relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> è un client Nostr Android. Un blocco di lavoro unito rimodella come gestisce l&amp;rsquo;autenticazione client-relay &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>. L&amp;rsquo;interfaccia dei permessi e il flusso decisionale sono stati ridisegnati (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3899">PR #3899&lt;/a>), l&amp;rsquo;autenticazione ora attende la risoluzione di una sfida invece di andare in timeout (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3905">PR #3905&lt;/a>), i nuovi account autenticano sempre con i relay per impostazione predefinita (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3931">PR #3931&lt;/a>), e una scelta «accedi sempre» vale anche per relay che l&amp;rsquo;account non usa direttamente (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3937">PR #3937&lt;/a>). L&amp;rsquo;autenticazione riconosce anche gruppi &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> e community Concord come luoghi a cui ci si è uniti (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3906">PR #3906&lt;/a>), così un gruppo ospitato su relay non sembra un relay sconosciuto ogni volta che viene aperto.&lt;/p>
&lt;p>Altre due modifiche toccano superfici di protocollo. Il mining proof-of-work sotto &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a> (nonce PoW) aggiorna &lt;code>created_at&lt;/code> mentre mina e ottiene un&amp;rsquo;analisi del percorso GPU (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3911">PR #3911&lt;/a>), e gli host napplet a schermo intero gestiscono gli inset della tastiera (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3932">PR #3932&lt;/a>). Anche un backup guidato delle chiavi al primo avvio con punto d&amp;rsquo;ingresso nelle impostazioni è stato unito (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3909">PR #3909&lt;/a>), insieme alla possibilità di silenziare chat pubbliche (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3939">PR #3939&lt;/a>).&lt;/p>
&lt;h3 id="nostrord-implementa-una-proposta-non-unita-di-chiave-di-cifratura">nostrord implementa una proposta non unita di chiave di cifratura&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">nostrord&lt;/a> è un client chat Nostr organizzato attorno a gruppi con scope relay. Ha unito un&amp;rsquo;implementazione di NIP-4e, una proposta non unita per disaccoppiare la cifratura dei messaggi dalla chiave d&amp;rsquo;identità che Compass &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/">ha descritto l&amp;rsquo;ultima volta nel numero del 15 luglio&lt;/a>. L&amp;rsquo;account annuncia la propria chiave di cifratura kind &lt;code>10044&lt;/code>, tiene la metà privata localmente e decifra i messaggi diretti in arrivo in processo, togliendo bunker o estensione browser dal percorso di lettura (&lt;a href="https://github.com/nostrord/nostrord/pull/261">PR #261&lt;/a>). L&amp;rsquo;accoppiamento dispositivo sui kind &lt;code>4454&lt;/code> e &lt;code>4455&lt;/code> sposta quella chiave su un secondo dispositivo, e un auto-archivio ripubblica la cronologia indirizzata alla nuova chiave. L&amp;rsquo;invio indirizzava prima la chiave annunciata (&lt;a href="https://github.com/nostrord/nostrord/pull/247">PR #247&lt;/a>), e un follow-up ha corretto l&amp;rsquo;accoppiamento che negoziava con successo senza consegnare la chiave (&lt;a href="https://github.com/nostrord/nostrord/pull/271">PR #271&lt;/a>). La pull request afferma che il formato wire segue l&amp;rsquo;implementazione Jumble già deployata dove diverge dalla proposta aperta, collocando la definizione operativa di questa specifica nel codice spedito invece che nel documento.&lt;/p>
&lt;p>L&amp;rsquo;identità di gruppo è stata ristretta nello stesso batch. Un identificatore di gruppo è ora unico solo all&amp;rsquo;interno del suo relay (&lt;a href="https://github.com/nostrord/nostrord/pull/269">PR #269&lt;/a>), quindi lo stesso identificatore su due relay è trattato come due gruppi (&lt;a href="https://github.com/nostrord/nostrord/pull/272">PR #272&lt;/a>), e i post dei thread vengono renderizzati come post di forum (&lt;a href="https://github.com/nostrord/nostrord/pull/274">PR #274&lt;/a>). Anche il churn di connessione che produceva ripetute richieste di firma kind &lt;code>22242&lt;/code> è stato fermato (&lt;a href="https://github.com/nostrord/nostrord/pull/268">PR #268&lt;/a>), la stessa classe di pressione sul firmatario su cui Cambium ha lavorato per tre release questa settimana.&lt;/p>
&lt;h3 id="nostream-aggiunge-un-monitor-relay-e-conia-codici-invito">nostream aggiunge un monitor relay e conia codici invito&lt;/h3>
&lt;p>&lt;a href="https://github.com/cameri/nostream">nostream&lt;/a> è un&amp;rsquo;implementazione relay TypeScript. Ha unito un cluster worker e uno scheduler di probe che pubblicano eventi di monitoraggio relay &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (specifica di discovery che permette a un monitor di annunciare liveness e dati di capacità su altri relay) (&lt;a href="https://github.com/cameri/nostream/pull/724">PR #724&lt;/a>), con schema impostazioni e default (&lt;a href="https://github.com/cameri/nostream/pull/689">PR #689&lt;/a>) e test di integrazione (&lt;a href="https://github.com/cameri/nostream/pull/733">PR #733&lt;/a>). Uno strumento da riga di comando conia ora codici invito &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> (schema metadati di accesso relay) (&lt;a href="https://github.com/cameri/nostream/pull/732">PR #732&lt;/a>), e il relay annuncia finalmente proof of work &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a> nella sua lista supportata (&lt;a href="https://github.com/cameri/nostream/pull/680">PR #680&lt;/a>), che aveva implementato senza annunciare. I job data vending machine hanno anche ottenuto migrazione di persistenza e repository (&lt;a href="https://github.com/cameri/nostream/pull/727">PR #727&lt;/a>), e il relay intercetta ora &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a> (richieste job data-vending-machine) e le registra tramite il repository job (&lt;a href="https://github.com/cameri/nostream/pull/729">PR #729&lt;/a>).&lt;/p>
&lt;h3 id="rust-nostr-corregge-un-identificatore-gift-wrap-e-rifiuta-repost-protetti">rust-nostr corregge un identificatore gift wrap e rifiuta repost protetti&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrdevkit/nostr">rust-nostr&lt;/a> è la libreria Rust e l&amp;rsquo;SDK dietro gran parte del lavoro client Rust e mobile di questo numero. Ora garantisce che l&amp;rsquo;identificatore rumor sia calcolato prima che il sigillo gift wrap venga cifrato (&lt;a href="https://github.com/nostrdevkit/nostr/pull/1444">PR #1444&lt;/a>), la stessa classe di difetto che Mostro ha corretto nella propria libreria questa settimana. Il relay locale rifiuta un repost di un evento protetto &lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a> (&lt;a href="https://github.com/nostrdevkit/nostr/pull/1445">PR #1445&lt;/a>), la protezione per cui quella specifica esiste, e il parsing delle risposte NIP-47 tollera importi mancanti e null (&lt;a href="https://github.com/nostrdevkit/nostr/pull/1450">PR #1450&lt;/a>) invece di fallire su un wallet che li omette. Il parsing degli URL relay è stato rafforzato (&lt;a href="https://github.com/nostrdevkit/nostr/pull/1451">PR #1451&lt;/a>).&lt;/p>
&lt;h3 id="ndk-aggiunge-messaggi-diretti-post-quantum-e-rimuove-una-dipendenza-gpl">NDK aggiunge messaggi diretti post-quantum e rimuove una dipendenza GPL&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/ndk">NDK&lt;/a> è un kit di sviluppo Dart per Nostr. Ha unito cifratura ibrida post-quantum per i messaggi diretti usando ML-KEM-1024, il meccanismo lattice key-encapsulation standardizzato come FIPS 203 (&lt;a href="https://github.com/relaystr/ndk/pull/713">PR #713&lt;/a>), affiancandolo all&amp;rsquo;accordo di chiavi classico invece di sostituirlo. Una modifica separata ha sostituito un&amp;rsquo;implementazione Dilithium solo GPL-3.0 con &lt;code>fips204&lt;/code>, lo standard di firma ML-DSA (&lt;a href="https://github.com/relaystr/ndk/pull/712">PR #712&lt;/a>), rimuovendo un vincolo di licenza per le applicazioni che incorporano il kit. Le connessioni sono passate a un&amp;rsquo;identità ciascuna (&lt;a href="https://github.com/relaystr/ndk/pull/710">PR #710&lt;/a>).&lt;/p>
&lt;h3 id="nostter-aggiunge-liste-segnalibri-badge-profilo-e-upload-blossom">Nostter aggiunge liste segnalibri, badge profilo e upload Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/SnowCait/nostter">Nostter&lt;/a> è un client web. Ha unito il supporto per entrambe le forme standard e legacy delle liste segnalibri &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> (&lt;a href="https://github.com/SnowCait/nostter/pull/2311">PR #2311&lt;/a>), aggiornato la gestione dei badge profilo NIP-58 (&lt;a href="https://github.com/SnowCait/nostter/pull/2281">PR #2281&lt;/a>), aggiunto un uploader media Blossom (&lt;a href="https://github.com/SnowCait/nostter/pull/2298">PR #2298&lt;/a>), e ora mostra un identificatore &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> (nome di verifica DNS) nell&amp;rsquo;autocompletamento delle menzioni (&lt;a href="https://github.com/SnowCait/nostter/pull/2303">PR #2303&lt;/a>).&lt;/p>
&lt;h3 id="zap-cooking-lega-le-route-admin-a-richieste-firmate-e-cifra-le-connessioni-wallet-memorizzate">Zap Cooking lega le route admin a richieste firmate e cifra le connessioni wallet memorizzate&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> è un sito di ricette costruito su eventi long-form Nostr. Un batch di sicurezza cifra le stringhe di connessione Nostr Wallet Connect memorizzate a riposo dentro un envelope NIP-44 (&lt;a href="https://github.com/zapcooking/frontend/pull/622">PR #622&lt;/a>), sostituisce un confronto di chiave pubblica spoofabile sulle route amministrative con autenticazione HTTP &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> (schema che firma un evento per autorizzare una richiesta HTTP) (&lt;a href="https://github.com/zapcooking/frontend/pull/626">PR #626&lt;/a>), e cancella i dati account al logout limitando i record NIP-46 pendenti (&lt;a href="https://github.com/zapcooking/frontend/pull/627">PR #627&lt;/a>).&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-specifica-del-protocollo">Aggiornamenti NIP e lavoro di specifica del protocollo&lt;/h2>
&lt;h3 id="nip">NIP&lt;/h3>
&lt;p>Nessuna pull request è stata unita in &lt;a href="https://github.com/nostr-protocol/nips">nostr-protocol/nips&lt;/a> in questa finestra. Sei proposte sono state aperte dopo la chiusura del numero precedente, tre il 18 agosto dopo che la bozza aveva circolato per la prima volta.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2438">NIPs PR #2438&lt;/a> propone NIP-9A, patching basato su commenti. Una patch è un commento kind &lt;code>1111&lt;/code> che referenzia l&amp;rsquo;evento patchato come parent il cui &lt;code>content&lt;/code> inizia con l&amp;rsquo;etichetta letterale &lt;code>PATCH&lt;/code>, seguita da righe di patch. Una riga che inizia con un numero modifica il &lt;code>content&lt;/code> del target nella forma &lt;code>&amp;lt;index&amp;gt; -&amp;lt;deleted&amp;gt; +&amp;lt;inserted&amp;gt; &amp;lt;caratteri inseriti&amp;gt;&lt;/code>, contati in caratteri Unicode invece che byte, e una riga che inizia con &lt;code>t&lt;/code> sostituisce un tag leggibile come &lt;code>title&lt;/code>, &lt;code>description&lt;/code>, &lt;code>subject&lt;/code> o &lt;code>picture&lt;/code>. Il design è deliberatamente retrocompatibile: un client che non capisce il formato mostra la patch come un commento etichettato ordinario, e un client che lo capisce applica la patch e nasconde il commento. La proposta nomina i kind &lt;code>1&lt;/code>, &lt;code>11&lt;/code>, &lt;code>1111&lt;/code>, &lt;code>24&lt;/code> e &lt;code>1621&lt;/code> come patchabili e chiede a scrittori e lettori di rifiutare patch troppo grandi, troppo numerose o pubblicate molto dopo l&amp;rsquo;evento originale, un tentativo esplicito di evitare che la funzione diventi un canale generale di modifica per eventi immutabili.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2437">NIPs PR #2437&lt;/a> propone la cifratura file per &lt;a href="https://github.com/nostr-protocol/nips/blob/master/94.md">NIP-94&lt;/a>, la specifica di metadati file che descrive un file caricato in un evento kind &lt;code>1063&lt;/code>. Aggiunge tre tag opzionali: &lt;code>encryption-algorithm&lt;/code>, con &lt;code>aes-gcm&lt;/code> come unico valore elencato, più &lt;code>decryption-key&lt;/code> e &lt;code>decryption-nonce&lt;/code> codificati in hex. Le semantiche dei tag cambiano di conseguenza, con &lt;code>m&lt;/code> che descrive il MIME type prima della cifratura, &lt;code>x&lt;/code> che tiene l&amp;rsquo;hash del file cifrato e &lt;code>ox&lt;/code> quello dell&amp;rsquo;originale, e qualsiasi sorgente &lt;code>thumb&lt;/code>, &lt;code>image&lt;/code> e &lt;code>fallback&lt;/code> cifrata con la stessa chiave e nonce. Lo scopo dichiarato è che un operatore Blossom pubblico che ospita i byte non possa capire cosa siano, e l&amp;rsquo;autore inquadra la modifica come copiare le proprietà di cifratura dei messaggi diretti &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> nei metadati file così lo stesso trattamento funziona dentro un tag &lt;code>imeta&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2436">NIPs PR #2436&lt;/a> emenda NIP-7D, la specifica di thread forum costruita su eventi thread kind &lt;code>11&lt;/code> con commenti kind &lt;code>1111&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> come risposte. Aggiunge una sezione di formattazione che afferma che un post di thread può essere formattato come una nota kind &lt;code>1&lt;/code>, con immagini inline, link e riferimenti &lt;a href="https://nostrcompass.org/it/topics/nip-27/">NIP-27&lt;/a>, e potrebbe anche supportare Djot, un linguaggio di markup leggero con grammatica non ambigua. L&amp;rsquo;argomento dell&amp;rsquo;autore è che lasciare la formattazione non specificata invita a un&amp;rsquo;implementazione Markdown by default, e la pull request indica squalk come implementazione Djot esistente.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2439">NIPs PR #2439&lt;/a> aggiunge i metodi &lt;code>assign&lt;/code> e &lt;code>unassign&lt;/code> a &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a> (comandi di gestione relay), così un amministratore relay può concedere permessi admin a un&amp;rsquo;altra pubkey senza condividere la chiave master.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2442">NIPs PR #2442&lt;/a> succede alla proposta audio track che &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/">Compass ha trattato a gennaio&lt;/a> mentre quella bozza restava aperta; la pull request precedente da allora si è chiusa e questa è in produzione su lightning.fm come eventi track kind &lt;code>31337&lt;/code>, con oggetti release kind &lt;code>31339&lt;/code>, profili band, contributor per traccia e split zap &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> opzionali mantenendo le vendite in &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a>. Il contratto di interoperabilità è pubblicato su &lt;a href="https://lightning.fm/interop">lightning.fm/interop&lt;/a>, e il publisher desktop e il daemon seller self-hosted sono open source.&lt;/p>
&lt;h3 id="marmot">Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot/pull/416">Marmot PR #416&lt;/a> è stata unita il 13 agosto e aggiunge un contratto di durabilità e riavvio al core del protocollo. I documenti adottati definivano già convergenza deterministica, materiale parent candidato conservato, ordine publish-before-apply e comportamento fail-closed su cronologia mancante, senza una regola univoca su cosa succede quando un processo viene interrotto alle giunture tra loro. La modifica definisce fatti logici recuperabili, equivalenza di riavvio, confini di interruzione di publish e convergenza, transizioni observer-atomiche, gestione di materiale mancante o corrotto e recupero degli effetti applicativi, poi aggiunge scenari di conformità crash e riavvio per ciascuno. Lascia transazioni, journal, snapshot, strategia di replay, scheduler e formati di storage definiti dall&amp;rsquo;implementazione, e afferma che non richiede cambiamenti di wire encoding. Il fallimento specifico che esclude è una pubblicazione accettata esternamente ma non confermata localmente, o un branch selezionato parzialmente applicato, che produca risultati di protocollo dipendenti dall&amp;rsquo;implementazione dopo un riavvio.&lt;/p>
&lt;h3 id="concord-e-cord">Concord e CORD&lt;/h3>
&lt;p>&lt;a href="https://github.com/concord-protocol/concord/pull/18">Concord PR #18&lt;/a>, trattata in precedenza nel numero scorso come proposta aperta, è stata unita il 15 agosto. Shardizza l&amp;rsquo;elenco di community criptate attraverso eventi kind &lt;code>33302&lt;/code>, rimuove il limite di cinquanta appartenenze e pota le voci ritirate così l&amp;rsquo;elenco resta entro i limiti di dimensione relay. Le note di release di Vector questa settimana registrano la metà client di quella modifica, inclusa la risoluzione dei pareggi e la decisione di smettere di ripubblicare dati invariati.&lt;/p>
&lt;p>&lt;a href="https://github.com/concord-protocol/concord/pull/22">Concord PR #22&lt;/a> propone broker audio e video di proprietà della community. L&amp;rsquo;entità metadati CORD-02 porterebbe un elenco opzionale &lt;code>av_brokers&lt;/code> accanto ai relay, evolvendo per edizione come il resto di quell&amp;rsquo;entità, e il rendezvous CORD-07 attingerebbe da quell&amp;rsquo;elenco, o dal broker del membro quando la community non ne pubblica nessuno, ordinato dal tie-break esistente keyed per stanza. Il tag broker sulla presenza resta leggibile e utile per segnalare uno split residuo, e l&amp;rsquo;argomento della proposta per declassarlo dal routing è diretto: instradare su di esso lascia che l&amp;rsquo;input non fidato di un altro membro superi l&amp;rsquo;istruzione della community.&lt;/p>
&lt;p>&lt;a href="https://github.com/concord-protocol/concord/pull/23">Concord PR #23&lt;/a> rende normativo un comportamento implementativo esistente in CORD-05. Prima di persistere un join, l&amp;rsquo;edizione metadati genesis del proprietario deve aprirsi sotto le chiavi consegnate, con piani ruotati ancorati alla coppia di compaction. La pull request afferma fin dall&amp;rsquo;inizio che non è mai stata una vulnerabilità live: l&amp;rsquo;accettazione bundle di Vector rifiuta già un bundle la cui root consegnata non può aprire la genesis del proprietario e non parcheggia mai un invito per una community già detenuta, e Armada scarta già qualsiasi bundle che sposterebbe la base di una community detenuta. La lacuna era che nessuno dei due comportamenti era richiesto dalla specifica, quindi un client conforme alla lettera avrebbe potuto spedire la versione vulnerabile.&lt;/p>
&lt;p>I &lt;a href="https://github.com/hzrd149/blossom">documenti di upgrade Blossom&lt;/a>, le &lt;a href="https://github.com/napplet/naps">proposte applicazione Napplet&lt;/a> e la &lt;a href="https://github.com/GammaMarkets/market-spec">specifica Gamma Markets&lt;/a> non hanno registrato modifiche in questa finestra.&lt;/p>
&lt;h2 id="approfondimento-nip">Approfondimento NIP&lt;/h2>
&lt;h3 id="badge-nip-58">Badge (NIP-58)&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a>, definito dalla &lt;a href="https://github.com/nostr-protocol/nips/blob/master/58.md">specifica primaria&lt;/a>, dà a un&amp;rsquo;identità Nostr un modo per conferire un token nominato a un&amp;rsquo;altra, e al destinatario controllo su se appare sul profilo. Il problema che affronta è che ogni affermazione su una persona su Nostr altrimenti è solo una nota: non c&amp;rsquo;è struttura che dica chi ha emesso un&amp;rsquo;affermazione, come si chiama, come appare o se il soggetto l&amp;rsquo;ha accettata. I badge danno a quell&amp;rsquo;affermazione tre eventi firmati separati con tre intenzioni di autori separati codificate in essi.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/nostr-protocol/nips/blob/master/58.md">meccaniche&lt;/a> sono costruite da una definizione indirizzabile, un premio e un elenco di visualizzazione. Una definizione badge è un evento kind &lt;code>30009&lt;/code> pubblicato dall&amp;rsquo;emittente, indirizzabile tramite il suo tag &lt;code>d&lt;/code>, così l&amp;rsquo;emittente può rivedere i tag &lt;code>name&lt;/code>, &lt;code>description&lt;/code>, &lt;code>image&lt;/code> e &lt;code>thumb&lt;/code> del badge più tardi senza cambiare l&amp;rsquo;identificatore a cui punta altro. Il premio è un evento kind &lt;code>8&lt;/code> pubblicato dallo stesso emittente, con un tag &lt;code>a&lt;/code> che tiene la coordinata &lt;code>30009:&amp;lt;issuer-pubkey&amp;gt;:&amp;lt;d-identifier&amp;gt;&lt;/code> della definizione e uno o più tag &lt;code>p&lt;/code> che nominano i destinatari. L&amp;rsquo;elenco di visualizzazione è un evento kind &lt;code>30008&lt;/code> pubblicato dal destinatario con il valore fisso &lt;code>d&lt;/code> &lt;code>profile_badges&lt;/code>, che elenca coppie di tag &lt;code>a&lt;/code> e &lt;code>e&lt;/code> dove il tag &lt;code>a&lt;/code> è la coordinata di definizione e il tag &lt;code>e&lt;/code> l&amp;rsquo;evento premio specifico. Quelle coppie sono ordinate e lette come coppie: un tag &lt;code>a&lt;/code> il cui premio corrispondente è assente, o un tag &lt;code>e&lt;/code> la cui definizione corrispondente è assente, viene ignorato, così un badge referenziato a metà non viene renderizzato silenziosamente.&lt;/p>
&lt;p>I compromessi di design sono visibili in ciò che la &lt;a href="https://github.com/nostr-protocol/nips/blob/master/58.md">specifica&lt;/a> rifiuta di fare. Non c&amp;rsquo;è meccanismo di revoca né scadenza, quindi un premio è un&amp;rsquo;affermazione permanente dell&amp;rsquo;emittente su un momento nel tempo, e un emittente che cambia idea può solo cambiare la definizione a cui punta il premio. Non c&amp;rsquo;è trasferimento, quindi un badge non circola come token. Non c&amp;rsquo;è nozione di registry di emittenti fidati, il che spinge l&amp;rsquo;intera questione della fiducia sul client e sul lettore: un badge vale esattamente quanto vale la chiave pubblica del suo emittente per chi lo guarda. La specifica concede anche ai client la latitudine di mostrare meno badge di quelli elencati dal destinatario e di scegliere quale dimensione immagine renderizzare, così un profilo non diventa un muro di grafica scelto interamente da terzi.&lt;/p>
&lt;p>La specifica adiacente più vicina è &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>, la &lt;a href="https://github.com/nostr-protocol/nips/blob/master/51.md">specifica liste&lt;/a>, e confrontare le due mostra perché i badge hanno bisogno di tre eventi invece di uno. Una lista è un autore che cura riferimenti; l&amp;rsquo;autore della lista è l&amp;rsquo;autore dell&amp;rsquo;affermazione. Un badge divide l&amp;rsquo;autorialità a metà, con l&amp;rsquo;emittente che firma che il premio è avvenuto e il destinatario che firma di accettarne la visualizzazione. Nessuna delle due parti può produrre il risultato visibile da sola, ed è ciò che separa un badge da un&amp;rsquo;etichetta auto-applicata.&lt;/p>
&lt;p>Un premio kind &lt;code>8&lt;/code> live recuperato da &lt;a href="https://nos.lol">nos.lol&lt;/a> e &lt;a href="https://relay.primal.net">relay.primal.net&lt;/a> questa settimana:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;08504dec368939bd63849a349cab83dea0ac199a852129dbf68cf35fe5c64e96&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;bef514bd58c8ceea4beb9e6b84a8d983935f7be26f49e14df68098f1ba64156e&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1787051248&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">8&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30009:bef514bd58c8ceea4beb9e6b84a8d983935f7be26f49e14df68098f1ba64156e:blocks_orange_league&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;92dfa05d915196a7a09152fa3f57871debfd422e1d278ac5af266a70c3350b1f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.damus.io&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Badge awarded!&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5bf0218dfec5e56b47339b0b4b992cceedd2e18798fb3d47cafea51850c00827f66251e4a3e08190370e04a5e1d4d092eeb441141b7219acdd18b80290a022f8&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Le implementazioni attuali coprono emissione, visualizzazione e lettura. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.20">Divine Mobile 1.0.20&lt;/a> conia e conferisce un badge dentro l&amp;rsquo;app e spiega un badge guadagnato quando un lettore lo tocca, &lt;a href="https://github.com/SnowCait/nostter/pull/2281">Nostter PR #2281&lt;/a> aggiorna la gestione dei badge profilo in un client web, e &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> pubblica eventi premio con il proprio tag client, uno dei quali appare nei dati relay accanto all&amp;rsquo;esempio sopra.&lt;/p>
&lt;h3 id="commenti-nip-22">Commenti (NIP-22)&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a>, definito dalla &lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">specifica primaria&lt;/a>, fornisce un evento commento generale per rispondere a cose che non sono note di testo breve. Il threading delle note brevi aveva già &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> (convenzioni tag di risposta), le cui convenzioni tag sono cresciute attorno al kind &lt;code>1&lt;/code> e alle sue catene di risposta. NIP-22 esiste perché un video, un articolo, un evento calendario, una pagina wiki o un URL ha bisogno di una struttura di risposta che identifichi che tipo di cosa viene risposta, e che funzioni quando il target è indirizzabile o è una risorsa esterna senza alcun evento Nostr.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">meccaniche&lt;/a> ruotano attorno a una distinzione di maiuscole/minuscole. Un commento è un evento kind &lt;code>1111&lt;/code> che porta due insiemi di tag: tag maiuscoli che descrivono la radice della discussione e tag minuscoli che descrivono il parent immediato. &lt;code>E&lt;/code>, &lt;code>A&lt;/code> e &lt;code>I&lt;/code> nominano un evento radice, una coordinata indirizzabile radice o un identificatore esterno radice, &lt;code>K&lt;/code> nomina il kind della radice e &lt;code>P&lt;/code> l&amp;rsquo;autore della radice. I minuscoli &lt;code>e&lt;/code>, &lt;code>a&lt;/code>, &lt;code>i&lt;/code>, &lt;code>k&lt;/code> e &lt;code>p&lt;/code> nominano gli stessi fatti sul parent, che è la radice stessa per un commento di primo livello e un altro commento kind &lt;code>1111&lt;/code> per una risposta annidata. Separarli significa che un client può recuperare un&amp;rsquo;intera discussione con un filtro sui tag radice maiuscoli, senza percorrere la catena di risposte, mentre renderizza correttamente l&amp;rsquo;annidamento dai tag parent minuscoli. Le varianti &lt;code>I&lt;/code> e &lt;code>i&lt;/code> portano identificatori esterni nel formato &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73&lt;/a>, ed è ciò che permette a un thread di commenti di attaccarsi a una pagina web, un episodio podcast o un libro.&lt;/p>
&lt;p>I compromessi riguardano soprattutto ciò che NIP-22 rifiuta di assorbire. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">specifica&lt;/a> afferma che i commenti non devono essere usati per rispondere a note kind &lt;code>1&lt;/code>, il che evita che due modelli di threading competano sugli stessi oggetti e lascia NIP-10 dove già funziona. L&amp;rsquo;annidamento è permesso ma la radice resta fissa, quindi un thread profondo non perde mai il suo ancoraggio anche quando eventi intermedi non sono disponibili. I tag kind sono la parte portante: un client che recupera un commento senza il suo target può comunque capire a cosa sta guardando da &lt;code>K&lt;/code> e &lt;code>k&lt;/code>, e decidere se può renderizzare quel kind. Ciò che la specifica non fornisce è alcun modello di ordinamento o moderazione, quindi ordine di visualizzazione, collasso e nascondimento sono interamente policy del client.&lt;/p>
&lt;p>Rispetto a &lt;a href="https://github.com/nostr-protocol/nips/blob/master/10.md">NIP-10&lt;/a>, la differenza sta nel typing. NIP-10 assume che il target sia una nota e codifica la posizione in un thread; NIP-22 codifica esplicitamente identità e kind del target e non assume altro su di esso. Quel typing esplicito è il motivo per cui le proposte più recenti in questo numero puntano al kind &lt;code>1111&lt;/code>: un commento porta già un&amp;rsquo;affermazione machine-readable su a cosa è attaccato.&lt;/p>
&lt;p>Un commento kind &lt;code>1111&lt;/code> live recuperato da &lt;a href="https://nos.lol">nos.lol&lt;/a> e &lt;a href="https://relay.primal.net">relay.primal.net&lt;/a> questa settimana, in risposta a un altro commento sotto un video:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;c8d335f8bfea58ecd1a943d6000fb2045f4bddf4a36c67df53eb661671f7ab45&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;3e911baba55ae247339cf805dd6ff49ad2cd6bee84ac44e088ce66450c49104f&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1787062681&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1111&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;E&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1c492f2bac17b79d66934a340fa43d8d30d0aea4c9fa329346c05573ef912d70&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;482d024b8acfde50e7429e5ac561d764f3a53a8b4fb0b6975369d9f0926ef839&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;A&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;34236:482d024b8acfde50e7429e5ac561d764f3a53a8b4fb0b6975369d9f0926ef839:e64ba9ea157b1a315caff51dbca656ed73ce817d4494e3966adf24055a86f5c5&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;K&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;34236&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;P&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;482d024b8acfde50e7429e5ac561d764f3a53a8b4fb0b6975369d9f0926ef839&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;7a14723b9ef999e74b1757a0fb74942cb6c121138d4ddafe096a57a67ed0a442&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8b69e548402afa997343d73e8088224a440f256350f6257b61acc4bb1fa4af4f&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1111&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8b69e548402afa997343d73e8088224a440f256350f6257b61acc4bb1fa4af4f&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;client&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Divine&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31990:d95aa8fc0eff8e488952495b8064991d27fb96ed8652f12cdedc5a4e8b5ae540:divine-mobile&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.divine.video&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;niiice&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5517fdea07647efa7ab1730fbea8df882690bba667e93ea5aeba4a73be6a49af1ee17c045535483650caf41dbbcb0897d5803fa39b59f395fd6f9bb193bb789&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I tag maiuscoli tengono il video e il suo autore mentre i minuscoli &lt;code>e&lt;/code> e &lt;code>k&lt;/code> puntano al commento parent, che è la forma descritta dalla specifica. Implementazioni che leggono e scrivono kind &lt;code>1111&lt;/code> includono &lt;a href="https://github.com/divinevideo/divine-mobile">Divine Mobile&lt;/a>, il cui tag client appare nell&amp;rsquo;evento sopra, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, i cui commenti appaiono negli stessi risultati relay, e &lt;a href="https://github.com/nostrord/nostrord/pull/274">nostrord&lt;/a>, che renderizza i post dei thread come post di forum questa settimana. Il formato patch proposto in &lt;a href="https://github.com/nostr-protocol/nips/pull/2438">NIPs PR #2438&lt;/a> si costruisce sullo stesso kind.&lt;/p>
&lt;hr>
&lt;p>Inviate un DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> per condividere un progetto o una notizia tramite il &lt;a href="https://github.com/andotherstuff/nostr-compass">progetto Nostr Compass&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #35</title><link>https://nostrcompass.org/it/newsletters/2026-08-12-newsletter/</link><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-08-12-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/nostr-wot/nostr-wot-extension">nostr-wot-extension&lt;/a> aggiunge chiavi post-quantum e messaggi protetti opt-in accanto alle identità Nostr esistenti. &lt;a href="https://github.com/divinevideo/divine-mobile">Divine&lt;/a> rafforza l&amp;rsquo;isolamento degli account, la validazione dei messaggi privati e la conferma di pubblicazione; &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> rafforza convergenza e recupero dei gruppi cifrati; e &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> rende esplicite le decisioni di firma raggruppate. Le release migliorano connessioni ai wallet, chat cifrata, scoperta sociale, sincronizzazione tra dispositivi e firma remota, mentre il lavoro sul protocollo copre identità e comunità cifrate. Gli approfondimenti spiegano richieste di cancellazione autenticate e segnalazioni decentralizzate.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://nostrcompass.org">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/nostr-wot/nostr-wot-extension">nostr-wot-extension&lt;/a> aggiunge chiavi post-quantum e messaggi protetti opt-in accanto alle identità Nostr esistenti. &lt;a href="https://github.com/divinevideo/divine-mobile">Divine&lt;/a> rafforza l&amp;rsquo;isolamento degli account, la validazione dei messaggi privati e la conferma di pubblicazione; &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> rafforza convergenza e recupero dei gruppi cifrati; e &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> rende esplicite le decisioni di firma raggruppate. Le release migliorano connessioni ai wallet, chat cifrata, scoperta sociale, sincronizzazione tra dispositivi e firma remota, mentre il lavoro sul protocollo copre identità e comunità cifrate. Gli approfondimenti spiegano richieste di cancellazione autenticate e segnalazioni decentralizzate.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="nostr-wot-extension-040-aggiunge-chiavi-post-quantum-accanto-a-unidentità-nostr">nostr-wot-extension 0.4.0 aggiunge chiavi post-quantum accanto a un&amp;rsquo;identità Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-wot/nostr-wot-extension/releases/tag/v0.4.0">nostr-wot-extension 0.4.0&lt;/a> è un&amp;rsquo;estensione del browser per gestire identità Nostr e firmare. Gli account creati da un seed a 24 parole possono ora derivare chiavi di crittografia ML-KEM-1024 e di firma ML-DSA-87 accanto alla chiave Nostr esistente. Un flusso con un clic pubblica un&amp;rsquo;attestazione di kind &lt;code>10203&lt;/code> che lega la chiave pubblica Nostr a entrambe le chiavi pubbliche post-quantum e include una proof of possession ML-DSA. Gli account importati da un mnemonic a 12 parole, un &lt;code>nsec&lt;/code> nudo, un firmatario remoto o una chiave read-only non possono usare il flusso di derivazione, e l&amp;rsquo;estensione spiega tale limitazione nella vista dell&amp;rsquo;account.&lt;/p>
&lt;p>La release aggiunge anche messaggi diretti post-quantum opt-in. Combina il shared secret ML-KEM con la &lt;a href="https://github.com/nostr-protocol/nips/blob/master/44.md">chiave di conversazione del messaggio cifrato NIP-44&lt;/a> esistente tramite HKDF, poi mantiene i normali strati gift-wrap NIP-59 per nascondere i metadati nella consegna via relay. La crittografia non ricade mai silenziosamente dopo che un destinatario ha optato, mentre la decrittazione seleziona automaticamente il percorso appropriato. Questo protegge il nuovo percorso dei messaggi contro un successivo recupero di una chiave privata Nostr odierna, ma non sostituisce le firme degli eventi secp256k1; la release lascia esplicitamente quella migrazione più ampia a un futuro coordinamento con relay e client.&lt;/p>
&lt;h3 id="divine-mobile-1019-rafforza-account-messaggi-privati-e-pubblicazione">Divine Mobile 1.0.19 rafforza account, messaggi privati e pubblicazione&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.19">Divine Mobile 1.0.19&lt;/a> è un client mobile di video brevi che pubblica e recupera video tramite Nostr. Il selettore di account ora costruisce ogni identità connessa attorno a un container scoped per account, e una correzione alla pubblicazione impedisce che un video venga inviato sotto l&amp;rsquo;account sbagliato. I percorsi di pubblicazione sui relay attendono ora una risposta &lt;code>OK&lt;/code> con semantica di successo esplicita, mentre un frame relay &lt;code>CLOSED&lt;/code> può terminare la propria query in sospeso invece di lasciare la richiesta appesa.&lt;/p>
&lt;p>La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/6368">gestione dei messaggi privati&lt;/a> rifiuta campi rumor non autenticati e seal non firmati, ripristina quattro casi di messaggi mancanti e instrada le conversazioni di gruppo da partecipanti completamente seguiti nella inbox. La release preserva anche i tag sugli eventi video indirizzabili quando le liste vengono aggiornate e consuma le richieste di cancellazione osservate così che i video rimossi scompaiano dallo stato locale. Queste modifiche seguono il lavoro sui timeout per query per relay trattato la scorsa settimana, ma spostano il focus dall&amp;rsquo;isolamento del recupero ai confini dell&amp;rsquo;identità, alla validazione dei messaggi e alla conferma di pubblicazione.&lt;/p>
&lt;h3 id="mdk-0911-rafforza-convergenza-e-recupero-dei-gruppi-marmot">MDK 0.9.11 rafforza convergenza e recupero dei gruppi Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.11">MDK 0.9.11&lt;/a> è un kit di sviluppo Rust per Marmot, un protocollo di messaggistica di gruppo cifrata trasportato su Nostr. La release costruisce un sistema più ampio di convergenza e recupero attorno alla macchina a stati del gruppo: i passaggi di convergenza obsoleti si riaprono alla punta corrente del gruppo, le proiezioni delle capability in ingresso vengono committate atomicamente, i messaggi differiti ricevono durate di vita limitate tra i riavvii, e i checkpoint indirizzati per commit aiutano a recuperare i fork di commit propri di un&amp;rsquo;identità. Gli invii non stabili possono essere accodati e recuperati, mentre un percorso di stallo dell&amp;rsquo;epoca scala verso backfill e i messaggi inviati sopravvivono al lavoro di convergenza.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk/pull/1201">Storage e integrazioni host&lt;/a> ricevono un passaggio parallelo di hardening. MDK elimina in modo sicuro le proiezioni SQLite potate, azzera le chiavi private importate, gli intermedi di export delle chiavi cifrate NIP-49 e i buffer di serializzazione OpenMLS, e redige le chiavi delle immagini di gruppo dall&amp;rsquo;output di debug. L&amp;rsquo;import dell&amp;rsquo;account può riprendere dopo un&amp;rsquo;interruzione, i percorsi di storage privato iOS e Android sono riparati, e gli host possono chiudere esplicitamente lo storage prima della sospensione. Nuove proiezioni leggere del roster e dell&amp;rsquo;appartenenza locale riducono ciò che le applicazioni devono leggere, mentre il connettore Hermes può consegnare diverse immagini generate da agent come un unico album Marmot.&lt;/p>
&lt;h3 id="nostria-4167-espande-lamministrazione-delle-comunità-cifrate">Nostria 4.1.67 espande l&amp;rsquo;amministrazione delle comunità cifrate&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v4.1.67">Nostria 4.1.67&lt;/a> è un client social web e desktop per Nostr. Si basa sui gruppi sperimentali &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (gruppi gestiti da relay) e sulle comunità cifrate Concord introdotti in 4.1.53, aggiungendo scioglimento della comunità, amministrazione di icona e banner, caricamenti di foto cifrati con anteprime compresse, un selettore completo di reazioni e un layout a doppio pannello che mantiene aperta una comunità mentre l&amp;rsquo;utente legge note o articoli. La release aggiunge anche messaggistica in thread e un hub combinato per chat pubbliche, di gruppo e private.&lt;/p>
&lt;h3 id="amber-640-rende-esplicita-ogni-decisione-di-firma-raggruppata">Amber 6.4.0 rende esplicita ogni decisione di firma raggruppata&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.4.0">Amber 6.4.0&lt;/a> è un firmatario Android che mantiene le chiavi private Nostr separate dalle applicazioni che richiedono firme. La sua schermata multi-richiesta ridisegnata fornisce controlli Approva e Nega per ogni richiesta e ogni gruppo, sostituendo il precedente flusso di selezione e conferma. Le richieste negate inviate tramite l&amp;rsquo;interfaccia bunker mediata da relay di Amber ricevono ora risposte di errore corrette, così il client richiedente può distinguere un rifiuto da un firmatario bloccato.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/greenart7c3/Amber/tree/v6.4.0">codice sorgente taggato di Amber&lt;/a> aggiunge anche etichette localizzate e leggibili per altri 113 kind di evento in ogni locale distribuito. Le aggiunte includono eventi di gruppo Concord, segnalibri di repository Git &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> (liste e insiemi curati) ed eventi di presenza in stanza &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a> (attività live), dando agli utenti più contesto su dati non familiari prima di approvare una firma. Una guardia concurrent-map corregge anche un crash di sottoscrizione ai relay che poteva produrre un &lt;code>NegativeArraySizeException&lt;/code>.&lt;/p>
&lt;h3 id="safebox-acorn-separa-un-componente-di-recupero-portatile-dallapp-web">Safebox Acorn separa un componente di recupero portatile dall&amp;rsquo;app web&lt;/h3>
&lt;p>&lt;a href="https://github.com/trbouma/safebox-acorn">Safebox Acorn&lt;/a> è un componente Python autonomo e un&amp;rsquo;interfaccia a riga di comando per proteggere chiavi, fondi e record controllati dall&amp;rsquo;utente tramite stato supportato da Nostr. L&amp;rsquo;estrazione di Acorn dalla più ampia applicazione web Safebox consente a un altro progetto Python di installare il runtime e usare i suoi helper per chiavi, profili Nostr, relay, record, Cashu, Lightning e crittografia senza adottare l&amp;rsquo;interfaccia web. Le attuali primitive di protezione dei record possono generare una nuova chiave a 256 bit, derivarne una da entropia fornita separatamente e codificare la chiave esatta come frase di recupero di 24 parole con checksum.&lt;/p>
&lt;p>La &lt;a href="https://trbouma.github.io/safebox-acorn/recovery-and-continuity/">guida al recupero e alla continuità&lt;/a> del progetto presenta Acorn come componente di protocollo sostituibile all&amp;rsquo;interno di una Safebox domestica o comunitaria. Il design mantiene lo stato cifrato disponibile tramite un relay locale e repliche indipendenti, così il recupero non dipende da un singolo dispositivo, applicazione, relay, mint o fornitore di servizi. La documentazione chiarisce con attenzione il limite attuale: la cifratura dei record protetti è ancora in fase di progettazione, quindi le applicazioni non dovrebbero far dipendere i record dalla nuova chiave di protezione finché quel profilo non sarà implementato e sottoposto a revisione.&lt;/p>
&lt;h2 id="rilasci-taggati">Rilasci taggati&lt;/h2>
&lt;h3 id="mostro-core-0142-cambia-lenvelope-della-chat-cifrata">Mostro Core 0.14.2 cambia l&amp;rsquo;envelope della chat cifrata&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core">Mostro Core&lt;/a> è la libreria Rust di tipi condivisi e funzioni peer-to-peer usata dal daemon di scambio Mostro e dai suoi client. La &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.14.2">versione 0.14.2&lt;/a> sostituisce i messaggi di chat gift-wrap con envelope di kind 14 che usano chiavi separate di crittografia della conversazione e di firma derivate dal shared secret dei peer. Il nuovo reader valida autore, firma, destinatario, timestamp e dimensione del contenuto, mentre gli helper gift-wrap legacy restano disponibili così i client possono leggere entrambi i formati durante la migrazione.&lt;/p>
&lt;h3 id="mostro-0181-avvia-un-percorso-escrow-cashu-e-rafforza-il-daemon">Mostro 0.18.1 avvia un percorso escrow Cashu e rafforza il daemon&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> è un daemon di scambio Lightning peer-to-peer che coordina gli ordini tramite Nostr. La &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.18.1">versione 0.18.1&lt;/a> getta le basi per un backend escrow Cashu, inclusi configurazione, helper del database, integrazione con mint, wiring all&amp;rsquo;avvio e la prima azione di lock. Può anche usare prezzi annunciati da un nodo fidato su Nostr e pubblica requisiti di proof-of-work per il primo contatto nel suo evento info sostituibile. La release aggiorna la dipendenza Nostr per una correzione denial-of-service NIP-44, rimuove le chiavi private dai log di restore-session, rifiuta messaggi di cooperative-cancel non autorizzati, rafforza i fetch LNURL contro server-side request forgery e hang, valida le invoice di payout e ripristina le sottoscrizioni alle hold invoice dopo un riavvio.&lt;/p>
&lt;h3 id="lawallet-nwc-230-aggiunge-notifiche-nostr-e-ricevute-zap">LaWallet NWC 2.3.0 aggiunge notifiche Nostr e ricevute zap&lt;/h3>
&lt;p>&lt;a href="https://github.com/lawalletio/lawallet-nwc">LaWallet NWC&lt;/a> è una piattaforma Lightning Address open-source che collega i wallet tramite &lt;a href="https://nostrcompass.org/it/topics/nip-47/">Nostr Wallet Connect&lt;/a> (NIP-47). La &lt;a href="https://github.com/lawalletio/lawallet-nwc/releases/tag/v2.3.0">versione 2.3.0&lt;/a> permette a ogni wallet di inviare notifiche di ricezione e inoltro come eventi Nostr configurabili, inclusi un tag destinatario &lt;code>p&lt;/code>, relay selezionati, contenuto templato e crittografia opzionale &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (crittografia versionata); i tentativi riusano lo stesso ID evento firmato. Accetta anche zap request e pubblica ricevute firmate &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> (zap) di kind 9735 dopo il regolamento, mentre una nuova vista delle capability dell&amp;rsquo;indirizzo mostra se l&amp;rsquo;indirizzo risolto supporta NIP-05, NIP-57 e i protocolli Lightning Address correlati.&lt;/p>
&lt;h3 id="nostr-double-ratchet-typescript-00166-lega-inviti-pubblici-alle-chiavi-di-sessione">nostr-double-ratchet TypeScript 0.0.166 lega inviti pubblici alle chiavi di sessione&lt;/h3>
&lt;p>&lt;a href="https://github.com/irislib/nostr-double-ratchet">nostr-double-ratchet&lt;/a> fornisce primitive TypeScript e Rust per messaggistica diretta e di gruppo cifrata end-to-end su relay Nostr. &lt;a href="https://github.com/irislib/nostr-double-ratchet/releases/tag/nostr-double-ratchet-ts-v0.0.166">TypeScript 0.0.166&lt;/a> richiede che una risposta a un invito dimostri la proprietà della sua chiave di sessione, impedendo a un invito pubblico riutilizzabile di legare un&amp;rsquo;identità Nostr alla sessione di un&amp;rsquo;altra parte. La release rifiuta anche campi rumor malformati e rafforza la validazione del payload; le sessioni esistenti continuano a funzionare, ma un invitante aggiornato rifiuta risposte senza prova da invitati più vecchi.&lt;/p>
&lt;h3 id="cln-nip47-020-espande-e-isola-le-richieste-nwc">cln-nip47 0.2.0 espande e isola le richieste NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/daywalker90/cln-nip47">cln-nip47&lt;/a> è un plugin Core Lightning che espone un nodo ai wallet tramite &lt;a href="https://nostrcompass.org/it/topics/nip-47/">Nostr Wallet Connect&lt;/a> (NIP-47). La &lt;a href="https://github.com/daywalker90/cln-nip47/releases/tag/v0.2.0">versione 0.2.0&lt;/a> aggiunge metodi NWC per creare, annullare e regolare hold invoice più una notifica &lt;code>hold_invoice_accepted&lt;/code>, e pubblica l&amp;rsquo;insieme di metodi che il nodo connesso supporta effettivamente. Le risposte transaction-list si fermano ora a 500 voci e circa 128 kB, gli eventi di richiesta vengono deduplicati per ID evento, e la notifica fallita di un client non impedisce più la consegna agli altri client. La release rimuove anche i due metodi multi-payment che non fanno più parte della specifica NWC.&lt;/p>
&lt;h3 id="cliprelay-013-ripristina-connessioni-a-relay-e-firmatario-dopo-periodi-di-inattività">ClipRelay 0.1.3 ripristina connessioni a relay e firmatario dopo periodi di inattività&lt;/h3>
&lt;p>&lt;a href="https://github.com/tajava2006/cliprelay">ClipRelay&lt;/a> sincronizza gli appunti di un utente tra dispositivi tramite relay Nostr, cifrando il contenuto verso la stessa identità con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (crittografia versionata). Le release &lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/desktop/v0.1.3">desktop&lt;/a> e &lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/android/v0.1.3">Android&lt;/a> 0.1.3 corrispondenti aggiungono una casella di testo per inviare testo digitato direttamente agli appunti di un altro dispositivo. Testano anche la liveness con round trip reali sui relay dopo periodi di inattività, escalando da risottoscrizione a sostituzione del socket e a un pool di connessioni ricostruito, mentre le chiamate al firmatario &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota mediata da relay) bloccate ora scadono e si ricostruiscono automaticamente.&lt;/p>
&lt;h3 id="noornote-132-sposta-la-scoperta-degli-articoli-nel-grafo-sociale">NoorNote 1.3.2 sposta la scoperta degli articoli nel grafo sociale&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> è un client Nostr per post social, messaggi cifrati, articoli in formato lungo e altri kind di evento su web, desktop e Android. La &lt;a href="https://github.com/77elements/noornote/releases/tag/v1.3.2">versione 1.3.2&lt;/a> sostituisce il feed globale piatto degli articoli con una scoperta tratta da contatti di primo, secondo e terzo grado, offrendo ai lettori una timeline di articoli radicata nel grafo dei follow. Collassa anche raffiche di messaggi diretti riprodotti da mittenti sconosciuti in un&amp;rsquo;unica notifica continua invece di produrre una pila di toast man mano che arriva la cronologia dei relay.&lt;/p>
&lt;h3 id="bray-240-aggiunge-un-dialetto-compatto-di-firma-remota">Bray 2.4.0 aggiunge un dialetto compatto di firma remota&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/bray">Bray&lt;/a> è un server MCP Nostr che offre ad agenti software e persone strumenti per accesso ai relay, identità, pubblicazione e firma remota. La &lt;a href="https://github.com/forgesworn/bray/releases/tag/v2.4.0">versione 2.4.0&lt;/a> accetta una richiesta di firma il cui evento è un oggetto oltre alla forma stringificata usata da &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota mediata da relay), e aggiunge &lt;code>sign_event_compact&lt;/code>, che restituisce solo ID evento, firma, chiave pubblica e timestamp. Quel formato più piccolo di richiesta e risposta riduce l&amp;rsquo;uso di memoria per firmatari hardware vincolati, mentre il flusso standard &lt;code>sign_event&lt;/code> resta invariato e entrambi i dialetti producono una firma sull&amp;rsquo;ID dell&amp;rsquo;evento ricevuto.&lt;/p>
&lt;h2 id="appena-scoperti">Appena scoperti&lt;/h2>
&lt;h3 id="pact-porta-legami-tra-agenti-con-consenso-reciproco-su-nostr">Pact porta legami tra agenti con consenso reciproco su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/bobodread876/pact">Pact&lt;/a>, scoperto questa settimana, è uno strato relazionale in fase iniziale per agenti software costruito su MATE.md e su una bozza di trasporto NIP-BD. I suoi legami firmati con consenso reciproco sono detenuti dalle chiavi degli agenti stessi e possono essere pubblicati su Nostr, mentre i legami privati usano il gift wrapping &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (metadati nascosti). Il monorepo include un server MCP, SDK TypeScript, client da riga di comando, daemon self-hostable e interfaccia web. La sua attività più recente nel repository precede la finestra settimanale di questo numero, quindi questa è una nota di scoperta e non l&amp;rsquo;affermazione di una nuova release.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="nostrord-mantiene-sincronizzato-il-muting-di-gruppo-tra-dispositivi">nostrord mantiene sincronizzato il muting di gruppo tra dispositivi&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">nostrord&lt;/a> è un client multipiattaforma per comunità gestite da relay. La &lt;a href="https://github.com/nostrord/nostrord/pull/250">PR #250&lt;/a> memorizza le scelte di mute per gruppo di ogni account in un evento &lt;a href="https://nostrcompass.org/it/topics/nip-78/">NIP-78&lt;/a> (dati specifici dell&amp;rsquo;applicazione) di kind &lt;code>30078&lt;/code> auto-cifrato, così un&amp;rsquo;impostazione fatta su un dispositivo può seguire l&amp;rsquo;utente su un altro senza rivelare la lista dei gruppi al relay. Il record sostituibile usa l&amp;rsquo;ordinamento per evento più recente, ascolta le modifiche in tempo reale e ripristina l&amp;rsquo;interfaccia quando la firma o la pubblicazione falliscono invece di lasciare lo stato locale fuori sync. I gruppi mutati smettono anche di contribuire ai totali non letti visibili mantenendo la posizione non letta per la visita successiva.&lt;/p>
&lt;h3 id="amethyst-completa-il-ciclo-di-vita-degli-inviti-concord">Amethyst completa il ciclo di vita degli inviti Concord&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> è un client Nostr Android il cui supporto alle comunità cifrate implementa il protocollo Concord. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3888">PR #3888&lt;/a> permette ai link di invito di sopravvivere a un refounding della comunità riemettendo i bundle alle stesse coordinate indirizzabili, mentre un controllo di ban impedisce a un membro rimosso di usare quel percorso di recupero. Implementa anche la lista inviti cifrata CORD-05 sia sull&amp;rsquo;app sia sul client da riga di comando &lt;code>amy&lt;/code>, aggiunge tombstone di revoca per link, e richiede conferma del relay prima di eliminare l&amp;rsquo;unica chiave di firma memorizzata che può ritirare un link. Lo stesso lavoro dà a &lt;code>amy&lt;/code> i percorsi di consegna della control key, refounding, rekeying e recupero dei membri stranded necessari per seguire le epoche comunitarie successive.&lt;/p>
&lt;h3 id="buzz-porta-laspetto-di-ogni-comunità-tra-desktop-e-mobile">Buzz porta l&amp;rsquo;aspetto di ogni comunità tra desktop e mobile&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/buzz">Buzz&lt;/a> è uno workspace comunitario basato su Nostr con client desktop e mobile. Le PR desktop &lt;a href="https://github.com/block/buzz/pull/3653">PR #3653&lt;/a> e mobile &lt;a href="https://github.com/block/buzz/pull/3767">PR #3767&lt;/a> unite memorizzano tema, accento e scelta della modalità di sistema di ogni comunità come record NIP-78 cifrato sul relay di quella comunità. Entrambi i client condividono lo stesso payload versionato e mantengono cache locali scoped per identità, così cambiare comunità o account non può applicare l&amp;rsquo;aspetto sbagliato mentre il relay non è disponibile. Ordinamento di sostituzione, scritture protette e risottoscrizione dopo una connessione chiusa permettono ai due client di riconvergere dopo la riconnessione.&lt;/p>
&lt;p>&lt;a href="https://github.com/block/buzz/releases/tag/desktop-v0.5.10">Buzz Desktop 0.5.10&lt;/a> è seguito prima del cutoff del numero con un passaggio di performance e affidabilità. Rimuove regressioni introdotte dopo 0.5.9, accelera il caricamento dei canali, limita la retention iniziale della timeline, coalescesce la persistenza dello stato di lettura, preserva timeline di canale fresche e impedisce al worker di ingest dei relay di crashare sulle reazioni agli eventi di progetto. Aggiunge anche l&amp;rsquo;invio di un messaggio di thread a un canale e restringe la ricerca desktop allo scope previsto.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-specifica-del-protocollo">Aggiornamenti NIP e lavoro di specifica del protocollo&lt;/h2>
&lt;h3 id="nip">NIP&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2435">PR NIPs #2435&lt;/a> è un emendamento aperto a NIP-34, che standardizza la collaborazione su repository git tramite eventi Nostr. Aggiunge un tag &lt;code>b&lt;/code> opzionale a un evento pull-request così l&amp;rsquo;autore può nominare un branch di destinazione diverso dal default del repository. La proposta corrisponde al supporto già implementato in ngit e GitWorkshop, ma non è entrata nella specifica.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2434">PR NIPs #2434&lt;/a> è una proposta aperta per chiavi di identità post-quantum. Deriva chiavi post-quantum di crittografia e firma accanto alla chiave secp256k1 esistente da un seed di derivazione chiavi NIP-06, poi lega le chiavi pubbliche all&amp;rsquo;identità Nostr con un&amp;rsquo;attestazione di kind &lt;code>10203&lt;/code>. La bozza limita la sua pretesa alla protezione della riservatezza dei messaggi precedenti se secp256k1 venisse compromesso in seguito; non sostituisce le firme degli eventi odierne.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2431">PR NIPs #2431&lt;/a> è un emendamento aperto a NIP-07 per firmatari browser. Un client potrebbe allegare la chiave pubblica che si aspetta alle richieste di firma o crittografia, richiedendo al firmatario di usare quell&amp;rsquo;account o rifiutare la chiamata. Ciò impedirebbe a una pagina di continuare silenziosamente sotto un&amp;rsquo;identità diversa dopo che l&amp;rsquo;utente cambia account nel firmatario.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/1813">PR NIPs #1813&lt;/a> resta una proposta open double-ratchet dopo lavoro sostanziale nella finestra. Specifica conversazioni cifrate forward-secret le cui chiavi avanzano con i messaggi, con un&amp;rsquo;implementazione già disponibile nella libreria nostr-double-ratchet e in Iris. Resta una bozza, non un NIP unito.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2433">PR NIPs #2433&lt;/a> si è aperta e chiusa senza merge nella finestra. Proponeva di chiarire gli errori relay NIP-42 così &lt;code>auth-required&lt;/code> significherebbe che un&amp;rsquo;altra autenticazione potrebbe cambiare il risultato, mentre &lt;code>restricted&lt;/code> significherebbe che non potrebbe. La distinzione riguardava connessioni autenticate per una chiave ma ancora prive di autorizzazione per un&amp;rsquo;altra; lo stato chiuso significa che la formulazione non è entrata nella specifica.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2378">PR NIPs #2378&lt;/a>, trattata in precedenza mentre era ancora proposta, si è ora chiusa senza merge. I suoi eventi proposti di agent passport, discovery, task, marketplace, invoice e connection restano quindi fuori dall&amp;rsquo;insieme dei NIP.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/nostr-protocol/nips/commit/656cecc7c0a815b6a2b218d3b5d6f078b3f4dbab">commit NIPs 656cecc&lt;/a> ha unito una correzione solo documentale a NIP-29. Aggiunge un tag &lt;code>previous&lt;/code> all&amp;rsquo;esempio di metadati del gruppo, mostrando come un evento di sostituzione possa identificare l&amp;rsquo;evento che sostituisce. Questo chiarisce un esempio e non introduce una nuova funzionalità di protocollo.&lt;/p>
&lt;h3 id="concord-e-cord">Concord e CORD&lt;/h3>
&lt;p>La &lt;a href="https://github.com/concord-protocol/concord/pull/18">PR CORD #18&lt;/a> frammenterebbe le Community List cifrate su eventi di kind &lt;code>33302&lt;/code>, rimuoverebbe il limite di 50 appartenenze e poterebbe le voci ritirate per restare entro i limiti dei relay. Altre due proposte aperte aggiungono &lt;a href="https://github.com/concord-protocol/concord/pull/16">locator di menzione privati&lt;/a> e un &lt;a href="https://github.com/concord-protocol/concord/pull/17">segnale di pausa&lt;/a> che sospende la chat senza scartare i messaggi.&lt;/p>
&lt;p>La &lt;a href="https://github.com/concord-protocol/concord/pull/15">PR CORD-02 #15&lt;/a> si è unita il 6 agosto e restringe le scritture al piano di controllo di una comunità. Proprietari e staff detengono un nuovo secret di firma &lt;code>control_root&lt;/code>, mentre tutti i membri conservano la chiave pubblica derivata e la read key necessarie per verificare e decifrare lo stato di moderazione. La write key è una barriera anti-spam, non un sostituto delle firme interne dell&amp;rsquo;attore e dei controlli del roster che stabiliscono l&amp;rsquo;autorità.&lt;/p>
&lt;p>La &lt;a href="https://github.com/concord-protocol/concord/pull/12">PR CORD #12&lt;/a>, trattata in precedenza come bozza aperta, si è ora chiusa senza merge. La sua porzione di piano di controllo è stata superata dall&amp;rsquo;emendamento CORD-02 più ristretto unito sopra, mentre canali restricted-write e gli altri materiali di bozza non sono entrati nella specifica.&lt;/p>
&lt;h2 id="approfondimento-nip">Approfondimento NIP&lt;/h2>
&lt;h3 id="richieste-di-cancellazione-degli-eventi-nip-09">Richieste di cancellazione degli eventi (NIP-09)&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> (richieste di cancellazione eventi), definito dalla &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">specifica principale&lt;/a>, offre a un autore di evento un modo firmato di chiedere a relay e client di smettere di servire uno o più eventi di quell&amp;rsquo;autore. Non cancella ogni copia. Trasporta l&amp;rsquo;intenzione dell&amp;rsquo;autore attraverso la stessa rete di relay che ha distribuito l&amp;rsquo;evento originale.&lt;/p>
&lt;p>La richiesta è un evento firmato ordinario di kind &lt;code>5&lt;/code>. I suoi tag contengono uno o più riferimenti &lt;code>e&lt;/code> a ID evento specifici o riferimenti &lt;code>a&lt;/code> a coordinate di eventi indirizzabili, e le &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md#event-deletion-request">regole dei tag NIP-09&lt;/a> dicono che dovrebbe includere un tag &lt;code>k&lt;/code> per ogni kind di evento referenziato. Il &lt;code>content&lt;/code> opzionale può spiegare il motivo. Per un riferimento &lt;code>a&lt;/code>, un relay dovrebbe rimuovere ogni versione a quella coordinata il cui timestamp non è successivo al &lt;code>created_at&lt;/code> della richiesta, impedendo a una vecchia richiesta di cancellazione di sopprimere una sostituzione successiva.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md#relay-behavior">L&amp;rsquo;autore è il confine di sicurezza&lt;/a>. Un relay dovrebbe smettere di pubblicare un evento referenziato solo quando la sua &lt;code>pubkey&lt;/code> corrisponde alla &lt;code>pubkey&lt;/code> della richiesta di cancellazione, e un client deve eseguire quel controllo prima di nascondere un evento. Un relay potrebbe non possedere l&amp;rsquo;evento referenziato e quindi non essere in grado di validare la relazione quando accetta la richiesta, così i client non possono trattare l&amp;rsquo;accettazione del relay come prova che la cancellazione fosse autorizzata. La specifica chiede anche ai relay di conservare la richiesta di kind &lt;code>5&lt;/code> perché un altro client potrebbe già detenere l&amp;rsquo;evento originale e incontrare la richiesta in seguito.&lt;/p>
&lt;p>Ecco un &lt;a href="https://primal.net/e/6f39fd3d0d593d97dd093f21fabe8f78895579d6979a6ecf14e169bd85bb0943">evento firmato di kind &lt;code>5&lt;/code>&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;6f39fd3d0d593d97dd093f21fabe8f78895579d6979a6ecf14e169bd85bb0943&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5877220aaae6e54a6f974602d5995c0fe24a3ea7ddabd8644bec795b9da00743&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1786465675&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f3d47f8b813928c5baf7ac993846be0220dc37a2e7c7b128fb49a4b92711f131&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30091&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30091:5877220aaae6e54a6f974602d5995c0fe24a3ea7ddabd8644bec795b9da00743:survey:0ad5cebc-608b-47d7-97fd-9e6c47787199&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-survey&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Public survey summary deleted during privacy refresh&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;846be83b038dc5f91af0c9d03a4ac81aff9bc4cfde7d85c849fa2fdae890f75cc444a4072f45aa18883b0b3871e15381b220182d6e366892f0c9c6f9c0557244&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La cancellazione resta una politica cooperativa, non la revoca di un oggetto firmato. Un relay, una cache, uno screenshot o un client offline possono preservare i byte originali, e cancellare la richiesta di kind &lt;code>5&lt;/code> stessa non la annulla. I client possono nascondere l&amp;rsquo;obiettivo, contrassegnarlo come disconosciuto o mostrare il motivo della richiesta, ma dovrebbero dire agli utenti che una cancellazione universale non può essere garantita. Questo differisce da &lt;a href="https://github.com/nostr-protocol/nips/blob/master/40.md">NIP-40&lt;/a>, dove un tag &lt;code>expiration&lt;/code> chiede ai relay di smettere di memorizzare un evento dopo un tempo scelto al momento della pubblicazione. NIP-09 gestisce una decisione successiva dell&amp;rsquo;autore e può puntare a eventi già distribuiti.&lt;/p>
&lt;p>Le implementazioni attuali applicano quella politica a livelli diversi. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/6623">PR Divine #6623&lt;/a> rimuove i video cancellati dall&amp;rsquo;event store del client, la &lt;a href="https://github.com/hoytech/strfry/pull/251">PR strfry #251&lt;/a> estende le richieste di cancellazione valide ai destinatari gift-wrap, e &lt;a href="https://github.com/vitorpamplona/amethyst/blob/278ddd27904dc721e54ffaca8803307d154f2e1d/README.md">Amethyst&lt;/a> dichiara supporto NIP-09 nel suo client. Il &lt;a href="https://github.com/nostrord/nostrord/blob/862855e8e7130f509c458c6b4d36a3bd660f16d8/composeApp/src/commonMain/kotlin/org/nostr/nostrord/network/NostrGroupClient.kt">client di gruppo di nostrord&lt;/a> offre un altro percorso di implementazione attuale.&lt;/p>
&lt;h3 id="segnalazioni-nip-56">Segnalazioni (NIP-56)&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-56/">NIP-56&lt;/a> (eventi di segnalazione), definito dalla &lt;a href="https://github.com/nostr-protocol/nips/blob/master/56.md">specifica principale&lt;/a>, standardizza una segnalazione firmata su un account, un evento o un blob referenziato. Separa il segnale di segnalazione dalla decisione di moderazione, permettendo a ogni client o relay di scegliere quali reporter fidare e quale risposta si adatti alla propria politica.&lt;/p>
&lt;p>Una segnalazione usa kind &lt;code>1984&lt;/code> e deve identificare l&amp;rsquo;account segnalato in un tag &lt;code>p&lt;/code>. Segnalare una nota richiede anche un tag &lt;code>e&lt;/code> per l&amp;rsquo;ID evento. Il terzo valore del tag porta una delle categorie specificate: &lt;code>nudity&lt;/code>, &lt;code>malware&lt;/code>, &lt;code>profanity&lt;/code>, &lt;code>illegal&lt;/code>, &lt;code>spam&lt;/code>, &lt;code>impersonation&lt;/code> o &lt;code>other&lt;/code>. Una segnalazione su un blob può usare il suo hash in un tag &lt;code>x&lt;/code>, un tag &lt;code>e&lt;/code> per l&amp;rsquo;evento che ha referenziato il blob, e un tag &lt;code>server&lt;/code> opzionale per una posizione. I tag opzionali &lt;code>L&lt;/code> e &lt;code>l&lt;/code> da &lt;a href="https://github.com/nostr-protocol/nips/blob/master/32.md">NIP-32&lt;/a> possono aggiungere un&amp;rsquo;etichetta con namespace quando l&amp;rsquo;elenco fisso di categorie non è abbastanza preciso.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/56.md#reporting">L&amp;rsquo;evento prova solo che una chiave ha fatto un&amp;rsquo;accusa&lt;/a>. Il contenuto segnalato non diventa falso, illegale o rimovibile solo perché esiste un kind &lt;code>1984&lt;/code> valido, e un relay aperto non può contare in sicurezza segnalazioni anonime come voti. La specifica sconsiglia la moderazione automatica del relay perché le segnalazioni sono facili da manipolare, permettendo però agli amministratori di relay di agire su segnalazioni da moderatori che già fidano. Un client può invece pesare le segnalazioni attraverso il grafo sociale dell&amp;rsquo;utente, per esempio sfocando contenuti dopo che diversi contatti fidati segnalano lo stesso account.&lt;/p>
&lt;p>Ecco un &lt;a href="https://primal.net/e/17301ea66066d34af9ba0b6957ed9d9d8854b9436939e682e21e7a5a8768e4b2">evento firmato di kind &lt;code>1984&lt;/code>&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;17301ea66066d34af9ba0b6957ed9d9d8854b9436939e682e21e7a5a8768e4b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1ff02fb5cdc633c1be55368ab655490ec25d2f5dc2e364d4703bc3196d99eab1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1786465319&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1984&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;3a72b02cc05ee07310dc580874b6a9ca8271c6518b90655bd2e98003c9601e68&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;impersonation&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;6362e415410feb19e0505654a4660e8456b6b2aec5ae39173a0429a6a8e5fa1381c9488198ca2982db43ee8198af056f2a25537705c763784062056d0ab2eb1a&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/tree/master">NIP-56 e NIP-09 risolvono problemi diversi&lt;/a>. Una segnalazione di kind &lt;code>1984&lt;/code> può prendere di mira l&amp;rsquo;account o l&amp;rsquo;evento di qualcun altro, ma non conferisce alcuna autorità di cancellazione. Una richiesta di kind &lt;code>5&lt;/code> esprime l&amp;rsquo;intenzione dell&amp;rsquo;autore originale ed è valida solo contro gli eventi di quell&amp;rsquo;autore. Nessuna garantisce la rimozione: NIP-56 delega deliberatamente l&amp;rsquo;azione alla politica di moderazione locale, mentre NIP-09 dipende da relay e client che onorano una richiesta autenticata.&lt;/p>
&lt;p>Le implementazioni espongono quelle scelte in prodotti diversi. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/6591">PR Divine #6591&lt;/a> corregge la consegna delle segnalazioni in un client di video brevi, la &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/250">PR Conduit #250&lt;/a> legge le segnalazioni come contesto limitato per i partecipanti al marketplace, e il &lt;a href="https://github.com/nostrord/nostrord/blob/862855e8e7130f509c458c6b4d36a3bd660f16d8/composeApp/src/commonMain/kotlin/org/nostr/nostrord/nostr/Nip56.kt">modulo NIP-56 di nostrord&lt;/a> pubblica e processa eventi di segnalazione. &lt;a href="https://github.com/vitorpamplona/amethyst/blob/278ddd27904dc721e54ffaca8803307d154f2e1d/README.md#nip-support">Amethyst&lt;/a> elenca anche il supporto NIP-56 attuale.&lt;/p>
&lt;hr>
&lt;p>Invia un DM NIP-17 per condividere un progetto o una notizia tramite il &lt;a href="https://github.com/andotherstuff/nostr-compass">progetto Nostr Compass&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #34</title><link>https://nostrcompass.org/it/newsletters/2026-08-05-newsletter/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-08-05-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://github.com/andotherstuff/nostr-compass">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://sandstr.app/">Sandstr&lt;/a> permette ai nuovi arrivati di esplorare client Nostr simulati senza creare chiavi né installare un&amp;rsquo;app. &lt;a href="https://github.com/0ceanSlim/nostr-mill">nostr-mill&lt;/a> aggiunge il consenso del firmatario per evento e il recupero delle chiavi tra client, mentre &lt;a href="https://github.com/nostrord/nostrord">nostrord&lt;/a> espande i gruppi ospitati su relay, i firmatari, la moderazione, i caricamenti e i highlight. Il lavoro sul protocollo copre i formati di eventi Nostr, le connessioni ai wallet, la scoperta dei relay, i napplets, Marmot e Concord; gli approfondimenti spiegano la ricerca assistita dai relay e i highlight portatili.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://github.com/andotherstuff/nostr-compass">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://sandstr.app/">Sandstr&lt;/a> permette ai nuovi arrivati di esplorare client Nostr simulati senza creare chiavi né installare un&amp;rsquo;app. &lt;a href="https://github.com/0ceanSlim/nostr-mill">nostr-mill&lt;/a> aggiunge il consenso del firmatario per evento e il recupero delle chiavi tra client, mentre &lt;a href="https://github.com/nostrord/nostrord">nostrord&lt;/a> espande i gruppi ospitati su relay, i firmatari, la moderazione, i caricamenti e i highlight. Il lavoro sul protocollo copre i formati di eventi Nostr, le connessioni ai wallet, la scoperta dei relay, i napplets, Marmot e Concord; gli approfondimenti spiegano la ricerca assistita dai relay e i highlight portatili.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="nostr-mill-160-porta-il-consenso-alla-firma-e-il-recupero-dellaccount-nel-browser">nostr-mill 1.6.0 porta il consenso alla firma e il recupero dell&amp;rsquo;account nel browser&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/nostr-mill/releases/tag/v1.6.0">nostr-mill 1.6.0&lt;/a> è un selettore di account e firmatario integrabile nel browser. Ora chiede il consenso per kind di evento e mostra contenuto e tag decodificati prima della firma, con concessioni a tempo limitato e un gestore dei permessi. La release corregge anche un bug della prima sessione che permetteva alle categorie configurate per chiedere ogni volta di firmare senza chiedere. Il suo onboarding opzionale con Google può importare un &lt;code>nsec&lt;/code> esistente, memorizza la chiave cifrata nella cartella dei dati dell&amp;rsquo;app Drive dell&amp;rsquo;utente, supporta più identità e può esportare un &lt;code>ncryptsec&lt;/code> in formato &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> (formato di chiave privata cifrata).&lt;/p>
&lt;p>Il &lt;a href="https://github.com/0ceanSlim/nostr-mill/releases/tag/v1.6.0">backup sperimentale su relay&lt;/a> deriva una frase di recupero robusta con scrypt e HKDF, avvolge la chiave come &lt;code>ncryptsec&lt;/code>, verifica gli eventi recuperati e richiede un quorum di relay prima del recupero. Il login &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (intent del firmatario Android) ora usa il percorso di ritorno tramite appunti di Amber, e le connessioni &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota mediata da relay) sono silenziose per impostazione predefinita. Controlli di branding e schermate dei permessi responsive completano la release senza modificare le integrazioni esistenti, a meno che un operatore non lo scelga.&lt;/p>
&lt;h3 id="nostrord-250-dà-ai-gruppi-su-relay-identità-stabili-e-specifiche-del-relay">nostrord 2.5.0 dà ai gruppi su relay identità stabili e specifiche del relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.5.0">nostrord 2.5.0&lt;/a> è un client multipiattaforma per comunità ospitate su relay. Ora deriva un&amp;rsquo;identità &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (gruppi gestiti da relay) sia dall&amp;rsquo;ID del gruppo sia dal relay ospitante, delimita allo stesso modo appartenenza e badge di amministratore, accetta deep link &lt;code>naddr&lt;/code> di gruppo e sincronizza i thread dei gruppi privati tra dispositivi.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.5.0">release&lt;/a> aggiunge anche una casella di moderazione con &lt;a href="https://nostrcompass.org/it/topics/nip-56/">NIP-56&lt;/a> (eventi di segnalazione), login con Amber tramite NIP-55, backoff per il rate-limit del traffico del firmatario NIP-46, rendering di &lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84&lt;/a> (highlight portatili) con nuovi tentativi per i riferimenti non risolti, e caricamenti multimediali tramite Blossom o &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> (archiviazione file HTTP). Il login con Google ora esegue il backup della chiave prima della creazione dell&amp;rsquo;account e conferma le disconnessioni. Le risposte nei thread ottengono contenuti più ricchi e la cancellazione da parte degli amministratori, mentre le correzioni al portachiavi desktop e alla tastiera mobile mantengono utilizzabili quelle funzionalità di protocollo.&lt;/p>
&lt;h3 id="primal-android-3525-aggiorna-la-firma-remota-e-il-filtraggio-della-lista-dei-seguiti">Primal Android 3.5.25 aggiorna la firma remota e il filtraggio della lista dei seguiti&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.25">Primal Android 3.5.25&lt;/a> è un client mobile Nostr con feed, ricerca e firma remota. Aggiorna il suo firmatario remoto al comportamento attuale del protocollo, aggiunge una lista di silenziati dei seguiti, apre la ricerca da Esplora, ripara automaticamente le connessioni ai relay bloccate, espone i timeout delle richieste nell&amp;rsquo;interfaccia, rifiuta le voci non valide della lista dei seguiti e aggiorna gli URL dei relay di riserva. Il prefetching dei feed, il minor uso di memoria e un limite di cache di 100 MB riducono il costo di mantenere aggiornati quei feed. Le note con una sola immagine ora usano tutta la larghezza del contenuto, e i controlli del profilo e il precaricamento dei media ricevono correzioni minori di interazione e ordinamento.&lt;/p>
&lt;h3 id="nostur-1302-espande-le-risposte-private-e-i-media-nei-messaggi-diretti">Nostur 1.30.2 espande le risposte private e i media nei messaggi diretti&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/527">Nostur 1.30.2&lt;/a> è un client Nostr per piattaforme Apple. Espone sempre l&amp;rsquo;azione di risposta privata, aggiunge cache di media per conversazione con limiti e controlli di cancellazione, migliora il completamento automatico di nomi e tag nei post e nelle chat, mostra i messaggi referenziati nella chat dal vivo e include il titolo della stanza nelle notifiche di chat. Le correzioni alla paginazione del feed e alle risposte annidate affrontano regressioni nel recupero e nel rendering delle conversazioni.&lt;/p>
&lt;h3 id="chama-570-aggiunge-i-registri-degli-arbitri-e-il-recupero-degli-scambi-dalla-cache">Chama 5.7.0 aggiunge i registri degli arbitri e il recupero degli scambi dalla cache&lt;/h3>
&lt;p>&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v5.7.0">Chama 5.7.0&lt;/a> coordina scambi tra pari e arbitrato tramite catene di eventi Nostr firmati. Mostra l&amp;rsquo;importo bloccato di un arbitro, l&amp;rsquo;anzianità della sua cauzione e il suo outpoint di finanziamento; registra quando un sostituto ha rimpiazzato un arbitro assente; e definisce le attestazioni di colpa dormienti di kind &lt;code>38136&lt;/code> che richiedono le firme di entrambi i principali. Una riparazione esplicita riprova le cronologie incomplete dei relay contro la cache durevole del dispositivo e ripubblica gli eventi recuperati, mentre le pubblicazioni fallite vengono accodate per la connessione successiva. La release impedisce inoltre pagamenti duplicati tra dispositivi del premio dell&amp;rsquo;arbitro trattando l&amp;rsquo;evento di kind &lt;code>38113&lt;/code> dell&amp;rsquo;autore come la registrazione del pagamento.&lt;/p>
&lt;h3 id="auditable-voting-01165-ripristina-la-consegna-delle-schede-delegate">Auditable Voting 0.1.165 ripristina la consegna delle schede delegate&lt;/h3>
&lt;p>&lt;a href="https://github.com/tidley/auditable-voting/releases/tag/v0.1.165">Auditable Voting 0.1.165&lt;/a> conduce votazioni verificabili separando le credenziali dell&amp;rsquo;elettore dal contenuto della scheda. Ripristina l&amp;rsquo;emissione delegata di schede cieche tramite consegna autenticata delle deleghe e recupero dei DM di controllo, mantiene i messaggi diretti delle credenziali cieche sui relay privati configurati e aggiorna il proxy di audit alla versione 0.1.52.&lt;/p>
&lt;h3 id="sandstr-permette-ai-nuovi-arrivati-di-provare-i-client-nostr-con-dati-finti">Sandstr permette ai nuovi arrivati di provare i client Nostr con dati finti&lt;/h3>
&lt;p>&lt;a href="https://sandstr.app/">Sandstr&lt;/a> offre simulazioni interattive nel browser dei client Nostr così che un nuovo arrivato possa confrontare le loro interfacce prima di installarne uno o creare una coppia di chiavi. Il suo lancio del 3 agosto include riproduzioni verificate sul riferimento di Damus, Amethyst, Primal, Snort, YakiHonne, Coracle e Wisp, oltre ad anteprime iniziali chiaramente etichettate di Gossip, Keychat e Olas. Tutto funziona localmente su dati finti, quindi le simulazioni non generano chiavi né si connettono ai relay. Ogni simulazione rimanda al sito web e al repository del codice del client reale, rendendo Sandstr uno strumento di onboarding e confronto delle interfacce piuttosto che un altro client Nostr. Mostra come si presentano feed, profili, thread, messaggi diretti, ricerca, zap e controlli dei relay senza chiedere a un utente alle prime armi di prendere in anticipo una decisione di identità o sicurezza.&lt;/p>
&lt;h3 id="mineracks-signer-abbina-unestensione-del-browser-a-un-bunker-desktop">mineracks signer abbina un&amp;rsquo;estensione del browser a un bunker desktop&lt;/h3>
&lt;p>&lt;a href="https://github.com/mineracks/mineracks-signer">mineracks signer&lt;/a> offre due superfici di firma dallo stesso progetto. La sua estensione del browser implementa &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> così che le applicazioni web possano richiedere firme senza ricevere la chiave privata, mentre l&amp;rsquo;applicazione desktop espone un firmatario remoto &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per i client che comunicano tramite relay.&lt;/p>
&lt;p>La &lt;a href="https://github.com/mineracks/mineracks-signer/releases/tag/desktop-v0.1.0">release desktop 0.1.0&lt;/a> del progetto memorizza il materiale delle chiavi con la codifica a chiave cifrata di NIP-49 e mantiene la chiave decifrata all&amp;rsquo;interno del processo Rust anziché passarla all&amp;rsquo;interfaccia. Ogni richiesta mostra l&amp;rsquo;applicazione chiamante e l&amp;rsquo;azione richiesta, mentre l&amp;rsquo;approvazione automatica per applicazione è opzionale e revocabile. La prima build desktop supporta Apple Silicon ma non i Mac Intel.&lt;/p>
&lt;h2 id="release">Release&lt;/h2>
&lt;h3 id="jumble-2681-aggiunge-controlli-di-proof-of-work-e-anteprime-dei-commenti">Jumble 26.8.1 aggiunge controlli di proof-of-work e anteprime dei commenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.8.1">Jumble 26.8.1&lt;/a> è un client Nostr web e desktop. Ricorda la difficoltà del proof-of-work per la pubblicazione, mostra badge di lavoro verificato, mostra in anteprima i commenti collegati sopra il contenuto esterno, salva le immagini dal visualizzatore a schermo intero ed espande le biografie lunghe del profilo su richiesta. Le notifiche delle reazioni ora scartano i kind di evento non supportati, gli avvisi di disconnessione dai relay sono meno invadenti, i relay predefiniti sono stati aggiornati ed è stato corretto un conflitto di riproduzione automatica dei media.&lt;/p>
&lt;h3 id="nostr-calendar-210-ripristina-il-binding-del-firmatario-per-i-moduli-privati">nostr-calendar 2.1.0 ripristina il binding del firmatario per i moduli privati&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v2.1.0">nostr-calendar 2.1.0&lt;/a> pubblica calendari, eventi e risposte ai moduli come dati Nostr. Lega gli invii dei moduli privati al firmatario attivo, salva gli eventi duplicati intenzionali sui relay, corregge il recupero dai relay, analizza le date del calendario nell&amp;rsquo;ora locale e aggiunge notifiche dell&amp;rsquo;app oltre a un client iOS. La correzione del firmatario impedisce a un&amp;rsquo;identità obsoleta di produrre una risposta cifrata inutilizzabile.&lt;/p>
&lt;h3 id="manent-200-aggiunge-tag-e-ricerca-per-le-note-salvate">Manent 2.0.0 aggiunge tag e ricerca per le note salvate&lt;/h3>
&lt;p>&lt;a href="https://github.com/dtonon/manent/releases/tag/v2.0.0">Manent 2.0.0&lt;/a> è un archivio personale per note Nostr firmate. Aggiunge tag locali e ricerca, permettendo al lettore di organizzare e recuperare gli eventi salvati senza modificarne il contenuto firmato.&lt;/p>
&lt;h3 id="nosvelte-061-chiude-le-sottoscrizioni-vuote-dopo-leose">nosvelte 0.6.1 chiude le sottoscrizioni vuote dopo l&amp;rsquo;EOSE&lt;/h3>
&lt;p>&lt;a href="https://github.com/akiomik/nosvelte/releases/tag/v0.6.1">nosvelte 0.6.1&lt;/a> fornisce componenti e hook reattivi di Svelte per i dati dei relay. Le ricerche vuote ora si concludono all&amp;rsquo;End of Stored Events, la cancellazione chiude il &lt;code>REQ&lt;/code> sottostante, i nuovi tentativi cancellano gli errori obsoleti e gli hook di lista restituiscono il loro valore vuoto documentato. Riconosce inoltre gli eventi indirizzabili indipendentemente da dove appaia il loro tag &lt;code>d&lt;/code>, sostituisce metadati e articoli superati, deduplica le reazioni per ID evento e conserva ogni evento del primo batch di un relay.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="nmp-lega-lammissione-al-relay-alle-dichiarazioni-e-amplia-le-query-di-gruppo">NMP lega l&amp;rsquo;ammissione al relay alle dichiarazioni e amplia le query di gruppo&lt;/h3>
&lt;p>&lt;a href="https://github.com/pablof7z/nmp">NMP&lt;/a> è un toolkit TypeScript per costruire applicazioni Nostr e interfacce di gruppi supportati da relay. La &lt;a href="https://github.com/pablof7z/nmp/pull/1254">PR #1254&lt;/a> fa sì che l&amp;rsquo;ammissione al relay segua il proprietario della dichiarazione che la autorizza, mantenendo la decisione sui permessi legata allo stato Nostr firmato. La &lt;a href="https://github.com/pablof7z/nmp/pull/1255">PR #1255&lt;/a> generalizza le query dei gruppi gestiti da relay di &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> invece di assumere un&amp;rsquo;unica forma di ricerca ristretta. Entrambe le modifiche sono state unite ma non sono ancora apparse in una release taggata.&lt;/p>
&lt;h3 id="mosaico-deriva-lidentità-del-gruppo-gestito-dai-record-del-relay">Mosaico deriva l&amp;rsquo;identità del gruppo gestito dai record del relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/pablof7z/mosaico">Mosaico&lt;/a> è un client Nostr per esplorare e amministrare comunità gestite da relay. La &lt;a href="https://github.com/pablof7z/mosaico/pull/758">PR #758&lt;/a> deriva l&amp;rsquo;identità di un gruppo gestito dal relay che ospita i suoi record autorevoli. La &lt;a href="https://github.com/pablof7z/mosaico/pull/757">PR #757&lt;/a> osserva il record pubblicato del gruppo nel risolvere lo stato di amministrazione. Questo mantiene distinti due gruppi con nomi simili su relay diversi e offre ai client una fonte supportata dal relay per i loro metadati di gestione.&lt;/p>
&lt;h3 id="divine-isola-i-relay-lenti-durante-le-query-multi-relay">Divine isola i relay lenti durante le query multi-relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">Divine&lt;/a> è un client mobile di video brevi che pubblica e recupera video tramite Nostr. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/6673">PR #6673&lt;/a> dà a ogni query di relay il proprio timeout invece di lasciare che una connessione bloccata consumi il budget di tempo di un&amp;rsquo;intera richiesta. I risultati dei relay che rispondono possono quindi arrivare mentre l&amp;rsquo;endpoint lento viene abbandonato indipendentemente. La modifica migliora il recupero senza trattare un relay come autorevole per il risultato combinato.&lt;/p>
&lt;h3 id="rust-nostr-rafforza-crittografia-hash-e-riconciliazione">rust-nostr rafforza crittografia, hash e riconciliazione&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> è una libreria e un toolkit Rust per client, relay e implementazioni del protocollo Nostr. La &lt;a href="https://github.com/rust-nostr/nostr/pull/1421">PR #1421&lt;/a> riduce le allocazioni nel suo percorso di crittografia versionata &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, mentre la &lt;a href="https://github.com/rust-nostr/nostr/pull/1423">PR #1423&lt;/a> introduce hash tipizzati che rendono più difficile mescolare accidentalmente valori di digest incompatibili. Il &lt;a href="https://github.com/rust-nostr/nostr/commit/21e31c28da3dfadedb5fa6e58c712647f16e5f69">commit 21e31c2&lt;/a> impedisce a un messaggio malformato di riconciliazione degli insiemi Negentropy di &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a> di disconnettere il relay locale. Il lavoro unito rafforza sia la gestione dei payload cifrati sia il comportamento di fallimento della riconciliazione prima della prossima release.&lt;/p>
&lt;h3 id="zeus-serializza-i-pagamenti-nwc-prima-di-addebitare-i-budget-di-spesa">Zeus serializza i pagamenti NWC prima di addebitare i budget di spesa&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> è un wallet mobile Bitcoin e Lightning che può esporre operazioni del wallet tramite Nostr Wallet Connect. La &lt;a href="https://github.com/ZeusLN/zeus/pull/4305">PR #4305&lt;/a> conta i pagamenti in sospeso contro un budget &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect invece di attendere il regolamento. La &lt;a href="https://github.com/ZeusLN/zeus/pull/4303">PR #4303&lt;/a> serializza la gestione dei pagamenti così che le richieste concorrenti non possano correre attraverso lo stesso limite di autorizzazione. La coppia unita chiude una lacuna nell&amp;rsquo;applicazione dei budget sulla superficie di controllo Nostr del wallet.&lt;/p>
&lt;h3 id="nostr-components-condivide-un-unico-tentativo-di-connessione-al-relay">Nostr Components condivide un unico tentativo di connessione al relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/saiy2k/nostr-components">Nostr Components&lt;/a> è una libreria riutilizzabile di componenti web per aggiungere dati e interazioni Nostr alle applicazioni. La &lt;a href="https://github.com/saiy2k/nostr-components/pull/105">PR #105&lt;/a> permette ai componenti montati contemporaneamente di condividere un tentativo di connessione al relay in corso. Ogni consumatore riceve comunque la connessione risultante, ma i montaggi concorrenti non aprono più socket duplicati mentre il primo handshake è in attesa. La modifica riduce il carico evitabile sui relay nelle applicazioni assemblate da diversi componenti indipendenti.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-specifica-del-protocollo">Aggiornamenti NIP e lavoro di specifica del protocollo&lt;/h2>
&lt;h3 id="formati-di-eventi-nostr-e-scoperta">Formati di eventi Nostr e scoperta&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2430">PR NIP #2430&lt;/a> propone pacchetti di adesivi come definizioni indirizzabili di kind &lt;code>30031&lt;/code> e i pacchetti installati da un utente come kind sostituibile &lt;code>10031&lt;/code>. Ogni tag di adesivo porta uno shortcode, un hash SHA-256 e un tipo MIME; l&amp;rsquo;immagine resta su un server &lt;a href="https://github.com/nostr-protocol/nips/blob/master/B7.md">NIP-B7&lt;/a> (archiviazione blob Blossom). La bozza aperta standardizza così identità e installazione dei pacchetti senza collocare i byte dell&amp;rsquo;immagine negli eventi.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2429">PR NIP #2429&lt;/a> propone documenti Gopher indirizzabili di kind &lt;code>31436&lt;/code>. Ogni evento contiene un nodo di testo o menu UTF-8, e i nodi firmati sotto una stessa pubkey formano un gopherhole che qualsiasi bridge RFC 1436 supportato da relay può servire. La proposta aperta usa il normale storage degli eventi indirizzabili invece di legare la pubblicazione a un unico hostname Gopher.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2428">PR NIP #2428&lt;/a> propone gruppi privati con biglietti per epoca. Un gruppo ruota le credenziali di appartenenza tra epoche, e i client presentano il biglietto dell&amp;rsquo;epoca corrente per partecipare. La bozza punta alla chat privata senza chiedere a un relay di trattare un bearer token permanente come appartenenza a vita.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2425">PR NIP #2425&lt;/a>, trattata come proposta la scorsa settimana, ha ora unito un chiarimento sugli URI in &lt;a href="https://nostrcompass.org/it/topics/nip-b0/">NIP-B0&lt;/a> (segnalibri web indirizzabili). Distingue i prefissi HTTPS omessi dagli schemi URI espliciti quando un segnalibro memorizza la sua destinazione nel tag &lt;code>d&lt;/code>, impedendo ai client di ricostruire una destinazione ambigua.&lt;/p>
&lt;h3 id="pagamenti-e-connessioni-ai-wallet">Pagamenti e connessioni ai wallet&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2419">PR NIP #2419&lt;/a>, trattata come proposta nel numero del 22 luglio, ha ora unito un nucleo &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) ridotto. Gli URI di connessione, il trasporto cifrato su relay, la scoperta delle capacità, la negoziazione della crittografia e i metodi comuni restano nel NIP; notifiche, fatture in sospeso, keysend, cronologia delle transazioni, metadati e accoppiamento tramite deep link passano a un repository di estensioni dedicato. Le connessioni esistenti restano compatibili mentre i wallet possono implementare i contratti opzionali in modo indipendente.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-wallet-connect/nwc/pull/2">PR NWC #2&lt;/a>, trattata come proposta la scorsa settimana, ha ora unito i metodi di pagamento BIP-321 in quel repository di estensioni. BIP-321 fornisce un URI di pagamento Bitcoin comune che può portare diversi rail, così che i chiamanti NWC possano richiedere o inviare un pagamento senza aggiungere un nuovo RPC centrale per ogni tipo di istruzione sottostante.&lt;/p>
&lt;h3 id="capacità-dellhost-dei-napplets">Capacità dell&amp;rsquo;host dei napplets&lt;/h3>
&lt;p>La &lt;a href="https://github.com/napplet/naps/pull/95">PR NAP #95&lt;/a> propone la scoperta del catalogo per applicazioni in sandbox distribuite via Nostr. Un napplet chiede al suo host quali applicazioni e capacità sono disponibili, e l&amp;rsquo;host restituisce metadati filtrati per policy invece di esporre tutto il suo ambiente locale. Il contratto supporta le decisioni di lancio senza concedere autorità di esecuzione durante la scoperta.&lt;/p>
&lt;p>La &lt;a href="https://github.com/napplet/naps/pull/33">PR NAP #33&lt;/a> propone caricamenti di file e blob mediati dalla shell. Un napplet fornisce byte e intenzione; l&amp;rsquo;host seleziona un rail NIP-96 o Blossom, firma l&amp;rsquo;autorizzazione, riporta i progressi e restituisce URL, hash, dati MIME e tag &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> (metadati di file) pronti da allegare. Credenziali di storage e autorità HTTP non entrano mai nel napplet.&lt;/p>
&lt;h3 id="gruppi-cifrati-marmot">Gruppi cifrati Marmot&lt;/h3>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot/pull/410">PR Marmot #410&lt;/a> ha unito regole di convergenza e di input differito. I client distinguono un oggetto a cui manca una dipendenza dall&amp;rsquo;epoca corrente da un input obsoleto o non valido, lo mantengono idoneo per un nuovo recupero dopo un rifiuto di risorse e riprovano quando un altro commit cambia il contesto di decrittazione. Un commitment di stato con separazione di dominio offre ai test di conformità un oracolo di convergenza condiviso senza aggiungere un campo wire di produzione.&lt;/p>
&lt;h3 id="piani-comunitari-di-concord">Piani comunitari di Concord&lt;/h3>
&lt;p>La &lt;a href="https://github.com/concord-protocol/concord/pull/14">PR Concord #14&lt;/a> ha unito i messaggi a scomparsa di CORD-08. Un valore di metadati della comunità fissa la durata; i rumors di chat e gli involucri cifrati portano un tag &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a> (scadenza degli eventi), mentre gli eventi di cancellazione e l&amp;rsquo;avviso del timer di kind &lt;code>1740&lt;/code> ne sono esenti. Il timer firmato viaggia con lo stato della comunità, anche se la cancellazione da parte del relay resta una richiesta di conservazione e non una garanzia crittografica di eliminazione.&lt;/p>
&lt;p>La &lt;a href="https://github.com/concord-protocol/concord/pull/13">PR Concord #13&lt;/a> ha unito in CORD-04 il pinning resistente alle rotazioni. Ogni canale ha una lista di pin a sostituzione completa sul piano di controllo; le voci portano il sigillo firmato originale più le chiavi di espansione NIP-44 per messaggio, permettendo a un nuovo membro di verificare autore e testo in chiaro senza ricevere una vecchia chiave d&amp;rsquo;epoca. Le liste private possono restare sigillate a un&amp;rsquo;epoca del canale, dei limiti vincolano la dimensione della lista, e le cancellazioni dell&amp;rsquo;autore rimuovono i pin senza biforcare la catena del piano di controllo.&lt;/p>
&lt;h2 id="approfondimento-nip">Approfondimento NIP&lt;/h2>
&lt;h3 id="capacità-di-ricerca-nip-50">Capacità di ricerca (NIP-50)&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>, definito nella &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">specifica principale&lt;/a>, aggiunge un filtro di ricerca opzionale per i relay. I filtri Nostr ordinari funzionano quando un client conosce già un autore, un kind di evento, un identificatore o un tag; NIP-50 affronta la scoperta quando l&amp;rsquo;input è una query umana come &lt;code>best nostr apps&lt;/code>.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md#search-filter-field">formato wire di NIP-50&lt;/a> aggiunge una stringa &lt;code>search&lt;/code> a un filtro normale all&amp;rsquo;interno di un messaggio &lt;code>REQ&lt;/code>. Una richiesta può combinare quel campo con &lt;code>kinds&lt;/code>, &lt;code>authors&lt;/code>, &lt;code>ids&lt;/code>, filtri di tag e &lt;code>limit&lt;/code>, e un REQ può portare diversi filtri indipendenti. Un relay che lo supporta dovrebbe cercare principalmente nel &lt;code>content&lt;/code> dell&amp;rsquo;evento, può usare altri campi quando il kind di evento lo rende utile e dovrebbe ordinare secondo il proprio punteggio di rilevanza prima di applicare il &lt;code>limit&lt;/code>. Quest&amp;rsquo;ordine differisce dal consueto flusso di eventi dal più recente al più vecchio.&lt;/p>
&lt;p>La stringa di query può includere le &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md#extensions">estensioni &lt;code>key:value&lt;/code>&lt;/a> della specifica. Essa nomina &lt;code>include:spam&lt;/code>, &lt;code>domain:&lt;/code>, &lt;code>language:&lt;/code>, &lt;code>sentiment:&lt;/code> e &lt;code>nsfw:&lt;/code>; un relay dovrebbe ignorare le estensioni che non implementa. I client scoprono il supporto dichiarato tramite il campo &lt;code>supported_nips&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> del relay, ma possono comunque inviare il filtro altrove se sono pronti a scartare risposte non pertinenti.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">specifica NIP-50&lt;/a> deliberatamente non standardizza tokenizzazione, stemming, ranking, rilevamento della lingua, analisi del sentiment o classificazione dello spam. Due relay conformi possono restituire eventi e ordinamenti diversi per la stessa query. Questo rende il relay un fornitore di indici e ranking, non una fonte di verità. La specifica raccomanda di interrogare diversi relay che la supportano, di verificare se gli eventi restituiti soddisfano il caso d&amp;rsquo;uso del client e di abbandonare i relay i cui risultati hanno scarsa precisione.&lt;/p>
&lt;p>Questo differisce dal &lt;a href="https://github.com/nostr-protocol/nips/blob/master/01.md">filtraggio esatto di NIP-01&lt;/a>. Un filtro &lt;code>authors&lt;/code> o &lt;code>#t&lt;/code> ha una semantica di corrispondenza deterministica che un client può verificare direttamente, mentre una corrispondenza di ricerca può dipendere da un indice e da un punteggio opaco. NIP-50 mantiene l&amp;rsquo;involucro firmato dell&amp;rsquo;evento e il trasporto via relay di NIP-01, ma accetta variazione nel recall e nell&amp;rsquo;ordinamento per rendere possibile il recupero aperto.&lt;/p>
&lt;p>L&amp;rsquo;evento qui sotto è un risultato di ricerca illustrativo che usa i &lt;a href="https://github.com/nostr-protocol/nips/blob/master/01.md#events-and-signatures">sette campi dell&amp;rsquo;evento di NIP-01&lt;/a>. I valori esadecimali ripetuti sono segnaposto e non una firma valida.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;2943d6b43bcbf0ee4a8b4cac912111be0309607b8bb435ae40529989bea7f6c5&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1785771175&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;I&amp;#39;ve been working on a customizable client (mostly relay feeds, but a ton of other things and subtle details too). It&amp;#39;s called Hallway for reasons I don&amp;#39;t remember and it&amp;#39;s a fork of Fevela which is a fork of Jumble, but very rewritten for speed and simplicity...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5b058b89dab9bd09d81bdc10eff95536125b87fbcbbc97f08d835c1272b2a3190cc3d340e42f54acb0d7e0e4b00355ab91292d0305c84a2d73b538319c0da12c&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I client attuali usano lo stesso filtro in diverse superfici di scoperta. &lt;a href="https://github.com/nostria-app/nostria/blob/d291c2ab091c60c36f99c90241e2fd9da1b0c4bc/src/app/services/relays/search-relay.ts">Nostria&lt;/a> invia ricerche NIP-50 a relay di ricerca dedicati, &lt;a href="https://github.com/soapbox-pub/ditto/blob/04adb2d242ab6f5807fd27ae3e0cb9beab091641/src/hooks/useSearchEvents.ts">Ditto&lt;/a> cerca eventi tramite il suo pool di relay, e &lt;a href="https://github.com/77elements/noornote/blob/bf1f9b431552497dc1779ea0d8fed2c3c28e6070/src/services/orchestration/SearchOrchestrator.ts">NoorNote&lt;/a> coordina ricerche supportate da relay per la lettura di formato lungo. Il loro diverso trattamento dei risultati riflette la libertà che NIP-50 lascia a relay e client.&lt;/p>
&lt;h3 id="highlight-nip-84">Highlight (NIP-84)&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84&lt;/a>, definito dalla sua &lt;a href="https://github.com/nostr-protocol/nips/blob/master/84.md">specifica principale&lt;/a>, assegna il kind &lt;code>9802&lt;/code> a un highlight. Trasforma un passaggio selezionato, o un riferimento a un media non testuale, in un evento firmato che può muoversi tra client di lettura, sociali e di annotazione.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/nostr-protocol/nips/blob/master/84.md#format">&lt;code>content&lt;/code> dell&amp;rsquo;evento&lt;/a> contiene il testo selezionato e può essere vuoto quando la fonte è audio, video o un altro medium non testuale. Un highlight punta a una fonte Nostr con un tag &lt;code>a&lt;/code> per un evento indirizzabile o un tag &lt;code>e&lt;/code> per un evento ordinario; un tag &lt;code>r&lt;/code> identifica un URL web. I client che producono URL dovrebbero rimuovere i parametri di tracciamento e altri parametri di query non utili prima della pubblicazione, così che varianti cosmetiche dell&amp;rsquo;URL non frammentino i riferimenti alla stessa fonte.&lt;/p>
&lt;p>I &lt;a href="https://github.com/nostr-protocol/nips/blob/master/84.md#attribution">tag &lt;code>p&lt;/code>&lt;/a> opzionali attribuiscono la fonte a una o più pubkey Nostr. Il loro quarto valore può identificare un ruolo come &lt;code>author&lt;/code> o &lt;code>editor&lt;/code>, e un tag &lt;code>context&lt;/code> può conservare il testo circostante quando la selezione da sola risulterebbe poco chiara. Un highlight con citazione aggiunge un tag &lt;code>comment&lt;/code> invece di pubblicare una seconda nota di kind &lt;code>1&lt;/code>: il tag &lt;code>r&lt;/code> della fonte riceve il marcatore &lt;code>source&lt;/code>, mentre le pubkey o gli URL menzionati nel commento portano &lt;code>mention&lt;/code>, permettendo ai renderer di distinguere l&amp;rsquo;attribuzione dalla risposta dell&amp;rsquo;utente.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/84.md">definizione del kind &lt;code>9802&lt;/code>&lt;/a> rende un highlight un evento regolare anziché sostituibile. Ripetere o correggere una selezione crea un altro evento firmato, e rimuoverne uno si affida al normale flusso di richiesta di cancellazione e alla politica di conservazione del relay. La specifica non definisce offset di byte, selettori o uno snapshot canonico del documento, quindi un client potrebbe non riuscire a rintracciare un passaggio dopo che la sua fonte web è cambiata. Gli highlight pubblici rivelano inoltre interessi di lettura; l&amp;rsquo;annotazione privata richiede un design separato di crittografia e condivisione.&lt;/p>
&lt;p>NIP-84 differisce da un &lt;a href="https://github.com/nostr-protocol/nips/blob/master/23.md">evento di formato lungo NIP-23&lt;/a>, che pubblica un intero articolo come kind &lt;code>30023&lt;/code>; un highlight cita o punta a materiale che può restare altrove. Differisce anche da un &lt;a href="https://github.com/nostr-protocol/nips/blob/master/51.md">insieme di segnalibri NIP-51&lt;/a>, che memorizza una collezione sostituibile di riferimenti. NIP-84 rende ogni selezione indipendentemente firmata, attribuibile, scopribile e discutibile.&lt;/p>
&lt;p>Questo highlight illustrativo contiene i &lt;a href="https://github.com/nostr-protocol/nips/blob/master/01.md#events-and-signatures">sette campi dell&amp;rsquo;evento di NIP-01&lt;/a>. Il suo identificatore e la sua firma sono segnaposto.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;0d57c07cfdfe8ec00711e2af88a666b61fc35c167b90b02dfb5db7ffba7b794a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;07367baec8e73c076b14e47fba3b0d5c014d559d7986a7172a79a8a64419d7c2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1785797755&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">9802&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;context&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Quantum computers will break secp256k1 which nostr relies on for its public private key pair. This means that given an npub, a quantum computer will be able to derive your nsec, read all your encrypted data and sign events as you.&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;alt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;This is a highlight created in https://primal.net iOS application&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30023:1ec454734dcbf6fe54901ce25c0c7c6bca5edd89443416761fadc321d38df139:nostr-quantum-preparation&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1ec454734dcbf6fe54901ce25c0c7c6bca5edd89443416761fadc321d38df139&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;mention&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Quantum computers will break secp256k1 which nostr relies on for its public private key pair. This means that given an npub, a quantum computer will b&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;219f3c1e572d1a087d667dc0d3a5443c77c0db3a5d42ce4e630604901ac63d2c879a86269d81e220bb77fd48b1579adafc333075e53c6eb0a108791fdd4a1622&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il formato attraversa già i confini tra client. &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.5.0">nostrord 2.5.0&lt;/a> ha aggiunto il rendering di NIP-84 questa settimana, &lt;a href="https://github.com/77elements/noornote/blob/bf1f9b431552497dc1779ea0d8fed2c3c28e6070/src/components/ui/note-rendering/HighlightRenderer.ts">NoorNote&lt;/a> renderizza gli eventi di highlight nel suo client di formato lungo, e &lt;a href="https://github.com/soapbox-pub/ditto/blob/04adb2d242ab6f5807fd27ae3e0cb9beab091641/src/hooks/useCreateHighlight.ts">Ditto&lt;/a> li pubblica dal contenuto selezionato. Queste implementazioni coprono lettura, creazione e rendering sociale senza richiedere che un unico servizio possieda l&amp;rsquo;annotazione.&lt;/p>
&lt;hr>
&lt;p>Invia un DM NIP-17 per condividere un progetto o una notizia tramite il &lt;a href="https://github.com/andotherstuff/nostr-compass">progetto Nostr Compass&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #33</title><link>https://nostrcompass.org/it/newsletters/2026-07-29-newsletter/</link><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-07-29-newsletter/</guid><description>&lt;p>Bentornati su &lt;a href="https://github.com/andotherstuff/nostr-compass">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.13.1">Amethyst 1.13.1&lt;/a> segue il lancio delle app Nostr nella versione 1.13.0 con l&amp;rsquo;autenticazione del relay host NIP-29 e nuovi tentativi autenticati per i download da Blossom. &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.68">Code Call&lt;/a> permette di proseguire dal telefono le sessioni di programmazione remote, &lt;a href="https://github.com/DanConwayDev/gitworkshop">GitWorkshop&lt;/a> coordina i manutentori e la sincronizzazione dei repository, e &lt;a href="https://github.com/pablof7z/mosaico/releases/tag/v0.1.2">Mosaico&lt;/a> offre agli agenti di programmazione un livello condiviso di consapevolezza su Nostr. &lt;a href="https://dev.nostrolo.gy/relays">Nostrology&lt;/a> mappa il modo in cui i profili dividono le funzioni di lettura e scrittura tra gli elenchi di relay pubblicati. I rilasci Android di &lt;a href="https://github.com/DestBro/mafrend-zapstore/releases/tag/v1.0">Mafrend&lt;/a>, &lt;a href="https://github.com/Letdown2491/hanami-android/releases/tag/v0.1.0">Hanami&lt;/a> e &lt;a href="https://github.com/Cordn-msg/cordn-web/releases/tag/v0.2.1">Cordn&lt;/a> guidano i rilasci taggati, mentre &lt;a href="https://github.com/jmcorgan/fips/pull/126">FIPS aggiunge un livello di accesso OpenWrt&lt;/a> e una &lt;a href="https://github.com/jmcorgan/fips/pull/129">PR aperta propone un port per FreeBSD&lt;/a>. La copertura dei protocolli riferisce su NIP, BUD, NAP, Marmot, Gamma Markets, Concord e NWC, mentre &lt;a href="https://github.com/nostr-protocol/nips/commits/master/">Sei anni di luglio su Nostr&lt;/a> ripercorre le modifiche di luglio, dalle prime ricerche per dominio allo stato dei gruppi basati su relay.&lt;/p></description><content:encoded>&lt;p>Bentornati su &lt;a href="https://github.com/andotherstuff/nostr-compass">Nostr Compass&lt;/a>, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.13.1">Amethyst 1.13.1&lt;/a> segue il lancio delle app Nostr nella versione 1.13.0 con l&amp;rsquo;autenticazione del relay host NIP-29 e nuovi tentativi autenticati per i download da Blossom. &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.68">Code Call&lt;/a> permette di proseguire dal telefono le sessioni di programmazione remote, &lt;a href="https://github.com/DanConwayDev/gitworkshop">GitWorkshop&lt;/a> coordina i manutentori e la sincronizzazione dei repository, e &lt;a href="https://github.com/pablof7z/mosaico/releases/tag/v0.1.2">Mosaico&lt;/a> offre agli agenti di programmazione un livello condiviso di consapevolezza su Nostr. &lt;a href="https://dev.nostrolo.gy/relays">Nostrology&lt;/a> mappa il modo in cui i profili dividono le funzioni di lettura e scrittura tra gli elenchi di relay pubblicati. I rilasci Android di &lt;a href="https://github.com/DestBro/mafrend-zapstore/releases/tag/v1.0">Mafrend&lt;/a>, &lt;a href="https://github.com/Letdown2491/hanami-android/releases/tag/v0.1.0">Hanami&lt;/a> e &lt;a href="https://github.com/Cordn-msg/cordn-web/releases/tag/v0.2.1">Cordn&lt;/a> guidano i rilasci taggati, mentre &lt;a href="https://github.com/jmcorgan/fips/pull/126">FIPS aggiunge un livello di accesso OpenWrt&lt;/a> e una &lt;a href="https://github.com/jmcorgan/fips/pull/129">PR aperta propone un port per FreeBSD&lt;/a>. La copertura dei protocolli riferisce su NIP, BUD, NAP, Marmot, Gamma Markets, Concord e NWC, mentre &lt;a href="https://github.com/nostr-protocol/nips/commits/master/">Sei anni di luglio su Nostr&lt;/a> ripercorre le modifiche di luglio, dalle prime ricerche per dominio allo stato dei gruppi basati su relay.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="dopo-il-lancio-delle-app-nostr-amethyst-1131-aggiunge-laccesso-autenticato-ai-gruppi-e-a-blossom">Dopo il lancio delle app Nostr, Amethyst 1.13.1 aggiunge l&amp;rsquo;accesso autenticato ai gruppi e a Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.13.0">Amethyst 1.13.0&lt;/a>, rilasciata il 28 luglio per il client Nostr multipiattaforma e per Android, apre napplet e nsite NIP-5A all&amp;rsquo;interno di un processo browser isolato e privo di chiavi. Un bridge &lt;code>window.nostr&lt;/code>, subordinato al consenso, può firmare e usare funzionalità selezionate tramite l&amp;rsquo;account attivo, mentre le schermate dei permessi per sito e per account consentono agli utenti di esaminare o revocare tali autorizzazioni. Le app preferite possono restare fissate nella barra inferiore senza condividere cookie, stato di accesso o autorizzazioni tra account.&lt;/p>
&lt;p>Lo stesso &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.13.0">rilascio 1.13.0&lt;/a> aggiunge alberi dei repository Git, issue e pull request insieme alle comunità Concord, ai gruppi basati su relay NIP-29, alla chat di gruppo Buzz, alle pagine wiki e ai feed RSS. Queste aree dell&amp;rsquo;app consentono a un utente di passare tra viste di codice, comunità, pubblicazione e social sotto la stessa identità Nostr.&lt;/p>
&lt;p>Anche i pagamenti e l&amp;rsquo;identità si sono ampliati nella &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.13.0">versione 1.13.0&lt;/a>. Amethyst può creare e pagare offerte BOLT12, avviare automaticamente account con firmatario remoto, aggiungere server Blossom di riserva ed estendere i controlli Web of Trust per badge, comunità e gruppi basati su relay. Il &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.13.1">seguito 1.13.1&lt;/a> del 29 luglio aggiunge un &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3767">sigillo di scioglimento CORD-02&lt;/a>, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3779">cancellazione di gruppi e canali&lt;/a> tramite kind &lt;code>9008&lt;/code>, l&amp;rsquo;&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3788">autenticazione del relay host NIP-29&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3789">nuovi tentativi BUD-01&lt;/a> autenticati per i download Blossom con accesso limitato.&lt;/p>
&lt;h3 id="code-call-0268-aggiunge-un-browser-per-le-cartelle-dei-worker-dopo-che-la-0266-ha-introdotto-il-riepilogo">Code Call 0.2.68 aggiunge un browser per le cartelle dei worker dopo che la 0.2.66 ha introdotto il riepilogo&lt;/h3>
&lt;p>&lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.68">Code Call 0.2.68&lt;/a>, un&amp;rsquo;app Android per controllare da remoto le sessioni di programmazione eseguite su computer, sostituisce il proprio elenco speciale di workspace con un browser di cartelle radicato nella directory del worker. Un utente può entrare nelle cartelle annidate consentite, selezionarne una per una sessione OpenCode e tornare alle cartelle superiori; la &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.67">versione 0.2.67&lt;/a> apre tale browser quando viene avviata una sessione.&lt;/p>
&lt;p>Il precedente &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.66">rilascio 0.2.66&lt;/a> può chiedere a un worker instradato un riepilogo conciso a partire dall&amp;rsquo;ultimo messaggio del telefono. Altri rilasci della stessa settimana mantengono &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.51">indipendenti più sessioni&lt;/a>, accettano risposte soltanto dal &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.56">mittente atteso&lt;/a> e mantengono la casella in entrata connessa a &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.59">ogni relay del worker configurato&lt;/a> per la consegna in background. Le richieste e le risposte viaggiano all&amp;rsquo;interno di &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17 (Messaggi diretti privati)&lt;/a>, mentre gli allegati &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> cifrati localmente &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.55">mantengono il tipo di file originale dopo la decifratura&lt;/a>.&lt;/p>
&lt;h3 id="gitworkshop-coordina-i-manutentori-e-mantiene-indipendente-la-sincronizzazione-dei-repository">GitWorkshop coordina i manutentori e mantiene indipendente la sincronizzazione dei repository&lt;/h3>
&lt;p>Il &lt;a href="https://primal.net/e/869e01f9a74d98f468a66f3b83865d198a82cc718c1db36324398b1b88a17c60">rilascio firmato di GitWorkshop del 27 luglio&lt;/a> aggiunge l&amp;rsquo;accesso Android tramite &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55 (Applicazione firmataria Android)&lt;/a> al forge &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34 (&lt;code>git&lt;/code> stuff)&lt;/a> basato su browser. Il suo &lt;a href="https://github.com/DanConwayDev/gitworkshop">repository sorgente&lt;/a> ora coordina in modo ricorsivo i manutentori principali, conserva i relay hint di ciascun manutentore e mantiene la sincronizzazione dei repository indipendente dall&amp;rsquo;accettazione degli inviti. I riferimenti tra elementi di lavoro di repository diversi collegano attività correlate tra repository, mentre GRASP copia i dati dei repository verso endpoint Git selezionati senza legare il trasferimento alla consegna degli inviti. L&amp;rsquo;&lt;a href="https://primal.net/e/01d0939e9960cb82f1f7aba6f1900af2c61ce384e38352221bf9d5878116ae2d">aggiornamento 3.1.1&lt;/a>, firmato dallo sviluppatore, corregge la consegna degli intent al firmatario Android, la risoluzione ricorsiva dei manutentori e i link ai repository che preservano il percorso.&lt;/p>
&lt;h3 id="mosaico-012-consente-agli-agenti-di-programmazione-di-condividere-lo-stato-su-nostr">Mosaico 0.1.2 consente agli agenti di programmazione di condividere lo stato su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/pablof7z/mosaico/releases/tag/v0.1.2">Mosaico 0.1.2&lt;/a> consente alle sessioni degli agenti di programmazione in Claude Code, Codex, Goose, Hermes, OpenCode e Grok di pubblicare brevi aggiornamenti di stato tramite &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29 (Gruppi basati su relay)&lt;/a>. Le sessioni possono trovare attività correlate in corso su host diversi senza condividere trascrizioni o contesto.&lt;/p>
&lt;p>La scoperta dei profili Codex denominati e la vista Top Of Mind di Goose mostrano tale stato condiviso all&amp;rsquo;interno di entrambi gli ambienti (&lt;a href="https://github.com/pablof7z/mosaico/pull/618">PR #618&lt;/a>, &lt;a href="https://github.com/pablof7z/mosaico/pull/619">PR #619&lt;/a>). Il rilascio ripristina la capacità degli agenti ospitati di partecipare al livello pubblico di consapevolezza, e la configurazione ora richiede una scelta esplicita del relay (&lt;a href="https://github.com/pablof7z/mosaico/pull/626">PR #626&lt;/a>, &lt;a href="https://github.com/pablof7z/mosaico/pull/629">PR #629&lt;/a>). Mosaico resta un livello di consapevolezza, non un host per agenti, un orchestratore o uno strumento per unire trascrizioni.&lt;/p>
&lt;h3 id="nostrology-mappa-la-concentrazione-degli-elenchi-di-relay-dagli-event-nip-65-pubblicati">Nostrology mappa la concentrazione degli elenchi di relay dagli event NIP-65 pubblicati&lt;/h3>
&lt;p>L&amp;rsquo;&lt;a href="https://dev.nostrolo.gy/relays">osservatorio dei relay di Nostrology&lt;/a> ricava il proprio set di dati dall&amp;rsquo;ultimo event kind &lt;code>10002&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65 (Metadati dell&amp;rsquo;elenco dei relay)&lt;/a> di ciascun profilo, seguendo la &lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">specifica pubblicata&lt;/a>. Separa i ruoli di lettura, scrittura e combinati dei relay, rappresenta quanti relay elenca ciascun profilo ed espone i conteggi sottostanti in una tabella ordinabile. Alla revisione per la pubblicazione del 29 luglio, la pagina conteneva 34.430 valori distinti di URL di relay e raggruppava 520.468 profili con un solo relay elencato, rispetto ai 150.657 con tre e ai 60.710 con quattro.&lt;/p>
&lt;p>La stessa &lt;a href="https://dev.nostrolo.gy/relays">istantanea di Nostrology&lt;/a> mostra una concentrazione sovrapposta attorno a &lt;code>relay.momostr.pink&lt;/code> per 298.859 profili, &lt;code>relay.damus.io&lt;/code> per 287.181, &lt;code>nos.lol&lt;/code> per 279.468 e &lt;code>relay.primal.net&lt;/code> per 225.336. Questi conteggi misurano le voci pubblicate negli elenchi di relay, non la disponibilità: la tabella grezza può includere URL malformati e indirizzi locali, mentre la &lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">specifica NIP-65&lt;/a> definisce i metadati di instradamento e non verifica lo stato dei relay. L&amp;rsquo;osservatorio rende visibili i problemi di adozione e qualità dei dati senza considerare attivo un relay soltanto perché è elencato.&lt;/p>
&lt;h2 id="rilasci-taggati">Rilasci taggati&lt;/h2>
&lt;h3 id="kairos-011-aggiunge-promemoria-e-unistruzione-locale-per-astraea">Kairos 0.1.1 aggiunge promemoria e un&amp;rsquo;istruzione locale per Astraea&lt;/h3>
&lt;p>&lt;a href="https://primal.net/e/ffb054280008dc3ba488d5d3a2cbfec6c4123489a874683545a29a466682fd90">Kairos 0.1.1&lt;/a> aggiunge promemoria per le scadenze, un&amp;rsquo;istruzione locale esplicita per Astraea e una gestione più rigorosa di relay e URL. Il &lt;a href="https://primal.net/e/6e02430844abdabf5421bbf5745a09ef2870e4ade93f56627ee14ba8db58a00a">rilascio firmato 0.1.0&lt;/a> ha introdotto il &lt;a href="https://github.com/Lwb89dev/kairos">gestore di attività offline-first&lt;/a>, il cui livello di sincronizzazione facoltativo scrive record cifrati con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44 (Payload cifrati)&lt;/a> nei relay scelti dall&amp;rsquo;utente. Kairos usa coordinate deterministiche per le attività e marcatori di eliminazione cifrati con richieste di cancellazione &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09 (Richiesta di cancellazione degli event)&lt;/a>, mentre le attività soltanto locali non lasciano mai il dispositivo.&lt;/p>
&lt;h3 id="bray-230-offre-alla-propria-cli-un-gift-wrapping-generico-e-una-superficie-di-test-blossom-locale">Bray 2.3.0 offre alla propria CLI un gift wrapping generico e una superficie di test Blossom locale&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/bray/releases/tag/v2.3.0">Bray 2.3.0&lt;/a>, un SDK Nostr e toolkit da riga di comando, può applicare e rimuovere il gift wrap a event arbitrari tramite &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a>, instradando la firma attraverso &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46 (Nostr Connect)&lt;/a> quando la chiave è custodita da un bunker. La &lt;a href="https://github.com/forgesworn/bray/pull/75">PR #75&lt;/a> aggiunge inoltre al relay di test incluso le richieste di autenticazione &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42 (Autenticazione dei client presso i relay)&lt;/a> ed espone i restanti comandi del client Blossom. La &lt;a href="https://github.com/forgesworn/bray/pull/77">PR #77&lt;/a> aggiunge un server BUD-01/02 in memoria la cui autorizzazione firmata lega ogni caricamento o cancellazione a un singolo blob, mentre la &lt;a href="https://github.com/forgesworn/bray/pull/76">PR #76&lt;/a> aggiunge kind di event denominati, tag abbreviati e flag di riconciliazione degli ID &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a> che evitano di scaricare event già posseduti dal chiamante.&lt;/p>
&lt;h3 id="buzz-desktop-050-rende-più-rigorosi-inviti-ricerca-e-aggiornamenti-dellidentità-sui-relay">Buzz Desktop 0.5.0 rende più rigorosi inviti, ricerca e aggiornamenti dell&amp;rsquo;identità sui relay&lt;/h3>
&lt;p>Dopo la copertura della scorsa settimana sui workspace Armada e Buzz, &lt;a href="https://github.com/block/buzz/releases/tag/v0.5.0">Buzz Desktop 0.5.0&lt;/a> aggiunge link di invito con un numero limitato di utilizzi (&lt;a href="https://github.com/block/buzz/pull/3141">PR #3141&lt;/a>) e filtri di ricerca per autore, canale e intervalli temporali (&lt;a href="https://github.com/block/buzz/pull/2871">PR #2871&lt;/a>). La &lt;a href="https://github.com/block/buzz/pull/2862">PR #2862&lt;/a> recupera le politiche di partecipazione tramite il livello di rete nativo dell&amp;rsquo;app desktop, e la &lt;a href="https://github.com/block/buzz/pull/2607">PR #2607&lt;/a> ripubblica il record di identità di un agente dopo che il relay riceve il nuovo nome del profilo dell&amp;rsquo;agente. Il rilascio aggiorna inoltre la dipendenza Nostr in risposta a un &lt;a href="https://github.com/block/buzz/pull/3135">avviso su un attacco denial-of-service remoto in NIP-44&lt;/a> e corregge il ripristino dell&amp;rsquo;archiviazione locale, il posizionamento nei thread, la riconnessione ai relay e i percorsi di runtime su Linux e Windows.&lt;/p>
&lt;h3 id="shosho-100-amplia-il-proprio-marketplace-per-le-dirette-streaming">Shosho 1.0.0 amplia il proprio marketplace per le dirette streaming&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v1.0.0">Shosho 1.0.0&lt;/a> ridisegna il marketplace per le dirette streaming attorno a creatori, sessioni dal vivo, clip e prodotti che gli utenti possono trovare tramite una ricerca configurabile sui relay. Un feed unificato delle notifiche raccoglie ora menzioni, reazioni, repost e zap e permette di rispondere senza lasciare il feed. Gli spettatori possono pubblicare clip dalle dirette o dai replay, mentre il rilascio migliora anche la chat in thread, le risposte alle clip, il caricamento dei profili e l&amp;rsquo;uso della rete.&lt;/p>
&lt;h3 id="mafrend-v10-presenta-in-anteprima-la-chat-nostr-basata-sui-luoghi-su-android">Mafrend v1.0 presenta in anteprima la chat Nostr basata sui luoghi su Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/DestBro/mafrend-zapstore/releases/tag/v1.0">Mafrend v1.0&lt;/a> è la prima alpha Android pubblica di una prevista app di chat Nostr basata sui luoghi. La sua &lt;a href="https://mafrend.com">pagina del progetto&lt;/a> indica che l&amp;rsquo;insieme di funzionalità è ancora in sviluppo attivo e descrive ogni posizione sulla mappa come una chat room dedicata alle conversazioni relative a quel luogo. Un repository pubblico dei rilasci contiene il pacchetto installabile di Zapstore, mentre l&amp;rsquo;app principale rimane privata.&lt;/p>
&lt;h3 id="hanami-010-offre-ai-server-blossom-un-percorso-android-mediato-da-un-firmatario">Hanami 0.1.0 offre ai server Blossom un percorso Android mediato da un firmatario&lt;/h3>
&lt;p>&lt;a href="https://github.com/Letdown2491/hanami-android/releases/tag/v0.1.0">Hanami 0.1.0&lt;/a>, un&amp;rsquo;app complementare Android per i server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, consente alle persone di accedere, caricare e scaricare da un telefono. L&amp;rsquo;app usa &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55 (Applicazione firmataria Android)&lt;/a> per la firma mediata dall&amp;rsquo;approvazione e un handshake nativo &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98 (Autenticazione HTTP)&lt;/a> per la sessione con il server. Hanami limita la propria shell web e il bridge di firma all&amp;rsquo;origine del server scelto, mantenendo le credenziali presso il firmatario mentre l&amp;rsquo;interfaccia web esistente del server fornisce l&amp;rsquo;esperienza dell&amp;rsquo;applicazione. Il primo rilascio pubblico richiede Android 8 o successivo, un server Hanami raggiungibile e un&amp;rsquo;app firmataria compatibile.&lt;/p>
&lt;h3 id="cordn-lancia-su-android-la-propria-chat-di-gruppo-con-identità-nostr">Cordn lancia su Android la propria chat di gruppo con identità Nostr&lt;/h3>
&lt;p>Cordn, un client di messaggistica privata di gruppo, offre ora agli utenti Android l&amp;rsquo;onboarding dell&amp;rsquo;identità Nostr, link ai profili tramite &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05 (Mappatura delle chiavi Nostr su identificatori Internet basati su DNS)&lt;/a> e link verificati che aprono le destinazioni Cordn nell&amp;rsquo;app. Il &lt;a href="https://github.com/Cordn-msg/cordn-web/releases/tag/v0.2.1">rilascio 0.2.1 pubblicato il 24 luglio&lt;/a> introduce questa versione nativa accanto al client web esistente. I messaggi usano &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a>, un protocollo di cifratura di gruppo, con consegna assistita da un coordinatore, così i gruppi mantengono conversazioni cifrate ordinate senza richiedere un indirizzo email o un numero di telefono.&lt;/p>
&lt;h3 id="nostur-1301-corregge-i-thread-e-i-post-duplicati-dopo-che-la-1300-ha-ampliato-la-condivisione">Nostur 1.30.1 corregge i thread e i post duplicati dopo che la 1.30.0 ha ampliato la condivisione&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.30.1">Nostur 1.30.1&lt;/a>, un client Nostr per iPhone, iPad e Mac, consente di navigare tra thread di risposte annidati senza gli errori di espansione e compressione che interferivano con il nuovo layout. Impedisce inoltre che la stessa bozza venga pubblicata due volte, anche quando si ripetono i callback del caricamento dei media. Il rilascio segue la &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.30.0">1.30.0&lt;/a>, che ha aggiunto messaggi diretti a scomparsa e un percorso nel foglio di condivisione per inviare media a Nostr, così l&amp;rsquo;app ora abbina nuovi percorsi di messaggistica e pubblicazione alle correzioni dei flussi quotidiani dei thread e dei post.&lt;/p>
&lt;h3 id="formstr-drive-002-abbina-i-metadati-dei-file-nostr-ai-blob-blossom">Formstr Drive 0.0.2 abbina i metadati dei file Nostr ai blob Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/formstr-drive/releases/tag/v0.0.2">Formstr Drive 0.0.2&lt;/a>, un gestore di file nativo di Nostr, offre agli utenti anteprime nell&amp;rsquo;app e l&amp;rsquo;opzione di aprire documenti da ufficio in Nostr Docs. Al livello sottostante, archivia i file di grandi dimensioni come blob &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> suddivisi in parti e cancella il blob remoto quando un utente rimuove un file. Un relay locale mantiene a portata di mano i metadati Nostr dell&amp;rsquo;app, mentre Blossom conserva i dati dei file, separando l&amp;rsquo;organizzazione dei file dai loro contenuti voluminosi.&lt;/p>
&lt;h3 id="noornote-131">NoorNote 1.3.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote/releases/tag/v1.3.1">NoorNote 1.3.1&lt;/a>, un client Nostr per web, desktop e Android, aggiunge timer per i messaggi a scomparsa e configura relay DM predefiniti e funzionanti per gli account appena creati. Filtra gli articoli globali privi di immagini di copertina e instrada le notifiche di repost nel lettore degli articoli. Il precedente &lt;a href="https://github.com/77elements/noornote/releases/tag/v1.3.0">rilascio 1.3.0&lt;/a> ha aggiunto schede &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53 (attività dal vivo)&lt;/a>, tag NIP-68 per le persone nei &lt;a href="https://nostrcompass.org/it/topics/nip-68/">feed incentrati sulle immagini&lt;/a>, un silenziamento leggero &lt;a href="https://nostrcompass.org/it/topics/nip-78/">NIP-78 (dati dell&amp;rsquo;applicazione)&lt;/a> e lo stato dei relay che hanno visto le note.&lt;/p>
&lt;h3 id="algia-00133">algia 0.0.133&lt;/h3>
&lt;p>&lt;a href="https://github.com/mattn/algia/releases/tag/v0.0.133">algia 0.0.133&lt;/a>, un client Nostr da riga di comando scritto in Go, segue la &lt;a href="https://github.com/mattn/algia/releases/tag/v0.0.132">0.0.132&lt;/a>, che ha aggiunto elenchi, timeline, pubblicazione, reazioni, cancellazioni e flussi di ingresso e uscita per &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29 (Gruppi basati su relay)&lt;/a>. Lo stesso rilascio ha aggiunto la pre-autenticazione &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42 (Autenticazione dei client presso i relay)&lt;/a> per i relay configurati per richiederla. La versione 0.0.133 ha poi aggiunto il caricamento di immagini locali ai comandi di pubblicazione normali, di canale e di gruppo, allegando a ogni event gli URL risultanti e i tag &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92 (Allegati multimediali)&lt;/a>. Funzionano anche i post contenenti soltanto immagini, e per impostazione predefinita i post di gruppo usano l&amp;rsquo;archivio multimediale del relay del gruppo, mentre gli altri post usano i file server configurati.&lt;/p>
&lt;h3 id="swift-nostr-070">swift-nostr 0.7.0&lt;/h3>
&lt;p>Per le applicazioni Swift, &lt;a href="https://github.com/yysskk/swift-nostr/releases/tag/0.7.0">swift-nostr 0.7.0&lt;/a>, una libreria Nostr per le piattaforme Apple, consente a un solo &lt;a href="https://nostrcompass.org/it/topics/nip-46/">firmatario remoto NIP-46&lt;/a> di gestire ogni funzionalità del client tramite la propria astrazione di firma. Il rilascio aggiunge il supporto a &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98 (Autenticazione HTTP)&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29 (Gruppi basati su relay)&lt;/a>, compresi i flussi per partecipare ai gruppi, pubblicare e moderare. Convalida inoltre il padding di &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44 (Payload cifrati, con versione)&lt;/a> rispetto ai vettori ufficiali, rifiutando i payload che contengono un MAC valido su un padding non canonico.&lt;/p>
&lt;h3 id="lawallet-nwc-200">lawallet-nwc 2.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/lawalletio/lawallet-nwc/releases/tag/v2.0.0">LaWallet NWC 2.0.0&lt;/a>, un wallet connesso a Nostr e servizio &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>, aggiunge l&amp;rsquo;accesso con passkey che deriva nel browser la chiave di firma Nostr tramite l&amp;rsquo;estensione PRF di WebAuthn. Il server non riceve mai tale segreto, e la stessa passkey può recuperare la medesima chiave su un altro dispositivo sincronizzato. Gli account possono ora collegare e unire più pubkey Nostr, mentre il servizio listener facoltativo inoltra gli event di wallet-connect e ritenta la consegna dei webhook dopo che un endpoint risulta irraggiungibile.&lt;/p>
&lt;h3 id="mdk-0910">MDK 0.9.10&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.10">MDK 0.9.10&lt;/a>, l&amp;rsquo;implementazione Rust del &lt;a href="https://nostrcompass.org/it/topics/marmot/">protocollo Marmot&lt;/a>, conserva gli invii in sospeso mentre un trasporto è inattivo e &lt;a href="https://github.com/marmot-protocol/mdk/pull/1157">supervisiona l&amp;rsquo;inoltro delle notifiche dei relay&lt;/a>, così la consegna in entrata si riprende dopo un lag, un panic o una chiusura. La &lt;a href="https://github.com/marmot-protocol/mdk/pull/1159">PR #1159&lt;/a> aggiunge una cronologia delle conversazioni persistente e paginata e il contesto completo delle risposte per gli agenti locali, mentre la &lt;a href="https://github.com/marmot-protocol/mdk/pull/1167">PR #1167&lt;/a> ripubblica l&amp;rsquo;event KeyPackage firmato corrente invece di generarne uno sostitutivo. Il rilascio conserva inoltre l&amp;rsquo;ordinamento manuale delle chat, supporta lo scioglimento definitivo dei gruppi ed estende la ricerca ordinata secondo Web of Trust, le API per le politiche dei relay e i binding linguistici.&lt;/p>
&lt;h3 id="pakstr-031">pakstr 0.3.1&lt;/h3>
&lt;p>&lt;a href="https://git.nostrdev.com/stuff/pakstr/releases/tag/v0.3.1">pakstr 0.3.1&lt;/a> consente ai team web che confezionano un client Nostr per Android di fornire configurazione di runtime e un proxy API senza ricostruire la shell dell&amp;rsquo;app. La sua &lt;a href="https://git.nostrdev.com/stuff/pakstr/releases">serie di rilasci dello stesso giorno&lt;/a> ha aggiunto un bridge per il firmatario Amber, cifratura e decifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44 (payload cifrati)&lt;/a> e ha corretto l&amp;rsquo;inserimento dei permessi Android prima del lavoro sulla configurazione di runtime della serie 0.3.x. Lo scaffold mantiene locali gli asset web inclusi, mentre le impostazioni specifiche della distribuzione vengono fornite in fase di esecuzione, e il proxy offre all&amp;rsquo;app confezionata un percorso controllato per le richieste API accanto alle normali connessioni ai relay.&lt;/p>
&lt;h3 id="ditto-2342">Ditto 2.34.2&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ditto/-/releases/v2.34.2">Ditto 2.34.2&lt;/a>, un client social Nostr personalizzabile, visualizza gli stati degli utenti come schede nei feed, nelle pagine di dettaglio e nelle citazioni incorporate, includendo emoji personalizzate, scadenza e anteprime facoltative dei link. Gli zap con commenti ora appaiono come risposte sotto il post di riferimento. Il rilascio conserva anche il &lt;a href="https://gitlab.com/soapbox-pub/ditto/-/releases/v2.34.1">pulsante facoltativo a forma di globo sul profilo della versione 2.34.1&lt;/a> per i proprietari che pubblicano un sito radice &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A (manifest del sito web)&lt;/a> e corregge la navigazione della homepage, la ricerca delle dirette, la gestione dei link esterni e le emoji personalizzate non funzionanti.&lt;/p>
&lt;h3 id="earthly-009">Earthly 0.0.9&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/earthly/releases/tag/v0.0.9">Earthly 0.0.9&lt;/a>, un editor collaborativo di mappe costruito su Nostr, ora mantiene visibili i Mi piace quando il pannello di un&amp;rsquo;entità della mappa si chiude, si riapre o si aggiorna. Il suo flusso &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57 (zap Lightning)&lt;/a> invia JSON validi per le richieste di zap, così i fornitori Lightning possono pubblicare ricevute verificate su relay raggiungibili pubblicamente, anche durante lo sviluppo locale. Le fatture generate restano visibili quando cambia la schermata dell&amp;rsquo;entità, e l&amp;rsquo;app mostra una conferma dopo l&amp;rsquo;arrivo di una ricevuta verificata.&lt;/p>
&lt;h2 id="in-sviluppo">In sviluppo&lt;/h2>
&lt;h3 id="keep-aggiunge-la-firma-nip-44-v3-limitata-per-kind-e-rende-più-rigorosa-la-politica-di-approvazione">Keep aggiunge la firma NIP-44 v3 limitata per kind e rende più rigorosa la politica di approvazione&lt;/h3>
&lt;p>Keep ha integrato cinque modifiche al firmatario Android che trasportano le richieste di cifratura e decifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44 (Payload cifrati)&lt;/a> v3 attraverso entrambi i trasporti &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55 (Applicazione firmataria Android)&lt;/a> e il proprio bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46 (Nostr Connect)&lt;/a>. Le &lt;a href="https://github.com/privkeyio/keep-android/pull/451">PR #451&lt;/a>, &lt;a href="https://github.com/privkeyio/keep-android/pull/452">#452&lt;/a> e &lt;a href="https://github.com/privkeyio/keep-android/pull/453">#453&lt;/a> mantengono separate le autorizzazioni v3 da quelle v2, le limitano per kind di event, rifiutano kind mancanti o non validi e conservano le richieste di approvazione aperte dalle notifiche. Le &lt;a href="https://github.com/privkeyio/keep-android/pull/454">PR #454&lt;/a> e &lt;a href="https://github.com/privkeyio/keep-android/pull/455">#455&lt;/a> smettono di trattare come Auto la politica di firma Basic e spostano la selezione globale nell&amp;rsquo;archivio cifrato di proprietà del core. I manutentori di Keep hanno integrato tutte e cinque le modifiche dopo l&amp;rsquo;ultimo rilascio Android taggato.&lt;/p>
&lt;h3 id="routstrd-cambia-il-binding-di-rete-predefinito-dopo-unesposizione-senza-autenticazione">Routstrd cambia il binding di rete predefinito dopo un&amp;rsquo;esposizione senza autenticazione&lt;/h3>
&lt;p>La &lt;a href="https://github.com/Routstr/routstrd/pull/56">PR #56&lt;/a> di Routstrd cambia l&amp;rsquo;indirizzo di binding predefinito del router locale di inferenza Nostr da tutte le interfacce di rete a &lt;code>127.0.0.1&lt;/code>. Il valore predefinito precedente esponeva gli endpoint senza autenticazione per saldo del wallet, cronologia, accesso, invio, rimborso, chiave API, fornitore, client, utilizzo e arresto del daemon a qualsiasi host in grado di raggiungere la porta. Gli operatori possono ancora configurare esplicitamente un binding non locale, ma la modifica integrata rende locale per impostazione predefinita una nuova distribuzione e non è ancora apparsa in un rilascio taggato.&lt;/p>
&lt;h3 id="imwald-android-chiarisce-lo-stato-della-pubblicazione-offline">Imwald Android chiarisce lo stato della pubblicazione offline&lt;/h3>
&lt;p>Imwald Android, un client Nostr per Android, ora considera la conferma da parte di un relay locale come pubblicazione completata soltanto quando tutte le destinazioni configurate sono locali. La sua &lt;a href="https://git.imwald.eu/silberengel/imwald-android/commit/f4de9f61df35110c77d2e5f99d764c0df176962b">correzione alla pubblicazione offline e all&amp;rsquo;outbox&lt;/a> mantiene in sospeso la consegna remota quando un relay locale ha accettato l&amp;rsquo;event ma i relay remoti configurati non l&amp;rsquo;hanno fatto, così il rapporto di pubblicazione distingue l&amp;rsquo;archiviazione locale sul dispositivo dalla consegna ai relay.&lt;/p>
&lt;h3 id="fips-aggiunge-un-livello-di-accesso-openwrt-un-port-per-freebsd-resta-in-revisione">FIPS aggiunge un livello di accesso OpenWrt; un port per FreeBSD resta in revisione&lt;/h3>
&lt;p>Il Free Internetworking Peering System Nostr-native ora consente a un router OpenWrt di esporre una rete di accesso &lt;code>!FIPS&lt;/code> aperta tramite la &lt;a href="https://github.com/jmcorgan/fips/pull/126">PR #126 integrata&lt;/a>. La &lt;a href="https://github.com/jmcorgan/fips/pull/129">PR #129 per FreeBSD&lt;/a>, parallela e ancora aperta, propone di effettuare il port del daemon, del percorso dati TUN, della risoluzione dei nomi &lt;code>.fips&lt;/code>, della gestione dei servizi e della compilazione del pacchetto nativo. L&amp;rsquo;integrazione per OpenWrt amplia oggi l&amp;rsquo;accesso, mentre il lavoro su FreeBSD lo estenderebbe a un altro sistema operativo generico.&lt;/p>
&lt;p>Un &lt;a href="https://primal.net/e/d0afe733f75e909341ab7f39834883968df097472238a474df3a3346c5d38f51">aggiornamento del progetto FIPS del 26 luglio&lt;/a> ha riportato più di 300 nodi sul proprio overlay UDP pubblico e una mesh più ampia vicina ai 2.000 nodi. Il &lt;a href="https://github.com/jmcorgan/fips">repository FIPS&lt;/a> ha dedicato la stessa settimana a irrobustire i test di rete concorrenti, la continuità del cambio delle chiavi, il comportamento del limite degli hop, i controlli del firewall e l&amp;rsquo;isolamento del laboratorio NAT. Il lavoro nel repository offre agli operatori verifiche riproducibili di tali comportamenti durante la crescita della rete.&lt;/p>
&lt;h3 id="zap-cooking-programma-i-post-e-vincola-le-richieste-dello-scanner">Zap Cooking programma i post e vincola le richieste dello scanner&lt;/h3>
&lt;p>Zap Cooking, un&amp;rsquo;app Nostr per condividere ricette e pianificare i pasti, può ora conservare un post programmato in un archivio cifrato e pubblicarlo alla scadenza tramite un controllo periodico dei relay (&lt;a href="https://github.com/zapcooking/frontend/pull/566">PR #566&lt;/a>, &lt;a href="https://github.com/zapcooking/frontend/pull/569">PR #569&lt;/a>). Questo offre agli utenti un percorso di pubblicazione programmata senza lasciare esposto il contenuto non firmato del post nel database dello scheduler.&lt;/p>
&lt;p>Il suo scanner del frigorifero ora autentica il corpo esatto della richiesta con l&amp;rsquo;autenticazione HTTP &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a>, così le verifiche dell&amp;rsquo;adesione si basano sulla chiave che ha firmato la richiesta di scansione invece che su una pubkey fornita nel suo corpo (&lt;a href="https://github.com/zapcooking/frontend/pull/599">PR #599&lt;/a>).&lt;/p>
&lt;h3 id="citrine-trasforma-un-dispositivo-android-in-un-relay-gestibile">Citrine trasforma un dispositivo Android in un relay gestibile&lt;/h3>
&lt;p>Citrine, un relay Nostr ospitato su Android, ora può inviare a relay esterni gli event che ha archiviato, offrendo a un operatore un modo per ritrasmettere la cronologia locale (&lt;a href="https://github.com/greenart7c3/Citrine/pull/179">PR #179&lt;/a>). Aggiunge inoltre comandi &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86 (API di gestione dei relay)&lt;/a> affinché i client compatibili possano amministrare il relay (&lt;a href="https://github.com/greenart7c3/Citrine/pull/150">PR #150&lt;/a>).&lt;/p>
&lt;p>Gli operatori dei gruppi possono amministrare i gruppi basati su relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> tramite la firma Amber nella &lt;a href="https://github.com/greenart7c3/Citrine/pull/178">PR #178&lt;/a>, mentre la &lt;a href="https://github.com/greenart7c3/Citrine/pull/174">PR #174&lt;/a> mantiene allineati tra i riavvii la configurazione dei relay basati su Tor e lo stato del ciclo di vita.&lt;/p>
&lt;h3 id="wired-recupera-conversazioni-complete-nel-browser">Wired recupera conversazioni complete nel browser&lt;/h3>
&lt;p>Wired, un client Nostr basato su browser, ora segue le radici dei feed, le risposte e gli event citati fino a ricostruirli integralmente, invece di fermarsi a limiti fissi di ampiezza o di risultati (&lt;a href="https://github.com/smolgrrr/Wired/pull/148">PR #148&lt;/a>, &lt;a href="https://github.com/smolgrrr/Wired/pull/147">PR #147&lt;/a>, &lt;a href="https://github.com/smolgrrr/Wired/pull/146">PR #146&lt;/a>). Gli utenti possono quindi recuperare thread più profondi e il contesto del feed quando gli event pertinenti sono disponibili sui propri relay.&lt;/p>
&lt;p>Il browser conserva anche i relay hint sugli event citati e li usa soltanto per il contesto ancora mancante, ripristinando conversazioni che i relay configurati non contengono (&lt;a href="https://github.com/smolgrrr/Wired/pull/145">PR #145&lt;/a>, &lt;a href="https://github.com/smolgrrr/Wired/pull/144">PR #144&lt;/a>). Il recupero incompleto resta distinto da un&amp;rsquo;istantanea completata, così una risposta parziale non sovrascrive la vista precedentemente memorizzata nella cache.&lt;/p>
&lt;h2 id="lavoro-su-protocolli-e-specifiche">Lavoro su protocolli e specifiche&lt;/h2>
&lt;h3 id="nip-limiti-dellhosting-nip-34-migrazione-dei-gruppi-e-tre-bozze-attive">NIP: limiti dell&amp;rsquo;hosting NIP-34, migrazione dei gruppi e tre bozze attive&lt;/h3>
&lt;p>Questa settimana sono state integrate due modifiche alle specifiche. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/6d2979b3f503a8539c983efbcdcf901bbcf9ed23">commit NIP-34 6d2979b&lt;/a> rimuove le istruzioni di hosting GRASP dalla descrizione della pull request &lt;code>kind:1618&lt;/code>, lasciando l&amp;rsquo;hosting e il comportamento di riserva fuori dal contratto dell&amp;rsquo;event. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/db5fe3de8c5d1443b634c9bbf66ecb004f337057">commit NIP-29 db5fe3d&lt;/a> definisce come i metadati di un gruppo basato su relay migrano verso un altro relay e come i client distinguono uno spostamento valido da un fork che prosegue in modo indipendente.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2424">PR #2424&lt;/a> propone dichiarazioni reciproche dei set di chiavi &lt;code>kind:10045&lt;/code>. Il requisito di reciprocità impedirebbe a un&amp;rsquo;identità di associare unilateralmente un&amp;rsquo;altra chiave. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2421">PR #2421&lt;/a> propone intenti di zap BOLT12 e prove del pagatore che i client possono convalidare rispetto al destinatario, all&amp;rsquo;importo, all&amp;rsquo;offerta e al pagamento regolato senza dipendere da un server di ricevute gestito dal destinatario.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2425">PR #2425&lt;/a> consentirebbe ai segnalibri NIP-B0 di conservare schemi non HTTP come &lt;code>nostr:&lt;/code> insieme agli URL web. Questo manterrebbe intatti gli identificatori Nostr nativi, le richieste di pagamento e altri schemi applicativi negli stessi elenchi di segnalibri privati o pubblici che contengono già indirizzi web.&lt;/p>
&lt;h3 id="mill-implementa-una-bozza-per-il-backup-delle-chiavi-tramite-account-cloud">Mill implementa una bozza per il backup delle chiavi tramite account cloud&lt;/h3>
&lt;p>Mill ha &lt;a href="https://primal.net/e/6362d9b00662fa64200530f8a29ae547521bac0a1e3c9379ef9086eac7d2030b">annunciato&lt;/a> di aver implementato una &lt;a href="https://github.com/0ceanSlim/nostr-mill/blob/main/docs/nip-cloud-key-backup.md">bozza per il backup delle chiavi tramite account cloud&lt;/a> che combina l&amp;rsquo;identificatore di un account Google OIDC con una passphrase ad alta entropia per derivare una chiave di backup usa e getta. La sua &lt;a href="https://github.com/0ceanSlim/nostr-mill/blob/main/src/nipbackup.js">implementazione di riferimento&lt;/a> cifra la chiave reale dell&amp;rsquo;utente come &lt;code>ncryptsec&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49 (Cifratura della chiave privata)&lt;/a>, poi la archivia in un event kind &lt;code>30049&lt;/code> provvisorio, parametrizzato e sostituibile, sui relay configurati. Il progetto ha &lt;a href="https://github.com/0ceanSlim/nostr-mill/commit/eeb4b9114d02114b703a6823ad36ca8063b224da">integrato il flusso di backup nel branch main&lt;/a>, ma nessun rilascio successivo alla v1.0.0 lo include e il flusso di backup resta disabilitato a meno che un operatore non fornisca &lt;code>backupRelays&lt;/code> dedicati. Un insieme di relay con versione resta provvisorio, e la bozza avverte che il testo cifrato pubblicato rimane disponibile per tentativi offline di indovinare la passphrase. I lettori dovrebbero considerare il progetto un esperimento implementato che dipende da una passphrase ad alta entropia.&lt;/p>
&lt;h3 id="bud-i-server-blossom-possono-identificare-dai-byte-i-caricamenti-di-tipo-sconosciuto">BUD: i server Blossom possono identificare dai byte i caricamenti di tipo sconosciuto&lt;/h3>
&lt;p>La &lt;a href="https://github.com/hzrd149/blossom/pull/110">PR BUD-02 #110&lt;/a> propone di raccomandare il rilevamento lato server del tipo MIME quando chi carica omette &lt;code>Content-Type&lt;/code> o invia &lt;code>application/octet-stream&lt;/code>. Un server Blossom esaminerebbe i primi byte con una libreria aggiornata per i tipi di file, conserverebbe un tipo specifico fornito dal client e userebbe il tipo binario generico quando il rilevamento non riesce. Ciò manterrebbe visualizzabili immagini, audio, video e file prodotti dagli agenti senza rendere obbligatorio l&amp;rsquo;esame dei byte per ogni caricamento.&lt;/p>
&lt;h3 id="nap-le-convenzioni-sostituiscono-i-percorsi-numerati-mentre-si-sviluppano-i-contratti-di-acquisizione-e-filesystem">NAP: le convenzioni sostituiscono i percorsi numerati mentre si sviluppano i contratti di acquisizione e filesystem&lt;/h3>
&lt;p>La &lt;a href="https://github.com/napplet/naps/pull/87">PR #87&lt;/a> rimuove il percorso numerato del protocollo tra napplet e mantiene le funzionalità di runtime sotto contratti denominati, mentre i messaggi delle applicazioni convergono verso URI di convenzione &lt;code>napplet:&amp;lt;archetype&amp;gt;/&amp;lt;intent&amp;gt;&lt;/code>. La &lt;a href="https://github.com/napplet/naps/pull/89">modifica all&amp;rsquo;identità degli argomenti&lt;/a> integrata separa un percorso di convenzione stabile e privo di query dai dati del payload di ciascun messaggio, e la &lt;a href="https://github.com/napplet/naps/pull/90">PR #90&lt;/a> applica tale regola di trasposizione ai metadati di scoperta e dei gestori.&lt;/p>
&lt;p>Due bozze NAP estendono il confine della shell attendibile. La &lt;a href="https://github.com/napplet/naps/pull/94">PR NAP-CAPTURE #94&lt;/a> mantiene nel runtime il consenso per il microfono, i permessi della piattaforma, i limiti, la conservazione e lo smantellamento, restituendo al contempo a una napplet in sandbox un artefatto multimediale soggetto a limiti definiti. La &lt;a href="https://github.com/napplet/naps/pull/88">PR NAP-FS #88&lt;/a> è la proposta parallela per un filesystem virtuale, con handle vincolati dalle politiche invece di percorsi host senza restrizioni.&lt;/p>
&lt;h3 id="marmot-la-specifica-definisce-uno-stato-terminale-del-gruppo">Marmot: la specifica definisce uno stato terminale del gruppo&lt;/h3>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot/pull/409">PR Marmot #409&lt;/a> aggiunge uno stato &lt;code>Disbanded&lt;/code> autenticato e irreversibile perché MLS non dispone di un&amp;rsquo;operazione per cancellare i gruppi. Un commit autorizzato dell&amp;rsquo;amministratore sposta un gruppo fuori da &lt;code>Active&lt;/code>, impedisce a vecchi branch, messaggi e Welcome di riattivarlo e offre ai gruppi esistenti un percorso esplicito di compatibilità prima dello scioglimento. La precedente &lt;a href="https://github.com/marmot-protocol/marmot/pull/408">revisione delle issue della specifica&lt;/a> ha inoltre riconciliato l&amp;rsquo;autorità sullo stato dei gruppi, la convergenza, i pacchetti di chiavi, le conferme, le regole sui media, il linguaggio del registro e 200 issue tracciate della specifica.&lt;/p>
&lt;h3 id="gamma-markets-nessuna-modifica-pubblica-alle-specifiche-è-stata-integrata">Gamma Markets: nessuna modifica pubblica alle specifiche è stata integrata&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/GammaMarkets/market-spec">repository delle specifiche di Gamma Markets&lt;/a> non ha registrato commit pubblici né attività di pull request dal 21 al 28 luglio. I documenti pubblicati su ordini, regolamento e dati di mercato restano il riferimento corrente; questa voce senza modifiche mantiene Gamma visibile nella revisione settimanale delle specifiche.&lt;/p>
&lt;h3 id="concord-le-funzionalità-di-lettura-e-scrittura-possono-separarsi-allinterno-di-un-singolo-piano">Concord: le funzionalità di lettura e scrittura possono separarsi all&amp;rsquo;interno di un singolo piano&lt;/h3>
&lt;p>La &lt;a href="https://github.com/concord-protocol/concord/pull/12">PR Concord #12&lt;/a> resta una bozza aperta per i piani in cui non tutti i lettori dovrebbero poter scrivere. Sposta il Control Plane verso funzionalità separate per i flussi di lettura e scrittura e abbozza canali a scrittura limitata, inviti e ambiti di ricambio delle chiavi. Nella bozza la chiave di scrittura funge da filtro antispam, mentre gli attori interni firmati e i controlli dell&amp;rsquo;elenco dei membri continuano a conferire l&amp;rsquo;autorità.&lt;/p>
&lt;h3 id="nwc-un-metodo-del-wallet-può-scegliere-tra-bolt11-e-bolt12">NWC: un metodo del wallet può scegliere tra BOLT11 e BOLT12&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-wallet-connect/nwc/pull/2">PR NWC #2&lt;/a> propone i metodi facoltativi &lt;code>pay&lt;/code> e &lt;code>receive&lt;/code> per gli URI di pagamento BIP-321. Un servizio wallet può dichiarare il supporto, scegliere da un URI una fattura BOLT11 o un&amp;rsquo;offerta BOLT12 compatibile, rifiutare prima del pagamento una rete Bitcoin non corrispondente e indicare quale tipo di istruzione ha usato. La proposta resta al di fuori del core NWC, così i wallet privi di supporto BIP-321 o BOLT12 non devono implementarla.&lt;/p>
&lt;h2 id="sei-anni-di-luglio-su-nostr">Sei anni di luglio su Nostr&lt;/h2>
&lt;p>Questa storia di luglio segue problemi ricorrenti di Nostr: identificatori leggibili, filtraggio dei relay, dati applicativi portabili, privacy e interoperabilità. Nel corso di sei anni, ogni livello trasforma una correzione circoscritta in infrastruttura condivisa: i nomi diventano profili, i filtri diventano contratti applicativi e lo stato trasportato dai relay si estende dalle note alle stanze live e ai gruppi. Inizia con &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/1ce00bd3b6909f78f212a7a172cf845b55280599">la prima implementazione di NIP-05&lt;/a> e termina con &lt;a href="https://github.com/nostr-protocol/nips/commit/2f4b09335c54a993d483bc220195e3f4a33df1ec">l&amp;rsquo;integrazione di questo mese per la scoperta indirizzabile&lt;/a>, quindi esamina le modifiche di luglio che hanno sviluppato questi temi.&lt;/p>
&lt;h3 id="luglio-2021">Luglio 2021&lt;/h3>
&lt;p>Il 19 luglio 2021, il &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/1ce00bd3b6909f78f212a7a172cf845b55280599">commit 1ce00bd di nostr-tools&lt;/a> ha aggiunto un modulo &lt;code>nip05.js&lt;/code> e portato il pacchetto alla versione 0.5.0. La sua funzione &lt;code>keyFromDomain&lt;/code> costruiva una richiesta DNS TXT per &lt;code>_nostrkey.&amp;lt;domain&amp;gt;&lt;/code>, inviava la query binaria a uno degli otto fornitori DNS-over-HTTPS a rotazione e restituiva la prima chiave nella risposta. Un client browser poteva quindi tradurre un dominio controllato da una persona in una chiave pubblica senza gestire un resolver DNS né dipendere da un unico fornitore predefinito nel codice.&lt;/p>
&lt;p>Quel primo approccio risolveva la ricerca ma non i nomi all&amp;rsquo;interno di un dominio, e il suo confine di fiducia risiedeva nel DNS e nel resolver scelto. La moderna &lt;a href="https://github.com/nostr-protocol/nips/blob/master/05.md">specifica NIP-05&lt;/a> ha spostato la scoperta su &lt;code>/.well-known/nostr.json&lt;/code>, dove un dominio associa nomi locali a pubkey e può allegare relay hint. Il codice del 2021 registra la precedente pressione progettuale: le chiavi pubbliche erano portabili, ma le persone avevano ancora bisogno di identificatori che potessero leggere, verificare e trasferire tra client.&lt;/p>
&lt;h3 id="luglio-2022">Luglio 2022&lt;/h3>
&lt;p>Il 10 luglio, il &lt;a href="https://github.com/nostr-protocol/nips/commit/3771186c0351656a675576051b75d253f26c0f0b">commit NIP-12 3771186&lt;/a> ha limitato le query generiche dei relay ai tag di una sola lettera. Tale decisione ha reso filtri come &lt;code>#r&lt;/code>, &lt;code>#g&lt;/code> e &lt;code>#t&lt;/code> utili per riferimenti URL, geohash e hashtag senza chiedere ai relay di indicizzare ogni chiave arbitraria dei metadati. Dieci giorni dopo, la prima &lt;a href="https://github.com/nostr-protocol/nips/commit/9f9a864ce1e1ebfdcfdd4835cd60807440f038e8">bozza NIP-20 per i commenti web&lt;/a> ha usato direttamente quel modello di query: un commento kind &lt;code>34&lt;/code> conteneva l&amp;rsquo;URL normalizzato di una pagina web in un tag &lt;code>r&lt;/code>, permettendo a un sito e a client indipendenti di recuperare la stessa discussione dai relay.&lt;/p>
&lt;p>Sono seguite le politiche dei relay e il feedback sociale. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/f51ce9dc0efaf61f39a76e112c310a9f58af1c87">commit NIP-22&lt;/a> originale consentiva ai relay di rifiutare event il cui timestamp &lt;code>created_at&lt;/code> fosse inverosimilmente vecchio, e il &lt;a href="https://github.com/nostr-protocol/nips/commit/8bef0e9d79ebb4b11f8fd2bea11dc8f1668bc9d0">commit 8bef0e9&lt;/a> ha aggiunto alla stessa politica i timestamp futuri. Il 30 luglio, il &lt;a href="https://github.com/nostr-protocol/nips/commit/dcbd504639d20d1b0ae6bb837609710645781b88">commit NIP-25 dcbd504&lt;/a> ha definito reazioni kind &lt;code>7&lt;/code> con tag di destinazione &lt;code>e&lt;/code> e &lt;code>p&lt;/code>; il commit successivo ha assegnato &lt;code>-&lt;/code> a una reazione negativa, e il &lt;a href="https://github.com/nostr-protocol/nips/commit/6903ff5b2c395a550a26069f6e2b5460ae1fdca6">commit 6903ff5&lt;/a> ha reso &lt;code>+&lt;/code> il Mi piace generico esplicito. Insieme, questi commit hanno specificato il rifiuto dei timestamp da parte dei relay, il recupero basato su tag, i commenti web e i tag di reazione per i client che hanno adottato le bozze.&lt;/p>
&lt;h3 id="luglio-2023">Luglio 2023&lt;/h3>
&lt;p>Il luglio 2023 ha esteso il coordinamento oltre le note brevi. La &lt;a href="https://github.com/nostr-protocol/nips/commit/e057fa01ca3928a32bdc0e9a44c27f946f267041">bozza NIP-37 sulle chiavi perdute&lt;/a> ha esplorato il ritiro irreversibile delle chiavi, soglie di recupero sociale e chiavi sostitutive vincolate in anticipo, rifiutando esplicitamente di definire il risultato come rotazione universale delle chiavi. Cinque giorni dopo, &lt;a href="https://github.com/nostr-protocol/nips/commit/141197c564d97073f0293e3b2f367f0b6b3619c2">NIP-53&lt;/a> ha introdotto attività dal vivo indirizzabili di kind &lt;code>30311&lt;/code> e messaggi di chat kind &lt;code>1311&lt;/code>, offrendo a streaming, palchi e stanze dal vivo un modello di event condiviso per host, partecipanti, stato e conversazione.&lt;/p>
&lt;p>Anche le applicazioni hanno iniziato a pubblicare richieste di lavoro e offerte commerciali. La prima &lt;a href="https://github.com/nostr-protocol/nips/commit/67e950a2009e81df1b8c91b0a2ade0596e83f168">bozza Data Vending Machine&lt;/a> descriveva richieste di lavoro kind &lt;code>68001&lt;/code>, risultati kind &lt;code>68002&lt;/code>, offerte, scadenze, concatenamento e fornitori concorrenti per attività quali trascrizione, sintesi e traduzione. Il 13 luglio, la &lt;a href="https://github.com/nostr-protocol/nips/commit/451c06a3c572a13afe45c1d80616f8e6dd9bb1de">bozza per gli annunci classificati&lt;/a> ha aggiunto offerte indirizzabili kind &lt;code>30402&lt;/code> con metadati per titolo, riepilogo, prezzo, posizione e stato. Tali bozze sono poi diventate NIP-90 e NIP-99, ma già nelle forme di luglio separavano una richiesta o un annuncio dal server che li visualizzava.&lt;/p>
&lt;p>Anche l&amp;rsquo;instradamento dei pagamenti è diventato componibile. L&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/commit/5d63b1570c490007252b10e757f7f68ef1f4b717">integrazione NIP-57 per la suddivisione degli zap&lt;/a> del 31 luglio ha trasformato una singola destinazione &lt;code>zap&lt;/code> in un elenco ponderato di pubkey dei destinatari e relay hint. Un client poteva dividere uno zap tra collaboratori, omettere i destinatari privi di peso quando erano presenti alcuni pesi e mostrare la suddivisione prima del pagamento. La modifica ha standardizzato una rappresentazione mediante event firmato per i destinatari ponderati degli zap e i relay hint, consentendo ai client compatibili di presentare la suddivisione prima del pagamento.&lt;/p>
&lt;h3 id="luglio-2024">Luglio 2024&lt;/h3>
&lt;p>Il 4 luglio, il &lt;a href="https://github.com/nostr-protocol/nips/commit/c60ca888efbdc9b8fa4bbfbace372409d0b2161a">commit NIP-29 c60ca88&lt;/a> ha aggiunto l&amp;rsquo;azione di moderazione dei relay &lt;code>kind:9007&lt;/code> per creare un gruppo. Sei giorni dopo, &lt;a href="https://github.com/nostr-protocol/nips/commit/ae1906ec7943a6bd756f05d2cd2fb2a041398921">NIP-70&lt;/a> ha definito gli event protetti: un tag &lt;code>-&lt;/code> indica a un relay di accettare la pubblicazione soltanto dall&amp;rsquo;autore autenticato dell&amp;rsquo;event. Una modifica ha fornito ai relay una transizione esplicita dello stato dei gruppi; l&amp;rsquo;altra ha consentito agli autori di impedire a terze parti di ripubblicare sui relay event firmati altrimenti validi.&lt;/p>
&lt;p>Il 16 luglio, un &lt;a href="https://github.com/nostr-protocol/nips/commit/506b38916ab67a37b2d98b46b62cf0c0c5fde5a4">commit della specifica Cashu&lt;/a> ha introdotto sia i wallet NIP-60 sia i nutzap NIP-61. NIP-60 collocava i metadati del wallet in kind &lt;code>37375&lt;/code>, le prove non spese in event cifrati kind &lt;code>7375&lt;/code> e la cronologia facoltativa delle transazioni in kind &lt;code>7376&lt;/code>. NIP-61 abbinava le preferenze del destinatario per mint e relay in kind &lt;code>10019&lt;/code> ai nutzap kind &lt;code>7337&lt;/code> bloccati con P2PK. Lo stato del wallet e i bearer token potevano ora muoversi attraverso i relay, mentre il riscatto dipendeva ancora dalle prove del mint Cashu e da un&amp;rsquo;attenta prevenzione del doppio utilizzo delle stesse prove.&lt;/p>
&lt;p>Due modifiche di fine luglio hanno reso più rigoroso lo stato deterministico. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/9c54549f1842245b842d8a66f3bade744da24189">commit NIP-01 9c54549&lt;/a> ha imposto gli ID degli event come criterio di spareggio dopo timestamp &lt;code>created_at&lt;/code> uguali, così i client potevano ordinare allo stesso modo insiemi di risultati identici. L&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/commit/722ac7a58695a365be0dbb6eccb33ccd7890a8c7">integrazione NIP-09 sulla cancellazione&lt;/a> ha chiarito che le richieste kind &lt;code>5&lt;/code> possono riferirsi a ID di event o coordinate indirizzabili e dovrebbero includere tag &lt;code>k&lt;/code> che identificano i kind che i relay devono cancellare. Entrambe le modifiche hanno ridotto i casi in cui due implementazioni corrette potevano altrimenti divergere.&lt;/p>
&lt;h3 id="luglio-2025">Luglio 2025&lt;/h3>
&lt;p>Il 16 luglio, la scoperta di ecash ha ottenuto una propria directory sociale. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/1afb6da049e57dd628ef46a3b0f90300653a66ee">commit NIP-87 1afb6da&lt;/a> ha definito record di mint Cashu kind &lt;code>38172&lt;/code>, record Fedimint kind &lt;code>38173&lt;/code> e raccomandazioni kind &lt;code>38000&lt;/code> che possono indicare tali record con relay hint. I wallet potevano interrogare le raccomandazioni di autori fidati prima di connettersi a un mint, mentre la specifica avvertiva che una scoperta globale non filtrata poteva indirizzare gli utenti verso operatori malevoli.&lt;/p>
&lt;p>Una settimana dopo, una bozza ha specificato record portabili di event Nostr per i messaggi vocali. Il primo &lt;a href="https://github.com/nostr-protocol/nips/commit/e50f37a527ace39cc3057827d52295c6b6de1112">commit NIP-A0&lt;/a> ha assegnato kind &lt;code>1222&lt;/code> all&amp;rsquo;event radice di un messaggio vocale e kind &lt;code>1244&lt;/code> a una risposta, con un URL audio e metadati multimediali. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/4984b057c20397eae919ee5e463bc8a5d3fb2dc0">seguito sul formato&lt;/a> del 27 luglio ha raccomandato Opus in un contenitore Ogg e standardizzato una forma d&amp;rsquo;onda compressa. I client potevano scambiarsi audio brevi senza concordare un unico registratore, host o rappresentazione della forma d&amp;rsquo;onda.&lt;/p>
&lt;p>La messaggistica privata e le connessioni ai wallet hanno poi aggiunto stato di protocollo per il tracciamento della lettura, la selezione della cifratura e l&amp;rsquo;avanzamento dei pagamenti. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/3d76da368e157934e056d95b3b3d8d6eaa105b09">commit NIP-17 3d76da3&lt;/a> ha definito un record kind &lt;code>30016&lt;/code> sostituibile, i cui tag &lt;code>seen&lt;/code> ordinati consentivano a un client di distinguere i messaggi letti dalle lacune dovute a messaggi che poteva non aver ricevuto. Il 31 luglio, la &lt;a href="https://github.com/nostr-protocol/nips/commit/f30a43bd37e08516923b96dd0d860122c9ffe04e">negoziazione della cifratura NIP-47&lt;/a> ha permesso ai servizi wallet di dichiarare NIP-44 v2 o il protocollo NIP-04 legacy, mentre il &lt;a href="https://github.com/nostr-protocol/nips/commit/0595d438aaa163dd33ed00748026698a411a0861">commit sullo stato delle transazioni&lt;/a> ha aggiunto gli stati &lt;code>pending&lt;/code>, &lt;code>settled&lt;/code>, &lt;code>accepted&lt;/code>, &lt;code>expired&lt;/code> e &lt;code>failed&lt;/code>. La consegna, la cifratura e l&amp;rsquo;avanzamento dei pagamenti sono diventati dati di protocollo espliciti invece di inferenze locali.&lt;/p>
&lt;h3 id="luglio-2026">Luglio 2026&lt;/h3>
&lt;p>Questo luglio è iniziato collegando normali indirizzi web alle query dei relay. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/2f4b09335c54a993d483bc220195e3f4a33df1ec">commit 2f4b093 sulla scoperta indirizzabile&lt;/a> definisce una ricerca &lt;code>/.well-known/nostr.json?ad=&amp;lt;path&amp;gt;&lt;/code> la cui risposta contiene un filtro Nostr e un elenco di relay. Un browser normale può ancora aprire l&amp;rsquo;URL originale come HTML, mentre un client Nostr può interrogare l&amp;rsquo;endpoint &lt;code>/.well-known/nostr.json?ad=&amp;lt;path&amp;gt;&lt;/code> corrispondente per ottenere un filtro e un elenco di relay che risolvono l&amp;rsquo;indirizzo in un gruppo, nsite, feed, event o altro oggetto nativo. Il modello riprende il problema del 2021 relativo alla conversione da dominio a chiave a un livello più ampio: un URL leggibile può ora indicare sia un&amp;rsquo;identità sia una query.&lt;/p>
&lt;p>NIP-29 è poi cresciuto da gruppi piatti basati su relay a spazi strutturati. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/223ddb3b0c282f2a133adb9f4a9c098a31b36937">commit sui sottogruppi&lt;/a> del 16 luglio ha aggiunto relazioni tra genitore e figli ordinati; i commit adiacenti hanno aggiunto suffissi ai codici d&amp;rsquo;invito, banner, istantanee ordinate dei pin e pin di event indirizzabili. Il 22 luglio, il &lt;a href="https://github.com/nostr-protocol/nips/commit/db5fe3de8c5d1443b634c9bbf66ecb004f337057">chiarimento su migrazione e fork&lt;/a> ha definito quando i metadati spostano legittimamente un gruppo verso un altro relay e quando un branch ancora attivo costituisce un fork indipendente. L&amp;rsquo;identificatore del gruppo è rimasto semplice, mentre gerarchia, presentazione e modifiche dei relay sono diventati stato esplicito.&lt;/p>
&lt;p>Due modifiche minori hanno chiarito i confini delle implementazioni. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/f0af20484c5e0d12e2d1936f87c5a6681a08daff">commit NIP-46 f0af204&lt;/a> richiede a un firmatario remoto di restituire un errore per metodi sconosciuti o non supportati invece di lasciare che un client raggiunga silenziosamente il timeout. Il &lt;a href="https://github.com/nostr-protocol/nips/commit/6d2979b3f503a8539c983efbcdcf901bbcf9ed23">commit NIP-34 6d2979b&lt;/a> rimuove dalla descrizione dell&amp;rsquo;event di pull request le indicazioni di hosting specifiche per GRASP. Una modifica offre ai chiamanti una risposta conclusiva; l&amp;rsquo;altra impedisce a un event git portabile di ereditare silenziosamente un protocollo server.&lt;/p>
&lt;hr>
&lt;p>Invia un DM NIP-17 per condividere un progetto o una notizia tramite il &lt;a href="https://github.com/andotherstuff/nostr-compass">progetto Nostr Compass&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #32</title><link>https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale su Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#indiesats-drops-its-publisher-role-and-relaunches-as-open-nostr-music-infrastructure">IndieSats&lt;/a> abbandona la custodia delle chiavi, la sua whitelist e la sua quota obbligatoria sui ricavi, rilanciandosi come relay aperto, player e livello di scoperta in cui gli artisti pubblicano con le proprie chiavi. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#nostrord-v230-ships-group-moderation-mute-lists-and-onion-relays">Nostrord v2.3.0&lt;/a> introduce la moderazione dei gruppi, le mute list e i relay onion nella stessa settimana in cui vengono integrati cinque &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#protocol-work-and-nip-updates">PR della specifica NIP-29&lt;/a>. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#zapstore-110-makes-the-device-key-portable-and-adds-background-auto-updates">Zapstore 1.1.0&lt;/a> introduce una chiave del dispositivo portatile e cifrata, con backup tramite Amber, e aggiornamenti automatici in background su base opt-in. Il &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#the-favorite-follow-sets-list-kind-merges-and-immediately-moves-house">kind di lista per i set di follow preferiti&lt;/a> viene integrato e nel giro di pochi giorni viene aperto un PR per rinumerarlo. E i &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#the-iris-projects-ship-a-pubsub-library-a-browser-fips-runtime-and-a-social-graph-20-in-one-week">progetti Iris&lt;/a> rilasciano nostr-pubsub, il runtime per browser fips-ts e nostr-social-graph 2.0.0 nella stessa settimana.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale su Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#indiesats-drops-its-publisher-role-and-relaunches-as-open-nostr-music-infrastructure">IndieSats&lt;/a> abbandona la custodia delle chiavi, la sua whitelist e la sua quota obbligatoria sui ricavi, rilanciandosi come relay aperto, player e livello di scoperta in cui gli artisti pubblicano con le proprie chiavi. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#nostrord-v230-ships-group-moderation-mute-lists-and-onion-relays">Nostrord v2.3.0&lt;/a> introduce la moderazione dei gruppi, le mute list e i relay onion nella stessa settimana in cui vengono integrati cinque &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#protocol-work-and-nip-updates">PR della specifica NIP-29&lt;/a>. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#zapstore-110-makes-the-device-key-portable-and-adds-background-auto-updates">Zapstore 1.1.0&lt;/a> introduce una chiave del dispositivo portatile e cifrata, con backup tramite Amber, e aggiornamenti automatici in background su base opt-in. Il &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#the-favorite-follow-sets-list-kind-merges-and-immediately-moves-house">kind di lista per i set di follow preferiti&lt;/a> viene integrato e nel giro di pochi giorni viene aperto un PR per rinumerarlo. E i &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#the-iris-projects-ship-a-pubsub-library-a-browser-fips-runtime-and-a-social-graph-20-in-one-week">progetti Iris&lt;/a> rilasciano nostr-pubsub, il runtime per browser fips-ts e nostr-social-graph 2.0.0 nella stessa settimana.&lt;/p>
&lt;p>I rilasci taggati portano &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#amber-v630-groups-bunker-signing-approvals-and-adds-expert-list-support">Amber v6.3.0&lt;/a> con approvazioni raggruppate per la firma bunker, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#armada-v0370-opens-buzz-workspaces-from-a-second-client">Armada v0.37.0&lt;/a> con un secondo client per gli spazi di lavoro Buzz, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#divine-mobile-1017-hardens-relay-security-and-dm-delivery">Divine Mobile 1.0.17&lt;/a> con consegna NIP-17 persistente e convalida TLS rigorosa, e &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#nak-v0202-adds-nip-34-pull-request-workflows">nak v0.20.2&lt;/a> con comandi per i pull request NIP-34.&lt;/p>
&lt;p>Sul fronte delle modifiche non ancora rilasciate, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#snort-rewrites-query-synchronization-around-eose-proven-coverage">Snort&lt;/a> registra la copertura della cache comprovata da EOSE, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#shopstr-binds-payment-validation-to-signed-receipts-and-server-side-prices">Shopstr&lt;/a> chiude due falle nell&amp;rsquo;integrità dei pagamenti, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#mostr-bridges-activitypub-private-chats-and-nostr-dms">Mostr&lt;/a> collega le chat private ActivityPub ai DM Nostr, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#nostream-merges-eight-prs-without-cutting-a-release">nostream&lt;/a> integra lo stack di controllo degli accessi trattato dal Deep Dive di questa settimana, e &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#amethyst-lands-v1130-pre-release-qa-on-napplet-isolation-and-concord-authority">Amethyst&lt;/a> raggiunge 88 PR integrati con sondaggi NIP-88 completi su Desktop.&lt;/p>
&lt;p>Il repository dei NIP integra cinque PR questa settimana, tra cui il &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#protocol-work-and-nip-updates">cluster NIP-29&lt;/a> e i &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#the-favorite-follow-sets-list-kind-merges-and-immediately-moves-house">set di follow preferiti kind:10011&lt;/a>, e apre dibattiti sulla &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#protocol-work-and-nip-updates">semplificazione di NIP-47&lt;/a> e sulle &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#protocol-work-and-nip-updates">asserzioni di fiducia sui relay&lt;/a>. Il Deep Dive copre &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#nip-deep-dive-nip-42-and-nip-43">NIP-42 e NIP-43, la coppia per il controllo degli accessi ai relay&lt;/a>.&lt;/p>
&lt;hr>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="indiesats-abbandona-il-suo-ruolo-di-editore-e-si-rilancia-come-infrastruttura-musicale-nostr-aperta">IndieSats abbandona il suo ruolo di editore e si rilancia come infrastruttura musicale Nostr aperta&lt;/h3>
&lt;p>&lt;a href="https://zapstore.dev">IndieSats&lt;/a> è una piattaforma musicale basata su Nostr che fino a questa settimana agiva da editore: custodiva le chiavi degli artisti, gestiva una whitelist e tratteneva una quota obbligatoria del 2% sui ricavi. In un &lt;a href="https://njump.me/nevent1qqsr4awwnfndnnz77zanjxarw6nd0uld0ckayxp2navz0u9tzzwfweqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtczyquwq70hxz22lzytw65rnnjewg0lj8a74khxa8h9j47q38pdnqy3kqcyqqqqqqgz8083u">annuncio di svolta pubblicato il 20 luglio&lt;/a>, il progetto ha abbandonato tutti e tre questi ruoli in una volta. La piattaforma rilanciata si compone di tre elementi di infrastruttura aperta: un relay aperto, un player e un livello di scoperta. Gli artisti ora pubblicano musica con i propri profili Nostr. La quota del 2% della piattaforma su ogni brano è facoltativa, ma viene selezionata per impostazione predefinita quando un artista pubblica; gli artisti possono deselezionarla per trattenere l&amp;rsquo;intero pagamento. La piattaforma rispetta inoltre le richieste di eliminazione kind:5 di &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a>, così gli artisti possono rimuovere le proprie opere. Un &lt;a href="https://zapstore.dev/apps/com.indiesats.app">aggiornamento v1.1.5 pubblicato il 21 luglio&lt;/a> ha adeguato la pubblicazione dei brani al formato degli eventi previsto da Amethyst e dagli altri client musicali Nostr e ha reso esplicita la consegna ai relay. In uno spazio in cui si parla spesso di protocolli che sostituiscono le piattaforme, questo è un caso concreto di una piattaforma che si scompone volontariamente in elementi di protocollo.&lt;/p>
&lt;h3 id="nostrord-v230-porta-la-moderazione-dei-gruppi-le-mute-list-e-i-relay-onion">Nostrord v2.3.0 porta la moderazione dei gruppi, le mute list e i relay onion&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">Nostrord&lt;/a>, il client di chat di gruppo per Android, iOS, web e desktop, ha rilasciato la &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.3.0">v2.3.0&lt;/a> con azioni di moderazione dei gruppi collegate a tutte le interfacce (&lt;a href="https://github.com/nostrord/nostrord/pull/192">PR #192&lt;/a>), inviti ai gruppi subordinati al consenso con rilevamento cross-relay (&lt;a href="https://github.com/nostrord/nostrord/pull/195">PR #195&lt;/a>), mute list &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> multipiattaforma (&lt;a href="https://github.com/nostrord/nostrord/pull/188">PR #188&lt;/a>) e supporto per i relay Tor .onion. Il rilascio arriva nella stessa settimana in cui la specifica &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> sottostante ha integrato cinque PR che coprono sottogruppi, fissaggio dei messaggi, banner e codici di invito (i dettagli sono nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#protocol-work-and-nip-updates">sezione sul protocollo&lt;/a> di questa settimana), quindi la chat di gruppo su Nostr ora dispone sia di una specifica più approfondita sia di un client che ne mette in pratica gran parte, accorciando il ciclo di feedback per chiunque altro sviluppi sui gruppi ospitati dai relay.&lt;/p>
&lt;h3 id="zapstore-110-rende-la-chiave-del-dispositivo-portatile-e-aggiunge-gli-aggiornamenti-automatici-in-background">Zapstore 1.1.0 rende la chiave del dispositivo portatile e aggiunge gli aggiornamenti automatici in background&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> è un app store nativo di Nostr in cui i rilasci sono firmati dalle chiavi degli sviluppatori e nessun operatore centrale ne garantisce l&amp;rsquo;affidabilità. La &lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.1.0">versione 1.1.0&lt;/a>, il primo rilascio trattato qui dall&amp;rsquo;inizio di marzo, colma le due lacune principali rispetto agli app store convenzionali. Per gli aggiornamenti, i download in background su base opt-in ora avvengono tramite Wi-Fi e si installano silenziosamente o in modalità staged, così le app restano aggiornate senza passaggi manuali dallo store. La continuità dell&amp;rsquo;identità deriva da una chiave del dispositivo portatile e cifrata, di cui gli utenti possono eseguire il backup tramite &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> usando &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, l&amp;rsquo;interfaccia per firmatari Android, così la migrazione a un altro telefono conserva l&amp;rsquo;identità del dispositivo. La versione 1.1.0 sposta inoltre il catalogo delle app sui relay come eventi kind:10067 firmati dal dispositivo, aggiunge dal menu aggiuntivo le segnalazioni verificate &lt;a href="https://nostrcompass.org/it/topics/nip-56/">NIP-56&lt;/a>, affinché gli utenti possano segnalare app problematiche in un formato utilizzabile da altri client, e verifica la prova C1 allegata a un rilascio prima di procedere con l&amp;rsquo;installazione, rafforzando il legame tra ciò che uno sviluppatore ha firmato e ciò che il dispositivo esegue.&lt;/p>
&lt;h3 id="il-kind-di-lista-per-i-set-di-follow-preferiti-viene-integrato-e-cambia-subito-casa">Il kind di lista per i set di follow preferiti viene integrato e cambia subito casa&lt;/h3>
&lt;p>Una storia di coordinamento delle specifiche si è svolta nell&amp;rsquo;arco di una sola settimana. Il &lt;a href="https://github.com/nostr-protocol/nips/pull/2413">PR #2413&lt;/a> è stato integrato il 15 luglio, standardizzando sotto &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> (liste) un kind di lista sostituibile per i set di follow preferiti: un kind dedicato ai set curati di account seguiti da un utente. Nel giro di pochi giorni è emerso che il kind:10011 assegnato era già in uso altrove, quindi un &lt;a href="https://github.com/nostr-protocol/nips/pull/2417">PR #2417&lt;/a> successivo è ora aperto per rinumerare la lista a kind:10021. Nulla è ancora stato rilasciato sulla base del kind integrato, quindi questo è il momento meno costoso per rinumerarlo; quando i client inizieranno a pubblicare eventi kind:10011, risolvere la collisione diventerà oneroso. Gli sviluppatori che realizzano funzionalità basate sulle liste dovrebbero seguire il PR di rinumerazione, non il testo integrato, finché la questione non sarà risolta.&lt;/p>
&lt;h3 id="i-progetti-iris-rilasciano-una-libreria-pubsub-un-runtime-fips-per-browser-e-un-social-graph-20-in-una-settimana">I progetti Iris rilasciano una libreria pubsub, un runtime FIPS per browser e un social graph 2.0 in una settimana&lt;/h3>
&lt;p>Tre rilasci dall&amp;rsquo;orbita di Iris sono arrivati insieme, e si incastrano a vicenda. &lt;a href="https://github.com/mmalmi/nostr-pubsub">nostr-pubsub&lt;/a> è una libreria publish/subscribe neutra rispetto al trasporto per eventi Nostr; i suoi &lt;a href="https://github.com/mmalmi/nostr-pubsub/releases">primi rilasci tracciati, dalla v0.1.3 alla v0.5.2&lt;/a>, offrono un carrier relay per browser costruito sul SimplePool di nostr-tools, la verifica degli eventi al confine del trasporto affinché le firme invalide non raggiungano mai i sottoscrittori, e query storiche limitate. &lt;a href="https://github.com/mmalmi/fips-ts">fips-ts&lt;/a> porta &lt;a href="https://nostrcompass.org/it/topics/fips/">FIPS&lt;/a>, il trasporto peer Noise-over-secp256k1 precedentemente disponibile come stack Rust, nel browser come runtime TypeScript: i rilasci &lt;a href="https://github.com/mmalmi/fips-ts/releases">dallo 0.0.24 allo 0.0.30&lt;/a> hanno aggiunto un carrier per datachannel WebRTC, il signaling basato su Nostr per la scoperta dei peer, una cache dei peer recenti e un adattatore IndexedDB per l&amp;rsquo;archiviazione nel browser, e il runtime è wire-compatible con l&amp;rsquo;implementazione Rust di riferimento. Il terzo pezzo, &lt;a href="https://github.com/mmalmi/nostr-social-graph/releases/tag/v2.0.0">nostr-social-graph v2.0.0&lt;/a>, è una major version della libreria social-graph: operazioni firmate sui roster per i grafi di identità Nostr, flussi di approvazione dei dispositivi avviati da un URI canonico a tre campi, e sfaccettature di identità del trasporto FIPS con vettori di test condivisi tra Rust e TypeScript. L&amp;rsquo;inquadramento connettivo è lo &lt;a href="https://stack.iris.to/">Iris Stack&lt;/a>, il laboratorio di integrazione del progetto che lega queste librerie insieme a Blossom, Hashtree e la messaggistica cifrata. Nel complesso, una web app può ora scoprire peer tramite Nostr, aprire un canale FIPS cifrato verso di essi e mantenere un grafo sociale firmato, tutto in TypeScript.&lt;/p>
&lt;hr>
&lt;h2 id="rilasci-taggati">Rilasci taggati&lt;/h2>
&lt;h3 id="amber-v630-raggruppa-le-approvazioni-di-firma-bunker-e-aggiunge-il-supporto-per-le-expert-list">Amber v6.3.0 raggruppa le approvazioni di firma bunker e aggiunge il supporto per le Expert List&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> è un firmatario remoto &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per Android. La &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.3.0">v6.3.0&lt;/a> aggiunge l&amp;rsquo;approvazione raggruppata di richieste multiple, così gli utenti possono esaminare e approvare in una volta un gruppo di firme bunker. Il rilascio aggiunge anche il supporto per gli eventi Expert List (kind 12022) ed Expert Pack (kind 32022), una modalità privacy che nasconde i contenuti sensibili sullo schermo e una modifica che recupera la lista dei relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> di un account prima dei metadati del profilo, così i flussi di firma partono dal set di relay effettivo dell&amp;rsquo;utente. Questo segue la linea v6.2.x trattata nel numero del 2026-07-08.&lt;/p>
&lt;h3 id="seguito-di-nostrord-v220">Seguito di Nostrord v2.2.0&lt;/h3>
&lt;p>Con la &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-22-newsletter/#nostrord-v230-ships-group-moderation-mute-lists-and-onion-relays">v2.3.0&lt;/a> in testa alla sezione News di questa settimana, lo spazio dei rilasci taggati annota solo ciò che la storia principale non copre: la v2.3.0 segue i controlli per i DM della v2.2.0 trattati nel #31, rendendo questo il secondo rilascio settimanale consecutivo del client.&lt;/p>
&lt;h3 id="armada-v0370-apre-gli-spazi-di-lavoro-buzz-da-un-secondo-client">Armada v0.37.0 apre gli spazi di lavoro Buzz da un secondo client&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/armada">Armada&lt;/a>, un client Nostr in stile Discord, ha rilasciato la &lt;a href="https://gitlab.com/soapbox-pub/armada/-/commit/7a0d0ade51fb8a7bafa4513d2881d275bb2c7dde">v0.37.0&lt;/a> con il supporto per i relay Buzz come modalità avanzata per gli spazi di lavoro &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, rilevata tramite i metadati &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> del relay. Il client visualizza i post e i commenti dei forum Buzz come kind 45001 e 45003, incorpora modifiche ed eliminazioni nelle timeline dei flussi e aggiunge superfici per presenza, workflow, attività, huddle e canvas condivisi. Lo spazio di lavoro Projects legge direttamente dal relay gli annunci dei repository, le patch, i pull request, le issue e gli eventi di stato &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (&lt;a href="https://gitlab.com/soapbox-pub/armada/-/commit/7d5603a3e21d564301d667113d28de4407d6f642">commit dell&amp;rsquo;implementazione&lt;/a>), offrendo agli spazi di lavoro Buzz un secondo client sia per le conversazioni sia per il lavoro sui repository.&lt;/p>
&lt;h3 id="wisp-v120-aggiunge-un-commutatore-multi-account-e-thread-di-risposte-comprimibili">Wisp v1.2.0 aggiunge un commutatore multi-account e thread di risposte comprimibili&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> è un client Nostr orientato alla privacy con supporto wallet integrato. La &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.2.0">v1.2.0&lt;/a> aggiunge un commutatore multi-account per spostarsi tra i profili senza rifare il login, thread di risposte comprimibili per le conversazioni lunghe, la rimozione dei parametri di tracciamento dai link delle note prima che vengano aperti, e una vista dello storico delle transazioni del wallet. Il rilascio segue l&amp;rsquo;aggiornamento di Wisp trattato nel numero del 2026-07-08.&lt;/p>
&lt;h3 id="divine-mobile-1017-rafforza-la-sicurezza-dei-relay-e-la-consegna-dei-dm">Divine Mobile 1.0.17 rafforza la sicurezza dei relay e la consegna dei DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">Divine Mobile&lt;/a>, un client Nostr per video brevi, ha rilasciato la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.17">1.0.17&lt;/a> con un editor stop-motion persistente e percorsi Nostr più rigorosi. I messaggi diretti ora attendono le risposte &lt;code>OK&lt;/code> dei relay, vengono ritentati tramite una coda persistente e instradati attraverso le liste kind 10050 dei relay di posta in arrivo dei destinatari (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/6046">PR #6046&lt;/a>); l&amp;rsquo;abbinamento NIP-46 conserva le richieste &lt;code>auth_url&lt;/code> come passaggi recuperabili del firmatario (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/6151">PR #6151&lt;/a>). Il &lt;a href="https://github.com/divinevideo/divine-mobile/pull/6278">PR #6278&lt;/a> elimina l&amp;rsquo;accettazione permissiva dei certificati dalle WebSocket dei relay in produzione e dalle richieste HTTP usate per upload NIP-96, LNURL e zap, ripristinando la convalida TLS della piattaforma al di fuori delle connessioni loopback di debug. Gli upload interrotti possono inoltre riprendere dall&amp;rsquo;ultimo offset confermato dal server, così una pubblicazione spostata in background non ricomincia più da zero.&lt;/p>
&lt;h3 id="cliprelay-v012-nuovo-progetto-sincronizza-gli-appunti-tra-dispositivi-attraverso-i-relay-nostr">ClipRelay v0.1.2 (nuovo progetto) sincronizza gli appunti tra dispositivi attraverso i relay Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/tajava2006/cliprelay">ClipRelay&lt;/a> è un&amp;rsquo;app multipiattaforma appena lanciata (Android, macOS, Windows, Linux) che sincronizza gli appunti tra i propri dispositivi: copia su una macchina, incolla su un&amp;rsquo;altra. Tutto il traffico passa attraverso i relay Nostr come eventi cifrati &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> indirizzati a se stessi, quindi non c&amp;rsquo;è nessun server da gestire e nessun account da creare; la chiave privata resta fuori dall&amp;rsquo;app. La &lt;a href="https://github.com/tajava2006/cliprelay/releases">v0.1.2&lt;/a> corregge un sottile fallimento di sincronizzazione per cui una macchina che si risvegliava dalla sospensione continuava a pubblicare ma smetteva silenziosamente di ricevere, e rafforza gli indicatori di stato dei relay che in precedenza segnalavano come sane sottoscrizioni morte. Questa è la prima apparizione di ClipRelay nella newsletter.&lt;/p>
&lt;h3 id="sonar-v01-alpha11-prosegue-la-linea-alpha">Sonar v0.1-alpha.11 prosegue la linea alpha&lt;/h3>
&lt;p>&lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar">Sonar&lt;/a>, la storia principale della scorsa settimana, ha taggato la &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar/releases/tag/v0.1-alpha.11">v0.1-alpha.11&lt;/a> con lavoro sul motore di collegamento mesh in Rust, correzioni a BLE e alla mesh, e diagnostica dei relay; un seguito incrementale alla linea alpha trattata nel #31.&lt;/p>
&lt;h3 id="nak-v0202-aggiunge-i-flussi-di-lavoro-per-i-pull-request-nip-34">nak v0.20.2 aggiunge i flussi di lavoro per i pull request NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, lo strumento da riga di comando per Nostr, ha rilasciato la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.20.2">v0.20.2&lt;/a> con comandi per creare, recuperare e integrare pull request &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>, oltre che per recuperare singole patch; consente inoltre i push senza riscrivere l&amp;rsquo;annuncio del repository. L&amp;rsquo;&lt;a href="https://github.com/fiatjaf/nak/compare/v0.20.1...v0.20.2">intervallo di 11 commit del rilascio&lt;/a> aggiunge anche la gestione dei gruppi genitore per &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, interroga più relay outbox, rende configurabili i timeout di connessione ai relay e corregge la selezione del bunker quando è presente soltanto il valore predefinito di &lt;code>--sec&lt;/code>.&lt;/p>
&lt;h3 id="i-lanci-minori-della-settimana">I lanci minori della settimana&lt;/h3>
&lt;p>Quattro rilasci minori meritano una riga ciascuno: &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.6.0-release">noscall v0.6.0&lt;/a>, l&amp;rsquo;app per chiamate Nostr, ha migrato le notifiche push a UnifiedPush, mantenendo il signaling delle chiamate fuori dall&amp;rsquo;infrastruttura push di Google; &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v4.1.3">nostr-vpn v4.1.3&lt;/a>, una VPN mesh che usa Nostr per il signaling, ha uniformato la policy DNS di uscita tra le piattaforme e ora ripristina il routing e lo stato DNS originali al termine delle sessioni WireGuard o con uscita privata; &lt;a href="https://github.com/ChadFarrow/stablekraft-app/releases/tag/v1.3.0">StableKraft v1.3.0&lt;/a>, l&amp;rsquo;aggregatore di musica e podcast Nostr più Lightning trattato ad aprile, ha aggiunto i controlli nativi Android dalla schermata di blocco e dalle cuffie, oltre a un wake lock limitato alla riproduzione affinché l&amp;rsquo;audio continui durante Doze; e la nuova app Zapstore Hakari esegue il backup di un registro del peso tramite eventi Nostr cifrati.&lt;/p>
&lt;h3 id="amethyst-completa-il-qa-pre-rilascio-della-v1130-su-isolamento-dei-napplet-e-autorità-concord">Amethyst completa il QA pre-rilascio della v1.13.0 su isolamento dei napplet e autorità Concord&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha integrato 88 PR questa settimana in vista del rilascio della v1.13.0. Il &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3650">PR #3650&lt;/a> è un passaggio di QA pre-rilascio che copre l&amp;rsquo;isolamento degli account dei napplet, correzioni all&amp;rsquo;autorità Concord e circa 30 altre correzioni. Il lavoro svolto verso la fine della finestra aggiunge su Desktop la visualizzazione, la creazione e il voto dei sondaggi &lt;a href="https://github.com/nostr-protocol/nips/blob/master/88.md">NIP-88&lt;/a>, il conteggio tramite i relay dichiarati e la ricerca dei kind 1068 (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3664">PR #3664&lt;/a>); la ricerca NIP-50 ora ordina i risultati per rilevanza BM25, mentre i watcher di tag di grandi dimensioni usano un&amp;rsquo;unione limitata (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3663">PR #3663&lt;/a>). Un intervento separato sul relay store seleziona gli indici delle query in base al costo misurato, aggiunge indici tag-autore-kind e serializza ogni evento live una sola volta per ciascun fanout (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3660">PR #3660&lt;/a>), con riduzioni dichiarate nei benchmark da 149 a 4 millisecondi per un tipo di query e da 14,2 a 0,66 millisecondi per una comune query sulle stanze DM.&lt;/p>
&lt;hr>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="snort-riscrive-la-sincronizzazione-delle-query-attorno-alla-copertura-comprovata-da-eose">Snort riscrive la sincronizzazione delle query attorno alla copertura comprovata da EOSE&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, un client Nostr web, ha riscritto il percorso delle query e della sincronizzazione della cache nel &lt;a href="https://github.com/v0l/snort/commit/8a627700d8a5af9527cb68655d844dd14a3ac79d">commit 8a62770&lt;/a>. Il client ora registra quali finestre di query hanno raggiunto EOSE, usa questi watermark per saltare gli intervalli della cache già coperti, centralizza la distribuzione degli eventi dietro un unico listener del pool di relay e invia i filtri di ricerca soltanto ai relay i cui documenti NIP-11 dichiarano il supporto per &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>. Le correzioni successive serializzano gli aggiornamenti concorrenti dei watermark e correggono i limiti inclusivi delle timeline, mentre il &lt;a href="https://github.com/v0l/snort/commit/9d1721b8b5696a6f96f462170c469c232cabe672">commit 9d1721b&lt;/a> ripristina una sottoscrizione live al feed dei follow suddiviso in blocchi, così gli eventi che arrivano dopo il caricamento della pagina non restano bloccati fuori dalle finestre in cache.&lt;/p>
&lt;h3 id="shopstr-lega-la-convalida-dei-pagamenti-alle-ricevute-firmate-e-ai-prezzi-lato-server">Shopstr lega la convalida dei pagamenti alle ricevute firmate e ai prezzi lato server&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, un client per marketplace Nostr, ha chiuso due falle nell&amp;rsquo;integrità dei pagamenti. Il &lt;a href="https://github.com/shopstr-eng/shopstr/pull/552">PR #552&lt;/a> fa sì che Zapsnag verifichi la firma, il firmatario, la richiesta di zap incorporata, i tag del destinatario e del prodotto, l&amp;rsquo;importo BOLT11 e il preimage facoltativo di ogni ricevuta kind 9735 rispetto all&amp;rsquo;hash di pagamento della fattura prima di considerarla un acquisto. Il &lt;a href="https://github.com/shopstr-eng/shopstr/pull/449">PR #449&lt;/a> sposta la creazione dei preventivi Cashu dietro una route API di Shopstr che risolve l&amp;rsquo;inserzione e ne ricalcola il prezzo lato server, così un importo modificato nel browser non può determinare la fattura del mint.&lt;/p>
&lt;h3 id="mostr-collega-le-chat-private-activitypub-ai-dm-nostr">Mostr collega le chat private ActivityPub ai DM Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/mostr">Mostr&lt;/a>, un bridge da ActivityPub a Nostr, ora trasporta in entrambe le direzioni gli oggetti ChatMessage individuali di Pleroma e i DM Nostr cifrati (&lt;a href="https://gitlab.com/soapbox-pub/mostr/-/commit/36ee547035f9287029f71656c472fe029a7ab31b">commit 36ee547&lt;/a>). Le chat private ActivityPub diventano eventi kind 4 indirizzati al destinatario Nostr, mentre i messaggi kind 4 inviati agli utenti Fediverse collegati vengono decifrati e federati come oggetti ChatMessage. Il bridge limita questi eventi ai relay DM configurati, protetti da &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, e si autentica con una chiave del relay separata. Questo percorso di interoperabilità usa la cifratura legacy &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>. Il gift wrapping NIP-17 resta escluso da questa implementazione.&lt;/p>
&lt;h3 id="nostream-integra-otto-pr-senza-taggare-un-rilascio">nostream integra otto PR senza taggare un rilascio&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>, l&amp;rsquo;implementazione di relay in TypeScript, ha integrato otto PR questa settimana senza taggare un rilascio. La coppia principale è &lt;a href="https://github.com/Cameri/nostream/pull/702">PR #702&lt;/a> e &lt;a href="https://github.com/Cameri/nostream/pull/676">PR #676&lt;/a>, che insieme forniscono agli operatori di relay uno stack funzionante di controllo degli accessi basato su autenticazione e appartenenza; il NIP Deep Dive di questa settimana illustra esattamente quell&amp;rsquo;handshake. Il &lt;a href="https://github.com/Cameri/nostream/pull/694">PR #694&lt;/a> corregge i filtri generici per tag &lt;code>#e&lt;/code>, &lt;code>#p&lt;/code>, &lt;code>#g&lt;/code> e simili, che potevano restituire una copia di un evento per ogni riga di tag corrispondente, riducendo il traffico di protocollo duplicato all&amp;rsquo;interno di una sottoscrizione.&lt;/p>
&lt;h3 id="fips-v041-rafforza-il-livello-di-trasporto-di-iris">FIPS v0.4.1 rafforza il livello di trasporto di Iris&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">jmcorgan/fips&lt;/a> ha rilasciato la &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.4.1">v0.4.1&lt;/a>, un rilascio di manutenzione che limita lo stato antipoison, corregge la convergenza e la gestione dell&amp;rsquo;MTU e riduce l&amp;rsquo;uso della CPU. Il runtime TypeScript per browser &lt;a href="https://github.com/mmalmi/fips-ts">fips-ts&lt;/a> del gruppo di progetti Iris è wire-compatible con questo trasporto Rust, quindi le correzioni apportate qui si propagano direttamente all&amp;rsquo;interoperabilità nel browser.&lt;/p>
&lt;hr>
&lt;h2 id="lavoro-sul-protocollo-e-aggiornamenti-dei-nip">Lavoro sul protocollo e aggiornamenti dei NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository dei NIP&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Integrati:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (Relay-based Groups): Sottogruppi&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2319">PR #2319&lt;/a>, integrato il 2026-07-16): NIP-29 definisce gruppi ospitati su relay dove l&amp;rsquo;appartenenza, i ruoli e la cronologia della chat vivono su un singolo relay come eventi indirizzabili della serie &lt;code>kind:39000&lt;/code>, con le azioni di moderazione trasportate da eventi amministrativi della serie &lt;code>kind:9000&lt;/code>. Questo PR consente a un gruppo di dichiararsi sottogruppo aggiungendo un tag &lt;code>parent&lt;/code> ai propri metadati, che punta all&amp;rsquo;identificatore &lt;code>d&lt;/code> di un altro gruppo sullo stesso relay. I sottogruppi sono gruppi ordinari sotto ogni altro aspetto: l&amp;rsquo;appartenenza non si propaga a cascata (unirsi a un genitore non concede l&amp;rsquo;appartenenza a nessun figlio), i ruoli di amministrazione non si ereditano (la lista degli admin &lt;code>kind:39001&lt;/code> di ciascun sottogruppo è autorevole per il proprio ambito), e ogni sottogruppo mantiene i propri eventi indipendenti sui membri &lt;code>kind:9000&lt;/code>/&lt;code>kind:9001&lt;/code>. I relay che supportano la gerarchia la pubblicizzano nel loro documento informativo NIP-11 sotto un oggetto &lt;code>nip29&lt;/code> con &lt;code>&amp;quot;subgroups&amp;quot;: true&lt;/code>, così i client possono scoprire la capacità prima di tentare di creare comunità annidate.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>: Fissaggio dei messaggi&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2379">PR #2379&lt;/a>, integrato il 2026-07-15; &lt;a href="https://github.com/nostr-protocol/nips/pull/2416">PR #2416&lt;/a>, integrato il 2026-07-17): Gli amministratori dei gruppi ora possono fissare messaggi all&amp;rsquo;interno di un gruppo basato su relay. Il meccanismo aggiunge un nuovo evento di moderazione, &lt;code>kind:9010&lt;/code> &lt;code>update-pin-list&lt;/code>, che trasporta l&amp;rsquo;intera lista ordinata dei messaggi fissati come tag &lt;code>e&lt;/code> riferiti agli id di eventi ordinari, e un nuovo evento facoltativo a livello di gruppo, &lt;code>kind:39005&lt;/code> &lt;em>group pinned events&lt;/em>, che il relay rigenera per rispecchiare la lista dei messaggi fissati accettata più di recente. Ogni &lt;code>kind:9010&lt;/code> sostituisce l&amp;rsquo;intera lista, quindi una sola nuova lista esprime il fissaggio, la rimozione, il riordino o l&amp;rsquo;azzeramento dei messaggi fissati. Il PR successivo #2416 estende il formato affinché la lista accetti anche i tag &lt;code>a&lt;/code>, consentendo agli amministratori di fissare eventi indirizzabili (post in formato lungo, pagine wiki e altri contenuti sostituibili parametrizzati) insieme ai normali messaggi di chat. I relay possono limitare il numero di elementi fissati e il testo integrato della specifica consiglia di visualizzarli nell&amp;rsquo;ordine in cui compaiono i tag.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>: Tag banner e suffisso con codice di invito&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2383">PR #2383&lt;/a>, integrato il 2026-07-16; &lt;a href="https://github.com/nostr-protocol/nips/pull/2380">PR #2380&lt;/a>, integrato il 2026-07-16): Due aggiunte per la visualizzazione e l&amp;rsquo;onboarding ai metadati dei gruppi. Il PR #2383 aggiunge un tag opzionale &lt;code>banner&lt;/code> all&amp;rsquo;evento di metadati del gruppo &lt;code>kind:39000&lt;/code>, unendosi ai campi esistenti &lt;code>name&lt;/code>, &lt;code>picture&lt;/code> e &lt;code>about&lt;/code> affinché i client possano rendere un&amp;rsquo;immagine di intestazione per la pagina di un gruppo. Il PR #2380 definisce un suffisso con codice di invito per i link di condivisione dei gruppi: un codice di invito può essere aggiunto all&amp;rsquo;identificatore &lt;code>naddr&lt;/code> del gruppo come &lt;code>naddr1...?invite=&amp;lt;code&amp;gt;&lt;/code>. Poiché il set di caratteri bech32 non include &lt;code>?&lt;/code>, la porzione prima del suffisso resta un naddr valido di per sé, così i client che non comprendono l&amp;rsquo;estensione possono comunque risolvere il gruppo. I client che la comprendono precompilano il tag &lt;code>code&lt;/code> sulla richiesta di adesione &lt;code>kind:9021&lt;/code>, che si abbina all&amp;rsquo;evento di moderazione esistente &lt;code>kind:9009&lt;/code> &lt;code>create-invite&lt;/code> per semplificare l&amp;rsquo;ammissione ai gruppi chiusi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> (Liste): Set di follow preferiti, kind:10011&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2413">PR #2413&lt;/a>, integrato il 2026-07-15): NIP-51 definisce i kind di lista standard, divisi tra liste sostituibili della serie &lt;code>kind:10000&lt;/code> (una per utente) e set indirizzabili della serie &lt;code>kind:30000&lt;/code> (molti per utente, indicizzati dal tag &lt;code>d&lt;/code>). Questo PR aggiunge &lt;code>kind:10011&lt;/code>, &lt;em>favorite follow sets&lt;/em>, una lista sostituibile standard i cui tag &lt;code>a&lt;/code> puntano a set di follow &lt;code>kind:30000&lt;/code>. Specchio del &lt;code>kind:10012&lt;/code> (relay feeds), che contiene tag &lt;code>a&lt;/code> che fanno riferimento a set di relay &lt;code>kind:30002&lt;/code>, il nuovo kind consente a un utente di aggiungere ai segnalibri set di follow con nome, come liste curate di collezioni di pubkey pubblicate da sé o da altri, e di far sì che i client li presentino per seguirli con un tocco o cambiare feed. Si noti che questo numero di kind è già conteso: si veda il PR di rinumerazione aperto più sotto.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect): Indicazioni sui timeout silenziosi&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2375">PR #2375&lt;/a>, integrato il 2026-07-15): NIP-46 è il protocollo di firma remota in cui un client invia richieste cifrate in stile JSON-RPC a un firmatario (bunker) tramite relay e attende una risposta cifrata. La modifica integrata consiste in una frase sul comportamento del protocollo: alle richieste effettuate con metodi sconosciuti o non supportati DEVE essere inviato un errore in risposta. In precedenza un firmatario che riceveva un metodo non implementato poteva non rispondere mai, lasciando il client in attesa fino allo scadere del proprio timeout senza alcun modo di distinguere &amp;ldquo;metodo non supportato&amp;rdquo; da &amp;ldquo;firmatario offline&amp;rdquo;. La risposta di errore obbligatoria consente ai client di interrompere subito l&amp;rsquo;operazione e mostrare un errore significativo prima del timeout locale.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR aperti e discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Rinumerazione di kind:10011 a kind:10021&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2417">PR #2417&lt;/a>): Sposta la lista dei set di follow preferiti appena integrata da &lt;code>kind:10011&lt;/code> a &lt;code>kind:10021&lt;/code>, perché &lt;code>10011&lt;/code> è già in uso altrove. Il PR di rinumerazione è stato aperto nel giro di pochi giorni dall&amp;rsquo;integrazione originale, quindi i client che implementano i set di follow preferiti dovrebbero seguire questo PR e puntare al numero finale, non a &lt;code>10011&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect): Semplificazione del nucleo&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2419">PR #2419&lt;/a>): Propone di restringere NIP-47, il protocollo wallet-connect che consente alle app di richiedere pagamenti Lightning da un wallet remoto tramite Nostr, in una specifica di nucleo più piccola. Le funzionalità opzionali e più specializzate uscirebbero da &lt;code>47.md&lt;/code> per entrare in un repository dedicato alle estensioni, &lt;a href="https://github.com/nostr-wallet-connect/nwc">nostr-wallet-connect/nwc&lt;/a>, dove le specifiche delle estensioni possono evolvere indipendentemente dal nucleo. L&amp;rsquo;obiettivo dichiarato è mantenere il nucleo piccolo, stabile e facile da implementare, seguendo la direzione concordata nelle precedenti chiamate NWC di separare un livello minimale di wallet-connect da comportamenti opzionali più ricchi. Dato quanto ampiamente NIP-47 è distribuito tra wallet e app, chiunque parli NWC dovrebbe seguire la discussione sulla ristrutturazione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Trusted Relay Assertions (bozza, nessun numero assegnato)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2418">PR #2418&lt;/a>): Propone uno standard per pubblicare valutazioni di fiducia sui relay Nostr, posizionato come il livello &amp;ldquo;ciò che concludiamo&amp;rdquo; accanto a &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (ciò che un relay dichiara di sé) e &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (ciò che i monitor hanno misurato). I fornitori di asserzioni calcolerebbero punteggi di fiducia da metriche osservate, reputazione dell&amp;rsquo;operatore e segnalazioni degli utenti; i client interrogherebbero queste asserzioni quando scelgono a quali relay connettersi. La bozza introduce &lt;code>kind:30385&lt;/code> (Trusted Relay Assertion indirizzabile, che trasporta tag di punteggio, affidabilità, qualità, accessibilità, operatore, policy e giurisdizione), &lt;code>kind:10385&lt;/code> (Trusted Provider List sostituibile, i fornitori di asserzioni scelti dall&amp;rsquo;utente), e riusa le etichette &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> per le segnalazioni su relay e operatori. Nessun numero di NIP è stato ancora assegnato; questa è una bozza in fase iniziale.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Operatore AND per i filtri (&amp;ldquo;NIP-91&amp;rdquo;, proposto, numero non ancora presente nel repository)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2252">PR #2252&lt;/a>): In NIP-01, i filtri sui tag supportano soltanto OR: un filtro &lt;code>&amp;quot;#t&amp;quot;: [&amp;quot;meme&amp;quot;, &amp;quot;cat&amp;quot;]&lt;/code> corrisponde agli eventi con uno dei due tag. Questa proposta aggiunge un modificatore &lt;code>&amp;amp;&lt;/code> per i tag indicizzabili, così &lt;code>&amp;quot;&amp;amp;t&amp;quot;: [&amp;quot;meme&amp;quot;, &amp;quot;cat&amp;quot;]&lt;/code> restituisce soltanto gli eventi che contengono entrambi i tag. I relay eseguono l&amp;rsquo;intersezione lato server e restituiscono un risultato più ristretto. Le regole di compatibilità danno la precedenza ad AND rispetto a OR, ignorano in OR i valori AND sui relay che supportano l&amp;rsquo;estensione e impongono ai client di includere i tag OR standard &lt;code>#&lt;/code> per i relay che non la supportano; i client intersecano localmente questi risultati più ampi. Questo PR riapre una proposta precedente ed elenca implementazioni per i relay, tra cui un&amp;rsquo;immagine Docker di nostr-rs-relay, netstr e un relay worker di Snort. NIP-91 compare soltanto nel branch del PR e resta assente dall&amp;rsquo;indice dei NIP nel README del repository, quindi il numero è provvisorio.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Nostr web applets (&amp;ldquo;NIP-5D&amp;rdquo;, proposto, numero non ancora nel repository)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2303">PR #2303&lt;/a>): Definisce un protocollo &lt;code>postMessage&lt;/code> per applicazioni web in sandbox (&amp;ldquo;napplet&amp;rdquo;) eseguite in iframe o webview per comunicare con un&amp;rsquo;applicazione ospitante (&amp;ldquo;shell&amp;rdquo;). La specifica è deliberatamente un nucleo sottile: specifica l&amp;rsquo;involucro dei messaggi, le regole di sandbox (gli iframe dei napplet DEVONO usare &lt;code>sandbox=&amp;quot;allow-scripts&amp;quot;&lt;/code> senza &lt;code>allow-same-origin&lt;/code>, e le shell NON DEVONO esporre &lt;code>window.nostr&lt;/code> NIP-07 all&amp;rsquo;interno dell&amp;rsquo;iframe), l&amp;rsquo;identificazione del mittente tramite il riferimento alla finestra &lt;code>MessageEvent.source&lt;/code> non falsificabile, non &lt;code>event.origin&lt;/code>, e la negoziazione delle capacità basata su manifest. I messaggi di protocollo effettivi per la firma, l&amp;rsquo;accesso ai relay, l&amp;rsquo;archiviazione e la comunicazione tra napplet sono delegati alle specifiche di estensione NAP (Nostr Applet Protocol), ciascuna proprietaria di un dominio di capacità, con la firma e la cifratura sempre mediate dalla shell affinché le chiavi non entrino mai nella sandbox. La proposta dipende dalla specifica del manifest dei napplet NIP-5A ed è tempestiva questa settimana: il lavoro pre-rilascio della v1.13.0 di Amethyst include l&amp;rsquo;isolamento degli account dei napplet, rendendo l&amp;rsquo;hosting lato client dei napplet un&amp;rsquo;area di implementazione attiva. Come per &amp;ldquo;NIP-91&amp;rdquo; sopra, il numero 5D è provvisorio.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="nip-deep-dive-nip-42-e-nip-43">NIP Deep Dive: NIP-42 e NIP-43&lt;/h2>
&lt;p>Gestire un relay non aperto a tutti un tempo significava inventare tutto da soli. Un operatore di relay a pagamento o solo su invito doveva mantenere una whitelist fuori banda, di solito un file di testo di pubkey raccolti tramite DM, senza alcun modo standard per dire a un client connesso &amp;ldquo;dimostra chi sei&amp;rdquo; e senza alcun modo standard per un utente di chiedere l&amp;rsquo;ammissione o sapere se fosse un membro. Ogni relay che voleva letture o scritture con accesso limitato costruiva il proprio meccanismo privato, e i client non potevano interoperare con nessuno di essi. &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> standardizza la metà del problema relativa alla prova di identità, e &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> standardizza la metà relativa all&amp;rsquo;appartenenza. Questa settimana nostream, il relay TypeScript, ha integrato la coppia da capo a fondo: il &lt;a href="https://github.com/Cameri/nostream/pull/702">PR #702&lt;/a> limita le letture dei kind cifrati ai destinatari autenticati, e il &lt;a href="https://github.com/Cameri/nostream/pull/676">PR #676&lt;/a> aggiunge le strategie per gli eventi di richiesta di adesione e uscita, entrambi integrati il 20 luglio.&lt;/p>
&lt;h3 id="nip-42-autenticazione-dei-client-verso-i-relay">NIP-42: Autenticazione dei client verso i relay&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> risponde a una domanda: chi si trova su questa connessione? Un relay che vuole limitare le letture o le scritture invia un messaggio &lt;code>AUTH&lt;/code> contenente una stringa di sfida, al momento della connessione o quando una richiesta richiede l&amp;rsquo;autenticazione. Un client risponde con un proprio messaggio &lt;code>AUTH&lt;/code> contenente un evento effimero firmato, kind 22242, e il relay risponde con un messaggio &lt;code>OK&lt;/code> come se l&amp;rsquo;evento di autenticazione fosse una normale scrittura. L&amp;rsquo;autenticazione resta valida per la durata della connessione. Una sequenza di messaggi &lt;code>AUTH&lt;/code> può autenticare più pubkey sulla stessa connessione.&lt;/p>
&lt;p>L&amp;rsquo;evento di autenticazione firmato è un oggetto compatto: un &lt;code>pubkey&lt;/code>, un &lt;code>created_at&lt;/code>, kind 22242, un tag &lt;code>relay&lt;/code>, un tag &lt;code>challenge&lt;/code>, un &lt;code>content&lt;/code> vuoto e una &lt;code>sig&lt;/code> sull&amp;rsquo;&lt;code>id&lt;/code> dell&amp;rsquo;evento. Poiché kind 22242 è effimero — i relay non devono mai memorizzarlo né ritrasmetterlo — non esiste alcun esempio pubblicato da incorporare; la panoramica dei campi qui sotto copre ciò che contiene.&lt;/p>
&lt;p>Il &lt;code>pubkey&lt;/code> è l&amp;rsquo;identità di cui si dimostra il possesso, poiché il relay verifica la &lt;code>sig&lt;/code> sull&amp;rsquo;&lt;code>id&lt;/code> dell&amp;rsquo;evento rispetto a quella chiave. Il kind 22242 rientra nell&amp;rsquo;intervallo effimero: l&amp;rsquo;evento è una credenziale a livello di connessione e i relay non devono mai archiviarlo né trasmetterlo ad altri client. Un tag &lt;code>relay&lt;/code> lega la firma all&amp;rsquo;URL di un relay, così un evento di autenticazione intercettato non può essere riutilizzato contro un relay diverso, mentre il tag &lt;code>challenge&lt;/code> lo lega alla specifica stringa di sfida emessa su questa connessione e blocca i riutilizzi successivi. Il suo &lt;code>created_at&lt;/code> deve essere vicino all&amp;rsquo;ora corrente, entro una finestra di circa dieci minuti, così un evento di autenticazione obsoleto scade da solo. Il campo &lt;code>content&lt;/code> vuoto conferma che non viene pubblicato nulla.&lt;/p>
&lt;p>La specifica definisce anche due prefissi leggibili dalle macchine che rendono visibile ai client la limitazione degli accessi. Un relay che rifiuta una sottoscrizione perché il client non si è ancora autenticato risponde con un messaggio &lt;code>CLOSED&lt;/code> che inizia con &lt;code>auth-required:&lt;/code>, e una scrittura rifiutata ottiene un &lt;code>OK&lt;/code> con lo stesso prefisso. Un client che si è autenticato ma non ha comunque il permesso per l&amp;rsquo;azione ottiene invece &lt;code>restricted:&lt;/code>. È su questa distinzione che il &lt;a href="https://github.com/Cameri/nostream/pull/702">PR #702 di nostream&lt;/a> costruisce: le letture dei kind cifrati possono ora essere chiuse con &lt;code>auth-required:&lt;/code> finché il pubkey richiedente non dimostra di essere il destinatario.&lt;/p>
&lt;h3 id="nip-43-metadati-e-richieste-di-accesso-ai-relay">NIP-43: Metadati e richieste di accesso ai relay&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> risponde alla domanda successiva: ora che il relay sa chi sei, cosa ti è permesso fare? Dove NIP-42 è un handshake su una connessione attiva, NIP-43 è un insieme di eventi pubblicati che descrivono lo stato di appartenenza e consentono agli utenti di chiedere di cambiarlo. Sul lato relay, un evento kind 13534, firmato dal pubkey nel campo &lt;code>self&lt;/code> del documento &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> del relay, elenca un tag &lt;code>member&lt;/code> per pubkey, con argomenti di ruolo opzionali che puntano a definizioni di ruolo pubblicate come kind 33534. Il kind 8000 annuncia l&amp;rsquo;aggiunta di un membro e il kind 8001 annuncia una rimozione, entrambi firmati dalla stessa chiave del relay con un tag &lt;code>p&lt;/code> per il membro interessato. Sul lato utente, il kind 28934 è una richiesta di adesione che trasporta un codice di invito in un tag &lt;code>claim&lt;/code>, il kind 28935 è un evento effimero con codice di invito che il relay genera al volo quando un utente richiede un claim, e il kind 28936 è una richiesta di uscita.&lt;/p>
&lt;p>Una richiesta di adesione è un oggetto altrettanto piccolo, e nessun relay pubblico implementa ancora NIP-43, quindi non c&amp;rsquo;è alcun evento kind 28934 reale da incorporare; la panoramica dei campi qui sotto copre ciò che contiene.&lt;/p>
&lt;p>Il &lt;code>pubkey&lt;/code> è l&amp;rsquo;utente che chiede l&amp;rsquo;ammissione e il kind 28934 identifica l&amp;rsquo;evento come richiesta di adesione. Il suo tag &lt;code>-&lt;/code> è il marcatore di evento protetto di &lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a>, che indica ai relay di accettare l&amp;rsquo;evento soltanto dal suo autore. Un tag &lt;code>claim&lt;/code> contiene il codice di invito ottenuto fuori banda e &lt;code>created_at&lt;/code> deve corrispondere all&amp;rsquo;ora corrente, con uno scarto di pochi minuti, così una vecchia richiesta non può essere riutilizzata. I relay rispondono al claim con un messaggio &lt;code>OK&lt;/code>, riutilizzano il prefisso &lt;code>restricted:&lt;/code> di NIP-42 per errori come un codice scaduto o non valido, aggiornano la lista kind 13534 e possono pubblicare un evento kind 8000 di aggiunta del membro. L&amp;rsquo;appartenenza non deriva deliberatamente da un singolo evento: la specifica considera la lista firmata dal relay come uno degli elementi disponibili e un client che deve stabilire se qualcuno è attualmente membro dovrebbe consultare sia il kind 13534 del relay sia gli eventi del membro. I client devono inviare richieste di adesione, invito o uscita soltanto ai relay che dichiarano questo NIP nella sezione &lt;code>supported_nips&lt;/code> del proprio documento NIP-11, mentre il &lt;a href="https://github.com/Cameri/nostream/pull/676">PR #676 di nostream&lt;/a> fornisce il meccanismo lato relay che trasforma questi kind di richiesta in effettive modifiche dell&amp;rsquo;appartenenza.&lt;/p>
&lt;h3 id="storia">Storia&lt;/h3>
&lt;p>NIP-42 è di gran lunga il più vecchio dei due. È entrato nel repository dei NIP il 2 gennaio 2023, nel &lt;a href="https://github.com/nostr-protocol/nips/commit/c80be21c">commit c80be21c&lt;/a>, in cui fiatjaf ha semplificato drasticamente un precedente NIP per l&amp;rsquo;autenticazione ai relay redatto da semisol, riducendo uno schema di sfida più complesso al singolo evento effimero firmato che la specifica usa ancora oggi. NIP-43 è arrivato molto più tardi, il 30 ottobre 2025, quando è stato integrato il &lt;a href="https://github.com/nostr-protocol/nips/pull/1079">PR #1079&lt;/a> di hodlbod, che ha aggiunto metadati e richieste di accesso ai relay costruiti direttamente sul prefisso &lt;code>restricted:&lt;/code> di NIP-42. Il divario di due anni e mezzo riflette quanto a lungo gli operatori di relay a pagamento e privati abbiano usato whitelist ad hoc prima che il livello di appartenenza ottenesse uno standard.&lt;/p>
&lt;h3 id="implementazioni">Implementazioni&lt;/h3>
&lt;p>Sul lato relay, &lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> ora include entrambe le metà dopo le integrazioni di questa settimana. &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> implementa NIP-42, validando gli eventi di autenticazione kind 22242 nel suo ingester ed emettendo sfide dalla sua configurazione. &lt;a href="https://github.com/scsibug/nostr-rs-relay">nostr-rs-relay&lt;/a> gestisce l&amp;rsquo;handshake AUTH nel suo livello di connessione con test che coprono la sfida e la finestra temporale. &lt;a href="https://github.com/fiatjaf/khatru">khatru&lt;/a>, il framework per relay in Go, traccia il pubkey autenticato per connessione affinché le policy possano limitare letture e scritture su di esso. Sul lato client, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> firma risposte kind 22242 alle sfide dei relay, inclusa l&amp;rsquo;autenticazione per flusso per le sue comunità cifrate Concord. I due NIP dividono il controllo degli accessi lungo una linea pulita: NIP-42 è prova di identità, limitata a una connessione, una sfida e pochi minuti di validità, e non dice nulla sulla policy. NIP-43 è policy, espressa come eventi ordinari di relay: chi è un membro, chi è stato aggiunto o rimosso, e come un utente richiede quelle transizioni. La lacuna che gli implementatori dovrebbero tenere a mente è che nulla standardizza ancora permessi più granulari oltre ai metadati di ruolo opzionali di NIP-43, quindi qualsiasi relay che faccia più di una divisione binaria membro/non-membro sta progettando quel livello da solo.&lt;/p>
&lt;hr>
&lt;p>Per questa settimana è tutto. State costruendo qualcosa o avete notizie da condividere? Contattateci tramite DM NIP-17 o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #31</title><link>https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/</link><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale su Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#vector-v040-moves-group-chats-from-marmot-to-concord-and-amethyst-ships-its-own-concord-client-days-later">Vector v0.4.0&lt;/a> ritira &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> come trasporto predefinito per le Chat di Gruppo a favore di &lt;a href="https://nostrcompass.org/it/topics/concord-protocol/">Concord&lt;/a>, un protocollo di comunità aperto con licenza MIT usato anche da Armada di Soapbox, e rilascia Concord v2 quattro giorni dopo con un selettore di comandi con barra per i bot, un timer di autodistruzione e badge NIP-58. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#amethyst-ships-a-clean-room-concord-implementation-for-end-to-end-encrypted-communities">Amethyst integra la propria implementazione pulita e compatibile a livello di protocollo di Concord&lt;/a>, la stessa settimana. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#sonar-splits-off-from-bitchat-with-a-cross-platform-alpha-and-a-sticker-pack-spec">Sonar&lt;/a> si separa da Bitchat con un&amp;rsquo;alpha multipiattaforma ed è la fonte di specifica citata per la proposta di kind per pacchetti di sticker di questa settimana. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#divine-mobile-1016-ships-a-deeper-video-editor-at-rest-encryption-and-proofmode-provenance">Divine Mobile 1.0.16&lt;/a> introduce un editor video più completo, la cifratura a riposo e la provenienza ProofMode che sopravvive al download di clip con filigrana. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#bitchat-v170-adds-live-push-to-talk-voice-for-dms-and-the-public-mesh">Bitchat v1.7.0&lt;/a> aggiunge la voce push-to-talk dal vivo per i DM e il push-to-talk firmato sulla mesh pubblica. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#mdk-v094-bounds-external-signer-login-and-adds-draft-persistence">MDK v0.9.4&lt;/a> limita il login con firmatario esterno e aggiunge la persistenza delle bozze, proseguendo il suo lavoro di irrobustimento la stessa settimana in cui Vector si allontana dalla specifica per la chat di gruppo.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale su Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#vector-v040-moves-group-chats-from-marmot-to-concord-and-amethyst-ships-its-own-concord-client-days-later">Vector v0.4.0&lt;/a> ritira &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> come trasporto predefinito per le Chat di Gruppo a favore di &lt;a href="https://nostrcompass.org/it/topics/concord-protocol/">Concord&lt;/a>, un protocollo di comunità aperto con licenza MIT usato anche da Armada di Soapbox, e rilascia Concord v2 quattro giorni dopo con un selettore di comandi con barra per i bot, un timer di autodistruzione e badge NIP-58. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#amethyst-ships-a-clean-room-concord-implementation-for-end-to-end-encrypted-communities">Amethyst integra la propria implementazione pulita e compatibile a livello di protocollo di Concord&lt;/a>, la stessa settimana. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#sonar-splits-off-from-bitchat-with-a-cross-platform-alpha-and-a-sticker-pack-spec">Sonar&lt;/a> si separa da Bitchat con un&amp;rsquo;alpha multipiattaforma ed è la fonte di specifica citata per la proposta di kind per pacchetti di sticker di questa settimana. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#divine-mobile-1016-ships-a-deeper-video-editor-at-rest-encryption-and-proofmode-provenance">Divine Mobile 1.0.16&lt;/a> introduce un editor video più completo, la cifratura a riposo e la provenienza ProofMode che sopravvive al download di clip con filigrana. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#bitchat-v170-adds-live-push-to-talk-voice-for-dms-and-the-public-mesh">Bitchat v1.7.0&lt;/a> aggiunge la voce push-to-talk dal vivo per i DM e il push-to-talk firmato sulla mesh pubblica. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#mdk-v094-bounds-external-signer-login-and-adds-draft-persistence">MDK v0.9.4&lt;/a> limita il login con firmatario esterno e aggiunge la persistenza delle bozze, proseguendo il suo lavoro di irrobustimento la stessa settimana in cui Vector si allontana dalla specifica per la chat di gruppo.&lt;/p>
&lt;p>I rilasci taggati portano &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#n_cord-v11-adds-nsec-bunker-support">n_cord v1.1&lt;/a> con il supporto per NSEC Bunker, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#cdk-v0173-adds-nip-47-wallet-service-support-across-cdk-cdk-nwc-and-cdk-ffi">cdk v0.17.3&lt;/a> con il supporto per il servizio di wallet NIP-47 su cdk, cdk-nwc e cdk-ffi, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#coop-mobile-v024-improves-nostr-connect-and-adds-ncryptsec1-import">Coop Mobile v0.2.4&lt;/a> con miglioramenti a Nostr Connect e l&amp;rsquo;importazione ncryptsec1, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#nmail-v0140-ships-on-macos-with-scheduled-send-and-push-notifications">Nmail v0.14.0&lt;/a> che arriva su macOS con l&amp;rsquo;invio programmato, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#nostrord-v220-adds-a-dm-master-toggle-and-richer-direct-messages">Nostrord v2.2.0&lt;/a> con un interruttore generale per i DM, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#nostr-wot-0386-hardens-key-backups-and-signing-prompts">Nostr WoT 0.3.86&lt;/a> che irrobustisce i backup delle chiavi al formato NIP-49, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#keep-android-v118-adds-first-run-frost-onboarding">Keep Android v1.1.8&lt;/a> con l&amp;rsquo;onboarding FROST al primo avvio, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#noscall-v060-adds-a-cashu-wallet-and-relay-based-push-notifications">Noscall v0.6.0&lt;/a> con un wallet Cashu e notifiche push basate su relay, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#kubo-ships-tablet-mode-and-group-chat-photos">Kubo&lt;/a> con la modalità tablet e le foto nelle chat di gruppo, e &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#nostr-codex-phone-v029-adds-gitdiffread-file-helper-requests">Nostr Codex Phone v0.2.9&lt;/a> con richieste ausiliarie per git, diff e lettura di file.&lt;/p>
&lt;p>Sul fronte non rilasciato, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#amethyst-lets-accounts-nickname-contacts-with-encrypted-nip-85-cards">Amethyst&lt;/a> consente agli account di assegnare soprannomi ai contatti con schede NIP-85 cifrate attraverso 54 PR integrate, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#zap-cooking-ships-my-kitchen-phase-3-and-fixes-an-ndk-pool-quorum-bug">Zap Cooking&lt;/a> rilascia la Fase 3 di My Kitchen e corregge un bug di quorum del pool NDK, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#kehto-streams-outbox-reads-before-relay-discovery">Kehto&lt;/a> trasmette le letture di outbox prima che finisca la scoperta dei relay, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#wired-and-tao-add-nip-57-creator-revenue-sharing">Wired e TAO&lt;/a> aggiungono la condivisione dei ricavi per i creatori con NIP-57, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#conduit-mono-rebuilds-the-merchant-orders-inbox-around-ephemeral-guest-checkout">Conduit Mono&lt;/a> ricostruisce la casella degli ordini del commerciante attorno al checkout come ospite effimero, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#buzz-hardens-channel-creator-provisioning-around-kind-39002">Buzz&lt;/a> irrobustisce il provisioning del creatore di canale attraverso 240 PR integrate, e &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#nostr-docs-adopts-a-nip-49-signer-with-multi-account-and-qr-pairing">Nostr Docs&lt;/a> adotta un firmatario NIP-49 con account multipli e accoppiamento QR. Tracciati per la prima volta questa settimana: &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#opendiscord-v101-launches-as-a-discord-style-client-on-nostr">OpenDiscord v1.0.1&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#auditable-voting-v01140-aligns-organiser-voter-and-audit-proxy-roles">Auditable Voting v0.1.140&lt;/a>, e la scelta Discovery &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#cambium-v032-pairs-with-heartwood-as-a-keyless-nip-55-signer">Cambium v0.3.2&lt;/a>, un firmatario NIP-55 senza chiavi che fa da proxy verso un dispositivo hardware Heartwood.&lt;/p>
&lt;p>Il repository dei NIP non integra nulla nell&amp;rsquo;ultima settimana e apre sei proposte: &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#open-kind10011-favorite-follow-sets">kind:10011 set di follow preferiti&lt;/a>, un&amp;rsquo;&lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#open-private-encrypted-drive-extends-nip-4e">unità cifrata privata che estende NIP-4E&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#open-nip-da-permissioned-private-data-sharing">NIP-DA condivisione privata di dati con permessi&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#open-sticker-pack-kinds-10031-and-30031">kind per pacchetti di sticker 10031 e 30031&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#open-nip-29-message-pinning-with-kind9010-and-kind39005">fissaggio dei messaggi NIP-29&lt;/a>, e una &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#open-nip-66-relay-discovery-restructure">ristrutturazione della scoperta di relay NIP-66&lt;/a>. Il Deep Dive copre &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#nip-deep-dive-nip-99-and-the-gamma-markets-commerce-extension">NIP-99 e l&amp;rsquo;estensione di commercio Gamma Markets&lt;/a>.&lt;/p>
&lt;hr>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="vector-v040-sposta-le-chat-di-gruppo-da-marmot-a-concord-e-amethyst-rilascia-il-proprio-client-concord-pochi-giorni-dopo">Vector v0.4.0 sposta le Chat di Gruppo da Marmot a Concord, e Amethyst rilascia il proprio client Concord pochi giorni dopo&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> è un messenger Nostr costruito attorno a un client a binario singolo, orientato alla privacy, per DM e chat di gruppo. &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">Vector v0.4.0&lt;/a> riscrive il motore di messaggistica dell&amp;rsquo;app in una libreria condivisa &lt;code>vector-core&lt;/code> e, nello stesso rilascio, ritira &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (MLS-su-Nostr) come trasporto predefinito per le Chat di Gruppo a favore di &lt;a href="https://nostrcompass.org/it/topics/concord-protocol/">Concord&lt;/a>, un protocollo di comunità cifrato end-to-end; la cronologia esistente dei gruppi Marmot non viene trasferita, e le note di rilascio indicano agli utenti di fare il backup di qualsiasi dato dei gruppi Marmot prima di aggiornare. Le note di rilascio di Vector descrivono Concord come &amp;ldquo;il nostro protocollo di messaggistica personalizzato&amp;rdquo;, ma le &lt;a href="https://github.com/concord-protocol/concord">specifiche da CORD-01 a CORD-07&lt;/a> sottostanti sono pubblicate separatamente, con licenza MIT, e già implementate al di fuori di Vector: il client in stile Discord di Soapbox, &lt;a href="https://gitlab.com/soapbox-pub/armada">Armada&lt;/a>, costruisce la sua funzionalità Communities sulla stessa specifica Concord, e un giorno dopo &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3566">Amethyst ha integrato la propria implementazione pulita e compatibile a livello di protocollo di Concord&lt;/a>, trattata in dettaglio più sotto. Lo stesso rilascio di Vector aggiunge il routing Tor opzionale per tutto il traffico, il login con firmatario remoto &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> tramite QR o URI bunker incollata, account multipli con un commutatore interno all&amp;rsquo;app, e pacchetti di emoji personalizzati condivisi tra i client. L&amp;rsquo;eliminazione di un messaggio lo rimuove per entrambe le parti nei DM e nelle chat di gruppo, e Vector mantiene deliberatamente la chiave di firma effimera invece di seguire il flusso di eliminazione standard &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, una deviazione motivata dalla privacy che il progetto segnala esplicitamente nelle note di rilascio. Quattro giorni dopo, &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.1">v0.4.1&lt;/a> rilascia &lt;strong>Concord v2&lt;/strong>, descritto come portatore di importanti miglioramenti di privacy e stabilità alle Communities mantenendo funzionanti quelle esistenti, insieme a un selettore di comandi con barra in stile Discord per i bot con parametri tipizzati, un timer di autodistruzione per chat, e un sistema di badge NIP-58 per i cacciatori di bug. L&amp;rsquo;allontanamento da Marmot per la chat di gruppo arriva la stessa settimana in cui &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#mdk-v094-bounds-external-signer-login-and-adds-draft-persistence">MDK v0.9.4&lt;/a> più sotto continua a investire nella specifica.&lt;/p>
&lt;h3 id="amethyst-rilascia-unimplementazione-pulita-di-concord-per-comunità-cifrate-end-to-end">Amethyst rilascia un&amp;rsquo;implementazione pulita di Concord per comunità cifrate end-to-end&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> è un client Nostr ricco di funzionalità per Android e multipiattaforma. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3566">PR #3566&lt;/a> aggiunge un&amp;rsquo;implementazione completa di &lt;a href="https://nostrcompass.org/it/topics/concord-protocol/">Concord&lt;/a> (da CORD-01 a CORD-07) che copre comunità serverless e cifrate end-to-end: piani di controllo, chat e guestbook avvolti con gift-wrap su relay ordinari, applicazione di ruoli e ban radicata nel proprietario che ogni client verifica localmente invece di fidarsi di un server, e re-keying per tagliare fuori i membri rimossi. Il codice di protocollo e crittografia risiede in &lt;code>quartz/&lt;/code>, i modelli di stato e vista in &lt;code>commons/&lt;/code>, e le schermate e la navigazione in &lt;code>amethyst/&lt;/code> per Android, con verbi CLI leggeri sotto &lt;code>cli/&lt;/code>; non c&amp;rsquo;è ancora un&amp;rsquo;interfaccia desktop, poiché la logica condivisa risiede in &lt;code>quartz&lt;/code>/&lt;code>commons&lt;/code> perché Desktop la adotti in seguito. L&amp;rsquo;implementazione è pulita: costruita dalle specifiche CORD pubbliche e dalle costanti di protocollo osservate, sotto la licenza MIT di Amethyst, distinta dal codice AGPL-3.0 di Armada. I valori dei vettori di test di Armada sono stati portati nei test unitari di Quartz per confermare che i due client interoperano realmente a livello di protocollo, dando a Concord tre implementazioni indipendenti nel giro di pochi giorni: Vector che rilascia per primo, Armada come client di riferimento di Soapbox, e ora la build da specifica di Amethyst.&lt;/p>
&lt;h3 id="sonar-si-separa-da-bitchat-con-unalpha-multipiattaforma-e-una-specifica-per-pacchetti-di-sticker">Sonar si separa da Bitchat con un&amp;rsquo;alpha multipiattaforma e una specifica per pacchetti di sticker&lt;/h3>
&lt;p>&lt;a href="https://sonarprivacy.xyz/">Sonar&lt;/a> è un messenger e wallet con mesh Bluetooth più Nostr nato da Bitchat, con DM di gruppo Marmot interoperabili con White Noise. Il codice risiede in &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar">hedwig-corp/bitchat-to-sonar&lt;/a>. &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar/releases/tag/v0.1-alpha.7">v0.1-alpha.7&lt;/a> aggiunge una finestratura limitata delle trascrizioni in stile Signal affinché le prestazioni di apertura e scorrimento restino local-first, sincronizza lo stato di scoperta dei peer vicini, e corregge i caricamenti di media Blossom che fallivano nella gestione del content-type e dello stato HTTP; la precedente &lt;a href="https://github.com/hedwig-corp/bitchat-to-sonar/releases/tag/v0.1-alpha.6">alpha.6&lt;/a> drenava gli eventi Marmot dal vivo per un aggiornamento più rapido della chat e chiudeva le lacune di parità di funzionalità tra Android e iOS su chiamate, messaggistica, wallet e push. Sonar è anche la fonte di specifica citata per &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#open-sticker-pack-kinds-10031-and-30031">PR #2410&lt;/a>, che registra i kind di evento per pacchetti di sticker sotto la specifica &amp;ldquo;Sonar Stickers&amp;rdquo; del progetto, dando a questo lancio un collegamento diretto al lavoro di protocollo di questa settimana.&lt;/p>
&lt;h3 id="divine-mobile-1016-introduce-un-editor-video-più-completo-la-cifratura-a-riposo-e-la-provenienza-proofmode">Divine Mobile 1.0.16 introduce un editor video più completo, la cifratura a riposo e la provenienza ProofMode&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">Divine&lt;/a> è un client di video brevi costruito su Nostr con curazione del feed tramite Web-of-Trust. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.16">v1.0.16&lt;/a>, il primo rilascio taggato dal #30, aggiunge transizioni tra clip, riproduzione inversa, un registratore di voice-over e marcatori di ritmo sulla timeline all&amp;rsquo;editor video, insieme a un controllo di regolazione del feed che consente all&amp;rsquo;utente di scorrere per aggiustare le raccomandazioni direttamente invece di lasciarle a segnali di interazione opachi. Il rilascio attiva anche la cifratura a riposo per i dati locali, aggiunge caricamenti in background che sopravvivono alla sospensione dell&amp;rsquo;app, e trasporta i dati di provenienza &lt;a href="https://nostrcompass.org/it/topics/proofmode/">ProofMode&lt;/a> quando si scarica una clip con filigrana affinché l&amp;rsquo;attestazione di creazione umana non venga rimossa durante il transito. Divine include anche nuove protezioni per gli account di minori di 16 anni ed estende la localizzazione a 17 lingue e 284 stringhe tradotte.&lt;/p>
&lt;h3 id="bitchat-v170-aggiunge-la-voce-push-to-talk-dal-vivo-per-i-dm-e-la-mesh-pubblica">Bitchat v1.7.0 aggiunge la voce push-to-talk dal vivo per i DM e la mesh pubblica&lt;/h3>
&lt;p>&lt;a href="https://github.com/permissionlesstech/bitchat">Bitchat&lt;/a> è un&amp;rsquo;app di chat con mesh Bluetooth con un gateway opzionale verso i relay Nostr. &lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.7.0">v1.7.0&lt;/a>, rilasciata la sera in cui è stato pubblicato il #30, aggiunge la voce push-to-talk dal vivo in &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1403">PR #1403&lt;/a> che trasmette l&amp;rsquo;audio mentre il mittente tiene premuto il pulsante e ripiega su una nota vocale se il flusso si interrompe, più il push-to-talk firmato sulla mesh pubblica in &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1406">PR #1406&lt;/a> affinché le raffiche di voce dal vivo sul canale mesh condiviso portino l&amp;rsquo;autenticazione del mittente. Il rilascio ripara anche la rotazione del peer-ID riagganciando il collegamento su un ri-annuncio verificato, riconoscendo lo stesso peer sotto il suo nuovo ID (&lt;a href="https://github.com/permissionlesstech/bitchat/pull/1401">PR #1401&lt;/a>), e i messaggi diretti a un peer attualmente irraggiungibile ora vengono messi in coda con consegna store-and-forward invece di fallire subito (&lt;a href="https://github.com/permissionlesstech/bitchat/pull/1415">PR #1415&lt;/a>). Questo prosegue direttamente dalla copertura del #30 sul lavoro di proof-of-work &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a> e sul gateway mesh-verso-Nostr della v1.6.0.&lt;/p>
&lt;h3 id="mdk-v094-limita-il-login-con-firmatario-esterno-e-aggiunge-la-persistenza-delle-bozze">MDK v0.9.4 limita il login con firmatario esterno e aggiunge la persistenza delle bozze&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> è l&amp;rsquo;SDK di riferimento per il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, il livello di messaggistica MLS-su-Nostr che il #30 ha trattato segnalandone l&amp;rsquo;adozione della specifica. &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.4">v0.9.4&lt;/a> limita i passaggi di directory consultiva che un client percorre durante il login con firmatario esterno in &lt;a href="https://github.com/marmot-protocol/mdk/pull/793">PR #793&lt;/a>, prevenendo un ciclo di tentativi illimitato quando un firmatario remoto è lento o non risponde. Lo stesso rilascio aggiunge la persistenza delle bozze di messaggio e i collegamenti profilo-sito web in &lt;a href="https://github.com/marmot-protocol/mdk/pull/812">PR #812&lt;/a>, proseguendo il lavoro di irrobustimento incrementale che MDK porta avanti da quando ha rilasciato la v0.9.0.&lt;/p>
&lt;hr>
&lt;h2 id="rilasci-taggati">Rilasci taggati&lt;/h2>
&lt;h3 id="n_cord-v11-aggiunge-il-supporto-per-nsec-bunker">n_cord v1.1 aggiunge il supporto per NSEC Bunker&lt;/h3>
&lt;p>&lt;a href="https://github.com/0n4t3/n_cord">n_cord&lt;/a> è un client di chat basato su Nostr ispirato a Discord e IRC. &lt;a href="https://github.com/0n4t3/n_cord/releases/tag/v1.1">v1.1&lt;/a> aggiunge il supporto per NSEC Bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> insieme a una correzione di un bug nella gestione delle risposte.&lt;/p>
&lt;h3 id="cdk-v0173-aggiunge-il-supporto-per-il-servizio-di-wallet-nip-47-su-cdk-cdk-nwc-e-cdk-ffi">cdk v0.17.3 aggiunge il supporto per il servizio di wallet NIP-47 su cdk, cdk-nwc e cdk-ffi&lt;/h3>
&lt;p>&lt;a href="https://github.com/cashubtc/cdk">cdk&lt;/a> è un development kit per Cashu; questo rilascio è per la maggior parte solo Bitcoin/Lightning, ma &lt;a href="https://github.com/cashubtc/cdk/releases/tag/v0.17.3">v0.17.3&lt;/a> aggiunge il supporto per il servizio &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) con un crate di servizio NWC dedicato, l&amp;rsquo;integrazione con il wallet, i binding FFI per &lt;code>cdk-ffi&lt;/code>, e una copertura di test end-to-end, dando ai wallet Cashu costruiti su cdk una superficie Nostr Wallet Connect standard.&lt;/p>
&lt;h3 id="coop-mobile-v024-migliora-nostr-connect-e-aggiunge-limportazione-ncryptsec1">Coop Mobile v0.2.4 migliora Nostr Connect e aggiunge l&amp;rsquo;importazione ncryptsec1&lt;/h3>
&lt;p>&lt;a href="https://git.reya.su/reya/coop-mobile">Coop Mobile&lt;/a> è un client di messaggistica privata &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> per piattaforme mobili. &lt;a href="https://git.reya.su/reya/coop-mobile/releases/tag/v0.2.4">v0.2.4&lt;/a> migliora il suo flusso &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> Nostr Connect, corregge un indicatore di caricamento che rimaneva bloccato in modo permanente su alcune connessioni, e aggiunge il supporto all&amp;rsquo;importazione del formato di chiave cifrata &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> &lt;code>ncryptsec1&lt;/code> insieme a una schermata di importazione dell&amp;rsquo;identità ridisegnata.&lt;/p>
&lt;h3 id="nmail-v0140-arriva-su-macos-con-invio-programmato-e-notifiche-push">Nmail v0.14.0 arriva su macOS con invio programmato e notifiche push&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client">Nmail&lt;/a> è un client di posta costruito su Nostr; &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.14.0">v0.14.0&lt;/a> porta l&amp;rsquo;app su macOS, aggiunge l&amp;rsquo;invio programmato con una casella Programmati dedicata per i messaggi in coda, e aggiunge le notifiche push. Il rilascio passa anche la risoluzione degli identificatori Nostr della rubrica al resolver &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> di NDK al posto di un&amp;rsquo;implementazione su misura.&lt;/p>
&lt;h3 id="nostrord-v220-aggiunge-un-interruttore-generale-per-i-dm-e-messaggi-diretti-più-ricchi">Nostrord v2.2.0 aggiunge un interruttore generale per i DM e messaggi diretti più ricchi&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">Nostrord&lt;/a> è un client di chat di gruppo basato su relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> per Android, iOS, web e desktop. &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.2.0">v2.2.0&lt;/a> aggiunge un interruttore generale per disabilitare tutte le funzionalità di messaggistica diretta in una volta (&lt;a href="https://github.com/nostrord/nostrord/pull/175">PR #175&lt;/a>) e rilascia &amp;ldquo;messaggi diretti più ricchi&amp;rdquo; (&lt;a href="https://github.com/nostrord/nostrord/pull/186">PR #186&lt;/a>), proseguendo dalla copertura del #30 sul rilascio che consolidava il pool di relay e rilevava i WebSocket zombie.&lt;/p>
&lt;h3 id="nostr-wot-0386-irrobustisce-i-backup-delle-chiavi-e-le-richieste-di-firma">Nostr WoT 0.3.86 irrobustisce i backup delle chiavi e le richieste di firma&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-wot/nostr-wot-extension">Nostr WoT&lt;/a> è un&amp;rsquo;estensione per browser che abbina un&amp;rsquo;identità Nostr a un wallet Lightning. &lt;a href="https://github.com/nostr-wot/nostr-wot-extension/releases/tag/v0.3.86">v0.3.86&lt;/a> sposta i backup delle chiavi cifrate al formato standard &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>, fa sì che le richieste di firma mostrino l&amp;rsquo;evento completo e tutti i tag invece di un riepilogo, verifica i dati del relay rispetto alla loro firma, e smette di esporre l&amp;rsquo;identità attiva al cambio di account. L&amp;rsquo;estensione elimina anche il permesso &lt;code>scripting&lt;/code> del browser inutilizzato.&lt;/p>
&lt;h3 id="keep-android-v118-aggiunge-lonboarding-frost-al-primo-avvio">Keep Android v1.1.8 aggiunge l&amp;rsquo;onboarding FROST al primo avvio&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> è un firmatario Android costruito su frammenti di chiave a soglia FROST. &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.1.8">v1.1.8&lt;/a> aggiunge un flusso al primo avvio che spiega i frammenti di chiave FROST e consente a un nuovo utente di scegliere una politica di firma tra Manuale, Base o Automatica prima che arrivi la prima richiesta di firma, il primo onboarding lato Android per il modello di firma a soglia del crate keep-mobile sottostante.&lt;/p>
&lt;h3 id="noscall-v060-aggiunge-un-wallet-cashu-e-notifiche-push-basate-su-relay">Noscall v0.6.0 aggiunge un wallet Cashu e notifiche push basate su relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/sanah9/noscall">Noscall&lt;/a> è un&amp;rsquo;app per chiamate audio e video sicure costruita su Nostr. &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.6.0-release">v0.6.0&lt;/a> aggiunge un wallet Cashu con ambito account con saldi multi-mint, invio e ricezione di ecash, e pagamento e ricezione Lightning con persistenza delle quote. Il rilascio migra anche le notifiche push di Android da Firebase Cloud Messaging a un percorso di consegna basato su relay Nostr tramite UnifiedPush, e migliora l&amp;rsquo;affidabilità del VoIP di iOS e del push APNs durante i nuovi tentativi di login.&lt;/p>
&lt;h3 id="kubo-rilascia-la-modalità-tablet-e-le-foto-nelle-chat-di-gruppo">Kubo rilascia la modalità tablet e le foto nelle chat di gruppo&lt;/h3>
&lt;p>&lt;a href="https://github.com/JeroenOnNostr/kubo">Kubo&lt;/a> è una piattaforma video Nostr sicura per bambini con curazione del feed tramite Web-of-Trust. &lt;a href="https://github.com/JeroenOnNostr/kubo/releases/tag/kubo-v2026.07.05">kubo-v2026.07.05&lt;/a> aggiunge un layout a griglia per tablet opzionale per il feed dei bambini e il supporto all&amp;rsquo;allegato di foto ai messaggi delle chat di gruppo, oltre a correzioni per il pulsante di registrazione che si nascondeva dietro la tastiera a schermo su Android.&lt;/p>
&lt;h3 id="nostr-codex-phone-v029-aggiunge-richieste-ausiliarie-per-gitdifflettura-di-file">Nostr Codex Phone v0.2.9 aggiunge richieste ausiliarie per git/diff/lettura di file&lt;/h3>
&lt;p>&lt;a href="https://github.com/tidley/nostr-codex-phone">Nostr Codex Phone&lt;/a> è una superficie di controllo mobile per un worker locale di assistenza alla programmazione che comunica tramite DM Nostr cifrati. &lt;a href="https://github.com/tidley/nostr-codex-phone/releases/tag/v0.2.9">v0.2.9&lt;/a> aggiunge azioni di strumenti OpenCode mobili, incluse richieste ausiliarie per git, diff, lettura di file, stato e cronologia, miglioramenti al fissaggio e alla ricerca delle sessioni, e un controllo di arresto delle attività, insieme a un wrapper di caricamento cifrato su &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> che è stato rilasciato nella precedente v0.2.8.&lt;/p>
&lt;h3 id="gitworkshop-v303-corregge-i-ref-appena-annunciati-nellesploratore-di-repository-e-rilascia-la-sua-prima-build-android">GitWorkshop v3.0.3 corregge i ref appena annunciati nell&amp;rsquo;esploratore di repository, e rilascia la sua prima build Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/gitworkshop">GitWorkshop&lt;/a> è un&amp;rsquo;interfaccia web git-su-Nostr per esplorare e revisionare repository NIP-34. &lt;a href="https://github.com/DanConwayDev/gitworkshop/releases/tag/v3.0.3">v3.0.3&lt;/a> corregge le viste di rami, tag, commit ed esplorazione del codice che non riuscivano a risolvere un ref annunciato da un repository dopo che l&amp;rsquo;esploratore lo aveva già caricato, insieme alla pulizia dei tempi del flusso CI, confermato direttamente rispetto al tag e alla cronologia dei commit. La stessa settimana, GitWorkshop ha pubblicato la sua prima build Android nativa su &lt;a href="https://zapstore.dev">Zapstore&lt;/a>, partendo dalla v3.0.0 e raggiungendo la v3.0.3 nel giro di ore; l&amp;rsquo;interfaccia web rimane l&amp;rsquo;interfaccia principale, e il pacchetto Android porta per la prima volta su un telefono la stessa esplorazione di repository NIP-34.&lt;/p>
&lt;h3 id="bitcoin-safe-arriva-su-flathub-mettendo-in-luce-il-suo-plugin-nostr-sync--chat">Bitcoin-Safe arriva su Flathub, mettendo in luce il suo plugin Nostr Sync &amp;amp; Chat&lt;/h3>
&lt;p>&lt;a href="https://bitcoin-safe.org">Bitcoin-Safe&lt;/a> è un wallet Bitcoin ad autocustodia costruito attorno ai flussi di lavoro con firmatari hardware. Il progetto ha &lt;a href="https://flathub.org/apps/org.bitcoin_safe.BitcoinSafe">pubblicato un pacchetto su Flathub&lt;/a> questa settimana, il suo primo inserimento in uno store di applicazioni Linux mainstream. Il rilascio su Flathub mette il plugin Sync &amp;amp; Chat di Bitcoin-Safe davanti a un pubblico più ampio: il plugin usa i messaggi diretti &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, tramite la libreria &lt;a href="https://github.com/andreasgriffin/bitcoin-nostr-chat">bitcoin-nostr-chat&lt;/a> del progetto, per sincronizzare le etichette del wallet tra i dispositivi di un utente e per inviare e ricevere PSBT per la co-firma multisig remota tra partecipanti fidati. Il livello Nostr stesso è stato rilasciato prima, nella &lt;a href="https://github.com/andreasgriffin/bitcoin-safe/releases/tag/2.0.0">2.0.0&lt;/a> (2026-06-29), che ha ridisegnato la firma delle transazioni attorno a un tipo di connessione &amp;ldquo;Share via Chat &amp;amp; Sync&amp;rdquo; insieme a QR, USB e Bluetooth. La notizia di questa settimana è il pacchetto Flathub che mette quella funzionalità esistente davanti a un pubblico Linux mainstream per la prima volta.&lt;/p>
&lt;hr>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="amethyst-consente-agli-account-di-assegnare-soprannomi-ai-contatti-con-schede-nip-85-cifrate">Amethyst consente agli account di assegnare soprannomi ai contatti con schede NIP-85 cifrate&lt;/h3>
&lt;p>Oltre all&amp;rsquo;&lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#amethyst-ships-a-clean-room-concord-implementation-for-end-to-end-encrypted-communities">implementazione di Concord&lt;/a> trattata sopra, Amethyst ha integrato altre 54 PR nell&amp;rsquo;ultima settimana. La principale tra queste è &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3548">PR #3548&lt;/a>, che consente a un account di assegnare un soprannome a qualsiasi altro utente pubblicando la propria scheda di contatto kind 30382 &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> su di lui. Il soprannome, una nota privata, e qualsiasi mappatura personalizzata di codici brevi di emoji &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> risiedono all&amp;rsquo;interno del contenuto cifrato con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> della scheda, così che solo l&amp;rsquo;account firmatario possa leggerli, e le schede si sincronizzano attraverso il set esteso di relay outbox dell&amp;rsquo;account al login e in modo incrementale in seguito. Feed, chat e menzioni rendono il soprannome al posto del nome visualizzato pubblico, con una scheda del soprannome toccabile nella pagina del profilo sopra il vero nome dell&amp;rsquo;utente.&lt;/p>
&lt;h3 id="zap-cooking-rilascia-la-fase-3-di-my-kitchen-e-corregge-un-bug-di-quorum-del-pool-ndk">Zap Cooking rilascia la Fase 3 di My Kitchen e corregge un bug di quorum del pool NDK&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> è un&amp;rsquo;app di condivisione di ricette e comunità culinaria costruita su Nostr. Ha integrato 43 PR proseguendo la sua funzionalità di pianificazione dei pasti &amp;ldquo;My Kitchen&amp;rdquo;, introducendo in questa fase la generazione di liste della spesa, un selettore di ricette e una griglia settimanale del pianificatore. Lo stesso insieme di modifiche corregge un bug di prontezza del quorum del pool di connessioni di &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> (Nostr Development Kit) che poteva lasciare le letture dei relay in attesa oltre il punto in cui un quorum di relay aveva già risposto.&lt;/p>
&lt;h3 id="kehto-trasmette-le-letture-di-outbox-prima-della-scoperta-dei-relay">Kehto trasmette le letture di outbox prima della scoperta dei relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/kehto/web">Kehto&lt;/a> è un runtime web iniziale per applet Nostr &lt;a href="https://nostrcompass.org/it/topics/nip-5d/">NIP-5D&lt;/a>, o &amp;ldquo;napplet&amp;rdquo;. Ha integrato 26 PR. &lt;a href="https://github.com/kehto/web/pull/193">PR #193&lt;/a> corregge le letture di outbox che in precedenza attendevano il completamento del caricamento della lista di relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> prima di aprire qualsiasi relay, così che un caricamento della lista di relay che non si risolveva mai poteva bloccare sia la consegna degli eventi sia i timeout delle query; la correzione apre immediatamente gli hint di relay validati e trasmette i risultati man mano che vengono scoperti i relay di scrittura. Una seconda modifica (&lt;a href="https://github.com/kehto/web/pull/196">PR #196&lt;/a>) allinea la pagina di audit dell&amp;rsquo;identità del progetto con NAP-SHELL, il contratto di ciclo di vita della piattaforma Napplet, parte dello stesso lavoro di allineamento del protocollo visibile altrove nel rilascio &lt;code>napplet/web&lt;/code> di questa settimana.&lt;/p>
&lt;h3 id="wired-e-tao-aggiungono-la-condivisione-dei-ricavi-per-i-creatori-con-nip-57">Wired e TAO aggiungono la condivisione dei ricavi per i creatori con NIP-57&lt;/h3>
&lt;p>&lt;a href="https://github.com/smolgrrr/Wired">Wired&lt;/a> e &lt;a href="https://github.com/smolgrrr/TAO">TAO&lt;/a> sono client social gemelli orientati alla libertà di parola costruiti su Nostr, che condividono la stessa lista di PR; entrambi hanno integrato &lt;a href="https://github.com/smolgrrr/Wired/pull/121">PR #121&lt;/a>, che implementa la condivisione dei ricavi per i creatori &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> affinché gli zap inviati a un post possano dividersi automaticamente tra collaboratori oltre all&amp;rsquo;autore originale. Questo prosegue la copertura del #30 sulla coppia che alzava il proprio segnale di proof-of-work a 21 bit come lavoro non rilasciato.&lt;/p>
&lt;h3 id="conduit-mono-ricostruisce-la-casella-degli-ordini-del-commerciante-attorno-al-checkout-come-ospite-effimero">Conduit Mono ricostruisce la casella degli ordini del commerciante attorno al checkout come ospite effimero&lt;/h3>
&lt;p>&lt;a href="https://github.com/Conduit-BTC/conduit-mono">Conduit Mono&lt;/a> è un protocollo di marketplace adiacente agli annunci classificati &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a>. &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/174">PR #174&lt;/a> aggiunge il checkout come ospite usando una chiave effimera generata dal browser: l&amp;rsquo;ospite invia un ordine cifrato e un rapporto di pagamento al commerciante usando quella chiave monouso, e il commerciante dà seguito fuori banda per telefono o email, così che l&amp;rsquo;acquirente non abbia mai bisogno di un&amp;rsquo;identità di casella durevole. &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/175">PR #175&lt;/a> ricostruisce la casella degli ordini del commerciante attorno a un unico modello di stato dell&amp;rsquo;ordine condiviso, separando i ruoli di acquirente e commerciante e richiedendo un codice di tracciamento e un corriere prima che un ordine fisico o misto possa passare a spedito. Il flusso di checkout del progetto si basa sui messaggi privati &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, sulla cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e sul gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>. Il &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#nip-deep-dive-nip-99-and-the-gamma-markets-commerce-extension">NIP Deep Dive&lt;/a> di questa settimana copre le convenzioni di &lt;a href="https://nostrcompass.org/it/topics/gamma-markets/">Gamma Markets&lt;/a> verso cui questo stesso problema di stato dell&amp;rsquo;ordine si dirige.&lt;/p>
&lt;h3 id="buzz-irrobustisce-il-provisioning-del-creatore-di-canale-attorno-al-kind-39002">Buzz irrobustisce il provisioning del creatore di canale attorno al kind 39002&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/buzz">Buzz&lt;/a> è una piattaforma di comunicazione a mente collettiva che collega agenti IA e umani su Nostr. Ha integrato 240 PR nell&amp;rsquo;ultima settimana, proseguendo il suo arco di irrobustimento del livello di relay dalla copertura del #30 sulle metriche di turno degli agenti kind 44200. La correzione di questa settimana (&lt;a href="https://github.com/block/buzz/pull/1830">PR #1830&lt;/a>) tratta il creatore di un canale come membro prima che venga eseguita la logica di provisioning del canale kind 39002, chiudendo una race condition in cui il canale del creatore stesso poteva rifiutarlo durante la configurazione.&lt;/p>
&lt;h3 id="nostr-docs-adotta-un-firmatario-nip-49-con-account-multipli-e-accoppiamento-qr">Nostr Docs adotta un firmatario NIP-49 con account multipli e accoppiamento QR&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-docs">Nostr Docs&lt;/a> è un&amp;rsquo;applicazione di documenti collaborativi nativa di Nostr. Ha integrato 5 PR, quella notevole (&lt;a href="https://github.com/formstr-hq/nostr-docs/pull/50">PR #50&lt;/a>) adottando il pacchetto &lt;code>@formstr/signer&lt;/code> per l&amp;rsquo;autenticazione completa &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> con cambio tra account multipli e accoppiamento QR, sostituendo un percorso di firma su misura precedente.&lt;/p>
&lt;h3 id="anche-rilasciato">Anche rilasciato&lt;/h3>
&lt;p>Correzioni minori di interoperabilità dei firmatari e di affidabilità sono arrivate in diversi progetti tracciati nell&amp;rsquo;ultima settimana senza superficie nuova sufficiente per un proprio paragrafo: &lt;a href="https://github.com/DanConwayDev/ngit-cli">ngit-cli&lt;/a>, un client da riga di comando per un&amp;rsquo;alternativa a GitHub basata su Nostr, rilascia &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.6.3">v2.6.3&lt;/a> facendo sì che &lt;code>ngit init&lt;/code> dia indicazioni di configurazione concrete invece di richiedere ripetutamente un nsec; &lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>, un&amp;rsquo;app privata di note e file cifrati costruita su Nostr, rilascia &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.4.1">v1.4.1&lt;/a> correggendo il login con firmatario Android che si rompeva quando Amber restituisce un pubkey esadecimale e migliorando lo scorrimento del login bunker; &lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>, un client Nostr snello e privo di servizi Google, rilascia &lt;a href="https://github.com/77elements/noornote/releases/tag/v1.2.8">v1.2.8&lt;/a> correggendo le notifiche mancate dei gruppi Nostrord e aggiungendo un interruttore di avviso per i propri post; &lt;a href="https://github.com/forgesworn/bray">Bray&lt;/a>, un server MCP Nostr consapevole della fiducia per agenti IA e umani, rilascia &lt;a href="https://github.com/forgesworn/bray/releases/tag/v1.34.0">v1.34.0&lt;/a> inviando i metadati del nome del client alla connessione bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>; &lt;a href="https://github.com/TsukemonoGit/lumilumi">Lumilumi&lt;/a>, un client web Nostr, memorizza le liste di relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> nello storage locale come fallback offline; &lt;a href="https://github.com/moogmodular/earthly">Earthly&lt;/a>, un&amp;rsquo;app di città e comunità locale basata su Nostr, aggiunge la ricerca geografica &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>; e &lt;a href="https://github.com/lnbits/lnbits">lnbits&lt;/a>, un sistema di wallet e account Lightning gratuito e open-source, rilascia &lt;a href="https://github.com/lnbits/lnbits/pull/3925">PR #3925&lt;/a> rendendo &lt;code>send_nostr_dm&lt;/code> non bloccante all&amp;rsquo;interno di un rilascio per il resto focalizzato su Lightning.&lt;/p>
&lt;hr>
&lt;h2 id="appena-tracciati-e-scoperti">Appena tracciati e scoperti&lt;/h2>
&lt;h3 id="opendiscord-v101-debutta-come-client-in-stile-discord-su-nostr">OpenDiscord v1.0.1 debutta come client in stile Discord su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/sofia-gros/open-discord">OpenDiscord&lt;/a> è un client con server e canali in stile Discord costruito su Nostr con permessi basati sui ruoli e lobby vocali WebRTC/SFU. &lt;a href="https://github.com/sofia-gros/open-discord/releases/tag/v1.0.1">v1.0.1&lt;/a> è il primo rilascio con installer taggato del progetto.&lt;/p>
&lt;h3 id="auditable-voting-v01140-allinea-i-ruoli-di-organizzatore-votante-e-proxy-di-audit">Auditable Voting v0.1.140 allinea i ruoli di organizzatore, votante e proxy di audit&lt;/h3>
&lt;p>&lt;a href="https://github.com/tidley/auditable-voting">Auditable Voting&lt;/a> è uno shell di voto solo client su Nostr. &lt;a href="https://github.com/tidley/auditable-voting/releases/tag/v0.1.140">v0.1.140&lt;/a> allinea i ruoli di organizzatore, votante e proxy di audit con l&amp;rsquo;esatto evento di definizione del questionario pubblico firmato dall&amp;rsquo;organizzatore, chiudendo una lacuna in cui un proxy di audit poteva agire su account generati obsoleti o su uno stato persistito da un worker o organizzatore diverso.&lt;/p>
&lt;h3 id="cambium-v032-si-abbina-a-heartwood-come-firmatario-nip-55-senza-chiavi">Cambium v0.3.2 si abbina a Heartwood come firmatario NIP-55 senza chiavi&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/cambium">Cambium&lt;/a> è la scelta Discovery di questo numero: un firmatario Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> che non conserva alcun materiale di chiave privata proprio, facendo da proxy per ogni richiesta di firma tramite &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> verso un firmatario hardware Heartwood compagno. Il progetto condivide l&amp;rsquo;organizzazione GitHub &lt;code>forgesworn&lt;/code> con il progetto tracciato Bray, e Heartwood stesso è stato trattato nel #30 quando ha rilasciato il ponte di firma relay-verso-seriale con cui ora dialoga il lato Android di Cambium. &lt;a href="https://github.com/forgesworn/cambium">v0.3.2&lt;/a> rifinisce il foglio di approvazione per avvisare dal vivo quando l&amp;rsquo;identità selezionata differisce dal collegamento esistente dell&amp;rsquo;app e sposta le scritture del registro di attività in un&amp;rsquo;unica coda non bloccante.&lt;/p>
&lt;h3 id="anche-in-lancio-questa-settimana-echoes-dispatch-e-linky">Anche in lancio questa settimana: echoes, Dispatch e Linky&lt;/h3>
&lt;p>Tre altri lanci meritano una menzione questa settimana. &lt;a href="https://github.com/Lwb89dev/echoes">echoes&lt;/a> è un&amp;rsquo;app di note offline-first e cifrata end-to-end che si sincronizza privatamente su Nostr. &lt;a href="https://github.com/freecritter/dispatch">Dispatch&lt;/a> è un organizzatore di viaggi local-first in cui ogni salvataggio è cifrato con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e sottoposto a backup su Nostr con una chiave dedicata e non collegabile, e il suo rilascio &lt;a href="https://github.com/freecritter/dispatch">v0.3.0&lt;/a> aggiunge il login Amber &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> affinché l&amp;rsquo;app non tocchi mai direttamente la chiave privata dell&amp;rsquo;utente. &lt;a href="https://github.com/hynek-jina/linky">Linky&lt;/a> combina contatti e DM Nostr con pagamenti Lightning e Cashu in un&amp;rsquo;unica progressive web app.&lt;/p>
&lt;hr>
&lt;h2 id="lavoro-di-protocollo-e-aggiornamenti-dei-nip">Lavoro di protocollo e aggiornamenti dei NIP&lt;/h2>
&lt;p>Nessuna PR integrata nel &lt;a href="https://github.com/nostr-protocol/nips">repository dei NIP&lt;/a> nell&amp;rsquo;ultima settimana. Sono state aperte sei proposte.&lt;/p>
&lt;h3 id="aperta-kind10011-set-di-follow-preferiti">Aperta: kind:10011 set di follow preferiti&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2413">PR #2413&lt;/a>, di fiatjaf, aggiunge i set di follow preferiti kind:10011. Rispecchia il modello esistente in cui kind:10012 (set di relay preferiti) contiene tag &lt;code>a&lt;/code> che puntano a set di relay kind:30002, estendendo lo stesso meccanismo di preferenza ai set di follow kind:30000 affinché un client possa segnare una lista di follow curata senza sostituire la propria lista di contatti.&lt;/p>
&lt;h3 id="aperta-unità-cifrata-privata-che-estende-nip-4e">Aperta: unità cifrata privata che estende NIP-4E&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2412">PR #2412&lt;/a>, del team Form*, propone un evento Metadata generico, kind 34578, distinto da un tag identificatore &lt;code>d&lt;/code> e da un tag di sottotipo &lt;code>t&lt;/code>, insieme a un file system cifrato privato costruito su di esso che è già implementato nel client Form* Drive del progetto, ancora sperimentale. Un record di file è un evento Metadata con &lt;code>t=files&lt;/code>: i blob dei file risiedono su server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> mentre solo un indice cifrato risiede sui relay, e ogni chunk di file ottiene la propria coppia di chiavi effimera con cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> v2 derivata tramite HKDF. Un evento compagno di Chiave di Cifratura Disaccoppiata contiene un&amp;rsquo;unica chiave simmetrica valida per l&amp;rsquo;intera unità contro cui i metadati di ogni file vengono decifrati, e si basa esplicitamente su &lt;a href="https://nostrcompass.org/it/topics/nip-4e/">NIP-4E&lt;/a>, la bozza di astrazione dello storage ancora aperta di fiatjaf (&lt;a href="https://github.com/nostr-protocol/nips/pull/1647">PR #1647&lt;/a>, aperta da dicembre 2024).&lt;/p>
&lt;p>Quell&amp;rsquo;unica chiave valida per l&amp;rsquo;intera unità significa che una chiave trapelata espone i metadati di ogni file dell&amp;rsquo;unità, non solo di uno, poiché le coppie di chiavi effimere per file variano solo la chiave di cifratura del chunk, non la chiave di decifratura dei metadati; non esiste ancora alcun percorso di rotazione o revoca oltre alla pubblicazione di un nuovo evento Metadata che avverte che gli eventi più vecchi potrebbero andare persi. Una seconda proposta, più ristretta, raggiunge la stessa idea sottostante di NIP-4E da un&amp;rsquo;angolazione diversa: &lt;a href="https://github.com/nostr-protocol/nips/pull/2361">PR #2361&lt;/a>, di fiatjaf, disaccoppia le chiavi di identità e cifratura all&amp;rsquo;interno della messaggistica &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> nello specifico, aperta dal 1° giugno. Entrambe le PR non sono integrate, lasciando questo un angolo attivo e conteso dello spazio di progettazione. Form* dice che il client Drive è sperimentale con un aggiornamento in arrivo a breve.&lt;/p>
&lt;h3 id="aperta-nip-da-condivisione-privata-di-dati-con-permessi">Aperta: NIP-DA condivisione privata di dati con permessi&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2411">PR #2411&lt;/a>, di JAFairweather, è una nuova bozza NIP-DA per la condivisione privata di dati con permessi attraverso concessioni di dati con ambito. Ogni utente mantiene un record cifrato e autoritativo per ambito sui relay, e l&amp;rsquo;accesso viene concesso consegnando privatamente la chiave simmetrica di quell&amp;rsquo;ambito dentro un gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, così che i relay memorizzino solo testo cifrato e non sappiano mai chi ha concesso l&amp;rsquo;accesso a chi; una revoca è semplicemente una rotazione di chiave, senza bisogno di riscrivere la copia di ogni consumatore. L&amp;rsquo;autore la posiziona come distinta dai DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (che possono portare uno snapshot di dati ma non aggiornamenti dal vivo né revoca) e dalle liste private NIP-51 (che non portano materiale di chiave), e cita due implementazioni indipendenti, una libreria di riferimento in JavaScript e una CLI in Go su go-nostr, testate in modo incrociato contro relay.damus.io, nos.lol e relay.primal.net.&lt;/p>
&lt;h3 id="aperta-kind-per-pacchetti-di-sticker-10031-e-30031">Aperta: kind per pacchetti di sticker 10031 e 30031&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2410">PR #2410&lt;/a>, di vincenzopalazzo, registra il kind 30031 (pacchetti di sticker indirizzabili) e il kind 10031 (la lista di pacchetti di sticker di un utente) nella tabella Event Kinds, specificati dal formato &amp;ldquo;Sonar Stickers&amp;rdquo; che &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#sonar-splits-off-from-bitchat-with-a-cross-platform-alpha-and-a-sticker-pack-spec">Sonar&lt;/a> rilascia questa settimana. I kind si collocano deliberatamente uno slot sopra i kind di emoji personalizzati &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> 30030 e 10030 affinché un client non possa scambiare un pacchetto di sticker per un set di emoji; i byte dell&amp;rsquo;immagine degli sticker risiedono su server HTTPS compatibili con &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, e i riferimenti agli sticker inviati portano un hash in testo semplice affinché un pacchetto indirizzabile modificato non possa cambiare silenziosamente l&amp;rsquo;aspetto degli sticker già inviati in vecchi messaggi. Una PR compagna registra gli stessi kind nel progetto separato &lt;code>registry-of-kinds&lt;/code>.&lt;/p>
&lt;h3 id="aperta-fissaggio-dei-messaggi-nip-29-con-kind9010-e-kind39005">Aperta: fissaggio dei messaggi NIP-29 con kind:9010 e kind:39005&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2379">PR #2379&lt;/a>, di Anderson-Juhasc, aggiunge il fissaggio dei messaggi ai gruppi basati su relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>: kind:9010 &lt;code>update-pin-list&lt;/code> è un evento di moderazione che porta la lista completa degli eventi fissati come tag &lt;code>e&lt;/code> in ordine di visualizzazione, così che un singolo evento possa fissare, rimuovere dal fissaggio, riordinare o azzerare il set fissato, e kind:39005 è uno specchio generato dal relay che espone l&amp;rsquo;ultima lista accettata. Il design sostituisce un precedente approccio a coppie aggiungi/rimuovi di &lt;a href="https://github.com/nostr-protocol/nips/pull/1163">PR #1163&lt;/a> dopo il feedback della revisione, e sceglie i numeri di kind 9010/39005 perché 9009 e 39003 sono nel frattempo stati rivendicati da &lt;code>create-invite&lt;/code> e dai ruoli di gruppo. Anderson-Juhasc mantiene anche &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#nostrord-v220-adds-a-dm-master-toggle-and-richer-direct-messages">Nostrord&lt;/a>, la cui &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.2.0">v2.2.0&lt;/a> viene rilasciata questa stessa settimana.&lt;/p>
&lt;h3 id="aperta-ristrutturazione-della-scoperta-di-relay-nip-66">Aperta: ristrutturazione della scoperta di relay NIP-66&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2241">PR #2241&lt;/a>, di VincenzoImp, è una ristrutturazione sostanziale della scoperta di relay &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>. Sostituisce la prosa vaga di &amp;ldquo;Altri tag includono&amp;rdquo; con una sezione strutturata di Tag Indicizzati, aggiunge un tag &lt;code>W&lt;/code> che rispecchia il campo &lt;code>attributes&lt;/code> di NIP-11 per il filtraggio della scoperta di relay, aggiunge un tag di etichetta &lt;code>l&lt;/code> che usa spazi dei nomi standardizzati (&lt;code>ISO-639-1&lt;/code>, &lt;code>ISO-3166-1&lt;/code>, &lt;code>IANA-asn&lt;/code>, &lt;code>IANA-tz&lt;/code>, &lt;code>nip66.label.city&lt;/code>), e organizza i tag di RTT, SSL/TLS, rete, geografici, DNS e HTTP in sezioni dedicate insieme a una nuova tabella di Tipi di Verifica. Corregge anche eventi di esempio rotti che avevano nomi di campo errati, un &lt;code>kind&lt;/code> mancante e nomi di tipo di verifica non validi, e chiude la &lt;a href="https://github.com/nostr-protocol/nips/issues/2171">issue #2171&lt;/a>. Tutte le modifiche restano retrocompatibili poiché ogni tag aggiunto è opzionale.&lt;/p>
&lt;hr>
&lt;h2 id="nip-deep-dive-nip-99-e-lestensione-di-commercio-gamma-markets">NIP Deep Dive: NIP-99 e l&amp;rsquo;estensione di commercio Gamma Markets&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-15/">NIP-15&lt;/a>, la specifica originale del Marketplace Nostr, è ormai legacy: modellava un banco del commerciante (kind 30017) con i prodotti (kind 30018) archiviati sotto di esso, e i client che un tempo ci giravano sopra, Shopstr tra questi, sono da allora passati agli annunci classificati &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> come specifica attiva. NIP-99 in sé è un singolo evento indirizzabile, kind 30402 per un annuncio attivo o kind 30403 per una bozza, senza alcun banco da creare prima. Lascia indefinito tutto ciò che va oltre l&amp;rsquo;annuncio: costo di spedizione, stato dell&amp;rsquo;ordine, ricevute, recensioni, e un modo per raggruppare più annunci sotto un&amp;rsquo;unica vetrina, esattamente le parti di NIP-15 che non sono mai state trasferite. &lt;a href="https://nostrcompass.org/it/topics/gamma-markets/">Gamma Markets&lt;/a> colma quella lacuna, ed è il livello di commercio moderno che vale la pena capire oggi.&lt;/p>
&lt;h3 id="la-lacuna-che-nip-99-lascia-aperta">La lacuna che NIP-99 lascia aperta&lt;/h3>
&lt;p>Il campo &lt;code>content&lt;/code> di un annuncio NIP-99 porta una descrizione in Markdown, &lt;code>price&lt;/code> e &lt;code>location&lt;/code> risiedono direttamente sull&amp;rsquo;evento, e i tag &lt;code>t&lt;/code> lo rendono ricercabile come contenuto hashtag ordinario. Poiché è indirizzabile sulla tupla pubkey, kind e tag &lt;code>d&lt;/code>, un venditore modifica un annuncio sul posto pubblicando una nuova versione con lo stesso tag &lt;code>d&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30402&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Vintage mechanical keyboard, Cherry MX Blue switches, barely used.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;keyboard-mx-blue-01&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Vintage Mechanical Keyboard&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Cherry MX Blue, barely used&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;published_at&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1752537600&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;location&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;NYC&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;price&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;100&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;USD&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;electronics&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Questa è l&amp;rsquo;intera specifica: un annuncio classificato firmato e aggiornabile. Ogni client che implementa NIP-99 per un e-commerce reale, oltre a un classificato occasionale, ha finito per inventare le proprie convenzioni private per spedizione, messaggi d&amp;rsquo;ordine e recensioni. Due client NIP-99 potevano ciascuno rendere correttamente un annuncio e comunque non avere alcun modo condiviso di completare un checkout tra loro.&lt;/p>
&lt;h3 id="gamma-markets-standardizzare-ciò-che-nip-99-ha-lasciato-fuori">Gamma Markets: standardizzare ciò che NIP-99 ha lasciato fuori&lt;/h3>
&lt;p>Gamma Markets è il nome che un gruppo di lavoro di sviluppatori di marketplace Nostr, i team dietro Shopstr, Cypher, Plebeian Market e Conduit Market, ha dato a un insieme condiviso di convenzioni di e-commerce costruite sopra l&amp;rsquo;evento kind 30402 esistente di NIP-99. La specifica è collegata dal documento canonico di NIP-99 tramite &lt;a href="https://github.com/nostr-protocol/nips/pull/1784">PR #1784&lt;/a> e mantenuta nel proprio repository, &lt;a href="https://github.com/GammaMarkets/market-spec">GammaMarkets/market-spec&lt;/a>.&lt;/p>
&lt;p>Gamma Markets aggiunge due kind autonomi adiacenti agli annunci. Il kind 30405 raggruppa più annunci in una collezione di prodotti, referenziando ciascuno con un tag &lt;code>a&lt;/code> esplicito:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30405&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Summer sale picks&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;summer-picks&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Summer Sale&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30402:&amp;lt;merchant-pubkey&amp;gt;:keyboard-mx-blue-01&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;shipping_option&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30406:&amp;lt;merchant-pubkey&amp;gt;:standard-regional&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il kind 30406 definisce un&amp;rsquo;opzione di spedizione con prezzi per paese e regole di costo opzionali basate su peso o distanza:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30406&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Standard Regional Shipping&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;standard-regional&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Standard Shipping&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;price&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;5.99&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;USD&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;country&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;US&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;service&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;standard&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;duration&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;24&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;72&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;H&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;weight-max&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;kg&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La creazione degli ordini, le richieste di pagamento, gli aggiornamenti di stato e spedizione, e le ricevute di pagamento viaggiano tutti come normali messaggi privati avvolti con gift-wrap &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, suddivisi in tre kind per ruolo, non ri-avvolgendo il trasporto: il kind 14 porta la comunicazione libera tra acquirente e commerciante, il kind 16 porta ogni transizione di stato dell&amp;rsquo;ordine (un tag &lt;code>type&lt;/code> da 1 a 4 segna creazione dell&amp;rsquo;ordine, richiesta di pagamento, aggiornamento di stato o aggiornamento di spedizione), e il kind 17 porta la ricevuta di pagamento dell&amp;rsquo;acquirente. Un messaggio di creazione dell&amp;rsquo;ordine appare così prima del gift-wrapping:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">16&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Please leave the package with the doorman.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;merchant-pubkey&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;subject&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;New order&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;type&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;order&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;order-8f21&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;amount&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;115000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;item&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30402:&amp;lt;merchant-pubkey&amp;gt;:keyboard-mx-blue-01&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;shipping&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30406:&amp;lt;merchant-pubkey&amp;gt;:standard-regional&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Valutare un acquisto completato è un kind indirizzabile separato, 31555, che punta all&amp;rsquo;annuncio che recensisce:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31555&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Arrived fast, exactly as described.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;a:30402:&amp;lt;merchant-pubkey&amp;gt;:keyboard-mx-blue-01&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rating&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;thumb&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rating&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1.0&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;quality&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rating&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0.9&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;delivery&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Far viaggiare i messaggi d&amp;rsquo;ordine su NIP-17 significa che un checkout di Gamma Markets usa lo stesso trasporto di messaggi privati che i client già rilasciano per i DM, invece di un kind di messaggio d&amp;rsquo;ordine su misura.&lt;/p>
&lt;p>La scelta di progettazione centrale della specifica è che nulla si eredita a cascata. Un annuncio che appartiene a una collezione la referenzia esplicitamente con un tag &lt;code>a&lt;/code> invece di ereditare automaticamente le opzioni di spedizione o la descrizione della collezione, e un&amp;rsquo;opzione di spedizione che un annuncio usa viene referenziata nello stesso modo esplicito. Questa è un&amp;rsquo;inversione deliberata del modello a banco di NIP-15, dove un prodotto ereditava silenziosamente qualunque valuta e tabella di spedizione definisse il suo banco genitore. Il compromesso è un tagging più esplicito su ogni annuncio, in cambio del fatto che la configurazione completa di un annuncio sia sempre leggibile dall&amp;rsquo;evento stesso, senza alcun oggetto genitore da risolvere prima.&lt;/p>
&lt;h3 id="dove-questo-si-manifesta-nella-pratica">Dove questo si manifesta nella pratica&lt;/h3>
&lt;p>Il lavoro di &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-15-newsletter/#conduit-mono-rebuilds-the-merchant-orders-inbox-around-ephemeral-guest-checkout">Conduit Mono&lt;/a> di questa settimana si colloca nello stesso territorio di messaggi d&amp;rsquo;ordine che Gamma Markets standardizza: il checkout come ospite con chiave effimera di &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/174">PR #174&lt;/a> e la ricostruzione della casella degli ordini del commerciante di &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/175">PR #175&lt;/a> risolvono entrambi il problema di stato dell&amp;rsquo;ordine acquirente/commerciante che i messaggi kind 14, 16 e 17 di Gamma Markets formalizzano; Conduit Mono esegue il proprio modello di stato dell&amp;rsquo;ordine accanto a quei kind, senza adottarli direttamente. Shopstr, uno dei quattro progetti che hanno scritto la specifica, ha tenuto in movimento anche il proprio impianto di commercio nell&amp;rsquo;ultima settimana: &lt;a href="https://github.com/shopstr-eng/shopstr/pull/568">PR #568&lt;/a> estrae la logica di gift-wrap NIP-17 duplicata in un modulo condiviso, e &lt;a href="https://github.com/shopstr-eng/shopstr/pull/567">PR #567&lt;/a> porta il suo parser di autenticazione HTTP &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> a una copertura di test completa, manutenzione esattamente sui livelli di messaggistica e autenticazione da cui un flusso d&amp;rsquo;ordine di Gamma Markets dipende per raggiungere acquirente e commerciante in sicurezza.&lt;/p>
&lt;p>NIP-15 ha perso il ruolo di vetrina standardizzando un banco e un prodotto, e poi lasciando pagamenti, spedizione, recensioni e stato dell&amp;rsquo;ordine come problema dell&amp;rsquo;applicazione. Gamma Markets colma la maggior parte di quella superficie mancante senza toccare la forma a singolo annuncio di NIP-99, costruendo sullo stack di DM esistente di Nostr, NIP-17, invece di inventare un nuovo livello di messaggistica.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? Scrivici via DM NIP-17 o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #30</title><link>https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/</guid><description>&lt;p>Benvenuti a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> il &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#marmot-marks-the-spec-adopted-and-mdk-cuts-v09x">Marmot spec è contrassegnato adottato&lt;/a> attraverso 42 file come MDK taglia v0.9.0 tramite v0.9.3 con avatar di gruppo crittografato, supporto di firma esterna, e MarmotKit iOS e attacchi Android. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#mostro-v0180-and-mobile-v130-ship-transport-v2-on-nip-44">Mostro navi Trasporto v2&lt;/a> su NIP-44 messaggi diretti con cancelli anti-spam e una finestra di coesistenza in entrambi mostrod v0.18.0 e Mobile v1.3.0. [Bitchat 1.6.0 aggiunge ZXQ0054QXXXC &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#amber-v623-scopes-profile-subscriptions-and-adds-a-tor-status-notification">Amber&lt;/a> applica gli abbonamenti del profilo per account, fetches NIP-65 elenchi di relè prima dei metadati del profilo, e aggiunge una notifica di stato Tor live con un&amp;rsquo;azione di riavvio. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#rust-nostr-adds-nip-40-expiration-to-gift-wrap-and-private-dm-builders">rust-nostr&lt;/a> aggiunge la scadenza NIP-40 alla confezione regalo e ai costruttori NIP-17 DM, ancorati al timestamp randomizzato dell&amp;rsquo;involucro. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#amethyst-spends-the-week-hardening-negentropy-sync-and-adding-nip-50-search">Amethyst&lt;/a> unisce 43 PR di indurimento di sincronizzazione negentropia, NIP-50 infrastruttura di ricerca full-text, e tipi di eventi per verticali di nicchia. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#nostrord-v200-and-v210-fold-the-relay-pool-and-heal-zombie-websockets">Nostrord navi v2.0.0 e v2.1.0&lt;/a> con una piscina a relè piegata, il rilevamento WebSocket zombie, e una cucitura completa della cache del disco-primo. [ZXQ00] (ZXXXXXX) Il repository NIPs si fonde con un &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#merged-nip-51-and-nip-37-align-the-kind-10013-name">NIP-51 e allineamento del nome NIP-37&lt;/a> e apre cinque proposte: &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#open-nip-ad-nostr-web-addresses-via-well-known-lookup">NIP-AD Nostr Web Addresses&lt;/a>, [ZXQ0065QXXZ] Copertura profonda delle immersioni &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#nip-deep-dive-nip-13-proof-of-work">NIP-13 (protezione del lavoro)&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#nip-deep-dive-nip-40-expiration-timestamp">NIP-40 (tempri di scadenza)&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Benvenuti a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> il &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#marmot-marks-the-spec-adopted-and-mdk-cuts-v09x">Marmot spec è contrassegnato adottato&lt;/a> attraverso 42 file come MDK taglia v0.9.0 tramite v0.9.3 con avatar di gruppo crittografato, supporto di firma esterna, e MarmotKit iOS e attacchi Android. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#mostro-v0180-and-mobile-v130-ship-transport-v2-on-nip-44">Mostro navi Trasporto v2&lt;/a> su NIP-44 messaggi diretti con cancelli anti-spam e una finestra di coesistenza in entrambi mostrod v0.18.0 e Mobile v1.3.0. [Bitchat 1.6.0 aggiunge ZXQ0054QXXXC &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#amber-v623-scopes-profile-subscriptions-and-adds-a-tor-status-notification">Amber&lt;/a> applica gli abbonamenti del profilo per account, fetches NIP-65 elenchi di relè prima dei metadati del profilo, e aggiunge una notifica di stato Tor live con un&amp;rsquo;azione di riavvio. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#rust-nostr-adds-nip-40-expiration-to-gift-wrap-and-private-dm-builders">rust-nostr&lt;/a> aggiunge la scadenza NIP-40 alla confezione regalo e ai costruttori NIP-17 DM, ancorati al timestamp randomizzato dell&amp;rsquo;involucro. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#amethyst-spends-the-week-hardening-negentropy-sync-and-adding-nip-50-search">Amethyst&lt;/a> unisce 43 PR di indurimento di sincronizzazione negentropia, NIP-50 infrastruttura di ricerca full-text, e tipi di eventi per verticali di nicchia. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#nostrord-v200-and-v210-fold-the-relay-pool-and-heal-zombie-websockets">Nostrord navi v2.0.0 e v2.1.0&lt;/a> con una piscina a relè piegata, il rilevamento WebSocket zombie, e una cucitura completa della cache del disco-primo. [ZXQ00] (ZXXXXXX) Il repository NIPs si fonde con un &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#merged-nip-51-and-nip-37-align-the-kind-10013-name">NIP-51 e allineamento del nome NIP-37&lt;/a> e apre cinque proposte: &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#open-nip-ad-nostr-web-addresses-via-well-known-lookup">NIP-AD Nostr Web Addresses&lt;/a>, [ZXQ0065QXXZ] Copertura profonda delle immersioni &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#nip-deep-dive-nip-13-proof-of-work">NIP-13 (protezione del lavoro)&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-08-newsletter/#nip-deep-dive-nip-40-expiration-timestamp">NIP-40 (tempri di scadenza)&lt;/a>.&lt;/p>
&lt;hr>
&lt;h1 id="heading">&lt;/h1>
&lt;h3 id="marmot-segna-la-spec-adottata-e-mdk-taglia-v09x">Marmot segna la spec adottata e MDK taglia v0.9.x&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/marmot-protocol/marmot">Marmot protocol repository&lt;/a> fuso &lt;a href="https://github.com/marmot-protocol/marmot/pull/170">PR #170&lt;/a> il 3 luglio, cambiando 42 file da &lt;code>Status: draft for internal review&lt;/code> (e &lt;code>experimental draft&lt;/code>) a &lt;code>Status: adopted&lt;/code>. Il titolo README si è spostato dall&amp;rsquo;inquadratura del repo come lavoro in corso a &amp;ldquo;Marmot Protocol&amp;rdquo; come testo adottato, i documenti dell&amp;rsquo;era MIP sono stati ri-framezzati come la versione deprecata del protocollo, e la sezione &amp;ldquo;Review Status&amp;rdquo; (&amp;ldquo;Questo non è ancora adottato testo spec&amp;rdquo;) è diventata &amp;ldquo;Review Guidance&amp;rdquo; per la modifica della corrente spec. L&amp;rsquo;etichetta &lt;code>v2&lt;/code> scompare in tutto: MIP-contrast phrasing (&amp;ldquo;new in v2&amp;rdquo;, &amp;ldquo;the v2 spec keep&amp;rdquo;) viene sostituita con &amp;ldquo;this spec&amp;rdquo; e &amp;ldquo;under this spec&amp;rdquo;. Due documenti mantengono il loro progetto di stato per disegno: &lt;code>implementation-model.md&lt;/code> rimane non-normativo, e il documento della funzione multi-dispositivo rimane una bozza.&lt;/p>
&lt;p>Lo stesso repository è atterrato &lt;a href="https://github.com/marmot-protocol/marmot/pull/171">PR #171&lt;/a> allineando la politica di amministrazione, l&amp;rsquo;appartenenza e gli invarianti di cambiamento di ruolo. Il controllo cross-component che un Remove non può orfano un amministratore è ora dichiarato come una proprietà di ogni epoca risultante, valutata contro il set di amministrazione dell&amp;rsquo;epoca precedente quando un commit non porta un aggiornamento di amministrazione-policy. La regola candidato-branch di Convergence è serrata in modo da &amp;ldquo;validates&amp;rdquo; significa piena validità di commit, compresi i controlli cross-component risultante-epoch, che impedisce un commit invariante-violante di creare un bordo candidato su qualsiasi ramo. Le notifiche di stato derivate da un commit superato devono essere ritirate quando la selezione di ramo lo sostituisce, che chiude il &amp;ldquo;perdere rinomina rende come un messaggio di sistema di successo&amp;rdquo; bug a livello spec. Una nuova sezione &amp;ldquo;Realizzare la rimozione&amp;rdquo; in &lt;code>member-departure.md&lt;/code> definisce l&amp;rsquo;ingresso di realizzazione primaria (l&amp;rsquo;impegno canonico accettato rimuovendo l&amp;rsquo;ultima foglia) e il fallback per i clienti che non hanno mai applicato il commit di rimozione: le prove autenticate post-evizione ora superano come risultato &lt;code>SelfEvicted&lt;/code> con semantica inattiva per la copia del gruppo rimossa. &lt;a href="https://github.com/marmot-protocol/marmot/pull/236">PR #236&lt;/a> quindi serrata convalida a filo-boundary, pinning KeyPackage accettazione a vita a 84 giorni più un margine di skew di un&amp;rsquo;ora, aggiungendo una tabella Nostr tag-cardinality per gruppo &lt;code>h&lt;/code>, dono-wrap &lt;code>p&lt;/code>, benvenuto &lt;code>e&lt;/code> e ZXQ0005QQXQXQXQXQ&lt;/p>
&lt;p>A valle, lo spazio di lavoro &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> tagliato &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.0">v0.9.0&lt;/a> il 6 luglio con un urto di versione full workspace, seguito da &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.1">v0.9.1&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.9.2">v0.9.2&lt;/a>) e [v0.9. v0.9.0 ruota le voci di keyring stale quando viene creato un nuovo database SQLite e atterra la disciplina di convalida-prima-mutata attraverso lo strato di archiviazione. v0.9.1 tratta ogni connessione in uscita attraverso un Chokepoint dial host-safety tramite &lt;a href="https://github.com/marmot-protocol/mdk/pull/732">PR #732&lt;/a>, chiudendo la classe di bug in cui diversi siti di chiamata hanno raggiunto la rete con una validazione diversa. v0.9.3 espone gli avatar di gruppo crittografati ai binding uniffi attraverso &lt;code>download_group_image&lt;/code> e &lt;code>image_hash_hex&lt;/code> tramite &lt;a href="https://github.com/marmot-protocol/mdk/pull/771">PR #771&lt;/a>, aggiunge il supporto di segnale esterno, e segna &lt;code>wn-opencode&lt;/code> produzione-ready via &lt;a href="https://github.com/marmot-protocol/mdk/pull/781">PR #781&lt;/a>. Oltre ai tagli MDK, MarmotKit spedisce attacchi iOS e Android ad ogni versione (un MarmotKit.xcframework più binding Swift per attacchi iOS e Kotlin più librerie JNI per Android, entrambi generati da un bugnato MDK commit hash), e un nuovo canale di rilascio di wn-agent fornisce installatori di shell che pin la versione WN&lt;/p>
&lt;h3 id="mostro-v0180-e-mobile-v130-nave-trasporto-v2-su-nip-44">Mostro v0.18.0 e Mobile v1.3.0 nave Trasporto v2 su NIP-44&lt;/h3>
&lt;p>Mostro è il protocollo di trading peer-to-peer Bitcoin che esegue libri di ordine, escrow e risoluzione delle controversie sugli eventi di Nostr, coordinato da un daemon (&lt;code>mostrod&lt;/code>) che i clienti parlano a DM più crittografati. Fino a questa settimana il protocollo di migrazione tra i client e mostrod è stato Transport v1. &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.18.0">Mostro v0.18.0&lt;/a> atterra Trasporto v2, cablaggio del protocollo su &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> messaggi diretti con cancelli antispam e dual-receive Un relativo &lt;a href="https://github.com/MostroP2P/mostro/pull/782">PR #782&lt;/a> fissa un tag info NIP-33 rinominando &lt;code>protocol_versions&lt;/code> al singolare &lt;code>protocol_version&lt;/code>. Oltre al lavoro di trasporto, il rilascio atterra un percorso live-quote unificato di Fase 4 con l&amp;rsquo;applicazione della cache-e-staleness (&lt;a href="https://github.com/MostroP2P/mostro/pull/783">PR #783&lt;/a>) e un fornitore di cross El Toque che copre le coppie cubane di CUP e MLC (&lt;a href="https://github.com/MostroP2P/mostro/pull/778">PR #778&lt;/a>).&lt;/p>
&lt;p>[ZXQ0008QXXZ v1.3.0] (&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.3.0">https://github.com/MostroP2P/mobile/releases/tag/v1.3.0&lt;/a>) è la metà client della migrazione. &lt;a href="https://github.com/MostroP2P/mobile/pull/613">PR #613&lt;/a> migra l&amp;rsquo;app a ZXQ0009QX37XZ 3.x, Fase A (&lt;a href="https://github.com/MostroP2P/mobile/pull/620">PR #620&lt;/a>) aggiunge il supporto dual-receive per ZXQ0012 Il rilascio aggiunge anche la copertura del metodo di pagamento africano: [PR #625] (&lt;a href="https://github.com/MostroP2P/mobile/pull/625">https://github.com/MostroP2P/mobile/pull/625&lt;/a>) aggiunge i metodi di pagamento del Malawi Kwacha e [PR #627] (&lt;a href="https://github.com/MostroP2P/mobile/pull/627">https://github.com/MostroP2P/mobile/pull/627&lt;/a>) aggiunge KES (Kenyan Shilling), MZN (Mozambican Metical), TZS (Tanzanian Shilling), UGX (Ugandan Shilling), ZAR Un flusso di ripristino ora aspetta la connettività dei nodi prima di emettere richieste di ripristino, e la gestione di causa-consapevole distingue uno slash obbligazionario guidato da una timeout-driven.&lt;/p>
&lt;h3 id="bitchat-160-aggiunge-nip-13-proof-of-work-e-un-gateway-opt-in-mesh-to-nostr">Bitchat 1.6.0 aggiunge NIP-13 proof-of-work e un gateway opt-in mesh-to-Nostr&lt;/h3>
&lt;p>[Bitchat 1.6.0] (&lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.6.0">https://github.com/permissionlesstech/bitchat/releases/tag/v1.6.0&lt;/a>) è l&amp;rsquo;applicazione di chat Bluetooth-mesh che utilizza Nostr per i suoi canali geohash e handoff DM. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1382">PR #1382&lt;/a> aggiunge &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13 (proof-of-work)&lt;/a> ai messaggi di canale geohash in uscita (tipo 20000 eventi effimeri): ogni mina un tag &lt;code>[&amp;quot;nonce&amp;quot;, &amp;quot;&amp;lt;value&amp;gt;&amp;quot;, &amp;quot;&amp;lt;target&amp;gt;&amp;quot;]&lt;/code> in uscita ha un bit di 8 secondi. Gli eventi in entrata con validato PoW rilassano il limite di aspirazione per-sender, quindi uno spammer paga la computazione per messaggio mentre un mittente regolare non sente il costo. Scope è volutamente stretto: solo i messaggi di canale di tipo 20000 mine PoW, e i battiti cardiaci di presenza (kind 20001), le note di posizione gentili-1, e DMs sono intatti.&lt;/p>
&lt;p>&lt;a href="https://github.com/permissionlesstech/bitchat/pull/1384">PR #1384&lt;/a> aggiunge la modalità gateway, un uplink mesh-to-Nostr opt-in per i canali geohash. Quando un utente mesh-only (nessun internet, nessun relè raggiungibile) invia in un canale geohash e un altro peer sulla rete pubblicizza la capacità &lt;code>.gateway&lt;/code>, il tipo firmato 20000 evento è avvolto in una nuova busta &lt;code>MessageType.nostrCarrier = 0x28&lt;/code> TLV e inviato diretto a un gateway. Il gateway peer pubblica l&amp;rsquo;evento a Nostr per conto del mittente e rebroadcast traffico canale in entrata sulla rete con TTL predefinito. I depositi di uplink cavalcano il percorso della busta del corriere (diretto, relayed multi-hop); downlink cavalca in onda. La firma avviene prima che l&amp;rsquo;evento lasci il mittente, in modo che il gateway può decidere se pubblicare ma non può forgiare l&amp;rsquo;attribuzione. La motivazione dichiarata è disastro e scenari di protesta in cui un telefono collegato in una folla è sufficiente per dare l&amp;rsquo;intero canale geohash un uplink Nostr funzionante.&lt;/p>
&lt;p>&lt;a href="https://github.com/permissionlesstech/bitchat/pull/1381">PR #1381&lt;/a> aggiunge i fasci prechiavi per il primo contatto asincrono sul percorso della posta del corriere, in modo che un mittente possa comporre un messaggio a un pari che è offline e consegnarlo alla rete senza aver fatto prima una stretta live di Noise. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1380">PR #1380&lt;/a> aggiunge la verifica transitoria: un peer che ha completato la stretta di mano del rumore con qualcuno che hai già verificato è ora garantito per over the Noise session, quindi il grafico di fiducia propaga un hop alla volta invece di richiedere una nuova verifica in persona firmata per ogni nuovo contatto. Bitchat 1.5.4 spedito &lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.4">primario nella settimana&lt;/a> con i preferiti end-to-end fix in &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1367">PR #1367&lt;/a> che pulisce i duplicati di peer-list, la sincronizzazione Nostr e la corruzione chiave &lt;code>/fav&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="tagged-releases">Tagged releases&lt;/h2>
&lt;h3 id="amber-v623-presenta-gli-abbonamenti-del-profilo-e-aggiunge-una-notifica-di-stato-tor">Amber v6.2.3 presenta gli abbonamenti del profilo e aggiunge una notifica di stato Tor&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.3">Amber v6.2.3&lt;/a> è un segnale di prestazioni e correttezza sul segnale Android &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e le PR unite nella settimana intorno a esso puntano a un tema coerente. Il rilascio stesso aggiunge un&amp;rsquo;impostazione dell&amp;rsquo;intervallo fetch del profilo configurabile con opzioni mai e sempre (&lt;a href="https://github.com/greenart7c3/Amber/pull/492">PR #492&lt;/a>), mostra un&amp;rsquo;immagine del profilo nel foglio inferiore dell&amp;rsquo;interruttore dell&amp;rsquo;account, e gli abbonamenti del profilo dell&amp;rsquo;account corrente in modo che un firmatario che tiene più account smetta di esaurire gli abbonamenti per gli account che l&amp;rsquo;utente non sta firmando con. Bunker permesso parsing guadagna esplicito errore di gestione su fallimenti parse. Numerose violazioni StrictMode sono fissate: un DiskReadViolation dalla registrazione di Coil &lt;code>onSuccess&lt;/code>, una violazione di keytore dal caricamento dell&amp;rsquo;account sul thread principale, lettura main-thread per il nome dell&amp;rsquo;account e l&amp;rsquo;immagine nel foglio dell&amp;rsquo;interruttore dell&amp;rsquo;account, e desiderosi di &lt;code>KeyPair()&lt;/code> costruzione sul login e schermi di registrazione ora spostato fuori il thread principale. Nei giorni dopo v6.2.3 spedito, &lt;a href="https://github.com/greenart7c3/Amber/pull/493">PR #493&lt;/a> riordinato il percorso di avvio per recuperare l&amp;rsquo;utente &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> elenco di relè prima dei metadati del profilo (così il profilo fetch interroga i relè che l&amp;rsquo;utente pubblica a), e [PR #494Q](ZXQ0007 &lt;a href="https://github.com/greenart7c3/Amber/pull/495">PR #495&lt;/a> ha abilitato Android Lint in modalità avvisi-as-errors rigorosi attraverso la base di codice.&lt;/p>
&lt;h3 id="jumble-v2671-rende-blossom-il-servizio-di-upload-predefinito-in-un-taglio-focalizzato-su-dm">Jumble v26.7.1 rende Blossom il servizio di upload predefinito in un taglio focalizzato su DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.7.1">Jumble v26.7.1&lt;/a> è un client web Nostr tagliato focalizzato su messaggi e supporti diretti. Il rilascio ridisegna le impostazioni di caricamento dei media e rende [Blossom] (/it/topics/blossom/) il servizio di upload predefinito, sostituendo il precedente default NIP-96. La gestione di DM ottiene un menu di messaggi mobili, migliorato le azioni dei messaggi desktop, un pulsante &amp;ldquo;scroll to più recenti&amp;rdquo;, reazioni a lunga pressione sui media DM, e un percorso di riprovazione per i DM non riusciti in uscita dalla lista dei messaggi. L&amp;rsquo;editing personalizzato di emoji guadagna una vista dettagliata, il dimensionamento della bolla del messaggio migliora per le fatture e il contenuto incorporato, diversi problemi di scorrimento e di ordinazione dei messaggi di DM sono fissi, e i problemi post-editor relativi all&amp;rsquo;inserimento emoji, copia del testo e trascinamento dei file vengono ripuliti. L&amp;rsquo;orientamento dell&amp;rsquo;immagine viene corretto quando i metadati vengono rimossi su upload e i download di Linux ARM64 vengono aggiunti alla matrice di rilascio.&lt;/p>
&lt;h2 id="-applesauce-signers-622-scende-una-dipendenza-nbunksec">## Applesauce signers 6.2.2 scende una dipendenza nbunksec&lt;/h2>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-signers%406.2.2">applesauce-signers@6.2.2&lt;/a> abbassa la dipendenza &lt;code>@sandwichfarm/encoded-entities&lt;/code> del sottopacchetto a favore di un built-in &lt;a href="https://nostrcompass.org/it/topics/nip-46/">nbunksec&lt;/a> helper via &lt;a href="https://github.com/hzrd149/applesauce/commit/d654349">commit d654349&lt;/a>. La codifica della sessione di bunker di Applesauce &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, aggiunta la scorsa settimana, non richiede più la libreria di codifica esterna, tagliando una superficie della catena di fornitura per i clienti a valle che consumano il pacchetto dei firmatari.&lt;/p>
&lt;h3 id="ngit-v262-interrompe-gli-eventi-duplicati-di-stato-pr-sulla-pressione-di-default-branch">Ngit v2.6.2 interrompe gli eventi duplicati di stato PR sulla pressione di default-branch&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.6.2">Ngit v2.6.2&lt;/a> è un bug-fix release per il git-over-Nostr CLI. &lt;code>git push&lt;/code> al ramo di default smette di pubblicare duplicati eventi di stato PR merge/applied per le PR che sono già contrassegnate applicate, perché la rilevazione di fusione ora legge il pre-push Nostr repo stato (la fonte di verità per se un PR è stato già risolto sul lato &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> del flusso di lavoro); il precedente evento euristico basato su git interno. I repository attivi che utilizzano ngit per i flussi git-over-Nostr smettono di emettere eventi di stato del tipo-1621 duplicati nel loro pubblico.&lt;/p>
&lt;h3 id="bray-v1330-cli-raccoglie-un-profilo-bunker-persona-e-tor-in-uscita">Bray v1.33.0 CLI raccoglie un profilo bunker, persona e Tor in uscita&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/bray/releases/tag/v1.33.0">Bray v1.33.0&lt;/a> è un rilascio Nostr SDK-plus-CLI. &lt;code>bunker --profile &amp;lt;name&amp;gt;&lt;/code> ottiene una chiave di connessione auto-stabile e fallback relè in modo che un profilo salvato possa sopravvivere a un outage relè; &lt;code>bunker --persona &amp;lt;name&amp;gt;&lt;/code> segni come un&amp;rsquo;identità derivata nsec-tree, lasciando un segnale agire come più pubkeys da un singolo albero derivato; e tutte le fetches HTTP possono essere instradate tramite un proxy ZXQ0027QX Il rilascio aggiunge sottocomandi portafogli per &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> NWC, &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> gruppo di gestione delle operazioni di scrittura (creare, aggiornare, add-user, remove-user, set-roles), NIP-86 e [ZX13X00 Publishing verbs pick up &lt;code>--jsonl&lt;/code>, &lt;code>--csv&lt;/code>, e &lt;code>--tsv&lt;/code> bandiere di uscita, un verbo &lt;code>req&lt;/code> generico per domande filtro NIP-01, un verbo &lt;code>event&lt;/code> per la costruzione di eventi arbitrari, un comando &lt;code>publish-raw&lt;/code> Il lavoro di sicurezza copre tre lotti di deferrals di audit: disciplina di zeroizzazione segreta, HTTP di trasporto di orso-auth e l&amp;rsquo;indurimento dei limiti di tasso, e convalida SSRF sugli URL di relè. Le npm tarball navi a 533.844 byte con un byte-identico edificio riproducibile verificato in due corridori CI indipendenti.&lt;/p>
&lt;h3 id="deepmarks-100-indurisce-la-superficie-di-bookmarking-nostr">Deepmarks 1.0.0 indurisce la superficie di bookmarking Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ostermayer/deepmarks-public/releases/tag/v1.0.0">Deepmarks 1.0.0&lt;/a> è una pietra miliare di sicurezza per un servizio pubblico di bookmarking Nostr. Ogni segnalibro è ancora un evento firmato Nostr che qualsiasi cliente può leggere. Lo API e il lavoratore di archivio siedono in una posizione di rete privilegiata (può raggiungere Redis interno, il percorso di relè del bunker e i metadati del cloud), quindi la protezione SSRF è portante di carico, e il rilascio fissa un bypass critico IPv6-litterale in &lt;code>isPrivateIp&lt;/code>: staffato IPv6 literals sono stati classificati come pubblico, quindi La guardia ora spoglia staffe e piega IPv4-mapped e IPv4-compatibile IPv6 fino al v4 incorporato prima del controllo a banda privata su entrambe le caselle. I profili &lt;code>kind:0&lt;/code> da relè esterni sono ora marcati al lavandino in modo che un relè ostile non possa forgiare un &lt;code>nip05&lt;/code> o &lt;code>lud16&lt;/code> per una vittima arbitraria pubkey, e gli URL del bookmark sono controllati da ogni lavandino di render in modo da un segnalibro &lt;code>kind:39701&lt;/code> Le ricevute di Zap sono ora sopravvissute a un outage del bunker transitorio: il gestore del regolamento sostiene atomicamente lo zap in sospeso, finalizza solo dopo la firma riesce, e rilascia il reclamo sul fallimento in modo che uno &lt;code>invoice_updated&lt;/code> riprova. Lo scarico fan-out &lt;code>/publish&lt;/code> utilizza &lt;code>BLMOVE&lt;/code> in una lista di elaborazione per-lavoratore con recupero acuto-gated in modo che un lavoratore crashato preserva un evento firmato che il cliente era già 202&amp;rsquo;d.&lt;/p>
&lt;h2 id="-bitcredit-core-v0513-unencrypts-block-metadatas-on-the-nostr-wire">## Bitcredit Core v0.5.13 unencrypts block metadatas on the Nostr wire&lt;/h2>
&lt;p>&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.13">Bitcredit Core v0.5.13&lt;/a> rimuove uno strato di crittografia dagli eventi pubblici Nostr utilizzati dal protocollo di trasferimento di credito. Bloccare i metadati (bloccare id, hash, firma) è ora non crittografato sul filo Nostr; solo i dati del blocco rimangono crittografati con la chiave di fattura corrispondente. Le nuove applicazioni elaborano vecchie catene, le vecchie applicazioni non elaborano nuove catene. Il rilascio aggiunge anche una funzione di fattura-servizio per recuperare la catena di bolletta, e passa la pubblicazione ad un modello di soglia ottimista: una volta che una soglia di relè configurata (una di default) accetta una pubblicazione, rimanenti relè ricevono l&amp;rsquo;evento asincronicamente così la pubblicazione non è più bloccata dal relè più lento.&lt;/p>
&lt;h3 id="coop-mobile-v023-e-v024">Coop Mobile v0.2.3 e v0.2.4&lt;/h3>
&lt;p>&lt;a href="https://git.reya.su/reya/coop-mobile">Coop Mobile&lt;/a> spedito [v0.2.3] (&lt;a href="https://git.reya.su/reya/coop-mobile/releases/tag/v0.2.3">https://git.reya.su/reya/coop-mobile/releases/tag/v0.2.3&lt;/a>) il 4 luglio e &lt;a href="https://git.reya.su/reya/coop-mobile/releases/tag/v0.2.4">v0.2.4&lt;/a> il 7 luglio, continuando il Android &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> cadenza di rilascio costante del client di messaggio. v0.2.3 aggiunge l&amp;rsquo;immagine in linea e il rendering del collegamento in messaggi di chat, allegati di immagine, input vocale-to-text e una finestra di dialogo di conferma per la rimozione dei contatti. v0.2.4 fissa un indicatore che è rimasto bloccato per sempre, migliora il handshake Nostr Connect, e aggiunge l&amp;rsquo;importazione &lt;code>ncryptsec1&lt;/code> (il formato &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> crittografato-private-chiave) insieme a una schermata di identità di importazione ridisegnata.&lt;/p>
&lt;h3 id="granary-v110-aggiunge-supporto-per-eventi-video-nip-71">Granary v11.0 aggiunge supporto per eventi video NIP-71&lt;/h3>
&lt;p>&lt;a href="https://github.com/snarfed/granary/releases/tag/v11.0">Granary v11.0&lt;/a> è la libreria di conversione multi-protocollo che alimenta il bridging cross-network di Bridgy Fed. Il modulo Nostr ottiene tre modifiche visibili. &lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> eventi video (atti 21, 22, 34235 e 34236) ora convertiti in note ActivityStreams 1 con allegati video, e il convertitore estrae l&amp;rsquo;immagine &lt;code>imeta&lt;/code> (thumbnail), la durata del video, il tag &lt;code>published_at&lt;/code>, e il tag ZXQ Sul lato API, &lt;code>sign&lt;/code> viene rinominato &lt;code>hash_and_sign&lt;/code> e &lt;code>verify&lt;/code> ora solleva &lt;code>ValueError&lt;/code> sul guasto; il costruttore &lt;code>Nostr&lt;/code> solleva &lt;code>ValueError&lt;/code> su un URL di relè non valido e &lt;code>Nostr.query&lt;/code> Una correzione di conversione di follow-up si blocca quando un oggetto Nostr &lt;code>article&lt;/code> arriva senza &lt;code>id&lt;/code>. Qualsiasi ponte o lettore che consumano eventi video NIP-71 attraverso Granary può ora esporli nel formato che il lettore di destinazione si aspetta.&lt;/p>
&lt;h3 id="nostr-relay-v00244-aggiunge-un-backend-firestore">Nostr-relay v0.0.244 aggiunge un backend Firestore&lt;/h3>
&lt;p>&lt;a href="https://github.com/mattn/nostr-relay/releases/tag/v0.0.244">mattn/nostr-relay v0.0.244&lt;/a> aggiunge un backend Firestore tramite &lt;a href="https://github.com/mattn/nostr-relay/pull/12">PR #12&lt;/a>, estendendo lo strato di archiviazione del relè Go con un&amp;rsquo;opzione Google Cloud Firestore accanto ai suoi backend esistenti. Il cambiamento è piccolo ma apre Firestore come opzione di database gestita senza server per un operatore di relè.&lt;/p>
&lt;h3 id="manent-v140-corregge-nip-42-auth-e-aggiunge-flussi-di-clipboard-media">Manent v1.4.0 corregge NIP-42 AUTH e aggiunge flussi di clipboard media&lt;/h3>
&lt;p>[Manent v1.4.0] (&lt;a href="https://github.com/dtonon/manent/releases/tag/v1.4.0">https://github.com/dtonon/manent/releases/tag/v1.4.0&lt;/a>) è l&amp;rsquo;app di archiviazione crittografata costruita su Nostr con la crittografia [NIP-44] (/it/topics/nip-44/) e [ZXQ000QXZ] (ZXQ000QXX) Il rilascio corregge l&amp;rsquo;autenticazione a relè &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (precedentemente rotto), corregge i caricamenti Blossom agli host &lt;code>http://&lt;/code> (precedentemente maltrattati), e riscrive il flusso di compressione. Sul lato dei supporti, gli utenti possono ora copiare un&amp;rsquo;immagine sul clipboard, incollare un&amp;rsquo;immagine dal clipboard, trascinare e rilasciare file, ritagliare e ruotare immagini, riprodurre video e gif, e prendere un video con una lunga pressione sull&amp;rsquo;icona della fotocamera. Su Linux, il clipboard primario è accessibile tramite mouse middle-click. Il caricamento e lo scorrimento delle note ricevono diverse ottimizzazioni.&lt;/p>
&lt;h3 id="routstrd-v037-rende-levento-nostr-memorizzare-la-fonte-persistente-di-verità">Routstrd v0.3.7 rende l&amp;rsquo;evento Nostr memorizzare la fonte persistente di verità&lt;/h3>
&lt;p>&lt;a href="https://github.com/routstr/routstrd/releases/tag/v0.3.7">Routstrd v0.3.7&lt;/a> è il daemon locale per la rete di inferenza AI decentralizzata Routstr, che tratta le richieste LLM tramite Nostr tipo 38421 provider di scoperta e recensioni tipo 38425 LGTM. Il rilascio aggiunge un sottocomando &lt;code>routstrd update&lt;/code> che scarica nuovi binari sia per routstrd che per cocod e riavvia con grazia i daemon in esecuzione; il daemon ora chiama &lt;code>refreshNostrEvents()&lt;/code> all&amp;rsquo;avvio e ogni 21 minuti in modo da la scoperta e le recensioni dei fornitori rimangono fresche senza intervento manuale. Il bundle &lt;code>@routstr/sdk&lt;/code> aggiorna da 0.3.12 a 0.3.15, rimuovendo lo strato ProviderRegistry in favore dell&amp;rsquo;uso diretto &lt;code>DiscoveryAdapter&lt;/code>, pulendo i modelli da provider Nostr scomparsi in modo da non trapelare più nelle classifiche, e trattando il negozio di eventi Nostr come fonte persistente di verità (l&amp;rsquo;erroneo 210-minuto TTL sugli eventi cached è andato). La gestione del rimborso Xcashu stringe: i token di rimborso sono provati prima che gli originali nel percorso di errore, la riprovazione di 404s 3× con intervalli di due minuti, e 425 Too Early viene gestito senza gettare.&lt;/p>
&lt;h3 id="nymchat-101-lancia-come-app-progressive-web-su-nip-17">Nymchat 1.0.1 lancia come app Progressive Web su NIP-17&lt;/h3>
&lt;p>[Nymchat 1.0.1] (&lt;a href="https://github.com/Spl0itable/NYM">https://github.com/Spl0itable/NYM&lt;/a>) (noto anche come NYM, Nostr Ynstant Messenger) è un Progressive Web App e nativo iOS / Android messenger per chat effimera su Nostr, pontificato con Bitchat. I canali utilizzano eventi effimeri tipo 20000 per canali geohash e tipo 23333 per canali nominati; messaggi privati e chat di gruppo cavalcare &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> eventi dotati (tipo 1059) con chiavi a destinatario effimeri rotanti e recupero post-compromesso automatico. Gli utenti possono generare un keypair ephemeral per sessione senza registrazione o log-in con un&amp;rsquo;identità persistente tramite &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> estensioni del browser, un &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> segnale remoto, o un nsec. La crittografia opzionale dell&amp;rsquo;identità del dispositivo-local utilizza password, PIN, password o sblocco biometrico tramite WebAuthn PRF (passkey e biometrico) o PBKDF2 (password e PIN), con la chiave di testo normale non scritta mai su disco mentre la crittografia è attiva. Le chiamate vocali e video utilizzano i pacchetti regalo NIP-17 per la segnalazione e WebRTC per il percorso dei media. Le reazioni dei messaggi usano &lt;a href="https://github.com/nostr-protocol/nips/blob/master/25.md">NIP-25&lt;/a>, l&amp;rsquo;uso di emoji personalizzato &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a>, e l&amp;rsquo;applicazione web viene servita come file statici e Cloudflare Pages Funzioni che agiscono come proxy di privacy per relè e media.&lt;/p>
&lt;h2 id="21meetup-110-lancia-i-distintivi-di-presenze-firmati-nostr">21Meetup 1.1.0 lancia i distintivi di presenze firmati Nostr&lt;/h2>
&lt;p>&lt;a href="https://github.com/louisthecat86/Einundzwanzig-Meetup-App">21Meetup 1.1.0&lt;/a> è un app Flutter per la comunità tedesca Einundzwanzig Bitcoin che registra la frequenza di incontro tramite tag NFC e codici QR rolling. Ogni badge di frequenza è un evento Nostr (kind 21000) firmato dall&amp;rsquo;organizzatore di incontri utilizzando BIP-340 Schnorr, quindi un partecipante accumula una serie di eventi firmati che attestano incontri specifici a specifiche altezze di blocco. Il codice QR rotante ruota ogni 10 secondi, quindi un badge non può essere coniato da remoto, e il tag NFC è leggibile solo in prossimità fisica. Un punteggio di fiducia viene calcolato localmente dai distintivi raccolti; il punteggio può essere presentato come un codice QR per la verifica durante i trade peer-to-peer. L&amp;rsquo;app si rivolge alla reputazione della comunità Bitcoin, non a livello generale Nostr social, ma gli eventi distinti sono eventi ordinari Nostr che qualsiasi lettore può verificare.&lt;/p>
&lt;h3 id="nostrord-v200-e-v210-piegare-la-piscina-di-relè-e-guarire-zombie-websockets">Nostrord v2.0.0 e v2.1.0 piegare la piscina di relè e guarire zombie WebSockets&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.0.0">Nostrord v2.0.0&lt;/a> è un taglio importante della KMP/WASM Il client Nostr che parla NIP-29, NIP-42, NIP-44, NIP-46, NIP-57, NIP-65 e NIP-98.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.1.0">v2.1.0&lt;/a> seguito il 7 luglio con la &amp;ldquo;rimozione della piscina&amp;rdquo; (&lt;a href="https://github.com/nostrord/nostrord/pull/176">PR #176&lt;/a>), che unifica la presa di relè concentrata NIP-29 precedentemente separata nella piscina condivisa. Un programma di ricollegamento ora copre tutti i relè, &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> La firma di AUTH è delimitata con la riprovazione, pubblica il fallimento chiuso e riprova sulle razze di richiesta-scarica richiesta in &lt;code>requestPrivateGroupData&lt;/code> e &lt;code>fetchGroupPreviews&lt;/code> sono chiusi, tipo-10009 utente-gruppo-elenco di fetches batch per relx Le modifiche laterali dell&amp;rsquo;interfaccia utente sostituiscono la riga &amp;ldquo;Sending&amp;hellip;&amp;rdquo; con un&amp;rsquo;icona in linea di controllo dell&amp;rsquo;orologio e si trasformano in una riga di riprova esplicita. &lt;a href="https://github.com/nostrord/nostrord/pull/179">PR #179&lt;/a> è atterrato lo stesso giorno per rilevare zombie WebSockets su Android: reti mobili e modalità Doze uccidere TCP senza una cornice chiusa, così scrive nel buffer socket morto localmente senza gettare e &lt;code>isConnected()&lt;/code> rimane vero anche se nulla sarà mai ricevuto. &lt;code>NostrGroupClient&lt;/code> ora timbra &lt;code>lastInboundAtMs&lt;/code> su ogni frame, acquisisce &lt;code>markDead()&lt;/code> (che cancella il frame loop in modo che il normale ricollegamento e resubscribe path run), e &lt;code>probeLiveness()&lt;/code> (un REQ qualsiasi relè deve rispondere entro 5 secondi), attivato su OK timeout con zero frame inbound o su mux stale plus socket frame Silence. &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v2.1.1">v2.1.1&lt;/a> spedito un giorno dopo via &lt;a href="https://github.com/nostrord/nostrord/pull/178">PR #178&lt;/a> aggiungendo effetti della piattaforma iOS, supporto di test nativo e icone app accanto al lavoro v2.1.0 zombie-WebSocket.&lt;/p>
&lt;hr>
&lt;h2 id="cambiamenti-inediti">Cambiamenti inediti&lt;/h2>
&lt;h3 id="rust-nostr-aggiunge-la-scadenza-nip-40-alla-confezione-regalo-e-ai-costruttori-privati-di-dm">rust-nostr aggiunge la scadenza NIP-40 alla confezione regalo e ai costruttori privati di DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1384">rust-nostr fuso PR #1384&lt;/a> aggiungendo un&amp;rsquo;opzione &lt;code>expiration&lt;/code> a &lt;code>GiftWrapBuilder&lt;/code> e &lt;code>PrivateDirectMessageBuilder&lt;/code>. La libreria prende un &lt;code>Duration&lt;/code> dal chiamante: il tag di scadenza &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a> è ancorato al pacchetto regalo randomizzato &lt;code>created_at&lt;/code> (created at + durata), che lo decouples dal tempo reale di invio. Lasciare un caller passare un timestamp assoluto trapelare il tempo di invio a un osservatore di relè (sottotrarre la durata e recuperare il tempo di invio originale), in modo che la libreria costruisce il tag internamente dal timestamp di involucro randomizzato. Il tag di scadenza va sull&amp;rsquo;evento del pacchetto regalo, non sul tipo: 13 sigillo (che &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> richiede di avere tag vuoti). NIP-17 consegna lo stesso valore fino al costruttore di pacchetti regalo di &lt;code>PrivateDirectMessageBuilder&lt;/code>. Il cambiamento si chiude &lt;a href="https://github.com/rust-nostr/nostr/issues/1381">problema #1381&lt;/a> e atterra attraverso lo stesso modello di costruttore rust-nostr utilizza per &lt;code>extra_tags&lt;/code>. rust-nostr si unì anche &lt;a href="https://github.com/rust-nostr/nostr/pull/1387">PR #1387&lt;/a> consolidando &lt;code>nostr-relay-builder&lt;/code> in &lt;code>nostr-sdk&lt;/code>, una mossa di workspace-flattening.&lt;/p>
&lt;h3 id="amethyst-trascorre-la-settimana-indurendo-la-sincronizzazione-negentropia-e-aggiungendo-la-ricerca-nip-50">Amethyst trascorre la settimana indurendo la sincronizzazione negentropia e aggiungendo la ricerca NIP-50&lt;/h3>
&lt;p>Amethyst &lt;a href="https://github.com/vitorpamplona/amethyst">fermello principale&lt;/a> ha unito 43 PR in tre temi coerenti. Il filetto più grande è negentropy sincronizza sul limite geode-to-strfry: una modalità di guasto rifiutata che ha usato per tempestare il cliente in un loop di finestra-split ora torna in modo pulito (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3480">PR #3480&lt;/a>), la dipendenza &lt;code>negentropyKmp&lt;/code> si sposta a v1.1.1 ([PR #3475](ZXQ000Q000Q Le collezioni concorrenti senza serrature sostituiscono il precedente modello mutex-per-relè e un UDP socket fix cavalca lungo (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3459">PR #3459&lt;/a>).&lt;/p>
&lt;p>Il secondo thread è &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> infrastruttura di ricerca full-text. Un&amp;rsquo;interfaccia &lt;code>SearchableEvent&lt;/code> atterra in modo che gli eventi possono trasportare i metadati indice direttamente (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3452">PR #3452&lt;/a>) e le estensioni di ricerca NIP-50 sono ora spogliate prima di querying SQLite FTS in modo che il motore di ricerca locale non singhiozzi più sulla sintassi dell&amp;rsquo;estensione lato server (&lt;a href="Z">PR #3464&lt;/a>. I relè di ricerca predefinito vengono centralizzati ([PR #3446] (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3446%29%29">https://github.com/vitorpamplona/amethyst/pull/3446))&lt;/a>.&lt;/p>
&lt;p>Il terzo thread è l&amp;rsquo;integrazione del protocollo per i verticali di nicchia. Il supporto per gli eventi di bird-detection Birdstar (kind 2473) raggiunge un client Android (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3473">PR #3473&lt;/a> e gli stati di salvataggio della scheda di memoria PS1 possono essere pubblicati come eventi firmati sul tipo 38192 (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3482">PR #3482&lt;/a>). Arrotondando la settimana: una impostazione di scrittura auto-applica il testo personalizzato ai messaggi (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3450">PR #3450&lt;/a>), la visualizzazione delle notifiche desktop viene ridisegnata con i toast nativi del sistema operativo e un filtro condiviso (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3457">PR #3457&lt;/a>), la colonna dei messaggi raccoglie un blocco della privacy ([PR #3432](ZXQ000&lt;/p>
&lt;h3 id="buzz-continua-ad-indurire-il-relè-e-definisce-il-tipo-44200-per-le-metriche-di-svolta-dellagente">Buzz continua ad indurire il relè e definisce il tipo 44200 per le metriche di svolta dell&amp;rsquo;agente&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/buzz">Buzz&lt;/a> (il progetto precedentemente chiamato Sprout) ha atterrato 123 PR si è fuso nella finestra dal 1 luglio al 7 luglio. Due fili portano la maggior parte del peso. Il primo è un nuovo tipo di evento per la telemetria dell&amp;rsquo;agente: [PR #1441] (&lt;a href="https://github.com/block/buzz/pull/1441">https://github.com/block/buzz/pull/1441&lt;/a>) definisce le metriche di rotazione dell&amp;rsquo;agente crittografato di NIP-AM durevoli come 44200, che atterrano la telemetria come evento firmato gli archivi di relè dell&amp;rsquo;utente, mantenendo metriche sull&amp;rsquo;infrastruttura di proprietà dell&amp;rsquo;utente. Un archivio locale per il tipo segue (&lt;a href="https://github.com/block/buzz/pull/1555">PR #1555&lt;/a>), il percorso di rimozione è fatto atomico (&lt;a href="https://github.com/block/buzz/pull/1562">PR #1562&lt;/a>), e il nome del modello è filettato attraverso il percorso di emissione in modo che i lettori a valle possano distinguere quale modello prodotto che gira (&lt;a href="https://github.com/block/buzz/pull/1564">PR #1564&lt;/a>.&lt;/p>
&lt;p>Il secondo thread è le prestazioni del relè. La spedizione post-commissione è differita e viene evitato un clone di verifica (&lt;a href="https://github.com/block/buzz/pull/1453">PR #1453&lt;/a>), i viaggi rotondi DB ingeriti e fan-out sono in batch con gocce di ack misurate di p99 del 7 al 16 per cento e gocce di coda di p999 del 29 al 53 per cento rispetto alla punta precedente ([PR #1454] (ZXQ0001QXQXQXQ))) Oltre al lavoro perf, un set di icone dello spazio di lavoro per comunità che gli amministratori configurano e il relè serve tramite &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> estende il documento di informazioni di NIP-11 con una superficie di personalizzazione per comunità (&lt;a href="https://github.com/block/buzz/pull/1463">PR #1463&lt;/a>), i proprietari di agenti possono eliminare i messaggi del loro agente in corrispondenza&lt;/p>
&lt;h3 id="divine-video-collega-la-verifica-della-firma-del-relè-e-unestrazione-nostrconnect">Divine Video collega la verifica della firma del relè e un&amp;rsquo;estrazione NostrConnect&lt;/h3>
&lt;p>L&amp;rsquo;applicazione mobile di Divine Video (&lt;a href="https://github.com/divinevideo/divine-mobile">https://github.com/divinevideo/divine-mobile&lt;/a>) ha unito 97 PR nella finestra, e il thread di Nostr-facing è l&amp;rsquo;indurimento del limite di fiducia più la pulizia dell&amp;rsquo;autenticazione. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/5774">PR #5774&lt;/a> verifica le firme degli eventi di relè in entrata, chiudendo una classe di bug trust-in-the-relay; &lt;a href="https://github.com/divinevideo/divine-mobile/pull/5828">PR #5828&lt;/a> crittografa il token di spinta FCM nel tipo di evento di deregistrazione tipo di tipo di tipo di 3080, in modo che il dispositivo dell&amp;rsquo;utente token di token di token di token di cancellazione si blocca appare in chiaro Sul lato di autenticazione, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/5826">PR #5826&lt;/a> estrae una &lt;code>NostrConnectCoordinator&lt;/code> per il flusso &lt;code>nostrconnect://&lt;/code>, pulendo il &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> percorso di codice del bunker inizializzato del client prima di un più ampio refattore auth tracciato sotto [problema #4741](ZXQ000QXQ&lt;/p>
&lt;h3 id="zap-cooking-corregge-il-login-del-bunker-nip-46-e-aggiunge-la-ricerca-della-ricetta-nip-50">Zap Cooking corregge il login del bunker NIP-46 e aggiunge la ricerca della ricetta NIP-50&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking frontend&lt;/a> ha unito 18 PR nella finestra lungo un tema: rendere le superfici Nostr auth recuperare dal fallimento. &lt;a href="https://github.com/zapcooking/frontend/pull/503">PR #503&lt;/a> corregge il login del bunker con un handshake di connessione esplicita, la gestione di authUrl e la navigazione degli errori in modo che un utente che collega un segnale esterno veda un messaggio di errore reale sul fallimento in cui il taglio precedente ha appeso la schermata di login. Un filetto di funzionalità separato atterra NIP-50 ricerca di ricette full-text tramite il retro del relè di ricerca dei nostrirchives (&lt;a href="https://github.com/zapcooking/frontend/pull/483">PR #483&lt;/a>), lasciando un&amp;rsquo;interrogazione utente ricette attraverso il relè corpus senza un indice client-side. Contenuti-rendering polacco navi insieme: contenuto citato-nota e media ora si espongono direttamente nella nota principale sostituendo il precedente fallback sepolto-link (&lt;a href="https://github.com/zapcooking/frontend/pull/491">PR #491&lt;/a>), le anteprime del link e il terreno di dimensionamento dell&amp;rsquo;hashtag (&lt;a href="https://github.com/zapcooking/frontend/pull/492">PR #492&lt;/a>), le domande di ricerca multi-parola funzionano ([PR #482](X&lt;/p>
&lt;h3 id="swift-nostr-client-v060-progredisce-verso-un-primo-taglio-stabile">swift-nostr-client v0.6.0 progredisce verso un primo taglio stabile&lt;/h3>
&lt;p>&lt;a href="https://github.com/yysskk/swift-nostr-client">yysskk/swift-nostr-client&lt;/a> spedito &lt;a href="https://github.com/yysskk/swift-nostr-client/releases/tag/0.6.0">v0.6.0&lt;/a> insieme a 30 PR unite. La libreria Swift Nostr si avvicina ad una prima superficie stabile API per i client Swift Nostr che evitano di collegare gli strumenti MDK o MarmotKit.&lt;/p>
&lt;h3 id="nostr-applet-protocol-naps-stringe-nap-outbox-routing-e-fanout">Nostr Applet Protocol (NAPS) stringe NAP-OUTBOX Routing e Fanout&lt;/h3>
&lt;p>NAPS ha avuto una settimana di pulizia significativa, soprattutto in &lt;a href="https://github.com/napplet/naps/pull/32">NAP-OUTBOX&lt;/a>. L&amp;rsquo;intestazione è confini più stretti: meno routing controllato dal chiamante, meno dettagli del relè trapelato, e una forma di risultato evento condivisa che può trasportare suggerimenti relè e sidecar delle risorse, digitando &lt;a href="https://github.com/napplet/naps/pull/80">NAP-RESOURCE&lt;/a>. Anche la pubblicazione è più chiara: regole esplicite di outbox, inbox e relay fanout. Effetto netto: meno ambiguità, migliore interoperabilità.&lt;/p>
&lt;h3 id="napplet-toolchain-tightens-protocol-alignment-and-ships-its-cli">Napplet Toolchain Tightens Protocol Alignment and Ships its CLI&lt;/h3>
&lt;p>Questa settimana, i pacchetti di Napplet si sono spostati da “utile SDK” verso una catena di strumenti di protocollo più stretta. La grande storia è allineamento con le specifiche NAP dal vivo: &lt;a href="https://github.com/napplet/web/pull/104">NAP-COUNT query support&lt;/a>, &lt;a href="https://github.com/napplet/web/pull/112">Il ciclo di vita runtime di OutBOX&lt;/a>, e &lt;a href="https://github.com/napplet/web/pull/108">RelayEventResult sidecars&lt;/a> tutte atterrate, rendendo le letture e gli abbonamenti più precisi. Diversi domini sono stati affinati anche: supporto del registro CVM, buste di errore DM, contesto di sessione MEDIA, campi di conteggio LISTS, risultati del profilo COMMON e lo schema htree: RESOURCE. Su tooling, il nuovo &lt;a href="https://github.com/napplet/web/pull/103">@napplet/cli&lt;/a> è una pietra miliare importante, aggiungendo la scoperta della configurazione, implementando la pianificazione, firmando, caricamenti Blossom e la generazione manifesta. Infine, il &lt;a href="https://github.com/napplet/web/pull/127">preludio shim iniettabile host&lt;/a> e &lt;a href="https://github.com/napplet/web/pull/145">lavoro di prontezza JSR&lt;/a> hanno reso lo stack piÃ1 facile da iniettare, pubblicare e verificare.&lt;/p>
&lt;h3 id="primal-android-estende-la-superficie-del-segnale-remoto">primal-android estende la superficie del segnale remoto&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha unito 18 PR nella finestra. Sul lato Nostr, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1075">PR #1075&lt;/a> implementa i metodi &lt;code>switch_relays&lt;/code> e &lt;code>logout&lt;/code> per il ruolo del segnale remoto dell&amp;rsquo;app, estendendo la superficie del segnale NIP-46 di Primal. Il resto è UI lucidare attraverso la barra superiore e inferiore Home, Esplora suggerimenti e la schermata del profilo.&lt;/p>
&lt;h3 id="wisp-aggiunge-un-commutatore-multi-account-e-test-di-parser-blossom">Wisp aggiunge un commutatore multi-account e test di parser Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> ha unito 9 PR. &lt;a href="https://github.com/barrydeen/wisp/pull/604">PR #604&lt;/a> aggiunge un switcher multi-account con un percorso di cancellazione esplicito sul flusso del conto aggiuntivo.&lt;/p>
&lt;h3 id="tao-e-wired-sollevano-il-segnale-pow-a-21-bit-e-le-radici-di-superficie-fresca-pow">TAO e Wired sollevano il segnale PoW a 21 bit e le radici di superficie fresca-PoW&lt;/h3>
&lt;p>&lt;a href="https://github.com/smolgrrr/TAO">smolgrrr/TAO&lt;/a> e &lt;a href="https://github.com/smolgrrr/Wired">smolgrr/Wired&lt;/a> (lo stesso set di commit è atterrato in entrambe le repos) ha unito 13 PR. Questo è il secondo client Nostr questa settimana per appoggiarsi su NIP-13 come filtro di prima classe per il contenuto generato dall&amp;rsquo;utente, che completa il PoW canalizzato di Bitchat.&lt;/p>
&lt;h3 id="keep-android-lucida-nip-46-ux-e-atterra-una-correzione-toctou">keep-android lucida NIP-46 UX e atterra una correzione TOCTOU&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">privkeyio/keep-android&lt;/a> spedito &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.1.5">v1.1.5&lt;/a> insieme a 13 PR fusi, poi &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.1.6">v1.1.6&lt;/a> l'8 luglio pinning the sottostante mantenere il nucleo di v0.5.0. Keep è una volta mobile (copertaX29 v1.1.5 era UX polish sul flusso di sfida &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>. v1.1.6 chiude una gara di check-then-set (TOCTOU) in &lt;code>set_active_share&lt;/code> dalla cassa di mantenimento sottostante, supera l&amp;rsquo;URL e il metodo che sono autorizzati sul &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> HTTP-auth richiesta di approvazione in modo che un utente possa vedere quello che stanno firmando e commuta l&amp;rsquo;errore ZXQ0014QXXXXXXXZturn Un test strumentato copre l&amp;rsquo;interruttore di eliminazione del flusso di approvazione NIP-55. Le caratteristiche CLI v0.5.0 che sono arrivate con il rilascio sottostante (threshold-OPRF sbloccare, software DKG, HD FROST portafogli) non sono ancora in superficie nell&amp;rsquo;applicazione Android; v1.1.6 fornisce solo le correzioni di sicurezza.&lt;/p>
&lt;h3 id="heartwood-spedisce-il-ponte-di-firma-relay-to-serial">Heartwood spedisce il ponte di firma relay-to-serial&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/heartwood/releases/tag/v0.7.0">forgesworn/heartwood v0.7.0&lt;/a> atterra il ponte di firma relay-to-serial che è stato in volo la scorsa settimana, cablaggio del piano dati HSM-mode per Bray&amp;rsquo;s serial-signer path &lt;a href="https://github.com/forgesworn/heartwood/pull/11">PR #11&lt;/a> è il ponte stesso, [PR #13](XQXQXQX000&lt;/p>
&lt;h3 id="safebox-pubblica-un-report-sul-progresso-di-fase-3-e-un-runbook-della-prigione-freebsd">SafeBox pubblica un report sul progresso di Fase 3 e un runbook della prigione FreeBSD&lt;/h3>
&lt;p>&lt;a href="https://github.com/trbouma/safebox">SafeBox&lt;/a> è una volta di dati portatile privata su Nostr che combina [NIP-47] (/it/topics/nip-47/) Nostr Wallet Connect, nAuth, nembed, e trasferimento di record via relè su QR e NFC in un servizio gestibile dall&amp;rsquo;operatore. A &lt;a href="https://github.com/trbouma/safebox/blob/main/docs/PROGRESS-REPORT-2026-07.md">July 2026 progress report&lt;/a> pubblicato il 6 luglio segna la Fase 3 come sostanzialmente completa: 49 commit sono atterrati dal rapporto di aprile, portando il repository a 1,136 commit, e i quattro impegni di ingegneria di Fase 3 (indurire gli esperimenti di Fase 2, sostenere istanze interoperabili, preparare per scala, aggiungere la disciplina di prodotto commerciale) sono ampiamente forniti. Il rapporto inquadra il prossimo passo come pilota delimitato, e rivela che un fornitore di telecomunicazioni sotto NDA sta esplorando un pilota di registri sanitari su SafeBox.&lt;/p>
&lt;p>Il concreto Nostr-facing lavoro è atterrato in precedenza in Fase 3 ed è riassunto nel rapporto: mutando le azioni NWC sono ora in coda per evitare le razze di prova, Lightning fallito fonde protegge le prove prima di tornare, NWC ascoltatori di lunga durata aggiorna proattivamente in modo che una sessione sopravviva alla sua soglia di idle; il comportamento precedente è stato uno stallone ZXX Lo scambio record di QR e NFC ha ottenuto una specifica di flusso unificata che copre le modalità di presentazione, rappresentate dal mittente, e cross-device con la più chiara gestione KEM (Key Encapsulation Mechanism) e la riproduzione di protezione attraverso la libreria Open Quantum Safe. Il commit in-window è &lt;a href="https://github.com/trbouma/safebox/commit/6866dae">&lt;code>6866dae&lt;/code>&lt;/a>, che aggiunge un &lt;a href="https://github.com/trbouma/safebox/blob/main/docs/devops/freebsd-jail-from-scratch.md">FreeBSD dispiegamento della prigione e liboq costruiscono runbook&lt;/a> accanto a una &lt;a href="https://github.com/trbouma/safebox/blob/main/docs/devops/SAFEBOX-FREEBSD-APPLIANCE-SPEC.md">specificazione dell&amp;rsquo;apparecchio FreeBSD&lt;/a>, che documenta le istantanee ZFS, l&amp;rsquo;isolamento del jail&lt;/p>
&lt;p>Il rapporto annuncia inoltre [OpenETR] (&lt;a href="https://github.com/trbouma/openetr">https://github.com/trbouma/openetr&lt;/a>) come un spin-off distinto che applica l&amp;rsquo;architettura crittografica-control-plus-portable-records di SafeBox ai record trasferibili elettronici: fatture di lading, ricevute di magazzino, note promissory e certificati. Il repo di OpenETR ha visto 7 commit il 7 luglio compreso &lt;a href="https://github.com/trbouma/openetr/commit/ea612a9">&lt;code>ea612a9&lt;/code>&lt;/a> che separa l&amp;rsquo;attestazione dal core record, &lt;a href="https://github.com/trbouma/openetr/commit/ca153a3">&lt;code>ca153a3&lt;/code>&lt;/a> sulla gestione dei mandati contro gli effetti, e &lt;a href="ZXQ0006QX">&lt;code>ba84b61&lt;/code>&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="protocollo-lavoro-e-aggiornamenti-nip">Protocollo lavoro e aggiornamenti NIP&lt;/h2>
&lt;h3 id="merged-nip-51-e-nip-37-allineano-il-nome-tipo-10013">Merged: NIP-51 e NIP-37 allineano il nome tipo 10013&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2404">PR #2404&lt;/a> è una soluzione di consistenza solo prosa. In &lt;a href="https://nostrcompass.org/it/topics/nip-37/">NIP-37&lt;/a>, il tipo 10013 è chiamato &lt;code>Relay List for Private Content&lt;/code>; in [NIP-51] (/it/topics/nip-51/) sotto &lt;code>Draft relays&lt;/code>, lo stesso tipo è stato descritto con parole diverse. NIP-51 utilizza ora il nome NIP-37 per lo stesso tipo di evento. Nessun cambiamento di comportamento del filo e nessun nuovo tag semantics; il valore è che NIP-51 è la spec dell&amp;rsquo;ombrello per gli eventi a forma di lista e NIP-37 è il follow-up del contenuto privato e il nome sallineato tra i due rende facile da perdere che descrivono lo stesso tipo.&lt;/p>
&lt;h3 id="aperto-nip-ad-nostr-web-indirizzi-tramite-la-ricerca-ben-nota">Aperto: NIP-AD Nostr Web Indirizzi tramite la ricerca ben nota&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2406">PR #2406&lt;/a> si apre come il successore di un PR chiuso #2393 con una bozza di spec completa a &lt;a href="https://github.com/nostr-protocol/nips/blob/2f4b09335c54a993d483bc220195e3f4a33df1ec/AD.md">&lt;code>AD.md&lt;/code>&lt;/a>. NIP-AD definisce gli URL web che portano una controparte Nostr opzionale. Un client che vede un URL come &lt;code>https://golf.com/players&lt;/code> richiede &lt;code>https://golf.com/.well-known/nostr.json?ad=/players&lt;/code>, che restituisce un percorso di mappatura degli oggetti JSON a coppie &lt;code>{filter, relays}&lt;/code>. Il filtro restituito è un filtro standard NIP-01 (generi, autori, &lt;code>#d&lt;/code>, &lt;code>limit&lt;/code>, ecc.), e i nomi di array relays che relays il client dovrebbe query. Con &lt;code>&amp;quot;limit&amp;quot;: 1&lt;/code> l&amp;rsquo;URL si risolve in un singolo evento; senza di esso, in un elenco. In un normale browser web l&amp;rsquo;URL rende HTML come qualsiasi altro URL, quindi lo stesso dominio può servire utenti web e clienti Nostr da un percorso canonico. I casi di utilizzo indicati includono &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> nomi di gruppo che risolvano ad un evento di tipo 39000 su un relè specifico (rimozione della necessità di un&amp;rsquo;agricoltura di gruppo id), &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A&lt;/a> nsite lookups, feed ospitati che pubblicano un filtro &lt;code>{&amp;quot;ids&amp;quot;: [...]}&lt;/code>, rendering nativo di eventi Il riuso &lt;code>.well-known/nostr.json&lt;/code> più il layout path-as-object-key è scelto in modo che il risolutore possa essere un file statico.&lt;/p>
&lt;h3 id="aperto-nip-86-gestione-del-reclamo-per-i-codici-di-invito">Aperto: NIP-86 gestione del reclamo per i codici di invito&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2408">PR #2408&lt;/a> propone l&amp;rsquo;aggiunta di tre metodi a &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a>: &lt;code>listclaims&lt;/code> (parami &lt;code>[]&lt;/code>, restituisce una serie di &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> codici di invito), ZXQ000Q000 Oggi NIP-86 permette ad un amministratore relè di gestire gli utenti e gli incarichi di ruolo, ma non ha una superficie di codice invito. Il caso di utilizzo dell&amp;rsquo;autore PR è onboarding community-relay: un amministratore crea un codice di invito associato a un ruolo, raccoglie il pagamento prima che l&amp;rsquo;identità dell&amp;rsquo;utente sia creata, consegna il codice di invito all&amp;rsquo;utente, e un robot ascolta per il tipo risultante 28935 evento di rivendicazione sul relè e auto-assegna il ruolo. I tre metodi permettono che il flusso avvenga interamente attraverso la gestione del relè RPC.&lt;/p>
&lt;h3 id="aperto-colore-del-ruolo-come-h-s-l-tuple">Aperto: colore del ruolo come (h, s, l) tuple&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2402">PR #2402&lt;/a> cambia il formato di colore del ruolo in &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> da un singolo valore &lt;code>hue&lt;/code> (0 a 360) a una tupla di &lt;code>hue&lt;/code> (0 a 360), &lt;code>saturation&lt;/code> (0 a 1), e &lt;code>lightness&lt;/code> (0 a 1). Le stringhe vuote sono consentite per qualsiasi componente in modo che i clienti possano fornire i propri default per una tavolozza coerente, e il testo spec raccomanda di fornire solo &lt;code>hue&lt;/code> a meno che non si desideri un colore specifico come l&amp;rsquo;argento. I filetti di cambiamento attraverso NIP-86 nello stesso PR: &lt;code>createrole&lt;/code> e &lt;code>editrole&lt;/code> ora prendere &lt;code>[id, label, description, [h, s, l], order]&lt;/code>; la firma precedente ha portato un parametro a singolo colore nella stessa slot. La motivazione è che l&amp;rsquo;hue da solo costringe i clienti a scegliere saturazione e leggerezza per l&amp;rsquo;operatore, così diversi clienti rendono lo stesso ruolo a intensità visibilmente diverse.&lt;/p>
&lt;h3 id="open-nip-80-comprovata-provenienza-dei-media">Open: NIP-80 comprovata provenienza dei media&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2409">PR #2409&lt;/a> apre NIP-80, formato evento per la provenienza dei media ancorata nell&amp;rsquo;hardware di cattura. Una fotocamera firma ogni foto al momento della cattura e pubblica la prova per relè keyed dal contenuto stesso, quindi la verifica sopravvive a metadati stripping, re-hosting e takedown della piattaforma. La proposta definisce sei nuovi tipi di eventi: tipo 1080 per le attestazioni di cattura, tipo 1081 per le attestazioni di derivazione che coprono le operazioni di ridimensionamento, coltura, ricompressione o riformulazione (con modalità di rivelazione o opzione zero-knowledge), tipo 1082 per le revocazioni (eventi normari, permanenti, auto-scoped, monotonici), tipo 11080 per gli annunci di dispositivo, tipo 31080 per le suddivisioni anonimesse e tipo di dispositivo, e tipo sperimentale 31081 per un dispositivo per una specie per un dispositivo per un tipo di attestazioni per un insieme per un tipo sperimentale per un tipo di attestazioni per un tipo di corrispondenza per un insieme di attestazioni. I primitivi riutilizzati includono NIP-94 &lt;code>x&lt;/code>-tag semantics, &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> &lt;code>imeta&lt;/code>, &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> per la scoperta della revoca, [Blossom](XQX000 Il modello di firma accoppia una chiave di dispositivo BIP-340 con una chiave di ECDSA hardware perché gli elementi di sicurezza tradizionali non producono ancora firme BIP-340 (Microchip ATECC608 supporta P-256, NXP SE050 supporta secp256k1 ma solo moduli ECDSA, TPM 2.0 e Infineon OPTIGA Trust M cover P-256/RSA, Apple SecureBox Pnclave e Android6). L&amp;rsquo;ambito dichiarato esplicitamente non tenta di dimostrare che la scena è reale: un&amp;rsquo;attestazione dimostra che questa immagine esatta è venuta da questo dispositivo a circa questo tempo ed è stata modificata solo in modi dichiarati, provabili, e la specifica vieta ai clienti di collassare i risultati in un distintivo &amp;ldquo;autentico&amp;rdquo;. Un prototipo di lavoro &lt;a href="https://github.com/PrarthanaPurohit/OpenVeilCam">OpenVeilCam&lt;/a>, una fotocamera Rust runtime per Raspberry Pi utilizzando l&amp;rsquo;elemento sicuro ATECC608, è in fase di aggiornamento per pubblicare i tipi di evento proposti insieme a un verificatore standalone.&lt;/p>
&lt;h3 id="aperto-indurimento-paginazione-nip-01">Aperto: Indurimento paginazione NIP-01&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2407">PR #2407&lt;/a> aggiunge una sottosezione &amp;ldquo;Pagination &amp;amp; limit&amp;rdquo; a NIP-01. Le regole concrete: un relè che impone un massimo &lt;code>limit&lt;/code> MUST lo imposta più grande del maggior numero di eventi che condividono un singolo &lt;code>created_at&lt;/code> nel suo database, quindi nessun secondo può riempire una pagina e la paginazione dello stallo. I clienti che riprendono le richieste MUST ripetono con &lt;code>until = oldest&lt;/code> (inclusive) e MUST deduplicate da &lt;code>id&lt;/code> (dal momento che il secondo più vecchio è ri-fetched ogni round), e la paging è completa quando un round non produce nuovi eventi dopo la deduplica. Se una pagina completa ha eventi più vecchi e più recenti che condividono uno &lt;code>created_at&lt;/code>, il client DOVE riprovare che secondo con un &lt;code>limit&lt;/code> più grande, e se il relè blocca il più grande &lt;code>limit&lt;/code> e restituisce ancora una pagina limitata a un secondo, il client DEVE o avanzare con &lt;code>until = oldest - 1&lt;/code> (trattando eventi non recuperati come caduto) o aborti. Normale paging NON impostare &lt;code>limit&lt;/code>; il massimo relè è autorevole, e un valore più piccolo reintroduce la stalla. Aumentare &lt;code>limit&lt;/code> per drenare un secondo bloccato è l&amp;rsquo;unica eccezione. Questo problema è risolto perché un ingenuo &lt;code>since&lt;/code>/&lt;code>until&lt;/code> cursore manca o eventi con timestamp duplicati o li rielaborazione, e l&amp;rsquo;attuale testo NIP-01 non dice a entrambi i lati come sfuggire alla trappola.&lt;/p>
&lt;hr>
&lt;h2 id="nip-deep-dive-nip-13-proof-of-work">NIP Deep Dive: NIP-13 (Proof of Work)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a> definisce un meccanismo di prova di lavoro per gli eventi Nostr. Esiste perché lo spam in stile e-mail è banale per produrre su una rete di relè pubblico: chiunque può generare un keypair e inondare un argomento, e non c&amp;rsquo;è alcun costo economico per evento. NIP-13 permette a un autore di eventi di imporre un costo computazionale per caso che uno spammer dovrebbe pagare in aggregato ma un mittente regolare paga solo una volta per messaggio. I relè e i clienti possono quindi richiedere o preferire eventi che soddisfano una soglia di difficoltà.&lt;/p>
&lt;h3 id="il-meccanismo">Il meccanismo&lt;/h3>
&lt;p>Un autore di eventi sceglie un target di difficoltà espresso in bit e mine l&amp;rsquo;id dell&amp;rsquo;evento (l&amp;rsquo;hash sha256 dell&amp;rsquo;evento serializzato) fino a quando non ha almeno che molti puntali zero. Poiché l&amp;rsquo;ID dell&amp;rsquo;evento include il timestamp &lt;code>created_at&lt;/code>, i tag e il contenuto, l&amp;rsquo;estrazione mineraria richiede di cambiare qualcosa nel corpo dell&amp;rsquo;evento per cercare lo spazio hash. NIP-13 definisce un tag &lt;code>nonce&lt;/code> per esattamente questo scopo:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;nonce&amp;#34;, &amp;#34;&amp;lt;nonce_value&amp;gt;&amp;#34;, &amp;#34;&amp;lt;target_bits&amp;gt;&amp;#34;]
&lt;/code>&lt;/pre>&lt;p>La &lt;code>nonce_value&lt;/code> è qualsiasi stringa che sceglie il minatore; la &lt;code>target_bits&lt;/code> è la difficoltà a cui il minatore si è impegnato. Un verificatore conta i principali zero bit dell&amp;rsquo;evento id e confronta &lt;code>target_bits&lt;/code>. Lo &lt;code>target_bits&lt;/code> nel tag è un reclamo, e un verificatore misura l&amp;rsquo;effettivo numero di primo zero dell&amp;rsquo;id per confermarlo.&lt;/p>
&lt;p>Il numero di bit zero leader in un output casuale sha256 segue una distribuzione geometrica: ogni bit aggiuntivo raddoppia il lavoro previsto. 8 bit media 256 hash tentativi, 20 bit media circa un milione, e 28 bit media circa 268 milioni. L&amp;rsquo;obiettivo 8 bit di Bitchat per i messaggi geohash-channel costa sotto un millisecondo di CPU sull&amp;rsquo;hardware moderno e completa sotto qualsiasi latenza percettibile. Il default di TAO e Wired è di circa due milioni di tentativi di hash per post, che è veloce su un computer portatile ma costoso in scala per una fattoria del robot. NIP-13 non richiede una difficoltà; ogni relè e cliente sceglie la propria.&lt;/p>
&lt;h2 id="esempio-evento">Esempio evento&lt;/h2>
&lt;p>Un minimo NIP-13-mined tipo-1 nota sembra:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;000000000e9d97a1ab09fc381030b346cdd7a1a8a6f27c9c88f68c8b9d0f6c8a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1720368000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;nonce&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;72847&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;28&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;hello, this cost me 28 bits of PoW&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b1a5c9c74cff59f8a48e5c3b3d8e1c8e7e2c1d4a8e2b9f7d1c3e8b4f6a2c8d1e9f4b3c7a1d8e5b2f9c6a3d7e1b8f4c9a2d6e3b7f1c8a4d9e2b5f8c1a7d4e6b9f3c2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Lo &lt;code>id&lt;/code> inizia con sette zero esadesi (28 bit zero principali, corrispondenti allo &lt;code>target_bits&lt;/code> nel tag nonce). Il minatore ha variato la &lt;code>nonce_value&lt;/code> &lt;code>72847&lt;/code> fino a quando l&amp;rsquo;id ha raggiunto l&amp;rsquo;obiettivo. Un verificatore hash l&amp;rsquo;evento serializzato e conferma che l&amp;rsquo;id ha almeno 28 bit zero principali, quindi verifica la firma. NIP-13 non aggiunge nuovi campi; aggiunge il tag &lt;code>nonce&lt;/code> e limita il conteggio a zero bit dell&amp;rsquo;id.&lt;/p>
&lt;h3 id="dove-viene-utilizzato">Dove viene utilizzato&lt;/h3>
&lt;p>La versione 1.5.4 di Bitchat utilizza PoW a 8 bit su messaggi geohash-channel tipo 20000: in uscita invia il tag prima di pubblicare e in entrata eventi con convalidato PoW rilassare il limite di assunzione per-sender. TAO e Wired utilizzano PoW a 21 bit come la soglia di default post-segnale e le radici di mangimi di superficie da attività PoW fresca, trattando PoW come segnale di graduazione della linea temporale. &lt;a href="https://github.com/mattn/algia">cagliostr&lt;/a> applica NIP-13 allo strato di relè, rifiutando gli eventi sotto una soglia. NoStrudel espone un&amp;rsquo;impostazione di estrazione client PoW per gli autori che vogliono segnalare il filtraggio dei clienti. Damus e Amethyst calcolano i bit dello zero durante la visualizzazione degli eventi, permettendo a un utente di vedere l&amp;rsquo;impegno PoW sulle note. Coracle espone PoW sia per l&amp;rsquo;estrazione mineraria che per il filtraggio. NDK e nostr-tools espongono PoW ai consumatori di biblioteche.&lt;/p>
&lt;p>La proprietà di progettazione che modella l&amp;rsquo;implementazione di NIP-13 è che PoW è impercettibile: una pretesa di &lt;code>target_bits&lt;/code> conta come prova solo quando l&amp;rsquo;id ha molti zeri principali, e una contraffazione richiede di ridare il lavoro. Questa proprietà consente a Bitchat di utilizzare in entrata PoW come un relax tasso-limite anche quando uno spammer rivendica un&amp;rsquo;alta difficoltà; il controllo è un conteggio hash, non una decisione di fiducia. La proprietà complementare è che PoW non impegna il minatore a qualsiasi specifico pubkey o contenuto; uno spammer può ancora scegliere di mine a 8 bit e masterizzare la computazione, ma la computazione è un costo reale. NIP-13 sposta il problema spam da &amp;ldquo;impossibile&amp;rdquo; a &amp;ldquo;quantificabile&amp;rdquo; e consente ai clienti di impostare il proprio prezzo.&lt;/p>
&lt;hr>
&lt;h2 id="nip-deep-dive-nip-40-expiration-timestamp">NIP Deep Dive: NIP-40 (Expiration Timestamp)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a> definisce un tag &lt;code>expiration&lt;/code> che istruisce un relè e un client che un evento dovrebbe essere considerato scaduto dopo una data timestamp Unix. Esiste perché gli eventi Nostr sono altrimenti permanenti: una volta che un evento firmato atterra su un relè, l&amp;rsquo;unico modo per rimuoverlo è un evento di cancellazione NIP-09, e anche allora un relè può mantenere l&amp;rsquo;originale. NIP-40 permette a un autore di dichiarare in tempo di pubblicazione che un evento è di breve durata, e chiede relè per smettere di servire e clienti per smettere di visualizzarlo dopo il timestamp.&lt;/p>
&lt;h3 id="il-meccanismo-1">Il meccanismo&lt;/h3>
&lt;p>Un autore aggiunge un tag &lt;code>expiration&lt;/code> a un evento:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;expiration&amp;#34;, &amp;#34;&amp;lt;unix_timestamp&amp;gt;&amp;#34;]
&lt;/code>&lt;/pre>&lt;p>Il timestamp è Unix secondi. Un relè MAY rifiuta eventi la cui scadenza è già in passato all&amp;rsquo;ingestione, MAY smettere di servire eventi la cui scadenza è passata, e SHOULD rispettare la scadenza dichiarata dell&amp;rsquo;autore. Un client SHOULD nascondere gli eventi scaduti dall&amp;rsquo;utente. NIP-40 non richiede il relè per eliminare l&amp;rsquo;evento, e non sovrappone NIP-70 semantica protetta-evento; è un suggerimento più un contratto morbido.&lt;/p>
&lt;p>Il tag vive sull&amp;rsquo;evento stesso (o nel caso di messaggistica avvolta, sull&amp;rsquo;involucro esterno). NIP-40 non definisce la semantica cancellata; l&amp;rsquo;evento rimane un evento firmato che chiunque lo abbia può ancora leggere. Ciò che NIP-40 offre è un&amp;rsquo;attesa coordinata che il relè e il cliente smetteranno di navigare dopo la scadenza. Questo rende NIP-40 utile per i post effimeri, annunci tempestivi, note di evento dal vivo che dovrebbero smettere di essere serviti dopo l&amp;rsquo;evento, e messaggi diretti NIP-17 che non dovrebbero soffermarsi oltre un orizzonte dichiarato.&lt;/p>
&lt;h3 id="interazione-con-confezione-regalo">Interazione con confezione regalo&lt;/h3>
&lt;p>Il PR rust-nostr che è atterrato questa settimana ([PR #1384] (&lt;a href="https://github.com/rust-nostr/nostr/pull/1384">https://github.com/rust-nostr/nostr/pull/1384&lt;/a>)) è uno studio di caso in come NIP-40 interagisce con &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> confezione regalo. NIP-59 definisce una busta a due strati: un evento tipo: 13 &amp;ldquo;seal&amp;rdquo; firmato dalla chiave reale del mittente e un evento tipo:1059 &amp;ldquo;gift wrap&amp;rdquo; firmato da una chiave effimera. Entrambi gli strati hanno randomizzato i valori &lt;code>created_at&lt;/code>, fino a 48 ore prima del tempo reale di invio, quindi un osservatore di relè non può recuperare il vero timestamp di invio. NIP-59 manda che il sigillo ha tag vuoti.&lt;/p>
&lt;p>Questo mandato è il motivo per cui il tag di scadenza deve andare sul pacco regalo e rimanere fuori dal sigillo, e perché ancorare il tag al tempo reale di invio sarebbe sconfiggere la privacy dei tempi del pacco regalo: se un chiamante passa un timestamp di scadenza assoluta, un osservatore sottrae il TTL previsto del chiamante e recupera il tempo reale di invio. La decisione di progettazione di rust-nostr è di esporre lo API come &lt;code>Duration&lt;/code> dal chiamante, quindi calcolare &lt;code>expiration = wrap.created_at + duration&lt;/code> all&amp;rsquo;interno della libreria. &lt;code>created_at&lt;/code> dell&amp;rsquo;involucro è già randomizzato all&amp;rsquo;interno della libreria, quindi il timestamp di scadenza eredita la stessa randomizzazione e non perde il vero tempo di invio.&lt;/p>
&lt;h2 id="esempio-evento-1">Esempio evento&lt;/h2>
&lt;p>Un esempio minimo di NIP-40 su una nota tipo-1:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1720368000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;expiration&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1720454400&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;this note expires in 24 hours&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d2e5b8a1c4f7b0d3e6a9c2f5b8d1e4a7c0f3b6d9e2a5c8f1b4d7e0a3c6f9b2d5e8a1c4f7b0d3e6a9c2f5b8d1e4a7c0f3b6d9e2a5c8f1b4d7e0a3c6f9b2d5e8a1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>created_at&lt;/code> è il timestamp Unix della pubblicazione; il tag di scadenza dice che l&amp;rsquo;evento dovrebbe smettere di essere servito 86.400 secondi (24 ore) più tardi. Un relè che rispetta NIP-40 smette di restituire questo evento a REQs dopo &lt;code>1720454400&lt;/code>, e un client che rispetta NIP-40 lo nasconde dall&amp;rsquo;utente dopo quel tempo.&lt;/p>
&lt;h3 id="dove-viene-utilizzato-1">Dove viene utilizzato&lt;/h3>
&lt;p>I costruttori rust-nostr (&lt;code>GiftWrapBuilder&lt;/code>, &lt;code>PrivateDirectMessageBuilder&lt;/code>) ora espongono la scadenza come parametro &lt;code>Duration&lt;/code> di prima classe. NDK espone un helper di scadenza per i costruttori di tipo 1 e DM. nostr-tools ha una coppia &lt;code>getExpiration&lt;/code> e &lt;code>isExpired&lt;/code> per la lettura e il rafforzamento del tag. strfry, nostr-rs-relay, khatru e altre implementazioni di relè rispettano NIP-40 nella gestione di REQ (rigettura o o omissione di eventi scaduti a seconda della politica dell&amp;rsquo;operatore). Damus, Amethyst, noStrudel, Coracle e Primal tutti gli eventi scaduti dal loro rendering timeline. client di Live-attività come zap.stream utilizzare NIP-40 sugli eventi di chat tipo-1311 associati in modo che una chat dal vivo si ferma persistente dopo la fine del flusso.&lt;/p>
&lt;p>La proprietà di progettazione che atterra NIP-40 pulito nella maggior parte delle implementazioni è che è opt-in per evento e non richiede distribuzione coordinata. Un autore può aggiungere il tag oggi; un relè che onora che ottiene un set di lavoro più pulito; un relè che lo ignora non fa peggio di prima; e un cliente che nasconde eventi scaduti dà all&amp;rsquo;autore ciò che hanno chiesto. Il cambiamento rust-nostr di questa settimana rafforza che il posizionamento del tag è importante tanto quanto la sua presenza: in una busta di conservazione della privacy come l&amp;rsquo;involucro regalo NIP-59, il tag siede sullo strato il cui timestamp è già randomizzato, e la superficie API impedisce a un chiamante di perdere accidentalmente un vero timestamp di nuovo nella fascia.&lt;/p>
&lt;hr>
&lt;p>E&amp;rsquo; tutto per questa settimana. Costruire qualcosa o avere notizie da condividere? Raggiungere via NIP-17 DM o trovarci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #29</title><link>https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#fips-v040-ships-nym-mixnet-transport-mdns-discovery-and-a-data-plane-overhaul">FIPS v0.4.0&lt;/a> introduce un trasporto sulla mixnet Nym, la scoperta mDNS facoltativa sulla LAN, il rekey senza interruzioni in caso di perdita di pacchetti e una revisione del data plane, mantenendo la compatibilità wire con v0.3.0. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#whitenoise-linux-surfaces-as-a-desktop-marmot-client">Whitenoise Linux&lt;/a> emerge come client Marmot desktop in Rust e Slint, con una proposta di protocollo per spostare gli effetti dei messaggi in un evento kind 9 dedicato. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#custid-launches-as-a-mobile-identity-vault-with-nip-46-and-nfc-challenge-flow">CustID v0.1.10-beta&lt;/a> debutta come cassaforte mobile per identità protetta dall&amp;rsquo;hardware, che opera da signer remoto NIP-46 e risponde tramite NFC alle richieste di accesso fisico. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#myco-launches-peer-to-peer-nsite-sharing-over-the-fips-mesh">myco&lt;/a> inaugura la condivisione peer-to-peer di nsite sulla mesh FIPS con un nuovo trasporto BLE L2CAP nella v0.1.0. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#nostr-codex-phone-launches-as-a-mobile-control-surface-for-a-local-codex-worker-over-nostr">Nostr Codex Phone&lt;/a> debutta come superficie di controllo Android per un assistente di programmazione Codex locale, raggiunto tramite DM Nostr cifrati. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#amethyst-builds-nip-89-aware-ui-a-git-repositories-feed-and-a-napplet-browser-discover-section">Il ramo non ancora rilasciato di Amethyst&lt;/a> aggiunge il parsing degli application handler NIP-89, un feed Git Repositories per NIP-34 e una sezione Discover per nSite e napplet. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#notedeck-implements-nip-37-private-sync-relays-nip-52-calendar-and-nip-22-comments">Notedeck&lt;/a> implementa NIP-37, NIP-52 e NIP-22 in una sola settimana. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#applesauce-ships-12-sub-packages-in-a-coordinated-62x-cut">Applesauce&lt;/a> pubblica 12 release coordinate dei suoi sottopacchetti, con helper nbunksec per NIP-46 e un aggiornamento del wallet a Cashu-ts v4. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#meiso-v140-ships-shared-key-collaborative-lists-that-replace-mls-for-task-sharing">Meiso v1.4.0&lt;/a> introduce Shared-Key Collaborative Lists su eventi indirizzabili kind 35000. Il repository NIPs ha integrato cinque PR, fra cui un evento Relay Roles, la rimozione del limite di 65.535 byte di NIP-44, la semantica dei fork di NIP-34, i metadati client di NIP-46 e un metodo &lt;code>signevent&lt;/code> per NIP-86. Gli approfondimenti riguardano &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#nip-deep-dive-nip-86-relay-management-api">NIP-86 (API di gestione dei relay)&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#nip-deep-dive-nip-89-recommended-application-handlers">NIP-89 (application handler consigliati)&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#fips-v040-ships-nym-mixnet-transport-mdns-discovery-and-a-data-plane-overhaul">FIPS v0.4.0&lt;/a> introduce un trasporto sulla mixnet Nym, la scoperta mDNS facoltativa sulla LAN, il rekey senza interruzioni in caso di perdita di pacchetti e una revisione del data plane, mantenendo la compatibilità wire con v0.3.0. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#whitenoise-linux-surfaces-as-a-desktop-marmot-client">Whitenoise Linux&lt;/a> emerge come client Marmot desktop in Rust e Slint, con una proposta di protocollo per spostare gli effetti dei messaggi in un evento kind 9 dedicato. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#custid-launches-as-a-mobile-identity-vault-with-nip-46-and-nfc-challenge-flow">CustID v0.1.10-beta&lt;/a> debutta come cassaforte mobile per identità protetta dall&amp;rsquo;hardware, che opera da signer remoto NIP-46 e risponde tramite NFC alle richieste di accesso fisico. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#myco-launches-peer-to-peer-nsite-sharing-over-the-fips-mesh">myco&lt;/a> inaugura la condivisione peer-to-peer di nsite sulla mesh FIPS con un nuovo trasporto BLE L2CAP nella v0.1.0. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#nostr-codex-phone-launches-as-a-mobile-control-surface-for-a-local-codex-worker-over-nostr">Nostr Codex Phone&lt;/a> debutta come superficie di controllo Android per un assistente di programmazione Codex locale, raggiunto tramite DM Nostr cifrati. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#amethyst-builds-nip-89-aware-ui-a-git-repositories-feed-and-a-napplet-browser-discover-section">Il ramo non ancora rilasciato di Amethyst&lt;/a> aggiunge il parsing degli application handler NIP-89, un feed Git Repositories per NIP-34 e una sezione Discover per nSite e napplet. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#notedeck-implements-nip-37-private-sync-relays-nip-52-calendar-and-nip-22-comments">Notedeck&lt;/a> implementa NIP-37, NIP-52 e NIP-22 in una sola settimana. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#applesauce-ships-12-sub-packages-in-a-coordinated-62x-cut">Applesauce&lt;/a> pubblica 12 release coordinate dei suoi sottopacchetti, con helper nbunksec per NIP-46 e un aggiornamento del wallet a Cashu-ts v4. &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#meiso-v140-ships-shared-key-collaborative-lists-that-replace-mls-for-task-sharing">Meiso v1.4.0&lt;/a> introduce Shared-Key Collaborative Lists su eventi indirizzabili kind 35000. Il repository NIPs ha integrato cinque PR, fra cui un evento Relay Roles, la rimozione del limite di 65.535 byte di NIP-44, la semantica dei fork di NIP-34, i metadati client di NIP-46 e un metodo &lt;code>signevent&lt;/code> per NIP-86. Gli approfondimenti riguardano &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#nip-deep-dive-nip-86-relay-management-api">NIP-86 (API di gestione dei relay)&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-07-01-newsletter/#nip-deep-dive-nip-89-recommended-application-handlers">NIP-89 (application handler consigliati)&lt;/a>.&lt;/p>
&lt;hr>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="fips-v040-introduce-il-trasporto-sulla-mixnet-nym-la-scoperta-mdns-e-una-revisione-del-data-plane">FIPS v0.4.0 introduce il trasporto sulla mixnet Nym, la scoperta mDNS e una revisione del data plane&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> è una rete mesh peer-to-peer privata e auto-organizzata per Nostr, nella quale i nodi si scoprono e instradano il traffico senza infrastruttura centrale. &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.4.0">FIPS v0.4.0&lt;/a> porta un trasporto sulla mixnet Nym, la scoperta mDNS facoltativa sulla LAN, una revisione del data plane, il rekey senza interruzioni in caso di perdita di pacchetti, una TUI &lt;code>fipstop&lt;/code> riscritta su un harness di snapshot del rendering, un piano di osservabilità fuori dall&amp;rsquo;hot path e nuovi target di packaging apk per OpenWrt e flake per Nix. Tutto resta compatibile a livello wire con v0.3.0, così le mesh miste continuano a interoperare durante un aggiornamento progressivo. Due nuovi trasporti per la scoperta dei peer sono al centro della release. Un nuovo &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.4.0">trasporto in uscita sulla mixnet Nym&lt;/a> instrada il traffico FIPS attraverso un proxy SOCKS5 &lt;code>nym-socks5-client&lt;/code>, mescolandolo nella rete di cover traffic di &lt;a href="https://nymtech.net/">Nym&lt;/a> affinché gli osservatori a livello di collegamento non possano correlare quali peer della mesh stiano comunicando; un esempio &lt;code>examples/sidecar-nostr-mixnet-relay&lt;/code> mostra come esporre un relay Nostr locale attraverso quel percorso. Sulla LAN, la nuova scoperta mDNS è esplicitamente facoltativa e pubblicizza solo un identificatore di nodo e una porta, senza chiavi o metadati dell&amp;rsquo;utente.&lt;/p>
&lt;p>Il data plane è stato rielaborato per aumentare il throughput di un singolo nodo. La cifratura e la decifratura per peer ora vengono eseguite da task worker dedicati fuori dal ciclo di ricezione, così un peer molto attivo non può serializzare la crittografia dell&amp;rsquo;intero nodo. Il percorso di invio Linux usa generic segmentation offload e, dove disponibile, un socket UDP connesso; l&amp;rsquo;hot path di ricezione evita le copie dei buffer effettuate in precedenza per ogni pacchetto, mentre macOS riceve una modalità di ricezione in batch &lt;code>recvmsg_x&lt;/code> analoga al batching Linux &lt;code>recvmmsg&lt;/code> introdotto nella v0.3.0. L&amp;rsquo;intera superficie di lettura &lt;code>show_*&lt;/code> per &lt;code>fipsctl&lt;/code> e &lt;code>fipstop&lt;/code> ora viene servita da uno snapshot per tick, pubblicato in un &lt;code>ArcSwap&lt;/code> lock-free dal task che accetta le connessioni di controllo, così le richieste degli operatori ricevono risposta rapidamente anche quando il ciclo di ricezione del nodo è occupato. Una nuova query &lt;code>show_metrics&lt;/code> di soli contatori, esposta come &lt;code>fipsctl stats metrics&lt;/code>, consente lo scraping Prometheus senza costi sull&amp;rsquo;hot path.&lt;/p>
&lt;p>Il rekey delle sessioni FMP e FSP ora avviene senza interruzioni in presenza di perdita e riordinamento dei pacchetti in entrambe le direzioni: i frame in ingresso vengono autenticati rispetto alla sessione in attesa prima che il passaggio con K-bit la promuova, così un frame obsoleto o contraffatto non può mandare fuori strada il rekey; la ritrasmissione del messaggio 1 del rekey è limitata, l&amp;rsquo;heartbeat che rileva un collegamento interrotto tiene conto del rekey e le corse dovute all&amp;rsquo;avvio simultaneo su collegamenti ad alta latenza vengono desincronizzate con jitter simmetrico. La TUI &lt;code>fipstop&lt;/code> è stata ricostruita su un harness di snapshot del rendering che verifica l&amp;rsquo;esatta griglia di testo e lo stile di ogni cella per ciascuna vista, usando output predefiniti del socket di controllo. Arrivano anche nuovi target di packaging: un &lt;code>.apk&lt;/code> per OpenWrt 25+ costruito senza SDK, riutilizzando la cross-compilazione &lt;code>.ipk&lt;/code> esistente e il payload del filesystem installato, e un &lt;code>flake.nix&lt;/code> nella radice del progetto che compila dal sorgente tutti e quattro i binari (&lt;code>fips&lt;/code>, &lt;code>fipsctl&lt;/code>, &lt;code>fips-gateway&lt;/code>, &lt;code>fipstop&lt;/code>) su Nix/NixOS con la toolchain fissata.&lt;/p>
&lt;h3 id="whitenoise-linux-emerge-come-client-marmot-desktop">Whitenoise Linux emerge come client Marmot desktop&lt;/h3>
&lt;p>&lt;a href="https://relay.ngit.dev/npub1ven4zk8xxw873876gx8y9g9l9fazkye9qnwnglcptgvfwxmygscqsxddfh/darkmatter-linux.git">Whitenoise Linux&lt;/a> è un client &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> desktop: messaggistica di gruppo MLS su relay Nostr, distribuita come singolo binario Rust con un&amp;rsquo;interfaccia Slint che conserva ogni segreto in una cassaforte cifrata con password.&lt;/p>
&lt;p>Il filone più rilevante di questa settimana propone di trasportare gli effetti dei messaggi Whitenoise come eventi kind 9 dedicati che fanno riferimento al messaggio padre. L&amp;rsquo;attuale formato wire aggiunge alla fine del corpo un marcatore come &lt;code>dmfx:sparkle&lt;/code>, sporcando il testo per qualsiasi renderer che non conosca questa convenzione. Spostare gli effetti in eventi propri mantiene pulito il testo dei messaggi e apre una questione progettuale che l&amp;rsquo;intero stack Marmot dovrà affrontare: convenzioni inline nel corpo oppure eventi sidecar per le funzionalità avanzate facoltative.&lt;/p>
&lt;h3 id="custid-debutta-come-cassaforte-mobile-per-identità-con-nip-46-e-richieste-via-nfc">CustID debutta come cassaforte mobile per identità con NIP-46 e richieste via NFC&lt;/h3>
&lt;p>&lt;a href="https://zapstore.dev/apps/naddr1qq9rzqtdwfshxwf0wccsygqv94d2qg37755z67q9yjz6q60lcejldsc3ttak83333gjqgyvf3aqpsgqqqyf6w24n0c">CustID v0.1.10-beta&lt;/a> è la prima beta pubblica di CustID, una cassaforte mobile per identità costruita su Nostr e sul protocollo SISTR. CustID memorizza più identità Nostr in un archivio sicuro protetto dall&amp;rsquo;hardware, opera come signer remoto &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per altri client e risponde a richieste di accesso fisiche e online tramite NFC e codici QR.&lt;/p>
&lt;p>La beta è completa nelle funzionalità del signer NIP-46 e del flusso challenge-response NFC; i flussi di accesso basati su zero-knowledge proof restano un traguardo futuro. Questa release elimina inoltre il livello keep-alive &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> in background dell&amp;rsquo;app, che apriva un WebSocket per profilo per ciascun relay di lettura e acquisiva kind poi scartati immediatamente dal client. Ora restano attivi in background soltanto i socket NIP-46 che trasportano le notifiche delle richieste di firma: è la correzione che rende praticabile l&amp;rsquo;uso di CustID come bunker per altri client su un telefono.&lt;/p>
&lt;h3 id="myco-inaugura-la-condivisione-peer-to-peer-di-nsite-sulla-mesh-fips">myco inaugura la condivisione peer-to-peer di nsite sulla mesh FIPS&lt;/h3>
&lt;p>&lt;a href="https://github.com/Origami74/myco/releases/tag/v0.1.0">myco v0.1.0&lt;/a> è comparso questa settimana, il 27 giugno, e ha raggiunto v0.1.0 il 1° luglio. myco è un&amp;rsquo;app Android in Rust che installa applicazioni provenienti dalle persone vicine: condivisione peer-to-peer di &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">nsite&lt;/a> su una mesh FIPS, attraverso qualsiasi trasporto supportato dalla mesh (UDP, TCP, Tor, Bluetooth), funzionante interamente offline. Il progetto abbina direttamente FIPS come substrato di trasporto al formato di eventi per siti web statici di NIP-5A come payload, consentendo a un&amp;rsquo;app distribuita come nsite di spostarsi fra peer della mesh senza dipendere da relay o HTTP.&lt;/p>
&lt;p>La v0.1.0 aggiunge un percorso radio Bluetooth L2CAP, così due telefoni con FIPS installato possono collegarsi in peer tramite BLE senza alcuna rete, oltre a uno speedtest per peer e alla condivisione attivata via NFC dal bottom sheet Circle dell&amp;rsquo;app. myco è pubblicato anche su Zapstore per l&amp;rsquo;installazione diretta.&lt;/p>
&lt;h3 id="nostr-codex-phone-debutta-come-superficie-di-controllo-mobile-per-un-worker-codex-locale-tramite-nostr">Nostr Codex Phone debutta come superficie di controllo mobile per un worker Codex locale tramite Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/tidley/nostr-codex-phone">Nostr Codex Phone v0.1.122&lt;/a> debutta questa settimana come client Android che controlla un worker locale dell&amp;rsquo;assistente di programmazione Codex tramite messaggi diretti Nostr cifrati. L&amp;rsquo;app supporta più sessioni di repository, trascrizione vocale, sessioni worker instradate, upload di media su Blossom e risposte vocali facoltative, così uno sviluppatore che esegue un worker Codex a casa può inviare richieste dal telefono ovunque questo abbia accesso ai relay.&lt;/p>
&lt;p>Il progetto è un diretto parente di &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-24-newsletter/#codedeck-remote-agentic-coding-over-nostr">CodeDeck&lt;/a>, presentato nel numero 28. Entrambi portano su un trasporto Nostr i flussi di programmazione agentica con DM cifrati ed entrambi usano Nostr come livello di associazione e messaggistica che permette a un telefono di raggiungere un worker domestico senza aprire varchi nella rete. L&amp;rsquo;uso di Nostr come control plane per agenti locali sta diventando uno schema consolidato.&lt;/p>
&lt;h3 id="coop-mobile-pubblica-le-sue-prime-build-con-versione">Coop Mobile pubblica le sue prime build con versione&lt;/h3>
&lt;p>&lt;a href="https://git.reya.su/reya/coop-mobile/releases/tag/v0.2.1">Coop Mobile v0.2.1&lt;/a> e &lt;a href="https://git.reya.su/reya/coop-mobile/releases/tag/v0.2.2">v0.2.2&lt;/a> sono uscite questa settimana come prime build con versione di Coop Mobile, un client Android per messaggi diretti cifrati &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>. Le due release migliorano la sicurezza contro i crash durante il parsing dei messaggi e la gestione dei QR e cancellano tutti i dati memorizzati al logout.&lt;/p>
&lt;h3 id="amethyst-sviluppa-uninterfaccia-consapevole-di-nip-89-un-feed-git-repositories-e-una-sezione-discover-per-napplet">Amethyst sviluppa un&amp;rsquo;interfaccia consapevole di NIP-89, un feed Git Repositories e una sezione Discover per napplet&lt;/h3>
&lt;p>Il ramo principale di &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha sviluppato diverse nuove superfici questa settimana. Un &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3406">feed Git Repositories&lt;/a> trasforma i repository &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> in una categoria consultabile della timeline Android, filtrabile per community e autore, abbinata a un &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3415">browser git smart-HTTP&lt;/a> che legge contenuti e commit dei repository senza uscire dall&amp;rsquo;app. L&amp;rsquo;host per napplet ha ricevuto una &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3409">sezione Discover&lt;/a> che elenca web app curate insieme agli nSite e ai napplet seguiti, ricavati dagli eventi handler &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> e dagli eventi site &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A&lt;/a>. La visualizzazione delle note ora &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3422">rivela quale app Nostr ha creato un evento&lt;/a> tramite i tag NIP-89. Sul fronte della sincronizzazione arriva il &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3434">supporto alla negentropy NIP-77&lt;/a>, con riconciliazione in streaming e finestre &lt;code>created_at&lt;/code> automatiche per aggirare i limiti ai risultati imposti dai relay, riducendo la banda necessaria a mantenere sincronizzati con un relay grandi insiemi locali di eventi.&lt;/p>
&lt;h3 id="buzz-v0338-irrobustisce-la-superficie-di-attacco-dei-relay-e-aggiunge-la-selezione-dei-modelli-indipendente-dal-provider">Buzz v0.3.38 irrobustisce la superficie di attacco dei relay e aggiunge la selezione dei modelli indipendente dal provider&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/buzz/releases/tag/v0.3.38">Buzz v0.3.38&lt;/a> irrobustisce la &lt;a href="https://github.com/block/buzz/pull/1369">superficie di attacco dei relay&lt;/a> esposta da Buzz quando pubblica persona, team, agenti gestiti e attestazioni dei proprietari NIP-OA come eventi Nostr firmati. Un relay Buzz è un registro pubblico delle identità Nostr del team e del loro stato; questa release rafforza la validazione degli input e la protezione dai replay sui kind di evento ben noti definiti da Buzz. La release generalizza inoltre la selezione dei modelli, così un team Buzz può scegliere qualsiasi provider per cui Buzz disponga di adapter, incluso un nuovo backend Databricks AI Gateway v2.&lt;/p>
&lt;h3 id="notedeck-implementa-relay-di-sincronizzazione-privata-nip-37-calendario-nip-52-e-commenti-nip-22">Notedeck implementa relay di sincronizzazione privata NIP-37, calendario NIP-52 e commenti NIP-22&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop nativo in Rust del team Damus, ha implementato tre protocolli in una sola settimana. I relay di sincronizzazione privata ora vengono memorizzati come lista kind &lt;code>10013&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-37/">NIP-37&lt;/a>, separando l&amp;rsquo;insieme di relay per contenuti privati dell&amp;rsquo;utente dall&amp;rsquo;outbox pubblica NIP-65. Il pannello calendario &lt;code>horizon&lt;/code> legge eventi &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> da nostrdb e ha ricevuto una nuova disposizione a tre riquadri. Il pannello &lt;code>headway&lt;/code> ha aggiunto un modello di eventi commento &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> su kind &lt;code>1111&lt;/code>, il kind definito da NIP-22 per la superficie unificata dei commenti che sostituisce il concatenamento delle risposte NIP-10.&lt;/p>
&lt;h3 id="applesauce-introduce-sessioni-nip-46-nbunksec-e-aggiorna-il-wallet-a-cashu-v4">Applesauce introduce sessioni NIP-46 nbunksec e aggiorna il wallet a Cashu v4&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>, il toolkit modulare Nostr per signer, relay, wallet e contenuti, ha pubblicato una serie coordinata di &lt;a href="https://github.com/hzrd149/applesauce/releases">release 6.2.x&lt;/a> nei suoi sottopacchetti. Il pacchetto signers ha ricevuto helper per importare ed esportare &lt;code>nbunksec&lt;/code>, trattando una sessione bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> come un artefatto portabile che può spostarsi fra client. Il pacchetto wallet ha aggiornato i binding &lt;a href="https://nostrcompass.org/it/topics/nip-60/">Cashu&lt;/a> a &lt;code>@cashu/cashu-ts&lt;/code> v4, dove gli importi delle proof diventano value object &lt;code>Amount&lt;/code> e cambia l&amp;rsquo;API di decodifica dei token.&lt;/p>
&lt;hr>
&lt;h2 id="release-con-tag">Release con tag&lt;/h2>
&lt;h3 id="mostro-core-v0140">mostro-core v0.14.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.14.0">mostro-core v0.14.0&lt;/a> introduce la successiva iterazione del protocollo per la rete &lt;a href="https://nostrcompass.org/it/topics/nip-69/">Mostro&lt;/a> di scambio P2P di valuta fiat. La release segue &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.13.2">v0.13.2&lt;/a> ed esce insieme a &lt;a href="https://github.com/MostroP2P/mostro-cli/releases/tag/v0.16.0">mostro-cli v0.16.0&lt;/a>, che adotta il nuovo core. Questa settimana sono state integrate tre PR nel repository core; lo stack circostante, mostro daemon e Mostro mobile, si allinea alla v0.14.0 del crate di tipi condivisi.&lt;/p>
&lt;h3 id="ngit-v261">ngit v2.6.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/ngit-cli">ngit v2.6.1&lt;/a>, la CLI canonica per git su Nostr nei repository &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>, implementa la &lt;a href="https://github.com/nostr-protocol/nips/pull/2395">semantica dei fork GRASP-06 di NIP-34&lt;/a> integrata questa settimana, che sostituisce il tag &lt;code>personal-fork&lt;/code> con un tag &lt;code>u&lt;/code> negli eventi repo-state.&lt;/p>
&lt;h3 id="mesh-llm-v0720-e-v0721">mesh-llm v0.72.0 e v0.72.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/Mesh-LLM/mesh-llm">mesh-llm&lt;/a>, il componente di inferenza dello stack ContextVM che esegue LLM open source dietro una superficie JSON-RPC indirizzabile via Nostr, ha pubblicato &lt;a href="https://github.com/Mesh-LLM/mesh-llm/releases/tag/v0.72.0">v0.72.0&lt;/a> e &lt;a href="https://github.com/Mesh-LLM/mesh-llm/releases/tag/v0.72.1">v0.72.1&lt;/a>, con una correzione per un crash del batching su singoli prompt di grandi dimensioni e una migrazione del bridge MCP che abbandona helper deprecati.&lt;/p>
&lt;h3 id="meiso-v140-introduce-shared-key-collaborative-lists-che-sostituiscono-mls-per-la-condivisione-dei-task">Meiso v1.4.0 introduce Shared-Key Collaborative Lists che sostituiscono MLS per la condivisione dei task&lt;/h3>
&lt;p>&lt;a href="https://github.com/higedamc/meiso/releases/tag/v1.4.0">Meiso v1.4.0&lt;/a> introduce un modello Shared-Key Collaborative Lists che sostituisce la precedente condivisione dei task basata su MLS con un design più semplice di eventi indirizzabili. Ogni lista condivisa genera una chiave Nostr dedicata distribuita ai membri; i task sono eventi indirizzabili kind &lt;code>35000&lt;/code>, identificati da &lt;code>d=task-id&lt;/code>, con contenuto auto-cifrato tramite &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, mentre i relay applicano Last-Write-Wins per ciascun task. Il design rinuncia alla forward secrecy e alla sicurezza post-compromissione di MLS in cambio di un&amp;rsquo;implementazione più semplice nei client e della risoluzione dei conflitti a livello di relay.&lt;/p>
&lt;h3 id="cordn-032">Cordn 0.3.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cordn-msg/cordn">Cordn 0.3.2&lt;/a> introduce un filone &amp;ldquo;more-private-coordinator&amp;rdquo; che rimuove le pubkey effimere dei mittenti dalla pubblicazione dei messaggi di gruppo e irrobustisce il flusso delle richieste di ingresso contro nuove richieste obsolete. Cordn è lo stack di messaggistica basato su MLS presentato nel &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-24-newsletter/#cordn-ad-hoc-cvm-a-browser-based-mls-coordinator">lancio del CVM ad hoc di Cordn nel numero 28&lt;/a>; questa release è il corrispondente aggiornamento lato coordinatore.&lt;/p>
&lt;hr>
&lt;h2 id="modifiche-non-ancora-rilasciate">Modifiche non ancora rilasciate&lt;/h2>
&lt;h3 id="divine-integra-108-pr-di-rifiniture-successive-al-lancio">diVine integra 108 PR di rifiniture successive al lancio&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client per brevi video in loop che riporta in vita Vine, attraversa un&amp;rsquo;intensa fase di rifinitura successiva al lancio. Il lavoro visibile su Nostr questa settimana consiste in un passaggio di stabilizzazione del flusso di connessione &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, che migra gli errori &lt;code>nostrconnect://&lt;/code> verso codici di motivo strutturati.&lt;/p>
&lt;h3 id="zap-cooking-prosegue-la-correzione-nip-46-trasversale-ai-progetti-e-la-revisione-del-compositore">Zap Cooking prosegue la correzione NIP-46 trasversale ai progetti e la revisione del compositore&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> è un client Nostr per condividere ricette, pubblicate come eventi Nostr long-form. Il lavoro di questa settimana prosegue la correzione &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> trasversale ai progetti e la revisione del compositore descritte fra le modifiche non ancora rilasciate nel &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-24-newsletter/#unreleased-changes">numero 28&lt;/a>.&lt;/p>
&lt;h3 id="conduit-irrobustisce-il-flusso-degli-annunci-e-la-correttezza-del-marketplace">Conduit irrobustisce il flusso degli annunci e la correttezza del marketplace&lt;/h3>
&lt;p>&lt;a href="https://github.com/Conduit-BTC/conduit-mono">Conduit&lt;/a> è un monorepo di marketplace su Nostr composto da tre app: mercato per acquirenti, portale per commercianti e generatore di negozi. Il lavoro di questa settimana prosegue la spinta sulla correttezza del marketplace descritta nella &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-24-newsletter/#conduit-hardens-the-marketplace-mvp-and-switches-to-its-public-relay-by-default">copertura del lancio nel numero 28&lt;/a>, sulla scia dell&amp;rsquo;ondata commerciale &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> che ha costituito la storia di protocollo dello scorso numero.&lt;/p>
&lt;h3 id="pollerama-dalla-v112-alla-v1131-aggiunge-la-scelta-del-client-tag-schede-del-profilo-e-limiti-ai-thread">Pollerama dalla v1.12 alla v1.13.1 aggiunge la scelta del client tag, schede del profilo e limiti ai thread&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-polls">Pollerama&lt;/a>, un client Nostr Android incentrato su sondaggi e note con un forte livello di scoperta basato sul web of trust, ha pubblicato questa settimana su Zapstore v1.12.0, v1.13.0 e v1.13.1. Ora gli utenti possono scegliere quale client tag allegare alle note e ai sondaggi che creano, selezionandolo da un elenco predefinito o inserendone uno proprio. Le catene di commenti e risposte molto annidate si interrompono ora dopo pochi livelli e rimandano al thread completo nella pagina della nota. Le pagine dei profili si aprono per impostazione predefinita su Notes, suddivise nelle schede Posts e Conversations. È stato corretto un bug di persistenza dei follow, per cui gli account appena seguiti scomparivano al riavvio dell&amp;rsquo;app, e i pulsanti di follow ora mostrano l&amp;rsquo;avanzamento.&lt;/p>
&lt;h3 id="getwiredapp-e-get-taoapp-correggono-il-flusso-di-invio-confess-di-nip-13">getwired.app e get-tao.app correggono il flusso di invio confess di NIP-13&lt;/h3>
&lt;p>&lt;a href="https://github.com/smolgrrr/Wired">getwired.app&lt;/a> e &lt;a href="https://github.com/smolgrrr/TAO">get-tao.app&lt;/a>, che condividono un flusso di pubblicazione anonima che aggiunge proof-of-work NIP-13 al momento dell&amp;rsquo;invio per limitare lo spam, hanno corretto il &lt;a href="https://github.com/smolgrrr/Wired/pull/57">flusso di invio confess&lt;/a> affinché l&amp;rsquo;esperienza utente durante il mining PoW sia coerente.&lt;/p>
&lt;h3 id="nostui-aggiunge-una-scheda-della-timeline-delle-menzioni">nostui aggiunge una scheda della timeline delle menzioni&lt;/h3>
&lt;p>&lt;a href="https://github.com/akiomik/nostui">nostui&lt;/a>, un client Nostr da terminale in Rust, ha aggiunto una &lt;a href="https://github.com/akiomik/nostui/pull/463">scheda della timeline delle menzioni&lt;/a> che presenta in una vista TUI dedicata gli eventi kind 1 che taggano la pubkey attiva.&lt;/p>
&lt;h3 id="heartwood-introduce-uri-bunker-nip-46-per-identità-e-un-bridge-di-firma-in-modalità-hsm">Heartwood introduce URI bunker NIP-46 per identità e un bridge di firma in modalità HSM&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn/heartwood">Heartwood&lt;/a> è un signer &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> nel quale la chiave di firma non raggiunge mai il client: quest&amp;rsquo;ultimo comunica tramite NIP-46 con un piccolo relay, che a sua volta usa un protocollo di frame seriali per parlare con un dispositivo hardware collegato ed eseguire la firma. Questa settimana il progetto ha integrato un &lt;a href="https://github.com/forgesworn/heartwood/pull/11">bridge di firma da relay a seriale&lt;/a> e &lt;a href="https://github.com/forgesworn/heartwood/pull/16">connessioni bunker per identità&lt;/a>, così un singolo dispositivo hardware che custodisce più identità espone un URI bunker distinto per ciascuna.&lt;/p>
&lt;h3 id="refactoring-dellautenticazione-e-dei-signer-di-nostter">Refactoring dell&amp;rsquo;autenticazione e dei signer di Nostter&lt;/h3>
&lt;p>Questa settimana &lt;a href="https://github.com/SnowCait/nostter">Nostter&lt;/a> ha rielaborato il proprio &lt;a href="https://github.com/SnowCait/nostter/pulls?q=is%3Amerged&amp;#43;auth">livello di autenticazione e signer&lt;/a>, spostando lo stato di login su un unico signal ed estraendo il dispatch del signer in moduli di strategia. La direzione è un&amp;rsquo;astrazione pulita del signer, nella quale estensione web NIP-07, bunker remoto NIP-46 e nsec grezzo condividono un solo percorso di codice.&lt;/p>
&lt;h3 id="dart-ndk-estrae-il-signer-nip-07-e-randomizza-i-timestamp-nip-59">Dart NDK estrae il signer NIP-07 e randomizza i timestamp NIP-59&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/dart_ndk">Dart NDK&lt;/a> ha spostato il signer &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> fuori dal pacchetto core e dentro &lt;code>ndk_flutter&lt;/code>, dove risiede la WebView Flutter, e ha &lt;a href="https://github.com/relaystr/dart_ndk/pull/667">randomizzato i timestamp dei gift wrap NIP-59&lt;/a> per rafforzare la protezione contro la correlazione temporale dei messaggi cifrati.&lt;/p>
&lt;h3 id="milk-market-aggiunge-pagine-vetrina-nip-23-e-pagamenti-tramite-square">Milk Market aggiunge pagine vetrina NIP-23 e pagamenti tramite Square&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, la vetrina marketplace del team Shopstr, ha dotato ogni negozio di una pagina blog basata sugli eventi long-form &lt;a href="https://nostrcompass.org/it/topics/nip-23/">NIP-23&lt;/a> del venditore, con sezioni modificabili e una route diretta per le impostazioni del blog. Nella stessa settimana ha aggiunto &lt;a href="https://github.com/shopstr-eng/milk-market/pull/30">Square&lt;/a> come processore di pagamenti alternativo per i venditori e l&amp;rsquo;acquisto automatico delle etichette di spedizione per gli ordini pagati.&lt;/p>
&lt;h3 id="calendar-by-formstr-pubblica-unapp-ios">Calendar by Formstr pubblica un&amp;rsquo;app iOS&lt;/h3>
&lt;p>Questa settimana &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Formstr&lt;/a> ha integrato la &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/159">PR #159 IOS App&lt;/a>, portando su iOS il client calendario &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>. La &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/197">PR #197&lt;/a> corregge il parsing delle date del calendario nell&amp;rsquo;ora locale e la &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/201">PR #201&lt;/a> aggiunge un flusso E2E Playwright attivato da un&amp;rsquo;etichetta &lt;code>run-tests&lt;/code>.&lt;/p>
&lt;h3 id="cagliostr-applica-nip-22-nip-09-per-coordinate-e-proof-of-work-nip-13">cagliostr applica NIP-22, NIP-09 per coordinate e proof-of-work NIP-13&lt;/h3>
&lt;p>&lt;a href="https://github.com/mattn/cagliostr">cagliostr&lt;/a>, un&amp;rsquo;implementazione di relay in Go, ha rafforzato questa settimana tre percorsi di applicazione delle regole: &lt;a href="https://github.com/mattn/cagliostr/pull/7">proof-of-work NIP-13 configurabile&lt;/a> sugli eventi in ingresso, &lt;a href="https://github.com/mattn/cagliostr/pull/8">eliminazione NIP-09 per coordinate indirizzabili&lt;/a>, così gli eventi sostituibili possono essere eliminati tramite il loro tag &lt;code>a&lt;/code>, cosa impossibile con la sola eliminazione per id evento, e &lt;a href="https://github.com/mattn/cagliostr/pull/9">limiti temporali NIP-22 configurabili&lt;/a>, che rifiutano eventi datati troppo nel passato o nel futuro.&lt;/p>
&lt;hr>
&lt;h2 id="nuovi-progetti-monitorati-e-scoperti">Nuovi progetti monitorati e scoperti&lt;/h2>
&lt;p>La &lt;a href="https://git.vanderwarker.family/wellbeing">suite per il benessere Vanderwarker&lt;/a> pubblica telemetria del mondo fisico come eventi Nostr tramite una chiave di firma condivisa del publisher. Comprende cinque app collegate: &lt;a href="https://git.vanderwarker.family/wellbeing/holyfit-android">Holy Fit&lt;/a> è un contapassi che registra dati di fitness su Nostr come &lt;code>kind:30078&lt;/code>; &lt;a href="https://git.vanderwarker.family/wellbeing/nunlock-android">Nunlock&lt;/a> pubblica ogni giorno il numero di sblocchi del telefono; &lt;a href="https://git.vanderwarker.family/wellbeing/saintstream-android">Saint Stream&lt;/a> pubblica la riproduzione multimediale corrente come User Status; &lt;a href="https://git.vanderwarker.family/wellbeing/sistercharge-android">Sister Charge&lt;/a> pubblica ogni 15 minuti livello, tensione e temperatura della batteria; &lt;a href="https://git.vanderwarker.family/wellbeing/cellibacy-android">Cellibacy&lt;/a> pubblica il consumo giornaliero di dati. Tutte e cinque sono apparse su Zapstore fra il 24 e il 30 giugno.&lt;/p>
&lt;p>&lt;a href="https://github.com/f321x/ntrack/releases/tag/v0.1.9">ntrack v0.1.9&lt;/a> è un&amp;rsquo;app Android serverless per la condivisione cifrata della posizione in tempo reale, realizzata in Rust e Slint e pubblicata il 29 giugno. È un progetto collegato a &lt;a href="https://github.com/mehmetefeumit/Haven-App">Haven&lt;/a>, il sistema di condivisione della posizione basato su &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> descritto nel &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-24-newsletter/#haven-launches-private-location-sharing-on-marmot">numero 28&lt;/a>, ma usa un&amp;rsquo;architettura di trasporto diversa: gli aggiornamenti della posizione viaggiano in DM Nostr cifrati, mentre Haven usa messaggi di gruppo Marmot.&lt;/p>
&lt;p>&lt;a href="https://git.nostrdev.com/stuff/NostrAppShell">NostrAppShell&lt;/a> è uno scaffold iniziale di shell applicativa per costruire app Nostr. Questa settimana il progetto ha pubblicato la sua prima documentazione rivolta agli utenti.&lt;/p>
&lt;p>&lt;a href="https://nips.pollerama.fun">NIPs by Pollerama&lt;/a>, repository &lt;a href="https://github.com/abh3po/better-nips">abh3po/better-nips&lt;/a> creato il 2026-06-29, è un nuovo client per i NIP &lt;code>kind:30817&lt;/code> scritti dalla community di &lt;a href="https://nostrhub.io">NostrHub&lt;/a>, proposto come superficie alternativa a nostrhub.io con ponderazione basata sulla fiducia. Ogni NIP &lt;code>kind:30817&lt;/code> ha un proprio URL condivisibile (&lt;code>#/nip/&amp;lt;naddr&amp;gt;&lt;/code>), con rendering Markdown completo e i kind di evento che definisce. Il client offre tre feed, Following, Web of Trust (follow dei follow) e Global, ciascuno ordinabile per approvazioni ponderate in base alla fiducia o per data. Le approvazioni vengono pubblicate come label &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> su kind &lt;code>1985&lt;/code>, con i tag &lt;code>[&amp;quot;L&amp;quot;,&amp;quot;nostrhub&amp;quot;]&lt;/code> e &lt;code>[&amp;quot;l&amp;quot;,&amp;quot;approve&amp;quot;,&amp;quot;nostrhub&amp;quot;]&lt;/code>, oltre a un tag &lt;code>a&lt;/code> che punta all&amp;rsquo;indirizzo del NIP obiettivo e a un tag &lt;code>client&lt;/code> che dichiara &lt;code>better-nips&lt;/code>. È esattamente la forma di evento firmata dallo stesso NostrHub, così le approvazioni sono compatibili fra i due client. L&amp;rsquo;approvazione di un follow diretto pesa nella classifica più di quella proveniente da un follow di secondo grado.&lt;/p>
&lt;p>Lo stack di firma è &lt;a href="https://www.npmjs.com/package/@formstr/signer">&lt;code>@formstr/signer&lt;/code>&lt;/a>, con una finestra di login completa che comprende signer &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>, bunker e nostrconnect &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, ncryptsec &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> e signer Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>; le sessioni si ricollegano silenziosamente al ricaricamento. Il livello di rete passa attraverso &lt;a href="https://www.npmjs.com/package/@formstr/local-relay">&lt;code>@formstr/local-relay&lt;/code>&lt;/a>, un Web Worker che suddivide l&amp;rsquo;outbox &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> dell&amp;rsquo;utente fra i relay, impedendo che un grande insieme web of trust venga inoltrato in massa a un singolo relay. La posizione progettuale è che i NIP della community, ospitati da NostrHub, in &lt;code>better-nips&lt;/code> o da altri client futuri, siano tutti uguali a livello di protocollo; la classifica deriva dal grafo sociale, non dalla selezione dei moderatori, collegandosi direttamente al flusso di labeling NIP-32 esaminato nell&amp;rsquo;approfondimento del &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-03-newsletter/#nip-deep-dive-nip-32-labeling">numero 25&lt;/a>.&lt;/p>
&lt;p>Questa settimana sono comparsi due nuovi cluster di repository &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>. &lt;a href="https://git.shakespeare.diy/npub14rg4vrt2v374q95ezeeydu3hkdhmzglcj950mggacap4x0lv0gyq04wun7/vidstr.git">Vidstr&lt;/a> è un client Nostr incentrato sui video, mentre un &lt;a href="#ZgotmplZ">cluster nostrapps.com&lt;/a> pubblica tre progetti collegati: &lt;a href="https://gitnostr.com/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6/verdana.git">verdana&lt;/a>, una VM per napp desktop; &lt;a href="https://gitnostr.com/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6/hallway.git">hallway&lt;/a>, un client personalizzabile per community; e &lt;a href="https://gitnostr.com/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6/napps.git">napps&lt;/a>, una specifica e runtime per microapp HTML. Il cluster si colloca in parallelo al lavoro sui &lt;a href="https://nostrcompass.org/it/topics/nip-5d/">napplet&lt;/a> trattato nella storia principale dello scorso numero.&lt;/p>
&lt;hr>
&lt;h2 id="lavoro-sul-protocollo-e-aggiornamenti-dei-nip">Lavoro sul protocollo e aggiornamenti dei NIP&lt;/h2>
&lt;h3 id="integrata-nip-44-elimina-il-limite-di-payload-di-65535-byte">Integrata: NIP-44 elimina il limite di payload di 65.535 byte&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/1907">PR #1907&lt;/a> è stata integrata il 28 giugno dopo essere rimasta aperta dal 2024-09. La modifica rimuove il limite massimo di 65.535 byte per il payload in chiaro di un envelope di cifratura versionata &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, portandolo a un massimo di 4 GiB (&lt;code>uint32_max&lt;/code>). NIP-44 codifica la lunghezza del payload come &lt;code>uint16&lt;/code> nel formato wire, requisito imposto rigidamente dalla specifica originale per l&amp;rsquo;interoperabilità; la modifica integrata adotta un campo di lunghezza maggiore indicato nel byte di versione, così le implementazioni v2 restano compatibili a livello wire e quelle v3+ trasportano la lunghezza estesa. I client che usano NIP-44 per messaggi diretti &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, payload dei signer remoti &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> o qualsiasi altro messaggio Nostr cifrato con NIP-44 possono ora scambiare singoli eventi più grandi di 64 KiB senza suddividerli a livello applicativo.&lt;/p>
&lt;h3 id="integrate-nip-86-riceve-un-metodo-signevent-e-un-evento-relay-roles">Integrate: NIP-86 riceve un metodo signevent e un evento Relay Roles&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2389">PR #2389&lt;/a> aggiunge un metodo &lt;code>signevent&lt;/code> all&amp;rsquo;API JSON-RPC di gestione dei relay &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a>, permettendo a un amministratore di chiedere al relay di firmare un evento con la pubkey del relay stesso. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2390">PR #2390&lt;/a> associata definisce un evento Relay Roles: un evento sostituibile pubblicato dal relay per dichiarare i propri amministratori e moderatori. Insieme consentono ai client NIP-86 di ricavare l&amp;rsquo;elenco degli amministratori di un relay e verificare che una richiesta autenticata provenga da un amministratore corrente, senza fiducia fuori banda. Entrambe le modifiche sono approfondite più avanti.&lt;/p>
&lt;h3 id="integrata-nip-34-sostituisce-personal-fork-con-u-per-grasp-06">Integrata: NIP-34 sostituisce personal-fork con &lt;code>u&lt;/code> per GRASP-06&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2395">PR #2395&lt;/a>, integrata il 24 giugno, sostituisce il tag &lt;code>personal-fork&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> negli eventi repo-state (&lt;code>kind:30618&lt;/code>) con un tag &lt;code>u&lt;/code>, per &amp;ldquo;upstream&amp;rdquo;, allineando il formato wire alla semantica dei fork GRASP-06 implementata dalla suite GitWorkshop. La modifica chiude la &lt;a href="https://github.com/nostr-protocol/nips/pull/2384">PR #2384&lt;/a>, &lt;code>NIP-34: remove maintainers to solve expiry issues&lt;/code>, che proponeva una diversa correzione alla semantica dei fork. La direzione integrata è quella implementata da ngit v2.6.x, quindi specifica e CLI di riferimento sono ora allineate. I repository esistenti che usano &lt;code>personal-fork&lt;/code> continuano a interoperare; i nuovi repository e la linea ngit v2.6 pubblicano il tag &lt;code>u&lt;/code>.&lt;/p>
&lt;h3 id="integrati-metadati-client-nip-46-ora-upstream-dopo-limplementazione-in-amber">Integrati: metadati client NIP-46, ora upstream dopo l&amp;rsquo;implementazione in Amber&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2381">PR #2381&lt;/a>, integrata il 23 giugno, aggiunge metadati client facoltativi alla richiesta &lt;code>connect&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, consentendo a un client di pubblicare nome, URL dell&amp;rsquo;icona e URL della homepage durante la connessione al signer. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.2">Amber v6.2.2&lt;/a> ha introdotto l&amp;rsquo;estensione dei metadati la scorsa settimana, come descritto nel &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-24-newsletter/#amber-v622-implements-nip-46-client-metadata">numero 28&lt;/a>; questa settimana il NIP upstream raggiunge l&amp;rsquo;implementazione già distribuita.&lt;/p>
&lt;h3 id="aperte-chiavi-wrapper-nip-17-deterministiche-basate-su-epoche">Aperte: chiavi wrapper NIP-17 deterministiche basate su epoche&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2397">PR #2397&lt;/a> e la &lt;a href="https://github.com/nostr-protocol/nips/pull/2396">PR #2396&lt;/a> riguardano due proposte convergenti per le chiavi di wrapping NIP-17. La PR #2397 propone che la chiave di firma effimera usata per creare un gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> sia derivata in modo deterministico da un seed per conversazione, legato a un&amp;rsquo;epoca temporale approssimativa, così un destinatario che conosce la chiave della conversazione può prevedere a quali pubkey sottoscriversi. La specifica attuale richiede una nuova chiave casuale per ogni wrap, rendendo impossibile tale previsione. La PR #2396 è la modifica complementare: i wrap di una determinata conversazione dovrebbero essere firmati direttamente con la chiave della conversazione, così la pubkey del wrap funge anche da identificatore della conversazione. Insieme definiscono un percorso verso conversazioni NIP-17 filtrabili senza perdita di metadati. Entrambe sono aperte e in discussione.&lt;/p>
&lt;h3 id="aperta-nip-59-dovrebbe-far-rifiutare-ai-relay-gli-eventi-seal-kind-13">Aperta: NIP-59 dovrebbe far rifiutare ai relay gli eventi seal kind 13&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2399">PR #2399&lt;/a> propone che i relay rifiutino gli eventi kind 13, il seal interno di un gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, quando compaiono al livello superiore di una richiesta di pubblicazione, perché un evento seal ha senso soltanto dentro un wrap e un seal esposto rivela la pubkey del destinatario. La &lt;a href="https://github.com/nostr-protocol/nips/issues/2398">issue #2398&lt;/a> associata va oltre e sostiene che il seal dovrebbe essere ridefinito come kind effimero, poiché i kind effimeri NIP-01 non vengono memorizzati dai relay; ciò irrobustirebbe la regola a livello di protocollo ed eliminerebbe la dipendenza dalle policy dei singoli relay.&lt;/p>
&lt;h3 id="aperta-stati-dei-gruppi-nip-29">Aperta: stati dei gruppi NIP-29&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2372">PR #2372&lt;/a> aggiunge una semantica esplicita degli stati dei gruppi a &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, dedicato ai gruppi basati su relay, definendo cosa significhi che un gruppo sia aperto, chiuso, pubblico, privato o archiviato e come le transizioni di stato interagiscano con gli eventi dei membri. La proposta porta nella specifica del relay una semantica finora specifica dei singoli client.&lt;/p>
&lt;h3 id="aperta-supporto-facoltativo-per-più-maintainer-in-nip-34">Aperta: supporto facoltativo per più maintainer in NIP-34&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2324">PR #2324&lt;/a> è la proposta complementare alla &lt;a href="https://github.com/nostr-protocol/nips/pull/2395">PR #2395&lt;/a> integrata, relativa alla semantica dei fork GRASP-06 trattata sopra. La PR #2324 aggiunge il supporto facoltativo per più maintainer agli eventi di annuncio dei repository &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (&lt;code>kind:30617&lt;/code>), permettendo a un repository di dichiarare più di una pubkey di maintainer canonico tramite tag &lt;code>maintainer&lt;/code> ripetuti. Patch e issue firmate da qualsiasi maintainer dichiarato vengono quindi considerate ufficiali dai client, colmando la lacuna storica per cui i repository NIP-34 con più maintainer devono convogliare tutto attraverso una pubkey oppure ricorrere al coordinamento fuori protocollo.&lt;/p>
&lt;h3 id="aperta-operatore-and-di-nip-91-per-i-filtri-la-proposta-non-è-integrata">Aperta: operatore AND di NIP-91 per i filtri, la proposta non è integrata&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2252">PR #2252&lt;/a> propone un operatore AND per i &lt;a href="https://nostrcompass.org/it/topics/nip-01/">filtri&lt;/a> Nostr, riaprendo un progetto discusso per la prima volta nella precedente &lt;a href="https://github.com/nostr-protocol/nips/pull/1365">PR #1365&lt;/a>, poi chiusa. Esistono già implementazioni in &lt;a href="https://github.com/v0l/nostr-rs-relay">nostr-rs-relay&lt;/a>, applesauce, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> e worker-relay, ma la PR della specifica resta aperta.&lt;/p>
&lt;h3 id="chiuse-quattro-nip-commerciali-di-pats2sats">Chiuse: quattro NIP commerciali di pats2sats&lt;/h3>
&lt;p>Questa settimana sono state chiuse quattro proposte per il commercio su Nostr: Escrow (&lt;a href="https://github.com/nostr-protocol/nips/pull/2334">#2334&lt;/a>), Reservations (&lt;a href="https://github.com/nostr-protocol/nips/pull/2335">#2335&lt;/a>), una Marketplace Listing Extension &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2346">#2346&lt;/a>) e un Accommodation Listing Profile (&lt;a href="https://github.com/nostr-protocol/nips/pull/2333">#2333&lt;/a>). La stessa superficie commerciale viene ora consolidata nella &lt;a href="https://github.com/GammaMarkets/market-spec">Gamma Market Spec&lt;/a>, un repository di estensioni di proprietà del progetto costruito sugli annunci marketplace NIP-99, con semantica per ordini, checkout, escrow e controversie. Compass ora monitora questo repository insieme a Marmot e Blossom come repository di specifiche di protocollo esterno allo stesso repository NIPs; le PR aperte questa settimana comprendono chiarimenti sull&amp;rsquo;attribuzione del client (&lt;a href="https://github.com/GammaMarkets/market-spec/pull/11">#11&lt;/a>), un tag supersedes per le modifiche all&amp;rsquo;identità dei prodotti (&lt;a href="https://github.com/GammaMarkets/market-spec/pull/8">#8&lt;/a>) e la semantica delle recensioni dei commercianti (&lt;a href="https://github.com/GammaMarkets/market-spec/pull/7">#7&lt;/a>).&lt;/p>
&lt;h3 id="aperte-collegamento-delle-identità-bitcoin">Aperte: collegamento delle identità Bitcoin&lt;/h3>
&lt;p>Questa settimana sono state aperte due proposte per collegare identità Bitcoin a identità Nostr: un &lt;a href="https://github.com/nostr-protocol/nips/pull/2392">indirizzo Bitcoin Silent Payment NIP-352&lt;/a> e una &lt;a href="https://github.com/nostr-protocol/nips/pull/2401">proof di collegamento dell&amp;rsquo;identità Bitcoin-OTC&lt;/a>.&lt;/p>
&lt;hr>
&lt;h2 id="approfondimento-nip-nip-86-api-di-gestione-dei-relay">Approfondimento NIP: NIP-86 (API di gestione dei relay)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a> definisce un&amp;rsquo;interfaccia JSON-RPC per la gestione dei relay, consentendo ai client autorizzati di inviare comandi amministrativi ai relay tramite un&amp;rsquo;API standardizzata. Un unico client può gestire qualsiasi relay compatibile con NIP-86 senza strumenti specifici per ciascuno. Due modifiche alla specifica integrate questa settimana, &lt;a href="https://github.com/nostr-protocol/nips/pull/2389">PR #2389&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/pull/2390">PR #2390&lt;/a>, chiudono il circuito fra eventi firmati dai relay e amministratori dichiarati dai relay.&lt;/p>
&lt;h3 id="il-trasporto">Il trasporto&lt;/h3>
&lt;p>Una richiesta di gestione NIP-86 è un HTTP POST allo stesso URI dal quale il relay serve le connessioni WebSocket, con &lt;code>Content-Type: application/nostr+json+rpc&lt;/code>. Il corpo della richiesta è un documento JSON della forma:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;method-name&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;params&amp;#34;&lt;/span>: [&lt;span style="color:#960050;background-color:#1e0010">&amp;lt;arg&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">&amp;gt;&lt;/span>, &lt;span style="color:#960050;background-color:#1e0010">&amp;lt;arg&lt;/span>&lt;span style="color:#ae81ff">2&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">&amp;gt;&lt;/span>, &lt;span style="color:#960050;background-color:#1e0010">...&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>L&amp;rsquo;autenticazione usa un evento firmato di autenticazione HTTP &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> nell&amp;rsquo;header &lt;code>Authorization&lt;/code>. Prima di eseguire il metodo, il relay verifica che la pubkey firmataria sia nel proprio elenco di amministratori. La risposta del relay è un documento JSON della forma:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;result&amp;#34;&lt;/span>: &lt;span style="color:#960050;background-color:#1e0010">&amp;lt;return-value&amp;gt;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;error&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;error-string-if-any&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="i-metodi-esistenti-prima-di-questa-settimana">I metodi esistenti prima di questa settimana&lt;/h3>
&lt;p>L&amp;rsquo;insieme di metodi preesistente comprende ban delle pubkey (&lt;code>banpubkey&lt;/code>, &lt;code>allowpubkey&lt;/code>, &lt;code>listbannedpubkeys&lt;/code>), ban degli eventi (&lt;code>banevent&lt;/code>, &lt;code>allowevent&lt;/code>, &lt;code>listbannedevents&lt;/code>), metadati del relay (&lt;code>changerelayname&lt;/code>, &lt;code>changerelaydescription&lt;/code>, &lt;code>changerelayicon&lt;/code>), gestione dell&amp;rsquo;elenco dei kind consentiti (&lt;code>allowkind&lt;/code>, &lt;code>disallowkind&lt;/code>, &lt;code>listallowedkinds&lt;/code>) e un metodo &lt;code>stats&lt;/code> che restituisce statistiche del relay. La forma è volutamente simile a quella di un servizio JSON-RPC standard, così un client può costruirvi sopra binding tipizzati.&lt;/p>
&lt;h3 id="cosa-è-cambiato-questa-settimana">Cosa è cambiato questa settimana&lt;/h3>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2389">PR #2389&lt;/a> aggiunge alla specifica un metodo &lt;code>signevent&lt;/code>. Il metodo riceve come argomento un template di evento parziale, con kind, tag e content, e chiede al relay di firmare e restituire un evento completo usando la pubkey del relay nel campo &lt;code>pubkey&lt;/code>. È il prerequisito affinché un relay possa pubblicare eventi di protocollo su se stesso: annunci di pubkey bloccate, metadati del relay e il nuovo evento Relay Roles descritto sotto richiedono tutti che il relay firmi con la chiave controllata dall&amp;rsquo;operatore, ma la maggior parte degli operatori non vuole custodire una chiave privata nel proprio client amministrativo.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2390">PR #2390&lt;/a> definisce un evento Relay Roles: un kind di evento sostituibile parametrizzato che un relay pubblica, firmato con la propria pubkey tramite &lt;code>signevent&lt;/code>, per dichiarare le pubkey dei suoi amministratori e moderatori con una semantica esplicita dei ruoli. Un client consapevole di NIP-86 può recuperare l&amp;rsquo;evento Relay Roles da qualsiasi relay monitorato, costruire l&amp;rsquo;elenco degli amministratori dai tag dell&amp;rsquo;evento e verificare che una richiesta NIP-86 autenticata provenga da un amministratore corrente, senza fiducia fuori banda né configurazione specifica per relay. Le due PR chiudono insieme il circuito: &lt;code>signevent&lt;/code> è il meccanismo, Relay Roles è il primo kind di evento costruito su di esso.&lt;/p>
&lt;h3 id="esempio-di-richiesta-nip-86">Esempio di richiesta NIP-86&lt;/h3>
&lt;p>Una richiesta NIP-86 &lt;code>banpubkey&lt;/code> completa ha questa forma:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;banpubkey&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;params&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;64-char-hex-pubkey-to-ban&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;spam&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>con un header &lt;code>Authorization&lt;/code> che trasporta un evento firmato NIP-98:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5e1c2f9e1d3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1782824400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">27235&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;u&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://relay.example.com/&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;method&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;POST&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;payload&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;sha256-of-request-body&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a697887766554433221100ffeeddccbbaa99887766554433221100f1e2d3c4b5a697887766554433221100ffeeddccbbaa99887766554433221100&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La pubkey firmataria deve comparire nell&amp;rsquo;insieme degli amministratori del relay, ora dichiarato nell&amp;rsquo;evento relay-roles; il tag &lt;code>u&lt;/code> deve corrispondere all&amp;rsquo;URL HTTPS del relay; il tag &lt;code>payload&lt;/code> deve corrispondere allo SHA-256 del corpo JSON della richiesta. Il relay restituisce:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;result&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;error&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">null&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="implementazioni">Implementazioni&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> offre su Android un&amp;rsquo;interfaccia di gestione dei relay NIP-86 dalla v1.07.0 in poi.&lt;/li>
&lt;li>Fra i relay di riferimento che implementano la specifica vi sono &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>, &lt;a href="https://github.com/fiatjaf/khatru">khatru&lt;/a> e diverse implementazioni minori collegate dalla sezione &lt;code>Implementation Status&lt;/code> della specifica.&lt;/li>
&lt;/ul>
&lt;p>I client consapevoli di NIP-86 inizieranno a trattare l&amp;rsquo;evento relay-roles come fonte canonica dell&amp;rsquo;elenco degli amministratori di un relay, quando gli implementatori adotteranno le modifiche &lt;code>signevent&lt;/code> e Relay Roles.&lt;/p>
&lt;hr>
&lt;h2 id="approfondimento-nip-nip-89-application-handler-consigliati">Approfondimento NIP: NIP-89 (application handler consigliati)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> definisce due kind di eventi sostituibili parametrizzati, &lt;code>kind:31990&lt;/code>, l&amp;rsquo;application handler pubblicato dallo sviluppatore di un&amp;rsquo;app, e &lt;code>kind:31989&lt;/code>, la raccomandazione pubblicata dall&amp;rsquo;utente per un&amp;rsquo;app che utilizza. Insieme permettono ai client di scoprire applicazioni capaci di gestire un kind di evento sconosciuto senza coordinamento fuori banda: un lettore long-form che incontra un evento &lt;code>kind:30030&lt;/code> non gestito nativamente può interrogare il grafo NIP-89 alla ricerca di handler e offrire all&amp;rsquo;utente un flusso &lt;code>Open in...&lt;/code> verso un&amp;rsquo;app pubblicata che sappia gestirlo. NIP-89 è l&amp;rsquo;infrastruttura originaria per lo stesso problema di instradamento fra app che il lavoro su napplet e napps presente in questo numero sta ora estendendo ad applet componibili native di Nostr.&lt;/p>
&lt;h3 id="levento-application-handler-kind31990">L&amp;rsquo;evento application handler (&lt;code>kind:31990&lt;/code>)&lt;/h3>
&lt;p>Lo sviluppatore di un&amp;rsquo;app pubblica uno o più eventi handler che descrivono quali kind di evento sono supportati dall&amp;rsquo;app e come aprire un&amp;rsquo;entità Nostr al suo interno:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1782824400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31990&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;longform-reader-v1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30023&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30024&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;web&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://reader.example.com/a/&amp;lt;bech32&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;naddr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;ios&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;longformreader://open/&amp;lt;bech32&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;android&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;longformreader://open/&amp;lt;bech32&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;name\&amp;#34;: \&amp;#34;Longform Reader\&amp;#34;, \&amp;#34;picture\&amp;#34;: \&amp;#34;https://reader.example.com/icon.png\&amp;#34;, \&amp;#34;about\&amp;#34;: \&amp;#34;A native reader for NIP-23 longform.\&amp;#34;}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1f2e3d4c5b6a798877665544332211000ffeeddccbbaa99887766554433221100ffeeddccbbaa99887766554433221100ffeeddccbbaa9988776655443322110a&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il tag &lt;code>d&lt;/code> identifica l&amp;rsquo;handler, così può essere sostituito; ogni tag &lt;code>k&lt;/code> dichiara un kind di evento gestito dall&amp;rsquo;app e ogni tag di piattaforma (&lt;code>web&lt;/code>, &lt;code>ios&lt;/code>, &lt;code>android&lt;/code>, &amp;hellip;) fornisce un template URL con &lt;code>&amp;lt;bech32&amp;gt;&lt;/code> come segnaposto per un&amp;rsquo;entità codificata secondo &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a>, che il client chiamante sostituisce al momento dell&amp;rsquo;apertura. Un singolo evento handler può pubblicizzare più kind supportati se condividono lo stesso schema di instradamento, mantenendo compatta la scoperta delle app ed evitando un evento handler per ogni kind.&lt;/p>
&lt;h3 id="levento-di-raccomandazione-dellutente-kind31989">L&amp;rsquo;evento di raccomandazione dell&amp;rsquo;utente (&lt;code>kind:31989&lt;/code>)&lt;/h3>
&lt;p>Un utente pubblica una raccomandazione che dichiara quali app usa per un determinato kind di evento:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1782824500&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31989&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30023&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31990:c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2:longform-reader-v1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;web&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31990:e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6:reader-pro&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ios&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il tag &lt;code>d&lt;/code> contiene il kind di evento raccomandato. Ogni tag &lt;code>a&lt;/code> è un puntatore di indirizzo NIP-01 a un evento handler &lt;code>kind:31990&lt;/code>, con il relay suggerito e la piattaforma a cui si applica la raccomandazione. La stessa raccomandazione può elencare più app per piattaforme differenti.&lt;/p>
&lt;h3 id="il-client-tag-e-il-compromesso-sulla-privacy">Il client tag e il compromesso sulla privacy&lt;/h3>
&lt;p>NIP-89 definisce inoltre un tag &lt;code>client&lt;/code> facoltativo che qualsiasi app di pubblicazione può allegare agli eventi di cui è autrice:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;client&amp;#34;, &amp;#34;Longform Reader&amp;#34;, &amp;#34;31990:c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2:longform-reader-v1&amp;#34;, &amp;#34;wss://relay.example.com&amp;#34;]
&lt;/code>&lt;/pre>&lt;p>Ciò consente a qualsiasi client che mostra l&amp;rsquo;evento di presentare l&amp;rsquo;app da cui proviene, recuperare metadati più ricchi dell&amp;rsquo;handler e rispettare i suggerimenti di rendering dichiarati dall&amp;rsquo;handler. La specifica segnala esplicitamente anche il costo per la privacy: un client che emette un tag &lt;code>client&lt;/code> su ogni evento pubblica l&amp;rsquo;identità del software dell&amp;rsquo;utente, rivelando nel tempo schemi di utilizzo. La specifica raccomanda ai client di offrire agli utenti la possibilità di disattivarlo.&lt;/p>
&lt;p>La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3422">PR #3422&lt;/a> di Amethyst analizza e mostra i tag NIP-89 &lt;code>t&lt;/code>, &lt;code>i&lt;/code>, &lt;code>a&lt;/code> e &lt;code>client&lt;/code> nella visualizzazione degli eventi, indicando direttamente nella timeline quale app ha creato una nota.&lt;/p>
&lt;h3 id="come-funziona-in-pratica-il-flusso-di-scoperta">Come funziona in pratica il flusso di scoperta&lt;/h3>
&lt;p>Un client che riceve un kind di evento sconosciuto segue questi passaggi. (1) Interroga il grafo dei follow dell&amp;rsquo;utente alla ricerca di eventi &lt;code>kind:31989&lt;/code> con un tag &lt;code>d&lt;/code> corrispondente al kind dell&amp;rsquo;evento. (2) Risolve ogni tag &lt;code>a&lt;/code> raccomandato nel relativo evento handler &lt;code>kind:31990&lt;/code>. (3) Sceglie l&amp;rsquo;handler il cui template URL &lt;code>web&lt;/code>, &lt;code>ios&lt;/code> o &lt;code>android&lt;/code> corrisponde alla piattaforma corrente. (4) Sostituisce nel template URL la codifica &lt;code>bech32&lt;/code> dell&amp;rsquo;entità. (5) Offre all&amp;rsquo;utente l&amp;rsquo;URL risultante come opzione &lt;code>Open in...&lt;/code>. Il flusso è filtrato socialmente: un client che interroghi eventi handler arbitrari da relay non fidati potrebbe reindirizzare gli utenti verso app malevole, quindi partire dalle persone seguite dall&amp;rsquo;utente è un&amp;rsquo;impostazione predefinita più sicura che considerare ugualmente affidabile ogni handler pubblicato.&lt;/p>
&lt;h3 id="nip-89-e-il-livello-napplet">NIP-89 e il livello napplet&lt;/h3>
&lt;p>La sezione Discover di Amethyst, il runtime host per napplet e la visualizzazione dei tag &lt;code>client&lt;/code> costruiscono insieme una superficie completa di consumo NIP-89 su Android. La specifica napplet, introdotta nello scorso numero, estende ciò a cui possono puntare gli eventi handler NIP-89: applet in sandbox che vengono eseguite in un runtime componibile nativo di Nostr, sopra Nostr e Blossom. NIP-89 è il grafo di scoperta e instradamento; il runtime napplet è uno dei target di esecuzione a cui può puntare.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Per segnalazioni, correzioni e progetti che ci sono sfuggiti, aprite una issue su &lt;a href="https://github.com/andotherstuff/nostr-compass">github.com/andotherstuff/nostr-compass&lt;/a> oppure contattateci tramite DM NIP-17 all&amp;rsquo;indirizzo npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923.&lt;/em>&lt;/p></content:encoded></item><item><title>Nostr Compass #28</title><link>https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/</link><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#sprout-rebrands-to-buzz-and-publishes-personas-teams-and-managed-agents-as-relay-events">Sprout cambia nome in Buzz&lt;/a> e inizia a pubblicare persona, team e record degli agent gestiti come event sui relay Nostr, mentre lo stato di lettura tra dispositivi e i marcatori di lettura per messaggio sostituiscono il vecchio modello della soglia dei badge. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#napplets-composable-nostr-apps-with-a-defined-trust-boundary">Napplets&lt;/a> di sandwich.farm debutta come protocollo con un confine di fiducia per app Nostr componibili distribuite tramite Nostr e Blossom. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#conduit-hardens-the-marketplace-mvp-and-switches-to-its-public-relay-by-default">Conduit&lt;/a>, un monorepo di marketplace su Nostr con tre app (mercato per acquirenti, portale per commercianti e generatore di negozi, con directory NIP e specifiche proprie nel repository), integra 17 PR che irrobustiscono l&amp;rsquo;MVP del marketplace, passa al proprio relay pubblico per impostazione predefinita e aggiunge analytics rispettosi della privacy. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#bitblik-launches-a-p2p-blik-to-lightning-exchange-protocol-over-nostr">BitBlik&lt;/a> pubblica un protocollo di scambio P2P da BLIK a Lightning tramite DM Nostr cifrati, con un coordinatore che regola atomicamente fra valuta fiat e hold invoice Lightning. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#amethyst-patches-follow-up-the-v1120-launch">Amethyst&lt;/a> fa seguito al lancio della scorsa settimana dedicato a wallet, podcast e allenamenti con Health Connect Workouts, Road Events, risposte comprimibili, monitoraggio dello stato della latenza relay con classificatore e una correzione per la notarizzazione macOS. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#amber-implements-nip-46-client-metadata">Amber&lt;/a> implementa l&amp;rsquo;estensione dei metadati client di NIP-46 proposta la scorsa settimana, mostrando icone e identità delle app native nelle schermate delle richieste del signer. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#haven-launches-private-location-sharing-on-marmot">Haven&lt;/a> lancia la condivisione privata della posizione sul protocollo di messaggistica cifrata Marmot. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#codedeck-remote-agentic-coding-over-nostr">CodeDeck&lt;/a> consente di controllare dal telefono le sessioni Claude Code in esecuzione sul portatile tramite relay Nostr cifrati, poi riduce l&amp;rsquo;abbinamento a una sola scansione QR e aggiunge la selezione del modello per sessione. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#grain-ships-a-full-nostr-client-engine">Grain&lt;/a> pubblica una libreria client Nostr importabile in Go che usa il modello outbox. Mostro Core, Wisp insieme a Dark Wisp, Citrine, FIPS, Kubo (canali YouTube selezionati dai genitori e feed per bambini obbligatoriamente protetto dalla fiducia) e Pollerama (un punteggio web-of-trust, un motore relay on-device e una sezione «Persone che potresti conoscere») pubblicano patch successive. Il lavoro non ancora rilasciato comprende un coordinatore MLS nel browser di sandwich.farm, lo sprint di iterazione UX di nostter, la correzione NIP-46 tra progetti e la revisione del composer di Zap Cooking, il ciclo di escrow Cashu di Shopstr, divine.video e Nostur. Fra i nuovi progetti monitorati figurano Social Agents Prototype, PRana per il triage delle issue git-over-Nostr e routstr-chat. Sul fronte del protocollo, NIP-99 riceve una proposta di checkout ed escrow on-graph direttamente collegata al lavoro di Conduit, BitBlik e Shopstr sul commercio. Poiché questo è l&amp;rsquo;ultimo Compass di giugno, il numero si chiude con &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#six-years-of-nostr-junes">Sei anni di giugno su Nostr&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#sprout-rebrands-to-buzz-and-publishes-personas-teams-and-managed-agents-as-relay-events">Sprout cambia nome in Buzz&lt;/a> e inizia a pubblicare persona, team e record degli agent gestiti come event sui relay Nostr, mentre lo stato di lettura tra dispositivi e i marcatori di lettura per messaggio sostituiscono il vecchio modello della soglia dei badge. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#napplets-composable-nostr-apps-with-a-defined-trust-boundary">Napplets&lt;/a> di sandwich.farm debutta come protocollo con un confine di fiducia per app Nostr componibili distribuite tramite Nostr e Blossom. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#conduit-hardens-the-marketplace-mvp-and-switches-to-its-public-relay-by-default">Conduit&lt;/a>, un monorepo di marketplace su Nostr con tre app (mercato per acquirenti, portale per commercianti e generatore di negozi, con directory NIP e specifiche proprie nel repository), integra 17 PR che irrobustiscono l&amp;rsquo;MVP del marketplace, passa al proprio relay pubblico per impostazione predefinita e aggiunge analytics rispettosi della privacy. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#bitblik-launches-a-p2p-blik-to-lightning-exchange-protocol-over-nostr">BitBlik&lt;/a> pubblica un protocollo di scambio P2P da BLIK a Lightning tramite DM Nostr cifrati, con un coordinatore che regola atomicamente fra valuta fiat e hold invoice Lightning. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#amethyst-patches-follow-up-the-v1120-launch">Amethyst&lt;/a> fa seguito al lancio della scorsa settimana dedicato a wallet, podcast e allenamenti con Health Connect Workouts, Road Events, risposte comprimibili, monitoraggio dello stato della latenza relay con classificatore e una correzione per la notarizzazione macOS. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#amber-implements-nip-46-client-metadata">Amber&lt;/a> implementa l&amp;rsquo;estensione dei metadati client di NIP-46 proposta la scorsa settimana, mostrando icone e identità delle app native nelle schermate delle richieste del signer. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#haven-launches-private-location-sharing-on-marmot">Haven&lt;/a> lancia la condivisione privata della posizione sul protocollo di messaggistica cifrata Marmot. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#codedeck-remote-agentic-coding-over-nostr">CodeDeck&lt;/a> consente di controllare dal telefono le sessioni Claude Code in esecuzione sul portatile tramite relay Nostr cifrati, poi riduce l&amp;rsquo;abbinamento a una sola scansione QR e aggiunge la selezione del modello per sessione. &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#grain-ships-a-full-nostr-client-engine">Grain&lt;/a> pubblica una libreria client Nostr importabile in Go che usa il modello outbox. Mostro Core, Wisp insieme a Dark Wisp, Citrine, FIPS, Kubo (canali YouTube selezionati dai genitori e feed per bambini obbligatoriamente protetto dalla fiducia) e Pollerama (un punteggio web-of-trust, un motore relay on-device e una sezione «Persone che potresti conoscere») pubblicano patch successive. Il lavoro non ancora rilasciato comprende un coordinatore MLS nel browser di sandwich.farm, lo sprint di iterazione UX di nostter, la correzione NIP-46 tra progetti e la revisione del composer di Zap Cooking, il ciclo di escrow Cashu di Shopstr, divine.video e Nostur. Fra i nuovi progetti monitorati figurano Social Agents Prototype, PRana per il triage delle issue git-over-Nostr e routstr-chat. Sul fronte del protocollo, NIP-99 riceve una proposta di checkout ed escrow on-graph direttamente collegata al lavoro di Conduit, BitBlik e Shopstr sul commercio. Poiché questo è l&amp;rsquo;ultimo Compass di giugno, il numero si chiude con &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-24-newsletter/#six-years-of-nostr-junes">Sei anni di giugno su Nostr&lt;/a>.&lt;/p>
&lt;hr>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="amethyst-patches-follow-up-the-v1120-launch">Da Amethyst v1.12.1 a v1.12.6 dopo il lancio della v1.12.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha fatto seguire al &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-17-newsletter/#amethyst-v1120-ships-cashu-wallets-nutzaps-a-clink-driver-and-tor-self-heal">lancio della v1.12.0 della scorsa settimana&lt;/a> sei patch rapide fra mercoledì e venerdì. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.1">La v1.12.1&lt;/a> aggiunge Health Connect Workouts e un&amp;rsquo;azione Share-as-Image e rende deterministico il flag &lt;code>Active&lt;/code> di Tor, così la callback di bootstrap non può entrare in race con il gate. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.2">La v1.12.2&lt;/a> aggiunge Road Events e risposte comprimibili, &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.3">la v1.12.3&lt;/a> introduce il monitoraggio dello stato della latenza relay con classificatore e dashboard, oltre a una correzione per la notarizzazione macOS, mentre &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.4">dalla v1.12.4&lt;/a> &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.6">alla v1.12.6&lt;/a> arrivano passaggi di traduzione Crowdin e l&amp;rsquo;automazione dei crediti ai traduttori.&lt;/p>
&lt;h3 id="sprout-rebrands-to-buzz-and-publishes-personas-teams-and-managed-agents-as-relay-events">Sprout cambia nome in Buzz e pubblica persona, team e agent gestiti come event relay&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">Sprout&lt;/a>, lo spazio di lavoro self-hostable di Block in cui persone e agent AI collaborano negli stessi canali e ogni messaggio, reazione, passaggio del workflow, approvazione di revisione ed event git viene scritto come event Nostr firmato, questa settimana è stato rinominato &lt;a href="https://github.com/block/buzz">Buzz&lt;/a>. GitHub ora reindirizza il vecchio slug &lt;code>block/sprout&lt;/code> a &lt;code>block/buzz&lt;/code>; repository, licenza e direzione del prodotto non sono cambiati. Tutti i riferimenti a Sprout nei numeri precedenti riguardano lo stesso progetto.&lt;/p>
&lt;p>Insieme al cambio di nome, la settimana ha portato un lavoro sostanziale sul prodotto. Persona, team e record degli agent gestiti ora vengono pubblicati come event sui relay Nostr tramite la &lt;a href="https://github.com/block/buzz/pull/1189">PR #1189&lt;/a>, consentendo alla stessa identità agent di comparire in più spazi di lavoro e audit log senza duplicare lo stato. Un nuovo pannello desktop mostra sui profili le attestazioni del proprietario NIP-OA (&lt;a href="https://github.com/block/buzz/pull/1198">PR #1198&lt;/a>); la soglia dei badge non letti nei thread dei canali è stata sostituita da marcatori di lettura per messaggio, così i conteggi restano accurati fra dispositivi (&lt;a href="https://github.com/block/buzz/pull/1178">PR #1178&lt;/a>); e la posta in arrivo aggiunge attribuzione dell&amp;rsquo;autore e della fonte agli event promemoria (&lt;a href="https://github.com/block/buzz/pull/1176">PR #1176&lt;/a>).&lt;/p>
&lt;p>I canali temporanei ora scadono per impostazione predefinita dopo 7 giorni (&lt;a href="https://github.com/block/buzz/pull/1182">PR #1182&lt;/a>); gli override dei relay per agent rispettano il relay configurato prima di ripiegare su quello predefinito dello spazio di lavoro (&lt;a href="https://github.com/block/buzz/pull/1131">PR #1131&lt;/a>); e la build Windows ora include una toolchain Git for Windows completa per lo strumento shell (&lt;a href="https://github.com/block/buzz/pull/1145">PR #1145&lt;/a>).&lt;/p>
&lt;h3 id="napplets-composable-nostr-apps-with-a-defined-trust-boundary">Napplets: app Nostr componibili con un confine di fiducia definito&lt;/h3>
&lt;p>Questa settimana Sandwich.farm ha annunciato &lt;a href="https://napplet.run">napplet.run&lt;/a>, un protocollo per applet Nostr componibili, o napplet: piccoli programmi che svolgono una sola funzione, vengono eseguiti in ambienti sandbox e sono risolti tramite Nostr e Blossom usando la stessa forma di event degli nsite. Il progetto è distribuito su tre repository: &lt;a href="https://github.com/napplet/web">napplet/web&lt;/a>, che contiene i pacchetti web e questa settimana ha pubblicato in un lancio coordinato 51 tag di versione per i sottopacchetti (&lt;code>@napplet/core&lt;/code>, &lt;code>@napplet/sdk&lt;/code>, &lt;code>@napplet/nap&lt;/code>, &lt;code>@napplet/shim&lt;/code>, &lt;code>@napplet/conformance&lt;/code>); &lt;a href="https://github.com/napplet/naps">napplet/naps&lt;/a>, il filone di specifiche NAP con 15 PR integrate; e &lt;a href="https://github.com/kehto/web">kehto/web&lt;/a>, il runtime web con 41 PR integrate e un playground su &lt;a href="https://kehto.github.io/web/playground">kehto.github.io/web/playground&lt;/a>. La PR di specifica corrispondente è &lt;a href="https://github.com/nostr-protocol/nips/pull/2303">NIP-5D #2303&lt;/a>, aperta da dskvr (sandwich.farm).&lt;/p>
&lt;p>La premessa architetturale è un confine di fiducia definito a livello di protocollo. Una shell media le operazioni pericolose (firma, accesso alle chiavi, scritture sui relay), un runtime gestisce l&amp;rsquo;implementazione e l&amp;rsquo;UX di livello superiore, mentre i napplet restano portabili, usa e getta e più difficili da catturare per un singolo host. I napplet possono comunicare fra loro attraverso la stessa shell e, per progetto, non esiste lock-in del runtime. L&amp;rsquo;autore mette i napplet in dialogo con NMP (di Pablof7z) e Tiles (di Soapbox), presentandoli come interpretazioni parallele dello stesso problema, e osserva che il supporto &lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-5d/">NIP-5D&lt;/a> di Amethyst v1.12.6 offre ai napplet almeno un client già distribuito al lancio. È incluso anche un filo storico: il precedente &lt;code>napp.run&lt;/code> di sandwich.farm, un prototipo di app nativa NIP-07, e il browser &lt;code>dryft&lt;/code>, fork di Thorium, hanno entrambi contribuito al progetto attuale prima di essere accantonati.&lt;/p>
&lt;h3 id="conduit-hardens-the-marketplace-mvp-and-switches-to-its-public-relay-by-default">Conduit irrobustisce l&amp;rsquo;MVP del marketplace e passa al relay pubblico per impostazione predefinita&lt;/h3>
&lt;p>&lt;a href="https://github.com/Conduit-BTC/conduit-mono">Conduit&lt;/a> è il monorepo con tre app del marketplace su &lt;a href="https://conduit.market">conduit.market&lt;/a>, ossia Market per gli acquirenti, Merchant Portal e Store Builder, sotto l&amp;rsquo;organizzazione &lt;code>Conduit-BTC&lt;/code>. Comprende directory &lt;code>nips/&lt;/code> e &lt;code>specs/&lt;/code> proprie che definiscono primitive commerciali Nostr specifiche di Conduit, con l&amp;rsquo;estensione &lt;a href="https://github.com/fiatjaf/khatru">khatru&lt;/a> Scope-2 &lt;a href="https://github.com/Conduit-BTC/conduit-relay">Conduit-BTC/conduit-relay&lt;/a> in esecuzione sotto il sistema. Entrambi i repository sono stati aperti all&amp;rsquo;inizio dell&amp;rsquo;anno; questa settimana il progetto ha integrato 17 PR per irrobustire l&amp;rsquo;MVP del marketplace.&lt;/p>
&lt;p>Le PR distribuite si concentrano sulla correttezza del marketplace: stati di sicurezza delle inserzioni (&lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/110">PR #110&lt;/a>) e rafforzamento lato commerciante dei prezzi dei prodotti e delle zone di spedizione (&lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/115">PR #115&lt;/a>). Sul lato relay, la &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/102">PR #102&lt;/a> corregge il rilevamento delle capacità commerciali, la &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/112">PR #112&lt;/a> ignora gli hint di relay insicuri forniti da terzi e la &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/128">PR #128&lt;/a> imposta il dominio del relay pubblico di Conduit come predefinito per i nuovi client. Analytics rispettosi della privacy arrivano nelle &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/109">PR #109&lt;/a> e &lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/129">#129&lt;/a>, mentre un aggiornamento di &lt;code>dompurify&lt;/code> chiude un advisory OSV (&lt;a href="https://github.com/Conduit-BTC/conduit-mono/pull/116">PR #116&lt;/a>). Il lavoro si colloca in una più ampia ondata commerciale &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> di questa settimana: la &lt;a href="https://github.com/nostr-protocol/nips/pull/2323">PR #2323&lt;/a> propone per i mercati NIP-99 un livello di checkout on-graph che copre flusso dell&amp;rsquo;ordine, escrow e controversie; la storica &lt;a href="https://github.com/GammaMarkets/market-spec">Gamma Markets Market Spec&lt;/a>, che estende NIP-99 per l&amp;rsquo;e-commerce completo, diventa il livello di specifica su cui costruiscono Conduit e altri; e Shopstr ha distribuito nello stesso periodo un ciclo di escrow Cashu.&lt;/p>
&lt;h3 id="bitblik-launches-a-p2p-blik-to-lightning-exchange-protocol-over-nostr">BitBlik lancia su Nostr un protocollo di scambio P2P da BLIK a Lightning&lt;/h3>
&lt;p>&lt;a href="https://github.com/bit-blik/bitblik">BitBlik&lt;/a> è stato aperto questa settimana come protocollo peer-to-peer di scambio BLIK ↔ Lightning costruito su Nostr. BLIK è il sistema di pagamento istantaneo emesso dalle banche polacche; il coordinatore BitBlik regola atomicamente fra fiat BLIK, pagata dai taker, e hold invoice Lightning, finanziate dai maker, mentre il ciclo della transazione avviene su Nostr. L&amp;rsquo;app Flutter, la CLI e il coordinatore condividono un pacchetto &lt;code>core&lt;/code>; il progetto viene distribuito dal monorepo GitHub &lt;code>bit-blik/bitblik&lt;/code>, dalla build web &lt;a href="https://www.bitblik.app">www.bitblik.app&lt;/a> e dall&amp;rsquo;app Zapstore &lt;code>app.bitblik&lt;/code>.&lt;/p>
&lt;p>Il protocollo usa messaggi diretti Nostr cifrati (&lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>) per l&amp;rsquo;RPC client-coordinatore. Le offerte sono pubblicate come event sostituibili parametrizzati di kind &lt;code>38383&lt;/code>, le richieste RPC sul kind &lt;code>25195&lt;/code>, le risposte RPC sul kind &lt;code>25196&lt;/code> e gli aggiornamenti di stato sul kind &lt;code>25197&lt;/code>. Il coordinatore trattiene una hold invoice Lightning mentre un taker invia un codice BLIK, rilascia la preimage quando il trasferimento BLIK è confermato e instrada il regolamento dell&amp;rsquo;invoice al maker.&lt;/p>
&lt;hr>
&lt;h2 id="release-con-tag">Release con tag&lt;/h2>
&lt;h3 id="amber-implements-nip-46-client-metadata">Amber v6.2.2 implementa i metadati client NIP-46&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, il principale signer remoto Android &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> mantenuto da greenart7c3, ha pubblicato &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.2">la v6.2.2&lt;/a> nella stessa settimana in cui è stata integrata la PR di specifica corrispondente. La release mostra le icone delle app native e i nuovi campi dei metadati client nelle schermate delle richieste e nell&amp;rsquo;elenco delle app, conserva i metadati client a ogni connessione e acquisisce icona e nome dell&amp;rsquo;app nativa al momento della connessione e dell&amp;rsquo;accettazione. La modifica è direttamente collegata alla &lt;a href="https://github.com/nostr-protocol/nips/pull/2381">PR NIP-46 #2381&lt;/a> di DocNR, che aggiunge metadati client opzionali alla richiesta di connessione, così i signer possono mostrare un nome e un&amp;rsquo;icona significativi per chi fa la richiesta. Amber v6.2.2 aggiunge inoltre il supporto all&amp;rsquo;event kind 30618 e separa relay predefiniti e relay della connessione nella schermata Active relays.&lt;/p>
&lt;p>La release restringe la superficie di sicurezza del signer. I corpi decifrati di richieste e risposte NIP-46 non finiscono più nei log, mentre i payload di cifratura e decifratura sono memorizzati come ciphertext e decifrati su richiesta. Tutto l&amp;rsquo;output logcat è subordinato a &lt;code>BuildConfig.DEBUG&lt;/code>, i chiamanti browser (con pacchetto nullo) sono costretti a chiedere sempre conferma e le copie negli appunti di &lt;code>nsec&lt;/code>, &lt;code>ncryptsec&lt;/code> e parole seed vengono contrassegnate come sensibili e cancellate dopo un intervallo. Sono aggiunte esclusioni esplicite di backup ed estrazione dati come difesa in profondità. La release corregge anche un crash dovuto allo scrolling annidato in Active relays, un crash per chiavi duplicate di &lt;code>LazyColumn&lt;/code> causato da una race nella deduplicazione delle richieste bunker e una race &lt;code>EOSE&lt;/code> nel controllo degli aggiornamenti.&lt;/p>
&lt;h3 id="haven-launches-private-location-sharing-on-marmot">Haven lancia la condivisione privata della posizione su Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/mehmetefeumit/Haven-App">Haven&lt;/a> è stato aperto questa settimana come app Android e iOS privata e resistente alla censura per la condivisione della posizione, eseguita su Nostr tramite il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>. Il repository ha pubblicato cinque release, dalla &lt;a href="https://github.com/mehmetefeumit/Haven-App/releases/tag/v0.1.0">v0.1.0&lt;/a> alla &lt;a href="https://github.com/mehmetefeumit/Haven-App/releases/tag/v0.1.4">v0.1.4&lt;/a>, nell&amp;rsquo;arco di quattro giorni: le prime release di un nuovo progetto. Haven è sviluppato in Dart e Flutter e distribuito tramite Zapstore come app firmata dallo sviluppatore. Marmot, il livello di messaggistica end-to-end cifrata basato su MLS per Nostr, fornisce lo stato di gruppo e la distribuzione del ciphertext; Haven estende questo schema dalla messaggistica alla condivisione della posizione, con lo stato cifrato di ciascun gruppo che trasporta gli aggiornamenti della posizione che il gruppo ha acconsentito a condividere.&lt;/p>
&lt;h3 id="codedeck-remote-agentic-coding-over-nostr">CodeDeck: coding agentico remoto tramite Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/JeroenOnNostr/codedeck">CodeDeck&lt;/a> è stato aperto questa settimana come interfaccia per coding agentico multisessione su Android e desktop, costruita con Tauri v2, React 19 e un backend Rust, che permette di controllare dal telefono sessioni &lt;a href="https://www.anthropic.com/claude-code">Claude Code&lt;/a> in esecuzione su un portatile tramite relay Nostr cifrati. Il progetto ha pubblicato &lt;a href="https://github.com/JeroenOnNostr/codedeck/releases/tag/v2026.06.17">v2026.06.17&lt;/a>, &lt;a href="https://github.com/JeroenOnNostr/codedeck/releases/tag/v2026.6.18">v2026.6.18&lt;/a> e &lt;a href="https://github.com/JeroenOnNostr/codedeck/releases/tag/v2026.6.20">v2026.6.20&lt;/a> nello stesso intervallo di quattro giorni. Il modello di trasporto usa Nostr come piano di controllo cifrato: un telefono con CodeDeck pubblica comandi come event cifrati a cui si iscrive il bridge accanto al portatile, e il portatile pubblica l&amp;rsquo;output della sessione sugli stessi relay.&lt;/p>
&lt;p>La v2026.06.17 incorpora la mesh FIPS di &lt;code>nostr-vpn&lt;/code> come servizio VPN Android dell&amp;rsquo;app, così un portatile può compilare, installare, avviare e controllare da qualsiasi luogo le build di sviluppo di un&amp;rsquo;app su un telefono fisico di test, con CodeDeck come unico software installato sul telefono. La v2026.6.18 unifica abbinamento e invito alla mesh in una singola scansione QR, mentre la v2026.6.20 aggiunge la selezione del modello per sessione, così ogni sessione parte con il modello scelto.&lt;/p>
&lt;h3 id="grain-ships-a-full-nostr-client-engine">Grain v0.8.0-rc1 pubblica un motore client Nostr completo&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/grain">Grain&lt;/a>, il relay Go mantenuto da 0ceanSlim, ha taggato &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.8.0-rc1">v0.8.0-rc1&lt;/a> ed è ora sia un relay Nostr sia la libreria client Go importabile su cui esso stesso è costruito. Mentre la serie v0.7.x si concentrava sulla gestione del relay da browser, la linea v0.8 distribuisce &lt;code>client/core&lt;/code>, un motore client Nostr autonomo e puro Go basato sul modello outbox, senza dipendenze cgo o HTTP. Il motore gestisce un pool di relay condiviso, risolve gli elenchi relay di ogni utente e instrada letture e pubblicazioni secondo il &lt;a href="https://mikedilger.com/gossip-model/">modello gossip / outbox&lt;/a>: si leggono le note di un utente dai suoi relay outbox e una risposta pubblicata raggiunge i relay inbox dell&amp;rsquo;autore della nota parent. Il frontend web di Grain è ora il consumer di riferimento della libreria, quindi l&amp;rsquo;interfaccia è sia un&amp;rsquo;app utilizzabile sia un esempio completo per progetti Go downstream.&lt;/p>
&lt;p>La release introduce cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> nativa (v2 e v3), AUTH relay &lt;a href="https://github.com/nostr-protocol/nips/blob/master/42.md">NIP-42&lt;/a>, elenchi relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/blob/master/37.md">NIP-37&lt;/a>, tag client &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> e supporto media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> più &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a>. Le app Go downstream che prima dovevano reimplementare l&amp;rsquo;instradamento relay ora possono semplicemente fare &lt;code>import&lt;/code> del motore.&lt;/p>
&lt;h3 id="mostro-core-v0131-fa-seguito-a-protocol-v2">Mostro Core v0.13.1 fa seguito a Protocol v2&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core">Mostro Core&lt;/a> ha pubblicato &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.13.1">v0.13.1&lt;/a> come seguito al &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-17-newsletter/#mostro-core-v0130-cuts-the-relay-middleman-with-protocol-v2">rollout di Protocol v2 della scorsa settimana&lt;/a>, introducendo una variante di errore &lt;code>PriceTooStale&lt;/code> per il contratto del price feed del protocollo. Sul lato daemon, questa settimana la &lt;a href="https://github.com/MostroP2P/mostro/pull/752">PR #752&lt;/a> fa sì che gli ID ordine non validi vengano mostrati ai client come errore &lt;code>CantDo(NotFound)&lt;/code> invece di essere ignorati senza risposta; la &lt;a href="https://github.com/MostroP2P/mostro/pull/785">PR #785&lt;/a> fa seguire alla versione interna del protocollo il trasporto attivo; la &lt;a href="https://github.com/MostroP2P/mostro/pull/778">PR #778&lt;/a> introduce la fase 3 del provider El Toque per i cambi fiat CUP e MLC; e la &lt;a href="https://github.com/MostroP2P/mostro/pull/782">PR #782&lt;/a> rinomina il tag informativo &lt;a href="https://github.com/nostr-protocol/nips/blob/master/33.md">NIP-33&lt;/a> da &lt;code>protocol_versions&lt;/code> a &lt;code>protocol_version&lt;/code> per allinearlo alla specifica.&lt;/p>
&lt;h3 id="wisp-v112-e-la-variante-dark-wisp">Wisp v1.1.2 e la variante Dark Wisp&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, il client Android Kotlin e Jetpack Compose di barrydeen, ha pubblicato &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.2">v1.1.2&lt;/a>, che mantiene distinti i passaggi di wallet verso se stessi nell&amp;rsquo;ordine deterministico delle transazioni (&lt;a href="https://github.com/barrydeen/wisp/pull/586">PR #586&lt;/a>), crea in modo lazy i player video inline per resistere alle note ricche di media (&lt;a href="https://github.com/barrydeen/wisp/pull/592">PR #592&lt;/a>), corregge una &lt;code>ConcurrentModificationException&lt;/code> nell&amp;rsquo;insieme event-relay (&lt;a href="https://github.com/barrydeen/wisp/pull/595">PR #595&lt;/a>) e risolve un problema di misurazione intrinseca del contenuto delle bolle di chat per evitare un crash di &lt;code>SubcomposeLayout&lt;/code> (&lt;a href="https://github.com/barrydeen/wisp/pull/596">PR #596&lt;/a>). La release introduce anche un filtro feed incrementale con valutazione dello spam fuori dal lock. Questa settimana il team Wisp ha inoltre pubblicato su Zapstore Dark Wisp v1.1.0, una variante multivaluta che aggiunge obiettivi zap ZEC, DASH, BCH e LTC più una modalità anonima.&lt;/p>
&lt;h3 id="citrine-v301">Citrine v3.0.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>, il relay Nostr locale Android di greenart7c3, ha pubblicato &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.0.1">v3.0.1&lt;/a> con una sola correzione: la rimozione della registrazione di un receiver Pokey non registrato non provoca più un crash del relay.&lt;/p>
&lt;h3 id="fips-v040-rc2">FIPS v0.4.0-rc2&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, il Free Internetworking Peering System, ha taggato &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.4.0-rc2">v0.4.0-rc2&lt;/a> come release candidate di convalida del packaging basata sul formato wire v0.3.x. La linea v0.4.0 aggiunge un trasporto mixnet Nym e discovery LAN mDNS opzionale per la raggiungibilità dei peer, rivede il piano dati per ottenere più throughput su singolo nodo e meno CPU per pacchetto, sposta la superficie operativa di lettura fuori dall&amp;rsquo;hot path del piano dati affinché l&amp;rsquo;osservabilità resti reattiva sotto carico, distribuisce una TUI &lt;code>fipstop&lt;/code> rielaborata e irrobustisce il rekey FMP e FSP affinché non interrompa il traffico in caso di perdita di pacchetti. Questa è una release candidate; la versione stabile v0.4.0 era prevista provvisoriamente per il 21 giugno 2026.&lt;/p>
&lt;h3 id="kubo-v20260612-e-v20260620-bloccano-il-feed-per-bambini-protetto-dalla-fiducia-e-aggiungono-youtube-selezionato-dai-genitori">Kubo v2026.06.12 e v2026.06.20 bloccano il feed per bambini protetto dalla fiducia e aggiungono YouTube selezionato dai genitori&lt;/h3>
&lt;p>&lt;a href="https://github.com/JeroenOnNostr/kubo">Kubo&lt;/a>, l&amp;rsquo;alternativa Nostr-native a YouTube Kids di JeroenOnNostr costruita sul Trust Extended Permissions Protocol (TEPP), ha pubblicato due release questa settimana. &lt;a href="https://zapstore.dev/apps/com.kubo.app">La v2026.06.12&lt;/a>, con versionamento a calendario e &lt;code>versionCode&lt;/code> derivato &lt;code>YYYYMMDD&lt;/code>, rende obbligatorio il feed per bambini protetto dalla fiducia: ogni post, profilo, reazione e repost che il bambino può vedere o con cui può interagire passa ora attraverso TEPP, limitato alle persone ammesse dal genitore. Le nuove installazioni iniziano con il gate di fiducia attivo e la cerchia del bambino inizializzata durante l&amp;rsquo;onboarding, così il feed è sicuro dal primo avvio. La release introduce anche chat di gruppo gestita per i genitori, instrada gli event di fiducia verso il set di relay privati della famiglia e fallisce in modo chiuso, senza mostrare nulla invece di far trapelare contenuti non verificati, se i dati di fiducia non possono essere caricati.&lt;/p>
&lt;p>&lt;a href="https://zapstore.dev/apps/com.kubo.app">La v2026.06.20&lt;/a> aggiunge canali YouTube selezionati dai genitori: i genitori possono cercare un canale e aggiungerlo al feed dei bambini, affinché questi vedano soltanto video da canali approvati, con una corsia HTTP veloce e un&amp;rsquo;interfaccia ottimistica che sostituiscono il percorso di aggiunta da circa 10 secondi. La release rimuove anche l&amp;rsquo;opzione per disattivare Trust Extended Permissions, poiché il progetto è costruito attorno alla fiducia obbligatoria e l&amp;rsquo;interruttore è ora sempre attivo; aggiunge una pagina Support dedicata; corregge le &lt;code>@mention&lt;/code> nella chat di gruppo affinché il tag mostri il nome cliccabile &lt;code>@name&lt;/code> invece di un &lt;code>nostr:npub1…&lt;/code> grezzo; aggiunge il completamento automatico delle mention; e corregge la pubblicazione della fiducia affinché dipenda dallo stato di enforcement reale invece che da un flag specchio. Entrambe le release sono monitorate tramite Zapstore come app Android &lt;code>com.kubo.app&lt;/code> firmata dallo sviluppatore.&lt;/p>
&lt;h3 id="da-pollerama-v190-a-v194-punteggio-web-of-trust-motore-relay-on-device-e-sezione-persone-che-potresti-conoscere">Da Pollerama v1.9.0 a v1.9.4: punteggio web-of-trust, motore relay on-device e sezione «Persone che potresti conoscere»&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-polls">Pollerama&lt;/a> di abh3po, il client della famiglia Form* per sondaggi e feed Nostr su &lt;a href="https://pollerama.fun">pollerama.fun&lt;/a>, ha pubblicato cinque release su Zapstore questa settimana. La v1.9.0 introduce un nuovo motore relay on-device: un relay locale integrato memorizza ora tutto ciò che l&amp;rsquo;utente ha visto e risponde prima di tutto dalla cache locale, così feed, profili e thread si caricano immediatamente, anche offline, e restano sincronizzati con la rete in background. Tutto il traffico relay, in lettura e scrittura, passa attraverso questo motore fuori dal thread principale; note, profili, reazioni e zap già caricati provengono direttamente dall&amp;rsquo;archivio locale invece di essere recuperati di nuovo.&lt;/p>
&lt;p>La v1.9.2 corregge le viste Home e Notes, e qualsiasi vista Following/Network, che talvolta non mostravano nulla all&amp;rsquo;avvio o alla ripresa, memorizzando la lista dei follow indipendentemente dal motore di sincronizzazione; rende affidabile il caricamento delle note condivise nei DM recuperando la nota indicata dagli hint relay anche quando l&amp;rsquo;utente non segue l&amp;rsquo;autore; e aggiunge un pannello Network nelle impostazioni che mostra connessioni relay, dimensione della cache e stato di sincronizzazione, con controlli per riconnettere o cancellare la cache locale. La v1.9.3 corregge un crash all&amp;rsquo;avvio e una regressione nel caricamento del feed Home.&lt;/p>
&lt;p>La v1.9.4 introduce un punteggio di fiducia web-of-trust sui profili, cioè quante delle persone seguite seguono anche quella persona, mostrato come chip di rete, e una sezione «Persone che potresti conoscere», con suggerimenti di follow ricavati dal web-of-trust e ordinati per numero di follow in comune. Le impostazioni Network mostrano ora dimensione del web-of-trust e ora dell&amp;rsquo;ultimo calcolo, con un pulsante per ricalcolarlo su richiesta. Punteggi di fiducia e raccomandazioni vengono calcolati in background dal worker web-of-trust, così non bloccano l&amp;rsquo;app.&lt;/p>
&lt;h3 id="release-minori-con-tag">Release minori con tag&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.13.1">nogringo/nostr-mail-client v0.13.1&lt;/a> ripristina il login tramite app signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> per Amber, Aegis e Primal e smette di chiedere ripetutamente alle app signer di firmare i contatti. &lt;a href="https://github.com/Cameri/nostream/releases/tag/v3.0.0">Cameri/nostream v3.0.0&lt;/a> rimuove &lt;code>unsafe-inline&lt;/code> dal generatore della web app e implementa nonce per gli script. &lt;a href="https://github.com/lawalletio/lawallet-nwc/releases/tag/v1.0.0">LaWallet NWC v1.0.0&lt;/a> pubblica la prima 1.0 del progetto con attivazione tramite scheda con link QR condivisibile, riconoscimento Remote Wallet e provisioning automatico dell&amp;rsquo;indirizzo Lightning. &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v2.0.2">Da Formstr Nostr Calendar v2.0.0 a v2.0.2&lt;/a> aggiungono una PWA, correggono gli event sostituibili offline (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/194">PR #194&lt;/a>) e associano i metodi del signer affinché l&amp;rsquo;invio di moduli privati funzioni (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/199">PR #199&lt;/a>). Completano la settimana release minori di &lt;a href="https://github.com/Spl0itable/NYM">Spl0itable/NYM&lt;/a>, &lt;a href="https://github.com/codeswot/ZapBook">codeswot/ZapBook&lt;/a>, &lt;a href="https://github.com/77elements/noornote">77elements/noornote&lt;/a>, &lt;a href="https://github.com/mattn/nostr-relay">mattn/nostr-relay&lt;/a>, &lt;a href="https://github.com/mattn/algia">mattn/algia&lt;/a>, &lt;a href="https://github.com/mouse484/astraea">mouse484/astraea&lt;/a>, &lt;a href="https://github.com/dergigi/boris">dergigi/boris&lt;/a>, &lt;a href="https://github.com/fiatjaf/nak">fiatjaf/nak&lt;/a>, &lt;a href="https://github.com/Spl0itable/nosflare">Spl0itable/nosflare&lt;/a> e &lt;a href="https://github.com/nostrord/nostrord">nostrord/nostrord&lt;/a>.&lt;/p>
&lt;hr>
&lt;h2 id="modifiche-non-ancora-rilasciate">Modifiche non ancora rilasciate&lt;/h2>
&lt;h3 id="cordn-ad-hoc-cvm-un-coordinatore-mls-nel-browser">Cordn Ad-hoc CVM: un coordinatore MLS nel browser&lt;/h3>
&lt;p>&lt;a href="https://github.com/sandwichfarm/cordn-adhoc-cvm">Cordn Ad-hoc&lt;/a>, la nuova web app di sandwich.farm, viene aperta pubblicamente questa settimana come coordinatore MLS eseguito in una scheda del browser per gruppi &lt;a href="https://github.com/Cordn-msg/cordn">Cordn&lt;/a> ad hoc. Lo schema è insolito: una scheda del browser esegue il processo coordinatore Nostr &lt;a href="https://nostrcompass.org/it/topics/contextvm/">ContextVM&lt;/a>, pubblica la propria pubkey, riceve richieste MCP tramite relay Nostr e memorizza nel browser pacchetti di chiavi MLS, welcome, richieste di join e messaggi di gruppo, senza backend. L&amp;rsquo;app impedisce l&amp;rsquo;esecuzione simultanea di più coordinatori con la stessa pubkey ed espone un log di debug per l&amp;rsquo;operatore con event Nostr grezzi, richieste decodificate e heartbeat delle istanze.&lt;/p>
&lt;h3 id="snowcaitnostter-pubblica-19-pr-di-iterazione-ux">SnowCait/nostter pubblica 19 PR di iterazione UX&lt;/h3>
&lt;p>&lt;a href="https://github.com/SnowCait/nostter">nostter&lt;/a>, il client web Nostr di SnowCait, ha integrato 19 PR questa settimana senza pubblicare una release. La sostituzione di &lt;code>nostrapp.link&lt;/code> con &lt;code>app-manager.nostter.app&lt;/code> (&lt;a href="https://github.com/SnowCait/nostter/pull/2234">PR #2234&lt;/a>) e l&amp;rsquo;aggiunta di &lt;code>deck.nostter.app&lt;/code> all&amp;rsquo;allowlist &lt;code>frame-ancestors&lt;/code> (&lt;a href="https://github.com/SnowCait/nostter/pull/2233">PR #2233&lt;/a>) consolidano la superficie del progetto sotto il dominio &lt;code>nostter.app&lt;/code>. Gli event sostituibili delle persone seguite vengono memorizzati in IndexedDB (&lt;a href="https://github.com/SnowCait/nostter/pull/2231">PR #2231&lt;/a>) e lo stato seen-on dei relay torna reattivo con opzioni separate seen-on e via (&lt;a href="https://github.com/SnowCait/nostter/pull/2230">PR #2230&lt;/a>).&lt;/p>
&lt;h3 id="zap-cooking-corregge-un-bug-nip-46-tra-progetti-e-rivede-il-composer">Zap Cooking corregge un bug NIP-46 tra progetti e rivede il composer&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, il client Nostr per la condivisione di ricette, ha integrato 16 PR questa settimana. La modifica dall&amp;rsquo;impatto più ampio è la &lt;a href="https://github.com/zapcooking/frontend/pull/452">PR #452&lt;/a>: i signer remoti Primal marcavano gli event con la pubkey del signer stesso, interrompendo upload, zap e autenticazione per qualsiasi client instradato attraverso Primal. Zap Cooking ha individuato e corretto il percorso; la correzione è locale al client, ma il bug esiste in tutto lo spazio &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>. Il composer viene ricostruito nella &lt;a href="https://github.com/zapcooking/frontend/pull/458">PR #458&lt;/a> con conto alla rovescia, interfaccia unificata per risposte e commenti e schede Write/Preview. Tre correzioni SSR (&lt;a href="https://github.com/zapcooking/frontend/pull/460">PR #460&lt;/a>, &lt;a href="https://github.com/zapcooking/frontend/pull/461">PR #461&lt;/a>, &lt;a href="https://github.com/zapcooking/frontend/pull/462">PR #462&lt;/a>) e la &lt;a href="https://github.com/zapcooking/frontend/pull/454">PR #454&lt;/a> stabilizzano le route di profili e ricette. L&amp;rsquo;esperienza Explore riceve righe con trascinamento per scorrere, un cursore avatar con link al profilo e una correzione delle schede sticky per le community (&lt;a href="https://github.com/zapcooking/frontend/pull/456">PR #456&lt;/a>).&lt;/p>
&lt;h3 id="shopstr-pubblica-un-ciclo-di-escrow-cashu-e-strumenti-per-le-vetrine">Shopstr pubblica un ciclo di escrow Cashu e strumenti per le vetrine&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, il marketplace &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a>, ha integrato una serie di PR sostanziali questa settimana. La &lt;a href="https://github.com/shopstr-eng/shopstr/pull/512">PR #512&lt;/a> implementa per il marketplace un ciclo di escrow Cashu P2PK end-to-end, collegandosi alla più ampia ondata commerciale della stessa settimana attraverso la &lt;a href="https://github.com/nostr-protocol/nips/pull/2323">PR NIP-99 #2323&lt;/a>, proposta per un livello checkout on-graph, e il lancio di Conduit. Nella &lt;a href="https://github.com/shopstr-eng/shopstr/pull/543">PR #543&lt;/a> arrivano strumenti di lettura per elencare aziende, ottenere dettagli aziendali, recuperare una vetrina e ottenere la reputazione del venditore. La &lt;a href="https://github.com/shopstr-eng/shopstr/pull/229">PR #229&lt;/a> aggiunge il supporto all&amp;rsquo;incollaggio di URL per immagini di profilo e negozio, mentre la &lt;a href="https://github.com/shopstr-eng/shopstr/pull/359">PR #359&lt;/a> aggiorna il recupero delle statistiche del marketplace includendo un timestamp.&lt;/p>
&lt;h3 id="lavoro-su-divinevideo-mobile-e-desktop">Lavoro su divine.video mobile e desktop&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">divine.video&lt;/a>, il client di rabble per video brevi in loop con gli archivi Vine ripristinati, questa settimana ha integrato PR concentrate su riproduzione e montaggio: i video indirizzabili vengono deduplicati nel feed (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5465">PR #5465&lt;/a>), i filtri locali dei tag Nostr ora richiedono corrispondenze esatte per evitare risultati spurii (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5463">PR #5463&lt;/a>), l&amp;rsquo;editor video recupera senza crash le bozze con livelli di sticker (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5474">PR #5474&lt;/a>) e il badge Messages conta le chat non lette di persone seguite a cui non è ancora stata data risposta (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5473">PR #5473&lt;/a>).&lt;/p>
&lt;h3 id="nostur-pubblica-supporto-ai-metadati-client-nip-46-e-correzioni-al-refresh-dei-dm">Nostur pubblica supporto ai metadati client NIP-46 e correzioni al refresh dei DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, il client iOS di Fabian, ha integrato quattro PR nel repository canonico dopo &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-17-newsletter/#nostur-1290-ships-anonymous-replies-and-remote-signer-logout">la release 1.29.0 della scorsa settimana&lt;/a>. La &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/74">PR #74&lt;/a> aggiunge metadati client alle richieste di connessione bunker NIP-46, la stessa forma proposta da DocNR e pubblicata da Amber v6.2.2 questa settimana. Le &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/75">PR #75&lt;/a> e &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/76">#76&lt;/a> correggono i percorsi di refresh dei DM e ripristino in primo piano dopo il ritorno in foreground di un iPhone, mentre la &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/78">PR #78&lt;/a> aggiunge la scansione QR alla configurazione NWC personalizzata.&lt;/p>
&lt;hr>
&lt;h2 id="nuovi-progetti-monitorati-e-scoperti">Nuovi progetti monitorati e scoperti&lt;/h2>
&lt;h3 id="social-agents-prototype-collaborazione-fra-agent-ai-nostr-native-con-approvazione-umana">Social Agents Prototype: collaborazione fra agent AI Nostr-native con approvazione umana&lt;/h3>
&lt;p>&lt;a href="https://github.com/SrulyRosenblat/social_agents_prototype_nostr">Social Agents Prototype&lt;/a> è uno strumento AI sperimentale costruito su Nostr che esplora la comunicazione decentralizzata fra agent. Gli agent trasmettono domande atomiche attraverso la rete, rispondono soltanto quelli pertinenti e ogni messaggio inviato o ricevuto passa da un gate di approvazione umana prima del transito. L&amp;rsquo;autore è Sruly Rosenblat. Il progetto occupa lo stesso spazio di collaborazione fra agent di Buzz e NIP-100 SNIN di questa settimana, ma assume una forma diversa: Social Agents Prototype modella gli agent come partecipanti che trasmettono e ascoltano, i cui messaggi devono essere tutti approvati da una persona. Questa settimana sono visibili più approcci paralleli allo stesso problema.&lt;/p>
&lt;h3 id="prana-una-lista-di-lavoro-per-issue-nip-34">PRana: una lista di lavoro per issue NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/DocNR/prana">PRana&lt;/a> di DocNR è una lista di lavoro di issue &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> aperte correttamente fra repository git-over-Nostr con adesione volontaria. Lo strumento si colloca un livello sopra lo stack git-over-Nostr: consuma gli event issue NIP-34 dei repository partecipanti e li presenta come coda di triage. Il lancio arriva nella stessa settimana in cui la &lt;a href="https://github.com/nostr-protocol/nips/pull/2384">PR NIP-34 #2384&lt;/a> propone di rimuovere il tag maintainers per risolvere problemi di scadenza, modifica che incide direttamente sul modo in cui strumenti come PRana risolvono l&amp;rsquo;autorità sulle issue fra repository.&lt;/p>
&lt;h3 id="routstr-chat-accesso-a-llm-locali-tramite-il-protocollo-routstr-su-nostr">routstr-chat: accesso a LLM locali tramite il protocollo Routstr su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/Routstr/routstr-chat">routstr-chat&lt;/a> del team Routstr è un&amp;rsquo;interfaccia di chat interamente locale che usa il protocollo Routstr per accedere a qualsiasi modello LLM tramite Nostr. Il protocollo Routstr instrada le richieste di inferenza attraverso annunci dei provider pubblicati su Nostr (kind &lt;code>38421&lt;/code>) e regola i pagamenti con Cashu, come descritto nella &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Newsletter #20&lt;/a>. Il client chat è la superficie rivolta all&amp;rsquo;utente sopra il protocollo; il daemon di instradamento Routstrd gestisce discovery e pagamento, mentre l&amp;rsquo;app chat fornisce l&amp;rsquo;interfaccia della conversazione.&lt;/p>
&lt;hr>
&lt;h2 id="lavoro-sul-protocollo">Lavoro sul protocollo&lt;/h2>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;p>L&amp;rsquo;attività NIP della settimana è stata insolitamente intensa: due integrazioni e un&amp;rsquo;ondata di proposte aperte sostanziali.&lt;/p>
&lt;h4 id="i-metadati-client-nip-46-arrivano-in-amber-e-nostur">I metadati client NIP-46 arrivano in Amber e Nostur&lt;/h4>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2381">PR NIP-46 #2381&lt;/a>, &lt;a href="https://nostrcompass.org/en/newsletters/2026-06-17-newsletter/#clave-10-ships-to-the-app-store-with-push-woken-background-signing">proposta da Clave la scorsa settimana&lt;/a>, dispone ora di implementazioni distribuite su entrambi i lati. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.2">Amber v6.2.2&lt;/a> legge il nuovo campo opzionale &lt;code>optional_client_metadata&lt;/code> nelle richieste di connessione bunker e mostra icone e metadati delle app native nelle schermate delle richieste e nell&amp;rsquo;elenco delle app. La &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/74">PR Nostur #74&lt;/a> aggiunge il campo sul lato client. Insieme, i tre progetti chiudono la lacuna d&amp;rsquo;identità nell&amp;rsquo;abbinamento bunker: un abbinamento &lt;code>bunker://&lt;/code> ora trasporta gli stessi &lt;code>name&lt;/code>, &lt;code>url&lt;/code> e &lt;code>image&lt;/code> che un&amp;rsquo;app poteva già annunciare tramite &lt;code>nostrconnect://&lt;/code>.&lt;/p>
&lt;h4 id="nip-86-signevent-e-un-event-complementare-per-i-ruoli-relay">NIP-86 signevent e un event complementare per i ruoli relay&lt;/h4>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2389">PR #2389 di staab&lt;/a> ha integrato un&amp;rsquo;operazione &lt;code>signevent&lt;/code> in &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a>, l&amp;rsquo;API di gestione relay, consentendo agli amministratori dei relay di gestire event &lt;a href="https://github.com/nostr-protocol/nips/blob/master/43.md">NIP-43&lt;/a> per conto del relay. La proposta complementare ancora aperta, &lt;a href="https://github.com/nostr-protocol/nips/pull/2390">PR #2390 di staab&lt;/a>, definisce un event per i ruoli relay, così i relay possono dichiarare le definizioni dei ruoli e gli amministratori possono assegnare o revocare quei ruoli ai membri. Le due PR sono progettate per comporsi: NIP-86 fornisce agli amministratori le operazioni, l&amp;rsquo;event dei ruoli fornisce il modello di autorizzazione.&lt;/p>
&lt;h4 id="nip-99-livello-di-checkout-on-graph-per-i-marketplace">NIP-99: livello di checkout on-graph per i marketplace&lt;/h4>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2323">PR #2323 di Colabonate&lt;/a> è il collegamento centrale più forte della settimana. La proposta è formulata come richiesta di feedback sul progetto e individua due lacune nello stack &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> e Gamma Market Spec: un flusso di checkout che vive on-graph, con stato successivo al buy-now, creazione dell&amp;rsquo;ordine, pagamento e conferma della consegna come event Nostr pubblici e indirizzabili leggibili da qualsiasi client; ed escrow più risoluzione delle controversie per il sottoinsieme di transazioni in cui i segnali web-of-trust da soli non bastano, come articoli di valore elevato, controparti alla prima transazione, marketplace anonimi e consegna fisica. La proposta chiude i silos fra client nei marketplace allo stesso modo in cui NIP-99 ha chiuso quelli delle inserzioni. Arriva nella stessa settimana del lancio di &lt;a href="https://github.com/Conduit-BTC/conduit-mono">Conduit&lt;/a>, che distribuisce directory &lt;code>nips/&lt;/code> e &lt;code>specs/&lt;/code> proprie, della &lt;a href="https://github.com/shopstr-eng/shopstr/pull/512">PR Shopstr #512&lt;/a>, con un ciclo di escrow Cashu end-to-end, di &lt;a href="https://github.com/bit-blik/bitblik">BitBlik&lt;/a>, P2P BLIK ↔ Lightning con primitive di escrow proprie, e dell&amp;rsquo;ingresso nel monitoraggio attivo del repository autonomo &lt;a href="https://github.com/GammaMarkets/market-spec">Gamma Markets Market Spec&lt;/a>.&lt;/p>
&lt;h4 id="nip-34-rimuovere-il-tag-maintainers-per-risolvere-i-problemi-di-scadenza">NIP-34: rimuovere il tag maintainers per risolvere i problemi di scadenza&lt;/h4>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2384">PR #2384 di dhalsim&lt;/a> rimuove il tag maintainers dagli annunci dei repository &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>, affrontando la &lt;a href="https://github.com/nostr-protocol/nips/issues/2382">issue #2382&lt;/a>. Il tag maintainers non aveva una semantica di scadenza definita, rendendo difficile per gli strumenti downstream stabilire quando l&amp;rsquo;assegnazione di un maintainer fosse ancora autorevole. La modifica ha un raggio d&amp;rsquo;azione ampio: riguarda le patch flotilla-budabit, l&amp;rsquo;unico repository NIP-34 monitorato con attività sostanziale sulle patch questa settimana, la configurazione di distribuzione NIP-34 su otto repository del team Iris, il mirror NIP-34 di BitBlik, il nuovo mirror NIP-34 di Amber e lo strumento PRana di DocNR per le liste di lavoro delle issue. Fra i revisori incrociati della PR figurano DanConwayDev (ngit), vitorpamplona (Amethyst), TheAwiteb e chebizarro.&lt;/p>
&lt;h4 id="stati-dei-gruppi-nip-29-lavoro-in-corso">Stati dei gruppi NIP-29 (lavoro in corso)&lt;/h4>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2372">PR #2372 di dtonon&lt;/a> propone una struttura per gli stati dei gruppi di &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, condivisa come lavoro in corso per raccogliere feedback. Prosegue l&amp;rsquo;&lt;a href="https://nostrcompass.org/en/newsletters/2026-06-17-newsletter/">evoluzione di NIP-29 descritta nel numero #27&lt;/a>, ora attraverso una nuova impostazione.&lt;/p>
&lt;h4 id="nip-79-stories-e-nip-76-reels-feed-entrambe-di-anaskmh">NIP-79 Stories e NIP-76 Reels Feed, entrambe di anaskmh&lt;/h4>
&lt;p>Questa settimana sono arrivate due specifiche dello stesso autore per media in formato breve. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2386">PR #2386&lt;/a> propone NIP-79 Stories: slide a schermo intero effimere con foto, video e testo, che scadono dopo 24 ore, con kind &lt;code>19&lt;/code> per le singole slide, kind &lt;code>34237&lt;/code> come event indirizzabile contenente tag &lt;code>e&lt;/code> ordinati per sequenziare storie composte da più slide e una ricevuta seen-by opzionale e rispettosa della privacy sul kind &lt;code>15750&lt;/code>. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2385">PR #2385&lt;/a> propone NIP-76 per un Reels Feed di video brevi. Entrambe sono specifiche parallele rispetto a ciò che client video esistenti come divine.video stanno distribuendo, non implementazioni di esso.&lt;/p>
&lt;h4 id="kind-1111-come-risposta-alle-note-kind-1">kind 1111 come risposta alle note kind 1&lt;/h4>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2358">PR #2358 di zhoreeq&lt;/a> rimuove la riga del corpus NIP che in precedenza sconsigliava l&amp;rsquo;uso di risposte commento kind &lt;code>1111&lt;/code> (&lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a>) su note kind &lt;code>1&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/issues/2250">issue #2250&lt;/a>). La modifica è piccola nel diff ma ampia negli effetti: qualsiasi client che voglia usare la struttura dei commenti in thread di NIP-22 sulle normali note kind 1 della timeline ha ora un supporto esplicito per farlo.&lt;/p>
&lt;hr>
&lt;h2 id="six-years-of-nostr-junes">Sei anni di giugno su Nostr&lt;/h2>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/commits/master/">storia del repository&lt;/a> nel mese di giugno segue Nostr dall&amp;rsquo;infanzia del protocollo a un substrato componibile per applicazioni. Nel 2021 il lavoro entrava ancora tutto in un solo repository del protocollo. Nel 2022 il processo di standardizzazione e i primi client seri sono diventati progetti separati. L&amp;rsquo;ondata pubblica del 2023 ha reso urgenti relay, pagamenti e identità più ricche; il 2024 ha sostituito le prime scorciatoie per firma e messaggistica; il 2025 ha portato quei contratti in gruppi privati, collaborazione git, media e commercio; e il 2026 ha lanciato prodotti che usano Nostr come uno dei livelli di spazi di lavoro per agent, exchange e strumenti per sviluppatori. La progressione va dal dimostrare che gli event firmati possono viaggiare attraverso i relay al rendere questo fatto un dettaglio di implementazione.&lt;/p>
&lt;h3 id="giugno-2021-linfanzia-del-protocollo">Giugno 2021: l&amp;rsquo;infanzia del protocollo&lt;/h3>
&lt;p>Nostr aveva circa sette mesi. Il &lt;a href="https://fiatjaf.com/nostr.html">post originale sul protocollo&lt;/a> di fiatjaf e il repository &lt;a href="https://github.com/fiatjaf/nostr">&lt;code>fiatjaf/nostr&lt;/code>&lt;/a> contenevano ancora quasi tutto il progetto pubblico. Una manciata di sviluppatori poteva revisionare ogni modifica e l&amp;rsquo;implementazione di riferimento era uno script Python. Non esisteva ancora un ecosistema di client; esisteva l&amp;rsquo;affermazione che gli utenti potessero firmare event e scegliere relay senza che una piattaforma assegnasse loro l&amp;rsquo;identità.&lt;/p>
&lt;p>Non esisteva un repository NIP dedicato, quindi proposte ed esempi di implementazione condividevano ancora la &lt;a href="https://github.com/nostr-protocol/nostr/commits?since=2021-06-01&amp;amp;until=2021-07-01">storia principale del protocollo&lt;/a>. In questa fase, tale portata ridotta era un punto di forza: un nuovo implementatore poteva comprendere il protocollo da un capo all&amp;rsquo;altro. Il costo era che ogni nuovo comportamento dipendeva ancora dallo stesso piccolo gruppo, un limite che la separazione dei repository e l&amp;rsquo;ondata di client del 2022 avrebbero iniziato a rimuovere.&lt;/p>
&lt;h3 id="giugno-2022-nasce-il-repository-nip">Giugno 2022: nasce il repository NIP&lt;/h3>
&lt;p>A metà 2022 Nostr aveva abbastanza proponenti da giustificare il repository separato &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a>, creato a maggio. Circa venti specifiche coprivano ormai il formato base degli event, le liste follow, i DM cifrati, i metadati relay e gli identificatori bech32. Spostare i documenti fuori dal repository del codice originale ha cambiato la governance del progetto: i client potevano evolvere in modo indipendente, mentre il comportamento wire condiviso riceveva proposte e revisioni esplicite.&lt;/p>
&lt;p>I primi client web pubblici, fra cui Astral e Anigma, erano attivi in forme iniziali e il &lt;a href="https://github.com/damus-io/damus/commits?since=2022-06-01&amp;amp;until=2022-07-01">repository Damus di William Casarin&lt;/a> si avvicinava alla distribuzione su TestFlight. La base utenti era ancora piccola e composta soprattutto da sviluppatori, ma il sistema disponeva ormai di due superfici moltiplicatrici: più persone potevano costruire applicazioni senza mantenere la specifica e più persone potevano migliorare la specifica senza possedere il client originale.&lt;/p>
&lt;h3 id="giugno-2023-londata-di-adozione-dopo-damus">Giugno 2023: l&amp;rsquo;ondata di adozione dopo Damus&lt;/h3>
&lt;p>A giugno 2023, l&amp;rsquo;ondata pubblica successiva al lancio di Damus nell&amp;rsquo;App Store aveva cambiato il problema ingegneristico. &lt;a href="https://github.com/PrimalHQ">Primal&lt;/a> e Iris costruivano per persone che non avevano seguito le prime chat sul protocollo, mentre &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> offriva un relay ad alte prestazioni agli operatori che affrontavano più traffico. La rete non aveva più bisogno soltanto di un maggior numero di implementazioni; servivano client e relay capaci di restare reattivi con la crescita di utenti, follow e cronologie degli event.&lt;/p>
&lt;p>Il lavoro sul protocollo si è quindi concentrato su instradamento e trasferimento di valore. Le &lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">liste relay NIP-65&lt;/a> hanno dato al modello outbox emergente una fonte di verità portabile, mentre gli &lt;a href="https://github.com/nostr-protocol/nips/blob/master/57.md">zap NIP-57&lt;/a> hanno collegato event e identità alle ricevute Lightning. Il cambio di fase era pratico: identità e pubblicazione avevano attirato gli utenti, ma erano l&amp;rsquo;instradamento selettivo dei relay e l&amp;rsquo;interoperabilità dei wallet a permettere alla rete più ampia di comportarsi come qualcosa di diverso da un unico feed pubblico sovraccarico.&lt;/p>
&lt;h3 id="giugno-2024-signer-gift-wrap-e-aggiornamento-della-messaggistica">Giugno 2024: signer, gift wrap e aggiornamento della messaggistica&lt;/h3>
&lt;p>A giugno 2024 la firma aveva iniziato a uscire dai singoli client. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">specifica NIP-46&lt;/a>, &lt;a href="https://github.com/kind-0/nsecbunkerd">nsecBunker&lt;/a> e &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> offrivano alle applicazioni web e Android modi per richiedere firme senza importare la chiave segreta dell&amp;rsquo;utente. Ciò rovesciava un&amp;rsquo;ipotesi iniziale: portabilità non significava più copiare una nsec in ogni client, ma consentire a signer specializzati di imporre un confine attorno a essa.&lt;/p>
&lt;p>La messaggistica cambiava per la stessa ragione. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/17.md">NIP-17&lt;/a> combinava la cifratura NIP-44 con il gift wrapping NIP-59 per ridurre i metadati esposti da NIP-04, mentre &lt;a href="https://github.com/nostr-protocol/nips/blob/master/89.md">NIP-89&lt;/a> permetteva ai client di raccomandare gestori per i tipi di event che non renderizzavano. Le discussioni su MLS-over-Nostr sono iniziate in questo contesto. Privacy e discovery delle applicazioni stavano diventando contratti fra client, preparando il terreno a gruppi privati e applicazioni più ricche specifiche per tipo di event, invece di un solo client che tentasse di contenere ogni funzionalità.&lt;/p>
&lt;h3 id="giugno-2025-marmot-maturità-di-git-over-nostr-e-la-lunga-coda-dei-client">Giugno 2025: Marmot, maturità di git-over-Nostr e la lunga coda dei client&lt;/h3>
&lt;p>A giugno 2025, MLS-over-Nostr disponeva della &lt;a href="https://github.com/marmot-protocol/marmot">specifica Marmot&lt;/a> formale e di &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> come implementazione pubblica. Gli &lt;a href="https://github.com/nostr-protocol/nips/blob/master/34.md">event git NIP-34&lt;/a>, ngit e GitWorkshop erano inoltre maturati fino a formare un flusso di revisione del codice utilizzabile. Questi progetti condividevano una stessa fase progettuale: usavano i relay per il coordinamento, spostando però stato sensibile dei gruppi o oggetti dei repository in livelli specializzati invece di trattare un client di note testuali come applicazione completa.&lt;/p>
&lt;p>Commercio e media hanno seguito lo stesso schema. I wallet &lt;a href="https://github.com/nostr-protocol/nips/blob/master/60.md">NIP-60&lt;/a> e i nutzap NIP-61 hanno portato lo stato Cashu in event portabili; Wavlake, Divine e le &lt;a href="https://github.com/nostr-protocol/nips/blob/master/99.md">implementazioni di marketplace NIP-99&lt;/a> hanno usato kind dedicati per musica, video e inserzioni. Nostr stava diventando meno visibilmente «un social network», perché le applicazioni mantenevano il substrato di identità e relay introducendo archiviazione, pagamenti, moderazione e presentazione specifici del dominio.&lt;/p>
&lt;h3 id="giugno-2026-un-mese-ricco-di-lanci">Giugno 2026: un mese ricco di lanci&lt;/h3>
&lt;p>Giugno 2026 ha portato lanci che trattavano Nostr come un componente all&amp;rsquo;interno di prodotti più ampi. &lt;a href="https://github.com/block/buzz">Buzz&lt;/a> ha aperto uno schema self-hosted di spazio di lavoro come relay per persone e agent; &lt;a href="https://napplet.run">Napplets&lt;/a> ha definito un confine di fiducia per app componibili su Nostr e Blossom; e &lt;a href="https://conduit.market">Conduit&lt;/a> ha affiancato alle applicazioni del marketplace i propri documenti di protocollo. Questi progetti non chiedevano più se gli event firmati potessero supportare la collaborazione. Decidevano quale lavoro spettasse agli event, quale ai blob o allo stato locale e quali permessi dovesse mantenere un host.&lt;/p>
&lt;p>&lt;a href="https://www.bitblik.app">BitBlik&lt;/a> ha usato Nostr in uno scambio peer-to-peer fra fiat e Lightning, &lt;a href="https://github.com/JeroenOnNostr/codedeck">CodeDeck&lt;/a> ha trasportato sessioni di coding tramite relay cifrati e &lt;a href="https://github.com/mehmetefeumit/Haven-App">Haven&lt;/a> ha applicato Marmot fuori da un messenger convenzionale. La distanza dal &lt;a href="https://github.com/nostr-protocol/nostr">repository prototipo del 2021&lt;/a> non consiste soltanto in un maggior numero di progetti. È un cambiamento di astrazione: i team potevano partire da identità portabile, discovery dei relay, cifratura e pagamenti come componenti esistenti, per poi concentrare il lavoro di progettazione sul confine specifico dell&amp;rsquo;applicazione costruito sopra di essi.&lt;/p></content:encoded></item><item><title>Nostr Compass #27</title><link>https://nostrcompass.org/it/newsletters/2026-06-17-newsletter/</link><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-06-17-newsletter/</guid><description>&lt;p>Questa settimana è stata dominata dal lavoro sui signer, dai protocolli di scambio P2P e dalle release dei client di punta. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.0">Amethyst v1.12.0&lt;/a> include oltre 170 PR che aggiungono wallet Cashu &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a>, nutzap &lt;a href="https://nostrcompass.org/it/topics/nip-61/">NIP-61&lt;/a>, feed di applicazioni software &lt;a href="https://github.com/nostr-protocol/nips/blob/master/82.md">NIP-82&lt;/a>, supporto ai podcast &lt;a href="https://nostrcompass.org/it/topics/nip-f4/">NIP-F4&lt;/a>, verifica degli zap on-chain tramite CLINK, la migrazione KMP verso iOS nelle fasi 1 e 2 e un driver di autoripristino per Tor. &lt;a href="https://github.com/DocNR/clave/releases/tag/v1.0.0">Clave v1.0.0 (build 102)&lt;/a> è stata inviata all&amp;rsquo;App Store, portando su iOS la firma in background risvegliata da push e la verifica delle firme in ingresso. &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.13.0">Mostro Core v0.13.0&lt;/a> introduce Protocol v2, sostituendo la comunicazione degli ordini basata su relay con messaggi diretti gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, mentre &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.5">Mostro v0.17.5&lt;/a> rende opzionale e configurabile il deposito antiabuso lato operatore. &lt;a href="https://github.com/Letdown2491/signet/releases/tag/v1.11.0">Signet v1.11.0&lt;/a> corregge un bypass della firma nei comandi amministrativi &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (DM privati gift wrap), che permetteva a chiunque disponesse di informazioni pubbliche di falsificare comandi di kill switch. &lt;a href="https://github.com/jesuspirate/chama">Chama&lt;/a> ha pubblicato sette release di escrow in sei giorni, trasformando la stanza di scambio da un muro di controlli a una conversazione specifica per ciascun ruolo. Sul versante signer, &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.1">Amber v6.2.1&lt;/a>, Clave (build &lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build100">100&lt;/a>, &lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build101">101&lt;/a> e &lt;a href="https://github.com/DocNR/clave/releases/tag/v1.0.0">102&lt;/a>) e &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.29.0-desktop">Nostur 1.29.0&lt;/a> implementano tutte il nuovo metodo logout &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> integrato questa settimana (&lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a>). &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v13.1.0-rc1">Zeus v13.1.0-rc1&lt;/a> e Amethyst introducono entrambi il supporto ai noffer CLINK, l&amp;rsquo;interfaccia Lightning comune proposta per le chiavi Nostr. I gruppi relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> hanno ricevuto cinque proposte aperte riguardanti tag banner, codici invito, fissaggio dei messaggi, segnalazione dei gruppi tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e controllo degli accessi basato sui ruoli.&lt;/p></description><content:encoded>&lt;p>Questa settimana è stata dominata dal lavoro sui signer, dai protocolli di scambio P2P e dalle release dei client di punta. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.0">Amethyst v1.12.0&lt;/a> include oltre 170 PR che aggiungono wallet Cashu &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a>, nutzap &lt;a href="https://nostrcompass.org/it/topics/nip-61/">NIP-61&lt;/a>, feed di applicazioni software &lt;a href="https://github.com/nostr-protocol/nips/blob/master/82.md">NIP-82&lt;/a>, supporto ai podcast &lt;a href="https://nostrcompass.org/it/topics/nip-f4/">NIP-F4&lt;/a>, verifica degli zap on-chain tramite CLINK, la migrazione KMP verso iOS nelle fasi 1 e 2 e un driver di autoripristino per Tor. &lt;a href="https://github.com/DocNR/clave/releases/tag/v1.0.0">Clave v1.0.0 (build 102)&lt;/a> è stata inviata all&amp;rsquo;App Store, portando su iOS la firma in background risvegliata da push e la verifica delle firme in ingresso. &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.13.0">Mostro Core v0.13.0&lt;/a> introduce Protocol v2, sostituendo la comunicazione degli ordini basata su relay con messaggi diretti gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, mentre &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.5">Mostro v0.17.5&lt;/a> rende opzionale e configurabile il deposito antiabuso lato operatore. &lt;a href="https://github.com/Letdown2491/signet/releases/tag/v1.11.0">Signet v1.11.0&lt;/a> corregge un bypass della firma nei comandi amministrativi &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (DM privati gift wrap), che permetteva a chiunque disponesse di informazioni pubbliche di falsificare comandi di kill switch. &lt;a href="https://github.com/jesuspirate/chama">Chama&lt;/a> ha pubblicato sette release di escrow in sei giorni, trasformando la stanza di scambio da un muro di controlli a una conversazione specifica per ciascun ruolo. Sul versante signer, &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.1">Amber v6.2.1&lt;/a>, Clave (build &lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build100">100&lt;/a>, &lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build101">101&lt;/a> e &lt;a href="https://github.com/DocNR/clave/releases/tag/v1.0.0">102&lt;/a>) e &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.29.0-desktop">Nostur 1.29.0&lt;/a> implementano tutte il nuovo metodo logout &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> integrato questa settimana (&lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a>). &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v13.1.0-rc1">Zeus v13.1.0-rc1&lt;/a> e Amethyst introducono entrambi il supporto ai noffer CLINK, l&amp;rsquo;interfaccia Lightning comune proposta per le chiavi Nostr. I gruppi relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> hanno ricevuto cinque proposte aperte riguardanti tag banner, codici invito, fissaggio dei messaggi, segnalazione dei gruppi tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e controllo degli accessi basato sui ruoli.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="amethyst-v1120-porta-wallet-cashu-nutzap-un-driver-clink-e-lautoripristino-di-tor">Amethyst v1.12.0 porta wallet Cashu, nutzap, un driver CLINK e l&amp;rsquo;autoripristino di Tor&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> è il principale client Nostr Android di Vitor Pamplona. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.0">v1.12.0&lt;/a> raggruppa le 93 PR trattate come lavoro non ancora rilasciato nella Newsletter #25 (etichettatura degli hashtag &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a>, schermata podcast NIP-F4, tracce musicali, signer effimeri, zap on-chain con filtro NIP-05) e nella Newsletter #26 (ulteriore lavoro su &lt;a href="https://nostrcompass.org/it/topics/nip-f4/">NIP-F4&lt;/a> e basi del watchdog Tor), oltre a una nuova tranche consistente questa settimana. Il nuovo lavoro si concentra sull&amp;rsquo;interfaccia Cashu/nutzap, su un driver CLINK per gli zap on-chain, su un insieme di meccanismi di autoripristino Tor e sulla migrazione KMP verso iOS.&lt;/p>
&lt;p>Il supporto ai wallet Cashu &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> e la visualizzazione dei nutzap &lt;a href="https://nostrcompass.org/it/topics/nip-61/">NIP-61&lt;/a> arrivano nella &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3075">PR #3075&lt;/a>, insieme a una vista del saldo per mint (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3115">PR #3115&lt;/a>) e a un&amp;rsquo;interfaccia unificata per le schede di pagamento (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3191">PR #3191&lt;/a>), che riunisce indirizzi Lightning, zap on-chain, mint Cashu e NWC in un&amp;rsquo;unica schermata di pagamento del profilo (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3185">PR #3185&lt;/a>). Un driver CLINK per la verifica degli zap on-chain viene distribuito nelle &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3039">PR #3039&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3177">PR #3177&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3182">PR #3182&lt;/a>. CLINK è la Common Lightning Interface for Nostr Keys, la stessa interfaccia noffer che &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v13.1.0-rc1">Zeus v13.1.0-rc1&lt;/a> pubblica questa settimana, e Amethyst aggiunge un percorso di verifica che collega una prova di pagamento on-chain a una chiave Nostr. &lt;a href="https://github.com/nostr-protocol/nips/blob/master/82.md">NIP-82&lt;/a> aggiunge feed di applicazioni software nella &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3210">PR #3210&lt;/a>, mentre il lavoro &lt;a href="https://nostrcompass.org/it/topics/nip-f4/">NIP-F4&lt;/a> prosegue con controlli dei podcast, descrizioni degli episodi e gestione delle immagini. La release include inoltre schermate per le richieste di pagamento NWC, una cronologia wallet unificata e il recupero dei token Cashu.&lt;/p>
&lt;p>Un gruppo di modifiche sull&amp;rsquo;affidabilità di Tor forma uno stack completo di autoripristino: la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3053">PR #3053&lt;/a> aggiorna Arti alla v2.3.0 con watchdog e test di integrazione, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3223">PR #3223&lt;/a> impedisce le connessioni ai relay instradate via Tor finché Tor non è pronto, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3224">PR #3224&lt;/a> limita il bootstrap di Arti con un timeout di 60 secondi, così una rete ostile non può bloccare il ciclo, e la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3231">PR #3231&lt;/a> esegue l&amp;rsquo;autoripristino quando Tor risulta Active ma tutti i circuiti sono inattivi. Il risultato è uno stack Tor che si riprende dai cambiamenti di rete e dai cicli sospensione-ripresa senza intervento manuale. Le fasi 1 e 2 della migrazione KMP verso iOS arrivano nelle &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3047">PR #3047&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3050">PR #3050&lt;/a>, sbloccando la CI iOS per i moduli &lt;code>quartz&lt;/code> e &lt;code>commons&lt;/code> e ponendo le basi per una build iOS di Amethyst.&lt;/p>
&lt;h3 id="mostro-core-v0130-elimina-lintermediario-relay-con-protocol-v2">Mostro Core v0.13.0 elimina l&amp;rsquo;intermediario relay con Protocol v2&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> è un exchange P2P di Bitcoin regolato tramite Lightning che usa Nostr come order book e livello di comunicazione degli scambi. &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.13.0">mostro-core v0.13.0&lt;/a>, la libreria Rust che definisce il protocollo wire, sostituisce il modello di messaggistica instradato via relay con quello che il changelog chiama Protocol v2, un trasporto diretto NIP-44 basato su eventi kind 14. Le azioni specifiche dello scambio viaggiano ora come messaggi kind 14 avvolti secondo &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e legati alla chiave del singolo scambio generata dal partecipante alla creazione dell&amp;rsquo;ordine, senza far transitare di nuovo la conversazione attraverso eventi indirizzabili pubblici.&lt;/p>
&lt;p>Nel modello precedente, l&amp;rsquo;intera superficie della conversazione di scambio veniva esposta a ogni relay che trasportava gli eventi. Il trasporto diretto kind 14 mantiene configurazione dell&amp;rsquo;ordine, procedura di contestazione e metadati di regolamento tra le due parti e il daemon Mostro, mentre i relay vedono soltanto envelope cifrati. Oltre al cambio di trasporto, v0.13.0 lega anche la prova d&amp;rsquo;identità v2 alla chiave dello scambio (&lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.13.0">registro dei commit&lt;/a>), chiudendo una classe di rischi di replay contro il nuovo protocollo. Sul lato daemon, &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.5">Mostro v0.17.5&lt;/a> rende opzionale e configurabile dall&amp;rsquo;operatore il deposito antiabuso: prima di iniziare determinati scambi, ciascuna parte può dover bloccare un piccolo deposito, restituito al completamento normale e confiscato in caso di stallo, mancata presentazione o comportamento molesto. Il deposito viene abilitato a livello dell&amp;rsquo;operatore del nodo, non imposto all&amp;rsquo;intera rete, così Mostro resta non-custodial e ogni operatore sceglie il compromesso tra attrito del marketplace e resistenza agli abusi.&lt;/p>
&lt;h3 id="signet-v1110-corregge-un-bypass-della-firma-nei-comandi-amministrativi-nip-17">Signet v1.11.0 corregge un bypass della firma nei comandi amministrativi NIP-17&lt;/h3>
&lt;p>&lt;a href="https://github.com/Letdown2491/signet">Signet&lt;/a> è un signer bunker remoto con una superficie di kill switch che permette a un amministratore di sospendere, riattivare o controllare il signer tramite Nostr senza accedere alla macchina host. &lt;a href="https://github.com/Letdown2491/signet/releases/tag/v1.11.0">v1.11.0&lt;/a> corregge una vulnerabilità in questa superficie: il percorso dei comandi amministrativi gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> controllava soltanto l&amp;rsquo;autore dichiarato del rumor interno non firmato, senza mai verificare il seal firmato. Poiché le chiavi di conversazione &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> sono simmetriche, un attaccante in possesso di sole informazioni pubbliche (la pubkey del signer, l&amp;rsquo;npub dell&amp;rsquo;amministratore e un relay amministrativo) poteva falsificare dall&amp;rsquo;esterno un gift wrap ed eseguire qualsiasi comando di kill switch, compresi &lt;code>panic&lt;/code>, &lt;code>resumeall&lt;/code> o &lt;code>alive&lt;/code>. La correzione chiama &lt;code>verifyEvent&lt;/code> sul seal e lega l&amp;rsquo;autore del rumor alla firma del seal, perciò le falsificazioni non firmate vengono ora respinte all&amp;rsquo;ingresso. Gli operatori Signet dovrebbero aggiornare tempestivamente; specifica e percorso di codice corretto forniscono insieme a un attaccante un modello operativo completo della vulnerabilità precedente.&lt;/p>
&lt;h3 id="da-chama-v320-a-v350-la-stanza-di-scambio-viene-ridisegnata-e-il-percorso-del-denaro-rafforzato">Da Chama v3.2.0 a v3.5.0, la stanza di scambio viene ridisegnata e il percorso del denaro rafforzato&lt;/h3>
&lt;p>&lt;a href="https://github.com/jesuspirate/chama">Chama&lt;/a> è un client di escrow P2P nativo Nostr che abbina ecash Fedimint alla condivisione del segreto di Shamir 2-su-3 per regolare scambi senza server. La Newsletter #26 ha trattato la serie dalla v2.0.0 alla v3.1.0, che ha superato la soglia dell&amp;rsquo;app standalone e aggiunto vetrine per venditore. Le sei release successive di questa settimana partono dalla &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.2.0">v3.2.0&lt;/a> e arrivano alla &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.5.0">v3.5.0&lt;/a> il 15 giugno, ridisegnando l&amp;rsquo;interfaccia della stanza di scambio attorno a una sola domanda per ruolo, «che cosa devo fare adesso?», e rendendo il percorso del denaro resistente ai guasti parziali. &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.2.0">v3.2.0&lt;/a> assegna ad acquirente, venditore e arbitro prompt d&amp;rsquo;azione codificati per colore, così ogni ruolo vede la propria mossa successiva in ogni stato dello scambio. &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.3.0">v3.3.0&lt;/a> restringe due regole di consenso nel motore di scambio e richiede un&amp;rsquo;adozione coordinata da parte dei client per evitare divergenze di stato. &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.4.0">v3.4.0&lt;/a> introduce un percorso di ripristino per depositi ecash parzialmente completati e impedisce che una risposta duplicata avanzi due volte la macchina a stati. &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.4.1">v3.4.1&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.4.2">v3.4.2&lt;/a> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.5.0">v3.5.0&lt;/a> correggono regressioni nel rendering, nel routing e nel flusso di pagamento emerse durante la serie.&lt;/p>
&lt;h3 id="clave-10-arriva-sullapp-store-con-firma-in-background-risvegliata-da-push">Clave 1.0 arriva sull&amp;rsquo;App Store con firma in background risvegliata da push&lt;/h3>
&lt;p>&lt;a href="https://github.com/DocNR/clave">Clave&lt;/a> è un signer remoto iOS &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> che conserva la chiave privata Nostr dell&amp;rsquo;utente nel Portachiavi dell&amp;rsquo;iPhone. Le app richiedono firme attraverso un canale cifrato end-to-end e non ricevono mai la chiave. &lt;a href="https://github.com/DocNR/clave/releases/tag/v1.0.0">v1.0.0 build 102&lt;/a> è stata inviata all&amp;rsquo;App Store questa settimana, segnando il traguardo 1.0 dopo otto mesi di beta TestFlight. La release introduce la firma in background risvegliata da push: Clave può decifrare una richiesta, controllare i permessi, firmare e rispondere con l&amp;rsquo;app chiusa, eliminando il precedente requisito che iOS fosse in primo piano per mantenere reattivo il signer. La verifica delle firme in ingresso viene applicata con Schnorr BIP-340 sul formato canonico di serializzazione degli eventi &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> (la specifica base che definisce come viene calcolato l&amp;rsquo;hash di ogni evento Nostr firmato), insieme a una protezione sulla freschezza contro i replay, così un&amp;rsquo;app malevola non può introdurre di nascosto un evento rifirmato nel canale di risposta.&lt;/p>
&lt;p>La release porta anche il livello di cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> aggiornato, con un modello di permessi delimitato per kind e tre livelli di sensibilità; corregge il caso limite della firma a bassa fiducia in cui una richiesta «chiedi ogni volta» restituiva un errore prima che l&amp;rsquo;utente potesse approvarla; e aggiunge l&amp;rsquo;accoppiamento multi-account, così un singolo pairing dell&amp;rsquo;app può operare con più identità. I pairing bunker mostrano ora la vera identità dell&amp;rsquo;app tramite l&amp;rsquo;estensione dei metadati di connessione &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> proposta da Clave nella &lt;a href="https://github.com/nostr-protocol/nips/pull/2381">PR #2381&lt;/a>. Il flusso di disconnessione pulita usa il nuovo metodo &lt;code>logout&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> integrato nella &lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a>, così un&amp;rsquo;app abbinata può terminare correttamente la sessione senza un disaccoppiamento manuale. Livelli di fiducia per app (Full, Medium, Low) con override per kind di evento, un registro attività per ogni firma e un proxy push gestibile dall&amp;rsquo;utente completano la superficie; lo stack del proxy è distribuito con licenza MIT e il modello di interoperabilità per client è documentato nel repository.&lt;/p>
&lt;h2 id="release">Release&lt;/h2>
&lt;h3 id="amber-v621-aggiunge-il-logout-nip-46-e-riduce-il-consumo-della-batteria-del-signer">Amber v6.2.1 aggiunge il logout NIP-46 e riduce il consumo della batteria del signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> è il principale signer Nostr per Android. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.1">v6.2.1&lt;/a> riduce il consumo della batteria dovuto alle riconnessioni ai relay e ai ping websocket, elimina i relay inattivi dal pool di subscription e smette di risvegliare il dispositivo quando aggiorna la notifica relay. La release aggiunge anche il supporto al metodo &lt;code>logout&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, così i client possono terminare correttamente le sessioni del signer remoto (lo stesso metodo integrato nella specifica questa settimana con la &lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a>), e aggiunge il parsing dell&amp;rsquo;evento kind 39701 (segnalibro web pubblico), permettendo agli utenti di firmare gli eventi segnalibro direttamente da Amber. Le impostazioni sono state ricostruite con schede Material 3 raggruppate e icone distinte; è stato corretto un crash di navigazione nella schermata dei permessi delle applicazioni; e una perdita di connessioni al database per account è stata chiusa costruendo i database in modo atomico.&lt;/p>
&lt;h3 id="nostur-1290-introduce-risposte-anonime-e-logout-dal-signer-remoto">Nostur 1.29.0 introduce risposte anonime e logout dal signer remoto&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> è un client Nostr iOS di Fabian. &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.29.0-desktop">1.29.0-desktop&lt;/a> aggiunge il supporto alle risposte alle ricevute zap e all&amp;rsquo;invio di risposte anonime. Sul lato signer, la release migliora il flusso di connessione al bunker remoto, invia un &lt;code>logout&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> al signer remoto quando l&amp;rsquo;utente esce da un account e corregge uno spinner bloccato quando la connessione a un signer remoto fallisce. Corregge inoltre problemi di caricamento dei DM dovuti al conflitto tra relay DM e relay dell&amp;rsquo;app, elimina post duplicati quando si apre una risposta e si torna indietro e mostra un&amp;rsquo;anteprima dei media nelle righe delle notifiche.&lt;/p>
&lt;h3 id="citrine-v300-introduce-negentropy-auth-nip-42-e-filtro-dei-relay-onion">Citrine v3.0.0 introduce Negentropy, AUTH NIP-42 e filtro dei relay onion&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a> è un aggregatore di relay locali per Android. &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.0.0">v3.0.0&lt;/a> è un incremento della versione principale che aggiunge il supporto a Negentropy &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a> per la sincronizzazione tramite riconciliazione di insiemi, il supporto a signer esterni e AUTH &lt;a href="https://github.com/nostr-protocol/nips/blob/master/42.md">NIP-42&lt;/a> nell&amp;rsquo;aggregatore relay, e il rispetto delle mute list &lt;a href="https://github.com/nostr-protocol/nips/blob/master/51.md">NIP-51&lt;/a> nei recuperi dell&amp;rsquo;aggregatore. L&amp;rsquo;aggregatore limita il recupero a tre relay per autore, con relay sorgente e indicizzatori configurabili; riusa follow, mute e metadati memorizzati nella cache dopo riavvii e cambi di rete; si mette in pausa sulle reti limitate o con restrizioni; e filtra gli URL dei relay onion quando il proxy in uscita è disabilitato. I repost che incorporano eventi protetti vengono rifiutati e, per impostazione predefinita, le mute list sono escluse dall&amp;rsquo;eliminazione basata sull&amp;rsquo;età.&lt;/p>
&lt;h3 id="fips-v040-rc1-aggiunge-un-trasporto-mixnet-nym-e-la-scoperta-lan-mdns">FIPS v0.4.0-rc1 aggiunge un trasporto mixnet Nym e la scoperta LAN mDNS&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> è l&amp;rsquo;implementazione del protocollo di sincronizzazione mesh FIPS. &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.4.0-rc1">v0.4.0-rc1&lt;/a> è compatibile a livello wire con v0.3.0, quindi mesh miste interoperano e non serve un aggiornamento coordinato. La release aggiunge due nuovi modi con cui i nodi possono trovarsi e raggiungersi: un trasporto in uscita sulla mixnet Nym, con demo in un singolo container ed esempio di mixnet-relay, e la scoperta opzionale mDNS / DNS-SD sulla rete locale. Una nuova query &lt;code>show_metrics&lt;/code>, composta soltanto da contatori, abilita uno scraper Prometheus senza costi sul percorso critico, mentre il rekey di FMP e FSP è stato irrobustito per non interrompersi in caso di perdita di pacchetti in entrambe le direzioni.&lt;/p>
&lt;h3 id="calendar-by-formstr-v161-e-v162-aggiungono-notifiche-per-evento">Calendar by Formstr v1.6.1 e v1.6.2 aggiungono notifiche per evento&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Formstr&lt;/a> è un client calendario &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>. &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.6.1">v1.6.1&lt;/a> aggiunge preferenze di notifica per evento (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/109">PR #109&lt;/a>), permettendo all&amp;rsquo;utente di attivare o disattivare i promemoria per ogni singolo evento del calendario. &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.6.2">v1.6.2&lt;/a> corregge l&amp;rsquo;accesso con Amber (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/185">PR #185&lt;/a>), così il nuovo handshake &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> di Amber 6.2.x funziona end-to-end.&lt;/p>
&lt;h3 id="bitchat-v152-e-v153-irrobustiscono-il-trasporto-nostr-e-ble">Bitchat v1.5.2 e v1.5.3 irrobustiscono il trasporto Nostr e BLE&lt;/h3>
&lt;p>&lt;a href="https://github.com/permissionlesstech/bitchat">Bitchat&lt;/a> è un client di chat mesh Bluetooth e Nostr. &lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.2">v1.5.2&lt;/a> applica un rate limit alle notifiche dei peer iOS per prevenire flood (&lt;a href="https://github.com/permissionlesstech/bitchat/pull/972">PR #972&lt;/a>) e rafforza la convalida Nostr e i controlli degli announce BLE (&lt;a href="https://github.com/permissionlesstech/bitchat/pull/1012">PR #1012&lt;/a>), così il percorso di ingest Nostr lato relay rifiuta ora i messaggi malformati prima che raggiungano il gestore mesh locale. &lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.3">v1.5.3&lt;/a> è un hotfix per un crash all&amp;rsquo;avvio causato da un &lt;code>dispatch_once&lt;/code> ricorsivo tra &lt;code>NostrRelayManager&lt;/code> e &lt;code>NetworkActivationService&lt;/code> (&lt;a href="https://github.com/permissionlesstech/bitchat/pull/1343">PR #1343&lt;/a>).&lt;/p>
&lt;h3 id="keep-v105-sposta-la-superficie-delle-policy-del-signer-nel-core-rust-sottoposto-ad-audit">Keep v1.0.5 sposta la superficie delle policy del signer nel core Rust sottoposto ad audit&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> è un signer Android che incorpora il core Rust &lt;a href="https://github.com/privkeyio/keep">keep&lt;/a>. &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.0.5">v1.0.5&lt;/a> fissa la dipendenza a &lt;a href="https://github.com/privkeyio/keep/releases/tag/v0.4.8">keep v0.4.8&lt;/a> e include una correzione alla race condition di inizializzazione del bunker (&lt;a href="https://github.com/privkeyio/keep-android/pull/296">PR #296&lt;/a>), così l&amp;rsquo;handshake non perde più il primo evento sotto carico; popola la schermata Authorized Clients dal callback &lt;code>onConnect&lt;/code> del bunker (&lt;a href="https://github.com/privkeyio/keep-android/pull/291">PR #291&lt;/a>); e consolida il kill switch in un&amp;rsquo;unica fonte di verità in keep-mobile (&lt;a href="https://github.com/privkeyio/keep-android/pull/284">PR #284&lt;/a>). Il core Rust upstream ha pubblicato &lt;a href="https://github.com/privkeyio/keep/releases/tag/v0.4.9">v0.4.9&lt;/a> il 13 giugno, spostando nel core sottoposto ad audit la superficie delle policy del signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (decisione sui permessi, limite di durata per kind sensibili, scadenza, gestione delle chiavi e stato del kill switch), invece di lasciarla duplicata nei wrapper di piattaforma.&lt;/p>
&lt;h3 id="ants-v045-aggiunge-link-ai-portali-per-gli-articoli-e-ripristina-habla-nellinsieme-dei-portali">ants v0.4.5 aggiunge link ai portali per gli articoli e ripristina Habla nell&amp;rsquo;insieme dei portali&lt;/h3>
&lt;p>&lt;a href="https://github.com/dergigi/ants">ants&lt;/a> è lo strumento di ricerca e lettura Nostr di dergigi. &lt;a href="https://github.com/dergigi/ants/releases/tag/v0.4.5">v0.4.5&lt;/a> aggiunge azioni alle schede degli articoli per i post long-form, tra cui link ai portali per articoli, condivisione &lt;code>naddr&lt;/code> specifica dell&amp;rsquo;articolo, copia di &lt;code>nevent&lt;/code> e accesso al JSON grezzo. L&amp;rsquo;insieme dei portali è stato aggiornato ripristinando Habla, sostituendo destinazioni non più attive e rimuovendo il portale imwald. La release ripristina anche il rendering delle note a piè di pagina degli articoli, preservando la navigazione tramite anchor all&amp;rsquo;interno dell&amp;rsquo;articolo, e attende una connessione relay prima di recuperare il profilo durante il ripristino dell&amp;rsquo;accesso, così l&amp;rsquo;avatar nell&amp;rsquo;intestazione viene risolto correttamente.&lt;/p>
&lt;h3 id="morganite-v003-introduce-una-cache-blossom-locale-per-android-con-tor-on-demand">Morganite v0.0.3 introduce una cache Blossom locale per Android con Tor on demand&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Morganite">Morganite&lt;/a> è una nuova cache Blossom locale per Android di greenart7c3, autore di Amber e Citrine. La cache agisce come mirror locale &lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/08.md">BUD-08&lt;/a> ed elimina i blob meno usati quando supera 1 GB. &lt;a href="https://github.com/greenart7c3/Morganite/releases/tag/v0.0.3">v0.0.3&lt;/a> avvia Tor on demand e lo arresta quando è inattivo per risparmiare batteria, disconnette il relay Nostr dopo la ricerca dell&amp;rsquo;autore per eliminare il consumo in background, corregge il consumo causato da uno stream logcat non filtrato e da client HTTP non rilasciati, e libera i client &lt;code>OkHttp&lt;/code> sostituiti fuori dal thread principale. La release recupera inoltre i relay inbox dell&amp;rsquo;utente prima di interrogare l&amp;rsquo;elenco dei server Blossom, così la scoperta dei blob segue il modello outbox, e scarica il blob per le richieste &lt;code>HEAD&lt;/code> quando non è presente nella cache, mantenendo il riscaldamento della cache legato alla domanda effettiva dei client.&lt;/p>
&lt;h3 id="coracle-0634-e-0635-correggono-laccesso-nip-46-i-feed-obsoleti-e-lattivazione-delle-risposte">Coracle 0.6.34 e 0.6.35 correggono l&amp;rsquo;accesso NIP-46, i feed obsoleti e l&amp;rsquo;attivazione delle risposte&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a> è un client web Nostr di hodlbod. &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.34">0.6.34&lt;/a> corregge l&amp;rsquo;accesso &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, uno stato obsoleto del feed nel quale la timeline home non si aggiornava dopo aver cambiato vista e un selettore delle risposte che, quando attivato, filtrava tutto. La release ricostruisce inoltre le viste feed ed elenco, corregge un problema con l&amp;rsquo;inset della safe area dei toast e migliora il caricamento delle immagini. &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.35">0.6.35&lt;/a> è un piccolo seguito che corregge i repost nascosti quando le risposte sono disabilitate, così il filtro dei repost non applica più eccessivamente quello delle risposte.&lt;/p>
&lt;h3 id="zeus-v1310-rc1-distribuisce-noffer-clink-e-nwc-senza-coda">Zeus v13.1.0-rc1 distribuisce noffer CLINK e NWC senza coda&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> è un wallet Bitcoin e Lightning self-custodial con una superficie Nostr per wallet connect e pagamenti noffer. &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v13.1.0-rc1">v13.1.0-rc1&lt;/a> aggiunge su iOS pagamenti Nostr Wallet Connect &lt;a href="https://github.com/nostr-protocol/nips/blob/master/47.md">NIP-47&lt;/a> senza coda (in collaborazione con Primal), così una fattura NWC pagata non resta più in attesa in una coda in background; introduce il supporto ai pagamenti noffer CLINK, con Zeus Pay che genera un noffer CLINK per ogni account, così un mittente può pagare qualsiasi utente Zeus usando soltanto la sua chiave Nostr; e aggiunge su Zeus Pay un opt-out per gli zap Nostr, così il destinatario può disabilitare il percorso delle ricevute kind 9735 senza disabilitare NWC.&lt;/p>
&lt;h3 id="alby-extension-v3143-migra-gli-stack-crittografici-noblescure-usati-dal-signer-nip-07">Alby Extension v3.14.3 migra gli stack crittografici noble/scure usati dal signer NIP-07&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/lightning-browser-extension">Alby Extension&lt;/a> è l&amp;rsquo;estensione browser che fornisce firma &lt;a href="https://github.com/nostr-protocol/nips/blob/master/07.md">NIP-07&lt;/a> e Nostr Wallet Connect insieme alla sua superficie Lightning. &lt;a href="https://github.com/getAlby/lightning-browser-extension/releases/tag/v3.14.3">v3.14.3&lt;/a> migra gli stack &lt;code>@noble/curves&lt;/code>, &lt;code>@noble/hashes&lt;/code>, &lt;code>@noble/ciphers&lt;/code>, &lt;code>@noble/secp256k1&lt;/code>, &lt;code>@scure/bip32&lt;/code> e &lt;code>@scure/base&lt;/code> alle versioni principali v2 e v3. Queste sono le librerie crittografiche sulle quali il percorso del signer &lt;a href="https://github.com/nostr-protocol/nips/blob/master/07.md">NIP-07&lt;/a> fa affidamento per firmare gli eventi e per la cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, quindi un cambio di versione principale tocca il formato wire prodotto dall&amp;rsquo;estensione per ogni richiesta di firma di un evento proveniente da un client web Nostr.&lt;/p>
&lt;h3 id="mostro-mobile-v128-e-v129-supportano-protocol-v2-e-mostrano-la-policy-del-deposito">Mostro Mobile v1.2.8 e v1.2.9 supportano Protocol v2 e mostrano la policy del deposito&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> è il client mobile per Mostro. &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.8">v1.2.8&lt;/a> introduce lato client il supporto a &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.13.0">mostro-core v0.13.0 Protocol v2&lt;/a> (trattato nella storia principale qui sopra) e aggiunge 17 funzionalità complessive, tra cui il deposito antiabuso del maker dalla &lt;a href="https://github.com/MostroP2P/mobile/pull/608">PR #608&lt;/a>, la scoperta dei relay di bootstrap dalla &lt;a href="https://github.com/MostroP2P/mobile/pull/610">PR #610&lt;/a>, la persistenza dell&amp;rsquo;annullamento dell&amp;rsquo;ordine nella cronologia delle notifiche dalla &lt;a href="https://github.com/MostroP2P/mobile/pull/602">PR #602&lt;/a> e i limiti sull&amp;rsquo;importo fiat nella schermata di creazione degli ordini dalla &lt;a href="https://github.com/MostroP2P/mobile/pull/605">PR #605&lt;/a>. &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.9">v1.2.9&lt;/a> espone la policy del deposito antiabuso dall&amp;rsquo;evento info del nodo (&lt;a href="https://github.com/MostroP2P/mobile/pull/617">PR #617&lt;/a>), così l&amp;rsquo;utente può vedere le regole del deposito dell&amp;rsquo;istanza Mostro prima di aprire un ordine.&lt;/p>
&lt;h3 id="zapbook-dalle-build-4-alla-27-introduce-multi-account-pubblicazione-delle-chiavi-marmot-e-nuovi-inviti-ai-circoli">ZapBook dalle build 4 alla 27 introduce multi-account, pubblicazione delle chiavi Marmot e nuovi inviti ai circoli&lt;/h3>
&lt;p>&lt;a href="https://github.com/codeswot/ZapBook">ZapBook&lt;/a> è un&amp;rsquo;app di lettura sociale nativa Nostr di codeswot per iOS e Android, organizzata attorno a circoli di lettura da 1 a 100 persone che condividono traguardi e si inviano zap in sats come incoraggiamento. Tra la &lt;a href="https://github.com/codeswot/ZapBook/releases/tag/v1.0.0-build.4">build 4&lt;/a> dell'11 giugno e la &lt;a href="https://github.com/codeswot/ZapBook/releases/tag/v1.0.0-build.27">build 27&lt;/a> del 15 giugno, il progetto ha pubblicato 17 build con tag e integrato 7 PR. Il supporto multi-account con cambio fluido di account è arrivato nella &lt;a href="https://github.com/codeswot/ZapBook/pull/25">PR #25&lt;/a>, così un utente può conservare nell&amp;rsquo;app più identità Nostr e migrare le sessioni tra loro. La pubblicazione iniziale dei key package &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (kind 443) viene ora attivata automaticamente al completamento dell&amp;rsquo;onboarding (&lt;a href="https://github.com/codeswot/ZapBook/pull/20">PR #20&lt;/a>), condizione preliminare per la messaggistica di gruppo su invito nei circoli di lettura. La gestione dei membri rimossi dai circoli elabora ora correttamente i nuovi inviti (&lt;a href="https://github.com/codeswot/ZapBook/pull/24">PR #24&lt;/a>), chiudendo una classe di bug per cui i membri riaggiunti non ricevevano nuovi inviti dopo la rimozione. La serie di release sposta inoltre l&amp;rsquo;inferenza degli embedding ONNX in un isolate in background (&lt;a href="https://github.com/codeswot/ZapBook/pull/19">PR #19&lt;/a>) per la ricerca semantica nel lettore e integra il servizio NWC con un &lt;code>APP_ID_SUFFIX&lt;/code> per configurazioni specifiche dell&amp;rsquo;ambiente, così un singolo hub può servire più build di ZapBook.&lt;/p>
&lt;h3 id="alby-hub-v1230-corregge-la-pubblicazione-nip-47-per-le-app-eliminate-e-passa-bitrefill-a-nwc">Alby Hub v1.23.0 corregge la pubblicazione NIP-47 per le app eliminate e passa Bitrefill a NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> è un hub Lightning e Nostr self-hosted. La superficie non Nostr di &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.23.0">v1.23.0&lt;/a> è ampia (canali Just-in-Time, una pagina Cards per ricaricare carte di debito, un backend di pagamento Ark sperimentale e una home page di storie) e non rientra nell&amp;rsquo;ambito di Compass. Sul versante &lt;a href="https://github.com/nostr-protocol/nips/blob/master/47.md">NIP-47&lt;/a>, la release smette di riprovare a pubblicare le info NIP-47 per le app eliminate, così una connessione rimossa non continua a ripubblicare il proprio evento info kind 13194 (&lt;a href="https://github.com/getAlby/hub/pull/2391">PR #2391&lt;/a>), e rimuove la voce dell&amp;rsquo;app personalizzata Bitrefill in favore di una connessione NWC standard (&lt;a href="https://github.com/getAlby/hub/pull/2420">PR #2420&lt;/a>). L&amp;rsquo;opzione readonly per le app dell&amp;rsquo;app store (&lt;a href="https://github.com/getAlby/hub/pull/2415">PR #2415&lt;/a>) restringe gli ambiti dei permessi per le app NWC pubblicate tramite lo store interno all&amp;rsquo;hub.&lt;/p>
&lt;h3 id="altre-release">Altre release&lt;/h3>
&lt;p>Release minori di questa settimana con contenuti rilevanti per Nostr ma sostanza limitata per ciascuna: &lt;a href="https://github.com/nostria-app/nostria/releases">Nostria dalla v3.1.48 alla v3.1.50&lt;/a>, che prosegue il rollout dei Web Bookmarks con affidabilità delle notifiche e ottimizzazione del database dei thread di eventi nella v3.1.50; &lt;a href="https://github.com/ostermayer/deepmarks-public/releases">Deepmarks dalla v0.7.0 alla v0.7.5&lt;/a>, che itera sul client di segnalibri sociali &lt;a href="https://github.com/nostr-protocol/nips/pull/2280">NIP-B0&lt;/a> (questa settimana il progetto ha anche aggiunto il link al proprio sito nella &lt;a href="https://github.com/andotherstuff/nostr-compass/pull/96">PR #96&lt;/a>); &lt;a href="https://github.com/privkeyio/keep-android/releases">Keep dalla v1.1.1 alla v1.1.4&lt;/a>, con quattro correzioni alle build riproducibili F-Droid sopra la release signer v1.0.5 trattata sopra; &lt;a href="https://github.com/77elements/noornote/releases">NoorNote v0.11.1, v0.12.0, v0.13.0 e v0.13.1&lt;/a> sul client desktop per note; &lt;a href="https://github.com/dergigi/boris/releases/tag/v0.12.2">Boris v0.12.2&lt;/a> sul lettore Boris; &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.13.0">Nostr Mail Client v0.13.0&lt;/a>; &lt;a href="https://github.com/spacecowboy/Feeder/releases/tag/2.21.1">Feeder 2.21.1&lt;/a>; &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.13">nak v0.19.13&lt;/a>, un aggiornamento di manutenzione vuoto per la CLI Nostr; &lt;a href="https://github.com/mmalmi/hashtree/releases">Hashtree dalla v0.2.68 alla v0.2.71&lt;/a>, che aggiorna le cache mutable-root del gateway per il publisher di release indirizzate tramite hash tree; &lt;a href="https://github.com/Spl0itable/NYM/releases">NYM v3.72.501 e v3.72.502&lt;/a>, che aggiornano l&amp;rsquo;implementazione relay basata su Nostrify; &lt;a href="https://github.com/yysskk/swift-nostr-client/releases">swift-nostr-client 0.3.0, 0.4.0 e 0.5.0&lt;/a>, tre release minori sostenute da 85 PR integrate sul client Nostr iOS; &lt;a href="https://github.com/lawalletio/lawallet-nwc/releases/tag/v0.11.0">lawallet-nwc v0.11.0&lt;/a>, con 18 PR integrate sul bridge LaWallet Nostr Wallet Connect; &lt;a href="https://github.com/mouse484/astraea/releases">Astraea dalla v5.35.59 alla v5.35.62&lt;/a>, che itera sul client Nostr Astraea; e i &lt;a href="https://github.com/andotherstuff/nostr-compass/pull/101">bot DM Nostr verificati NIP-05 BTC Recharge e giftcardshop&lt;/a>, aggiunti alla directory dei progetti in una nuova categoria Shops.&lt;/p>
&lt;h2 id="modifiche-non-ancora-rilasciate">Modifiche non ancora rilasciate&lt;/h2>
&lt;h3 id="divine-integra-119-pr-verso-la-prossima-release-del-video-breve">diVine integra 119 PR verso la prossima release del video breve&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a> è un client di video brevi in loop nativo Nostr che ripristina l&amp;rsquo;archivio Vine su un&amp;rsquo;infrastruttura Nostr. Questa settimana il progetto ha integrato 119 PR senza pubblicare una release con tag. Il lavoro sostanziale sulla superficie Nostr comprende un percorso REST-first per pubblicare video, così la mancanza dell&amp;rsquo;OK di un relay non viene più mostrata come un errore (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5221">PR #5221&lt;/a> e &lt;a href="https://github.com/divinevideo/divine-mobile/pull/5220">PR #5220&lt;/a>); un nuovo filtraggio delle griglie curate e dei like quando cambia la blocklist generale (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5208">PR #5208&lt;/a>); il recupero dell&amp;rsquo;elenco delle conversazioni DM dopo una regressione in seguito alla reinstallazione (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5202">PR #5202&lt;/a>); il ripristino del badge Nostr sui profili (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5218">PR #5218&lt;/a>); e riferimenti &lt;code>nostr:&lt;/code> convertiti in link nelle citazioni dei commenti (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/5225">PR #5225&lt;/a>). Lo stack dell&amp;rsquo;editor video ha aggiunto unione o eliminazione di clip con selezione multipla, canvas con pinch-to-zoom e scrim letterbox che segue lo zoom, nonché trasformazioni di ritaglio, rotazione e ribaltamento delle clip.&lt;/p>
&lt;h3 id="pollerama-integra-15-pr-nella-finestra-con-una-rielaborazione-del-signer-e-unondata-di-funzionalità">Pollerama integra 15 PR nella finestra, con una rielaborazione del signer e un&amp;rsquo;ondata di funzionalità&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-polls">Pollerama&lt;/a> (repo &lt;code>formstr-hq/nostr-polls&lt;/code>) è il client di sondaggi e feed nativo Nostr della famiglia Form*, fratello di &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>, che questa settimana ha pubblicato v1.6.2. L&amp;rsquo;ultima release con tag su &lt;code>nostr-polls&lt;/code> è &lt;a href="https://github.com/formstr-hq/nostr-polls/releases/tag/v1.6.4">v1.6.4&lt;/a> di marzo, quindi il lavoro nella finestra è in coda per il prossimo tag e non è ancora stato pubblicato, ma il flusso di merge è intenso: tra il 9 e il 16 giugno sono state integrate quindici pull request, con contributi di abh3po, geralt-debugs e SIDDHANTCOOKIE. Sul versante signer, il progetto ha sostituito la superficie di firma esistente nella &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/198">PR #198&lt;/a> e aggiornato la sostituzione nella &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/201">PR #201&lt;/a>; inoltre, la &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/200">PR #200&lt;/a> impedisce che gli aggiornamenti dei metadati kind 0 partano all&amp;rsquo;accesso, così un nuovo login non pubblica più un evento profilo non richiesto dall&amp;rsquo;utente. L&amp;rsquo;ondata di funzionalità comprende un editor del profilo con pubblicazione dalla vista profilo (&lt;a href="https://github.com/formstr-hq/nostr-polls/pull/205">PR #205&lt;/a>), un flusso di repost migliorato (&lt;a href="https://github.com/formstr-hq/nostr-polls/pull/209">PR #209&lt;/a>) e un percorso più semplice per la scoperta degli argomenti (&lt;a href="https://github.com/formstr-hq/nostr-polls/pull/202">PR #202&lt;/a>). La prossima release con tag includerà tutto questo.&lt;/p>
&lt;h3 id="lavoro-su-librerie-e-strumenti">Lavoro su librerie e strumenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/375">NDK PR #375&lt;/a> e il lavoro integrato nei repository &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> e &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> sono rimasti tranquilli questa settimana, con una o due PR integrate ciascuno e nessuna release con tag. L&amp;rsquo;attività su &lt;a href="https://github.com/contextvm/contextvm-sdk">ContextVM SDK&lt;/a> (1 PR integrata), &lt;a href="https://github.com/agentvm/mesh-llm">mesh-llm&lt;/a> (37 PR integrate, 8 PR aperte), &lt;a href="https://github.com/seth-for-real/zap-cooking">Zap Cooking&lt;/a> (26 PR integrate) e &lt;a href="https://github.com/routstrd/routstrd">Routstrd&lt;/a> (2 PR integrate) è proseguita senza un tag di release nella finestra.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-sulle-specifiche-di-protocollo">Aggiornamenti NIP e lavoro sulle specifiche di protocollo&lt;/h2>
&lt;p>Il lavoro di questa settimana sul protocollo si concentra in due aree: rafforzamento dei signer e governance dei gruppi &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Integrato questa settimana:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect).&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a> aggiunge un metodo &lt;code>logout&lt;/code> che consente a un client di terminare correttamente una sessione con un signer remoto. Amber, Clave e Nostur hanno tutti distribuito il supporto nella stessa settimana.&lt;/li>
&lt;li>&lt;strong>NIP-CC (Community Chat).&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2365">PR #2365&lt;/a> aggiorna NIP-CC per fare riferimento alla moderna specifica &lt;a href="https://github.com/nostr-protocol/nips/pull/2331">NIP-GC (Group Chat)&lt;/a> per il meccanismo lato client, allineando la specifica delle stanze delle community con la primitiva canonica per la chat di gruppo.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Cluster NIP-29 aperto (governance dei gruppi basata su relay):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tag banner.&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2383">PR #2383&lt;/a> aggiunge un tag &lt;code>banner&lt;/code> all&amp;rsquo;evento dei metadati di gruppo kind 39000.&lt;/li>
&lt;li>&lt;strong>Suffisso del codice invito.&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2380">PR #2380&lt;/a> introduce un suffisso del codice invito nell&amp;rsquo;identificatore del gruppo, così un invito monouso può essere codificato nell&amp;rsquo;ID del gruppo stesso.&lt;/li>
&lt;li>&lt;strong>Fissaggio dei messaggi.&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2379">PR #2379&lt;/a> aggiunge un&amp;rsquo;azione di moderazione per aggiornare l&amp;rsquo;elenco dei messaggi fissati e un evento kind 39005 per trasmettere l&amp;rsquo;insieme fissato.&lt;/li>
&lt;li>&lt;strong>Segnalazione dei gruppi tramite DM NIP-17.&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2377">PR #2377&lt;/a> definisce un flusso di segnalazione nel quale i membri comunicano gli abusi nel gruppo al contatto amministrativo del relay tramite DM gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, tenendo il traffico di moderazione fuori dal flusso pubblico degli eventi del gruppo.&lt;/li>
&lt;li>&lt;strong>Controllo degli accessi basato sui ruoli.&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2376">PR #2376&lt;/a> aggiunge una superficie RBAC sopra l&amp;rsquo;attuale distinzione amministratore/membro.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Seguiti NIP-46 aperti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Metadati del client nella richiesta di connessione.&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2381">PR #2381&lt;/a> consente al client che si connette di inviare nella richiesta i campi opzionali &lt;code>name&lt;/code>, &lt;code>url&lt;/code> e &lt;code>icon&lt;/code>, così il signer può mostrare l&amp;rsquo;identità dell&amp;rsquo;applicazione nella schermata di pairing. Clave build 101 implementa la proposta.&lt;/li>
&lt;li>&lt;strong>Evitare timeout silenziosi.&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2375">PR #2375&lt;/a> restringe la specifica affinché un signer che necessita dell&amp;rsquo;input dell&amp;rsquo;utente mantenga aperta la richiesta fino alla decisione, correggendo la modalità di errore che Clave build 100 ha risolto lato implementazione.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Altro lavoro aperto:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>NIP-100 Sovereign Agent Identity Network (SNIN).&lt;/strong> La &lt;a href="https://github.com/nostr-protocol/nips/pull/2378">PR #2378&lt;/a> propone un protocollo agent-to-agent per l&amp;rsquo;identità degli agenti autonomi e la scoperta delle loro capacità. La proposta è ampia e probabilmente sarà suddivisa in parti più piccole durante la revisione.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Specifica Blossom.&lt;/strong> La &lt;a href="https://github.com/hzrd149/blossom/pull/108">BUD-00 PR #108&lt;/a>, integrata il 15 giugno, amplia la definizione BUD per includere convenzioni lato client e formati di dati costruiti sopra i blob Blossom che i server non implementano. La modifica porta BUD come BUD-10 (lo schema URI &lt;code>blossom:&lt;/code>) e BUD-08 (le convenzioni per cache locali implementate questa settimana da Morganite) all&amp;rsquo;interno della numerazione canonica, mentre prima erano trattate come estensioni fuori banda.&lt;/p>
&lt;h2 id="approfondimento-nip-nip-77-negentropy">Approfondimento NIP: NIP-77 (Negentropy)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a> definisce un protocollo di riconciliazione degli insiemi per i relay Nostr. Due parti (un client e un relay, oppure due relay in un bridge) possiedono ciascuna un insieme di eventi che corrisponde a un filtro e vogliono convergere verso l&amp;rsquo;unione senza ritrasmettere tutto. L&amp;rsquo;approccio ingenuo consiste nell&amp;rsquo;inviare tutti gli ID degli eventi e calcolare la differenza; per un filtro molto attivo, il costo cresce con la dimensione dell&amp;rsquo;insieme più grande, indipendentemente da quanto differiscano i due insiemi. NIP-77 riduce il costo rendendolo proporzionale alla differenza simmetrica.&lt;/p>
&lt;p>La specifica si basa su due messaggi relay, &lt;code>NEG-OPEN&lt;/code> e &lt;code>NEG-MSG&lt;/code>. Un client apre una sessione di riconciliazione con &lt;code>[&amp;quot;NEG-OPEN&amp;quot;, &amp;lt;subscription_id&amp;gt;, &amp;lt;filter&amp;gt;, &amp;lt;initial_message&amp;gt;]&lt;/code>, dove &lt;code>&amp;lt;initial_message&amp;gt;&lt;/code> è un payload Negentropy codificato in esadecimale che descrive la visione dell&amp;rsquo;insieme del client. Le risposte arrivano come frame &lt;code>NEG-MSG&lt;/code> e le due parti si scambiano messaggi finché non raggiungono un punto fisso. Ogni &lt;code>NEG-MSG&lt;/code> restringe il disaccordo (suddividendo un intervallo in sottointervalli con le rispettive fingerprint) oppure termina una foglia (elencando gli ID di un intervallo piccolo, così il destinatario può calcolare direttamente la differenza). Quando una parte stabilisce che l&amp;rsquo;altra possiede eventi che le mancano, invia una normale &lt;code>REQ&lt;/code> per quegli ID; quando possiede eventi che mancano all&amp;rsquo;altra, la specifica demanda il percorso di upload a una normale pubblicazione &lt;code>EVENT&lt;/code> sull&amp;rsquo;altro lato.&lt;/p>
&lt;p>La struttura dati sottostante è una variante sequenziata del Merkle tree. Ogni evento nell&amp;rsquo;insieme locale è indicizzato da &lt;code>(created_at, id)&lt;/code> e raggruppato in intervalli; ciascun intervallo contiene una piccola fingerprint calcolata dagli ID che include. Quando una fingerprint coincide tra client e relay, l&amp;rsquo;intervallo è convergente e viene saltato. Quando differisce, la parte che risponde divide l&amp;rsquo;intervallo a metà (o in sottointervalli) e invia le fingerprint di ciascuno, ricorrendo nel disaccordo. Gli intervalli foglia (al di sotto di una piccola soglia di eventi) vengono inviati per esteso. La proprietà fondamentale è che confermare gli intervalli già convergenti costa quasi nulla, indipendentemente dal numero di eventi al loro interno.&lt;/p>
&lt;p>L&amp;rsquo;inquadramento in ordine &lt;code>created_at&lt;/code> è importante per due motivi. Primo, la paginazione Nostr esistente usa &lt;code>until&lt;/code> e &lt;code>since&lt;/code> rispetto allo stesso timestamp, quindi un reconciler può riprendere tra sessioni senza risincronizzare l&amp;rsquo;intero archivio: memorizza il limite superiore e avvia da lì la sincronizzazione successiva. Secondo, data una chiave ordinata, le divisioni degli intervalli sono deterministiche, quindi client e relay concordano sempre sul confine successivo senza bisogno di un messaggio di negoziazione separato. Il costo di una sincronizzazione è approssimativamente O(d log n), dove d è la dimensione della differenza simmetrica e n quella dell&amp;rsquo;insieme più grande: molto inferiore al costo O(n) di un invio ingenuo di ID e ai round trip O(n) richiesti da N REQ.&lt;/p>
&lt;p>Vale la pena evidenziare tre compromessi implementativi. La dimensione della fingerprint (la specifica usa 32 byte per intervallo) bilancia probabilità di collisione e banda: fingerprint più piccole risparmiano byte ma aumentano il rischio di una corrispondenza falsa che faccia perdere eventi. La soglia delle foglie (quando smettere di dividere e inviare gli ID per esteso) bilancia round trip e banda per messaggio: soglie più basse comportano più round, soglie più alte messaggi foglia più grandi. Inoltre, il protocollo presume che entrambe le parti possano calcolare la stessa fingerprint sullo stesso intervallo; ciò richiede una serializzazione stabile delle coppie &lt;code>(created_at, id)&lt;/code> condivisa dalle due implementazioni, motivo per cui la specifica è meticolosa sull&amp;rsquo;ordine dei byte nella costruzione della fingerprint.&lt;/p>
&lt;p>Un relay che annuncia NIP-77 nel proprio &lt;code>supported_nips&lt;/code> NIP-11 permette ai client di eseguire la riconciliazione al posto di, o insieme a, una normale sincronizzazione basata su &lt;code>REQ&lt;/code>. Il client sceglie il protocollo in base alle necessità: una nuova subscription che vuole il traffico più recente usa &lt;code>REQ&lt;/code>, perché non esiste uno stato precedente da riconciliare; un mirror di lunga durata che deve recuperare dopo un&amp;rsquo;interruzione usa &lt;code>NEG-OPEN&lt;/code>, perché la differenza simmetrica è piccola rispetto all&amp;rsquo;archivio. I due percorsi si completano a vicenda in contesti di deployment differenti.&lt;/p>
&lt;p>Esempio di scambio &lt;code>NEG-OPEN&lt;/code>:&lt;/p>
&lt;pre tabindex="0">&lt;code>→ [&amp;#34;NEG-OPEN&amp;#34;, &amp;#34;sync-1&amp;#34;, {&amp;#34;kinds&amp;#34;:[1],&amp;#34;authors&amp;#34;:[&amp;#34;abc...&amp;#34;]}, &amp;#34;&amp;lt;hex initial Negentropy message&amp;gt;&amp;#34;]
← [&amp;#34;NEG-MSG&amp;#34;, &amp;#34;sync-1&amp;#34;, &amp;#34;&amp;lt;hex relay response&amp;gt;&amp;#34;]
→ [&amp;#34;NEG-MSG&amp;#34;, &amp;#34;sync-1&amp;#34;, &amp;#34;&amp;lt;hex client refinement&amp;gt;&amp;#34;]
← [&amp;#34;NEG-MSG&amp;#34;, &amp;#34;sync-1&amp;#34;, &amp;#34;&amp;lt;hex leaf with IDs the relay has and client lacks&amp;gt;&amp;#34;]
→ [&amp;#34;REQ&amp;#34;, &amp;#34;fetch-1&amp;#34;, {&amp;#34;ids&amp;#34;:[...]}]
← [...EVENT messages...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;fetch-1&amp;#34;]
→ [&amp;#34;CLOSE&amp;#34;, &amp;#34;sync-1&amp;#34;]
&lt;/code>&lt;/pre>&lt;p>Questa settimana &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.0.0">Citrine v3.0.0&lt;/a> introduce il supporto a &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a> nell&amp;rsquo;aggregatore relay, la prima volta in cui la superficie di relay locale Android può riconciliarsi con relay esterni invece di eseguire recuperi &lt;code>REQ&lt;/code> in massa.&lt;/p>
&lt;h2 id="approfondimento-nip-nip-61-nutzaps">Approfondimento NIP: NIP-61 (Nutzaps)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-61/">NIP-61&lt;/a> definisce pagamenti ecash Cashu peer-to-peer consegnati come eventi Nostr. Un mittente pubblica un token Cashu bloccato sulla chiave pubblica derivata da Nostr del destinatario, che lo riscatta dalla mint quando preferisce. A differenza degli zap NIP-57, che richiedono che il destinatario sia raggiungibile tramite Lightning nel momento del pagamento, un nutzap è un token ecash autonomo che il destinatario può riscattare secondo i propri tempi.&lt;/p>
&lt;p>La specifica combina tre kind di evento con la primitiva di lock P2PK di Cashu. Kind 10019 è la raccomandazione delle mint del destinatario: un evento sostituibile che elenca una o più mint dalle quali il destinatario accetta nutzap, insieme alla chiave pubblica Cashu usata per bloccare le proof a suo favore. Questa chiave è distinta dalla chiave d&amp;rsquo;identità Nostr del destinatario: è una chiave con ambito wallet derivata per ricevere nutzap, così la chiave d&amp;rsquo;identità non deve mai entrare in contatto con i segreti ecash. Prima di inviare, i mittenti leggono kind 10019, in modo che il token costruito sia riscattabile dal destinatario presso una mint di cui già si fida.&lt;/p>
&lt;p>Kind 9321 è l&amp;rsquo;evento di pagamento. Contiene uno o più tag &lt;code>proof&lt;/code> Cashu (ciascuno con una proof bloccata P2PK legata alla pubkey nutzap del destinatario indicata in kind 10019), un tag &lt;code>u&lt;/code> con l&amp;rsquo;URL della mint, tag opzionali &lt;code>e&lt;/code> e &lt;code>a&lt;/code> che identificano una nota alla quale è stato inviato uno zap e un tag &lt;code>p&lt;/code> per il destinatario. Il destinatario riceve kind 9321 attraverso la normale subscription Nostr, verifica che le proof siano bloccate sulla propria pubkey nutzap presso una mint elencata nel proprio kind 10019, le sblocca con la chiave privata corrispondente e le conserva nel wallet &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> oppure le converte in Lightning. Kind 7375 registra le proof riscattate nella catena degli eventi wallet del destinatario, così un wallet che si risincronizza dai relay non conteggia due volte le proof nutzap provenienti dalla stessa fonte.&lt;/p>
&lt;p>Il modello di fiducia è il prezzo esplicito del design. Le mint Cashu detengono il valore sottostante; una mint malevola o sequestrata può rifiutarsi di riscattarlo. NIP-61 eredita questo rischio di custodia da NIP-60 e non cerca di eliminarlo. In cambio, il design offre micropagamenti compatibili con destinatari offline e finalità istantanea: il token è il pagamento, il destinatario non deve eseguire un nodo Lightning né accettare HTLC in ingresso in tempo reale e un mittente che possiede proof presso la stessa mint può pagare senza un singolo passaggio di rete verso un custode. L&amp;rsquo;annuncio kind 10019 è il filtro del livello sociale: i mittenti che scelgono una mint fuori dall&amp;rsquo;insieme fidato del destinatario rischiano un token non riscattabile, mantenendo prevedibile la superficie di riscatto del destinatario.&lt;/p>
&lt;p>Rispetto a NIP-57, anche il percorso di verifica è più semplice. Una ricevuta zap NIP-57 è un kind 9735 pubblicato dal servizio LNURL del destinatario e richiede che il verificatore recuperi l&amp;rsquo;endpoint LNURL e confermi che la chiave di firma della ricevuta corrisponda a quella dichiarata dall&amp;rsquo;endpoint. Un nutzap porta inline la prova crittografica del pagamento (le stesse proof bloccate P2PK), così qualunque verificatore con le chiavi pubbliche della mint può confermare la validità delle proof senza un round trip verso terze parti. Il compromesso è che verificare un nutzap richiede di comprendere i keyset della mint, mentre verificare NIP-57 richiede soltanto l&amp;rsquo;infrastruttura LNURL standard.&lt;/p>
&lt;p>I due formati di zap coesistono come complementi. Gli zap NIP-57 restano la scelta giusta per i destinatari con routing Lightning operativo e per i mittenti che vogliono importi denominati in sats con semantica di regolamento Lightning. Gli zap NIP-61 diventano la scelta giusta per destinatari offline, flussi ricchi di micropagamenti nei quali le commissioni Lightning superano il valore trasferito e client rivolti a utenti senza infrastruttura Lightning.&lt;/p>
&lt;p>Esempio di evento nutzap:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5f87fe2d4c8b9a0e3f1c4d5e6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1750162800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">9321&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;proof&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;amount\&amp;#34;:21,\&amp;#34;secret\&amp;#34;:\&amp;#34;...\&amp;#34;,\&amp;#34;C\&amp;#34;:\&amp;#34;...\&amp;#34;,\&amp;#34;id\&amp;#34;:\&amp;#34;...\&amp;#34;}&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;u&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://mint.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8b39f4e5d6c7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;c5d8a4e3b2a1f0e9d8c7b6a5949382716050403020100ffeeddccbbaa99887766&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Great post!&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a6978869504132c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Questa settimana &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.12.0">Amethyst v1.12.0&lt;/a> introduce il rendering nativo dei nutzap NIP-61 insieme alla superficie wallet NIP-60 (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3075">PR #3075&lt;/a>), rendendo Amethyst il primo client Android dominante a mostrare nella timeline i nutzap ricevuti e a offrire nel wallet viste del saldo per mint.&lt;/p></content:encoded></item><item><title>Nostr Compass #26</title><link>https://nostrcompass.org/it/newsletters/2026-06-10-newsletter/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-06-10-newsletter/</guid><description>&lt;p>L&amp;rsquo;organizzazione Marmot Protocol apre tre nuovi repo per una bozza di protocollo v2 e una linea di client nativi: un workspace Rust chiamato &lt;code>darkmatter&lt;/code>, un&amp;rsquo;app iOS SwiftUI &lt;code>darkmatter-ios&lt;/code> e un&amp;rsquo;app Android Kotlin/Compose &lt;code>darkmatter-android&lt;/code>. L&amp;rsquo;originale Flutter Whitenoise viene archiviato. Chama comprime diciassette release in una settimana e attraversa la linea di app standalone con v3.0.0 prima di portare un ridisegno completo della UI della trade room e storefront per venditore in v3.1.0, sopra a share Shamir solo per il detentore, sostituzione dell&amp;rsquo;arbitro, routing di community mondiale e notifiche di trade end-to-end. Coracle lancia un servizio di relay ospitato a pagamento sostenuto dallo stack open-source Caravel e zooid, con integrazione profonda con Flotilla pianificata. Angor passa a mainnet di default in v0.2.30 e porta un test di funding UAT a 3 utenti in v0.2.29. Amethyst porta 41 PR non rilasciate che continuano il lavoro NIP-32 / NIP-F4 / Tor della scorsa settimana. NIP-67 (hint di completezza EOSE) e autocomplete NIP-50 sono mergiati, chiudendo due gap di correttezza di lunga data nel protocollo relay core. NIP-GART propone un wire format a tutela della privacy per gli alert di emergenza, e NIP-46 acquisisce un metodo di logout.&lt;/p></description><content:encoded>&lt;p>L&amp;rsquo;organizzazione Marmot Protocol apre tre nuovi repo per una bozza di protocollo v2 e una linea di client nativi: un workspace Rust chiamato &lt;code>darkmatter&lt;/code>, un&amp;rsquo;app iOS SwiftUI &lt;code>darkmatter-ios&lt;/code> e un&amp;rsquo;app Android Kotlin/Compose &lt;code>darkmatter-android&lt;/code>. L&amp;rsquo;originale Flutter Whitenoise viene archiviato. Chama comprime diciassette release in una settimana e attraversa la linea di app standalone con v3.0.0 prima di portare un ridisegno completo della UI della trade room e storefront per venditore in v3.1.0, sopra a share Shamir solo per il detentore, sostituzione dell&amp;rsquo;arbitro, routing di community mondiale e notifiche di trade end-to-end. Coracle lancia un servizio di relay ospitato a pagamento sostenuto dallo stack open-source Caravel e zooid, con integrazione profonda con Flotilla pianificata. Angor passa a mainnet di default in v0.2.30 e porta un test di funding UAT a 3 utenti in v0.2.29. Amethyst porta 41 PR non rilasciate che continuano il lavoro NIP-32 / NIP-F4 / Tor della scorsa settimana. NIP-67 (hint di completezza EOSE) e autocomplete NIP-50 sono mergiati, chiudendo due gap di correttezza di lunga data nel protocollo relay core. NIP-GART propone un wire format a tutela della privacy per gli alert di emergenza, e NIP-46 acquisisce un metodo di logout.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="marmot-v2-dark-matter-ridisegno-del-protocollo-client-nativi-app-flutter-archiviata">Marmot v2 (Dark Matter): ridisegno del protocollo, client nativi, app Flutter archiviata&lt;/h3>
&lt;p>Tre nuovi repo sono apparsi sotto l&amp;rsquo;organizzazione GitHub &lt;a href="https://github.com/marmot-protocol">marmot-protocol&lt;/a> questa settimana, che insieme formano la forma dei primi progressi di una bozza di protocollo Marmot v2 e una linea di client nativi che sostituisce la linea di app Flutter. &lt;a href="https://github.com/marmot-protocol/darkmatter">&lt;code>darkmatter&lt;/code>&lt;/a> (Rust, creato il 13 maggio, trentaquattro commit negli ultimi sette giorni) contiene la bozza del protocollo v2 in &lt;code>spec/&lt;/code>, un engine CGKA sostenuto da OpenMLS in &lt;code>crates/cgka-engine&lt;/code>, un simulatore di conformità con property test e un modello formale Tamarin per prove di convergenza. &lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> (Swift, creato il 25 maggio) è un client SwiftUI sostenuto da un xcframework &lt;code>MarmotKit&lt;/code> UniFFI vendorizzato generato dal workspace Rust. &lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> (Kotlin/Jetpack Compose, creato il 25 maggio) siede sugli stessi binding Rust. L&amp;rsquo;originale Flutter Whitenoise è stato contrassegnato come &lt;a href="https://github.com/marmot-protocol/whitenoise-archive">&lt;code>whitenoise-archive&lt;/code>&lt;/a> (&amp;ldquo;ARCHIVED: This was the original White Noise Flutter app&amp;rdquo;); un nuovo repo Dart &lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a> porta la linea Flutter attiva in parallelo.&lt;/p>
&lt;p>Leggete questo come progresso iniziale verso un Marmot più affidabile, non come un pivot finito. Il README di darkmatter si etichetta come &amp;ldquo;Candidate Marmot v2 protocol draft, CGKA engine, and conformance workspace&amp;rdquo; e dice direttamente: &amp;ldquo;MDK remains the deployed Rust protocol implementation until this draft and engine are adopted.&amp;rdquo; All&amp;rsquo;interno del workspace, il crate cgka-engine è taggato &lt;code>0.1.0&lt;/code>, &amp;ldquo;single internal consumer, not semver-stable&amp;rdquo;. Ogni pagina di spec porta &amp;ldquo;Status: draft for internal review&amp;rdquo;. Tre stelle sul repo del workspace e zero sulle app iOS e Android confermano che il lavoro è pre-annuncio. Direzione, ambito e disciplina sono il segnale qui; la prontezza per la produzione non è la rivendicazione.&lt;/p>
&lt;p>La bozza del protocollo rende concreti i delta da v1 a v2. L&amp;rsquo;estensione MLS monolitica &lt;code>marmot_group_data&lt;/code> di MIP-01, che ha portato nome del gruppo, descrizione, pubkey admin, id di routing del gruppo Nostr, lista relay, dati immagine del gruppo e impostazioni di messaggi a scomparsa sotto un unico ombrello sin dall&amp;rsquo;inizio di Marmot, viene &lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/spec/mip-coverage.md">divisa in componenti applicativi versionati&lt;/a>: &lt;code>marmot.group.profile.v1&lt;/code> per nome e descrizione, &lt;code>marmot.group.admin-policy.v1&lt;/code> per pubkey admin, &lt;code>marmot.transport.nostr.routing.v1&lt;/code> per il &lt;code>nostr_group_id&lt;/code> casuale e la lista relay canonica, &lt;code>marmot.group.blossom.image.v1&lt;/code> per hash immagine, chiave di cifratura, nonce e chiave di upload, e &lt;code>marmot.group.message-retention.v1&lt;/code> per i secondi dei messaggi a scomparsa. Ciascun componente possiede i propri byte esatti e il proprio percorso di versionamento, così una funzionalità futura può revisionare un componente senza forzare il resto dello stato del gruppo a ripercorrere il consenso sulle estensioni MLS. Le credenziali MIP-00 ottengono anche un nuovo documento fondazionale &lt;code>account-identity-proof-v1.md&lt;/code>, indicato come &amp;ldquo;new in v2 and breaking&amp;rdquo;. La prova di identità vive ora sulla propria superficie, separata dalla costruzione del KeyPackage.&lt;/p>
&lt;p>I delta della libreria supportano il ridisegno della spec. &lt;code>cgka-engine&lt;/code> è la nuova macchina a stati locale del gruppo: avvolge OpenMLS, possiede gli stati di epoch &lt;code>Stable&lt;/code>, &lt;code>PendingPublish&lt;/code>, &lt;code>Merging&lt;/code> e &lt;code>Recovering&lt;/code>, traduce gli intent in commit MLS, restituisce valori tipizzati &lt;code>IngestOutcome&lt;/code> e &lt;code>GroupEvent&lt;/code> per ogni inviluppo di trasporto in ingresso e rilascia esplicitamente nessun trasporto e nessuna persistenza. Un trait &lt;code>TransportPeeler&lt;/code> separa Nostr dall&amp;rsquo;engine, e un trait &lt;code>StorageProvider&lt;/code> separa SQLite (via &lt;code>storage-sqlite&lt;/code>, backed da SQLCipher) dall&amp;rsquo;engine. L&amp;rsquo;MDK di oggi impacchetta tutto ciò insieme; dividere i layer consente a un engine di stare sotto un trasporto relay Nostr ora e i &lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/docs/quic-broker-deployment.md">trasporti QUIC stream e broker&lt;/a> anch&amp;rsquo;essi rilasciati più tardi, senza riscrivere il modello di convergenza. La convergenza stessa è documentata come &lt;code>distributed-convergence.md&lt;/code> e provata in un modello Tamarin che copre selezione deterministica di branch, eleggibilità gated dalla policy, replay di anchor mantenuti, rifiuto di branch obsoleti, riordinamento della consegna, duplicazione, invalidazione dell&amp;rsquo;output applicativo, handoff welcome/commit, consumo di proposal e gating in uscita durante la sync. I property test Rust controllano poi che l&amp;rsquo;engine segua le stesse regole con oggetti OpenMLS reali e l&amp;rsquo;harness del simulatore. Il lavoro di affidabilità con metodi formali di questa portata è assente dallo stack Marmot attuale.&lt;/p>
&lt;p>Entrambi i client nativi abbandonano Flutter per toolkit UI nativi della piattaforma. &lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> è puro SwiftUI con una Notification Service Extension che decifra i push wake MIP-05 sul dispositivo, vendorizza un pacchetto Swift &lt;code>MarmotKit&lt;/code> generato dal workspace Rust e si registra sotto il bundle ID e l&amp;rsquo;app group &lt;code>dev.ipf.darkmatter&lt;/code>. &lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> è Kotlin e Jetpack Compose, con una build pilotata da &lt;code>just&lt;/code> che produce un APK &lt;code>arm64-v8a&lt;/code> firmato e legge endpoint di telemetria da &lt;code>local.properties&lt;/code>. Il README Android dichiara direttamente il principio architetturale: &amp;ldquo;Dark Matter owns protocol data and stores it in SQLite. The Android app should render that data, manage Android platform behavior, and keep UI lifecycle state. The Android app should not become a second database for Dark Matter data.&amp;rdquo; Questo rispecchia la disciplina di confine che il README di cgka-engine impone nel layer Rust, applicata al layer UI.&lt;/p>
&lt;p>I client nativi contano per Marmot perché la debolezza più citata del protocollo è stata l&amp;rsquo;affidabilità mobile in condizioni di consegna non uniformi: notification wake mancati, race di commit MLS durante fluttuazioni di rete, limiti di background-fetch che bloccano gli avanzamenti di epoch. SwiftUI e Compose danno ai client accesso diretto alle primitive di background-processing della piattaforma che Flutter raggiunge tramite un bridge plugin, e il percorso di binding UniFFI mantiene la logica di protocollo in un unico workspace Rust rilasciato come libreria statica su entrambe le piattaforme. La linea Flutter Whitenoise continua nel repo non archiviato &lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a>, quindi l&amp;rsquo;annuncio è additivo: una nuova linea di client nativi corre accanto all&amp;rsquo;app Flutter mentre la spec v2 converge. Il cutover di produzione da MDK o dall&amp;rsquo;attuale app Whitenoise attende che bozza, engine e client raggiungano release pronte per la produzione.&lt;/p>
&lt;h3 id="chama-v200-fino-a-v310-escrow-p2p-standalone-in-una-settimana">Chama v2.0.0 fino a v3.1.0: escrow P2P standalone in una settimana&lt;/h3>
&lt;p>Il client di escrow P2P Nostr-native introdotto nella Newsletter #25 alla v1.3.0 ha rilasciato diciassette release taggate negli ultimi sette giorni, terminando a &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a> il 9 giugno con un ridisegno della UI della trade room e storefront per venditore. La scia di versioni racconta la storia: &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.0">v2.0.0&lt;/a> è la base BREAKING, poi &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.1">v2.0.1&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.2">v2.0.2&lt;/a> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.3">v2.0.3&lt;/a> chiudono i gap della funding-rail Fedi WebView; &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.1.0">v2.1.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.2.0">v2.2.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.0">v2.3.0&lt;/a> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.1">v2.3.1&lt;/a> rafforzano il layer dell&amp;rsquo;arbitro; &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.4.0">v2.4.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.5.0">v2.5.0&lt;/a> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.6.0">v2.6.0&lt;/a> aggiungono superfici di self-custody e routing di community mondiale; &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.7.0">v2.7.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.8.0">v2.8.0&lt;/a>, &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.9.0">v2.9.0&lt;/a> e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.10.0">v2.10.0&lt;/a> stratificano copia di chiavi in inglese semplice, applicazioni di gruppo, arbitraggio di deadline di disputa e reputazione. &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.0.0">v3.0.0&lt;/a> lega il pacchetto insieme con notifiche di trade end-to-end, e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a> del 9 giugno ridisegna la schermata di trade attorno a una spina di progresso Reserved → Locked → Settled, card di azione con colori di ruolo e una classe di storefront per venditore (curated swap, loanbook e bill) che rilascia annunci.&lt;/p>
&lt;p>Il pivot architetturale vive in v2.0.0. Il formato LOCK dell&amp;rsquo;escrow è cambiato così ogni share di uno split Shamir 2-di-3 è cifrata solo verso il suo detentore (sharePolicy &lt;code>holder-only-v1&lt;/code>). L&amp;rsquo;ecash bearer della federazione non si ricostruisce più da un singolo partecipante da solo, chiudendo un percorso in cui una parte malevola con sia la propria share sia una share detenuta dalla federazione poteva completare il trade senza consenso. I client pre-2.0 falliscono in modo evidente con &amp;ldquo;can&amp;rsquo;t find your share&amp;rdquo;; il trade non può completarsi su un client obsoleto, e nessun fondo viene perso nel processo. Un lock v2.0 richiede che ogni parte sia su v2.x per essere regolata. v2.0.0 ha aggiunto anche storefront multi-unità e una vista Market solo-sats.&lt;/p>
&lt;p>v2.1.0 ha introdotto la sostituzione dell&amp;rsquo;arbitro: la share dell&amp;rsquo;arbitro all&amp;rsquo;indice Shamir 2 è ora cifrata a un ordine di priorità deterministico sopra il pool di arbitri della community, così un arbitro assente può essere sostituito senza bloccare il trade. v2.2.0 ha provato che la sostituzione ha funzionato sul campo su un trade da ₿121 e ha aggiunto backup di healing-substitution. v2.3.0 ha chiuso l&amp;rsquo;ultimo gap di front-running dell&amp;rsquo;arbitro controllando l&amp;rsquo;appartenenza dell&amp;rsquo;arbitro dell&amp;rsquo;annuncio alla community al momento del lock, e v2.3.1 ha chiuso la race gemella in cui uno slot di arbitro auto-assegnato era un&amp;rsquo;anteprima finché il lock non li insediava.&lt;/p>
&lt;p>Le superfici di self-custody sono arrivate in v2.4.0 (frase di recupero BIP-39 per il wallet ecash Fedimint, memorizzato cifrato su Nostr) e v2.5.0 (backup master nsec che possiede l&amp;rsquo;identità Nostr e il seed del wallet). v2.6.0 ha rifatto l&amp;rsquo;onboarding attorno a un picker di community globale così gli utenti in paesi senza una Chama locale sono instradati alla federazione più vicina; le build precedenti facevano rimbalzare l&amp;rsquo;utente senza fallback. v2.7.0 ha riscritto la schermata di chiave di recupero in inglese semplice (&amp;ldquo;the only key to your account and the money in it; Chama never sees it and can&amp;rsquo;t reset it; if you lose it, no one can get your account back&amp;rdquo;). v2.8.0 ha aggiunto applicazioni di gruppo, tema chiaro/scuro e due nuovi kind di evento (38120 roster, 38121 application). v2.9.0 ha cambiato la risoluzione di disputa alla deadline: i trade contestati che raggiungono la loro scadenza si risolvono ora per ruling dell&amp;rsquo;arbitro; il comportamento precedente rimborsava automaticamente. La release è marcata COORDINATED così tutte le parti in una disputa devono aggiornarsi. v2.10.0 ha aggiunto rating per-trade pollice su/pollice giù come nuovo kind di evento 38123.&lt;/p>
&lt;p>v3.0.0 è la milestone in cui l&amp;rsquo;app smette di aver bisogno di una community di coordinamento per operare. Le notifiche di trade end-to-end pingano l&amp;rsquo;utente solo sulle transizioni di stato attuabili: la controparte ha lockato i sats, payout pronto per essere reclamato, la disputa richiede la decisione dell&amp;rsquo;utente come arbitro, o trade regolato o scaduto. Un toggle nella schermata Me accende o spegne le notifiche, e il prompt di permesso scatta solo quando il toggle è abilitato. La deduplicazione fire-once impedisce che un ricaricamento di stato inneschi una tempesta di alert. Un bug di guardrail wrong-chama è stato anche chiuso in &lt;a href="https://github.com/jesuspirate/chama/pull/103">PR #103&lt;/a>, dove le versioni precedenti potevano contrassegnare un annuncio con l&amp;rsquo;etichetta di una chama ma la federazione di un&amp;rsquo;altra chama. I bundle desktop Windows e Linux sono rilasciati con la release; il dmg macOS è trattenuto finché la firma e la notarizzazione non arrivano.&lt;/p>
&lt;p>Chama si unisce ora a Mostro e Shopstr come marketplace Nostr-native, distinta per architettura serverless, escrow Shamir 2-di-3 supportato da Fedimint, cifratura di share solo per il detentore e l&amp;rsquo;unica delle tre che rilascia un client desktop e mobile autonomo senza una community di coordinamento.&lt;/p>
&lt;h3 id="coracle-hosting-servizio-relay-a-pagamento-più-stack-caravel-open-source">Coracle Hosting: servizio relay a pagamento più stack Caravel open-source&lt;/h3>
&lt;p>Il 3 giugno Hodlbod ha &lt;a href="https://nos.lol/e/f8586160cd12df479c261397353c99e6f3e4d870b616382e1b4338bad3ab498a">annunciato Coracle Hosting&lt;/a> a &lt;a href="https://hosting.coracle.social">hosting.coracle.social&lt;/a>, un servizio di relay di community ospitato che accetta pagamenti lightning ricorrenti su NWC o carta. Il servizio è alimentato da &lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>, il frontend di billing e provisioning di Coracle, e &lt;a href="https://gitea.coracle.social/coracle/zooid">zooid&lt;/a>, un runtime di relay che ospita molti relay virtuali su una singola macchina. Entrambi sono open source sul gitea self-hosted di Coracle. Caravel è rilasciato con integrazione opzionale &lt;a href="https://livekit.io">livekit&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> che gli operatori possono abilitare per relay. Un tier gratuito con limiti di conteggio membri consente agli operatori di valutare il servizio prima di impegnare dettagli di pagamento.&lt;/p>
&lt;p>Hodlbod è schietto sul modello di business: monetizzare l&amp;rsquo;open source vendendo una versione ospitata di uno stack che chiunque altro può anche far girare. Il fossato competitivo è l&amp;rsquo;integrazione &lt;a href="https://flotilla.social">Flotilla&lt;/a>, che è il prossimo passo pianificato. Flotilla possiede la superficie utente, così l&amp;rsquo;opzione ospitata servita dall&amp;rsquo;interno di Flotilla diventa il percorso di default per qualunque utente che preferisca infrastruttura gestita. Hodlbod ha offerto di aggiungere altri operatori Caravel al picker di hosting alternativo di Flotilla se si mettono in contatto, tenendo aperta la porta a un mercato di hosting federato.&lt;/p>
&lt;p>Caravel si unisce a &lt;a href="https://relay.tools">relay.tools&lt;/a> come piattaforma pubblica di provisioning di relay Nostr con tier a pagamento per membro. relay.tools precede Caravel ed è rilasciato come il servizio dominante di creazione di relay oggi, con la propria directory di relay di community e flussi di join per membri o moderatori a pagamento. La caratteristica distintiva di Caravel è lo stack coordinato: il runtime del relay (zooid), il frontend di billing e provisioning (Caravel stesso) e il picker lato client (integrazione con Flotilla, ancora in corso) sono rilasciati come un unico design. L&amp;rsquo;altra caratteristica distintiva è la densità many-relay-per-process di zooid, in cui i relay dei clienti condividono un singolo processo host così l&amp;rsquo;operatore ammortizza i costi di hosting su molte piccole community. Questo è lo stesso argomento di densità che ha reso il web hosting condiviso praticabile all&amp;rsquo;inizio degli anni 2000, applicato al layer relay di Nostr.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="angor-v0229-e-v0230-default-mainnet-e-test-uat-funding-a-3-utenti">Angor v0.2.29 e v0.2.30: default mainnet e test UAT funding a 3 utenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.29">Angor v0.2.29&lt;/a> del 4 giugno e &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.30">v0.2.30&lt;/a> dell'8 giugno sono le due release di questa settimana per il protocollo decentralizzato di funding Bitcoin-e-Nostr. La modifica principale di v0.2.30 è &lt;a href="https://github.com/block-core/angor/pull/893">PR #893&lt;/a>, che porta la rete di default a mainnet. Angor è ancora rilasciato come release alpha unstable, ma lo switch al default mainnet segnala che il protocollo è oltre la fase solo testnet per i client desktop e mobile. v0.2.30 porta anche un flusso mobile di creazione di progetto single-tap con upload immagine e reset dello scroll (&lt;a href="https://github.com/block-core/angor/pull/889">PR #889&lt;/a>) e risolve una race condition in cui lo spinner di invoice lightning poteva bloccarsi (&lt;a href="https://github.com/block-core/angor/pull/890">PR #890&lt;/a>).&lt;/p>
&lt;p>v0.2.29 ha aggiunto un test UAT end-to-end in &lt;a href="https://github.com/block-core/angor/pull/881">PR #881&lt;/a> che copre 3-user send funds su 10 round con spese non confermate, il primo test di flusso di funding multi-utente nella suite di test Angor. La release ha aggiunto anche un piano di implementazione per una CLI Angor e un server MCP (&lt;a href="https://github.com/block-core/angor/pull/792">PR #792&lt;/a>), con miglioramenti CLI per il workflow di test MCP in &lt;a href="https://github.com/block-core/angor/pull/880">PR #880&lt;/a>. &lt;a href="https://github.com/block-core/angor/pull/885">PR #885&lt;/a> di DavidGershony ha corretto un invoice lightning Boltz che usava la rete sbagliata dopo un cambio di rete a runtime, un bug che sarebbe emerso in produzione dopo il default mainnet di v0.2.30. Le impostazioni offrono ora una purga opzionale del file wallet di recupero durante il data wipe (&lt;a href="https://github.com/block-core/angor/pull/883">PR #883&lt;/a>).&lt;/p>
&lt;h3 id="sprout-v0315-refresh-del-ttl-dei-canali-effimeri-e-comandi-slash-acp">Sprout v0.3.15: refresh del TTL dei canali effimeri e comandi slash ACP&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.15">Sprout v0.3.15&lt;/a>, rilasciato il 10 giugno, è l&amp;rsquo;ottava release in una serie iniziata con v0.3.7 il 2 giugno. La Newsletter #25 ha coperto la serie da v0.3.1 a v0.3.6 con l&amp;rsquo;integrazione mesh-llm e il lavoro sulle sezioni di canale; da v0.3.7 a v0.3.15 sono a valle di quello, focalizzate su rifiniture e alcune aggiunte rivolte all&amp;rsquo;utente. La modifica più visibile all&amp;rsquo;utente è un refresh del TTL per canali effimeri in &lt;a href="https://github.com/block/sprout/pull/902">PR #902&lt;/a>: quando un utente disarchivia un canale effimero, Sprout estende il time-to-live del canale così il disarchivio non ri-archivia immediatamente sotto il timer di scadenza originale. Gli emoji custom mobile arrivano in &lt;a href="https://github.com/block/sprout/pull/906">PR #906&lt;/a> insieme a un redesign delle impostazioni, e i conteggi delle reazioni ora animano al cambiamento (&lt;a href="https://github.com/block/sprout/pull/904">PR #904&lt;/a>).&lt;/p>
&lt;p>&lt;a href="https://github.com/block/sprout/pull/905">PR #905&lt;/a> corregge un gap di lunga data in cui i display name multi-parola si rompevano e l&amp;rsquo;estrazione di mention &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> &lt;code>nostr:npub&lt;/code> cadeva silenziosamente. Una UI di team basata su directory per desktop è rilasciata in &lt;a href="https://github.com/block/sprout/pull/912">PR #912&lt;/a> con comandi install, sync e reveal. I comandi slash ora passano ai connector &lt;a href="https://agentclientprotocol.com">ACP&lt;/a> in &lt;a href="https://github.com/block/sprout/pull/919">PR #919&lt;/a>, consentendo a Sprout di inoltrare comandi in stile &lt;code>/help&lt;/code> direttamente ai runtime degli agenti mentre la UI di Sprout resta fuori dal percorso.&lt;/p>
&lt;h3 id="wisp-v111-integrazione-wallet-spark-e-guardia-contro-il-paste-di-nsec">Wisp v1.1.1: integrazione wallet Spark e guardia contro il paste di nsec&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.1">Wisp v1.1.1&lt;/a>, rilasciato il 5 giugno, porta una schermata Connect wallet a due livelli con sub-schermata &lt;a href="https://www.spark.money">Spark&lt;/a> in &lt;a href="https://github.com/barrydeen/wisp/pull/548">PR #548&lt;/a> e parità dashboard con la UI wallet iOS in &lt;a href="https://github.com/barrydeen/wisp/pull/549">PR #549&lt;/a>. La release include una &lt;a href="https://github.com/barrydeen/wisp/pull/553">guardia contro il paste di nsec&lt;/a> a livello di sistema che rileva un paste con prefisso &lt;code>nsec1&lt;/code> ovunque nell&amp;rsquo;app e blocca il campo dall&amp;rsquo;accettarlo, chiudendo uno degli errori più citati nella UX Nostr. Il login QR-scan più una modalità watch-only per &lt;code>npub&lt;/code> e &lt;code>nprofile&lt;/code> è rilasciato in &lt;a href="https://github.com/barrydeen/wisp/pull/552">PR #552&lt;/a>, consentendo a un utente di sfogliare un profilo in sola lettura. I messaggi zap ora si rendono come mini-post nel drawer di engagement (&lt;a href="https://github.com/barrydeen/wisp/pull/559">PR #559&lt;/a>) così le note zap portano il loro testo insieme all&amp;rsquo;importo in sat. Un filtro web-of-trust sulle risposte al thread arriva in &lt;a href="https://github.com/barrydeen/wisp/pull/583">PR #583&lt;/a>, consentendo agli utenti di nascondere lo spam di risposte da account fuori dal loro grafo di follow.&lt;/p>
&lt;h3 id="nostria-v3146-e-nospeak-113-rifacimento-delle-notifiche-e-restart-ice">Nostria v3.1.46 e nospeak 1.1.3: rifacimento delle notifiche e restart ICE&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.46">Nostria v3.1.46&lt;/a> del 7 giugno chiude una serie di tre release che ha rifatto il contatore delle notifiche per contare solo le nuove notifiche dalla vista precedente, eliminando un&amp;rsquo;inflazione di lunga data in cui caricare notifiche più vecchie scrollando faceva salire il conteggio del badge. &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.45">Nostria v3.1.45&lt;/a> ha corretto un bug di split-payment che colpiva pagamenti lightning e QR-code e ha abbandonato una UI traslucida precedentemente pianificata come non fattibile sul compositor Android.&lt;/p>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.1.3">nospeak v1.1.3&lt;/a> del 4 giugno aggiunge il restart ICE su stato FAILED per chiamate voce 1-on-1. Il comportamento WebRTC standard scarta una chiamata quando i candidati ICE vanno in timeout senza un percorso alternativo; il percorso di restart ICE rinegozia i candidati così la chiamata recupera da cambi transitori di NAT o rete. Le chiamate Android ora tengono lo schermo acceso durante le videochiamate.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="amethyst-41-pr-che-continuano-la-traccia-nip-32--nip-f4--tor">Amethyst: 41 PR che continuano la traccia NIP-32 / NIP-F4 / Tor&lt;/h3>
&lt;p>Amethyst ha mergiato 41 PR questa settimana senza tagliare una release tag, sopra le 52 PR della scorsa settimana e il lavoro sull&amp;rsquo;etichettatura hashtag &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> e podcast &lt;a href="https://nostrcompass.org/it/topics/nip-f4/">NIP-F4&lt;/a> trattato nella Newsletter #25. La branch attiva continua ad accumulare funzionalità per la prossima release taggata, stratificando rifiniture sulle aggiunte principali della scorsa settimana: scoperta di labeler hashtag, schermata podcast, tracce musicali e playlist, watchdog di auto-heal Tor, signer effimeri per upload anonimi e zap onchain con filtraggio NIP-05. Il throughput di PR di Amethyst resta il più alto di qualunque client Nostr, e la coda non rilasciata è la roadmap de-facto per ciò che altri client Nostr Android dovranno eguagliare.&lt;/p>
&lt;h3 id="damus-tracciamento-dei-relay-dai-messaggi-ok-e-changelog-v117">Damus: tracciamento dei relay dai messaggi OK e changelog v1.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3786">Damus PR #3786&lt;/a>, mergiata il 3 giugno, aggiunge i messaggi &lt;code>OK&lt;/code> riusciti da un relay alla lista dei post-relay. Le build precedenti di Damus popolavano la lista dei relay visti solo quando ricevevano un messaggio generico dal relay, il che significava che un relay che confermava il post ma non consegnava eventi era invisibile all&amp;rsquo;utente. Il cambiamento conta per gli utenti che vogliono confermare che il loro post sia arrivato sul loro relay outbox preferito. &lt;a href="https://github.com/damus-io/damus/pull/3796">PR #3796&lt;/a> corregge un ciclo &lt;code>AttributeGraph&lt;/code> su Profile View, e &lt;a href="https://github.com/damus-io/damus/pull/3725">PR #3725&lt;/a> porta il changelog v1.17 in vista della prossima release taggata.&lt;/p>
&lt;h3 id="shopstr-dual-publishing-nip-34">Shopstr: dual-publishing NIP-34&lt;/h3>
&lt;p>Il &lt;a href="https://relay.ngit.dev/npub1u350hpq840naxzkkle4gmdtvzanfxmjd9m9tytn5355aua7jh2cqgfuw39/shopstr.git">repo shopstr su ngit&lt;/a> di Shopstr è stato annunciato su Nostr questa settimana come repo git &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>, unendosi ai repo tracciati di ngit. Il repo GitHub del client shop resta la superficie primaria di sviluppo; l&amp;rsquo;annuncio NIP-34 rende disponibile un percorso parallelo di collaborazione git-over-Nostr. Questo è il secondo grande progetto marketplace Nostr a dual-publish su NIP-34 dopo &lt;a href="https://relay.ngit.dev/">Mostro&lt;/a>, e continua la migrazione graduale dei metadati di progetto sul trasporto git di Nostr.&lt;/p>
&lt;h3 id="hermes-marmot-gateway-di-agente-ai-su-mls">Hermes-Marmot: gateway di agente AI su MLS&lt;/h3>
&lt;p>&lt;a href="https://github.com/notmandatory/hermes-marmot">hermes-marmot&lt;/a>, un plugin per l&amp;rsquo;&lt;a href="https://github.com/NousResearch/hermes-agent">Hermes Agent&lt;/a>, connette la superficie di messaggistica di un agente AI ai gruppi &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (MLS-over-Nostr) usando &lt;a href="https://github.com/marmot-protocol/mdk-python">mdk-python&lt;/a>, i binding Python al Marmot Development Kit Rust. Il plugin consente a un utente di DMare un agente AI da qualunque client Nostr che parla messaggi MLS di kind 445, incluso &lt;a href="https://whitenoise.chat">Whitenoise&lt;/a>. I DM in ingresso usano l&amp;rsquo;unwrapping gift-wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> tramite i binding Python di &lt;a href="https://github.com/rust-nostr/nostr">nostr-sdk&lt;/a>, e i welcome in ingresso fluiscono attraverso &lt;code>UnwrappedGift.from_gift_wrap&lt;/code> a &lt;code>mdk.process_welcome&lt;/code> e &lt;code>mdk.accept_welcome&lt;/code>. Il controllo di accesso passa attraverso &lt;code>MARMOT_ALLOWED_USERS&lt;/code> (una allowlist di npub separata da virgole) o &lt;code>MARMOT_ALLOW_ALL_USERS=true&lt;/code> per accesso di sviluppo aperto.&lt;/p>
&lt;p>Il repo è nuovo (ultimo aggiornamento 27 maggio) e piccolo. La sua importanza è architetturale: è il primo ponte pubblico fra un runtime di agente LLM e un canale di messaggistica Nostr cifrato con MLS, e il primo uso in produzione di mdk-python oltre a Whitenoise stesso. Il pattern punta verso comunicazione agente-a-agente in cui entrambi gli endpoint detengono chiavi MLS e il relay vede solo ciphertext.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-spec-di-protocollo">Aggiornamenti NIP e lavoro di spec di protocollo&lt;/h2>
&lt;h3 id="nip-67-hint-di-completezza-eose-pr-2317-mergiato">NIP-67 hint di completezza EOSE (PR #2317) mergiato&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a> di mattn mergiata il 6 giugno, aggiungendo &lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a> al protocollo. Il NIP estende il messaggio relay &lt;code>EOSE&lt;/code> con un terzo elemento opzionale: &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;, &amp;quot;finish&amp;quot;]&lt;/code> segnala che ogni evento memorizzato che corrisponde al filtro è stato consegnato, mentre un nudo &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;]&lt;/code> non porta alcuna dichiarazione di completezza. Un relay che omette l&amp;rsquo;hint sta dicendo al client che potrebbe esserci di più; un relay che omette la pubblicità NIP-67 in NIP-11 mantiene il comportamento di oggi sotto l&amp;rsquo;euristica legacy esistente. Il cambiamento è backward compatible in entrambe le direzioni: i client legacy ignorano l&amp;rsquo;elemento finale dell&amp;rsquo;array e i relay legacy lo omettono.&lt;/p>
&lt;p>La motivazione nella spec mergiata è duplice. Primo, perdita silenziosa di dati: un client chiede le ultime 500 note contro un relay con un cap interno di 300 eventi, il relay restituisce 300 eventi, e il client (usando l&amp;rsquo;euristica standard &lt;code>received &amp;lt; limit&lt;/code>) conclude che il risultato è completo. La 201esima fino alla N-esima nota più vecchia che corrisponde restano sul relay non lette, con il client cieco a quel fatto. Secondo, round-trip sprecati obbligatoriamente: quando un relay cappa le risposte a 300 eventi, qualunque sottoscrizione che esaurisce il cap richiede un secondo &lt;code>REQ&lt;/code> con &lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code> puramente per confermare il completamento, anche quando il filtro corrisponde esattamente a 300 eventi. Entrambe le modalità di fallimento sono pagate da ogni client su ogni sottoscrizione che esaurisce il cap. L&amp;rsquo;hint &lt;code>&amp;quot;finish&amp;quot;&lt;/code> è una stringa opzionale su un messaggio esistente ed elimina entrambi i costi.&lt;/p>
&lt;h3 id="estensione-autocomplete-nip-50-pr-2357-mergiata">Estensione autocomplete NIP-50 (PR #2357) mergiata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a> di Alex Gleason mergiata il 6 giugno, aggiungendo un token &lt;code>autocomplete:true/false&lt;/code> alla ricerca &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>. L&amp;rsquo;estensione consente a un client di marcare una query come un lookup typeahead così il relay usa prefix matching, con la full-text search come default per query senza il token. Il relay di Ditto lo implementa per follow pack, lista e qualunque evento con un tag &lt;code>title&lt;/code>, restituendo match contro il prefisso del titolo; il percorso di ricerca di default esegue lo scoring full-text. Senza questo token, le UI stile autocomplete non avevano modo di comunicare l&amp;rsquo;intento di prefix search e i relay dovevano indovinare dalla forma della query. Il token è un hint per-ricerca, non una capability a livello relay, così un relay può implementarlo per una classe di eventi (titoli) senza rivendicare supporto autocomplete generale.&lt;/p>
&lt;h3 id="nip-gart-alert-di-emergenza-e-broadcast-di-posizione-pr-2374">NIP-GART alert di emergenza e broadcast di posizione (PR #2374)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2374">PR #2374&lt;/a> di disinqa, aperta il 9 giugno, definisce un wire format a tutela della privacy su Nostr per alert di emergenza e broadcast di posizione indirizzati a un gruppo di destinatari fidati. L&amp;rsquo;obiettivo di design dichiarato è nascondere l&amp;rsquo;identità del mittente, l&amp;rsquo;appartenenza al gruppo e il payload agli operatori del relay mantenendo gli eventi replay-safe e verificabili tramite firma end-to-end. Il numero NIP è ancora TBD, la proposta è in bozza iniziale. Il caso d&amp;rsquo;uso è il pattern standard di alert di emergenza: un utente sotto minaccia broadcasta un ping di posizione che solo un gruppo pre-condiviso di contatti fidati può decifrare, con il relay cieco a mittente, set di destinatari e payload. I dettagli del wire format vivono nella PR e probabilmente evolveranno mentre i manutentori revisionano.&lt;/p>
&lt;h3 id="metodo-logout-nip-46-pr-2373">Metodo logout NIP-46 (PR #2373)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a> di hzrd149, aperta l'8 giugno, aggiunge un metodo &lt;code>logout&lt;/code> a &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> così un client può dire esplicitamente a un bunker che la sessione è terminata. Finora, l&amp;rsquo;unico modo per terminare una sessione bunker era aspettare il timeout della sessione o smettere di usare la connessione, entrambi i quali lasciano il bunker a detenere stato di sessione per un client che è scomparso. La proposta è breve (un nuovo metodo) ed è il tipo di modifica di manutenzione che rende le integrazioni bunker a lungo termine più pulite.&lt;/p>
&lt;h3 id="proposta-ibrida-relay-p2p-nip-95-circolata-come-long-form">Proposta ibrida relay-P2P NIP-95 circolata come long-form&lt;/h3>
&lt;p>Una &lt;a href="https://github.com/nostr-protocol/nips">specifica NIP-95&lt;/a> long-form è circolata come post &lt;code>kind:30023&lt;/code> dall&amp;rsquo;npub &lt;code>91bea5cd9361504c409aaf459516988f68a2fcd482762fd969a7cdc71df4451c&lt;/code> il 4 giugno sotto il titolo &lt;em>Protocolo Híbrido Relay-P2P via WebRTC&lt;/em>. Il documento in lingua portoghese definisce un protocollo relay ibrido peer-to-peer in cui i client Nostr si connettono l&amp;rsquo;uno all&amp;rsquo;altro direttamente via WebRTC per la messaggistica live continuando a usare i relay per il recupero di eventi memorizzati e la consegna offline. L&amp;rsquo;autore ha esplicitamente inquadrato la spec come &amp;ldquo;LLM-ready&amp;rdquo;, fornendo definizioni di messaggi, flussi logici, schemi di dati e regole di stato a un livello di dettaglio che lascia a un modello AI la possibilità di generare codice client o server funzionante. La proposta non è ancora arrivata come PR NIP; la circolazione tramite &lt;code>kind:30023&lt;/code> è il precursore usuale a una pull request formale su nostr-protocol/nips.&lt;/p>
&lt;h3 id="nip-44-v3-prende-un-secondo-signer-clave-porta-la-spec">NIP-44 v3 prende un secondo signer: Clave porta la spec&lt;/h3>
&lt;p>Il &lt;a href="https://nostrcompass.org/it/newsletters/2026-06-03-newsletter/#nip-44-v3-implementazione-amber-prima-della-spec">rollout di NIP-44 v3 di Amber v6.2.0 della scorsa settimana&lt;/a> è arrivato prima di qualunque PR NIP mergiata, lasciando v3 come estensione specifica di Amber che altri client dovevano rispecchiare per interoperare. Quell&amp;rsquo;inquadratura a singola implementazione è cambiata questa settimana. &lt;a href="https://github.com/DocNR/clave">Clave&lt;/a>, il remote signer iOS NIP-46 basato su push, ha portato un porting indipendente di NIP-44 v3 il 3 e 4 giugno attraverso otto commit. Le primitive crittografiche sono rilasciate in tre commit: &lt;a href="https://github.com/DocNR/clave/commit/99ca5a5aacb501d1666c489fcdea30187c7853fa">layer di chiavi HKDF + ECDH&lt;/a>, &lt;a href="https://github.com/DocNR/clave/commit/8808cdca54d32b4ae57856bd4b07ed73a45e8e5c">l&amp;rsquo;algoritmo di padding v3&lt;/a> e un&amp;rsquo;&lt;a href="https://github.com/DocNR/clave/commit/ae1f506a53cb2c8aa16523540dbe790876c1839e">API pubblica di alto livello più Context di cifratura&lt;/a>. Sopra questi, la superficie NIP-46 segue in &lt;a href="https://github.com/DocNR/clave/commit/f37aa1afc8368862fc3ebac533408442349bfc38">wiring del dispatch RPC dentro LightSigner&lt;/a> e uno &lt;a href="https://github.com/DocNR/clave/commit/e51bcb49fc61cfa89b6030d61b203e046aeddb0a">schema PendingRequest che porta il contesto v3 (kind più scope)&lt;/a>, così il signer può registrare per quale kind di evento e caso d&amp;rsquo;uso il payload v3 è stato approvato.&lt;/p>
&lt;p>Clave diverge da Amber sulla superficie rivolta all&amp;rsquo;utente. Uno &lt;a href="https://github.com/DocNR/clave/commit/0a8b7de63c1f2994a80a66bf139ec519fab12877">schema di grant di permesso con tier di sensibilità&lt;/a> consente agli utenti di garantire la cifratura v3 per un particolare kind di evento e scope a un livello di sensibilità scelto. Al primo incontro, &lt;a href="https://github.com/DocNR/clave/commit/2cf563cb15b0406f5e8aaa0b4e34b887ff1896a1">prompt di approvazione consapevoli del contesto v3 con una card di explainer una-tantum&lt;/a> introducono v3 agli utenti. Il lavoro è in main ed è &lt;a href="https://github.com/DocNR/clave/commit/4bd0c26d7cf308386ef15e5d96ee5673d6db2d4a">collegato al progetto Xcode&lt;/a> ma non è rilasciato; la build taggata più recente è &lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build79">v0.2.0-build79&lt;/a> del 12 maggio.&lt;/p>
&lt;p>Due implementazioni indipendenti portano NIP-44 v3 in percorsi di produzione prima che la PR NIPs sia mergiata, il che rafforza il caso per il wire format sottostante che la PR di protocollo formalizzerà. Il testing di interop cross-implementazione diventa ora il percorso alla convergenza della spec, con la superficie di approvazione Android di Amber e il modello di tier di sensibilità iOS di Clave come i due punti di riferimento. Altri remote signer che collegano v3 (il noauth di nsec.app è stato dormiente da maggio 2025, e altri bunker non hanno annunciato lavoro su v3) restringerebbero ulteriormente il consenso.&lt;/p>
&lt;h3 id="attività-nip-34-iris-adotta-lo-stack-con-un-nuovo-trasporto-hashtree">Attività NIP-34: Iris adotta lo stack con un nuovo trasporto hashtree&lt;/h3>
&lt;p>Iris ha pubblicato annunci di repo NIP-34 per &lt;a href="https://njump.me/nevent1qqs8kmy7a9dn5awurlp9q26lsaetl7dc4wauzdl8ww68dzmn09e074gpzfmhxue69uhhgetdwqhxjunfwvh8gmc850du0">&lt;code>hashtree&lt;/code>&lt;/a> l'8 giugno e &lt;a href="https://njump.me/nevent1qqsq4grx000f6p0r8hdv4lqhcgn7707vmktv2j528kn0ldps4y9g49qpzfmhxue69uhhgetdwqhxjunfwvh8gmcmq47as">&lt;code>iris-apps&lt;/code>&lt;/a>, &lt;a href="https://njump.me/nevent1qqsyj5r0tyqvpp9v7qnras90u6kzqtpqx6ktntwym66m8qyngvf59vqpzfmhxue69uhhgetdwqhxjunfwvh8gmcpts6pf">&lt;code>iris-drive&lt;/code>&lt;/a> e &lt;a href="https://njump.me/nevent1qqs0x98hpsv8vmrxvwm2rs9exxttrue5qv5p2n2sqjeylz2kgdmd7tgpzfmhxue69uhhgetdwqhxjunfwvh8gmca8783s">&lt;code>iris-chat-rs&lt;/code>&lt;/a> il 9 giugno, pubblicizzando URL di clone sotto un nuovo schema &lt;code>htree://&lt;/code> servito da &lt;code>wss://temp.iris.to&lt;/code>. Il trasporto hashtree è un&amp;rsquo;alternativa content-addressed ai clone instradati via GRASP, e questi quattro annunci sono i suoi primi usi pubblici. I repo portano descrizioni vuote e i dettagli architetturali stanno ancora emergendo, ma la scelta di pubblicare tramite annuncio NIP-34 (sopra un manifest Iris-interno custom) segnala che Iris si sta impegnando allo stack più ampio git-over-Nostr NIP-34.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-67-eose-completeness-hint">NIP deep dive: NIP-67 (EOSE Completeness Hint)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a> chiude uno dei gap di correttezza più antichi di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a>. La spec originale definisce &lt;code>EOSE&lt;/code> come il confine tra eventi memorizzati e eventi di sottoscrizione live per un &lt;code>REQ&lt;/code>, ma non ha mai specificato se il relay avesse finito di consegnare tutti i match memorizzati o si fosse fermato a metà a causa di un cap interno. Ogni relay impone un cap per-sottoscrizione (comunemente da 300 a 1000 eventi) indipendente dal &lt;code>limit&lt;/code> del client, e i client non hanno avuto modo di osservare quel cap.&lt;/p>
&lt;p>Il workaround standard era confrontare il conteggio ricevuto con il &lt;code>limit&lt;/code> richiesto. Se &lt;code>received &amp;lt; limit&lt;/code>, trattare il risultato come completo; altrimenti paginare con &lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code>. Entrambi i branch sono rotti. Il branch &lt;code>received &amp;lt; limit&lt;/code> tronca silenziosamente: un client che chiede 500 note contro un relay cappato a 300 vede 300 eventi, conclude che il risultato è completo perché &lt;code>300 &amp;lt; 500&lt;/code>, e non recupera mai il resto. Gli eventi trattenuti sul relay non possono segnalare &amp;ldquo;altro disponibile&amp;rdquo; attraverso alcun messaggio esistente. La paginazione come secondo branch è sprecona: un filtro che corrisponde esattamente al cap richiede un secondo &lt;code>REQ&lt;/code> per confermare la completezza, restituendo zero eventi mentre consuma una scansione di filtro completa sul relay.&lt;/p>
&lt;p>Il fix di NIP-67 è una stringa opzionale sul messaggio &lt;code>EOSE&lt;/code>:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;EOSE&amp;#34;, &amp;#34;&amp;lt;sub_id&amp;gt;&amp;#34;, &amp;#34;finish&amp;#34;] // esplicito: tutti gli eventi memorizzati consegnati
[&amp;#34;EOSE&amp;#34;, &amp;#34;&amp;lt;sub_id&amp;gt;&amp;#34;] // nessuna dichiarazione di completezza
&lt;/code>&lt;/pre>&lt;p>Un relay che pubblicizza NIP-67 nei &lt;code>supported_nips&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> ed emette un &lt;code>EOSE&lt;/code> nudo sta dicendo al client che c&amp;rsquo;è di più. Un relay che omette la pubblicità mantiene il comportamento di oggi, e il client ricade sull&amp;rsquo;euristica esistente. I client legacy ignorano l&amp;rsquo;elemento finale dell&amp;rsquo;array. La compatibilità all&amp;rsquo;indietro tiene in entrambe le direzioni, senza nuovi verbi o kind di evento.&lt;/p>
&lt;p>Ciò che rende NIP-67 degno di esame è lo scope che deliberatamente restringe. La spec non definisce cursore o token di paginazione, quindi la paginazione basata su &lt;code>until&lt;/code> resta il meccanismo. I cap dei relay restano dove sono, e il NIP non richiede alcuna esposizione di essi. NIP-67 preserva il significato di &lt;code>EOSE&lt;/code> come confine memorizzato-a-live e aggiunge solo un segnale sì-o-no al confine: &amp;ldquo;Ho di più per te&amp;rdquo; contro &amp;ldquo;questo è tutto&amp;rdquo;. Questa superficie minima è perché la PR è stata mergiata dopo un periodo di review relativamente breve per un&amp;rsquo;estensione di NIP-01, e perché mattn nota esplicitamente nella PR che è stata usata la traduzione AI per il testo inglese. Il cambiamento è abbastanza piccolo che l&amp;rsquo;incertezza della traduzione non conta.&lt;/p>
&lt;p>Esempio di scambio consapevole di NIP-67 tra un client e un relay che impone il cap. Pubblicità NIP-11 dal relay:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5f87fe2d4c8b9a0e3f1c4d5e6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1781136000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">11&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;supported_nips\&amp;#34;:[1,11,50,67]}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a6978869504132c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Lo scambio a livello di wire che segue:&lt;/p>
&lt;pre tabindex="0">&lt;code>→ [&amp;#34;REQ&amp;#34;, &amp;#34;abc&amp;#34;, {&amp;#34;kinds&amp;#34;:[1],&amp;#34;limit&amp;#34;:500}]
← [...300 EVENT messages...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;abc&amp;#34;] // no &amp;#34;finish&amp;#34;: cap raggiunto, altro disponibile
→ [&amp;#34;REQ&amp;#34;, &amp;#34;def&amp;#34;, {&amp;#34;kinds&amp;#34;:[1],&amp;#34;limit&amp;#34;:300,&amp;#34;until&amp;#34;:1780900000}]
← [...178 EVENT messages...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;def&amp;#34;, &amp;#34;finish&amp;#34;] // completo esplicito
&lt;/code>&lt;/pre>&lt;p>La risposta di 178 eventi prima avrebbe innescato una terza &lt;code>REQ&lt;/code> per confermare il completamento. Con NIP-67 il client si ferma lì.&lt;/p>
&lt;p>NIP-67 è notabile anche come emendamento a NIP-01 che arriva con raro consenso. La maggior parte dei cambiamenti a NIP-01 attrae lunghi thread di dibattito perché la superficie minuscola del protocollo è portante per ogni implementazione. NIP-67 è stato mergiato dopo un periodo di review esteso (all&amp;rsquo;incirca sette settimane dall&amp;rsquo;apertura al merge), suggerendo che quando un cambio NIP-01 è abbastanza piccolo e la modalità di fallimento è abbastanza concreta (perdita silenziosa di dati, round trip sprecato obbligatorio), i manutentori del protocollo sono disposti a estendere il vocabolario dei messaggi core.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-50-ricerca">NIP deep dive: NIP-50 (Ricerca)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> definisce il campo di filtro &lt;code>search&lt;/code> nei messaggi &lt;code>REQ&lt;/code>, consentendo ai client di chiedere a un relay di filtrare eventi tramite match full-text contro una stringa di query. La spec base mergiata è deliberatamente minima: il campo &lt;code>search&lt;/code> è una stringa, ciascun relay decide la propria semantica di ricerca (quali campi sono indicizzati, come funziona lo scoring, se si applica lo stemming), e i relay pubblicizzano il supporto NIP-50 nel loro documento NIP-11. I client controllano l&amp;rsquo;algoritmo di ricerca solo tramite la stringa di query stessa.&lt;/p>
&lt;p>Questo minimalismo è sia la forza sia il vincolo di NIP-50. La forza è che qualunque relay può implementare la ricerca a qualunque livello di qualità: una scansione di sottostringa di base soddisfa la spec, e un relay che esegue Elasticsearch o Meilisearch la soddisfa ugualmente. Il vincolo è che i client mancano di un modo per esprimere l&amp;rsquo;intento di ricerca. Una UI typeahead di mention di profilo vuole prefix matching contro i display name; una ricerca di contenuto full-text vuole scoring full-text tokenizzato attraverso il corpo della nota. Lo stesso campo &lt;code>search&lt;/code> porta entrambi, e il relay deve indovinare dalla forma della query.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a> aggiunge il primo token di estensione NIP-50: &lt;code>autocomplete:true&lt;/code> o &lt;code>autocomplete:false&lt;/code> incorporato nella query di ricerca segnala quale modalità il client vuole. Il relay di Ditto implementa il token per follow pack, lista e qualunque evento con un tag &lt;code>title&lt;/code>, passando al prefix matching quando &lt;code>autocomplete:true&lt;/code> è presente. Il token vive inline nella query (i campi di filtro separati restano intoccati), così viaggia con la stringa di ricerca e non richiede alcun bump di wire protocol:&lt;/p>
&lt;pre tabindex="0">&lt;code>search: &amp;#34;fiat autocomplete:true&amp;#34;
&lt;/code>&lt;/pre>&lt;p>Hint in forma di token come questo sono il modo in cui NIP-50 ha sempre gestito dialetti relay-specifici. I relay supportavano già token come &lt;code>language:en&lt;/code> e &lt;code>domain:example.com&lt;/code>. Ciascuno resta relay-specifico, con ciascun relay che documenta il proprio dialetto. La PR #2357 di NIP-50 eleva &lt;code>autocomplete&lt;/code> da un token relay-privato a uno benedetto dalla spec, aprendo la strada a ricerca typeahead-aware attraverso i relay.&lt;/p>
&lt;p>Esempio di &lt;code>REQ&lt;/code> NIP-50 con il token autocomplete, mirato a un relay che indicizza i titoli di profilo di kind 0:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b7c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f7081a2b3c4d5e6f70819a2b3c4d5&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1781136000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;client&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;example-mention-picker&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Sent search: kinds=[0], search=\&amp;#34;fiat autocomplete:true\&amp;#34;, limit=10&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;12d3e4f5061728394a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f7081a2b3c4d5e6f70819a2b3c4d5e6f7081a2b3c4d5e6f708192&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>L&amp;rsquo;effettivo REQ a livello di wire:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;REQ&amp;#34;, &amp;#34;mention-picker&amp;#34;, {&amp;#34;kinds&amp;#34;:[0],&amp;#34;search&amp;#34;:&amp;#34;fiat autocomplete:true&amp;#34;,&amp;#34;limit&amp;#34;:10}]
&lt;/code>&lt;/pre>&lt;p>Un relay che non riconosce il token tratta &lt;code>autocomplete:true&lt;/code> come parte della stringa di ricerca letterale e ricade sul matching full-text, restituendo risultati corretti (se classificati diversamente). La degradazione graziosa rende il token sicuro da includere incondizionatamente per client che preferiscono il prefix matching quando disponibile.&lt;/p>
&lt;p>La prossima probabile estensione NIP-50 è il controllo di ranking per-kind: un hint che dice &amp;ldquo;classifica per &lt;code>created_at&lt;/code> decrescente&amp;rdquo; contro il default relevance score. Diversi relay accettano già &lt;code>sort:newest&lt;/code> come token relay-privato, e lo stesso percorso di elevazione che ha portato &lt;code>autocomplete&lt;/code> nella spec si applica. La ricerca resta una delle poche primitive Nostr dove i relay competono sulla qualità del risultato; l&amp;rsquo;affidabilità della consegna è la stessa attraverso tutti i relay conformi. Token incrementali consentono ai client di sfruttare quella competizione di qualità senza forzare i relay a rilasciare una nuova spec pesante.&lt;/p></content:encoded></item><item><title>Nostr Compass #25</title><link>https://nostrcompass.org/it/newsletters/2026-06-03-newsletter/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-06-03-newsletter/</guid><description>&lt;p>Amber 6.2.0 rilascia la cifratura NIP-44 v3 prima della spec. Mostro porta le fondamenta per l&amp;rsquo;escrow regolato con Cashu attraverso otto PR, avvolgendo l&amp;rsquo;esistente Cashu Development Kit come secondo backend di regolamento accanto a Lightning. NIP-F4 podcast è mergiato dopo 27 mesi di dibattito. fiatjaf apre una proposta contestata di disaccoppiamento delle chiavi NIP-17 che riapre la discussione architetturale bunker-contro-Marmot. Amethyst porta l&amp;rsquo;etichettatura di hashtag NIP-32, una schermata podcast dedicata e gli zap onchain attraverso 52 PR non rilasciate.&lt;/p></description><content:encoded>&lt;p>Amber 6.2.0 rilascia la cifratura NIP-44 v3 prima della spec. Mostro porta le fondamenta per l&amp;rsquo;escrow regolato con Cashu attraverso otto PR, avvolgendo l&amp;rsquo;esistente Cashu Development Kit come secondo backend di regolamento accanto a Lightning. NIP-F4 podcast è mergiato dopo 27 mesi di dibattito. fiatjaf apre una proposta contestata di disaccoppiamento delle chiavi NIP-17 che riapre la discussione architetturale bunker-contro-Marmot. Amethyst porta l&amp;rsquo;etichettatura di hashtag NIP-32, una schermata podcast dedicata e gli zap onchain attraverso 52 PR non rilasciate.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="amber-620-cifratura-nip-44-v3-rilasciata">Amber 6.2.0: cifratura NIP-44 v3 rilasciata&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.0">Amber v6.2.0&lt;/a>, rilasciato il 1° giugno, aggiunge il &lt;a href="https://github.com/greenart7c3/Amber/pull/448">supporto alla cifratura NIP-44 v3&lt;/a> con una schermata di approvazione dedicata, anteprima dell&amp;rsquo;intent, anteprima bunker, logging della cronologia e auto-reject per richieste non valide. La release registra anche le &lt;a href="https://github.com/greenart7c3/Amber/commit/8b93340">autorità ContentProvider NIP-44 v3&lt;/a> così altre app Android possono richiedere la cifratura v3 insieme al percorso v2 esistente. NIP-44 stesso è la spec versionata di payload cifrato usata dai DM privati &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, dal traffico bunker NIP-46 e da altre primitive Nostr; v3 in Amber è opt-in accanto a v2, segnalato da un metodo signer separato così i client lato ricevente possono negoziare l&amp;rsquo;algoritmo esplicitamente. La corrispondente PR nel repo NIPs deve ancora arrivare, quindi Amber sta rilasciando v3 prima del consensus di protocollo, con il wire format e l&amp;rsquo;autorità ContentProvider registrati per l&amp;rsquo;integrazione dei client a valle.&lt;/p>
&lt;p>Le sessioni NIP-46 ora auto-accettano le richieste di ping alla connessione, rimuovendo il prompt sul primo round trip dopo il pairing. Il metodo signer &lt;code>sign_message&lt;/code> è stato rimosso completamente dopo essere stato deprecato e non utilizzato.&lt;/p>
&lt;p>Poiché Amber è il signer Android dominante, ogni client a valle che vuole v3 deve puntare al wire format di Amber finché la PR NIPs non arriva. Ciò dà ad Amber implicitamente voce in capitolo sulla spec finale v3 finché il protocollo non recupera. Il trade è reale: v3 in produzione lascia che Amber raccolga feedback implementativi per l&amp;rsquo;eventuale NIP, al costo di un punto di riferimento a singola implementazione temporaneo che gli altri client ora devono eguagliare.&lt;/p>
&lt;h3 id="mostro-integrazione-dellescrow-cashu-tramite-cdk">Mostro: integrazione dell&amp;rsquo;escrow Cashu tramite CDK&lt;/h3>
&lt;p>grunch ha portato otto PR attraverso MostroP2P questa settimana integrando le primitive multisig P2PK esistenti di Cashu (NUT-10 e NUT-11) come secondo backend di regolamento accanto a Lightning sull&amp;rsquo;exchange Bitcoin P2P coordinato via Nostr. Le primitive crittografiche sono di Cashu; il lavoro è impalcatura di integrazione e un nuovo trait di backend escrow. &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.12.0">Mostro core v0.12.0&lt;/a>, rilasciato il 30 maggio, aggiunge i &lt;a href="https://github.com/MostroP2P/mostro-core/pull/150">tipi di protocollo per l&amp;rsquo;escrow multisig 2-di-3&lt;/a>, firme P_M per-proof e consente eventi escrow attraverso la validazione della risposta. L&amp;rsquo;architettura è documentata in &lt;a href="https://github.com/MostroP2P/mostro/pull/756">PR #756&lt;/a> e usa chiavi di trade per-order chiarite in &lt;a href="https://github.com/MostroP2P/mostro/pull/757">PR #757&lt;/a>.&lt;/p>
&lt;p>L&amp;rsquo;implementazione è stata dispiegata attraverso sei PR di follow-up in un solo giorno. &lt;a href="https://github.com/MostroP2P/mostro/pull/758">F2 (PR #758)&lt;/a> ha aggiunto la configurazione, la modalità escrow e il boot condizionale. La fetta successiva, &lt;a href="https://github.com/MostroP2P/mostro/pull/760">F3 (PR #760)&lt;/a>, ha definito un trait &lt;code>EscrowBackend&lt;/code> con un&amp;rsquo;implementazione Lightning e uno stub Cashu, consentendo a Mostro di cambiare backend di regolamento senza cambiare la macchina a stati degli ordini. &lt;a href="https://github.com/MostroP2P/mostro/pull/759">F4 (PR #759)&lt;/a> ha wrappato &lt;a href="https://github.com/cashubtc/cdk">CDK&lt;/a> (il Cashu Development Kit) per operazioni di mint e wallet. Il lavoro sul database in &lt;a href="https://github.com/MostroP2P/mostro/pull/761">F5 (PR #761)&lt;/a> ha aggiunto lock escrow compare-and-swap e query active-locked. &lt;a href="https://github.com/MostroP2P/mostro/pull/762">F6 (PR #762)&lt;/a> ha costruito una mint containerizzata in un job CI dedicato per il test end-to-end dell&amp;rsquo;escrow. Il flusso Mostro usa già DM gift-wrapped NIP-59 per la coordinazione degli ordini sul relay, così l&amp;rsquo;escrow Cashu si inserisce come una seconda opzione di regolamento accanto a Lightning senza toccare il wire protocol.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="ngit-v250-fallback-grasp-e-fetch-git-pigri">ngit v2.5.0: fallback GRASP e fetch git pigri&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.5.0">ngit v2.5.0&lt;/a> cambia il comportamento di default di &lt;code>git push pr/&amp;lt;branch&amp;gt;&lt;/code> e &lt;code>ngit send&lt;/code> per produrre un PR kind per nuove proposte quando il repository ha almeno un server GRASP registrato. In precedenza questo si attivava solo per commit sovradimensionati oltre i 60 KB o commit contenenti submoduli. Quando un PR non può essere pushato ai server GRASP del repository, ngit ora ricade su routing GRASP-06 attraverso i server dichiarati. Il flag &lt;code>ngit send --git-server&lt;/code> o &lt;code>git push -o git-server=&amp;lt;url&amp;gt;&lt;/code> consente ai contributor di puntare esplicitamente a un URL git custom o server GRASP.&lt;/p>
&lt;p>I republish di &lt;code>ngit init&lt;/code> ora preservano i tag sconosciuti dagli annunci esistenti, così i tag aggiunti da una futura versione di ngit o da uno strumento di terze parti sopravvivono al republish. Un warning giallo elenca i tag riportati, e &lt;code>--clean&lt;/code> li rimuove su richiesta. &lt;code>ngit pr apply&lt;/code>, &lt;code>ngit pr checkout&lt;/code> e &lt;code>ngit pr list&lt;/code> consultano i server git pigramente e condividono un singolo helper di fetch, così il checkout non fa più fetch incondizionato quando il commit è già locale. &lt;code>ngit pr checkout&lt;/code> prova anche URL di clone forniti dal submitter dall&amp;rsquo;evento PR come fallback quando i server git dichiarati del repo non portano la punta del PR, corrispondendo al comportamento esistente in &lt;code>ngit pr apply&lt;/code>. ngit è l&amp;rsquo;implementazione di riferimento &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> per la collaborazione git su Nostr, e v2.5.0 rende GRASP il percorso di prima classe per i nuovi contributor.&lt;/p>
&lt;h3 id="jumble-v2657-rimozione-exif-e-conteggi-zap-validati">Jumble v26.5.7: rimozione EXIF e conteggi zap validati&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.7">Jumble v26.5.7&lt;/a> aggiunge due modifiche che influenzano direttamente la privacy dell&amp;rsquo;utente e l&amp;rsquo;integrità dei dati. Gli identificatori di posizione EXIF e della camera sono ora rimossi dagli upload di immagini prima che lascino il client, chiudendo una superficie di lunga data di leak di metadati che ha colpito ogni immagine postata da Jumble. I conteggi degli zap sono ora calcolati solo da ricevute validate crittograficamente, correggendo conteggi gonfiati da eventi zap malformati che avevano lasciato agli attaccanti la possibilità di esagerare i totali degli zap sulle note. La release aggiunge anche la verifica dell&amp;rsquo;identità del mittente per i DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, chiudendo una superficie di spoofing in cui un mittente poteva falsificare il proprio &lt;code>pubkey&lt;/code> nel seal.&lt;/p>
&lt;h3 id="nostr-calendar-v160-rsvp-e-gestione-dei-partecipanti-duplicati">nostr-calendar v1.6.0: RSVP e gestione dei partecipanti duplicati&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.6.0">nostr-calendar v1.6.0&lt;/a> porta il flusso RSVP di Formstr (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/169">PR #169&lt;/a>) e impedisce partecipanti duplicati negli inviti a eventi (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/168">PR #168&lt;/a>). L&amp;rsquo;opzione &lt;code>waitForAll&lt;/code> nella funzione di publish ora ha come default false così la UI non si blocca su relay lenti (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/170">PR #170&lt;/a>). &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/157">PR #157&lt;/a> ha rilasciato le due bozze di proposta NIP di Formstr per la programmazione di appuntamenti e prenotazioni.&lt;/p>
&lt;h3 id="sprout-036-sprout--mesh-llm-e-sezioni-di-canale">Sprout 0.3.6: Sprout × mesh-llm e sezioni di canale&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.6">Sprout v0.3.6&lt;/a> è la principale di una serie di sei release da v0.3.1 a v0.3.6 questa settimana. L&amp;rsquo;integrazione in-process Sprout × mesh-llm arriva in &lt;a href="https://github.com/block/sprout/pull/798">PR #798&lt;/a>, consentendo a Sprout di servire e consumare nodi mesh-llm tramite ammissione dal relay. Le sezioni di canale definite dall&amp;rsquo;utente si sincronizzano fra dispositivi via Nostr in &lt;a href="https://github.com/block/sprout/pull/792">PR #792&lt;/a>, e le sezioni di canale arrivano su mobile con sync via relay in &lt;a href="https://github.com/block/sprout/pull/800">PR #800&lt;/a>. Le notifiche thread-aware con controlli di follow e mute mutabili arrivano in &lt;a href="https://github.com/block/sprout/pull/761">PR #761&lt;/a>.&lt;/p>
&lt;p>Gli allegati file di tipo arbitrario con card di download sono arrivati in &lt;a href="https://github.com/block/sprout/pull/810">PR #810&lt;/a>, espandendo Sprout oltre gli allegati solo immagine. Mobile ha guadagnato una tab feed sociale Pulse (&lt;a href="https://github.com/block/sprout/pull/772">PR #772&lt;/a>) e rifiniture Pulse fra feed, compose e superfici di filtro (&lt;a href="https://github.com/block/sprout/pull/796">PR #796&lt;/a>).&lt;/p>
&lt;h3 id="nostrbotkit-v050-chat-di-gruppo-marmot-in-un-framework-di-bot-rust">NostrBotKit v0.5.0: chat di gruppo Marmot in un framework di bot Rust&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/Tuxor/NostrBotKit/src/branch/main/CHANGELOG.md">NostrBotKit v0.5.0&lt;/a>, rilasciato il 24 maggio su Codeberg, aggiunge il supporto &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (MLS-over-Nostr, &lt;a href="https://github.com/nostr-protocol/nips/pull/2014">NIP-104&lt;/a>) al framework di bot Rust self-hosted. Quando &lt;code>marmot: true&lt;/code> è impostato, il bot pubblica i suoi key package MLS (kind 443, 30443, 10051), accetta inviti di gruppo automaticamente e ascolta i messaggi nei gruppi a cui è unito. Due nuovi tipi di comando, &lt;code>dm_marmot&lt;/code> e &lt;code>dm_marmot_npub&lt;/code>, consentono ai bot di inviare messaggi in gruppi Marmot con nome o chat Marmot 1:1 tramite cron job o webhook. Per prevenire loop di feedback con altri bot, i bot NostrBotKit rispondono solo a messaggi esplicitamente indirizzati a loro tramite &lt;code>/command&lt;/code> o &lt;code>@botname/command&lt;/code>. Gli allegati cifrati che usano MIP-04 sono decifrati automaticamente e ri-caricati via Blossom o NIP-96, e il database di stato MLS è cifrato con una chiave derivata dalla chiave privata del bot. NostrBotKit è il primo framework Rust a rilasciare il supporto ai bot NIP-104, aprendo il deployment di bot cifrati Marmot a un profilo operatore diverso dal percorso TypeScript esistente.&lt;/p>
&lt;h3 id="noscrypt-v0114-rilascio-firmato-della-libreria-di-crittografia">noscrypt v0.1.14: rilascio firmato della libreria di crittografia&lt;/h3>
&lt;p>&lt;a href="https://github.com/vnuge/noscrypt/releases/tag/v0.1.14">noscrypt v0.1.14&lt;/a> è una release di sicurezza della libreria di crittografia C usata da diversi client Nostr per le primitive secp256k1, NIP-04 e NIP-44. La release è distribuita con &lt;a href="https://www.vaughnnugent.com/resources/software/modules/noscrypt">download PGP-firmati&lt;/a> verificabili contro la chiave pubblica del manutentore. I client a valle che integrano noscrypt dovrebbero validare la firma prima di integrarla.&lt;/p>
&lt;h3 id="chama-v130-nuovo-escrow-p2p-nostr-native-con-fedimint">Chama v1.3.0: nuovo escrow P2P Nostr-native con Fedimint&lt;/h3>
&lt;p>&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.3.0">Chama v1.3.0&lt;/a>, rilasciato il 1° giugno, è la principale di una serie di quattro release per un nuovo client di escrow P2P Nostr-native che usa ecash Fedimint e secret sharing Shamir 2-di-3 per il regolamento. Il progetto è rilasciato a &lt;a href="https://getchama.app">getchama.app&lt;/a> e gira senza server. v1.3.0 introduce &amp;ldquo;heal that sticks&amp;rdquo; (re-broadcast riuscito e healing del trade che sopravvive ai riavvii di sessione) e pay-rail matching, dove le Chama US-leaning mostrano prima le rail di pagamento US. Le fondamenta per storefront multi-unità sono arrivate attraverso &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.11">v1.2.11&lt;/a> (schema multi-unità) e &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.12">v1.2.12&lt;/a> (accountant per lo stock dello storefront + hardening del recovery del bridge Fedimint nativo). Chama si unisce a Mostro e Shopstr nella categoria marketplace Nostr, distinta per la sua architettura serverless e il regolamento escrow basato su Fedimint.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="amethyst-etichettatura-hashtag-nip-32-schermata-podcast-tracce-musicali">Amethyst: etichettatura hashtag NIP-32, schermata podcast, tracce musicali&lt;/h3>
&lt;p>Amethyst ha mergiato 52 PR e 411 commit questa settimana senza tagliare una release tag. La più grande aggiunta funzionale è &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a>, che implementa l&amp;rsquo;etichettatura hashtag &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> e un feed hashtag basato su etichette usando eventi di kind 1985 con namespace &lt;code>L&lt;/code> e tag di etichetta &lt;code>l&lt;/code>. Questo sostituisce il fragile meccanismo di corrispondenza testuale &lt;code>#tag&lt;/code> con un modello di scoperta basato su labeler dove gli utenti possono seguire specifici npub labeler nel modo in cui seguono i creator di contenuto. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> aggiunge una schermata podcast dedicata con lista degli episodi e player inline, arrivando entro pochi giorni dal merge della spec podcast &lt;a href="https://nostrcompass.org/it/topics/nip-f4/">NIP-F4&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3071">PR #3071&lt;/a> aggiunge un feed Software Apps con filtraggio per follow list, e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3067">PR #3067&lt;/a> aggiunge il supporto a tracce musicali e playlist tramite set &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>.&lt;/p>
&lt;p>I signer effimeri per upload di post anonimi arrivano in &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3123">PR #3123&lt;/a>, consentendo agli utenti di postare anonimamente senza esporre la propria chiave di identità ai servizi di upload. Un watchdog di auto-healing Tor con test di integrazione contro Arti v2.3.0 arriva in &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3053">PR #3053&lt;/a>, rafforzando il routing Tor di Amethyst durante outage di rete transitori. Gli zap onchain e un filtro NIP-05 per utenti che ritornano da Gemini arrivano in &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3052">PR #3052&lt;/a>, ampliando la superficie di zap oltre Lightning ai pagamenti Bitcoin onchain.&lt;/p>
&lt;h3 id="shopstr-validazione-degli-url-di-anteprima-opengraph">Shopstr: validazione degli URL di anteprima OpenGraph&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/504">PR #504&lt;/a> valida gli URL di anteprima OpenGraph prima di renderizzarli negli annunci del marketplace, chiudendo una potenziale superficie XSS in cui venditori malevoli potevano incorporare contenuto scriptato tramite metadati OG appositamente costruiti. Gli shop ospitati su Shopstr mostrano anteprime OG per link esterni, e URL non validati permettevano a un attaccante di iniettare contenuto arbitrario nella UI dello shop.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-spec-di-protocollo">Aggiornamenti NIP e lavoro di spec di protocollo&lt;/h2>
&lt;h3 id="nip-f4-podcast-mergiato-dopo-due-anni">NIP-F4 (Podcast) mergiato dopo due anni&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1093">PR #1093&lt;/a> è stato mergiato il 28 maggio, due anni e tre mesi dopo che fiatjaf ha aperto la bozza originale. NIP-F4 definisce gli episodi di podcast come eventi di kind 54 con tag &lt;code>imeta&lt;/code> per i metadati del file audio (URL, mime type, codice lingua ISO, URL di fallback, flag di servizio NIP-96, bitrate, durata), un tag &lt;code>title&lt;/code>, tag opzionali &lt;code>image&lt;/code> e &lt;code>description&lt;/code> e tag &lt;code>t&lt;/code> per etichette di topic. La spec mantiene deliberatamente RSS come fonte di verità: gli episodi possono portare un tag &lt;code>i&lt;/code> che fa riferimento al GUID del podcast RSS, consentendo ai client Nostr di collegarsi ai feed di podcast esistenti senza duplicare l&amp;rsquo;hosting audio. Il lungo dibattito nel thread della PR (con Dave Jones co-autore del podcast-namespace, Alex Gleason e Mike Terenzio) si è concluso su un modello di coesistenza in cui Nostr fornisce il layer sociale sopra RSS mentre RSS mantiene il layer di distribuzione. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> schermata podcast di Amethyst arriva entro pochi giorni dal merge della spec, e il lavoro sul picker GIF di Jumble include anche fondamenta iniziali per l&amp;rsquo;allegato podcast.&lt;/p>
&lt;h3 id="disaccoppiamento-delle-chiavi-nip-17-pr-2361">Disaccoppiamento delle chiavi NIP-17 (PR #2361)&lt;/h3>
&lt;p>fiatjaf ha aperto &lt;a href="https://github.com/nostr-protocol/nips/pull/2361">PR #2361&lt;/a> il 1° giugno, proponendo che NIP-17 separi la chiave di identità dalla chiave di cifratura. I destinatari pubblicizzano la loro chiave di cifratura in un nuovo evento di kind 10044, e i mittenti usano quella chiave pubblicizzata (quando presente) per il seal interno del gift-wrap, ricadendo sulla chiave di identità del destinatario solo quando la pubblicità è assente. La PR aggiunge anche un tag &lt;code>n&lt;/code> al seal che porta la pubkey di cifratura del mittente, così i destinatari possono derivare la conversation key corretta senza decifratura per tentativi contro ogni chiave ritirata. La motivazione dichiarata è la UX bunker: sotto il design attuale, un utente bunker deve fare round-trip di ogni DM ricevuto attraverso il signer per decifrare, poiché la chiave di cifratura è la chiave di identità detenuta dal signer. Il disaccoppiamento lascia che il client detenga la chiave di cifratura localmente mantenendo la chiave di identità nel bunker per le firme.&lt;/p>
&lt;p>La proposta ha attirato la review più contestata della settimana. Cody Tseng (Jumble) la sostiene come il percorso più facile per l&amp;rsquo;interop DM cross-client. Vitor Pamplona (Amethyst) obietta su due basi: aggiunge un nuovo secret di decifratura a lungo termine fuori dal bunker, e i client che non lo rilasciano falliranno silenziosamente a decifrare i messaggi dai client che lo fanno, senza percorso di degradazione perché la rottura è al layer del seal. Pamplona argomenta che il problema è già risolto correttamente dai key package e dalla rotazione di epoch di &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, e che retrofittare la separazione delle chiavi nella spec base NIP-17 crea il tipo di fallimento di interop che Marmot ha impiegato due anni a progettare per aggirare. La controrisposta di fiatjaf ha tre parti: il disaccoppiamento è opzionale per destinatario, il fix dell&amp;rsquo;n-tag affronta la preoccupazione della decifratura per tentativi, e l&amp;rsquo;alternativa è mantenere rotta la UX bunker mentre Telegram divora il caso d&amp;rsquo;uso della messaggistica. Il thread resta aperto senza una decisione di merge ed è la discussione NIP più osservata del trimestre.&lt;/p>
&lt;h3 id="nip-silent-payments-flusso-di-pagamento-pr-2362">NIP-Silent Payments flusso di pagamento (PR #2362)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2362">silentius-satoshi ha aperto la PR #2362&lt;/a> il 1° giugno come compagno della più ampia &lt;a href="https://github.com/nostr-protocol/nips/pull/2355">bozza NIP Nostr Silent Payments (PR #2355)&lt;/a>. Il NIP del flusso di pagamento definisce il kind 8352 per le notifiche di ricevuta di silent payment (consegnate tramite gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> così il link di ricevuta non è pubblicamente osservabile) e il kind 10353 per una cache UTXO cifrata che si sincronizza fra i dispositivi per lo stesso wallet Silent Payments. La coppia insieme consente a un pagatore di segnalare un pagamento a un indirizzo Silent Payments usando primitive Nostr-native senza esporre il link on-chain al layer aperto dei relay.&lt;/p>
&lt;h3 id="nip-pip-perfect-ip-packets-pr-2364">NIP-PIP Perfect IP Packets (PR #2364)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2364">RandyMcMillan ha aperto la PR #2364&lt;/a> il 1° giugno come bozza. Introduce un trasporto ad albero di pacchetti con tre nuovi kind indirizzabili: 39078 porta il manifest, 39079 porta gli slice individuali, e 39080 porta le richieste di riparazione. La spec definisce un wire format in cui file grandi sono spezzati in slice indirizzabili, con manifest che descrivono l&amp;rsquo;albero degli slice e richieste di riparazione che consentono ai destinatari di chiedere slice mancanti. Si applica lo status di bozza iniziale, e la proposta non ha ancora attirato la review dei manutentori.&lt;/p>
&lt;h3 id="nip-29-spazi-live-audiovideo-pr-2238">NIP-29 spazi live audio/video (PR #2238)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2238">PR #2238&lt;/a> mergiata il 28 maggio, estendendo i gruppi basati su relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> con supporto a spazi live audio e video. I gruppi possono ora fare riferimento a una sessione live-space attiva, consentendo agli eventi live activity in stile &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a> di ancorarsi in un contesto di gruppo NIP-29.&lt;/p>
&lt;h3 id="nip-71-video-multiple-tracce-audio-pr-2255">NIP-71 video multiple tracce audio (PR #2255)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a> mergiata il 28 maggio, aggiungendo tag &lt;code>imeta&lt;/code> di traccia audio agli eventi video NIP-71. Il nuovo formato porta URL, hash, mime type, tag di lingua (con ISO-639-1 più flag di versione originale), URL di fallback, segnale di servizio NIP-96, bitrate e durata. Questo abilita lo streaming solo audio (video podcast), il cambio di risoluzione con audio stabile, tracce multiple in lingua e ridotto storage quando i server non incorporano l&amp;rsquo;audio direttamente nei file video. I client dovrebbero controllare la disponibilità di traccia audio prima di assumere un comportamento a traccia singola.&lt;/p>
&lt;h3 id="nip-59-gift-wrap-effimero-pr-2245">NIP-59 gift wrap effimero (PR #2245)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a> mergiata il 28 maggio, aggiungendo il kind 21059 come controparte effimera dell&amp;rsquo;esistente gift wrap di kind 1059. La semantica corrisponde al wrap standard NIP-59 ma segue le regole di eventi effimeri per NIP-01 (i relay li scartano dopo il broadcast e non li persistono). Ciò consente alle app di scegliere la persistenza in base ai requisiti: gli indicatori di digitazione e i ping di presenza beneficiano dell&amp;rsquo;effimero, mentre la cronologia DM ha bisogno di persistenza.&lt;/p>
&lt;h3 id="nip-78-kind-application-specific-pr-2292">NIP-78 kind application-specific (PR #2292)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2292">PR #2292&lt;/a> mergiata il 28 maggio, riclassificando i dati application-specific NIP-78 come un normale kind indirizzabile, abbandonando la precedente gamma separata. Questo semplifica la semantica di replaceability e allinea NIP-78 con il modello di eventi indirizzabili usato da altri NIP di stato applicativo.&lt;/p>
&lt;h3 id="chiarimenti-nip-85-pr-2304">Chiarimenti NIP-85 (PR #2304)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a> mergiata il 28 maggio con piccoli miglioramenti al linguaggio attorno a chiavi e relay multipli per service provider nelle Trusted Assertions &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a>, chiarendo il percorso di rotazione della chiave operatore per i servizi di assertion sui relay.&lt;/p>
&lt;h3 id="nip-01-one-liner-sulla-gestione-della-connessione-relay-pr-2307">NIP-01 one-liner sulla gestione della connessione relay (PR #2307)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2307">PR #2307&lt;/a> mergiata il 28 maggio, aggiungendo una singola frase a NIP-01 su come i client dovrebbero gestire i tempi di vita della connessione relay. Il fix affronta un gap di lunga data in cui i client differivano su se tenere le connessioni WebSocket aperte dopo il fetch, portando a perdita silenziosa di messaggi su relay che scartano connessioni idle.&lt;/p>
&lt;h3 id="nip-c7-vincolo-di-chat-kind-9-pr-2310">NIP-C7 vincolo di chat kind 9 (PR #2310)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a> mergiata il 28 maggio, restringendo le viste chat NIP-C7 ai soli messaggi di kind 9. Questo separa la chat effimera dai post di timeline di kind 1 nei client che implementano superfici di chat in stile NIP-C7.&lt;/p>
&lt;h3 id="semplificazione-nip-55-pr-2363">Semplificazione NIP-55 (PR #2363)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2363">PR #2363&lt;/a> di greenart7c3, aperta il 1° giugno, semplifica la spec dell&amp;rsquo;applicazione signer Android. Vitor Pamplona ha approvato come &amp;ldquo;Looks good&amp;rdquo; e fiatjaf ha chiesto se è pronta per il merge. La modifica apre la strada alla registrazione dell&amp;rsquo;autorità ContentProvider NIP-44 v3 che Amber ha rilasciato questa settimana.&lt;/p>
&lt;h3 id="nip-44-v3-implementazione-amber-prima-della-spec">NIP-44 v3 (implementazione Amber prima della spec)&lt;/h3>
&lt;p>Amber ha rilasciato NIP-44 v3 in v6.2.0 con otto commit che implementano l&amp;rsquo;upgrade di cifratura e la registrazione dell&amp;rsquo;autorità ContentProvider, ma la PR della spec nel repo NIPs deve ancora arrivare. NIP-44 stesso definisce un formato di payload cifrato versionato usato dentro eventi firmati; l&amp;rsquo;esistente v2 (in produzione dal 2024) usa ECDH secp256k1, HKDF, padding, ChaCha20, HMAC-SHA256 e base64. Il wire format v3 aggiunge un nuovo byte di versione (0x03) prima del nonce, consentendo ai client destinatari di negoziare esplicitamente l&amp;rsquo;algoritmo. L&amp;rsquo;implementazione di Amber include auto-reject per richieste v3 non valide, una schermata di approvazione dedicata distinta dalle approvazioni v2 e logging del plaintext per direzione per la cronologia. Finché la PR NIPs non è mergiata, v3 rimane un&amp;rsquo;estensione specifica di Amber. Trattatela come un segnale prospettico, non come una segnalazione stabile a livello di protocollo.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-32-labeling">NIP deep dive: NIP-32 (Labeling)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> definisce un modo strutturato per qualunque attore Nostr di etichettare eventi, pubkey, relay, URL o topic usando eventi indirizzabili di kind 1985 con un vocabolario di etichette namespaced. La spec introduce due nuovi tag: &lt;code>L&lt;/code> denota un namespace di etichetta, e &lt;code>l&lt;/code> denota un&amp;rsquo;etichetta all&amp;rsquo;interno di quel namespace. I tag di target dell&amp;rsquo;etichetta (&lt;code>e&lt;/code>, &lt;code>p&lt;/code>, &lt;code>a&lt;/code>, &lt;code>r&lt;/code> o &lt;code>t&lt;/code>) specificano cosa viene etichettato. Il requisito di namespace impedisce a più sistemi di etichette di collidere: un&amp;rsquo;etichetta &lt;code>spam&lt;/code> in &lt;code>nip28.moderation&lt;/code> porta una semantica diversa da un&amp;rsquo;etichetta &lt;code>spam&lt;/code> in &lt;code>relay-report&lt;/code>.&lt;/p>
&lt;p>La scelta di design che rende NIP-32 utile oltre la moderazione è che le etichette sono asserzioni, non verità a livello di protocollo. Un evento di kind 1985 dice solo che una particolare pubkey ha etichettato un particolare target in un particolare namespace. Il modello di fiducia è delegato al client: ogni client sceglie quali labeler onorare, quali namespace leggere e quale affordance UI dare a ciascuna etichetta. La stessa primitiva porta avvertimenti di contenuto, assegnazione di licenza, tag di lingua ISO-639-1 sulle note di kind 1, tag geografici ISO-3166-2, classificazione di contenuto, suggerimenti di moderazione distribuita e punteggi di reputazione.&lt;/p>
&lt;p>La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a> di Amethyst di questa settimana è il più grande deployment finora. Aggiunge l&amp;rsquo;etichettatura hashtag tramite NIP-32 e un feed hashtag basato su etichette, consentendo agli utenti di sfogliare per etichette assegnate da labeler fidati. Il precedente meccanismo di corrispondenza testuale &lt;code>#tag&lt;/code> che originariamente pilotava la scoperta hashtag su Nostr resta come fallback per note non etichettate. Il modello hashtag-come-etichetta significa che la stessa nota può essere scopribile sotto più etichette assegnate da labeler diversi, e gli utenti possono silenziare o promuovere specifici labeler senza influenzare le note sottostanti.&lt;/p>
&lt;p>Anche l&amp;rsquo;auto-etichettatura è supportata. Un autore può attaccare tag &lt;code>L&lt;/code> e &lt;code>l&lt;/code> direttamente alle proprie note di kind 1 per dichiarare lingua, posizione e topic. Una nota taggata &lt;code>[&amp;quot;L&amp;quot;, &amp;quot;ISO-639-1&amp;quot;], [&amp;quot;l&amp;quot;, &amp;quot;en&amp;quot;, &amp;quot;ISO-639-1&amp;quot;]&lt;/code> si auto-identifica come inglese e può essere filtrata da client language-aware senza infrastruttura di etichettatura di terze parti.&lt;/p>
&lt;p>Esempio di evento etichetta NIP-32 che tagga una nota di kind 1 come inglese e le assegna un tag di moderazione:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5f87fe2d4c8b9a0e3f1c4d5e6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1748908800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1985&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;L&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ISO-639-1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;l&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;en&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ISO-639-1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;L&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip28.moderation&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;l&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;approve&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip28.moderation&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8b39f4e5d6c7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Labeled as English-language content approved for NIP-28 chat moderation&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a6978869504132c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il rollout di Amethyst combinato con il recente lavoro sulle Trusted Relay Assertions suggerisce che NIP-32 sta diventando il substrato standard per qualunque pattern di &amp;ldquo;asserzione guidata dall&amp;rsquo;utente su un target&amp;rdquo; su Nostr. Il prossimo test è se i labeler stessi svilupperanno gerarchie di fiducia: se gli utenti seguiranno specifici npub labeler nel modo in cui seguono i creator di contenuto.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-f4-podcast">NIP deep dive: NIP-F4 (Podcast)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/F4.md">NIP-F4&lt;/a> è stato mergiato questa settimana, due anni e tre mesi dopo che fiatjaf ha aperto la bozza originale (PR #1093). Il prefisso F è semplice numerazione hex: NIP-F0 fino a NIP-FF usano lo stesso spazio hex a 1 byte di NIP-0A fino a NIP-0D, con la gamma hex superiore che serve da overflow ora che la gamma decimale 01–99 si sta riempiendo. NIP-F4 definisce come i podcast pubblicano episodi e metadati come eventi Nostr mantenendo RSS come layer complementare per il file audio stesso.&lt;/p>
&lt;p>La scelta architettonica di base è che ogni podcast è la propria keypair Nostr. La spec apre con questo direttamente: &amp;ldquo;each podcast is its own Nostr keypair&amp;rdquo;. Ciò consente ai podcast di combinare la loro presenza podcast con una normale presenza di microblogging di kind 0 / kind 1, e consente a un podcast di cambiare proprietà nel tempo tramite handover di chiave o firma condivisa stile MuSig2. Quattro kind di evento portano il layer di pubblicazione:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>kind:10154&lt;/code>&lt;/strong>: metadati podcast replaceable. Porta tag &lt;code>title&lt;/code>, &lt;code>image&lt;/code>, &lt;code>description&lt;/code>, tag &lt;code>website&lt;/code> opzionali e tag &lt;code>p&lt;/code> opzionali che marcano gli autori con un &lt;code>role&lt;/code> di &lt;code>host&lt;/code>, &lt;code>cohost&lt;/code> o &lt;code>editor&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10164&lt;/code>&lt;/strong>: contro-claim dell&amp;rsquo;autore. L&amp;rsquo;esempio nella spec usa il kind &lt;code>10064&lt;/code> (un typo aperto a correzione), ma l&amp;rsquo;header e il testo circostante lo identificano come &lt;code>kind:10164&lt;/code>. Gli utenti elencano le pubkey di podcast di cui sono autori, così i client possono verificare i tag &lt;code>p&lt;/code> in &lt;code>kind:10154&lt;/code> contro una claim equivalente dal presunto autore. Senza questo, un podcast potrebbe falsamente taggare chiunque come host.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:54&lt;/code>&lt;/strong>: eventi episodio scritti dalla pubkey del podcast direttamente. I tag includono &lt;code>title&lt;/code>, &lt;code>image&lt;/code> opzionale, &lt;code>description&lt;/code> e uno o più tag &lt;code>audio&lt;/code>. Ogni tag &lt;code>audio&lt;/code> è &lt;code>[&amp;quot;audio&amp;quot;, &amp;quot;&amp;lt;audio-url&amp;gt;&amp;quot;, &amp;quot;&amp;lt;optional_media_type&amp;gt;&amp;quot;]&lt;/code>. La spec nota &amp;ldquo;other important fields to be specified here later after further discovery&amp;rdquo;, e la forma mergiata è deliberatamente minima.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10054&lt;/code>&lt;/strong>: una lista di podcast preferiti in stile &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>, consentendo agli utenti di marcare quali podcast seguono.&lt;/li>
&lt;/ul>
&lt;p>Il dibattito del thread attorno al merge ha coinvolto il co-autore di Podcasting 2.0 &lt;a href="https://github.com/daveajones">Dave Jones&lt;/a>, &lt;a href="https://github.com/alexgleason">Alex Gleason&lt;/a>, &lt;a href="https://github.com/mterenzio">Mike Terenzio&lt;/a>, &lt;a href="https://github.com/pablof7z">Pablo F7z&lt;/a> e &lt;a href="https://github.com/staab">staab&lt;/a>. Jones ha argomentato fortemente contro qualunque tentativo di sostituire RSS: &amp;ldquo;It&amp;rsquo;s been tried many times and always fails&amp;rdquo;, citando JSONfeed, XMPP, AMP, l&amp;rsquo;API di Twitter e la migrazione fallita di Spotify. Terenzio ha ripresentato la proposta come layer sociale sopra RSS, mantenendo RSS stesso come layer di distribuzione. fiatjaf ha accettato di fare un passo indietro e lasciar maturare la proposta: &amp;ldquo;I agree with everything you said but I still think we can pull it off, let&amp;rsquo;s stop here for a while&amp;rdquo;. Due anni dopo, la spec mergiata atterra più vicina alla coesistenza che alla sostituzione.&lt;/p>
&lt;p>Tre domande di design restano esplicite nella spec mergiata:&lt;/p>
&lt;ul>
&lt;li>Il typo del &lt;code>kind:10164&lt;/code> (l&amp;rsquo;esempio mostra &lt;code>10064&lt;/code>) deve essere riconciliato prima che i client possano interoperare in sicurezza.&lt;/li>
&lt;li>La scoperta a livello di episodio senza collegamento GUID RSS è lasciata aperta. La spec mergiata non ha tag &lt;code>i&lt;/code>, formato &lt;code>podcast:item:guid&lt;/code> o meccanismo di bridging RSS. I client che vogliono fare bridge di un catalogo RSS esistente in eventi di kind 54 devono definire da soli la convenzione di bridge.&lt;/li>
&lt;li>Lo stub &amp;ldquo;other important fields&amp;rdquo; sulla definizione di &lt;code>kind:54&lt;/code> lascia bitrate, durata, lingua, puntatori a trascrizioni, capitoli e metadati per segmento come territorio aperto per proposte di follow-up.&lt;/li>
&lt;/ul>
&lt;p>La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> di Amethyst porta una schermata podcast dedicata con lista degli episodi e player inline entro pochi giorni dal merge, la prima grande implementazione client. Jumble ha rilasciato le prime fondamenta per l&amp;rsquo;allegato podcast insieme al suo picker GIF. Wavlake resta la più grande piattaforma podcast Nostr-native e dovrà decidere se allineare i suoi esistenti eventi di traccia musicale di kind 31337 con il modello di episodio di kind 54 di NIP-F4.&lt;/p>
&lt;p>Esempio di evento episodio NIP-F4 kind 54, corrispondente al set di tag minimo della spec mergiata:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;55807e7d5cd90d0303d7dce7397f996fdbaed8697903f326c7cf8ad999b9de3d&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1748995200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">54&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Episode 42: Why RSS Won&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://podcast.example.com/ep42-cover.jpg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;description&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Dave Jones and fiatjaf on protocol coexistence and the social layer.&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;audio&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://podcast.example.com/audio/ep42.mp3&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;audio/mpeg&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;In this episode we discuss the two-year journey of NIP-F4 from draft to merge, and why coexistence with RSS turned out to be the right architectural choice.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;abc123def456789012345678901234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>PR #1093 è stata aperta per 27 mesi, ben oltre la durata mediana di apertura per le PR NIP mergiate. Il prossimo test per NIP-F4 è se il typo del kind 10164 sarà riconciliato, se convenzioni di scoperta di episodi e bridge RSS emergeranno dagli implementatori, e se i principali host podcast pubblicheranno sotto keypair per-podcast come la spec raccomanda.&lt;/p></content:encoded></item><item><title>Nostr Compass #24</title><link>https://nostrcompass.org/it/newsletters/2026-05-28-newsletter/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-05-28-newsletter/</guid><description>&lt;p>Amethyst v1.11.0 porta un&amp;rsquo;implementazione completa del calendario NIP-52 con promemoria, split di zap Bitcoin onchain e supporto alle risposte nei gruppi Marmot. White Noise v2026.5.22 rilascia le notifiche push iOS tramite una Notification Service Extension, insieme alla UX di block e a un pulsante per aggiungere membri. Vector v0.4.0 porta un rewrite da zero di vector-core, Tor one-click con bridge, remote signer NIP-46, sincronizzazione MLS di gruppo full-negentropy e un server MCP a 21 tool per agenti AI. Applesauce v6.1.0 introduce liste di lookup relay NIP-51 (kind 10086) e un set completo di factory per git-cast NIP-34. MDK aggiunge i messaggi a scomparsa NIP-40 su iOS e Android tramite una superficie UniFFI unificata, e Mostro v0.17.4 chiude il ciclo del bond anti-abuso con i payout di bond slashati di Fase 3 al vincitore. Notedeck mergia la riconciliazione completa negentropy NIP-77 per giftwrap e backfill dei thread, Cordn appare come messenger MLS mediato da coordinator che scambia una dipendenza di disponibilità a punto singolo per un ordinamento di epoch più stretto e un modello operativo più semplice, un&amp;rsquo;implementazione di riferimento NIP-B0 chiamata deepmarks rilascia un client di bookmark monetizzato dal curatore, e il team Formstr apre quattro proposte NIP calendario coordinate che coprono l&amp;rsquo;auto-rimozione dei partecipanti, gli eventi privati, la ricorrenza e la programmazione decentralizzata degli appuntamenti.&lt;/p></description><content:encoded>&lt;p>Amethyst v1.11.0 porta un&amp;rsquo;implementazione completa del calendario NIP-52 con promemoria, split di zap Bitcoin onchain e supporto alle risposte nei gruppi Marmot. White Noise v2026.5.22 rilascia le notifiche push iOS tramite una Notification Service Extension, insieme alla UX di block e a un pulsante per aggiungere membri. Vector v0.4.0 porta un rewrite da zero di vector-core, Tor one-click con bridge, remote signer NIP-46, sincronizzazione MLS di gruppo full-negentropy e un server MCP a 21 tool per agenti AI. Applesauce v6.1.0 introduce liste di lookup relay NIP-51 (kind 10086) e un set completo di factory per git-cast NIP-34. MDK aggiunge i messaggi a scomparsa NIP-40 su iOS e Android tramite una superficie UniFFI unificata, e Mostro v0.17.4 chiude il ciclo del bond anti-abuso con i payout di bond slashati di Fase 3 al vincitore. Notedeck mergia la riconciliazione completa negentropy NIP-77 per giftwrap e backfill dei thread, Cordn appare come messenger MLS mediato da coordinator che scambia una dipendenza di disponibilità a punto singolo per un ordinamento di epoch più stretto e un modello operativo più semplice, un&amp;rsquo;implementazione di riferimento NIP-B0 chiamata deepmarks rilascia un client di bookmark monetizzato dal curatore, e il team Formstr apre quattro proposte NIP calendario coordinate che coprono l&amp;rsquo;auto-rimozione dei partecipanti, gli eventi privati, la ricorrenza e la programmazione decentralizzata degli appuntamenti.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="amethyst-v1110-calendari-split-di-zap-onchain-e-risposte-marmot">Amethyst v1.11.0: calendari, split di zap onchain e risposte Marmot&lt;/h3>
&lt;p>Amethyst, il client Nostr per Android manutenuto da Vitor Pamplona, ha rilasciato &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">v1.11.0&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2994">PR #2994&lt;/a> aggiunge un&amp;rsquo;implementazione di eventi di calendario &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> con una UI dedicata e un sistema di promemoria, così gli eventi di calendario sono ora resi nella propria categoria di timeline, separata dalla vista generica di kind-30023 long-form. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3018">PR #3018&lt;/a> estende gli zap Bitcoin onchain con il supporto agli split, distribuendo una singola transazione Bitcoin fra più destinatari secondo il tag zap-split esistente, così un pagamento onchain si comporta come uno split Lightning. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a> aggiunge una schermata paginata di cronologia delle transazioni onchain che mostra ciascuno zap regolato con lo stato di conferma del blocco.&lt;/p>
&lt;p>La messaggistica di gruppo guadagna parità con la chat uno-a-uno: &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2995">PR #2995&lt;/a> aggiunge il supporto alle risposte per i messaggi di gruppo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>/MLS, così i thread all&amp;rsquo;interno di gruppi cifrati sono ora resi con la stessa UI di riferimento genitore delle note pubbliche. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2984">PR #2984&lt;/a> rafforza la validazione delle ricevute zap &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> controllando che il provider LNURL corrisponda al lud16 dichiarato del destinatario, chiudendo una classe di falsificazione in cui un LNURL di terze parti poteva emettere una ricevuta per un pagamento mai avvenuto. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2968">PR #2968&lt;/a> accetta dimensioni floating-point nei tag &lt;code>imeta&lt;/code> &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a>, allineando Amethyst con i client che pubblicano valori di densità pixel frazionari da dispositivi come il display Retina dell&amp;rsquo;iPhone. La release collega anche i Payment Targets, un nuovo tip jar multi-rail su evento replaceable trattato nella sezione protocollo più sotto.&lt;/p>
&lt;h3 id="white-noise-v2026522-push-ios-ux-di-block-e-aggiunta-membri">White Noise v2026.5.22: push iOS, UX di block e aggiunta membri&lt;/h3>
&lt;p>White Noise, il messenger di gruppo protocollo Marmot, ha rilasciato &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">v2026.5.22&lt;/a> con le notifiche push iOS come funzionalità principale. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/673">PR #673&lt;/a> implementa una Notification Service Extension (NSE) iOS che decifra i messaggi MLS all&amp;rsquo;interno del processo dell&amp;rsquo;extension e li presenta come notifiche di sistema, così gli utenti iPhone non hanno più bisogno che l&amp;rsquo;app sia in foreground per ricevere messaggi. Il plumbing dei token push Android passa attraverso la stessa pipeline backend, con la NSE per-piattaforma che tiene il ciphertext fuori dal broker.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/676">PR #676&lt;/a> aggiunge una UX completa di block e unblock con flussi di conferma e filtraggio della lista contatti. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/679">PR #679&lt;/a> aggiunge il pulsante &amp;ldquo;Aggiungi membri&amp;rdquo; richiesto da tempo alla schermata di info del gruppo, chiudendo un gap UX in cui gli admin del gruppo dovevano ricadere sui share link. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/688">PR #688&lt;/a> introduce una schermata di impostazioni notifiche iOS dedicata, e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/687">PR #687&lt;/a> collega la condivisione tramite long-press per media e messaggi.&lt;/p>
&lt;h3 id="mdk-aggiunge-i-messaggi-a-scomparsa-nip-40-su-tutte-le-piattaforme">MDK aggiunge i messaggi a scomparsa NIP-40 su tutte le piattaforme&lt;/h3>
&lt;p>Il Marmot Development Kit, il core Rust condiviso usato da White Noise iOS, White Noise Android e qualunque futuro client Marmot, ha mergiato &lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a> per esporre la validazione di messaggi a scomparsa e la gestione della scadenza &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a> tramite il bridge UniFFI. La PR è la seconda di una serie in tre parti. iOS e Android ora condividono un&amp;rsquo;unica implementazione Rust della logica di scadenza; le regole di timing vivono in un singolo percorso di codice auditato consumato da entrambe le piattaforme via UniFFI. &lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a> limita la lunghezza memorizzata delle ragioni di fallimento welcome e le sanifica prima della persistenza, un passaggio di hardening separato che complementa la gestione degli eventi welcome rilasciata la scorsa settimana.&lt;/p>
&lt;p>I messaggi a scomparsa in MLS non sono solo una comodità UI. Il tag di scadenza è pubblicato con l&amp;rsquo;inviluppo del messaggio cifrato, così un destinatario che non apre mai il messaggio ha comunque il ciphertext sottostante che scade a livello relay insieme a qualunque copia in cache nel client ricevente. Con MDK che possiede il percorso di validazione, il comportamento resta consistente fra i client: qualunque implementazione Marmot conforme forza la stessa semantica di scadenza, così un client che rispetta la scadenza mentre un altro fa cache per sempre cessa di essere un rischio di portabilità.&lt;/p>
&lt;h3 id="mostro-v0174-la-fase-3-chiude-il-ciclo-del-bond-slashato">Mostro v0.17.4: la Fase 3 chiude il ciclo del bond slashato&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, il protocollo di exchange Bitcoin peer-to-peer costruito su Nostr, ha rilasciato la Fase 3 del suo rollout di bond anti-abuso in &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.4">v0.17.4&lt;/a>. &lt;a href="https://github.com/MostroP2P/mostro/pull/738">PR #738&lt;/a> porta il flusso di payout per i bond slashati, prendendo il collaterale confiscato al perdente e distribuendolo al vincitore della disputa. &lt;a href="https://github.com/MostroP2P/mostro/pull/743">PR #743&lt;/a> aggiunge la Fase 3.5, un messaggio esplicito di conferma di payout al vincitore così che sappia che i sats slashati sono stati regolati, con l&amp;rsquo;evento di conferma che arriva sulla stessa sessione Nostr della risoluzione della disputa. La Fase 2, trattata la scorsa settimana, ha introdotto lo slashing come azione admin; la Fase 3 è la differenza fra minacciare una penalità e farla rispettare.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/746">PR #746&lt;/a> consente al daemon di finalizzare dispute che non hanno una riga solver, un caso limite che precedentemente bloccava la risoluzione su dispute legacy. &lt;a href="https://github.com/MostroP2P/mostro/pull/748">PR #748&lt;/a> tollera rate null nella risposta &lt;code>/exrates/BTC&lt;/code> di Yadio così un breve outage di Yadio non rompe più il percorso di conversione fiat di Mostro. &lt;a href="https://github.com/MostroP2P/mostro/pull/745">PR #745&lt;/a> documenta la spec per provider di prezzo multi-sorgente, il fondamento per rimuovere Yadio come single point of failure. Il client mobile Mostro ha collegato il corrispondente percorso di claim di Fase 3 in &lt;a href="https://github.com/MostroP2P/mobile/pull/596">PR #596&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-v610-lookup-relay-e-git-cast-nip-34">Applesauce v6.1.0: lookup relay e git cast NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>, il toolkit Nostr modulare che alimenta Coracle, noStrudel e lo stack di Pablo F7z, ha rilasciato &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.1.0">v6.1.0&lt;/a> attraverso i suoi pacchetti. La release aggiunge il supporto nativo alle liste di lookup relay &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>: gli eventi di kind 10086 permettono a un utente di segnalare &amp;ldquo;chiedi a questi relay se vuoi trovarmi&amp;rdquo;, accanto alle liste outbox &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> come primitiva di scoperta. Le applicazioni costruite su &lt;code>applesauce-core&lt;/code> ottengono un observable reattivo &lt;code>User.lookupRelays$&lt;/code> e un loader corrispondente in &lt;code>applesauce-relay&lt;/code>.&lt;/p>
&lt;p>Le factory di git-cast &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> arrivano in &lt;code>applesauce-factory&lt;/code>, dando a ogni client basato su Applesauce un percorso di una riga per pubblicare annunci di repo (kind 30617), patch (kind 1617) e issue (kind 1621). Le proprietà reattive &lt;code>User.favoriteGitRepos$&lt;/code>, &lt;code>User.gitAuthors$&lt;/code> e &lt;code>User.graspServers$&lt;/code> consentono alle applicazioni di elencare repo seguiti da un utente, manutentori di repo e server GRASP configurati direttamente dallo stesso oggetto User. La release corregge anche i metodi manuali del pool che scartavano silenziosamente i relay offline in &lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a>.&lt;/p>
&lt;h3 id="notedeck-mergia-il-negentropy-nip-77-per-giftwrap-e-backfill-dei-thread">Notedeck mergia il negentropy NIP-77 per giftwrap e backfill dei thread&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop multi-colonna nativo di Damus, ha mergiato &lt;a href="https://github.com/damus-io/notedeck/pull/1459">PR #1459&lt;/a> il 25 maggio per collegare la piena riconciliazione negentropy &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a> nel percorso outbox condiviso. La PR aggiunge frame client e relay NIP-77, sessioni negentropy locali del relay e un tracker di storia completa outbox che pilota la riconciliazione dei set locali e il fetch di eventi mancanti. I giftwrap di messaggi ottengono la riconciliazione negentropy così gli inviluppi di messaggi privati possono essere recuperati dai relay di lettura dell&amp;rsquo;account selezionato. Le viste dei thread non sono più limitate dal limite di risposte della sottoscrizione live. Dave PNS sostituisce la sua implementazione negentropy locale a Dave con il percorso outbox condiviso preservando il suo comportamento esistente di storia limitata.&lt;/p>
&lt;p>Le sottoscrizioni live e negentropy usano ora filtri separati. Un flusso può mantenere una piccola richiesta live emettendo al contempo un filtro negentropy più ampio per riconciliare ciò che il relay ha già. La PR non abilita intenzionalmente la sync negentropy ampia per home o timeline di profilo, che cambierebbe le caratteristiche di costo a cold-start. La copertura di test è stata aggiunta per riconciliazione, consegna di giftwrap, backfill dei thread, ripristino di Dave PNS, cambio account, retargeting dei relay, retry di fetch e comportamento relay NIP-77.&lt;/p>
&lt;h3 id="vector-v040-rewrite-di-vector-core-tor-nip-46-mls-full-negentropy-e-una-superficie-di-agente-mcp">Vector v0.4.0: rewrite di vector-core, Tor, NIP-46, MLS full-negentropy e una superficie di agente MCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, il messenger cross-platform focalizzato sulla privacy costruito su DM NIP-17 e gruppi Marmot, ha rilasciato &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">v0.4.0&lt;/a>. La novità è un rewrite dell&amp;rsquo;engine da zero: tutta la logica di Vector vive ora in un singolo crate disaccoppiato, &lt;code>vector-core&lt;/code>, condiviso fra desktop, Android e qualunque futuro client, con oltre 440 test nel core stesso e la shell dell&amp;rsquo;applicazione ridotta di migliaia di righe. Il rewrite è la base per una CLI Vector, bot e SDK che pilotano lo stesso codice di protocollo della GUI.&lt;/p>
&lt;p>L&amp;rsquo;integrazione Tor è rilasciata con routing del traffico one-click e supporto ai bridge per il bypass della censura. Il supporto multi-account arriva con uno switcher in-app. Il login con remote signer arriva tramite &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> con pairing bunker via QR o URI incollato, così gli utenti possono accedere senza mai esporre il proprio nsec. Delete-for-everyone funziona sia nei DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> sia nelle chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, con Vector che mantiene la chiave di firma effimera come divergenza dalla spec deliberata che le note di release evidenziano esplicitamente: &amp;ldquo;una diversione dalle spec tradizionali NIP-17/Marmot per controlli di privacy utente potenziati&amp;rdquo;. La chiave effimera trattenuta dà ai client Vector una prova locale che un&amp;rsquo;eliminazione è stata sanzionata dal mittente originale, ma significa anche che qualunque altro client che tocca Vector vede una superficie di verificabilità dell&amp;rsquo;eliminazione diversa dai client NIP-17/Marmot baseline.&lt;/p>
&lt;p>La sincronizzazione dei gruppi MLS è ora completamente riconciliata su negentropy &lt;a href="https://nostrcompass.org/it/topics/nip-77/">NIP-77&lt;/a>, la stessa direzione che Notedeck ha preso per giftwrap e thread questa settimana. L&amp;rsquo;uploader Blossom fa failover su più server, impara le capability di ciascun server e sincronizza la lista dei server fra i dispositivi. I pacchetti di emoji custom sono creabili dall&amp;rsquo;utente, condivisibili e cross-compatibili con altri client Nostr. La memoria SQLite è scesa da circa 308MB a 5MB. Il pannello emoji si apre dalla cache su disco e gli shortcode stile Discord (&lt;code>:smile:&lt;/code>) più il ranking di frequenza Unicode mostrano il glifo giusto per primo.&lt;/p>
&lt;p>L&amp;rsquo;aggiunta più originale è &lt;code>vector-agent&lt;/code>, un server MCP (Model Context Protocol) che espone 21 tool così gli agenti AI possono pilotare Vector: inviare DM, gestire gruppi, caricare file, modificare profili. Questo è il secondo progetto Nostr questa settimana (insieme a Shopstr) a rilasciare una superficie MCP, e la prima applicazione di classe messenger a farlo. Combinato con AgentNoise (trattato la scorsa settimana), il pattern di client Nostr controllati da agenti si muove da esperimenti isolati a una direzione di piattaforma deliberata.&lt;/p>
&lt;h3 id="cordn-appare-come-messenger-mls-mediato-da-coordinator">Cordn appare come messenger MLS mediato da coordinator&lt;/h3>
&lt;p>&lt;a href="https://cordn.net">Cordn&lt;/a> (client web a &lt;a href="https://cordn.net">cordn.net&lt;/a>, repo a &lt;a href="https://github.com/Cordn-msg/cordn">Cordn-msg/cordn&lt;/a> e &lt;a href="https://github.com/Cordn-msg/cordn-web">Cordn-msg/cordn-web&lt;/a>) è un nuovo messenger MLS che prende una direzione architetturale diversa da Marmot. Dove &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> è completamente basato su relay senza un coordinator privilegiato (ogni membro del gruppo scrive direttamente ai relay e qualunque relay conforme può trasportare il traffico), Cordn introduce un ruolo di coordinator per-gruppo implementato come un servizio &lt;a href="https://nostrcompass.org/it/topics/contextvm/">ContextVM&lt;/a>. Il coordinator ordina i commit MLS e gestisce la distribuzione dei welcome.&lt;/p>
&lt;p>L&amp;rsquo;argomento di Cordn, dichiarato sulla sua pagina &lt;a href="https://cordn.net/why">/why&lt;/a>, è che MLS come deployato nei messenger di produzione &amp;ldquo;non è coordination-free&amp;rdquo; e che &amp;ldquo;la disseminazione pubblica debolmente ordinata&amp;rdquo; rende la convergenza dello stato di gruppo &amp;ldquo;molto più difficile&amp;rdquo; senza un punto di coordinamento forte. Un design mediato da coordinator fornisce avanzamento predicibile delle epoch e una risoluzione più semplice dei commit concorrenti. I partecipanti si connettono al coordinator usando chiavi effimere, così il coordinator apprende l&amp;rsquo;ID del gruppo e il timing del traffico di commit ma non quali pubkey a lungo termine sono membri. Qualunque parte che interroghi i relay per un gruppo Marmot può già vedere la stessa superficie: attività del gruppo per ID di gruppo, con il timing inferibile dall&amp;rsquo;arrivo degli eventi. Cordn riconosce anche che &amp;ldquo;la fiducia di disponibilità resta&amp;rdquo; con il self-hosting: un coordinator self-hosted evita la preoccupazione di centralizzazione a livello operatore ma introduce un single point of failure per la vivacità del gruppo. Marmot evita quel single point lasciando l&amp;rsquo;ordinamento a MLS stesso (le epoch e i messaggi Commit gestiscono l&amp;rsquo;ordinamento all&amp;rsquo;interno del protocollo) e distribuendo eventi Welcome via gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, al costo della disciplina lato admin: gli admin devono aspettare l&amp;rsquo;acknowledgement del relay di un Commit prima di inviare il Welcome corrispondente, e i client devono riconciliare commit concorrenti quando la consegna del relay va in gara con una transizione di stato.&lt;/p>
&lt;p>Il contrasto merita di essere approfondito da qualunque team che scelga uno stack di messaggistica privata. Marmot scambia una certa complessità implementativa per un deployment agnostico ai relay senza attori privilegiati nel percorso. Cordn scambia una dipendenza di disponibilità a punto singolo per un ordinamento più stretto e un modello operativo più semplice. Entrambi i progetti si basano su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> e usano Nostr come livello di identità e trasporto. Il disaccordo è su dove viva il costo del coordinamento. I repo cordn-msg mostrano una cadenza di commit stabile con il servizio coordinator implementato su ContextVM e il livello MLS costruito su &lt;code>ts-mls&lt;/code>.&lt;/p>
&lt;h3 id="deepmarks-bookmark-nip-b0-con-pubblicazione-monetizzata-dai-curatori">deepmarks: bookmark NIP-B0 con pubblicazione monetizzata dai curatori&lt;/h3>
&lt;p>&lt;a href="https://github.com/ostermayer/deepmarks-public">deepmarks-public&lt;/a> è un client di riferimento per la spec di bookmark proposta &lt;a href="https://nostrcompass.org/it/topics/nip-b0/">NIP-B0&lt;/a> (kind 39701), con un&amp;rsquo;architettura a tre riquadri (curatore, indicizzatore, viewer) e un sistema di tier finanziato da zap &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> diretti al curatore. Il client implementa NIP-B0, &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, NIP-57, &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e Blossom BUD-01 e BUD-04 per lo storage file. Un tier lifetime da 21.000 sat converte lettori paganti in destinatari ricorrenti di zap per il curatore. Il curatore pubblica gli eventi bookmark, l&amp;rsquo;indicizzatore li arricchisce con metadati leggibili dalla macchina e il viewer rende il feed; ciascun ruolo è un servizio deployabile separato.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="amber-v610-ga-backup-cifrato-per-account">Amber v6.1.0 GA: backup cifrato per-account&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong> è passato da &lt;code>v6.1.0-pre3&lt;/code> alla GA &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0">v6.1.0&lt;/a> questa settimana. &lt;a href="https://github.com/greenart7c3/Amber/pull/444">PR #444&lt;/a> rilascia il backup e ripristino cifrati per il database dei permessi dell&amp;rsquo;applicazione, e &lt;a href="https://github.com/greenart7c3/Amber/pull/446">PR #446&lt;/a> divide il backup per account, così gli utenti con più identità Nostr possono fare backup e ripristino di ogni set di grant di app indipendentemente. Il lavoro sulla firma PSBT trattato la scorsa settimana è nel taglio GA.&lt;/p>
&lt;h3 id="citrine-sottoscrizioni-per-relay-e-prevenzione-di-leak-di-url-onion">Citrine: sottoscrizioni per-relay e prevenzione di leak di URL onion&lt;/h3>
&lt;p>&lt;strong>Citrine&lt;/strong>, il personal relay on-device che viene rilasciato con Amethyst, ha rilasciato due correzioni in questo ciclo. &lt;a href="https://github.com/greenart7c3/Citrine/pull/157">PR #157&lt;/a> passa da una singola sottoscrizione globale a sottoscrizioni per-relay taggate, così due relay sorgente che condividono un filtro &lt;code>kinds: [1]&lt;/code> non collidono più sul lato aggregatore. &lt;a href="https://github.com/greenart7c3/Citrine/pull/162">PR #162&lt;/a> filtra gli URL di relay onion quando il proxy Tor in uscita è disabilitato, impedendo che gli indirizzi onion trapelino nel percorso di routing clearnet.&lt;/p>
&lt;h3 id="angor-v0227-e-v0228-affidabilità-dei-relay-e-riconnessione-boltz">Angor v0.2.27 e v0.2.28: affidabilità dei relay e riconnessione Boltz&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong> ha rilasciato &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.27">v0.2.27&lt;/a> e &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.28">v0.2.28&lt;/a>. &lt;a href="https://github.com/block-core/angor/pull/874">PR #874&lt;/a> corregge un bug di deduplicazione dei relay in cui solo un relay era connesso alla volta, una regressione che degradava silenziosamente l&amp;rsquo;affidabilità per i progetti con più endpoint relay. &lt;a href="https://github.com/block-core/angor/pull/876">PR #876&lt;/a> aggiunge logica di riconnessione WebSocket per il monitoraggio degli swap sottomarini Boltz, così una breve disconnessione non lascia più uno swap in uno stato sconosciuto.&lt;/p>
&lt;h3 id="nostrord-v110-zap-nip-57-e-distinzione-dei-ruoli-nip-29">Nostrord v1.1.0: zap NIP-57 e distinzione dei ruoli NIP-29&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong> ha rilasciato &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.1.0">v1.1.0&lt;/a> con supporto agli zap Lightning &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> per messaggi e profili (&lt;a href="https://github.com/nostrord/nostrord/pull/98">PR #98&lt;/a>) e una distinzione corretta nel feed di attività fra cambi di ruolo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> e aggiunte di membri (&lt;a href="https://github.com/nostrord/nostrord/pull/92">PR #92&lt;/a>), che prima si rendevano in modo identico e oscuravano chi era stato promosso rispetto a chi era stato invitato.&lt;/p>
&lt;h3 id="ぬるぬる-v15x-keystore-mls-sqlcipher-e-catch-up-delle-epoch">ぬるぬる v1.5.x: keystore MLS SQLCipher e catch-up delle epoch&lt;/h3>
&lt;p>&lt;strong>ぬるぬる&lt;/strong> (nurunuru, di tami1A84), un client Nostr in lingua giapponese che implementa la messaggistica di gruppo MLS (kind 443) insieme a NIP-44, ricerca avanzata NIP-50, NIP-55 e NIP-70, ha rilasciato cinque release questa settimana. &lt;a href="https://github.com/tami1A84/null--nostr/pull/184">PR #184&lt;/a> introduce la cifratura SQLCipher per il keystore MLS nel layer rust-engine. &lt;a href="https://github.com/tami1A84/null--nostr/pull/187">PR #187&lt;/a> e &lt;a href="https://github.com/tami1A84/null--nostr/pull/188">PR #188&lt;/a> estendono SQLCipher rispettivamente ad Android e iOS, con un passaggio di purga legacy-plaintext e guardie CI. &lt;a href="https://github.com/tami1A84/null--nostr/pull/189">PR #189&lt;/a> e &lt;a href="https://github.com/tami1A84/null--nostr/pull/191">PR #191&lt;/a> aggiungono il catch-up delle epoch peer MLS con una replay cache e un banner di recovery su entrambe le piattaforme, così un client che resta indietro sui commit di gruppo può recuperare senza perdere la conversazione. ぬるぬる è un client Marmot costruito su &lt;code>mdk-core&lt;/code>, &lt;code>mdk-sqlite-storage&lt;/code> e &lt;code>mdk-storage-traits&lt;/code> da &lt;code>marmot-protocol/mdk&lt;/code>, così il lavoro su SQLCipher e catch-up delle epoch atterra dentro lo stesso runtime MDK che White Noise usa.&lt;/p>
&lt;h3 id="bitcredit-core-v0510-correzione-della-propagazione-di-blocchi-con-radice-nostr">Bitcredit Core v0.5.10: correzione della propagazione di blocchi con radice Nostr&lt;/h3>
&lt;p>&lt;strong>Bitcredit Core&lt;/strong> ha rilasciato &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.10">v0.5.10&lt;/a> con una correzione per un campo Nostr-node-id mancante durante la propagazione dei blocchi, che rompeva i flussi di creazione azienda che includevano l&amp;rsquo;upload dell&amp;rsquo;identità. Bitcredit è un protocollo di e-bill che usa identità Nostr come radice di fiducia per gli eventi di propagazione di aziende e bill.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;p>&lt;strong>Jumble&lt;/strong> ha aperto &lt;a href="https://github.com/CodyTseng/jumble/pull/797">PR #797&lt;/a> per il login Google tramite il threshold signer Pomegranate, consentendo a un utente di dividere la propria chiave Nostr fra più parti così nessun singolo signer detiene l&amp;rsquo;intero segreto. Questo è un passo significativo oltre i flussi bunker o import di nsec: un utente può recuperare il proprio account anche se una parte signer è compromessa, senza che quella parte detenga mai la chiave privata completa.&lt;/p>
&lt;p>&lt;strong>Shopstr&lt;/strong> ha aperto &lt;a href="https://github.com/shopstr-eng/shopstr/pull/492">PR #492&lt;/a> inizializzando un server MCP (Model Context Protocol), con &lt;a href="https://github.com/shopstr-eng/shopstr/pull/494">PR #494&lt;/a> che costruisce l&amp;rsquo;infrastruttura di supporto (fetch dei relay, parser, validazione, errori, deduplicazione, audit logging) e &lt;a href="https://github.com/shopstr-eng/shopstr/pull/472">PR #472&lt;/a> che aggiunge una allowlist di relay per il gestore di relay MCP. Ciò rende Shopstr il primo marketplace Nostr a esporre se stesso come server MCP, così gli agenti AI possono navigare e agire su annunci NIP-99 come uno strumento strutturato.&lt;/p>
&lt;p>&lt;strong>Keydex&lt;/strong>, il vault di secret-sharing Shamir, ha aperto una migrazione sostanziale in &lt;a href="https://github.com/mplorentz/keydex/pull/226">PR #226&lt;/a> spostando i kind custom 1337-1345 nella gamma 713-721, insieme a &lt;a href="https://github.com/mplorentz/keydex/pull/239">PR #239&lt;/a> che aggiunge AEAD sopra le share Shamir e &lt;a href="https://github.com/mplorentz/keydex/pull/234">PR #234&lt;/a> che migra all&amp;rsquo;aritmetica GF256. La migrazione della gamma di kind allinea Keydex con il modo in cui il repo NIPs alloca i kind custom, allontanandosi da una gamma auto-reclamata.&lt;/p>
&lt;p>&lt;strong>Mill&lt;/strong> (&lt;a href="https://github.com/0ceanSlim/nostr-mill">nostr-mill&lt;/a>) è una nuova UI di signer Nostr drop-in di &lt;a href="https://github.com/0ceanSlim">OceanSlim&lt;/a> (manutentore del relay Go &lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>), rilasciata come Web Component a singolo script-tag su &lt;a href="https://www.npmjs.com/package/nostr-mill">npm&lt;/a> e &lt;a href="https://cdn.jsdelivr.net/npm/nostr-mill/dist/mill.umd.js">jsDelivr&lt;/a>. Un tag &lt;code>&amp;lt;script&amp;gt;&lt;/code> dà a un&amp;rsquo;app web tutti e sei i punti di ingresso comuni del signer dietro una UI unificata: estensione browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>, bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (URL incollato o pairing QR con relay specificabili dall&amp;rsquo;utente, insolito fra le integrazioni bunker in-pagina), Amber &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> via Android intent, nsec cifrato memorizzato in &lt;code>sessionStorage&lt;/code> via AES-256-GCM con PBKDF2, &lt;code>npub&lt;/code> read-only e generazione di keypair nel browser. Il componente è personalizzabile tramite 29 proprietà CSS custom collegate allo Shadow DOM ed espone una piccola API tracciata SemVer (&lt;code>MILL.open&lt;/code>, eventi &lt;code>mill:connected&lt;/code> / &lt;code>mill:disconnected&lt;/code>, esportazioni di tema con nome). La motivazione del manutentore è che i flussi di login bunker sono stati re-implementati un&amp;rsquo;app web alla volta attraverso Nostr. Consolidare su un componente condiviso consente ai client di convergere su come la UX del signer dovrebbe comportarsi, e trasforma flussi opzionali (come il login con chiave delegata tramite threshold signer, che rispecchia il login Google basato su Pomegranate di Wisp trattato sopra) in una superficie riutilizzabile che qualunque app può inserire. Mill è a npm v1.5.0, single-maintainer, stadio alpha, con grain come primo integratore pianificato.&lt;/p>
&lt;p>&lt;strong>moStard&lt;/strong>, un fork Monero-first di &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> di &lt;a href="https://github.com/roguehashrate">roguehashrate&lt;/a>, ha raggiunto &lt;a href="https://github.com/roguehashrate/moStard/releases">v1.0.1&lt;/a> questa settimana con un set di funzionalità ridotto e un&amp;rsquo;identità a tema Monero stratificata sullo stesso stack Applesauce + worker-relay. Il lavoro di questa settimana ha portato il rendering per gli eventi software-application di kind 32267 di Zapstore (embed card nella timeline che mostrano nome dell&amp;rsquo;app, icona, screenshot, piattaforma, licenza e un link di lancio a &lt;code>zapstore.dev/apps/&amp;lt;d-tag&amp;gt;&lt;/code>), sondaggi via kind 20 e kind 21, tipping basato su NIP-A3 Payment Targets con QR code per metodo, rendering markdown nelle note, supporto del picker GIF per tastiere GIF esterne e correzioni al pairing del signer Amber. L&amp;rsquo;inquadratura Monero si estende al flusso di tip: le voci &lt;code>payto&lt;/code> NIP-A3 per indirizzi &lt;code>monero&lt;/code> ottengono pulsanti di prima classe nella stessa UI insieme a &lt;code>lightning&lt;/code> e &lt;code>bitcoin&lt;/code>. Il client è single-maintainer e in fase alpha, ma il lavoro del 27 maggio mostra un builder che tira NIP-A3 dagli annunci di spec di protocollo di questa settimana direttamente in un fork rilasciato entro pochi giorni.&lt;/p>
&lt;h2 id="aggiornamenti-nip-e-lavoro-di-spec-di-protocollo">Aggiornamenti NIP e lavoro di spec di protocollo&lt;/h2>
&lt;h3 id="stack-nip-calendario-quattro-proposte-dal-team-formstr">Stack NIP calendario: quattro proposte dal team Formstr&lt;/h3>
&lt;p>Ix2 (&lt;a href="https://github.com/geralt-debugs">@geralt-debugs&lt;/a>) ha aperto quattro PR NIP coordinate il 17 maggio, tutte riferendosi all&amp;rsquo;implementazione &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> già rilasciata sotto lo stesso autore. &lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a> propone il kind 84 come un evento generalizzato di &amp;ldquo;auto-rimozione partecipante&amp;rdquo;: un partecipante taggato su qualunque evento può pubblicare un kind 84 che fa riferimento all&amp;rsquo;originale via tag &lt;code>e&lt;/code>, &lt;code>a&lt;/code> e &lt;code>k&lt;/code> per segnalare opt-out. I relay devono validare che il firmatario del kind 84 appaia in un tag &lt;code>p&lt;/code> dell&amp;rsquo;evento di riferimento prima di onorare la rimozione, e un&amp;rsquo;eliminazione di kind 5 ha sempre precedenza. La PR generalizza un pattern che era precedentemente descritto solo dentro il contesto calendario NIP-52, così il kind 84 diventa il modo standard per i non-autori di ritirarsi da qualunque evento partecipante.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> è il fondamento dello stack calendario: NIP-52E per eventi di calendario privati (kind 32678 basato sul tempo, 32681 evento giornaliero, 32123 lista calendario privata, 31926 lista busy, 1052 gift wrap, 52 rumor) e NIP-52R per eventi ricorrenti. Al centro architetturale c&amp;rsquo;è il pattern view-key: una keypair generata casualmente cifra il contenuto dell&amp;rsquo;evento con NIP-44, e la metà segreta (codificata bech32 come &lt;code>nsec&lt;/code>) è gift-wrapped a ciascun partecipante. Il firmatario detiene solo il tag &lt;code>d&lt;/code> pubblico; tutto il resto vive nel &lt;code>content&lt;/code> cifrato. Disaccoppiare la cifratura del contenuto dall&amp;rsquo;identità in questo modo significa che modificare un evento non richiede di re-chiavare i destinatari. NIP-52R definisce due tag opzionali sui kind esistenti 31923 e 31922 per dichiarare la ricorrenza usando valori RFC 5545 RRULE nudi, con l&amp;rsquo;indice di giorno &lt;code>D&lt;/code> che diventa opzionale quando RRULE è presente. La forward secrecy è esplicitamente assente: una view key trapelata rivela tutte le versioni passate e future dell&amp;rsquo;evento sotto lo stesso tag &lt;code>d&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a> costruisce su NIP-52E con una spec di programmazione appuntamenti decentralizzata che la descrizione della PR chiama &amp;ldquo;un&amp;rsquo;alternativa drop-in a Calendly/Cal.com senza intermediario centrale&amp;rdquo;. Il kind 31927 pubblicizza una pagina di scheduling con finestre di disponibilità cifrate; il kind 32680 è un record di recovery self-encrypted lato host per la view key; i kind 1057 e 1058 sono la richiesta e la risposta di booking gift-wrapped. Il meccanismo intelligente: il booker genera sia il tag &lt;code>d&lt;/code> sia la view key per il futuro evento privato prima di inviare la richiesta, così il booker può aggiungere l&amp;rsquo;appuntamento al proprio calendario immediatamente con la chiave corretta, e l&amp;rsquo;host non deve mai fare round-trip di una chiave. Le risposte di booking portano un tag &lt;code>status&lt;/code> non cifrato sul wrap esterno così i relay possono filtrare senza decifrare.&lt;/p>
&lt;p>Un&amp;rsquo;implementazione di riferimento è già live a &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> e come app Calendar Android su Zapstore. &lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> chiude &lt;a href="https://github.com/nostr-protocol/nips/pull/2027">PR #2027&lt;/a> a suo favore, consolidando una proposta precedente di calendario privato che era aperta dall&amp;rsquo;inizio dell&amp;rsquo;anno.&lt;/p>
&lt;h3 id="payment-targets-e-silent-payments">Payment Targets e Silent Payments&lt;/h3>
&lt;p>Due proposte NIP in più hanno circolato questa settimana in documenti &lt;code>kind:30023&lt;/code> long-form.&lt;/p>
&lt;p>Una proposta &lt;strong>Payment Targets&lt;/strong> (NIP-A3 / payto) definisce un evento replaceable di kind 10133 che porta uno o più tag &lt;code>[&amp;quot;payto&amp;quot;, &amp;quot;&amp;lt;type&amp;gt;&amp;quot;, &amp;quot;&amp;lt;authority&amp;gt;&amp;quot;]&lt;/code> che mappano a URI &lt;code>payto:&lt;/code> RFC 8905. I tipi supportati includono bitcoin, lightning, ethereum, monero, nano, cashme, revolut e venmo. L&amp;rsquo;intento è standardizzare un tip jar multi-rail che complementi (non sostituisca) gli zap NIP-57 basati su lud16. Amethyst v1.11.0 è il primo implementatore; le PR mergiate &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2953">#2953&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3009">#3009&lt;/a> rilasciano la superficie di sottoscrizione e osservazione, e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3011">PR #3011&lt;/a> collega la UI per &lt;code>PaymentTargetsEvent&lt;/code>.&lt;/p>
&lt;p>Due proposte Silent Payments concorrenti sono arrivate da autori diversi. La prima variante deriva le chiavi scan e spend di silent-payment BIP-352 da &lt;code>nsec&lt;/code> tramite tweak additivi pubblici, così qualunque mittente può costruire un indirizzo &lt;code>sp1q...&lt;/code> da un &lt;code>npub&lt;/code> senza setup. L&amp;rsquo;avvertimento dell&amp;rsquo;autore è esplicito nella spec: &amp;ldquo;bscan e bspend DEVONO essere trattate esattamente con la stessa cura di nsec&amp;rdquo;, perché la chiave di scan rivela l&amp;rsquo;nsec. Una seconda variante prende l&amp;rsquo;approccio inverso, aggiungendo un campo &lt;code>sp_address&lt;/code> ai metadati profilo di kind 0 contenente un indirizzo silent-payment BIP-352 standard le cui chiavi sono tenute indipendenti dall&amp;rsquo;identità Nostr. La variante due è strutturalmente più sicura. Entrambe le proposte hanno attratto un thread di review ponderato; erskingardner (lead di Marmot) ha postato un &lt;a href="https://gist.github.com/trbouma/77648ebe1005b181b67d1c4b42c7f31d?permalink_comment_id=6167489#gistcomment-6167489">commento&lt;/a> dettagliato sul gist trbouma che traccia la proposta. La sua preoccupazione centrale è che la variante 1 deriva la chiave privata di scan da &lt;code>nsec&lt;/code> più un tweak calcolabile pubblicamente, il che significa che chiunque detenga la chiave scan (incluso un servizio di scansione di terze parti a cui l&amp;rsquo;utente deve delegare in pratica) può recuperare il &lt;code>nsec&lt;/code> completo sottraendo quel tweak. La stessa chiave che consente a un servizio remoto di scansionare i pagamenti in arrivo per te consente anche a quel servizio di rubare la tua identità e qualunque fondo derivato da essa.&lt;/p>
&lt;p>Sul lato NIP-34 git-over-Nostr, hzrd149 ha pubblicato 2 patch a &lt;a href="https://gitworkshop.dev/npub1zafcms4xya5ap9zr7xxr0jlrtrattwlesytn2s42030lzu0dwlzqpd26k5/relay.ngit.dev/schemata">schemata&lt;/a>. &lt;a href="https://gitworkshop.dev/">gitworkshop.dev&lt;/a> stesso ha attirato due segnalazioni di issue: una che segnala che le sessioni di login vengono perse al refresh della pagina quando si usa un remote signer NIP-46, l&amp;rsquo;altra che chiede uno styling di link distinto nelle anteprime README.&lt;/p>
&lt;h2 id="sei-anni-di-may-di-nostr">Sei anni di May di Nostr&lt;/h2>
&lt;p>L&amp;rsquo;ultima newsletter di maggio 2026 fa un passo indietro dai rilasci della settimana per attraversare il mese di maggio nella storia di Nostr. Ogni anno ha avuto un baricentro diverso: il 2021 è stato un singolo commit, il 2022 la formazione del repo NIPs stesso, il 2023 l&amp;rsquo;esplosione delle spec di protocollo, il 2024 il ciclo di consolidamento, il 2025 quando il negentropy è stato mergiato e Notedeck di Damus è passato a Beta, e il 2026 è il mese trattato in questo e nei tre numeri precedenti.&lt;/p>
&lt;h3 id="maggio-2021">Maggio 2021&lt;/h3>
&lt;p>Nostr aveva sei mesi. L&amp;rsquo;unico codice Nostr viveva in &lt;a href="https://github.com/fiatjaf/nostr">fiatjaf/nostr&lt;/a> e l&amp;rsquo;intero mese ha prodotto esattamente un commit, ma quel commit è diventato una delle parti più usate del protocollo. Il 22 maggio, fiatjaf ha &lt;a href="https://github.com/fiatjaf/nostr/commit/9ee3a02">ridefinito NIP-02&lt;/a> come il NIP della lista contatti. Il messaggio di commit recita: &amp;ldquo;repurpose NIP-02 and add NIP authorship&amp;rdquo;, e il credito esplicito va alla &lt;a href="https://github.com/nostr-protocol/nostr/pull/16">PR #16&lt;/a> di arcbtc (Ben Arc di LNbits), aperta il 9 febbraio e chiusa il giorno prima che fiatjaf incorporasse l&amp;rsquo;idea in NIP-02. Il pitch di arcbtc era piccolo: un kind per &amp;ldquo;inviare la lista dei follower ai relay&amp;rdquo; che sarebbe stato &amp;ldquo;utile per ripristinare account e raccomandare chiavi pubbliche da seguire&amp;rdquo;. fiatjaf lo ha generalizzato in un singolo evento &lt;code>kind:3&lt;/code> i cui tag servono tre scopi contemporaneamente. Sono una lista di follow (il grafo sociale), uno store di petname (nickname locali per gli amici) e una sorgente di raccomandazione di relay (quali relay usa un follow). Lo stesso evento, replaceable per autore, è diventato la risposta canonica a &amp;ldquo;chi segue questa persona&amp;rdquo;, &amp;ldquo;come li chiama&amp;rdquo; e &amp;ldquo;dove legge&amp;rdquo;. Ogni client costruito nei successivi cinque anni legge &lt;code>kind:3&lt;/code>. La convenzione aggiunta nello stesso commit, che ogni NIP nomini il proprio autore, è la ragione per cui ogni spec ha ora una firma.&lt;/p>
&lt;h3 id="maggio-2022">Maggio 2022&lt;/h3>
&lt;p>Il mese in cui il repo NIPs è diventato un progetto di comunità. Il 1° maggio, fiatjaf ha &lt;a href="https://github.com/nostr-protocol/nips/commit/f25c7e6">migrato le spec&lt;/a> da &lt;code>fiatjaf/nostr&lt;/code> in un repo dedicato &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a> e il 2 maggio ha aggiunto i &lt;a href="https://github.com/nostr-protocol/nips/commit/c053670">criteri formali di accettazione&lt;/a>. Due giorni dopo, Robert C. Martin (Uncle Bob) ha aperto la &lt;a href="https://github.com/nostr-protocol/nips/pull/1">PR #1&lt;/a>, la prima pull request esterna, proponendo convenzioni di threading per i tag &lt;code>e&lt;/code> e &lt;code>p&lt;/code>. La PR era originariamente numerata NIP-13, poi &lt;a href="https://github.com/nostr-protocol/nips/commit/bd4a81a">rinominata NIP-10&lt;/a> per fare spazio a proof-of-work. Tre dei primi sei NIP sono di Uncle Bob: NIP-10 (threading marker), NIP-14 (&lt;a href="https://github.com/nostr-protocol/nips/commit/ebacbcc">il tag Subject&lt;/a>) e il commit del 21 maggio che ha fissato &lt;a href="https://github.com/nostr-protocol/nips/commit/e22ea1a">&lt;code>kind:1&lt;/code> come il kind canonico di short text-note&lt;/a>. Il 5 maggio, William Casarin ha fatto i suoi primi commit NIP: &lt;a href="https://github.com/nostr-protocol/nips/commit/d7a4aad">NIP-13 Proof of Work&lt;/a> e l&amp;rsquo;evento &lt;a href="https://github.com/nostr-protocol/nips/commit/ad1eb96">kind:2 recommend-relay&lt;/a>. Il giorno dopo, fiatjaf ha pubblicato &lt;a href="https://github.com/nostr-protocol/nips/commit/37eb53e">NIP-07 &lt;code>window.nostr&lt;/code>&lt;/a>, venti righe di markdown che hanno definito l&amp;rsquo;interfaccia signer browser-extension ancora usata oggi. L&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/commit/57b86d2">avvertimento CORS&lt;/a> di NIP-05 di David A. Harding e il &lt;a href="https://github.com/nostr-protocol/nips/commit/a4aea53">&lt;code>filter.limit&lt;/code>&lt;/a> di NIP-01 sono arrivati la stessa settimana. nostr-tools ha rilasciato la sua &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/dc489bf">prima build ESM importabile in browser&lt;/a> l'8 maggio. Semisol ha redatto &lt;a href="https://github.com/nostr-protocol/nips/commit/a787093">NIP-15 (End Of Stored Events)&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/commit/62fde6c">NIP-16 (event kind ranges)&lt;/a> a fine mese, i documenti che ancora governano la semantica di sync dei relay e la classificazione regular-vs-replaceable-vs-ephemeral.&lt;/p>
&lt;h3 id="maggio-2023">Maggio 2023&lt;/h3>
&lt;p>L&amp;rsquo;esplosione di spec di protocollo. Sessantaquattro PR NIP sono state aperte quel mese, con diverse delle proposte che hanno definito la superficie di Nostr per i due anni successivi che sono tutte arrivate in 31 giorni, e il più grande annuncio di finanziamento che Nostr avesse mai ricevuto è arrivato il 4 maggio con il &lt;a href="https://opensats.org/blog/opensats-receives-additional-funding-of-dollar10m-from-startsmall">grant OpenSats da 10 milioni di dollari da parte di #startsmall di Jack Dorsey&lt;/a>, il denaro che ha finanziato ogni ondata di grant Nostr da allora. NIP-47 (Nostr Wallet Connect) è stato &lt;a href="https://github.com/nostr-protocol/nips/pull/406">mergiato il 2 maggio&lt;/a>, portando la spec di wallet-connect di Alby nel protocollo principale. Due giorni dopo Vitor Pamplona ha &lt;a href="https://github.com/nostr-protocol/nips/pull/498">proposto NIP-53 Live Activities&lt;/a> con room di &lt;code>kind:30311&lt;/code> e messaggi di chat di &lt;code>kind:1311&lt;/code>, il fondamento di ogni superficie di livestream Nostr seguita. Pablo Fernandez ha aperto &lt;a href="https://github.com/nostr-protocol/nips/pull/501">NIP-84 Highlights&lt;/a> il 5 maggio e &lt;a href="https://github.com/nostr-protocol/nips/pull/530">NIP-89 Recommended Application Handlers&lt;/a> il 14 maggio. v0l (Kieran Babich, autore di Snort) ha proposto &lt;a href="https://github.com/nostr-protocol/nips/commit/29f26e7">NIP-98 HTTP Auth&lt;/a> l'8 maggio, la primitiva di autenticazione da cui NIP-96 e Blossom hanno entrambi in seguito dipeso. Jonathan Staab ha proposto &lt;a href="https://github.com/nostr-protocol/nips/pull/532">NIP-32 Labels&lt;/a> il 15 maggio, e &lt;a href="https://github.com/nostr-protocol/nips/pull/484">NIP-30 Custom Emoji&lt;/a> è stato mergiato lo stesso giorno. Arthur Franca ha proposto &lt;a href="https://github.com/nostr-protocol/nips/pull/547">NIP-96 HTTP File Storage Integration&lt;/a> il 21 maggio. Due giorni dopo, Vitor ha aggiunto gli &lt;a href="https://github.com/nostr-protocol/nips/commit/e4937be">zap split a NIP-57&lt;/a> e verbiricha ha aggiunto le &lt;a href="https://github.com/nostr-protocol/nips/commit/0495931">bozze long-form &lt;code>kind:30024&lt;/code> a NIP-23&lt;/a>, la spec che è diventata il fondamento dei moderni workflow di scrittura long-form Nostr in Habla, YakiHonne e Highlighter. fiatjaf ha proposto &lt;a href="https://github.com/nostr-protocol/nips/pull/566">NIP-29 Simple Groups&lt;/a> il 28 maggio, la prima spec di gruppo gestita dal relay che copre gli eventi di moderazione da &lt;code>kind:9000&lt;/code> a &lt;code>kind:9020&lt;/code>. Il mese si è chiuso con Paul Miller che apriva &lt;a href="https://github.com/nostr-protocol/nips/pull/574">la conversazione NIP-44&lt;/a> il 31 maggio, un design di DM cifrato basato su XChaCha20 destinato a sostituire NIP-04. Il lato client si è mosso altrettanto rapidamente: Damus ha rilasciato NWC, zap pool e Pending Zap fra &lt;a href="https://github.com/damus-io/damus/commits/master/?since=2023-05-10&amp;amp;until=2023-05-15">il 10 e il 15 maggio&lt;/a>; Snort ha lanciato &lt;a href="https://github.com/v0l/snort/commit/6cbc3ae">zap pool&lt;/a> e &lt;a href="https://github.com/v0l/snort/commit/d5032d6">media a paywall L402&lt;/a>; &lt;a href="https://github.com/vitorpamplona/amethyst/releases">Amethyst&lt;/a> ha rilasciato circa trenta release versionate nel corso del mese, da v0.40.1 il 1° maggio fino alla gamma v0.55.x a fine mese, con zap split in v0.45.0 ed etichette NIP-32 in v0.46.0; il &lt;a href="https://github.com/PrimalHQ/primal-android-app/commit/6654cf9">repo Primal Android&lt;/a> è stato creato il 16 maggio; &lt;a href="https://github.com/rust-nostr/nostr/releases/tag/v0.22.0">rust-nostr v0.22.0&lt;/a> ha aggiunto NIP-47 e NIP-58. Il 1° maggio, &lt;a href="https://github.com/hoytech/strfry/commit/de475c5">strfry ha rilasciato la sua integrazione negentropy&lt;/a>, la prima implementazione relay del protocollo di riconciliazione dei set di Doug Hoyte che sarebbe più tardi diventato NIP-77. Il mese si è chiuso con &lt;a href="https://www.forbes.com/sites/digital-assets/2023/05/30/bitcoin-social-network-nostr-creator-fiatjaf-/">Forbes che pubblicava un profilo long-form di fiatjaf il 30 maggio&lt;/a>, uno dei primi approfondimenti della stampa mainstream sul fondatore anonimo di Nostr.&lt;/p>
&lt;h3 id="maggio-2024">Maggio 2024&lt;/h3>
&lt;p>Il ciclo di consolidamento. Meno proposte appariscenti, più cose in rilascio. &lt;a href="https://github.com/nostr-protocol/nips/pull/787">NIP-54 Decentralized Wikis&lt;/a> è stato mergiato il 2 maggio con articoli &lt;code>kind:30818&lt;/code> e tag &lt;code>d&lt;/code> normalizzati per case. Tre giorni dopo, &lt;a href="https://github.com/nostr-protocol/nips/pull/1213">NIP-56&lt;/a> è stato esteso così le abuse report potessero segnalare minacce digitali (malware, phishing) accanto alle categorie solo contenuto. Il 6 maggio, &lt;a href="https://github.com/nostr-protocol/nips/pull/1221">le reazioni NIP-25 sono state semplificate&lt;/a> per smettere di includere l&amp;rsquo;intero thread di risposta come tag &lt;code>e&lt;/code>. Arthur Franca ha &lt;a href="https://github.com/nostr-protocol/nips/pull/1233">proposto NIP-22 Comment&lt;/a> il 12 maggio, introducendo &lt;code>kind:1111&lt;/code> così le risposte a eventi non-&lt;code>kind:1&lt;/code> (articoli, file, prodotti) ottenessero un modo strutturato per fare thread. Il 19 maggio, fiatjaf ha &lt;a href="https://github.com/nostr-protocol/nips/pull/1248">ristrutturato NIP-46&lt;/a> per abbandonare completamente NIP-04 e passare tutto il traffico bunker alla cifratura NIP-44, la mossa di deprecazione che ha plasmato ogni implementazione bunker da allora. Il 20 maggio, &lt;a href="https://github.com/nostr-protocol/nips/pull/923">NIP-71 Video Events&lt;/a> è stato mergiato con &lt;code>kind:21&lt;/code> e &lt;code>kind:22&lt;/code>, e &lt;a href="https://github.com/nostr-protocol/nips/pull/1171">NIP-10&lt;/a> ha aggiunto l&amp;rsquo;argomento pubkey opzionale sui tag &lt;code>e&lt;/code> così i client possono risolvere gli autori dei thread senza prima recuperare l&amp;rsquo;evento di riferimento. &lt;a href="https://github.com/nostr-protocol/nips/pull/1175">NIP-35 Torrents&lt;/a> di Kieran Walsh è stato mergiato il 22 maggio, e il 24 maggio il README dei NIP ha per la prima volta fatto riferimento a &lt;a href="https://github.com/nostr-protocol/nips/pull/1251">CIP-01&lt;/a> come una proposta fuori-repo, segnalando l&amp;rsquo;inizio del pattern &amp;ldquo;NIP come uno di diversi luoghi di proposta&amp;rdquo;. Il 25 maggio, una &lt;a href="https://github.com/nostr-protocol/nips/pull/1254">PR di pulizia&lt;/a> ha rimosso il tag &lt;code>aes-256-gcm&lt;/code> da NIP-71 prima che le implementazioni a valle lo congelassero. NIP-96 ha aggiunto &lt;a href="https://github.com/nostr-protocol/nips/pull/1262">&lt;code>list files&lt;/code> e ha eliminato il requisito di transform&lt;/a> il 27 maggio. Il 28 maggio, Jonathan Staab ha proposto di &lt;a href="https://github.com/nostr-protocol/nips/pull/1264">alzare l&amp;rsquo;asticella di accettazione dei NIP&lt;/a> per richiedere almeno due implementazioni interoperanti prima che una bozza possa laurearsi. Lato client: Damus ha taggato &lt;a href="https://github.com/damus-io/damus/releases/tag/v1.7.2">v1.7.2&lt;/a> e &lt;a href="https://github.com/damus-io/damus/releases/tag/v1.8">v1.8&lt;/a> più una &lt;a href="https://github.com/damus-io/damus/commits/v1.9">v1.9 con piena gestione dei marker NIP-10&lt;/a> il 9-10 maggio, ha portato l&amp;rsquo;&lt;a href="https://github.com/damus-io/damus/commit/8feb228">autenticazione NIP-98 sulle notifiche push&lt;/a> e ha rilasciato il pieno &lt;a href="https://github.com/damus-io/damus/commit/52aefc8">supporto ai marker NIP-10&lt;/a>. Amethyst ha reso &lt;a href="https://github.com/vitorpamplona/amethyst/commit/1f45a63">NIP-17 la modalità DM di default&lt;/a> il 14 maggio, ha costruito la &lt;a href="https://github.com/vitorpamplona/amethyst/commit/aa97c7e">gestione dei relay outbox-model NIP-65&lt;/a>, ha aggiunto la &lt;a href="https://github.com/vitorpamplona/amethyst/commit/ff94f45">selezione dei server NIP-96&lt;/a> e ha rilasciato la &lt;a href="https://github.com/vitorpamplona/amethyst/commit/04c4490">derivazione di chiavi BIP-32/BIP-39 NIP-06&lt;/a>. Primal Android &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/0.99.2">0.99.2&lt;/a> il 10 maggio ha aggiunto tagging utenti e NWC per wallet esterni, seguita da &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/0.99.4">0.99.4&lt;/a>. Pablo Fernandez ha portato un &lt;a href="https://github.com/nostr-dev-kit/ndk/commits/master/?since=2024-05-01&amp;amp;until=2024-06-01">cluster di optimistic-update NDK&lt;/a> dal 24 al 31 maggio. Snort ha aggiunto la &lt;a href="https://github.com/v0l/snort/commit/5763d91">selezione dei server NIP-96&lt;/a>, e cashu-ts ha &lt;a href="https://github.com/cashubtc/cashu-ts/commit/3e20f45">separato le sue primitive crypto&lt;/a> in &lt;code>@cashu/crypto&lt;/code>.&lt;/p>
&lt;h3 id="maggio-2025">Maggio 2025&lt;/h3>
&lt;p>Il mese in cui &lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77 (Negentropy Syncing)&lt;/a> è stato mergiato il 27 maggio, la spec di fiatjaf e Doug Hoyte per il wire protocol che sostituisce i filtri REQ brute-force con un calcolo di differenza a costo logaritmico. Questo era lo stesso negentropy che strfry aveva rilasciato due anni prima come funzionalità lato relay, ora formalizzato come protocollo client-relay, e la &lt;a href="https://github.com/nostr-protocol/nips/pull/1939">voce del README&lt;/a> è arrivata lo stesso giorno. La settimana prima, &lt;a href="https://github.com/nostr-protocol/nips/pull/1897">NIP-23 long-form&lt;/a> ha definito come i documenti HTML si associano a entità Nostr tramite un tag &lt;code>&amp;lt;link&amp;gt;&lt;/code> il 24 maggio, la primitiva canonical-web-copy. NIP-25 ha aggiunto gli &lt;a href="https://github.com/nostr-protocol/nips/pull/1702">hint di relay per il target della reazione&lt;/a> il 22 maggio e ha &lt;a href="https://github.com/nostr-protocol/nips/pull/1486">abbandonato la raccomandazione emoji-to-like/dislike&lt;/a>, trattando le emoji come unità semantiche distinte. NIP-52 è stato &lt;a href="https://github.com/nostr-protocol/nips/pull/1922">semplificato&lt;/a> il 14 maggio per focalizzarsi sui kind che i client stavano rilasciando in produzione, la sfoltita che ha reso le estensioni calendario di Formstr di un anno dopo più pulite da innestare. Il 9 maggio, &lt;a href="https://github.com/nostr-protocol/nips/commit/873afc5fb823f58c3b7f29c5090f9c56172623f2">Follow Pack&lt;/a> (liste di follow curate di kind 39089) e &lt;a href="https://github.com/nostr-protocol/nips/pull/1848">Favorite Relay&lt;/a> (una nuova lista replaceable sotto NIP-51) sono entrati nel README lo stesso giorno. L&amp;rsquo;arco del Protocollo Marmot non era ancora cominciato: esisteva solo il repo &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> (primo commit 9 settembre 2024), e maggio 2025 era la sua fase di prototipo Svelte+Tauri, con il &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/commit/b8e6754">commit del 14 maggio&lt;/a> che rimuoveva codice specifico di Tauri mentre il progetto pivotava alla sua architettura attuale. Il core Rust dedicato MDK (12 settembre 2025), il repo spec di Marmot (19 settembre 2025) e la UI Flutter (2 dicembre 2025) sono tutti arrivati dopo nell&amp;rsquo;anno. Sul lato client, &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.4.0">Notedeck v0.4.0&lt;/a> di Damus è stato rilasciato il 5 maggio come prima Beta, laureandosi da Alpha con full-text search, l&amp;rsquo;assistente AI Dave, zap su NWC, GIF, tagging utenti e mute list. Due giorni dopo, &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.0.0">Flotilla 1.0.0&lt;/a> di hodlbod ha attraversato il confine del lancio pubblico come client di group-chat basato su NIP-29, insieme a &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.12">Coracle 0.6.12&lt;/a>, la prima di sei release Coracle che si sono estese fino a &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.17">0.6.17 il 14 maggio&lt;/a>. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v3.4.0">Amber v3.4.0&lt;/a> il 12 maggio si è spostato dalle API Autofill e ClipboardManager Android deprecate ed è migrato dalle encrypted shared preferences a DataStore. Primal Android &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.2.20">2.2.20&lt;/a> il 20 maggio ha aggiunto il flusso Redeem Code per Primal Premium e una galleria immagini ridisegnata. &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.14.0">nak v0.14.0&lt;/a> il 21 maggio ha tagliato una minor della CLI canonica nella stessa settimana delle release di Coracle, Flotilla e Notedeck. OpenSats ha ricevuto la sua più grande donazione non-Bitcoin-treasury a oggi quando &lt;a href="https://opensats.org/blog/opensats-receives-two-million-donation-from-the-reynolds-foundation">la Reynolds Foundation ha dato 2 milioni di dollari&lt;/a> il 22 maggio.&lt;/p>
&lt;h3 id="maggio-2026">Maggio 2026&lt;/h3>
&lt;p>Il mese trattato in &lt;a href="https://nostrcompass.org/it/newsletters/2026-05-06-newsletter/">Newsletter #21&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-05-13-newsletter/">#22&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-05-21-newsletter/">#23&lt;/a> e in questo numero. Il filo definitorio è MLS-on-Nostr che raggiunge produzione multi-client: &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.8.0">MDK 0.8.0&lt;/a> ha rilasciato le primitive di leaf-index MIP-05 e i key package indirizzabili, seguito da &lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a> che aggiunge la validazione di messaggi a scomparsa NIP-40 su iOS e Android tramite una superficie UniFFI condivisa. &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">White Noise v2026.5.22+25&lt;/a> ha rilasciato la push iOS tramite una Notification Service Extension che decifra il ciphertext MLS dentro il processo dell&amp;rsquo;extension così il broker non vede mai plaintext, e sono apparsi due nuovi client Marmot: &lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (un client desktop e Android .NET/Avalonia con slot KeyPackage multi-dispositivo) e &lt;a href="https://cordn.net">Cordn&lt;/a> (un&amp;rsquo;architettura MLS alternativa che usa un coordinator per-gruppo su ContextVM). Angor ha migrato la sua messaggistica cifrata da NIP-04 a NIP-44 in &lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a>, chiudendo l&amp;rsquo;arco di deprecazione aperto con &lt;a href="https://github.com/nostr-protocol/nips/pull/574">la proposta NIP-44 di Paul Miller nel maggio 2023&lt;/a>. Il team Formstr ha aperto la più grande submission NIP coordinata a memoria recente il 17 maggio, con &lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a> per l&amp;rsquo;auto-rimozione dei partecipanti, &lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> per eventi di calendario privati e ricorrenza (NIP-52E e NIP-52R) e &lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a> per la programmazione decentralizzata di appuntamenti, tutti con &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> che già rilascia l&amp;rsquo;implementazione di riferimento. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">Amethyst v1.11.0&lt;/a> ha reso i calendari NIP-52 come una categoria di timeline nativa e ha esteso gli zap Bitcoin onchain a distribuzioni split. Un anno dopo che &lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77 è stato mergiato nel maggio 2025&lt;/a>, tre implementazioni indipendenti hanno rilasciato l&amp;rsquo;adozione negentropy nella stessa finestra: &lt;a href="https://github.com/damus-io/notedeck/pull/1459">Notedeck PR #1459&lt;/a> l&amp;rsquo;ha collegata al client desktop di Damus per giftwrap e backfill dei thread, &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">Vector v0.4.0&lt;/a> ha usato la sync MLS full-negentropy come parte del suo rewrite da zero di &lt;code>vector-core&lt;/code> insieme al Tor one-click e a una superficie di agente MCP a 21 tool, e &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.0.0-pre1">Citrine v3.0.0-pre1&lt;/a> l&amp;rsquo;ha aggiunta al relay Android-nativo insieme a Tor integrato e aggregazione multi-relay. &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.4">Mostro v0.17.4&lt;/a> ha chiuso il ciclo del bond anti-abuso con i payout di bond slashati di Fase 3 in &lt;a href="https://github.com/MostroP2P/mostro/pull/738">PR #738&lt;/a>, facendo rispettare ciò che il protocollo prima solo minacciava. Tre anni da &amp;ldquo;sostituiamo NIP-04&amp;rdquo; a &amp;ldquo;sostituiamo NIP-44 con lo stato di gruppo MLS completo&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;p>Se vuoi discutere, mandaci un DM su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #23</title><link>https://nostrcompass.org/it/newsletters/2026-05-21-newsletter/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-05-21-newsletter/</guid><description>&lt;p>Primal 3.5 rilascia una shell Android ricostruita, Amethyst aggiunge gli zap Bitcoin onchain, White Noise guadagna il rendering markdown e i deep link, Keycast supera un audit di sicurezza e AgentNoise permette di controllare agenti di coding AI locali su chat cifrate Marmot. Hostr lancia una piattaforma di locazione P2P su Nostr con quattro bozze di NIP che coprono annunci, prenotazioni ed escrow basato su EVM. Angor migra la messaggistica cifrata da NIP-04 a NIP-44, Dart NDK aggiunge NIP-77 e un web signer, Alby js-sdk v8 rilascia la riconnessione multi-relay nativa NWC, e KeyChat corregge un gap di forward secrecy nell&amp;rsquo;eliminazione delle one-time prekey di Signal. Sul lato protocollo, il bond anti-abuso di Mostro raggiunge la Fase 2, Wisp rilascia risposte private e reazioni gift-wrapped, e un&amp;rsquo;ondata di implementazione NIP-05 su Namecoin tocca una mezza dozzina di client in una sola settimana.&lt;/p></description><content:encoded>&lt;p>Primal 3.5 rilascia una shell Android ricostruita, Amethyst aggiunge gli zap Bitcoin onchain, White Noise guadagna il rendering markdown e i deep link, Keycast supera un audit di sicurezza e AgentNoise permette di controllare agenti di coding AI locali su chat cifrate Marmot. Hostr lancia una piattaforma di locazione P2P su Nostr con quattro bozze di NIP che coprono annunci, prenotazioni ed escrow basato su EVM. Angor migra la messaggistica cifrata da NIP-04 a NIP-44, Dart NDK aggiunge NIP-77 e un web signer, Alby js-sdk v8 rilascia la riconnessione multi-relay nativa NWC, e KeyChat corregge un gap di forward secrecy nell&amp;rsquo;eliminazione delle one-time prekey di Signal. Sul lato protocollo, il bond anti-abuso di Mostro raggiunge la Fase 2, Wisp rilascia risposte private e reazioni gift-wrapped, e un&amp;rsquo;ondata di implementazione NIP-05 su Namecoin tocca una mezza dozzina di client in una sola settimana.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="primal-35-per-android">Primal 3.5 per Android&lt;/h3>
&lt;p>Primal, il client sociale sostenuto dalla propria infrastruttura di relay di caching, ha rilasciato &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.9">3.5.9&lt;/a> questa settimana con una shell applicativa ricostruita. Il redesign sostituisce la struttura di navigazione precedente con un layout aggiornato e una nuova schermata Explore, dando alla superficie principale di scoperta la propria home dedicata. La release aggiunge la riproduzione audio per le anteprime dei link, così i file audio incorporati nelle note vengono riprodotti inline senza lasciare il feed. I badge di verifica NIP-05 sono ora mostrati inline sui profili, portando in vista la conferma di identità a colpo d&amp;rsquo;occhio. Il filtraggio delle notifiche ha ricevuto una revisione, consentendo agli utenti di restringere quali tipi di evento raggiungono la loro lista di notifiche. L&amp;rsquo;editor ha guadagnato una migliore gestione degli event-link, e il layer di database sottostante ha ricevuto correzioni di stabilità.&lt;/p>
&lt;h3 id="white-noise-markdown-deep-link-e-metadati-audio">White Noise: markdown, deep link e metadati audio&lt;/h3>
&lt;p>White Noise, l&amp;rsquo;app di messaggistica di gruppo cifrata con Marmot costruita su Nostr e MLS (&lt;a href="https://www.rfc-editor.org/rfc/rfc9420">RFC 9420&lt;/a>), ha avuto una delle sue settimane più intense fino a oggi attraverso i repository frontend e backend.&lt;/p>
&lt;p>Sul frontend, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/665">PR #665&lt;/a> aggiunge il rendering markdown completo per i messaggi in chat, così grassetto, corsivo, blocchi di codice e link ora sono resi nativamente nella vista dei messaggi. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/675">PR #675&lt;/a> abilita il flusso di uscita dal gruppo che era precedentemente bloccato per gli admin non ultimi, e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/661">PR #661&lt;/a> aggiunge il supporto nativo ai deep link per gli URI &lt;code>whitenoise://&lt;/code> e &lt;code>whitenoise-staging://&lt;/code> che coprono utenti, chat e impostazioni, senza richiedere alcuna infrastruttura di redirect HTTP.&lt;/p>
&lt;p>Sul backend in whitenoise-rs, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/835">PR #835&lt;/a> fa funzionare correttamente la rotazione dei key package riutilizzando lo slot &lt;code>d_tag&lt;/code> per le pubblicazioni di kind:30443, abilitando la semantica di eventi replaceable NIP-33 così che le successive rotazioni di key package sostituiscano l&amp;rsquo;evento precedente sui relay, mantenendo solo il key package corrente. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/833">PR #833&lt;/a> estende &lt;code>FileMetadata&lt;/code> con campi opzionali &lt;code>duration_ms&lt;/code> e &lt;code>waveform&lt;/code> per gli allegati audio, coordinato con la &lt;a href="https://github.com/marmot-protocol/mdk/pull/300">PR #300&lt;/a> di MDK che aggiunge gli stessi campi ai tag media MIP-04. Un nuovo crate &lt;code>whitenoise-markdown&lt;/code> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/836">PR #836&lt;/a>) sostituisce il precedente parser di token nostr-sdk con una libreria dedicata al rendering markdown.&lt;/p>
&lt;p>La spec del protocollo Marmot stessa ha ricevuto una correzione di sicurezza in &lt;a href="https://github.com/marmot-protocol/marmot/pull/68">PR #68&lt;/a>, che chiude un problema di sicurezza specificando esplicitamente HKDF-SHA256 per le derivazioni di chiave immagine in MIP-01, rimuovendo un&amp;rsquo;ambiguità che poteva portare a divergenze implementative. In MDK, &lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a> sanifica le ragioni di fallimento dei welcome e limita la lunghezza memorizzata, chiudendo una separata segnalazione di sicurezza.&lt;/p>
&lt;h3 id="amethyst-v1100-zap-bitcoin-onchain">Amethyst v1.10.0: Zap Bitcoin Onchain&lt;/h3>
&lt;p>Amethyst ha rilasciato quattro release questa settimana, con &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.10.0">v1.10.0&lt;/a> come principale. La release aggiunge il supporto agli zap Bitcoin onchain NIP-BC, consentendo agli utenti di inviare, ricevere e visualizzare zap regolati direttamente onchain tramite transazioni Bitcoin. Le release precedenti nella serie hanno corretto la rilevazione di blob Blossom per rifiutare filename non conformi (&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.09.2">v1.09.2&lt;/a>), patchato le regole ProGuard per le build desktop e mergiato la pull request &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2977">#2977&lt;/a> per mostrare gli zapper Bitcoin onchain come una riga ₿ dedicata nella galleria delle reazioni espansa. Una schermata in-progress di cronologia transazioni onchain con paginazione è arrivata in &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a>.&lt;/p>
&lt;h3 id="agentnoise-controllare-agenti-di-coding-su-white-noise">AgentNoise: controllare agenti di coding su White Noise&lt;/h3>
&lt;p>&lt;a href="https://github.com/nvk/agentnoise">AgentNoise&lt;/a> di nvk è un helper desktop Rust-nativo che consente di usare un telefono che esegue White Noise come superficie di controllo per sessioni di agenti di coding Codex e Claude locali. Lo strumento ascolta una o più chat White Noise, autentica i mittenti tramite un flusso PIN di first-pairing e lancia gli agenti di coding locali tramite il launcher configurato. Inviare &lt;code>/claude &amp;lt;prompt&amp;gt;&lt;/code> dal telefono apre una nuova sessione di lavoro White Noise chiamata come l&amp;rsquo;hostname della macchina e un breve riepilogo del prompt, poi trasmette gli aggiornamenti di progresso e l&amp;rsquo;output finale a quella chat. È intenzionalmente Rust-first e tiene Node fuori dal percorso trusted del bridge. Il progetto ha raggiunto &lt;a href="https://github.com/nvk/agentnoise/releases/tag/v0.1.24">v0.1.24&lt;/a> questa settimana, aggiungendo risposte più brevi leggibili dal telefono, riferimenti a job per prefisso breve univoco e un watcher opzionale di sessione locale. AgentNoise pilota le CLI &lt;code>wn&lt;/code> e &lt;code>wnd&lt;/code> di &lt;code>marmot-protocol/whitenoise-rs&lt;/code> come sottoprocessi, quindi condivide il proprio trasporto Nostr con il client White Noise stesso.&lt;/p>
&lt;h3 id="audit-di-sicurezza-di-keycast-completato">Audit di sicurezza di Keycast completato&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/keycast">Keycast&lt;/a>, il server di remote signing NIP-46 orientato ai team che memorizza chiavi private Nostr cifrate a riposo in SQLite, ha completato un audit di sicurezza nel maggio 2026. Il passaggio di hardening ha affrontato problemi di autenticazione, permessi, integrità dei dati e dipendenze, e i risultati sono documentati in &lt;a href="https://github.com/marmot-protocol/keycast/blob/master/AUDIT.md">AUDIT.md&lt;/a>. Le modifiche includono: l&amp;rsquo;auth HTTP NIP-98 richiede ora esattamente un tag &lt;code>u&lt;/code> e un tag &lt;code>method&lt;/code>, rifiuta timestamp obsoleti e valida gli hash &lt;code>payload&lt;/code>; l&amp;rsquo;allowlist &lt;code>ALLOWED_PUBKEYS&lt;/code> è parsata esattamente e forzata lato server; le policy vuote ora rifiutano di default le richieste sign/encrypt/decrypt; il rispetto delle foreign key è abilitato sulle connessioni SQLite; e le route app nidificate come &lt;code>/teams/:id&lt;/code> sono protette lato server. Una migrazione SQL normalizza il JSON dei vecchi permessi di kind consentiti all&amp;rsquo;avvio. Il progetto è ancora in fase iniziale e l&amp;rsquo;audit segnala elementi residui prima di affidargli chiavi di team reali.&lt;/p>
&lt;h3 id="scramble-client-marmot-per-desktop-e-android">Scramble: client Marmot per desktop e Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (precedentemente OpenChat) è un client desktop e Android in .NET/Avalonia per il &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot Protocol&lt;/a>, che implementa i MIP 00-04: pubblicazione di KeyPackage (kind:30443), metadati di gruppo con l&amp;rsquo;estensione MLS NostrGroupData, eventi welcome gift-wrapped NIP-59 (kind:444), messaggi cifrati ChaCha20-Poly1305 (kind:445) e allegati media cifrati Blossom. È pienamente interoperabile con White Noise e con qualsiasi altro client compatibile con Marmot.&lt;/p>
&lt;p>Il progetto ha rilasciato 13 release questa settimana, con il supporto multi-dispositivo come funzionalità principale. Ogni dispositivo genera uno slot KeyPackage univoco (un tag &lt;code>d&lt;/code> su kind:30443). All&amp;rsquo;avvio, Scramble recupera i KeyPackage propri dell&amp;rsquo;utente dai relay, rileva gli ID slot dei dispositivi peer e li aggiunge automaticamente ai gruppi MLS esistenti usando il flusso di staged commit. L&amp;rsquo;auto-aggiunta è ristretta ai gruppi in cui l&amp;rsquo;utente corrente è admin; i gruppi non-admin vengono saltati con l&amp;rsquo;indicazione di chiedere all&amp;rsquo;admin del gruppo. Un banner informativo di forward-secrecy avvisa i dispositivi appena collegati che i vecchi messaggi non sono disponibili. Un passaggio di riconciliazione degli ID slot (&lt;code>TryReconcileSlotId&lt;/code>) gestisce i dispositivi migrati da versioni pre-multi-dispositivo confrontando i byte di KeyPackage del relay con il materiale di chiave locale per adottare il tag &lt;code>d&lt;/code> corretto. È stata anche corretta la riconnessione al signer esterno per utenti Amber e NIP-46: la guardia &lt;code>IsConnected&lt;/code> che bloccava l&amp;rsquo;auto-riconnessione interna di &lt;code>ExternalSignerService&lt;/code> è stata rimossa in tutti e nove i call site in &lt;code>NostrService&lt;/code>.&lt;/p>
&lt;h3 id="hostr-locazione-p2p-su-nostr">Hostr: locazione P2P su Nostr&lt;/h3>
&lt;p>&lt;a href="https://hostr.network">Hostr&lt;/a> (&lt;a href="https://github.com/sudonym-btc/hostr">sorgente&lt;/a>) è una piattaforma di locazione peer-to-peer costruita interamente su Nostr. Copre l&amp;rsquo;intero flusso stile Airbnb (ricerca e pubblicazione di proprietà, negoziazione di prenotazioni e regolamento dei pagamenti) usando quattro bozze di NIP che il progetto sta sviluppando in parallelo con l&amp;rsquo;applicazione.&lt;/p>
&lt;p>Il NIP di accommodation estende gli annunci classificati &lt;a href="https://github.com/nostr-protocol/nips/blob/master/99.md">NIP-99&lt;/a> (kind:30402 attivo, kind:30403 draft) con tag specifici per l&amp;rsquo;ospitalità per il tipo (&lt;code>room&lt;/code>, &lt;code>house&lt;/code>, &lt;code>apartment&lt;/code>, &lt;code>villa&lt;/code>, &lt;code>hotel&lt;/code>, &lt;code>hostel&lt;/code>, &lt;code>resort&lt;/code>), orari di check-in/check-out, permanenza minima e indici di celle geospaziali H3 per la ricerca basata su posizione con precisione configurabile. Il NIP di prenotazione definisce un protocollo completo di negoziazione e ciclo di vita: gli eventi di prenotazione replaceable di kind:32122 portano un trade ID &lt;code>d&lt;/code>, un tag &lt;code>a&lt;/code> di ancoraggio all&amp;rsquo;annuncio e tag &lt;code>p&lt;/code> dei partecipanti con ruoli (&lt;code>buyer&lt;/code>, &lt;code>seller&lt;/code>, &lt;code>escrow&lt;/code>); i rumor di messaggio strutturato di kind:1327 consegnano controproposte private in fase di negoziazione tramite gift wrap NIP-59 così la negoziazione resta fuori dai relay pubblici; gli eventi di transizione append-only di kind:1326 creano un audit trail pubblico una volta che una prenotazione viene confermata. La privacy del compratore è preservata tramite chiavi Nostr temporanee per-trade legate all&amp;rsquo;identità reale del compratore tramite tag &lt;code>participant_proof&lt;/code> cifrati. Il NIP di escrow definisce annunci di servizio escrow di kind:30303 e dichiarazioni di fiducia utente di kind:17388; l&amp;rsquo;implementazione di riferimento usa smart contract EVM su Rootstock, con &lt;code>contractBytecodeHash&lt;/code> che permette ai client di verificare che il contratto deployato corrisponda a un&amp;rsquo;implementazione nota e auditata. Il NIP di marketplace listing definisce tag generici condivisi da tutti i profili marketplace NIP-99, inclusi &lt;code>instantBook&lt;/code>, &lt;code>negotiable&lt;/code>, &lt;code>quantity&lt;/code>, &lt;code>securityDeposit&lt;/code>, &lt;code>cancellationPolicy&lt;/code> e &lt;code>maxDisputePeriod&lt;/code>. Questa settimana il progetto ha preparato la sua submission all&amp;rsquo;app store e mergiato il supporto all&amp;rsquo;identità del client MCP per l&amp;rsquo;automazione rivolta agli agenti.&lt;/p>
&lt;p>Due nuove voci sono apparse sulla piattaforma Shakespeare MiniApps questa settimana: &lt;a href="https://inkpress.shakespeare.wtf">InkPress&lt;/a>, un generatore di riviste AI che pubblica contenuto strutturato in stile rivista come eventi Nostr, e &lt;a href="https://pressstr.shakespeare.wtf">PressStr&lt;/a>, una piattaforma di scrittura e pubblicazione per lo stack Soapbox.&lt;/p>
&lt;h2 id="rilasciato-questa-settimana">Rilasciato questa settimana&lt;/h2>
&lt;h3 id="ngit-v244">ngit v2.4.4&lt;/h3>
&lt;p>&lt;strong>ngit&lt;/strong> ha rilasciato &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.4">v2.4.4&lt;/a>, aggiungendo &lt;code>ngit sync --trust-server&lt;/code> (&lt;code>-t&lt;/code>) per i casi in cui un server git è fast-forward avanti rispetto allo stato Nostr. Quando questa situazione viene rilevata, sync segnala i ref interessati e richiede il flag per firmare e pubblicare un evento di stato aggiornato; un setting git config &lt;code>nostr.trust-server-domains&lt;/code> fornisce una allowlist separata da punti e virgola per i server che dovrebbero essere considerati affidabili automaticamente senza il flag.&lt;/p>
&lt;h3 id="amber-v610-pre3-aggiunge-la-firma-psbt">Amber v6.1.0-pre3 aggiunge la firma PSBT&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong> ha rilasciato &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre3">v6.1.0-pre3&lt;/a> con un layout migliorato per le nuove connessioni di app, correzioni di crash e un&amp;rsquo;opzione seleziona/deseleziona tutto nella schermata dei permessi. &lt;a href="https://github.com/greenart7c3/Amber/pull/438">PR #438&lt;/a> aggiunge il supporto alla firma PSBT sia tramite il percorso Intent-based sia tramite quello NIP-46 basato su relay, permettendo ad Amber di firmare Partially Signed Bitcoin Transactions senza esporre l&amp;rsquo;nsec all&amp;rsquo;app richiedente.&lt;/p>
&lt;h3 id="wisp-v110-rilascia-risposte-private-e-abbandona-il-supporto-ad-amber">Wisp v1.1.0 rilascia risposte private e abbandona il supporto ad Amber&lt;/h3>
&lt;p>&lt;strong>Wisp&lt;/strong> ha rilasciato &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.0">v1.1.0&lt;/a> con risposte private tramite gift wrap NIP-17 (&lt;a href="https://github.com/barrydeen/wisp/pull/540">PR #540&lt;/a>), reazioni gift-wrapped e zap DIP-03 sulle risposte private (&lt;a href="https://github.com/barrydeen/wisp/pull/543">PR #543&lt;/a>), auto-traduzione per le note (&lt;a href="https://github.com/barrydeen/wisp/pull/523">PR #523&lt;/a>) e un input fiat stile register sul dialog dello zap. &lt;a href="https://github.com/barrydeen/wisp/pull/541">PR #541&lt;/a> migra gli zap privati da uno schema plaintext DM-relay fatto in casa a DIP-03 con un corretto routing DM-relay. Lo stesso ciclo di release ha rimosso il supporto al remote signer NIP-55 (&lt;a href="https://github.com/barrydeen/wisp/pull/531">PR #531&lt;/a>), abbandonando Amber e altre integrazioni con signer esterni, e ha rimosso il relay locale in bundle (&lt;a href="https://github.com/barrydeen/wisp/pull/533">PR #533&lt;/a>). Wisp è un client sociale Nostr per Android.&lt;/p>
&lt;h3 id="calendar-by-formstr-v154-corregge-il-gift-wrap-per-i-nuovi-partecipanti">Calendar by Formstr v1.5.4 corregge il gift wrap per i nuovi partecipanti&lt;/h3>
&lt;p>&lt;strong>Calendar by Formstr&lt;/strong> ha rilasciato &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.5.4">v1.5.4&lt;/a> (l&amp;rsquo;ultima in una sequenza v1.5.2 → v1.5.4). &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/160">PR #160&lt;/a> corregge un bug in cui l&amp;rsquo;editing di un evento di calendario privato con nuovi partecipanti pubblicava l&amp;rsquo;evento aggiornato con le nuove pubkey nei tag &lt;code>p&lt;/code> ma non creava né consegnava mai inviti gift wrap a quei partecipanti, rompendo il flusso di invito per aggiunte dell&amp;rsquo;ultimo minuto. &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/156">PR #156&lt;/a> aggiunge gestione degli errori attorno alla decifratura degli eventi privati così i client non lanciano più eccezioni su eventi non decifrabili, e &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/138">PR #138&lt;/a> corregge orari di eventi ricorrenti che stavano andando alla deriva fra fusi orari.&lt;/p>
&lt;h3 id="applesauce-v610-aggiunge-git-cast-nip-34-e-lookup-relay-nip-51">Applesauce v6.1.0 aggiunge git cast NIP-34 e lookup relay NIP-51&lt;/h3>
&lt;p>&lt;strong>Applesauce&lt;/strong> ha rilasciato &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.1.0">v6.1.0&lt;/a> attraverso i suoi pacchetti con un significativo supporto NIP-34 (git-over-Nostr): applesauce-common aggiunge nuovi cast &lt;code>GitRepository&lt;/code>, &lt;code>GitGraspList&lt;/code> e &lt;code>FavoriteGitRepos&lt;/code> più factory corrispondenti, ed espone le proprietà reattive &lt;code>User.favoriteGitRepos$&lt;/code>, &lt;code>User.gitAuthors$&lt;/code> e &lt;code>User.graspServers$&lt;/code> così le applicazioni possono elencare i repo git seguiti da un utente, i manutentori dei repo e i server GRASP configurati direttamente dallo stesso oggetto User. La stessa release aggiunge il supporto alle liste di lookup relay NIP-51 di kind 10086, un&amp;rsquo;aggiunta recente alla famiglia di relay list usata per scoprire dove trovare dati specifici. applesauce-core guadagna &lt;code>replaceableAddress&lt;/code> su &lt;code>EventCast&lt;/code> per il lookup di indirizzi replaceable NIP-01, più &lt;code>pointer&lt;/code>, &lt;code>kind&lt;/code> e un helper &lt;code>getReplaceableAddressForEvent&lt;/code>, e aggiunge un metodo &lt;code>timeline$()&lt;/code> sul cast &lt;code>User&lt;/code> base. &lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a> corregge i metodi manuali del pool che scartavano silenziosamente i relay offline.&lt;/p>
&lt;h3 id="sprout-v0016-rilascia-il-binario-sprig-e-il-protocollo-huddle-v2">Sprout v0.0.16 rilascia il binario Sprig e il protocollo huddle v2&lt;/h3>
&lt;p>&lt;strong>Sprout&lt;/strong> di Block, un workspace di team basato su relay Nostr self-hosted dove esseri umani e agenti AI condividono le stesse stanze e event log, ha rilasciato &lt;a href="https://github.com/block/sprout/releases/tag/v0.0.16">v0.0.16&lt;/a> dell&amp;rsquo;app desktop insieme a build rolling del nuovo binario all-in-one Sprig (&lt;a href="https://github.com/block/sprout/pull/605">PR #605&lt;/a>), che raggruppa l&amp;rsquo;harness ACP, l&amp;rsquo;agente e l&amp;rsquo;MCP per sviluppatori in un unico binario stile busybox per un deployment facile. Il flag &lt;code>--no-memory&lt;/code> aggiunto in &lt;a href="https://github.com/block/sprout/pull/611">PR #611&lt;/a> consente agli operatori di disabilitare l&amp;rsquo;injection della core memory NIP-AE per l&amp;rsquo;harness ACP. Sul lato realtime, &lt;a href="https://github.com/block/sprout/pull/609">PR #609&lt;/a> estende il protocollo voice huddle a un header di frame v2 che supporta fino a 10 peer simultanei.&lt;/p>
&lt;h3 id="nostrord-v103-aggiunge-keychain-os-e-multi-account">Nostrord v1.0.3 aggiunge keychain OS e multi-account&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong> ha rilasciato &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.3">v1.0.3&lt;/a> con lo storage locale delle chiavi rafforzato usando keychain OS e fallback a passphrase, supporto multi-account e un QR code bunker tappable che apre l&amp;rsquo;app signer su Android.&lt;/p>
&lt;h3 id="angor-migra-a-nip-44-e-rilascia-hardening-di-sicurezza">Angor migra a NIP-44 e rilascia hardening di sicurezza&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong>, l&amp;rsquo;app di crowdfunding Bitcoin costruita su Nostr e Taproot, ha rilasciato tre release unstable questa settimana (&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.24">v0.2.24&lt;/a>, &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.25">v0.2.25&lt;/a> e &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.26">v0.2.26&lt;/a>) con una serie di modifiche di hardening di sicurezza e integrazione Nostr. &lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a> migra la messaggistica cifrata Nostr da NIP-04 a NIP-44, sostituendo lo schema deprecato basato su XOR con la cifratura ChaCha20-Poly1305. &lt;a href="https://github.com/block-core/angor/pull/861">PR #861&lt;/a> consente upload media Blossom senza un wallet selezionato usando una chiave di auth Nostr effimera, sbloccando gli upload per gli utenti che non hanno ancora connesso un wallet. La serie di sicurezza ha affrontato diverse categorie hardened: &lt;a href="https://github.com/block-core/angor/pull/854">PR #854&lt;/a> aggiunge type safety per AngorKey e protezione della memoria della mnemonic, &lt;a href="https://github.com/block-core/angor/pull/856">PR #856&lt;/a> impone validazione a livello di protocollo per timelock, fee rate, soglie di dust e regole di penalty, e &lt;a href="https://github.com/block-core/angor/pull/851">PR #851&lt;/a> applica hardening non-breaking attraverso otto categorie di gravità media e bassa. &lt;a href="https://github.com/block-core/angor/pull/859">PR #859&lt;/a> corregge la compatibilità con GrapheneOS abilitando la compilazione AOT e rimuovendo la generazione di codice a runtime, e &lt;a href="https://github.com/block-core/angor/pull/855">PR #855&lt;/a> previene la perdita del wallet allo swipe-kill Android persistendo lo stato del wallet prima che l&amp;rsquo;OS termini il processo.&lt;/p>
&lt;h3 id="alby-js-sdk-v80-rilascia-la-riconnessione-multi-relay-nwc">Alby js-sdk v8.0 rilascia la riconnessione multi-relay NWC&lt;/h3>
&lt;p>&lt;strong>Alby js-sdk&lt;/strong> ha rilasciato la linea v8.0 (da &lt;a href="https://github.com/getAlby/js-sdk/releases/tag/v8.0.1">v8.0.1&lt;/a> a &lt;a href="https://github.com/getAlby/js-sdk/releases/tag/v8.0.3">v8.0.3&lt;/a>) con il supporto alle sottoscrizioni multi-relay NWC. &lt;a href="https://github.com/getAlby/js-sdk/pull/516">PR #516&lt;/a> aggiorna la dipendenza nostr-tools e abilita l&amp;rsquo;auto-riconnessione nativa attraverso più relay, sostituendo il precedente approccio a polling con una logica di riconnessione nativa del relay. &lt;a href="https://github.com/getAlby/js-sdk/pull/542">PR #542&lt;/a> sostituisce tutte le chiamate &lt;code>console.debug&lt;/code> con un&amp;rsquo;interfaccia logger iniettabile così gli sviluppatori di applicazioni possono instradare la diagnostica dell&amp;rsquo;SDK attraverso la propria infrastruttura di logging. La release abbandona il polyfill WebSocket, richiedendo Node.js 22 o superiore per i consumer lato server. v8.0.2 ha aggiunto una correzione per un bug di import crypto utils che rompeva certi bundler.&lt;/p>
&lt;h3 id="keychat-v1411-corregge-la-forward-secrecy">KeyChat v1.41.1 corregge la forward secrecy&lt;/h3>
&lt;p>&lt;strong>KeyChat&lt;/strong>, un&amp;rsquo;app di messaggistica che combina il protocollo Signal con il trasporto tramite relay Nostr, ha rilasciato &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.41.1&amp;#43;6513">v1.41.1+6513&lt;/a>. La correzione principale impone la forward secrecy eliminando le one-time prekey di Signal immediatamente dopo una decifratura riuscita, chiudendo un gap dove una prekey trattenuta poteva essere usata per decifrare messaggi passati se il dispositivo fosse stato successivamente compromesso. La release aggiunge anche l&amp;rsquo;anteprima URL per i messaggi consistenti in un singolo link, centralizza l&amp;rsquo;auto-download dei media sotto un nuovo &lt;code>FileDownloadManager&lt;/code> con una soglia automatica di 20 MB, e rifattora il fetch delle informazioni di relay NIP-11 per forzare il refresh al cold start così le configurazioni di fee dei relay a pagamento vengono sempre caricate correttamente.&lt;/p>
&lt;h2 id="in-sviluppo">In sviluppo&lt;/h2>
&lt;p>&lt;strong>Citrine&lt;/strong> ha mergiato &lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a> implementando l&amp;rsquo;enforcement di NIP-70: il relay Android ora blocca i repost che incorporano contenuto di eventi protetti, come richiede la spec. &lt;a href="https://github.com/greenart7c3/Citrine/pull/149">PR #149&lt;/a> aggiunge azioni di visualizzazione e copia per più indirizzi di connessione, localhost, Wi-Fi locale e Tor, dalla schermata delle impostazioni del relay. &lt;a href="https://github.com/greenart7c3/Citrine/pull/141">PR #141&lt;/a> aggiunge la gestione delle challenge AUTH NIP-42 tramite integrazione con signer esterno tramite Amber.&lt;/p>
&lt;p>&lt;strong>Mostro&lt;/strong> ha raggiunto la Fase 2 del suo rollout di bond anti-abuso. &lt;a href="https://github.com/MostroP2P/mostro/pull/737">PR #737&lt;/a> porta la logica di slash di dispute diretta dal solver: gli handler admin ora consumano il payload &lt;code>BondResolution&lt;/code> da mostro-core, consentendo a un admin di slashare il bond di una delle parti quando risolve una disputa. La Fase 1.5, mergiata in &lt;a href="https://github.com/MostroP2P/mostro/pull/736">PR #736&lt;/a>, ha introdotto un&amp;rsquo;azione dedicata &lt;code>PayBondInvoice&lt;/code> e uno status &lt;code>WaitingTakerBond&lt;/code>, separando il pagamento del bond anti-abuso del taker dal payout di trade del compratore. Il client mobile ha aggiunto la UX completa di Fase 1.5 in &lt;a href="https://github.com/MostroP2P/mobile/pull/592">PR #592&lt;/a>. Mostro è un protocollo di exchange Bitcoin peer-to-peer costruito su Nostr.&lt;/p>
&lt;p>&lt;strong>Damus&lt;/strong> ha mergiato &lt;a href="https://github.com/damus-io/damus/pull/3773">PR #3773&lt;/a> ripristinando l&amp;rsquo;indicatore di segnale del relay, e &lt;a href="https://github.com/damus-io/damus/pull/3775">PR #3775&lt;/a> corregge relay che rifiutavano di riconnettersi dopo un fallimento iniziale di connessione.&lt;/p>
&lt;p>&lt;strong>rust-nostr&lt;/strong> ha mergiato &lt;a href="https://github.com/rust-nostr/nostr/pull/1358">PR #1358&lt;/a> aggiungendo trait di finalizzazione degli eventi e builder di eventi specifici per NIP, rendendo più facile costruire eventi correttamente tipizzati per funzioni di protocollo specifiche. &lt;a href="https://github.com/rust-nostr/nostr/pull/1363">PR #1363&lt;/a> porta indietro una correzione che assicura che il signer NIP-46 si sottoscriva alle notifiche prima di inviare la risposta di connect, chiudendo una race condition in cui i messaggi del client che arrivavano immediatamente dopo il connect potevano essere persi.&lt;/p>
&lt;p>&lt;strong>dart-nostr&lt;/strong> ha mergiato &lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">PR #44&lt;/a> aggiungendo un resolver di relay Namecoin &lt;code>.bit&lt;/code> e record di pin TLSA, permettendo alle applicazioni Flutter di risolvere URL di relay &lt;code>wss://example.bit/&lt;/code> tramite DNS Namecoin ai loro effettivi indirizzi WebSocket.&lt;/p>
&lt;p>&lt;strong>Dart NDK&lt;/strong> (il Nostr development kit Dart/Flutter, ora in &lt;code>relaystr/ndk&lt;/code>) ha mergiato &lt;a href="https://github.com/relaystr/ndk/pull/464">PR #464&lt;/a> implementando NIP-77, il protocollo di firma eventi offline. Sul lato signer, &lt;a href="https://github.com/relaystr/ndk/pull/602">PR #602&lt;/a> e &lt;a href="https://github.com/relaystr/ndk/pull/601">PR #601&lt;/a> aggiungono un event signer specifico per web e un&amp;rsquo;astrazione &lt;code>PlatformEventVerifier&lt;/code>, consentendo alle app Flutter web di usare il signer di piattaforma senza un percorso di codice separato; &lt;a href="https://github.com/relaystr/ndk/pull/604">PR #604&lt;/a> introduce una factory di event signer per la selezione a runtime del signer. &lt;a href="https://github.com/relaystr/ndk/pull/608">PR #608&lt;/a> aggiunge &lt;code>getDmRelays()&lt;/code> per recuperare la lista di relay DM NIP-17 di un utente (kind:10050), e &lt;a href="https://github.com/relaystr/ndk/pull/600">PR #600&lt;/a> corregge la preservazione dei campi firmati NIP-46 così i remote signer non perdono campi al round-trip.&lt;/p>
&lt;p>&lt;strong>Pages by Form*&lt;/strong> (&lt;a href="https://github.com/formstr-hq/nostr-docs">repo&lt;/a>), l&amp;rsquo;app di documenti collaborativi Nostr-native di Formstr ospitata a &lt;a href="https://pages.formstr.app">pages.formstr.app&lt;/a>, ha mergiato quattro PR questa settimana stringendo i flussi di attachment cifrato e gestione documenti. &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/37">PR #37&lt;/a> corregge immagini mancanti negli export DOCX, HTML e PDF inserendo inline gli allegati cifrati: recupera i blob &lt;code>&amp;lt;encrypted-file&amp;gt;&lt;/code> dai server Blossom, li decifra con AES-GCM 256-bit usando la chiave e il nonce memorizzati, valida il MIME type dell&amp;rsquo;immagine e li converte in URL dati base64 così gli export preservano immagini che esistono solo su Blossom in forma cifrata. &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/39">PR #39&lt;/a> aggiunge un meccanismo di ricerca documenti locali, &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/38">PR #38&lt;/a> sistema il flusso di rinomina, e &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/40">PR #40&lt;/a> corregge la gestione dei backup condivisi.&lt;/p>
&lt;p>&lt;strong>Zap Cooking&lt;/strong> ha mergiato &lt;a href="https://github.com/zapcooking/frontend/pull/396">PR #396&lt;/a>, la prima fase di una revisione del feed che pone le primitive di rendering del feed senza alcun cambiamento ancora visibile all&amp;rsquo;utente. La PR introduce un parser di tag &lt;code>imeta&lt;/code> NIP-92 che legge gli slot &lt;code>url&lt;/code>, &lt;code>m&lt;/code> (MIME), &lt;code>dim&lt;/code> (dimensioni), &lt;code>blurhash&lt;/code>, &lt;code>alt&lt;/code>, &lt;code>x&lt;/code> (hash file) e &lt;code>fallback&lt;/code>, più un decoder canonico blurhash portato a mano (~200 LOC) che produce data URL PNG tramite canvas con un fallback null SSR-safe. Quando i tag &lt;code>imeta&lt;/code> sono assenti, il parser ricade sull&amp;rsquo;estrazione di URL grezzi di immagine e video dal contenuto dell&amp;rsquo;evento usando le stesse euristiche che il feed corrente già usa.&lt;/p>
&lt;p>&lt;strong>Nurunuru&lt;/strong> (ぬるぬる, &lt;code>tami1A84/null--nostr&lt;/code>), un client Nostr con varianti Android, iOS e Web native che condividono un engine FFI Rust, ha mergiato la sua sync Native → Web v1.5.0 in &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">PR #176&lt;/a>. La sync porta diverse aggiunte di funzionalità alla build Web che erano già state rilasciate su Android v1.4.9 e iOS 1.0.4: la &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">NotificationModal&lt;/a> ora mostra notifiche di compleanno, rilevazione di zap mutual-follow e notifiche di reazione con emoji custom; il selettore di reazioni abbandona la quick-row di reazioni Unicode di default e centra la UX sulle emoji custom; l&amp;rsquo;engine di raccomandazione in &lt;code>lib/recommendation.js&lt;/code> filtra utenti senza icone o display name e dà priorità alle voci Following con Recommended che carica in background. L&amp;rsquo;input vocale è l&amp;rsquo;unica funzionalità che va nella direzione opposta: la build Web usa già lo streaming ElevenLabs Scribe, e v1.5.0 sincronizza parzialmente il lato Native con &lt;code>SpeechRecognizer&lt;/code> standard OS (Android) e &lt;code>SFSpeechRecognizer&lt;/code> + &lt;code>AVAudioEngine&lt;/code> (iOS) mentre l&amp;rsquo;integrazione Scribe Native completa è rimandata a v1.6.&lt;/p>
&lt;h2 id="lavoro-di-protocollo-e-spec">Lavoro di protocollo e spec&lt;/h2>
&lt;p>&lt;strong>PR &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">#2251&lt;/a>&lt;/strong> stringe la spec degli eventi protetti NIP-70: ora dichiara esplicitamente che i repost che incorporano il contenuto completo di un evento protetto devono essere rifiutati dai relay. NIP-70 definisce il tag &lt;code>-&lt;/code> che segnala che un autore di nota non acconsente a che la sua nota venga ripubblicata. La spec originale copriva il comportamento di filtraggio del relay, ma lasciava ambiguo il caso di repost. Questa PR chiude quel gap. La &lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a> di Citrine implementa l&amp;rsquo;enforcement sul lato relay in questa stessa settimana.&lt;/p>
&lt;p>&lt;strong>PR &lt;a href="https://github.com/nostr-protocol/nips/pull/1653">#1653&lt;/a>&lt;/strong> propone un NIP Drafts per salvare e sincronizzare eventi di bozza privati. La proposta usa eventi replaceable con status &lt;code>draft&lt;/code> e cifratura NIP-44 verso la chiave dell&amp;rsquo;autore stesso, consentendo ai client di salvare lavori in corso sui relay senza che quegli eventi siano visibili a chiunque altro. L&amp;rsquo;evento draft porta l&amp;rsquo;evento completo di pubblicazione intesa come contenuto cifrato, incluso il suo eventuale kind e tag.&lt;/p>
&lt;p>&lt;strong>Snapshots (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>)&lt;/strong> è una proposta aperta di definire un evento snapshot immutabile per preservare una versione esatta di un evento Nostr replaceable. L&amp;rsquo;evento snapshot porta il contenuto completo dell&amp;rsquo;evento replaceable in un dato momento nel tempo, con un tag &lt;code>a&lt;/code> che lo collega all&amp;rsquo;indirizzo dell&amp;rsquo;evento replaceable così tutte le versioni storiche sono interrogabili insieme. Questo rende possibile agli osservatori ispezionare lo stato storico anche dopo che i relay smettono di conservare le vecchie versioni.&lt;/p>
&lt;p>&lt;strong>Ondata Namecoin NIP-05:&lt;/strong> Questa settimana ha visto una spinta coordinata per aggiungere la risoluzione NIP-05 &lt;code>.bit&lt;/code> ai client Nostr. Il feed di discussione NIP ha catturato PR open-source contro Aegis (&lt;a href="https://github.com/ZharlieW/Aegis/pull/14">#14&lt;/a>, che aggiunge la verifica al momento della firma nel signer), nostter (&lt;a href="https://github.com/SnowCait/nostter/pull/2128">#2128&lt;/a>) e dart-nostr (&lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">#44&lt;/a>), insieme a una bozza NIP upstream (&lt;a href="https://github.com/nostr-protocol/nips/pull/2349">PR #2349&lt;/a>). La PR di Aegis è notevole per aver posto la verifica sul lato produttore: il signer controlla la chain Namecoin prima di firmare qualsiasi evento di kind:0 che rivendica un&amp;rsquo;identità &lt;code>.bit&lt;/code> e avvisa l&amp;rsquo;utente in caso di mismatch, catturando il problema prima che l&amp;rsquo;evento raggiunga qualsiasi relay.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-07-windownostr-per-i-browser-web">NIP Deep Dive: NIP-07 (window.nostr per i browser Web)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/07.md">NIP-07&lt;/a> definisce l&amp;rsquo;interfaccia &lt;code>window.nostr&lt;/code> che le estensioni browser espongono alle applicazioni web. È l&amp;rsquo;interfaccia di signer più ampiamente deployata sul web, implementata da estensioni tra cui Alby, nos2x, Flamingo e horse.&lt;/p>
&lt;p>L&amp;rsquo;interfaccia ha due metodi obbligatori e diversi opzionali. &lt;code>window.nostr.getPublicKey()&lt;/code> restituisce la chiave pubblica dell&amp;rsquo;utente come stringa hex senza mai esporre la chiave privata alla pagina chiamante. &lt;code>window.nostr.signEvent(event)&lt;/code> prende un evento parziale con &lt;code>created_at&lt;/code>, &lt;code>kind&lt;/code>, &lt;code>tags&lt;/code> e &lt;code>content&lt;/code>, e restituisce l&amp;rsquo;evento firmato completo con &lt;code>id&lt;/code>, &lt;code>pubkey&lt;/code> e &lt;code>sig&lt;/code> aggiunti. Il punto chiave è che la chiave privata non lascia mai il contesto isolato dell&amp;rsquo;estensione; l&amp;rsquo;applicazione web sottomette un evento non firmato e riceve indietro uno firmato.&lt;/p>
&lt;p>I metodi opzionali coprono la cifratura: &lt;code>window.nostr.nip04.encrypt&lt;/code> e &lt;code>window.nostr.nip04.decrypt&lt;/code> per il vecchio schema NIP-04 (ora deprecato), e &lt;code>window.nostr.nip44.encrypt&lt;/code> e &lt;code>window.nostr.nip44.decrypt&lt;/code> per lo schema NIP-44 corrente. Le estensioni che supportano NIP-44 possono quindi gestire sia la cifratura dei messaggi diretti sia qualsiasi altra applicazione che necessita di cifratura keyed su pubkey senza che la pagina chiamante veda l&amp;rsquo;nsec.&lt;/p>
&lt;p>La spec include anche una raccomandazione agli autori di estensioni: caricare gli script con &lt;code>&amp;quot;run_at&amp;quot;: &amp;quot;document_end&amp;quot;&lt;/code> nel manifest dell&amp;rsquo;estensione così &lt;code>window.nostr&lt;/code> è disponibile in modo sincrono quando la pagina si carica, evitando race condition in cui un client controlla &lt;code>window.nostr&lt;/code> prima che l&amp;rsquo;estensione l&amp;rsquo;abbia iniettato.&lt;/p>
&lt;p>Un esempio chiave di NIP-07 in azione è il progetto Keycast trattato sopra. Il frontend web di Keycast usa NIP-07 per firmare eventi di auth HTTP NIP-98: l&amp;rsquo;app SvelteKit non gestisce mai direttamente l&amp;rsquo;nsec dell&amp;rsquo;utente. Chiama &lt;code>window.nostr.signEvent&lt;/code> per produrre l&amp;rsquo;header di auth, poi invia quell&amp;rsquo;header all&amp;rsquo;API Keycast. Questa architettura significa che il materiale della chiave resta nell&amp;rsquo;estensione browser lungo tutto il flusso di gestione delle chiavi di team.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;7f8e9d0c1b2a3e4f5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1747785600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Hello from a NIP-07 signed event&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2cdd&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="nip-deep-dive-nip-39-identità-esterne-nei-profili">NIP Deep Dive: NIP-39 (identità esterne nei profili)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/39.md">NIP-39&lt;/a> definisce come un utente Nostr può dichiarare il controllo su identità esterne di piattaforma nel proprio profilo. Ciascuna dichiarazione usa un tag &lt;code>i&lt;/code> dentro un evento di kind:10011, asserendo la proprietà di uno specifico account su un&amp;rsquo;altra piattaforma insieme a una prova che può essere verificata indipendentemente.&lt;/p>
&lt;p>Ogni tag segue il formato &lt;code>[&amp;quot;i&amp;quot;, &amp;quot;platform:identity&amp;quot;, &amp;quot;proof&amp;quot;]&lt;/code>, dove &lt;code>platform:identity&lt;/code> combina il nome della piattaforma e lo username con un separatore due punti (&lt;code>github:semisol&lt;/code>, &lt;code>twitter:semisol_public&lt;/code>). &lt;code>proof&lt;/code> punta a un artefatto verificabile sulla piattaforma stessa.&lt;/p>
&lt;p>Per GitHub, la prova è un ID di Gist. L&amp;rsquo;utente crea una Gist pubblica dal proprio account GitHub contenente il testo &lt;code>Verifying that I control the following Nostr public key: npub1...&lt;/code>. Un client che verifica il claim recupera &lt;code>https://gist.github.com/&amp;lt;identity&amp;gt;/&amp;lt;proof&amp;gt;&lt;/code> e controlla che la Gist sia stata scritta dallo username GitHub reclamato e contenga la pubkey attesa. Per Twitter la prova è un ID di tweet, per Mastodon un ID di post, e per Telegram un riferimento a messaggio in un gruppo pubblico.&lt;/p>
&lt;p>Il nome del provider di identità deve contenere solo &lt;code>a-z&lt;/code>, &lt;code>0-9&lt;/code> e i caratteri &lt;code>._-/&lt;/code>, e non deve contenere &lt;code>:&lt;/code>. I nomi di identità dovrebbero essere normalizzati in minuscolo, con l&amp;rsquo;alias principale usato quando ne esistono multipli.&lt;/p>
&lt;p>La discussione NIP-05 &lt;code>.bit&lt;/code> Namecoin che avviene questa settimana mostra il ruolo di NIP-39 nello stack di identità più ampio: fornisce un modo standardizzato e agnostico ai relay di cross-referenziare una chiave Nostr con un&amp;rsquo;identità stabilita altrove, senza richiedere alcuna autorità di verifica centrale. Un client può verificare indipendentemente la prova recuperando un artefatto pubblico sulla piattaforma nominata, e la prova è legata alla specifica pubkey Nostr nel testo della Gist o del tweet, non a una credenziale di piattaforma generica.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;7f8e9d0c1b2a3e4f5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1747785600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10011&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;github:semisol&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9721ce4ee4fceb91c9711ca2a6c9a5ab&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;twitter:semisol_public&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1619358434134196225&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;mastodon:bitcoinhackers.org/@semisol&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;109775066355589974&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3eff&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>È tutto per questa settimana. Se stai costruendo qualcosa o hai notizie da condividere, mandaci un DM su Nostr o trovaci su &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #22</title><link>https://nostrcompass.org/it/newsletters/2026-05-13-newsletter/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-05-13-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale allo sviluppo del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Nostr VPN pubblica otto versioni in sette giorni, da un flusso di pairing dei dispositivi ridisegnato a uno swap AEAD FIPS che circa raddoppia il throughput TCP. Marmot Protocol (la base di White Noise) pubblica una versione frontend che completa la funzionalità di blocco degli utenti e 31 PR unite su MDK e backend. Grain pubblica v0.6.0 con quattro nuove implementazioni NIP in un unico traguardo. Citrine pubblica v3.0.0-pre1 con Tor integrato e aggregazione relay. Amber pubblica v6.1.0-pre2 con miglioramenti al flusso di connessione e alla firma. Alby Hub pubblica v1.22.2 con una pagina AI e Agenti e l&amp;rsquo;integrazione Core Lightning. Mostro pubblica i bond del taker concorrenti e mostro-core v0.11.0. Jumble pubblica cinque versioni con la cronologia delle ricerche recenti e correzioni alla persistenza dei dati account. Nostrord pubblica tre versioni con modal di condivisione gruppo e pacchetti Arch Linux. Flotilla pubblica 1.8.0 con videochiamate, rendering email e menzioni di stanza. Calendar by Formstr pubblica v1.5.1 con la pianificazione degli appuntamenti e la sincronizzazione del calendario Android. Tamagostrich lancia un Tamagotchi NIP-78 decentralizzato con ricompense in sats.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale allo sviluppo del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Nostr VPN pubblica otto versioni in sette giorni, da un flusso di pairing dei dispositivi ridisegnato a uno swap AEAD FIPS che circa raddoppia il throughput TCP. Marmot Protocol (la base di White Noise) pubblica una versione frontend che completa la funzionalità di blocco degli utenti e 31 PR unite su MDK e backend. Grain pubblica v0.6.0 con quattro nuove implementazioni NIP in un unico traguardo. Citrine pubblica v3.0.0-pre1 con Tor integrato e aggregazione relay. Amber pubblica v6.1.0-pre2 con miglioramenti al flusso di connessione e alla firma. Alby Hub pubblica v1.22.2 con una pagina AI e Agenti e l&amp;rsquo;integrazione Core Lightning. Mostro pubblica i bond del taker concorrenti e mostro-core v0.11.0. Jumble pubblica cinque versioni con la cronologia delle ricerche recenti e correzioni alla persistenza dei dati account. Nostrord pubblica tre versioni con modal di condivisione gruppo e pacchetti Arch Linux. Flotilla pubblica 1.8.0 con videochiamate, rendering email e menzioni di stanza. Calendar by Formstr pubblica v1.5.1 con la pianificazione degli appuntamenti e la sincronizzazione del calendario Android. Tamagostrich lancia un Tamagotchi NIP-78 decentralizzato con ricompense in sats.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="nostr-vpn-pubblica-otto-versioni-culminando-con-v4010">Nostr VPN pubblica otto versioni culminando con v4.0.10&lt;/h3>
&lt;p>Nostr VPN, la VPN mesh decentralizzata basata su Rust che utilizza Nostr per la scoperta dei peer, ha pubblicato otto versioni da v4.0.1 a v4.0.10 su macOS, Linux, Windows e Android. La modifica principale di v4.0.8: l&amp;rsquo;AEAD è stato sostituito dal backend software RustCrypto chacha20poly1305 con ChaCha20-Poly1305 di BoringSSL in ring 0.17, che utilizza NEON ottimizzato a mano su aarch64 e AVX2/AVX-512 su x86_64. I benchmark Docker su hardware identico hanno mostrato il throughput TCP diretto a 2 nodi passare da 437 a 1097 Mbps. v4.0.9 ha aggiunto il batching sendmmsg(2) sul percorso di invio UDP, portando il TCP single-stream da 1066 a 1548 Mbps (1,45×). v4.0.10 ha pubblicato una completa revisione della UX di pairing dei dispositivi.&lt;/p>
&lt;h3 id="marmot--white-noise-pubblica-una-versione-frontend-che-completa-il-blocco-degli-utenti-e-31-pr-unite-su-mdk-e-backend">Marmot / White Noise pubblica una versione frontend che completa il blocco degli utenti e 31 PR unite su MDK e backend&lt;/h3>
&lt;p>White Noise ha pubblicato v2026.5.7+24 il 7 maggio completando il set di funzionalità di blocco. Un utente bloccato è ora nascosto dagli inviti, dalle anteprime delle chat, dalle timeline dei messaggi, dai risultati di ricerca e dalle notifiche, e i suoi messaggi non contano più nei badge dei messaggi non letti. MDK ha integrato PR #258 con il formato wire dell&amp;rsquo;estensione v3 e lo schema disappearing_message_secs, gettando le basi per i messaggi a scomparsa.&lt;/p>
&lt;h3 id="grain-v060-aggiunge-nip-40-nip-50-nip-70-e-nip-45">Grain v0.6.0 aggiunge NIP-40, NIP-50, NIP-70 e NIP-45&lt;/h3>
&lt;p>Grain ha pubblicato v0.6.0 il 6 maggio con quattro nuove implementazioni NIP. La scadenza degli eventi NIP-40 consente ai publisher di impostare un timestamp di scadenza affinché il relay elimini gli eventi dopo la loro scadenza. La ricerca full-text NIP-50 consente ai client di emettere filtri di ricerca nei messaggi REQ. Gli eventi protetti NIP-70 impediscono ai relay di ricondividere eventi senza l&amp;rsquo;esplicita autorizzazione dell&amp;rsquo;autore. Le query di conteggio NIP-45 consentono ai client di chiedere a un relay di restituire un conteggio degli eventi corrispondenti.&lt;/p>
&lt;h2 id="pubblicazioni-della-settimana">Pubblicazioni della settimana&lt;/h2>
&lt;h3 id="citrine-v300-pre1-integra-tor-nativo-e-aggregazione-relay">Citrine v3.0.0-pre1 integra Tor nativo e aggregazione relay&lt;/h3>
&lt;p>Citrine ha pubblicato v3.0.0-pre1 con supporto Tor integrato per un accesso ai relay che preserva la privacy e l&amp;rsquo;aggregazione relay, dove Citrine può estrarre eventi da più relay upstream e servirli ai client locali. PR #139 aggiunge il supporto NIP-77 (Negentropy Reconciliation) per la sincronizzazione efficiente degli eventi basata sulla riconciliazione degli insiemi.&lt;/p>
&lt;h3 id="amber-v610-pre2-migliora-il-flusso-di-connessione-delle-nuove-app">Amber v6.1.0-pre2 migliora il flusso di connessione delle nuove app&lt;/h3>
&lt;p>Amber ha pubblicato v6.1.0-pre2. Le correzioni principali: il dialogo del firmatario ora si chiude correttamente dopo aver accettato una richiesta bunker, le richieste bunker malformate mostrano una schermata di richiesta non valida, e viene aggiunta la limitazione della velocità per le richieste di firma basate su intent.&lt;/p>
&lt;h3 id="alby-hub-v1222-aggiunge-la-pagina-ai-e-agenti-e-il-supporto-core-lightning">Alby Hub v1.22.2 aggiunge la pagina AI e Agenti e il supporto Core Lightning&lt;/h3>
&lt;p>Alby Hub ha pubblicato v1.22.2. La nuova pagina AI e Agenti espone le capacità Lightning e NWC di Alby Hub agli agenti AI e agli strumenti compatibili MCP. Core Lightning (CLN) è ora un backend supportato insieme a LND e LDK.&lt;/p>
&lt;h3 id="mostro-pubblica-i-bond-del-taker-concorrenti-e-mostro-core-v0110">Mostro pubblica i bond del taker concorrenti e mostro-core v0.11.0&lt;/h3>
&lt;p>Mostro ha integrato 11 PR che avanzano la funzionalità di bond del taker. PR #733 implementa i bond del taker concorrenti dove più taker possono inviare fatture di bond contemporaneamente e il primo a bloccare vince. mostro-core ha pubblicato v0.11.0 con PR #144 che aggiunge Action::PayBondInvoice e Status::WaitingTakerBond. mostro-cli ha pubblicato v0.15.0.&lt;/p>
&lt;h3 id="jumble-pubblica-cinque-versioni-con-ricerca-recente-e-persistenza-degli-account">Jumble pubblica cinque versioni con ricerca recente e persistenza degli account&lt;/h3>
&lt;p>Jumble ha pubblicato v26.5.2 fino a v26.5.6. v26.5.5 aggiunge la cronologia delle ricerche recenti. Un bug critico di persistenza è corretto in v26.5.6: gli account e i dati memorizzati nella cache sopravvivono ora a un riavvio completo dell&amp;rsquo;app.&lt;/p>
&lt;h3 id="nostrord-pubblica-modal-di-condivisione-gruppo-caricamento-media-e-pacchetti-arch-linux">Nostrord pubblica modal di condivisione gruppo, caricamento media e pacchetti Arch Linux&lt;/h3>
&lt;p>Nostrord ha pubblicato v1.0.0, v1.0.1 e v1.0.2. v1.0.1 pubblica pacchetti Arch Linux tramite AUR come nostrord-bin con artefatti firmati con PGP, un pulsante per saltare all&amp;rsquo;ultimo messaggio e l&amp;rsquo;incolla di immagini/media nella chat. v1.0.2 aggiunge la condivisione del gruppo tramite PR #49 con un modal di condivisione che genera sia un URI nostr:naddr che un link nostrord.com/open/.&lt;/p>
&lt;h3 id="fips-v030-pubblica-portata-multipiattaforma-scoperta-peer-nostr-e-un-gateway-per-lan-non-modificate">FIPS v0.3.0 pubblica portata multipiattaforma, scoperta peer Nostr e un gateway per LAN non modificate&lt;/h3>
&lt;p>FIPS ha pubblicato v0.3.0, un traguardo importante che si espande da Linux-only a Linux, macOS, Windows e OpenWrt. I nodi ora pubblicano annunci overlay firmati come eventi parametrizzati sostituibili kind:37195 sui relay Nostr pubblici. Lo stesso swap ChaCha20-Poly1305 di ring 0.17 che ha alimentato il salto di throughput di Nostr VPN è presente anche in FIPS v0.3.0.&lt;/p>
&lt;h3 id="camelus-v1101-pubblica-versioni-desktop">Camelus v1.10.1 pubblica versioni desktop&lt;/h3>
&lt;p>Camelus ha pubblicato v1.10.1 con versioni desktop per Windows e Linux, espandendo la distribuzione oltre il solo mobile.&lt;/p>
&lt;h3 id="flotilla-180-pubblica-videochiamate-rendering-email-e-menzioni-di-stanza">Flotilla 1.8.0 pubblica videochiamate, rendering email e menzioni di stanza&lt;/h3>
&lt;p>Flotilla ha pubblicato 1.8.0. Le stanze vocali ora supportano il video: i partecipanti possono attivare le telecamere o condividere il proprio schermo durante una chiamata. Il rendering email arriva tramite un aggiornamento alla libreria welshman. Le menzioni di stanza consentono agli utenti di fare riferimento ad altre stanze e relay con link inline cliccabili.&lt;/p>
&lt;h3 id="calendar-by-formstr-pubblica-v151-con-pianificazione-degli-appuntamenti-e-sincronizzazione-del-calendario-android">Calendar by Formstr pubblica v1.5.1 con pianificazione degli appuntamenti e sincronizzazione del calendario Android&lt;/h3>
&lt;p>Calendar by Formstr ha pubblicato v1.5.0 il 10 maggio e v1.5.1 l'11 maggio. La pianificazione degli appuntamenti consente agli utenti di creare slot temporali prenotabili. L&amp;rsquo;integrazione del calendario Android in sola lettura sincronizza gli eventi Nostr con il calendario del dispositivo.&lt;/p>
&lt;h2 id="in-sviluppo">In sviluppo&lt;/h2>
&lt;h3 id="amethyst-aggiunge-post-programmati-regole-di-comunità-nip-9a-e-un-relay-locale-desktop">Amethyst aggiunge post programmati, regole di comunità NIP-9A e un relay locale desktop&lt;/h3>
&lt;p>Amethyst ha integrato 78 PR questa settimana. I post programmati arrivano in PR #2765. Una versione desktop acquisisce un relay locale integrato con persistenza degli eventi SQLite in PR #2841. Tre PR implementano le regole di comunità NIP-9A: PR #2798 valida i post rispetto alle regole di comunità prima dell&amp;rsquo;invio, PR #2799 aggiunge un editor di regole NIP-9A strutturato, e PR #2800 aggiunge un filtro di feed NIP-9A opzionale.&lt;/p>
&lt;h3 id="shopstr-aggiunge-la-registrazione-degli-audit-mcp-e-la-sicurezza-delle-sessioni">Shopstr aggiunge la registrazione degli audit MCP e la sicurezza delle sessioni&lt;/h3>
&lt;p>Shopstr ha integrato cinque PR. La registrazione degli audit per il livello di strumenti MCP arriva in PR #456. La sicurezza delle sessioni si rafforza in PR #477 con il pinning delle sessioni alla chiave API di origine e l&amp;rsquo;espulsione TTL.&lt;/p>
&lt;h3 id="dart-ndk-aggiunge-il-supporto-web-e-la-verifica-delle-firme-dei-sigilli">Dart NDK aggiunge il supporto web e la verifica delle firme dei sigilli&lt;/h3>
&lt;p>Dart NDK ha integrato sei PR. Il supporto web arriva in SembastCacheManager tramite PR #571. La verifica delle firme dei sigilli arriva in PR #595 per il flusso NIP-59 Gift Wrap.&lt;/p>
&lt;h2 id="nuovi-progetti">Nuovi progetti&lt;/h2>
&lt;h3 id="tamagostrich-lancia-un-tamagotchi-nip-78-decentralizzato-con-ricompense-in-sats">Tamagostrich lancia un Tamagotchi NIP-78 decentralizzato con ricompense in sats&lt;/h3>
&lt;p>Tamagostrich è un gioco di animale virtuale nel browser lanciato all&amp;rsquo;IDENTITY Hackathon 2026 dove un piccolo struzzo, Nori, si evolve attraverso la tua attività sociale Nostr. Lo stato dell&amp;rsquo;animale è memorizzato in un evento NIP-78 kind:30078 per la sincronizzazione multi-dispositivo. Le ricompense ai traguardi vengono pagate in sats tramite NIP-47: 50 sats al livello 5, 210 sats al livello 10 e 420 sats al livello massimo 21, inviati all&amp;rsquo;indirizzo lud16 dell&amp;rsquo;utente.&lt;/p>
&lt;h2 id="lavori-su-protocollo-e-specifiche">Lavori su protocollo e specifiche&lt;/h2>
&lt;p>Cinque nuove proposte sono state aperte questa settimana:&lt;/p>
&lt;p>PR #2331 propone NIP-9A: Regole di Comunità Verificabili, introducendo kind:34551 per documenti di regole di comunità leggibili da macchina e firmati crittograficamente.&lt;/p>
&lt;p>PR #2335 propone gli Eventi di Prenotazione per i Marketplace Nostr, definendo kind:32122 (eventi di prenotazione parametrizzati sostituibili), kind:1326 (record di audit delle transizioni solo in aggiunta) e kind:32124 (recensioni post-transazione). La negoziazione è privata tramite messaggi gift-wrapped NIP-59.&lt;/p>
&lt;p>PR #2334 propone i Servizi di Escrow per i Marketplace Nostr usando kind:30303 affinché gli operatori di escrow dichiarino il loro indirizzo di contratto EVM e il listino tariffe.&lt;/p>
&lt;p>PR #2333 propone i Profili di Annuncio di Alloggio per gli Annunci del Marketplace NIP-99, estendendo NIP-99 con tag g di indice geospaziale H3 per gli annunci di affitto a breve termine.&lt;/p>
&lt;p>PR #2332 propone NIP-BC: Zap On-chain (kind 8333), sfruttando l&amp;rsquo;identità diretta tra le chiavi Nostr e gli indirizzi Bitcoin Taproot. Il numero di kind rispecchia NIP-57: 9735 è la porta P2P di Lightning; 8333 è la porta P2P della mainnet Bitcoin.&lt;/p>
&lt;h2 id="approfondimento-nip-nip-78-dati-specifici-dellapp">Approfondimento NIP: NIP-78 (dati specifici dell&amp;rsquo;app)&lt;/h2>
&lt;p>NIP-78 definisce un metodo standard con cui le applicazioni memorizzano dati arbitrari privati o pubblici per conto di un utente tramite eventi Nostr. Il tipo di evento centrale è 30078, un evento parametrizzato sostituibile in cui il tag d è una stringa identificatore definita dall&amp;rsquo;applicazione. Un&amp;rsquo;applicazione assegna al proprio slot di storage un tag d univoco e pubblica un evento 30078 con qualsiasi contenuto JSON o testo che deve persistere. La motivazione principale è la sincronizzazione multi-dispositivo senza un server centralizzato. Per i dati privati dell&amp;rsquo;applicazione, gli eventi NIP-78 possono cifrare il campo content usando NIP-44 prima della pubblicazione. Gli utenti attuali includono Tamagostrich (sincronizzazione dello stato dell&amp;rsquo;animale), Wisp (backup del portafoglio e impostazioni di sicurezza), NosPress (stato di orchestrazione CMS) e diverse implementazioni di sincronizzazione delle impostazioni dei client Nostr.&lt;/p>
&lt;hr>
&lt;p>Fonti primarie:&lt;/p>
&lt;ul>
&lt;li>Specifica NIP-78: &lt;a href="https://github.com/nostr-protocol/nips/blob/master/78.md">https://github.com/nostr-protocol/nips/blob/master/78.md&lt;/a>&lt;/li>
&lt;li>Tamagostrich: &lt;a href="https://github.com/Negr087/tamagostrich">https://github.com/Negr087/tamagostrich&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Vedi anche: Liste NIP-51, Metadati elenco relay NIP-65&lt;/p>
&lt;h2 id="approfondimento-nip-nip-98-http-auth">Approfondimento NIP: NIP-98 (HTTP Auth)&lt;/h2>
&lt;p>NIP-98 definisce uno schema di autenticazione HTTP che consente alle coppie di chiavi Nostr di autorizzare richieste a server HTTP, eliminando nomi utente, password o token OAuth. Un client costruisce un evento Nostr di breve durata di kind 27235, lo firma con la propria chiave privata, codifica il JSON in base64 e lo invia in un header HTTP Authorization: Nostr &lt;base64>. L&amp;rsquo;evento kind 27235 include il metodo HTTP in un tag method, l&amp;rsquo;URL completo della richiesta in un tag u e un timestamp created_at. Il server valida la firma, verifica che metodo e URL corrispondano e controlla che il timestamp sia recente per prevenire gli attacchi di replay. NIP-98 è usato in Blossom (BUD-01) per l&amp;rsquo;autenticazione dell&amp;rsquo;upload dei blob, Routstr per il controllo degli accessi API per richiesta, Sprout per l&amp;rsquo;autenticazione del trasporto git e Alby Hub per l&amp;rsquo;autenticazione dell&amp;rsquo;API admin.&lt;/p>
&lt;hr>
&lt;p>Fonti primarie:&lt;/p>
&lt;ul>
&lt;li>Specifica NIP-98: &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">https://github.com/nostr-protocol/nips/blob/master/98.md&lt;/a>&lt;/li>
&lt;li>BUD-01: &lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/01.md">https://github.com/hzrd149/blossom/blob/master/buds/01.md&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Vedi anche: Integrazione archiviazione file HTTP NIP-96&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Se state costruendo qualcosa o avete notizie da condividere, inviateci un DM su Nostr o trovateci su nostrcompass.org.&lt;/p></content:encoded></item><item><title>Nostr Compass #21</title><link>https://nostrcompass.org/it/newsletters/2026-05-06-newsletter/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-05-06-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Marmot Protocol pubblica MDK 0.8.0 con le prime primitive di notifica MIP-05, pacchetti di chiavi NIP-51 indirizzabili e una revisione della sicurezza rafforzata. LaWallet NWC pubblica v0.10.0, la versione più importante dalla copertura di OpenSats, con una dashboard admin completa, portafoglio utente, registro delle attività end-to-end e un nuovo schema LightningAddress 1→N e NWCConnection. Amethyst porta uno sprint di stabilizzazione di Nests con l&amp;rsquo;eliminazione dei gap audio durante il refresh JWT, sottoscrizioni di dati chiave lifecycle-aware, riconnessione keep-alive dei relay e un indicatore animato del parlante attivo. ngit pubblica v2.4.2 e v2.4.3 correggendo il rilevamento del server GRASP per le submission di PR e il filtraggio degli eventi di stato multi-remote. GRAIN pubblica v0.5.4 con hardening per la produzione e una correzione silenziosa di perdita di dati nel Docker quick-start. Mostro Core pubblica v0.10.1 con artefatti di release firmati con PGP. Clave lancia v0.2.0 con supporto multi-account su iOS.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Marmot Protocol pubblica MDK 0.8.0 con le prime primitive di notifica MIP-05, pacchetti di chiavi NIP-51 indirizzabili e una revisione della sicurezza rafforzata. LaWallet NWC pubblica v0.10.0, la versione più importante dalla copertura di OpenSats, con una dashboard admin completa, portafoglio utente, registro delle attività end-to-end e un nuovo schema LightningAddress 1→N e NWCConnection. Amethyst porta uno sprint di stabilizzazione di Nests con l&amp;rsquo;eliminazione dei gap audio durante il refresh JWT, sottoscrizioni di dati chiave lifecycle-aware, riconnessione keep-alive dei relay e un indicatore animato del parlante attivo. ngit pubblica v2.4.2 e v2.4.3 correggendo il rilevamento del server GRASP per le submission di PR e il filtraggio degli eventi di stato multi-remote. GRAIN pubblica v0.5.4 con hardening per la produzione e una correzione silenziosa di perdita di dati nel Docker quick-start. Mostro Core pubblica v0.10.1 con artefatti di release firmati con PGP. Clave lancia v0.2.0 con supporto multi-account su iOS.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="mdk-080-aggiunge-le-primitive-di-notifica-mip-05-e-i-pacchetti-di-chiavi-indirizzabili">MDK 0.8.0 aggiunge le primitive di notifica MIP-05 e i pacchetti di chiavi indirizzabili&lt;/h3>
&lt;p>MDK, la libreria Rust centrale per il protocollo Marmot, ha pubblicato v0.8.0 il 4 maggio. Questa versione introduce i primi blocchi costruttivi di notifica MIP-05, sposta i pacchetti di chiavi MIP-00 verso eventi indirizzabili così da poter sostituire il pacchetto chiavi di un utente in-place, migliora la compatibilità dei gruppi a versione mista, espande la copertura UniFFI per i binding mobile e rafforza i percorsi di validazione attorno alle azioni admin, commit, storage, limiti di cifratura e gestione dei replay. Le primitive MIP-05 includono helper di indice foglia aggiunti in PR #235, che forniscono ai client downstream informazioni sufficienti per consegnare notifiche push per destinatario senza rivelare la struttura del gruppo. PR #273 ripristina la pubblicazione di mdk-core su crates.io, e PR #269 espone il modulo test_util dietro una feature Cargo test-utils così che le suite di test client esterne possano condividere il test harness di Marmot.&lt;/p>
&lt;h3 id="lawallet-nwc-v0100-pubblica-il-monorepo-completo-e-il-portafoglio-utente-finale">LaWallet NWC v0.10.0 pubblica il monorepo completo e il portafoglio utente finale&lt;/h3>
&lt;p>LaWallet NWC, l&amp;rsquo;implementazione NIP-47 Nostr Wallet Connect del team LaWallet, ha pubblicato v0.10.0 il 30 aprile. È la versione più importante da quando il progetto ha ricevuto il finanziamento OpenSats. Include il monorepo completo, la dashboard admin completa, un portafoglio utente finale, un registro attività end-to-end, branding dinamico e il nuovo schema LightningAddress 1→N e NWCConnection. Il portafoglio per gli utenti finali, pubblicato in PR #191, copre l&amp;rsquo;onboarding, la home, invio/ricezione, scansione, valute, un feed attività e una cache offline.&lt;/p>
&lt;h3 id="amethyst-stabilizza-nests-con-keep-alive-resilienza-jwt-e-sottoscrizioni-lifecycle">Amethyst stabilizza Nests con keep-alive, resilienza JWT e sottoscrizioni lifecycle&lt;/h3>
&lt;p>Amethyst, il client Android ricco di funzionalità, ha continuato il lavoro sulle stanze audio NIP-53 Nests con uno sprint di stabilizzazione incentrato sui modi di guasto che interrompevano le chiamate in produzione. La correzione del gap audio in PR #2733 sovrappone la nuova acquisizione delle credenziali con il flusso attivo durante il refresh JWT. Un nuovo meccanismo keep-alive in PR #2730 riconnette i relay disconnessi senza richiedere un&amp;rsquo;azione manuale dell&amp;rsquo;utente, e PR #2728 sostituisce la vecchia KeyDataSourceSubscription con LifecycleAwareKeyDataSourceSubscription. PR #2724 aggiunge un indicatore ad anello esterno animato che evidenzia il parlante attivo nelle sessioni multi-parlante.&lt;/p>
&lt;h3 id="ngit-v242-e-v243-correggono-il-rilevamento-del-server-grasp-e-gli-eventi-di-stato-multi-remote">ngit v2.4.2 e v2.4.3 correggono il rilevamento del server GRASP e gli eventi di stato multi-remote&lt;/h3>
&lt;p>ngit, lo strumento da riga di comando e plugin git per la collaborazione NIP-34, ha pubblicato v2.4.2 il 28 aprile e v2.4.3 il 1° maggio. v2.4.2 corregge una mancata corrispondenza di normalizzazione URL in cui i repo_grasps contenevano hostname normalizzati ma il confronto veniva effettuato rispetto agli URL di clone completi. v2.4.3 corregge un&amp;rsquo;ambiguità negli eventi di stato che emergeva quando un repository ha più remote nostr:// che condividono lo stesso identificatore.&lt;/p>
&lt;h3 id="grain-v054-aggiunge-hardening-per-la-produzione-e-corregge-una-perdita-di-dati-silenziosa">GRAIN v0.5.4 aggiunge hardening per la produzione e corregge una perdita di dati silenziosa&lt;/h3>
&lt;p>GRAIN, il relay Nostr e la libreria client basati su Go, ha pubblicato v0.5.4 il 30 aprile. La versione raccoglie sei correzioni accumulate dalla v0.5.3, incluso un bug di perdita di dati silenziosa nel Docker quick-start che in precedenza eliminava eventi al riavvio del container, e un bug di correttezza nel livello di storage nelle letture di eventi indirizzabili.&lt;/p>
&lt;h3 id="mostro-core-v0101-aggiunge-artefatti-di-release-firmati-con-pgp">Mostro Core v0.10.1 aggiunge artefatti di release firmati con PGP&lt;/h3>
&lt;p>Mostro Core, la libreria Rust che fornisce funzionalità peer-to-peer per il daemon Mostro, ha pubblicato v0.10.1 il 28 aprile. La nuova versione aggiunge artefatti di release firmati con PGP e un flusso di verifica della release così che i packager downstream possano confermare la provenienza degli artefatti.&lt;/p>
&lt;h2 id="release-con-tag">Release con tag&lt;/h2>
&lt;h3 id="clave-v020-lancia-il-multi-account-su-ios-con-firma-nip-46-nostr-connect">Clave v0.2.0 lancia il multi-account su iOS con firma NIP-46 (Nostr Connect)&lt;/h3>
&lt;p>Clave, l&amp;rsquo;app iOS per la firma remota NIP-46, ha pubblicato v0.2.0 il 5 maggio. Il principale aggiornamento introduce il supporto multi-account: Clave può ora gestire fino a quattro account su un unico dispositivo, con un selettore one-tap e isolamento per account. PR #23 aggiunge il codice iOS per il multi-account, e PR #22 aggiunge un campo signer_pubkey al payload APNs così che il dispositivo sappia a quale account appartiene una richiesta di firma remota.&lt;/p>
&lt;h3 id="wisp-pubblica-v103--v105-con-lavori-di-stabilità">Wisp pubblica v1.0.3 → v1.0.5 con lavori di stabilità&lt;/h3>
&lt;p>Wisp, il client Android, ha pubblicato v1.0.3, v1.0.4 e v1.0.5 il 4 maggio con lavori di stabilità. PR #506 aggiunge Thumbhash per le anteprime sfocate delle immagini mentre i media completi si caricano, e PR #514 riduce lo scatto nel cambio delle schede inferiori.&lt;/p>
&lt;h3 id="amber-610-pre1-pubblica-correzioni-di-layout-e-stabilità">Amber 6.1.0-pre1 pubblica correzioni di layout e stabilità&lt;/h3>
&lt;p>Amber, l&amp;rsquo;app di firma Android per NIP-55 e NIP-46, ha pubblicato v6.1.0-pre1 con una revisione del layout nel flusso di connessione delle nuove app e diverse correzioni di crash. PR #416 corregge il layout di ActivityStatsBar e i problemi di overflow del testo.&lt;/p>
&lt;h3 id="routstr-core-v043-migliora-pagamento-rimborso-e-reportistica-sullutilizzo">Routstr Core v0.4.3 migliora pagamento, rimborso e reportistica sull&amp;rsquo;utilizzo&lt;/h3>
&lt;p>Routstr Core ha pubblicato v0.4.3 come pre-release il 1° maggio con miglioramenti alla gestione dei pagamenti e dei rimborsi, al tracciamento dei costi e alla reportistica sull&amp;rsquo;utilizzo.&lt;/p>
&lt;h3 id="nostria-v3137-fino-a-v3141-aggiungono-i-segnalibri-web-e-un-tema-auto">Nostria v3.1.37 fino a v3.1.41 aggiungono i segnalibri Web e un tema Auto&lt;/h3>
&lt;p>Nostria, il client Nostr multi-piattaforma, ha pubblicato v3.1.37 fino a v3.1.41 aggiungendo il supporto ai segnalibri Web NIP-B0, un tema Auto che segue le impostazioni del dispositivo e la visualizzazione PDF integrata nell&amp;rsquo;app.&lt;/p>
&lt;h3 id="noornote-v089-corregge-la-schermata-vuota-al-primo-avvio-sul-desktop">NoorNote v0.8.9 corregge la schermata vuota al primo avvio sul desktop&lt;/h3>
&lt;p>NoorNote ha pubblicato v0.8.9 il 28 aprile correggendo un bug di schermata vuota al primo avvio dell&amp;rsquo;app desktop.&lt;/p>
&lt;h3 id="kubo-v034-fino-a-v041-pubblicano-una-piattaforma-video-nostr-a-misura-di-bambino-con-controlli-parentali-e-curation-del-feed-tramite-web-of-trust">Kubo v0.3.4 fino a v0.4.1 pubblicano una piattaforma video Nostr a misura di bambino con controlli parentali e curation del feed tramite Web of Trust&lt;/h3>
&lt;p>Kubo, una piattaforma video a misura di bambino su Nostr, ha pubblicato v0.3.4 fino a v0.4.1 il 4 e 5 maggio. Ogni bambino riceve una coppia di chiavi Nostr separata e un feed incentrato sui video dove i genitori controllano i limiti di tempo (da 15 a 180 minuti al giorno), le finestre temporali consentite e la visibilità delle azioni sui post.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="sprout-pubblica-desktop-v004-e-v005-con-autenticazione-agente-nip-oa-e-il-sidecar-pair-relay">Sprout pubblica Desktop v0.0.4 e v0.0.5 con autenticazione agente NIP-OA e il sidecar pair-relay&lt;/h3>
&lt;p>Sprout, il client Nostr di Block con relay integrato, ha pubblicato Desktop v0.0.4 il 5 maggio e v0.0.5 il 6 maggio. PR #471 integra l&amp;rsquo;autenticazione agente NIP-OA nel flusso di membership NIP-43 del relay così che un agente autonomo possa dimostrare che una specifica chiave pubblica umana ha autorizzato le sue azioni. Un nuovo relay sidecar effimero per il pairing di dispositivi NIP-AB arriva in PR #467 come sprout-pair-relay.&lt;/p>
&lt;h3 id="nostream-aggiunge-il-supporto-relay-marmot-e-le-reazioni-nip-25">nostream aggiunge il supporto relay Marmot e le reazioni NIP-25&lt;/h3>
&lt;p>nostream, l&amp;rsquo;implementazione relay Node.js, ha integrato il supporto relay Marmot Protocol che copre i MIP da 00 a 03 in PR #602, il supporto alle reazioni NIP-25 in PR #589 e la corrispondenza del prefisso geohash per i filtri #g in PR #586.&lt;/p>
&lt;h3 id="strfry-aggiunge-losservabilità-per-connessione-e-riduce-il-tetto-nofiles">strfry aggiunge l&amp;rsquo;osservabilità per connessione e riduce il tetto nofiles&lt;/h3>
&lt;p>strfry, il relay Nostr in C++, ha integrato 14 PR che puntano all&amp;rsquo;osservabilità. PR #218 aggiunge l&amp;rsquo;osservabilità degli outbound in attesa per connessione e un cap di back-pressure configurabile. PR #224 rimuove le allocazioni heap di std::function dal fanout del monitor per evento.&lt;/p>
&lt;h3 id="damus-sostituisce-i-gif-tenor-con-un-proxy-purple-e-pubblica-la-ux-di-compattazione">Damus sostituisce i GIF Tenor con un proxy Purple e pubblica la UX di compattazione&lt;/h3>
&lt;p>Damus ha integrato PR #3737 sostituendo l&amp;rsquo;integrazione GIF Tenor con un proxy Damus Purple.&lt;/p>
&lt;h3 id="primal-android-migliora-explore-gli-avvisi-e-il-badge-di-verifica-nip-05">Primal Android migliora Explore, gli avvisi e il badge di verifica NIP-05&lt;/h3>
&lt;p>Primal Android ha integrato PR #1043 correggendo un badge di verifica NIP-05 lampeggiante per gli utenti con identificatori _@domain.&lt;/p>
&lt;h3 id="alby-hub-aggiunge-i-pagamenti-nwc-dalle-connessioni-delle-app">Alby Hub aggiunge i pagamenti NWC dalle connessioni delle app&lt;/h3>
&lt;p>Alby Hub ha integrato PR #2267 che consente i pagamenti dalle connessioni delle app.&lt;/p>
&lt;h3 id="routstrd-auth-un-routstrd-docker-per-team-con-autenticazione-nip-98-e-rbac-npub">routstrd-auth: un Routstrd Docker per team con autenticazione NIP-98 e RBAC npub&lt;/h3>
&lt;p>routstrd-auth, creato il 27 aprile, è una variante Docker di Routstrd per i deployment in team multi-utente con controllo degli accessi basato sui ruoli npub e autenticazione HTTP NIP-98.&lt;/p>
&lt;h3 id="routstrd-integra-hermes-per-i-client-daemon-e-la-modalità-remota">Routstrd integra Hermes per i client daemon e la modalità remota&lt;/h3>
&lt;p>Routstrd ha integrato PR #22 aggiungendo l&amp;rsquo;integrazione con Hermes Agent così che il file di configurazione dell&amp;rsquo;agente venga popolato con i provider di modelli e le chiavi API che Routstrd scopre tramite Nostr.&lt;/p>
&lt;h3 id="whitenoise-rs-pubblica-lisolamento-del-database-per-account-e-gli-aggiornamenti-delle-proposte">whitenoise-rs pubblica l&amp;rsquo;isolamento del database per account e gli aggiornamenti delle proposte&lt;/h3>
&lt;p>whitenoise-rs ha integrato PR #796 spostando le tabelle di proiezione dei messaggi in database per account, e PR #791 aggiunge gli aggiornamenti delle proposte così che i gruppi possano estendere le funzionalità con nuovi tipi di proposta.&lt;/p>
&lt;h3 id="angor-0221-pubblica-flussi-applicativi-compatti-con-hardening-del-provider-di-chiavi-e-del-cambio-rete">Angor 0.2.21 pubblica flussi applicativi compatti con hardening del provider di chiavi e del cambio rete&lt;/h3>
&lt;p>Angor ha pubblicato 0.2.21 il 6 maggio con miglioramenti alle performance del design mobile, flussi applicativi compatti e un provider di chiavi sicuro.&lt;/p>
&lt;h2 id="nuovi-tracciati-e-scoperti">Nuovi tracciati e scoperti&lt;/h2>
&lt;h3 id="bitmacro-signer-un-bunker-nip-46-auto-ospitato-con-cifratura-delle-chiavi-lato-client">BitMacro Signer: un bunker NIP-46 auto-ospitato con cifratura delle chiavi lato client&lt;/h3>
&lt;p>BitMacro Signer è uno strumento di firma Nostr auto-ospitato che utilizza il modello bunker NIP-46. Le chiavi vengono cifrate lato client prima della memorizzazione così che il server non detenga mai testo in chiaro.&lt;/p>
&lt;p>La scoperta di repository NIP-34 ha portato alla luce 26 nuovi annunci di repository questa settimana, di cui quattro si distinguono:&lt;/p>
&lt;h3 id="gnostr-unimplementazione-git-costruita-direttamente-su-nostr">gnostr: un&amp;rsquo;implementazione git costruita direttamente su Nostr&lt;/h3>
&lt;p>gnostr è un&amp;rsquo;implementazione git costruita direttamente su Nostr, che fornisce i propri comandi di albero di lavoro come client di controllo versione nativo Nostr sviluppato da zero.&lt;/p>
&lt;h3 id="nostr-archive-una-specifica-di-archivio-content-addressed-su-nostr-e-blossom">nostr-archive: una specifica di archivio content-addressed su Nostr e Blossom&lt;/h3>
&lt;p>nostr-archive è una specifica bozza e un&amp;rsquo;implementazione di riferimento per archivi content-addressed su Nostr e Blossom.&lt;/p>
&lt;h3 id="flower-cache-un-server-di-cache-blossom-locale">flower-cache: un server di cache Blossom locale&lt;/h3>
&lt;p>flower-cache è un server di cache Blossom locale, utile per i client che desiderano un mirror locale attivo del set di blob di un server Blossom remoto.&lt;/p>
&lt;h3 id="micro-vpn-ansible-playbook-ansible-per-il-deployment-vpn-tramite-nip-34">micro-vpn-ansible: playbook Ansible per il deployment VPN tramite NIP-34&lt;/h3>
&lt;p>micro-vpn-ansible è una piccola raccolta di playbook Ansible per il deployment di una micro VPN, ospitata come repository NIP-34.&lt;/p>
&lt;h2 id="lavori-sul-protocollo">Lavori sul protocollo&lt;/h2>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;ul>
&lt;li>Un mercato dell&amp;rsquo;hashrate senza broker su Nostr (proposta bozza): Una bozza di NIP anonima che sostiene che gli attuali attori del mercato dell&amp;rsquo;hashrate sono broker custodiali che richiedono il KYC agli utenti. Propone un mercato P2P dell&amp;rsquo;hashrate sugli eventi Nostr.&lt;/li>
&lt;li>Curated Feeds: un&amp;rsquo;alternativa più semplice ai feed DVM (proposta bozza): Sostiene che i DVM NIP-90 sono troppo pesanti per la curation semplice dei feed; propone eventi indirizzabili snelli con liste ordinate di ID evento.&lt;/li>
&lt;li>Profile Colors: identità visiva deterministica (proposta bozza): Nuova bozza di NIP per derivare colori leggibili deterministici da una chiave pubblica Nostr per un&amp;rsquo;identità visiva coerente tra i client.&lt;/li>
&lt;li>NIPs della traccia Namecoin: ancoraggio di identità, relay, TLS e reputazione (cluster di bozze): Un cluster di bozze di NIP che spostano i componenti dello stack Nostr in record ancorati a Namecoin.&lt;/li>
&lt;/ul>
&lt;h2 id="approfondimento-nip-nip-34-git-stuff">Approfondimento NIP: NIP-34 (git stuff)&lt;/h2>
&lt;p>NIP-34 definisce i tipi di evento per ospitare repository git, patch, pull request, issue e stati di merge sui relay Nostr. Un repository è annunciato come evento indirizzabile di kind 30617. Le patch usano il kind 1617 che porta l&amp;rsquo;output di git format-patch. Le pull request usano il kind 1618. Le issue usano il kind 1621 con contenuto markdown. Gli eventi di stato fanno passare un thread tra Aperto (1630), Applicato/Unito o Risolto (1631), Chiuso (1632) e Bozza (1633). La notizia NIP-34 di questa settimana è la stessa del lancio di GitWorkshop v2 della settimana scorsa: il pulsante di merge della PR nel browser funziona perché i server GRASP, ngit e lo schema URL di clone nostr:// insieme chiudono il cerchio su una forge completamente decentralizzata.&lt;/p>
&lt;h2 id="approfondimento-nip-nip-53-live-activities">Approfondimento NIP: NIP-53 (Live Activities)&lt;/h2>
&lt;p>NIP-53 definisce la superficie di eventi standard per le attività live su Nostr: stream live, spazi di meeting persistenti, eventi di conferenza programmati, presenza degli ascoltatori e chat live. Uno stream live è annunciato come evento indirizzabile di kind 30311. NIP-53 separa la stanza persistente dall&amp;rsquo;evento programmato che vi si tiene: un kind 30312 Meeting Space definisce una stanza, e un kind 30313 Conference Event rappresenta un meeting programmato o in corso in quella stanza. La superficie delle attività live di Nostr è intenzionalmente snella: NIP-53 annuncia l&amp;rsquo;attività, mentre altri NIP gestiscono le preoccupazioni adiacenti come i zap (NIP-57), gli obiettivi di zap (NIP-75) e le registrazioni video (NIP-71).&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Se state costruendo qualcosa o avete notizie da condividere, inviateci un DM su Nostr o trovateci su nostrcompass.org.&lt;/p></content:encoded></item><item><title>Nostr Compass #20</title><link>https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#gitworkshop-ships-in-browser-pr-merge-repository-following-and-a-bandwidth-efficient-git-explorer">GitWorkshop&lt;/a> trasforma git-over-Nostr in una superficie di code review più completa con un pulsante di merge PR nel browser, Stars e following dei repository, un git explorer efficiente in banda, commenti di review inline di kind &lt;code>1111&lt;/code> e stato delle notifiche cifrato multi-dispositivo. &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Routstrd&lt;/a> lancia un daemon locale che scopre i provider di modelli tramite annunci Nostr di kind &lt;code>38421&lt;/code> e li paga con Cashu. I rilasci tagged includono &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#ngit-v242-fixes-grasp-relay-detection-for-pr-submissions">ngit v2.4.2&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">Wisp v1.0.0&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#grain-v052-fixes-websocket-lockup-v053-continues-polish">grain v0.5.2 e v0.5.3&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">Mostro Core v0.10.0 e Mostro Mobile v1.2.5&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#marmot-ts-v050-ships-addressable-keypackages">marmot-ts v0.5.0&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#cruxcoach-v013-ships-encrypted-climbing-data-backup-with-nostr-and-blossom">CruxCoach v0.1.3&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#meiso-v130-adds-subtasks-blossom-attachments-and-nip-89-tagging">Meiso v1.3.0&lt;/a>, NoorNote, Nostria, Nostr Calendar, nos2x-fox, applesauce, nostr-double-ratchet e altro. Le modifiche non rilasciate coprono &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">Amethyst Nests&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#nostream-adds-nip-65-relay-list-support-and-nwc-payments">nostream NIP-65 e NWC&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#fips-adds-nostr-based-udpnat-bootstrap">il bootstrap udp:nat basato su Nostr di FIPS&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#strfry-adds-per-connection-observability">l&amp;rsquo;osservabilità di strfry&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">le owner attestation di Sprout&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#zap-cooking-adds-recipe-packs-delete-requests-and-bunker-login">i recipe pack di Zap Cooking&lt;/a>. I nuovi progetti tracciati includono Nostrord, Clave, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages e null&amp;ndash;nostr. Il retrospettivo di fine mese copre gli April di Nostr dal 2021 al 2026.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#gitworkshop-ships-in-browser-pr-merge-repository-following-and-a-bandwidth-efficient-git-explorer">GitWorkshop&lt;/a> trasforma git-over-Nostr in una superficie di code review più completa con un pulsante di merge PR nel browser, Stars e following dei repository, un git explorer efficiente in banda, commenti di review inline di kind &lt;code>1111&lt;/code> e stato delle notifiche cifrato multi-dispositivo. &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Routstrd&lt;/a> lancia un daemon locale che scopre i provider di modelli tramite annunci Nostr di kind &lt;code>38421&lt;/code> e li paga con Cashu. I rilasci tagged includono &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#ngit-v242-fixes-grasp-relay-detection-for-pr-submissions">ngit v2.4.2&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">Wisp v1.0.0&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#grain-v052-fixes-websocket-lockup-v053-continues-polish">grain v0.5.2 e v0.5.3&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">Mostro Core v0.10.0 e Mostro Mobile v1.2.5&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#marmot-ts-v050-ships-addressable-keypackages">marmot-ts v0.5.0&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#cruxcoach-v013-ships-encrypted-climbing-data-backup-with-nostr-and-blossom">CruxCoach v0.1.3&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#meiso-v130-adds-subtasks-blossom-attachments-and-nip-89-tagging">Meiso v1.3.0&lt;/a>, NoorNote, Nostria, Nostr Calendar, nos2x-fox, applesauce, nostr-double-ratchet e altro. Le modifiche non rilasciate coprono &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">Amethyst Nests&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#nostream-adds-nip-65-relay-list-support-and-nwc-payments">nostream NIP-65 e NWC&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#fips-adds-nostr-based-udpnat-bootstrap">il bootstrap udp:nat basato su Nostr di FIPS&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#strfry-adds-per-connection-observability">l&amp;rsquo;osservabilità di strfry&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">le owner attestation di Sprout&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#zap-cooking-adds-recipe-packs-delete-requests-and-bunker-login">i recipe pack di Zap Cooking&lt;/a>. I nuovi progetti tracciati includono Nostrord, Clave, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages e null&amp;ndash;nostr. Il retrospettivo di fine mese copre gli April di Nostr dal 2021 al 2026.&lt;/p>
&lt;h2 id="storie-principali">Storie principali&lt;/h2>
&lt;h3 id="gitworkshop-rilascia-merge-pr-nel-browser-following-dei-repository-e-un-git-explorer-efficiente-in-banda">GitWorkshop rilascia merge PR nel browser, following dei repository e un git explorer efficiente in banda&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev">GitWorkshop&lt;/a>, il layer di collaborazione basato sul web di Dan Conway per &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> git-over-Nostr, ha rilasciato questa settimana una versione importante che avvicina il workflow molto di più a ciò che gli sviluppatori si aspettano da GitHub o GitLab, mantenendo commenti, elenchi di repository e notifiche all&amp;rsquo;interno di eventi Nostr firmati.&lt;/p>
&lt;p>L&amp;rsquo;aggiunta principale è un tanto atteso pulsante di merge PR nel browser per i repository che usano relay GRASP. Il rilascio aggiunge anche Stars e following dei repository costruiti su reazioni ed elenchi &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>, con set di repository fissati pubblicati come eventi di kind &lt;code>10617&lt;/code> che puntano ad annunci di repo di kind &lt;code>30617&lt;/code> tramite tag &lt;code>a&lt;/code> ordinati. Le pagine profilo possono ora presentare un elenco portatile di repository.&lt;/p>
&lt;p>Un git explorer efficiente in banda sostituisce il precedente shallow clone nel browser. Il nuovo explorer si appoggia al sottostante protocollo client/server git su cui GRASP è costruito, quindi può gestire repository grandi senza forzare il browser a scaricare un pack completo. La ricerca copre ora nomi utente e metadati dei repository, alimentata da &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a> e da un&amp;rsquo;implementazione di relay &lt;code>ngit-indexer&lt;/code> che scopre e sincronizza gli annunci di repository attraverso la rete. Un workflow di creazione di repository nel browser completa il percorso di scoperta e onboarding.&lt;/p>
&lt;p>Gli strumenti di review sono ricostruiti attorno a una scheda Files Changed, un visualizzatore di diff per singola patch e un set di nuove primitive sperimentali. I commenti di code review inline usano kind &lt;code>1111&lt;/code>, costruito su &lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">NIP-22&lt;/a>: ogni commento punta a un percorso file (tag &lt;code>f&lt;/code>), a uno SHA di commit (tag &lt;code>c&lt;/code>) e a un intervallo di righe selezionato (tag &lt;code>line&lt;/code>), così un client può rendere il commento nella posizione corretta di un diff. Un secondo livello di primitive sperimentali è autorizzato per autori e manutentori dei repo e usa etichette &lt;a href="https://github.com/nostr-protocol/nips/blob/master/32.md">NIP-32&lt;/a>: rinominare il soggetto di un Issue o PR dopo la submission, aggiungere hashtag dopo la submission, fissare una CoverNote versionata in cima a un PR o Issue per un riepilogo modificabile e marcare come risolti i sottothread di discussione inline. Gli eventi Verdict e i blocchi &lt;code>suggestion&lt;/code> restano in bozza e non sono ancora stati rilasciati.&lt;/p>
&lt;p>Lo stato delle notifiche fra dispositivi è anch&amp;rsquo;esso sincronizzato tramite Nostr, ma con una svolta a tutela della privacy. GitWorkshop genera una keypair dedicata alle notifiche, cifra quella nsec e la memorizza dentro un evento di kind &lt;code>30078&lt;/code>. L&amp;rsquo;nsec di notifica firma poi gli effettivi eventi di stato delle notifiche. L&amp;rsquo;indirezione impedisce che il signer principale dell&amp;rsquo;utente venga bombardato da frequenti richieste di cifratura e decifratura per ogni azione di lettura o archiviazione, e impedisce agli osservatori esterni di vedere facilmente quando un utente tocca il proprio stato di notifica. Un utente può sincronizzare lo stato di lettura e archiviazione fra dispositivi; i relay vedono solo blob cifrati.&lt;/p>
&lt;h3 id="routstrd-lancia-un-router-locale-per-linferenza-su-nostr">Routstrd lancia un router locale per l&amp;rsquo;inferenza su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/routstr/routstrd">Routstrd&lt;/a> è un nuovo daemon TypeScript che offre agli strumenti locali un endpoint compatibile con OpenAI e instrada ogni richiesta a un provider &lt;a href="https://routstr.com">Routstr&lt;/a> concorrente. Il daemon scopre i provider tramite annunci Nostr di kind &lt;code>38421&lt;/code> definiti nella spec RIP-02 di Routstr. Assegna poi un punteggio ai provider in base a prezzo, fiducia e performance recenti secondo RIP-06 e invia ogni richiesta all&amp;rsquo;opzione attualmente migliore.&lt;/p>
&lt;p>Il pagamento passa attraverso un wallet Cashu locale gestito da cocod e finanziato con Lightning. Ciò offre al client un percorso di regolamento denominato in sats mantenendo la scoperta dei provider pubblica e permissionless attraverso i relay Nostr. Se un provider fallisce durante una sessione, Routstrd può ripiegare sul nodo classificato successivamente. Il percorso di installazione è &lt;code>bun install -g routstrd&lt;/code>, seguito da &lt;code>routstrd onboard&lt;/code> per la configurazione di wallet e relay.&lt;/p>
&lt;p>La più ampia &lt;a href="https://github.com/routstr">Routstr org&lt;/a> mantiene il daemon, il software di nodo Python (&lt;code>routstr-core&lt;/code>), una UI di chat e le specifiche di protocollo. Per gli utenti, la porta locale diventa l&amp;rsquo;interfaccia stabile: gli strumenti esistenti compatibili con OpenAI puntano a Routstrd, mentre il daemon gestisce scoperta dei provider, routing e pagamento.&lt;/p>
&lt;h2 id="rilasci-tagged">Rilasci tagged&lt;/h2>
&lt;h3 id="ngit-v242-corregge-la-rilevazione-del-server-grasp-per-le-submission-di-pr">ngit v2.4.2 corregge la rilevazione del server GRASP per le submission di PR&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/DanConwayDev/ngit-cli">ngit&lt;/a> ha rilasciato &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.2">v2.4.2&lt;/a> con una correzione per la rilevazione del server GRASP del repository, mantenendo la submission di PR sul percorso corretto quando una proposta usa il kind PR. Da notare che ngit attualmente imposta come default il kind &lt;code>Patch&lt;/code> per la maggior parte delle modifiche, a meno che non siano grandi; il manutentore sta lavorando per cambiare il default. &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.1">v2.4.1&lt;/a>, rilasciata all&amp;rsquo;inizio della settimana, ha corretto errori &lt;code>fatal&lt;/code> durante clone e fetch quando i dati git di un PR aperto non erano disponibili sui server git specificati per il repository.&lt;/p>
&lt;h3 id="wisp-v100-esce-dalla-beta">Wisp v1.0.0 esce dalla beta&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, un client Android in Kotlin e Jetpack Compose focalizzato su routing dei relay, privacy e una piccola UI nativa, ha rilasciato &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.0">v1.0.0&lt;/a> seguita da &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.2">v1.0.2&lt;/a>. La milestone 1.0.0 raccoglie il toggle di denominazione fiat Normie Mode, il feed For You, la configurazione dei gruppi basata su relay &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> e la trasmissione della relay-list &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> trattate in &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-22-newsletter/#wisp-v0180-beta-adds-normie-mode-for-you-feed-and-nip-29-group-config">Newsletter #19&lt;/a>. v1.0.2 aggiunge il supporto Android 15 per page-size da 16 KB, una scheda di scansione QR nel drawer sheet, un pulsante di download per i controlli video inline e correzioni di performance per le liste di notifiche.&lt;/p>
&lt;h3 id="grain-v052-risolve-il-lockup-websocket-v053-continua-le-rifiniture">grain v0.5.2 risolve il lockup WebSocket, v0.5.3 continua le rifiniture&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>, il relay in Go di 0ceanSlim, ha rilasciato &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.2">v0.5.2&lt;/a> come hotfix critico per un lockup WebSocket introdotto in v0.5.0, seguito poi da &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.3">v0.5.3&lt;/a>. Il lockup faceva bloccare le connessioni in alcuni percorsi di filter e WebSocket, quindi gli operatori su v0.5.1 o v0.5.0 dovrebbero aggiornarsi. grain traccia tutte le principali categorie di eventi Nostr, espone informazioni relay NIP-11, supporta controllo di accesso whitelist/blacklist, rate limit per kind, una dashboard web e una libreria client Go aggiunta nella linea v0.5.x.&lt;/p>
&lt;h3 id="mostro-core-v0100-e-mostro-mobile-v125-adottano-il-gift-wrap-nip-59-a-doppia-chiave">Mostro Core v0.10.0 e Mostro Mobile v1.2.5 adottano il gift wrap NIP-59 a doppia chiave&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.10.0">Mostro Core v0.10.0&lt;/a> aggiunge il nuovo modulo gift-wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> con identità e chiavi di trade separate. Il codice di trasporto precedente usava una singola chiave di identità sia per l&amp;rsquo;identità del trade sia per il gift wrapping. v0.10.0 separa l&amp;rsquo;identità stabile del trade dalla chiave effimera di wrapping, così ogni trade può usare una chiave di trasporto fresca preservando l&amp;rsquo;identità necessaria al protocollo di trade. L&amp;rsquo;integrazione del daemon arriva tramite &lt;a href="https://github.com/MostroP2P/mostro/pull/718">Mostro PR #718&lt;/a>, e &lt;a href="https://github.com/MostroP2P/mostro-cli/pull/165">mostro-cli PR #165&lt;/a> porta la stessa migrazione al client a riga di comando.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.5">Mostro Mobile v1.2.5&lt;/a> esce insieme al lavoro sul protocollo. &lt;a href="https://github.com/MostroP2P/mobile/pull/581">PR #581&lt;/a> permette ai takers di filtrare le offerte in base all&amp;rsquo;età dell&amp;rsquo;account del maker, dando agli utenti un modo per evitare account maker appena creati nell&amp;rsquo;order book. &lt;a href="https://github.com/MostroP2P/mobile/pull/580">PR #580&lt;/a> corregge le etichette di ruolo nei dettagli degli ordini cancellati, e &lt;a href="https://github.com/MostroP2P/mobile/pull/576">PR #576&lt;/a> sistema i pulsanti di cancellazione cooperativa.&lt;/p>
&lt;h3 id="marmot-ts-v050-rilascia-i-keypackage-indirizzabili">marmot-ts v0.5.0 rilascia i KeyPackage indirizzabili&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a> ha rilasciato &lt;a href="https://github.com/marmot-protocol/marmot-ts/releases/tag/%40internet-privacy%2Fmarmot-ts%400.5.0">@internet-privacy/marmot-ts@0.5.0&lt;/a>, la prima release con breaking-change pianificata per il client &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> TypeScript. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/68">PR #68&lt;/a> aggiunge il supporto ai KeyPackage indirizzabili: &lt;code>KeyPackageManager&lt;/code> può ora gestire sia i legacy eventi KeyPackage di kind &lt;code>443&lt;/code> sia i nuovi di kind &lt;code>30443&lt;/code>. La release rimuove &lt;code>KeyPackageStore&lt;/code> e le classi di storage dello stato di gruppo, sostituendole con store generici key-value passati a &lt;code>KeyPackageManager&lt;/code> e &lt;code>MarmotGroup&lt;/code>. Sposta inoltre la gestione di invite e gruppi su &lt;code>MarmotClient.invites&lt;/code> e &lt;code>MarmotClient.groups&lt;/code>, quindi chi incorpora direttamente ha bisogno di modifiche a costruttori e storage prima di aggiornare.&lt;/p>
&lt;h3 id="cruxcoach-v013-rilascia-il-backup-cifrato-dei-dati-di-arrampicata-con-nostr-e-blossom">CruxCoach v0.1.3 rilascia il backup cifrato dei dati di arrampicata con Nostr e Blossom&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/CruxCoach/CruxCoach">CruxCoach&lt;/a> è una nuova app Android open-source per scalatori di Kilter Board. La Kilter Board è una parete di allenamento interattiva le cui prese si illuminano via Bluetooth per mostrare le vie. L&amp;rsquo;app è stata lanciata il 14 aprile e ha raggiunto &lt;a href="https://codeberg.org/CruxCoach/CruxCoach/releases/tag/v0.1.3">v0.1.3&lt;/a> il 26 aprile.&lt;/p>
&lt;p>v0.1.3 aggiunge il backup cloud cifrato opzionale. L&amp;rsquo;account CruxCoach di un utente è una keypair Nostr, e la chiave privata funge anche da input per la chiave locale di cifratura del backup. L&amp;rsquo;app cifra i dati di arrampicata sul dispositivo e replica il ciphertext sui server di storage Blossom (&lt;code>blossom.primal.net&lt;/code> e &lt;code>nostr.download&lt;/code>). Le azioni di eliminazione remota chiamano il percorso di cleanup Blossom. Oltre al backup, CruxCoach usa il remote signing &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per il supporto Amber, i DM privati &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> per il contatto in-app con lo sviluppatore, le relay-list &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> per la scoperta dei relay e la libreria &lt;a href="https://github.com/vitorpamplona/quartz">Quartz&lt;/a> di Vitor Pamplona per la parte Nostr. Gli utenti possono installarla tramite Zapstore o APK Codeberg diretti.&lt;/p>
&lt;h3 id="meiso-v130-aggiunge-sotto-attività-allegati-blossom-e-tagging-nip-89">Meiso v1.3.0 aggiunge sotto-attività, allegati Blossom e tagging NIP-89&lt;/h3>
&lt;p>&lt;a href="https://github.com/higedamc/meiso">Meiso&lt;/a> è un task manager Flutter minimalista per Android che memorizza le attività come dati applicativi cifrati &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> di kind &lt;code>30078&lt;/code> sui relay Nostr. &lt;a href="https://github.com/higedamc/meiso/releases/tag/v1.3.0">v1.3.0&lt;/a>, rilasciata il 6 aprile, aggiunge sotto-attività con relazioni genitore/figlio, task link per blocks/blocked-by/related-to/duplicate-of, allegati immagine tramite Blossom ed endpoint di upload file HTTP &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a>, un tag &lt;code>client&lt;/code> di applicazione raccomandata &lt;a href="https://github.com/nostr-protocol/nips/blob/master/89.md">NIP-89&lt;/a> sugli eventi pubblicati e uno strumento di sincronizzazione da riga di comando in Go. v1.3.0 corregge anche il comportamento del relay al cold-start e il riuso del client Amber.&lt;/p>
&lt;h3 id="noornote-nostria-nostr-calendar-nos2x-fox-e-rilasci-di-librerie">NoorNote, Nostria, Nostr Calendar, nos2x-fox e rilasci di librerie&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> ha pubblicato &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.7">v0.8.7&lt;/a>, &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.8">v0.8.8&lt;/a> e &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.9">v0.8.9&lt;/a>. Queste release correggono la gestione del click di immagini e video nei repost citati, aggiungono il supporto lightbox per le immagini di articoli long-form e correggono la schermata di avvio desktop vuota. &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ha rilasciato &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.29">v3.1.29&lt;/a>, &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.30">v3.1.30&lt;/a> e &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.31">v3.1.31&lt;/a>, aggiungendo la compressione delle immagini nell&amp;rsquo;editor di articoli, un toggle USD del wallet, controlli per le carte promozionali, il supporto PDF e rifiniture del layout mobile.&lt;/p>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.4.1">Nostr Calendar v1.4.1&lt;/a> disaccoppia la pubblicazione degli eventi del calendario dalla gestione della lista dei calendari e corregge il tracciamento degli inviti. &lt;a href="https://github.com/diegogurpegui/nos2x-fox/releases/tag/v1.19.0">nos2x-fox v1.19.0&lt;/a> aggiunge tempi di autorizzazione personalizzati per le grant di firma browser NIP-07 su Firefox. &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.97">nostr-double-ratchet v0.0.97&lt;/a> rilascia nuovi binari. &lt;a href="https://github.com/nostr-wot/nostr-wot-sdk/releases/tag/nostr-wot-sdk%400.9.0">nostr-wot-sdk 0.9.0&lt;/a> monta &lt;code>NostrSessionProvider&lt;/code> per impostazione predefinita, e &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/535">nostr-tools PR #535&lt;/a> aggiunge il supporto al parsing multi-relay per le stringhe wallet-connect NIP-47.&lt;/p>
&lt;p>A fine settimana, &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre1">Amber v6.1.0-pre1&lt;/a> ha rilasciato una pre-release con un migliore layout di connessione di nuove app, correzioni al dialog del signer, gestione migliorata dei permessi di notifica e refactoring della selezione dell&amp;rsquo;account. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.14">nostr-vpn v0.3.14&lt;/a> ha rilasciato una build fresca con artefatti macOS Apple Silicon, Linux e Windows. &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.8">Bitcredit Core v0.5.7-hotfix-1 e v0.5.8&lt;/a> hanno rilasciato correzioni consecutive per un problema di validazione dei blocchi orfani. &lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">Surveil v0.1.6&lt;/a> ha portato rifiniture UI mobile e una pagina About rivisitata; il progetto stesso è presentato &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-29-newsletter/#surveil-a-magic-the-gathering-deck-builder-on-nostr">più sotto&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-600-rimuove-le-vecchie-event-factory-e-aggiunge-il-parsing-degli-uri-blossom">applesauce 6.0.0 rimuove le vecchie event factory e aggiunge il parsing degli URI Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">applesauce&lt;/a>, il toolkit Nostr TypeScript di hzrd149, ha rilasciato un treno di release 6.0.0 attraverso il monorepo. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.0.0">applesauce-core@6.0.0&lt;/a> rimuove la vecchia classe &lt;code>EventFactory&lt;/code> e i vecchi helper &lt;code>buildEvent&lt;/code>, &lt;code>modifyEvent&lt;/code> e &lt;code>createEvent&lt;/code>, spingendo i chiamanti verso le nuove classi factory in &lt;code>applesauce-core/factories&lt;/code> e &lt;code>applesauce-common&lt;/code>. Aggiunge anche la gestione di indirizzi IP e localhost al parsing dei link, espressioni regolari per URI Blossom BUD-10 e nuovi helper observable come &lt;code>timeoutWithIgnore&lt;/code>, &lt;code>combineLatestBy&lt;/code>, &lt;code>combineLatestByIndex&lt;/code> e &lt;code>combineLatestByKey&lt;/code>.&lt;/p>
&lt;p>I rilasci a livello di pacchetto completano i pezzi specifici di Nostr. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-content%406.0.0">applesauce-content@6.0.0&lt;/a> aggiunge nodi URI Blossom BUD-10 per testo e Markdown, dando ai renderer un modo nativo di analizzare i riferimenti Blossom nel contenuto. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.0.0">applesauce-actions@6.0.0&lt;/a> aggiunge classi factory di base per le liste NIP-51 che coprono relay, utenti ed elementi, rendendo la costruzione di liste meno ad hoc. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-wallet-connect%406.0.0">applesauce-wallet-connect@6.0.0&lt;/a> espone &lt;code>WalletConnect.connectURI&lt;/code>, così le app possono accedere direttamente a un URI wallet-connect NIP-47 esistente.&lt;/p>
&lt;h2 id="modifiche-non-rilasciate">Modifiche non rilasciate&lt;/h2>
&lt;h3 id="amethyst-avanza-le-stanze-audio-nests-con-i-test-di-interop-moq">Amethyst avanza le stanze audio Nests con i test di interop MoQ&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha mergiato diverse PR focalizzate su Nests questa settimana, costruendo sullo stack di stanze audio &lt;a href="https://datatracker.ietf.org/group/moq/about/">Media over QUIC&lt;/a> della scorsa settimana. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2622">PR #2622&lt;/a> aggiunge un harness di interop cross-client che esercita il client MoQ Amethyst contro l&amp;rsquo;implementazione web di riferimento. L&amp;rsquo;obiettivo è cogliere la divergenza a livello wire fra Android e browser prima che colpisca gli utenti. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2625">PR #2625&lt;/a> migliora il focus del parlante in picture-in-picture e lo stato della connessione, mentre &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2620">PR #2620&lt;/a> chiarisce avatar, stato di mute e stato di parlante nella griglia dei partecipanti. A fine settimana, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2634">PR #2634&lt;/a> corregge il padding IME e gli window insets nella vista Nest a schermo intero e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2635">PR #2635&lt;/a> aggiunge il filtro di freschezza basato su presenza al feed Nests. Separatamente, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2627">PR #2627&lt;/a> rimuove l&amp;rsquo;implementazione C custom di secp256k1 di Amethyst e migra a &lt;code>libschnorr256k1&lt;/code>.&lt;/p>
&lt;h3 id="nostream-aggiunge-il-supporto-alle-relay-list-nip-65-e-ai-pagamenti-nwc">nostream aggiunge il supporto alle relay list NIP-65 e ai pagamenti NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> ha mergiato tre PR notevoli dopo lo sprint da 53 PR della scorsa settimana. Il supporto ai metadati della relay list &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> arriva in &lt;a href="https://github.com/Cameri/nostream/pull/585">PR #585&lt;/a>, così il relay può indicizzare e servire eventi di relay list di kind &lt;code>10002&lt;/code>. Un processore di pagamenti Nostr Wallet Connect segue in &lt;a href="https://github.com/Cameri/nostream/pull/539">PR #539&lt;/a>, aggiungendo un percorso pay-to-relay. La pulizia delle connessioni migliora in &lt;a href="https://github.com/Cameri/nostream/pull/438">PR #438&lt;/a>, che chiude un bug di connessioni morte in cui i socket con sottoscrizioni attive non venivano raccolti, causando la deriva dei conteggi delle sottoscrizioni sulle istanze long-running.&lt;/p>
&lt;h3 id="fips-aggiunge-il-bootstrap-udpnat-basato-su-nostr">FIPS aggiunge il bootstrap udp:nat basato su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, il Free Internetworking Peering System coperto in precedenza in &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>, ha mergiato &lt;a href="https://github.com/jmcorgan/fips/pull/53">PR #53&lt;/a> con il bootstrap &lt;code>udp:nat&lt;/code> basato su Nostr. Il cambiamento consente ai nodi di pubblicare annunci Nostr, scambiare signaling offer/answer cifrato, scoprire indirizzi pubblici tramite STUN, eseguire hole punching UDP e consegnare il socket bucato al normale stack di trasporto FIPS. L&amp;rsquo;implementazione lega le identità del payload di signal all&amp;rsquo;effettivo sender Nostr, interroga i relay DM e advert configurati per il lookup della inbox e ripristina gli handoff di traversal adottati falliti così che i trasporti UDP orfani non restino vivi. Questo è il lavoro di annuncio Nostr e traversal NAT da tracciare nel repo canonico, &lt;code>jmcorgan/fips&lt;/code>.&lt;/p>
&lt;h3 id="strfry-aggiunge-osservabilità-per-connessione">strfry aggiunge osservabilità per connessione&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> ha mergiato &lt;a href="https://github.com/hoytech/strfry/pull/214">PR #214&lt;/a>, aggiungendo osservabilità per connessione e metriche a livello di connessione esportabili tramite Prometheus. &lt;a href="https://github.com/hoytech/strfry/pull/204">PR #204&lt;/a> normalizza le etichette Prometheus, e &lt;a href="https://github.com/hoytech/strfry/pull/215">PR #215&lt;/a> aggiunge una sezione Community Integrations alla documentazione che copre progetti di identità Namecoin costruiti sopra strfry.&lt;/p>
&lt;h3 id="sprout-aggiunge-owner-attestation-e-supporto-multi-workspace">Sprout aggiunge Owner Attestation e supporto multi-workspace&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, il client Nostr di Block, ha mergiato &lt;a href="https://github.com/block/sprout/pull/406">PR #406&lt;/a> che implementa NIP-OA (Owner Attestation). La funzionalità dà a un agente autonomo una prova crittografica che una specifica pubkey umana ha autorizzato le sue azioni. &lt;a href="https://github.com/block/sprout/pull/409">PR #409&lt;/a> aggiunge il supporto multi-workspace all&amp;rsquo;app desktop, &lt;a href="https://github.com/block/sprout/pull/411">PR #411&lt;/a> aggiunge l&amp;rsquo;autocompletamento &lt;code>#channel&lt;/code> al compose mobile, e &lt;a href="https://github.com/block/sprout/pull/410">PR #410&lt;/a> chiude una race window che poteva scartare messaggi di canale attivi. &lt;a href="https://github.com/block/sprout/pull/413">PR #413&lt;/a> introduce NIP-RS per la sincronizzazione dello stato di lettura cross-device, e le successive &lt;a href="https://github.com/block/sprout/pull/420">PR #420&lt;/a> e &lt;a href="https://github.com/block/sprout/pull/422">PR #422&lt;/a> collegano quello stato di lettura ai badge di non letti su mobile.&lt;/p>
&lt;h3 id="zap-cooking-aggiunge-recipe-pack-delete-request-e-login-via-bunker">Zap Cooking aggiunge recipe pack, delete request e login via bunker&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> ha mergiato una settimana produttiva di lavoro sulla pubblicazione di ricette. Le richieste di eliminazione &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a> per i Recipe Pack propri dell&amp;rsquo;utente arrivano in &lt;a href="https://github.com/zapcooking/frontend/pull/367">PR #367&lt;/a>. L&amp;rsquo;affidabilità della pubblicazione migliora tramite &lt;a href="https://github.com/zapcooking/frontend/pull/366">PR #366&lt;/a>, che forza ogni nuova ricetta sul relay garden e aggiunge una coda di retry per il recipe set condiviso. La pubblicazione one-click di pack redatti dall&amp;rsquo;autore arriva in &lt;a href="https://github.com/zapcooking/frontend/pull/365">PR #365&lt;/a>, e &lt;a href="https://github.com/zapcooking/frontend/pull/331">PR #331&lt;/a> aggiunge il supporto al login via bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="whitenoise-rs-cifra-il-proprio-database-locale">Whitenoise-rs cifra il proprio database locale&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> ha mergiato &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/758">PR #758&lt;/a>, aggiungendo la cifratura SQLCipher per il database Whitenoise su disco. Questo chiude un gap di sicurezza at-rest di vecchia data per lo stack del daemon Marmot. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/775">PR #775&lt;/a> espone le capability richieste del gruppo, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/772">PR #772&lt;/a> migra le operazioni sui media di gruppo a &lt;code>MediaOps&lt;/code> di proprietà della sessione, e &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/773">PR #773&lt;/a> estrae un holder &lt;code>SharedServices&lt;/code> come parte del refactor delle session-ops. Sul lato mobile, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/577">whitenoise PR #577&lt;/a> abilita l&amp;rsquo;auto-riavvio al boot per il servizio foreground Android, correggendo il caso in cui il daemon non tornava dopo un riavvio del dispositivo.&lt;/p>
&lt;h2 id="progetti-tracciati-e-scoperti-di-recente">Progetti tracciati e scoperti di recente&lt;/h2>
&lt;h3 id="nostrord-un-client-nip-29-costruito-con-kotlin-multiplatform-e-wasm">Nostrord: un client NIP-29 costruito con Kotlin Multiplatform e WASM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">Nostrord&lt;/a> è un nuovo client di group-chat &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> che punta al caso d&amp;rsquo;uso di sostituto di Discord. I gruppi vivono su relay Nostr con membership, ruoli, moderazione e controllo di accesso applicati dal relay, quindi lo stato di gruppo è ospitato dal relay NIP-29 selezionato. Lo sviluppatore del client non controlla un database applicativo separato per quei gruppi. La web app gira su &lt;a href="https://web.nostrord.com">web.nostrord.com&lt;/a> ed è costruita con Kotlin Multiplatform che compila in WebAssembly, con build native Android, iOS e desktop in sviluppo. Nostrord è un beneficiario di grant &lt;a href="https://opensats.org">OpenSats&lt;/a> e interopera con gli stessi relay NIP-29 usati da Flotilla, Chachi e 0xChat.&lt;/p>
&lt;h3 id="clave-porta-il-remote-signing-nip-46-su-ios-tramite-apns">Clave porta il remote signing NIP-46 su iOS tramite APNs&lt;/h3>
&lt;p>&lt;a href="https://github.com/DocNR/clave">Clave&lt;/a> è un remote signer iOS in beta che firma eventi Nostr quando l&amp;rsquo;app non è aperta. La chiave privata resta nella Keychain dell&amp;rsquo;iPhone. Quando un client invia una richiesta di remote signing &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, un proxy lato server consegna una Apple Push Notification, svegliando una Notification Service Extension per un massimo di 30 secondi. Quell&amp;rsquo;extension decifra la richiesta con la cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, firma con la chiave della Keychain e pubblica la risposta. La registrazione del token del dispositivo usa l&amp;rsquo;HTTP Auth &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> per impedire il dirottamento del token. Clave supporta il pairing &lt;code>bunker://&lt;/code> e &lt;code>nostrconnect://&lt;/code>, livelli di fiducia per-client, override per-kind ed è stato testato con Nostur e noStrudel.&lt;/p>
&lt;h3 id="treasures-geocaching-decentralizzato-su-nostr">Treasures: geocaching decentralizzato su Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/treasures">Treasures&lt;/a> è una piattaforma di geocaching in cui cache e ritrovamenti sono eventi Nostr firmati. I creatori di cache pubblicano eventi indirizzabili di kind &lt;code>37516&lt;/code> con coordinate GPS. I finder registrano la scoperta scansionando un QR code attaccato alla cache fisica; il codice codifica la pubkey del creatore, il tag &lt;code>d&lt;/code> della cache e una chiave privata di verifica usata come prova della visita fisica. Gli zap &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> possono fluire dai finder ai creatori di cache, e l&amp;rsquo;app live è su &lt;a href="https://treasures.to">treasures.to&lt;/a>.&lt;/p>
&lt;h3 id="smesh-v051-relay-nostr-self-hosted-client-e-signer-in-uno-stack-unico">smesh v0.5.1: relay Nostr self-hosted, client e signer in uno stack unico&lt;/h3>
&lt;p>&lt;a href="https://git.smesh.lol/smesh/smesh">smesh&lt;/a> è uno stack Nostr self-hosted scritto in Moxie, un linguaggio custom derivato da Go e TinyGo da mleku. Lo stack rilascia un binario relay nativo con supporto HTTP, WebSocket, AUTH, ricerca e Blossom; &lt;code>sm3sh&lt;/code>, un web client compilato in moduli ES; e un&amp;rsquo;estensione browser signer con firma browser NIP-07 più supporto alla cifratura NIP-04 e NIP-44. Il lavoro recente include messaggistica di gruppo MLS (RFC 9420) in v0.5.0, riconciliazione di set negentropy per la sync dei relay e un engine di grafo Web of Trust. Il codice vive sulla forge self-hosted di mleku a &lt;code>git.smesh.lol&lt;/code>, costruita con il suo strumento &lt;code>git-web&lt;/code>. Il repo correlato &lt;a href="https://git.smesh.lol/smesh/gitea-nostr-auth">gitea-nostr-auth&lt;/a> è un bridge OAuth2/OIDC per Gitea: gli utenti si autenticano con un signer browser NIP-07, il bridge scopre i relay tramite NIP-65 e Gitea riceve claim di identità OIDC standard.&lt;/p>
&lt;h3 id="surveil-un-deck-builder-di-magic-the-gathering-su-nostr">Surveil: un deck builder di Magic: The Gathering su Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/surveil">Surveil&lt;/a> è un client Nostr per giocatori di Magic: The Gathering che consente agli utenti di cercare carte, costruire mazzi, scansionare carte cartacee su Android con OCR ML Kit on-device e condividere mazzi attraverso la rete. I mazzi sono pubblicati come eventi indirizzabili di kind &lt;code>37381&lt;/code>, e la spec dell&amp;rsquo;evento mazzo è documentata nel &lt;code>NIP.md&lt;/code> del progetto. Il livello sociale è costruito da primitive Nostr standard: commenti threaded NIP-22 (kind &lt;code>1111&lt;/code>) associati a ogni mazzo, reazioni NIP-25 (kind &lt;code>7&lt;/code>), dati profilo &lt;a href="https://github.com/nostr-protocol/nips/blob/master/78.md">NIP-78&lt;/a> (kind &lt;code>30078&lt;/code>) per le pagine dei giocatori, follow feed di kind &lt;code>3&lt;/code> e fork che portano un tag &lt;code>a&lt;/code> che riporta al mazzo originale. &lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">v0.1.6&lt;/a> è stato rilasciato questa settimana con rifiniture UI mobile, miglioramenti al life counter, una pagina About rivisitata e una relay pill sul banner hero del mazzo. La web app gira ovunque HTML statico sia servito, la build Android è distribuita tramite &lt;a href="https://zapstore.dev">Zapstore&lt;/a>, e gli eventi di kind &lt;code>37381&lt;/code> sono anche indicizzati nativamente da &lt;a href="https://about.ditto.pub/reference">Ditto&lt;/a> come mazzi Magic. Il repo è su GitLab a &lt;a href="https://gitlab.com/chad.curtis/surveil">chad.curtis/surveil&lt;/a>.&lt;/p>
&lt;h3 id="aggiunte-minori-fundstr-nod-city-deploy-nsite-to-pages-e-null--nostr">Aggiunte minori: Fundstr, Nod City, deploy-nsite-to-pages e null&amp;ndash;nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ritty65/Fundstr">Fundstr&lt;/a> è una piattaforma di finanziamento per creator su Nostr che usa Cashu ecash per pledge una tantum e ricorrenti, con definizioni di tier del creator e DM Nostr. &lt;a href="https://nod.city">Nod City&lt;/a> è un sito di recensioni di servizi Bitcoin in cui le recensioni sono eventi Nostr firmati e i recensori possono ricevere zap; non è stato trovato un repo sorgente pubblico. &lt;a href="https://github.com/Origami74/deploy-nsite-to-pages">deploy-nsite-to-pages&lt;/a> è una GitHub Action che replica un nsite su GitHub Pages usando &lt;code>nsyte download&lt;/code>, supportando nsite root di kind &lt;code>15128&lt;/code> e named di kind &lt;code>35128&lt;/code>. &lt;a href="https://github.com/tami1A84/null--nostr">null&amp;ndash;nostr&lt;/a>, scoperto anch&amp;rsquo;esso nei dati NIP-34 di questa settimana, è il client trattato nella recente ondata OpenSats come Nurunuru; supporta messaggistica di gruppo MLS, Amber, ricerca NIP-50, post protetti NIP-70, badge ProofMode e distribuzione Zapstore.&lt;/p>
&lt;p>FIPS non è un progetto nuovo per Compass. È stato trattato in &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>. Il database ora punta al repo canonico corretto, &lt;a href="https://github.com/jmcorgan/fips">jmcorgan/fips&lt;/a>, e la scoperta NIP-34 di questa settimana ha fatto emergere anche mirror git-over-Nostr correlati come &lt;code>fips&lt;/code> e &lt;code>awesome-fips&lt;/code>.&lt;/p>
&lt;h2 id="lavoro-di-protocollo">Lavoro di protocollo&lt;/h2>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;p>Proposte e discussioni recenti nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Mergiate questa settimana:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-34 git repositories: remove unused refs tag extension&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a>): Rimuove un&amp;rsquo;estensione di tag &lt;code>refs&lt;/code> da &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> che era definita ma non usata. La pulizia riduce l&amp;rsquo;ambiguità implementativa per gli strumenti git-over-Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-34 git repositories: remove incorrect NIP-09 claim&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>): Rimuove una dichiarazione errata secondo cui gli eventi di eliminazione &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a> possono resettare lo stato del repository. L&amp;rsquo;eliminazione NIP-09 è una richiesta di eliminazione evento lato client, non una macchina a stati del repository. La correzione impedisce agli implementatori NIP-34 di trattare gli hint di eliminazione come reset autoritativi del repo.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Lavoro aperto e guidato dalle implementazioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>GitWorkshop kind &lt;code>1111&lt;/code> commenti di review inline&lt;/strong>: Il kind di commento di code review inline è documentato nel &lt;code>NIP.md&lt;/code> di GitWorkshop ed è ora in uso attivo, ma non è ancora stato proposto come NIP formale. Gli eventi Verdict (kind &lt;code>7321&lt;/code>) e i blocchi &lt;code>suggestion&lt;/code> restano in bozza e non sono ancora stati rilasciati. Il feedback implementativo da GitWorkshop e ngit determinerà se le forme diventeranno un NIP git-review autonomo o resteranno una convenzione applicativa stratificata su NIP-34.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Nostr mail core e Nostrmon&lt;/strong>: Due nuove bozze di NIP custom hanno circolato questa settimana. &lt;a href="https://njump.me/57d11cdf2f9ed73f7f39d6a7a6012ee3d642584ab11887f96a031f7d00fd9697">Nostr mail core&lt;/a> propone il kind &lt;code>1301&lt;/code> per contenuti email RFC 2822, wrappati con NIP-59 per la consegna privata e ponte verso l&amp;rsquo;email legacy tramite pubkey di bridge risolte via NIP-05. &lt;a href="https://njump.me/5e9a8cee19d464f5f0322518ac9ccaf2399c69da6572346b4fb12d36acb17a27">Nostrmon&lt;/a> delinea kind di eventi indirizzabili per regioni, mappe, creature, NPC, salvataggi giocatore e oggetti. Entrambe restano bozze custom, non NIP mergiati.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-67: EOSE Completeness Hint&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a>): La proposta continua a iterare sull&amp;rsquo;aggiunta di un marcatore positivo di completezza a &lt;code>EOSE&lt;/code>, permettendo ai relay di distinguere &amp;ldquo;eventi memorizzati consegnati integralmente&amp;rdquo; dai casi legacy &lt;code>EOSE&lt;/code> in cui il relay non fa alcuna dichiarazione di completezza.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="sei-april-di-nostr">Sei April di Nostr&lt;/h2>
&lt;p>April dà una sezione trasversale pulita del percorso di sviluppo di Nostr: il documento di protocollo nel 2021, i primi lavori sui client nel 2022, l&amp;rsquo;ondata applicativa post-Damus nel 2023, la messaggistica privata e il lavoro git-over-Nostr nel 2024, Blossom e la pulizia della relay list nel 2025 e le grant focalizzate sull&amp;rsquo;adozione dei client nel 2026.&lt;/p>
&lt;h3 id="aprile-2021-il-documento-di-protocollo-prima-del-repo-nips">Aprile 2021: il documento di protocollo prima del repo NIPs&lt;/h3>
&lt;p>Fiatjaf ha pubblicato l&amp;rsquo;articolo originale su Nostr, &lt;a href="https://fiatjaf.com/nostr.html">&amp;ldquo;Notes and Other Stuff Transmitted by Relays&amp;rdquo;&lt;/a>, il 20 novembre 2020. Quel primo testo conteneva già la forma centrale che ancora definisce il protocollo: gli utenti firmano eventi con chiavi, li pubblicano ai relay e leggono dai relay che scelgono. Il &lt;a href="https://github.com/nostr-protocol/nostr/commits?since=2021-04-01&amp;amp;until=2021-04-30">commit log di &lt;code>nostr-protocol/nostr&lt;/code>&lt;/a> mostra zero commit tra il 1° e il 30 aprile. L&amp;rsquo;attività si trova ai due lati: i commit di marzo 2021 hanno aggiunto i primi link &amp;ldquo;nostwitter&amp;rdquo; e un filtro &lt;code>kind&lt;/code>, mentre quelli di maggio 2021 hanno riproposto NIP-02 e aggiunto la NIP authorship.&lt;/p>
&lt;p>Nell&amp;rsquo;aprile 2021 non c&amp;rsquo;era un mercato client pubblico, nessuna rete di relay visibile, nessun repo NIPs. Il protocollo viveva ancora come un piccolo documento e pochi esperimenti. Nostr non era ancora diventato un social network o una piattaforma di sviluppo. Era ancora un modello relay/chiave/evento in attesa della sua prima ondata sostenuta di contributor.&lt;/p>
&lt;h3 id="aprile-2022-i-nip-vivevano-ancora-nel-repo-principale">Aprile 2022: i NIP vivevano ancora nel repo principale&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2022 è stato l&amp;rsquo;ultimo mese prima che i NIP si spostassero fuori dal repo principale &lt;code>nostr-protocol/nostr&lt;/code>. Poiché lo split non era ancora avvenuto, il repo dedicato &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a> non aveva storia di pull request in aprile. Nel repo principale, tre commit di aprile sono arrivati: &lt;a href="https://github.com/nostr-protocol/nostr/commit/bae286312a233b971bee5429adda7aff41747eb8">&amp;ldquo;Update readme to add nip12&amp;rdquo;&lt;/a> l'8 aprile di goswami1999, &lt;a href="https://github.com/nostr-protocol/nostr/commit/4b9e9d123273ba8a5c70d77df46922070c11c11d">&amp;ldquo;add kinds list&amp;rdquo;&lt;/a> il 25 aprile di jb55 e &lt;a href="https://github.com/nostr-protocol/nostr/commit/759997657f07e0344064228ffe5e93febe85d367">&amp;ldquo;add js formatting to sample code&amp;rdquo;&lt;/a> il 28 aprile di steliosrammos.&lt;/p>
&lt;p>Anche il lavoro sui client cominciava a prendere forma. I commit di Damus dell&amp;rsquo;aprile 2022 hanno aggiunto il primo comportamento chatroom, la gestione del profilo e le icone dell&amp;rsquo;app, mentre nostr-tools stava diventando il percorso di libreria JavaScript per i primi client ed esperimenti. Sul lato protocollo, le query di tag generiche NIP-12 hanno dato alla ricerca per tag un posto documentato, la kinds list ha spostato Nostr verso un modello a registry e migliori esempi JavaScript hanno reso la spec più facile da implementare per autori di client e librerie. Il 1° maggio, fiatjaf ha spostato i NIP nel repo dedicato. L&amp;rsquo;aprile 2022 è stato l&amp;rsquo;ultimo mese dell&amp;rsquo;era originale a repo unico.&lt;/p>
&lt;h3 id="aprile-2023-espansione-applicativa-post-damus">Aprile 2023: espansione applicativa post-Damus&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2023 è arrivato tre mesi dopo il lancio di Damus sull&amp;rsquo;App Store iOS del 31 gennaio 2023, e dopo che Jack Dorsey aveva postato la sua chiave pubblica Nostr. La rete aveva appena assorbito la sua prima grande ondata di crescita pubblica. Client come Damus, Snort, Iris, Coracle e Amethyst erano attivi, mentre gli operatori di relay stavano imparando cosa un social graph più grande faceva alle assunzioni su banda, spam, ricerca e moderazione.&lt;/p>
&lt;p>L&amp;rsquo;aprile 2023 ha avuto una sola PR NIPs mergiata: &lt;a href="https://github.com/nostr-protocol/nips/pull/456">PR #456&lt;/a>, mergiata il 17 aprile, che aggiungeva link a entità bech32 NIP-19 alla gestione URI NIP-21. I commit circostanti mostrano la pressione applicativa dietro il lavoro di protocollo. L&amp;rsquo;aprile 2023 ha visto lavoro su &lt;a href="https://github.com/nostr-protocol/nips/commit/8b39976e78f90fe766ad7149e250777cddacbb5e">NIP-45 COUNT&lt;/a>, zap marker specifici per evento, &lt;a href="https://github.com/nostr-protocol/nips/commit/bf0a0da6a48b96467172414d8e41dc72b0ca379c">NIP-15 marketplace&lt;/a>, semantica di delegated delete NIP-26, file metadata NIP-94, gestione degli errori wallet-connect NIP-47 e &lt;a href="https://github.com/nostr-protocol/nips/commit/e91ce3409e1ce8267fc07a21784d2538621267c3">NIP-30 custom emoji&lt;/a>. La lista dei contributor si era allargata a includere fiatjaf, staab, pablof7z, Semisol, CodyTseng, sethforprivacy, mikedilger, AsaiToshiya, alexgleason, martindsq, frbittencourt e arkin0x.&lt;/p>
&lt;p>Damus, Snort, Iris, Coracle e Amethyst non erano più demo attorno a una spec; erano client di produzione che affrontavano onboarding, feed, spam, zap, media e selezione dei relay. Il lavoro di protocollo dell&amp;rsquo;aprile 2023 si legge come il backlog che quei client hanno creato: zap, marketplace, file metadata, conteggio, emoji e link identitari hanno tutti spinto la spec oltre le semplici note e i semplici follow.&lt;/p>
&lt;h3 id="aprile-2024-messaggistica-privata-git-over-nostr-e-supporto-ai-manutentori">Aprile 2024: messaggistica privata, git-over-Nostr e supporto ai manutentori&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2024 ha avuto due PR NIP mergiate. &lt;a href="https://github.com/nostr-protocol/nips/pull/1167">PR #1167&lt;/a>, mergiata il 10 aprile, ha corretto terminologia confusa nel remote signing &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, in cui client e signer hanno bisogno di linguaggio esatto per le azioni richieste e autorizzate. &lt;a href="https://github.com/nostr-protocol/nips/pull/1108">PR #1108&lt;/a>, mergiata il 17 aprile, ha espanso i git repositories &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> con eventi di stato, chiarimenti, manutentori opzionali, identificatori di repo e tag di discoverability. Quel passo ha reso git-over-Nostr più pratico per ngit e in seguito GitWorkshop.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/commit/df30012430c88d49fb5b124992b04d5c61b6338b">NIP-17&lt;/a>, precedentemente NIP-24, è atterrato il 24 aprile come messaggi sigillati e gift-wrapped per DM privati e piccole chat di gruppo. Il lavoro su client e librerie ha corso in parallelo: Amethyst, Primal, Gossip, nostr-tools, NDK e rust-nostr erano tutti attivi nello stesso periodo.&lt;/p>
&lt;p>OpenSats ha anche annunciato supporto a lungo termine per gli sviluppatori Nostr nell&amp;rsquo;aprile 2024: &lt;a href="https://opensats.org/blog/pablofz7-receives-lts-grant">PabloF7z&lt;/a> il 9 aprile, &lt;a href="https://opensats.org/blog/stuart-bowman-receives-lts-grant">Stuart Bowman&lt;/a> il 12 aprile e &lt;a href="https://opensats.org/blog/hzrd149-receives-lts-grant">hzrd149&lt;/a> il 15 aprile. Quelle grant hanno spostato il finanziamento dalle grant di progetto isolate verso la manutenzione sostenuta di relay, librerie e infrastruttura client.&lt;/p>
&lt;h3 id="aprile-2025-pulizia-densa-dei-nip-e-formalizzazione-di-blossom">Aprile 2025: pulizia densa dei NIP e formalizzazione di Blossom&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2025 è stato il mese di protocollo più denso in questo retrospettivo, con sedici PR NIPs mergiate. Il mese è iniziato con &lt;a href="https://github.com/nostr-protocol/nips/pull/1846">PR #1846&lt;/a>, che ha aggiunto transazioni e indirizzi blockchain a NIP-73, e &lt;a href="https://github.com/nostr-protocol/nips/pull/1865">PR #1865&lt;/a>, che ha aggiunto i tag NIP-C0 alla tabella dei tag standardizzati. È continuato con &lt;a href="https://github.com/nostr-protocol/nips/pull/1801">PR #1801&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/pull/1889">PR #1889&lt;/a>, entrambe migliorativi delle indicazioni di ripubblicazione della relay list di kind &lt;code>10002&lt;/code>, e &lt;a href="https://github.com/nostr-protocol/nips/pull/1879">PR #1879&lt;/a>, che ha ridotto e chiarito &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1822">PR #1822&lt;/a> ha aggiunto NIP-B7 per l&amp;rsquo;interazione Blossom, dando ai client Nostr e ai server Blossom un layer di coordinamento canonico dopo più di un anno di pratica informale. &lt;a href="https://github.com/nostr-protocol/nips/pull/1051">PR #1051&lt;/a> ha deprecato &lt;a href="https://github.com/nostr-protocol/nips/blob/master/26.md">NIP-26&lt;/a>, la spec di firma evento delegata. NIP-26 era stato difficile da implementare in modo sicuro ed era diventato meno attraente man mano che NIP-46 e altri pattern di signer maturavano.&lt;/p>
&lt;p>Il resto del mese ha combinato pulizia con espansione applicativa: &lt;a href="https://github.com/nostr-protocol/nips/pull/1882">PR #1882&lt;/a> ha aggiunto campi di privacy policy e terms of service a &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>, &lt;a href="https://github.com/nostr-protocol/nips/pull/1849">PR #1849&lt;/a> ha espanso i bookmark web di kind &lt;code>39701&lt;/code> sotto NIP-B0, &lt;a href="https://github.com/nostr-protocol/nips/pull/1891">PR #1891&lt;/a> ha aggiunto quel kind di bookmark al README, e &lt;a href="https://github.com/nostr-protocol/nips/pull/1895">PR #1895&lt;/a> ha aggiunto tag standardizzati NIP-B0. OpenSats ha annunciato la sua &lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants">Eleventh Wave of Nostr Grants&lt;/a> il 16 aprile, finanziando Swae, HAMSTR, Vertex, Nostr Double Ratchet e Nostr Game Engine. Primal, Coracle, noStrudel, nostr-tools, NDK e rust-nostr stavano anch&amp;rsquo;essi rilasciando in questo periodo, quindi la pulizia del protocollo si è affiancata al lavoro attivo su client e librerie.&lt;/p>
&lt;h3 id="aprile-2026-hardening-di-nip-34-badge-e-grant-focalizzate-sulladozione">Aprile 2026: hardening di NIP-34, badge e grant focalizzate sull&amp;rsquo;adozione&lt;/h3>
&lt;p>L&amp;rsquo;aprile 2026, il mese con cui si chiude questo numero, ha avuto quattro PR NIPs mergiate. La prima è stata &lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>, mergiata il 1° aprile, che ha modificato i badge profilo &lt;a href="https://github.com/nostr-protocol/nips/blob/master/58.md">NIP-58&lt;/a> al kind &lt;code>10008&lt;/code> e aggiunto set di badge di kind &lt;code>30008&lt;/code>, rendendo l&amp;rsquo;assegnazione dei badge e le collezioni di badge più componibili. Un secondo cambiamento di usabilità git-over-Nostr è arrivato in &lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>, mergiata il 10 aprile, che ha aggiunto la semantica URL di clone &lt;code>nostr://&lt;/code> a &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>. Le pulizie del 25 aprile, &lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>, hanno rimosso linguaggio NIP-34 inutilizzato e scorretto.&lt;/p>
&lt;p>I commit correlati affilano le stesse superfici. Il 22 aprile, fiatjaf ha aggiunto una lista di server Blossom a NIP-51 e regolato l&amp;rsquo;editing dei metadati NIP-29 per corrispondere al comportamento PUT-style di Flotilla. Il 26 aprile, ha rinominato NIP-5A per chiarezza. L&amp;rsquo;aprile 2026 si è concentrato sul rendere superfici di protocollo già usate più facili da implementare e più difficili da fraintendere.&lt;/p>
&lt;p>OpenSats ha annunciato la sua &lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">Sixteenth Wave of Nostr Grants&lt;/a> l'8 aprile, sostenendo Amethyst Desktop, Nostr Mail, Nostrord, Nurunuru (null&amp;ndash;nostr) e un rinnovo HAMSTR: client desktop, messaggistica email-like, UX di gruppo, onboarding giapponese e connettività off-grid.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Grazie per aver letto Nostr Compass #20. &lt;a href="https://nostr.com">Mandateci un DM su Nostr&lt;/a> con suggerimenti, correzioni o nuovi progetti da coprire.&lt;/em>&lt;/p></content:encoded></item><item><title>Nostr Compass #19</title><link>https://nostrcompass.org/it/newsletters/2026-04-22-newsletter/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-22-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> chiude un grande ciclo di lavoro su &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, communities &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a>, zap goals &lt;a href="https://nostrcompass.org/it/topics/nip-75/">NIP-75&lt;/a> e audio rooms basate su Media over QUIC. &lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> stabilizza l&amp;rsquo;accesso Internet pay-per-use su Nostr e Cashu con &lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0&lt;/a>. &lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> completa una settimana di lavoro relay attorno a &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a>, compressione, hardening delle query e piena parità con &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>. &lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> pubblica un intero stack per firma, identità e API a pagamento su Nostr. &lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> continua a spingere flussi Lightning nativi su Nostr. Il gruppo Formstr porta avanti 26 PR tra hardening di sicurezza e supporto RRULE. &lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a>, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, &lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a>, &lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a>, &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> e &lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a> completano la lista delle release. Gli approfondimenti di questa settimana coprono &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> chiude un grande ciclo di lavoro su &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, communities &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a>, zap goals &lt;a href="https://nostrcompass.org/it/topics/nip-75/">NIP-75&lt;/a> e audio rooms basate su Media over QUIC. &lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> stabilizza l&amp;rsquo;accesso Internet pay-per-use su Nostr e Cashu con &lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0&lt;/a>. &lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> completa una settimana di lavoro relay attorno a &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a>, compressione, hardening delle query e piena parità con &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>. &lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> pubblica un intero stack per firma, identità e API a pagamento su Nostr. &lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> continua a spingere flussi Lightning nativi su Nostr. Il gruppo Formstr porta avanti 26 PR tra hardening di sicurezza e supporto RRULE. &lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a>, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, &lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a>, &lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a>, &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> e &lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a> completano la lista delle release. Gli approfondimenti di questa settimana coprono &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>.&lt;/p>
&lt;h2 id="top-stories">Top Stories&lt;/h2>
&lt;h3 id="amethyst-ships-marmot-mip-compliance-nip-72-communities-zap-goals-and-moq-audio-rooms">Amethyst ships Marmot MIP compliance, NIP-72 communities, zap goals, and MoQ audio rooms&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha unito 57 PR questa settimana. I temi principali sono la conformità ai MIP di &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, il supporto di prima classe alle moderated communities, gli zap goals sui live stream e un nuovo stack per audio rooms costruito su Media over QUIC.&lt;/p>
&lt;p>Sul fronte Marmot, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2462">PR #2462&lt;/a> allinea l&amp;rsquo;implementazione embedded di &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> ai formati wire MIP-01 e MIP-05, aggiungendo codifica VarInt e validazione round-trip contro i test vector di MDK. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2435">PR #2435&lt;/a> aggiunge il supporto MIP-00 KeyPackage Relay List, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2436">PR #2436&lt;/a> chiude i gap residui emersi dai test cross-client con &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2466">PR #2466&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2471">PR #2471&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2477">PR #2477&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2493">PR #2493&lt;/a> sistemano framing MLS, bug di decrittazione e validazione completa della crittografia dei commit.&lt;/p>
&lt;p>Accanto al lavoro di protocollo, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2488">PR #2488&lt;/a> pubblica &lt;code>amy&lt;/code>, uno strumento command-line per operazioni di gruppo Marmot e MLS guidato dall&amp;rsquo;implementazione di Amethyst. Gli integratori ottengono così un modo scriptabile per creare gruppi, generare KeyPackages, simulare welcome e validare commit contro un signer reale di Amethyst.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2468">PR #2468&lt;/a> aggiunge la creazione e la gestione complete delle community &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a>. Gli utenti possono pubblicare il kind &lt;code>34550&lt;/code>, aggiungere moderator e relay hint, inviare post con un tag &lt;code>a&lt;/code> che punta alla community e gestire l&amp;rsquo;approvazione dei contributi tramite eventi kind &lt;code>4549&lt;/code>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2458">PR #2458&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2473">PR #2473&lt;/a> aggiungono supporto agli emoji set e una UI completa per la gestione degli emoji pack &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2469">PR #2469&lt;/a> collega gli zap goals &lt;a href="https://nostrcompass.org/it/topics/nip-75/">NIP-75&lt;/a> alla schermata Live Activities &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a>. Ogni stream mostra un header con goal di raccolta, barra di avanzamento, pulsante zap e classifica dei top zapper calcolata dalle ricevute kind &lt;code>9735&lt;/code>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2486">PR #2486&lt;/a> aggiunge una schermata dedicata Live Streams, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2491">PR #2491&lt;/a> introduce helper per proof-of-agreement ed event builder, e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2461">PR #2461&lt;/a> migliora la riproduzione HLS.&lt;/p>
&lt;p>La nuova superficie più ambiziosa è l&amp;rsquo;audio real-time. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2494">PR #2494&lt;/a> aggiunge un client Media over QUIC e il supporto alle audio rooms. Insieme alla nuova schermata Public Chats di &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2487">PR #2487&lt;/a>, Amethyst arriva a una superficie end-to-end per stanze audio pubbliche accanto alla propria messaggistica cifrata Marmot.&lt;/p>
&lt;h3 id="tollgate-v010-stabilizes-pay-per-use-internet-over-nostr-and-cashu">TollGate v0.1.0 stabilizes pay-per-use internet over Nostr and Cashu&lt;/h3>
&lt;p>&lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> ha taggato &lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0&lt;/a> il 21 aprile, il primo snapshot stabile del suo insieme di specifiche per l&amp;rsquo;accesso alla rete pay-per-use. Il protocollo permette a un dispositivo che può controllare la connettività, come un router WiFi o uno switch Ethernet, di pubblicizzare i prezzi, accettare token ecash &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> e gestire sessioni tramite token locali prepagati invece di account o subscription. Un cliente con pochi sats in un wallet Cashu locale può acquistare il prossimo minuto o megabyte di connettività da qualunque TollGate compatibile.&lt;/p>
&lt;p>La release fissa tre livelli dell&amp;rsquo;architettura. Il livello protocollo, definito in &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/TIP-01.md">TIP-01&lt;/a>, specifica tre forme di evento base: Advertisement, Session e Notice. &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/TIP-02.md">TIP-02&lt;/a> aggiunge i pagamenti Cashu, permettendo al cliente di riscattare token da qualunque mint pubblicizzata dal gate. Sopra c&amp;rsquo;è il livello interfaccia: &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/HTTP-01.md">HTTP-01&lt;/a> fino a HTTP-03 definiscono una superficie HTTP semplice per dispositivi con sistemi operativi restrittivi, mentre &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/NOSTR-01.md">NOSTR-01&lt;/a> definisce il trasporto tramite relay Nostr. Infine, &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/WIFI-01.md">WIFI-01&lt;/a> copre il livello medium descrivendo il routing captive-portal per i clienti paganti.&lt;/p>
&lt;p>Il nuovo &lt;a href="https://nostrcompass.org/it/topics/tollgate/">topic su TollGate&lt;/a> copre l&amp;rsquo;intero stack.&lt;/p>
&lt;h3 id="nostream-merges-53-prs-for-nip-45-nip-62-compression-and-query-hardening">nostream merges 53 PRs for NIP-45, NIP-62, compression, and query hardening&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>, implementazione relay TypeScript di Cameri, ha unito 53 PR in una settimana tra nuovo supporto NIP, performance delle query, hardening di sicurezza e miglioramenti operativi.&lt;/p>
&lt;p>Sul lato funzionale, &lt;a href="https://github.com/Cameri/nostream/pull/522">PR #522&lt;/a> aggiunge il supporto &lt;code>COUNT&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://github.com/Cameri/nostream/pull/544">PR #544&lt;/a> aggiunge &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> alla lista delle funzionalità pubblicizzate, &lt;a href="https://github.com/Cameri/nostream/pull/548">PR #548&lt;/a> estende lo schema dei filtri ai tag maiuscoli e &lt;a href="https://github.com/Cameri/nostream/pull/514">PR #514&lt;/a> aggiunge compressione gzip e xz per import ed export di eventi.&lt;/p>
&lt;p>Prestazioni e correttezza arrivano con &lt;a href="https://github.com/Cameri/nostream/pull/534">PR #534&lt;/a>, che introduce un harness di benchmark e una passata di ottimizzazione sulla traduzione dei filtri in SQL. &lt;a href="https://github.com/Cameri/nostream/pull/524">PR #524&lt;/a> corregge un bug nel matching pubkey delle whitelist e blacklist, &lt;a href="https://github.com/Cameri/nostream/pull/553">PR #553&lt;/a> aggiunge un tie-breaker deterministico a &lt;code>upsertMany&lt;/code>, &lt;a href="https://github.com/Cameri/nostream/pull/493">PR #493&lt;/a> limita la fiducia in &lt;code>X-Forwarded-For&lt;/code> ai proxy configurati e &lt;a href="https://github.com/Cameri/nostream/pull/557">PR #557&lt;/a> porta il relay alla piena parità con &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>.&lt;/p>
&lt;h2 id="shipping-this-week">Shipping This Week&lt;/h2>
&lt;h3 id="primal-android-ships-explore-tab-nip-05-verification-and-audio-player">Primal Android ships Explore tab, NIP-05 verification, and audio player&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha unito 11 PR sopra il redesign del feed della settimana scorsa. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1021">PR #1021&lt;/a> introduce una nuova tab Explore costruita su utenti popolari, follow packs e curated feeds, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1015">PR #1015&lt;/a> aggiunge un editor dei feed che si prepopola dalla DSL Advanced Search di Primal, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/994">PR #994&lt;/a> porta la UI di verifica &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> e &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/997">PR #997&lt;/a> integra un audio player inline nei feed. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1018">PR #1018&lt;/a> aggiunge anche il pairing nostr-connect &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> dal wallet QR scanner.&lt;/p>
&lt;h3 id="strfry-adds-prometheus-write-path-metrics-and-fixes-nip-42-auth-envelope">strfry adds Prometheus write-path metrics and fixes NIP-42 AUTH envelope&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> ha pubblicato un gruppo di miglioramenti orientati agli operatori. &lt;a href="https://github.com/hoytech/strfry/pull/194">PR #194&lt;/a> aggiunge un exporter Prometheus dedicato per le metriche del write path, &lt;a href="https://github.com/hoytech/strfry/pull/197">PR #197&lt;/a> registra byte e compressione per connessione e &lt;a href="https://github.com/hoytech/strfry/pull/192">PR #192&lt;/a> rende configurabile a runtime il limite dei tag nei filtri. Sul piano della correttezza del protocollo, &lt;a href="https://github.com/hoytech/strfry/pull/201">PR #201&lt;/a> cambia le risposte di fallimento AUTH &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> da &lt;code>NOTICE&lt;/code> all&amp;rsquo;envelope &lt;code>OK&lt;/code> previsto dalla specifica.&lt;/p>
&lt;h3 id="shopstr-hardens-storefront-security-across-13-prs">Shopstr hardens storefront security across 13 PRs&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, client marketplace su Nostr, ha unito 13 PR dominate da fix di sicurezza. &lt;a href="https://github.com/shopstr-eng/shopstr/pull/434">PR #434&lt;/a> chiude un hole di stored JavaScript nei link delle storefront, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/417">PR #417&lt;/a> fa escaping dell&amp;rsquo;HTML delle policy per bloccare XSS riflesso, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/418">PR #418&lt;/a> chiude un&amp;rsquo;API di cancellazione eventi cached non autenticata e &lt;a href="https://github.com/shopstr-eng/shopstr/pull/433">PR #433&lt;/a>, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/419">PR #419&lt;/a>, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/435">PR #435&lt;/a> e &lt;a href="https://github.com/shopstr-eng/shopstr/pull/414">PR #414&lt;/a> rafforzano letture, mutazioni ed endpoint sensibili.&lt;/p>
&lt;h3 id="nostria-v3126-through-v3128-add-background-music-playback-on-android">Nostria v3.1.26 through v3.1.28 add background music playback on Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ha pubblicato sei release da &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.22">v3.1.22&lt;/a> a &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.28">v3.1.28&lt;/a>. La novità principale di &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.26">v3.1.26&lt;/a> è la riproduzione musicale in background su Android, con controlli media nella notification bar e nella lock screen. Le release successive rafforzano questo nuovo media-service surface.&lt;/p>
&lt;h3 id="wisp-v0180-beta-adds-normie-mode-for-you-feed-and-nip-29-group-config">Wisp v0.18.0-beta adds Normie Mode, For You feed, and NIP-29 group config&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, client Android in Kotlin e Jetpack Compose di barrydeen, ha pubblicato &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.18.0-beta">v0.18.0-beta&lt;/a> il 16 aprile. &lt;a href="https://github.com/barrydeen/wisp/pull/462">PR #462&lt;/a> aggiunge una Normie Mode con importi fiat-denominati, &lt;a href="https://github.com/barrydeen/wisp/pull/464">PR #464&lt;/a> rinnova l&amp;rsquo;onboarding e &lt;a href="https://github.com/barrydeen/wisp/pull/469">PR #469&lt;/a> introduce un feed For You. Sul lato protocollo, &lt;a href="https://github.com/barrydeen/wisp/pull/471">PR #471&lt;/a> aggiunge la configurazione dei gruppi &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> e &lt;a href="https://github.com/barrydeen/wisp/pull/478">PR #478&lt;/a> corregge il flusso AUTH &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> prima degli eventi amministrativi di gruppo. &lt;a href="https://github.com/barrydeen/wisp/pull/481">PR #481&lt;/a> inoltra anche le note agli inbox relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> delle pubkey menzionate.&lt;/p>
&lt;h3 id="noornote-v084-adds-scheduled-posts-and-live-stream-zapping">NoorNote v0.8.4 adds Scheduled Posts and live stream zapping&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> ha pubblicato &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.4">v0.8.4&lt;/a> e &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.5">v0.8.5&lt;/a>. La novità principale della v0.8.4 è Scheduled Posts: l&amp;rsquo;app consegna un evento già firmato a un relay gestito da NoorNote che lo pubblica al momento pianificato, cosi le chiavi private non lasciano mai il dispositivo. La stessa release aggiunge zapping con un tocco dalle card dei live stream, dove i sats compaiono nell&amp;rsquo;overlay chat via &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a>. La v0.8.5 corregge un bug di deduplicazione della timeline.&lt;/p>
&lt;h3 id="topaz-v002-ships-a-nostr-relay-for-android">topaz v0.0.2 ships a Nostr relay for Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a>, nuovo relay Nostr che gira su telefoni Android creato da fiatjaf, ha pubblicato &lt;a href="https://github.com/fiatjaf/topaz/releases/tag/v0.0.2">v0.0.2&lt;/a> il 17 aprile. Il progetto è Kotlin-first e punta a trasformare il telefono in un relay personale sempre disponibile. Per ora l&amp;rsquo;obiettivo è stretto: un relay funzionante in un pacchetto Android installabile.&lt;/p>
&lt;h3 id="stablekraft-v100-ships-the-first-stable-music-and-podcast-pwa-release">StableKraft v1.0.0 ships the first stable music-and-podcast PWA release&lt;/h3>
&lt;p>&lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a> è una PWA Next.js per scoprire, organizzare e ascoltare musica prelevata dai feed podcast, con Nostr per auth e funzioni social e Lightning per i pagamenti V4V. Ha raggiunto &lt;a href="https://github.com/ChadFarrow/stablekraft-app/releases/tag/v1.0.0">v1.0.0&lt;/a> il 18 aprile. Nella stessa settimana il progetto ha stretto l&amp;rsquo;ingestion dei feed con una cache OPML di 15 minuti e la rimozione di XML illegale, e ha ridotto la finestra di reparse notturna da 720 ore a 24 ore per permettere ai feed aggiunti di recente di autoripararsi più in fretta.&lt;/p>
&lt;h3 id="niplock-ships-a-nip-17-based-password-manager">NipLock ships a NIP-17-based password manager&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a> è un password manager che memorizza e sincronizza credenziali tra dispositivi usando messaggi diretti gift-wrapped &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>. Ogni voce password è un DM NIP-17 dall&amp;rsquo;utente verso se stesso, cosi gli stessi eventi si replicano su qualunque dispositivo si autentichi con la stessa chiave. La firma funziona con &lt;code>nsec&lt;/code> raw, estensioni browser come &lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a> o &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> via &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="flotilla-budabit-polishes-its-nip-34-repo-surface">flotilla-budabit polishes its NIP-34 repo surface&lt;/h3>
&lt;p>Il fork della comunità Budabit di &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, &lt;a href="https://github.com/Pleb5/flotilla-budabit">flotilla-budabit&lt;/a>, ha pubblicato un gruppo di fix per il proprio workflow git-over-nostr NIP-34. Gli aggiornamenti ripristinano i controlli per la discussione dei repository, mantengono visibili le sticky repo tabs sulle pagine dettaglio, caricano gli annunci repo dai relay GRASP salvati e tengono sincronizzato lo stato delle patch applicate dai maintainer.&lt;/p>
&lt;h3 id="rx-nostr-372-through-374-add-default-verifier-and-optional-constructor-args">rx-nostr 3.7.2 through 3.7.4 add default verifier and optional constructor args&lt;/h3>
&lt;p>&lt;a href="https://github.com/penpenpng/rx-nostr">rx-nostr&lt;/a>, libreria Nostr basata su RxJS, ha pubblicato &lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.2">3.7.2&lt;/a>, &lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.3">3.7.3&lt;/a> e &lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.4">3.7.4&lt;/a>. &lt;a href="https://github.com/penpenpng/rx-nostr/pull/192">PR #192&lt;/a> aggiunge un verificatore Schnorr predefinito e &lt;a href="https://github.com/penpenpng/rx-nostr/pull/195">PR #195&lt;/a> rende opzionali gli argomenti di &lt;code>createRxNostr()&lt;/code> per integrazioni rapide a configurazione zero.&lt;/p>
&lt;h3 id="keep-android-v100-ships-with-reproducible-builds-and-zero-trackers">Keep Android v1.0.0 ships with reproducible builds and zero trackers&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, gestore di password e segreti nativo Nostr, ha pubblicato &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.0.0">v1.0.0&lt;/a> il 21 aprile dopo una serie di PR di hardening. &lt;a href="https://github.com/privkeyio/keep-android/pull/241">PR #241&lt;/a> aggiunge una recipe per build riproducibili, &lt;a href="https://github.com/privkeyio/keep-android/pull/248">PR #248&lt;/a> sostituisce Google ML Kit con ZXing per rimuovere la dipendenza da Google Play Services, &lt;a href="https://github.com/privkeyio/keep-android/pull/252">PR #252&lt;/a> pubblica una scansione Exodus Privacy che mostra zero tracker e &lt;a href="https://github.com/privkeyio/keep-android/pull/256">PR #256&lt;/a> aggiunge un file &lt;code>zapstore.yaml&lt;/code> per la distribuzione tramite &lt;a href="https://zapstore.dev">zapstore&lt;/a>.&lt;/p>
&lt;h3 id="flotilla-173-and-174-add-kind-9-wrapping-for-richer-nip-29-rooms">Flotilla 1.7.3 and 1.7.4 add kind-9 wrapping for richer NIP-29 rooms&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, client per gruppi &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> di hodlbod, ha pubblicato &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.3">1.7.3&lt;/a> e &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.4">1.7.4&lt;/a>. Il cambiamento di protocollo principale è il wrapping dei tipi di contenuto non-chat dentro eventi kind &lt;code>9&lt;/code>, annunciato nel &lt;a href="#ZgotmplZ">release note di hodlbod&lt;/a> e collegato a &lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a>. Questo permette di preservare il contesto della stanza quando eventi come poll o calendario vengono inviati nel gruppo.&lt;/p>
&lt;h3 id="wot-relay-v021-migrates-eventstore-to-lmdb">WoT Relay v0.2.1 migrates eventstore to LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a>, relay filtrato tramite web of trust di bitvora, ha pubblicato &lt;a href="https://github.com/bitvora/wot-relay/releases/tag/v0.2.1">v0.2.1&lt;/a> il 22 aprile. &lt;a href="https://github.com/bitvora/wot-relay/pull/97">PR #97&lt;/a> migra l&amp;rsquo;eventstore a &lt;a href="http://www.lmdb.tech/">LMDB&lt;/a>, &lt;a href="https://github.com/bitvora/wot-relay/pull/99">PR #99&lt;/a> aggiorna &lt;code>golang.org/x/crypto&lt;/code> e &lt;a href="https://github.com/bitvora/wot-relay/pull/100">PR #100&lt;/a> aggiorna URL software e stringa versione in &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>.&lt;/p>
&lt;h3 id="formstr-suite-pollerama-security-pass-forms-i18n-calendar-rrule-support">Formstr suite: Pollerama security pass, Forms i18n, Calendar RRULE support&lt;/h3>
&lt;p>La suite Formstr ha unito 26 PR tra Pollerama, Formstr Forms e Nostr Calendar, con un tema chiaro di sicurezza sul lato poll e avanzamento funzionale sul resto.&lt;/p>
&lt;p>&lt;a href="https://pollerama.fun">Pollerama&lt;/a>, l&amp;rsquo;app &lt;a href="https://github.com/formstr-hq/nostr-polls">nostr-polls&lt;/a>, rafforza la gestione delle chiavi. &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/182">PR #182&lt;/a> scade i DM in cache al logout, &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/175">PR #175&lt;/a> sposta la chiave locale in uno storage browser più sicuro e &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/171">PR #171&lt;/a> protegge &lt;code>JSON.parse&lt;/code> del contenuto profilo kind &lt;code>0&lt;/code> in tutti i percorsi di login. &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/186">PR #186&lt;/a> aggiunge deep linking HTTPS e &lt;a href="https://github.com/formstr-hq/nostr-polls/pull/169">PR #169&lt;/a> rende cliccabili i nomi degli autori nei risultati.&lt;/p>
&lt;p>&lt;a href="https://formstr.app">Formstr&lt;/a>, suite &lt;a href="https://github.com/formstr-hq/nostr-forms">nostr-forms&lt;/a>, amplia la superficie di input e onboarding. &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/475">PR #475&lt;/a> aggiunge supporto a URL audio e video, &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/439">PR #439&lt;/a> introduce i18n, &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/466">PR #466&lt;/a> aggiunge un importatore da Google Forms e &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/463">PR #463&lt;/a> rimuove log sensibili dal browser console.&lt;/p>
&lt;p>&lt;a href="https://calendar.formstr.app">Nostr Calendar by Formstr&lt;/a> ha pubblicato &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.3.0">v1.3.0&lt;/a> e &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.4.0">v1.4.0&lt;/a>. &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/107">PR #107&lt;/a> aggiunge supporto multiplo e personalizzato a RRULE, &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/101">PR #101&lt;/a> interpreta come UTC le floating RRULE date secondo RFC 5545, &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/97">PR #97&lt;/a> permette di aggiungere eventi condivisi al proprio calendario, &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/86">PR #86&lt;/a> introduce preferenze di notifica per lista e &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/112">PR #112&lt;/a> rinnova login e loading path. Tutti e tre i progetti si basano sugli eventi calendario &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>.&lt;/p>
&lt;h3 id="also-shipped-notedeck-nostrblue-cliprelay-captains-log">Also shipped: notedeck, nostr.blue, cliprelay, Captain&amp;rsquo;s Log&lt;/h3>
&lt;p>Alcuni client hanno pubblicato release iterative senza una singola headline dominante. &lt;a href="https://github.com/damus-io/notedeck">notedeck&lt;/a> ha pubblicato &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.4">v0.10.0-beta.4&lt;/a> con fix su rendering a colonne e relay pool. &lt;a href="https://github.com/patrickulrich/nostr.blue/releases/tag/v0.8.6">nostr.blue v0.8.6&lt;/a> aggiorna Dioxus e sblocca la build Android. &lt;a href="https://github.com/tajava2006/cliprelay">cliprelay&lt;/a> ha pubblicato &lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/desktop%2Fv0.0.3">Desktop v0.0.3&lt;/a> e &lt;a href="https://github.com/tajava2006/cliprelay/releases/tag/android%2Fv0.0.4">Android v0.0.4&lt;/a>, stringendo il loop di sync. &lt;a href="https://github.com/nodetec/comet">Captain&amp;rsquo;s Log&lt;/a> ha pubblicato tre build alpha che aggiungono il rilevamento della liveness dei sync relay.&lt;/p>
&lt;h2 id="in-development">In Development&lt;/h2>
&lt;h3 id="whitenoise-rs-refactors-to-session-scoped-account-views">whitenoise-rs refactors to session-scoped account views&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>, il daemon Rust sotto il client &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha unito 15 PR per una refactor multi-fase che sposta la logica da singleton globali a viste per-account &lt;code>AccountSession&lt;/code>. L&amp;rsquo;obiettivo è scomporre un monolite condiviso in superfici più piccole, più facili da comprendere, testare ed evolvere senza effetti collaterali tra account diversi.&lt;/p>
&lt;p>La base arriva con &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/743">PR #743&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/753">PR #753&lt;/a>, seguite dallo spostamento di draft, settings, operazioni messaggi, lettura e scrittura di gruppo, membership, notifiche push, letture dei key package e creazione dei gruppi nelle PR successive. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/770">PR #770&lt;/a> chiude il giro reindirizzando il dispatch degli eventi sulla sessione, cosi ogni account consuma il proprio traffico relay senza contesa.&lt;/p>
&lt;h3 id="white-noise-app-adds-blockunblock-ui-leave-group-and-offline-notices">White Noise app adds block/unblock UI, leave-group, and offline notices&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, client &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, aggiunge i controlli mancanti sul ciclo di vita dei gruppi. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/578">PR #578&lt;/a> pubblica la UI per block e unblock sopra l&amp;rsquo;hook introdotto in &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/573">PR #573&lt;/a>, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/571">PR #571&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/572">PR #572&lt;/a> collegano &lt;code>clear_chat&lt;/code>, &lt;code>delete_chat&lt;/code> e &lt;code>leave_and_delete_group&lt;/code> dal lato Rust all&amp;rsquo;app, e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/569">PR #569&lt;/a> insieme a &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/576">PR #576&lt;/a> aggiungono avvisi offline nelle schermate chat e impostazioni. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/585">PR #585&lt;/a> restringe inoltre la cancellazione da &amp;ldquo;all key packages&amp;rdquo; a &amp;ldquo;legacy key packages&amp;rdquo;.&lt;/p>
&lt;h3 id="mdk-adds-mixed-version-invite-support-and-selfupdate-convergence">MDK adds mixed-version invite support and SelfUpdate convergence&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>, il &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> Development Kit, ha unito sette PR. La linea comune è la compatibilità tra versioni vicine, mantenendo i client in grado di invitarsi a vicenda, ruotare il proprio stato e recuperare da input malformati.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk/pull/261">PR #261&lt;/a> calcola le &lt;code>RequiredCapabilities&lt;/code> di un gruppo come LCD delle capability degli invitati e sblocca inviti tra &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>. &lt;a href="https://github.com/marmot-protocol/mdk/pull/264">PR #264&lt;/a> converge il formato wire di SelfUpdate tra implementazioni, &lt;a href="https://github.com/marmot-protocol/mdk/pull/262">PR #262&lt;/a> valida i key package degli invitati prima di persistere il signer del creatore, &lt;a href="https://github.com/marmot-protocol/mdk/pull/256">PR #256&lt;/a> corregge la validazione della depletion admin lato ricevente, &lt;a href="https://github.com/marmot-protocol/mdk/pull/259">PR #259&lt;/a> protegge lo stato in-memory critico e &lt;a href="https://github.com/marmot-protocol/mdk/pull/265">PR #265&lt;/a> espone un accessor &lt;code>group_required_proposals&lt;/code>.&lt;/p>
&lt;h3 id="nostter-adds-nip-44-encryption-across-people-lists-bookmarks-and-mutes">nostter adds NIP-44 encryption across people lists, bookmarks, and mutes&lt;/h3>
&lt;p>&lt;a href="https://github.com/SnowCait/nostter">nostter&lt;/a> ha unito 10 PR. &lt;a href="https://github.com/SnowCait/nostter/pull/2088">PR #2088&lt;/a> aggiunge cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> alle mute list, &lt;a href="https://github.com/SnowCait/nostter/pull/2089">PR #2089&lt;/a> la aggiunge ai bookmark e &lt;a href="https://github.com/SnowCait/nostter/pull/2090">PR #2090&lt;/a> alle people list, migrando dove possibile da &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>. &lt;a href="https://github.com/SnowCait/nostter/pull/2087">PR #2087&lt;/a> rimuove anche un vecchio percorso di migrazione per le mute kind 30000.&lt;/p>
&lt;h3 id="zapcooking-ships-nourish-scoring-and-a-reusable-comment-thread">zap.cooking ships Nourish scoring and a reusable comment thread&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">zap.cooking&lt;/a>, client Nostr per ricette, ha unito 20 PR. La novità principale è un modulo Nourish per il punteggio nutrizionale delle ricette nelle &lt;a href="https://github.com/zapcooking/frontend/pull/317">PR #317&lt;/a> e &lt;a href="https://github.com/zapcooking/frontend/pull/319">PR #319&lt;/a>. Accanto a questo, una refactor in quattro fasi da &lt;a href="https://github.com/zapcooking/frontend/pull/299">PR #299&lt;/a> a &lt;a href="https://github.com/zapcooking/frontend/pull/302">PR #302&lt;/a> estrae il modulo Comments in un &lt;code>CommentThread&lt;/code> riutilizzabile.&lt;/p>
&lt;h3 id="ridestr-extracts-shared-rider-coordinator">ridestr extracts shared rider coordinator&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">ridestr&lt;/a>, app di ride-sharing decentralizzata, ha unito 10 PR che rifattorizzano le schermate Compose in componenti più focalizzati ed estraggono la logica di protocollo per rider e driver in un modulo coordinatore condiviso &lt;code>:common&lt;/code>. &lt;a href="https://github.com/variablefate/ridestr/pull/60">PR #60&lt;/a> aggiunge anche un ricevitore kind &lt;code>3189&lt;/code> lato Roadflare.&lt;/p>
&lt;h3 id="blossom-drafts-a-bud-01-sunset-header-for-blob-expiration">Blossom drafts a BUD-01 Sunset header for blob expiration&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>, protocollo di hzrd149 per la memorizzazione di blob su server HTTP indicizzati da hash SHA-256, ha aperto &lt;a href="https://github.com/hzrd149/blossom/pull/99">PR #99&lt;/a> per aggiungere un header &lt;code>Sunset&lt;/code> a BUD-01. Il server potrebbe usarlo per pubblicizzare un timestamp futuro dopo il quale un blob non sarà più servito, permettendo ai client di pianificare in anticipo invece di scoprire la scadenza solo con un 404.&lt;/p>
&lt;h2 id="new-projects">New Projects&lt;/h2>
&lt;h3 id="forgesworn-publishes-a-29-repo-cryptographic-toolkit-for-nostr">Forgesworn publishes a 29-repo cryptographic toolkit for Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> ha pubblicato 29 repository open source in cinque giorni, coprendo firma, identità, attestazioni, web of trust e discovery di API a pagamento su Nostr.&lt;/p>
&lt;p>Lo stack di firma ruota attorno a &lt;a href="https://github.com/forgesworn/nsec-tree">nsec-tree&lt;/a>, schema deterministico di derivazione di sotto-identità che trasforma un master secret in identità Nostr illimitate e non collegabili, e a &lt;a href="https://github.com/forgesworn/heartwood">Heartwood&lt;/a>, signer remoto NIP-46 che gira su Raspberry Pi con Tor attivo per default. &lt;a href="https://github.com/forgesworn/sapwood">Sapwood&lt;/a> aggiunge una UI di gestione web, &lt;a href="https://github.com/forgesworn/heartwood-esp32">heartwood-esp32&lt;/a> porta lo stesso approccio su una board Heltec WiFi LoRa 32 e &lt;a href="https://github.com/forgesworn/nsec-tree-cli">nsec-tree-cli&lt;/a> espone i flussi di derivazione, prova e recupero Shamir.&lt;/p>
&lt;p>Sul lato identità e fiducia, &lt;a href="https://github.com/forgesworn/signet">Signet&lt;/a> arriva a &lt;a href="https://github.com/forgesworn/signet/releases/tag/v1.6.0">v1.6.0&lt;/a> come protocollo di verifica dell&amp;rsquo;identità decentralizzata per Nostr, &lt;a href="https://github.com/forgesworn/nostr-attestations">nostr-attestations&lt;/a> definisce un singolo evento kind &lt;code>31000&lt;/code> per credential, endorsement, provenance e trust, e &lt;a href="https://github.com/forgesworn/nostr-veil">nostr-veil&lt;/a> costruisce sopra un web of trust privacy-preserving con firme di anello LSAG su secp256k1.&lt;/p>
&lt;p>Sul lato monetizzazione, &lt;a href="https://github.com/forgesworn/toll-booth">toll-booth&lt;/a> è un middleware L402 per Express, Hono, Deno, Bun e Cloudflare Workers che trasforma una API in un toll booth Lightning in una riga. &lt;a href="https://github.com/forgesworn/toll-booth-dvm">toll-booth-dvm&lt;/a> espone la API protetta come DVM &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>, &lt;a href="https://github.com/forgesworn/toll-booth-announce">toll-booth-announce&lt;/a> la collega a &lt;a href="https://github.com/forgesworn/402-announce">402-announce&lt;/a>, che pubblica eventi parameterized replaceable kind &lt;code>31402&lt;/code> per la discovery di servizi HTTP 402 su Nostr, e &lt;a href="https://github.com/forgesworn/402-indexer">402-indexer&lt;/a> indicizza questi annunci. L&amp;rsquo;organizzazione pubblica anche una &lt;a href="https://github.com/forgesworn/nip-drafts">collezione di 29 draft NIP&lt;/a>.&lt;/p>
&lt;h3 id="shockwallet-ships-nostr-native-lightning-wallet-sync-and-multi-node-connections">ShockWallet ships Nostr-native Lightning wallet sync and multi-node connections&lt;/h3>
&lt;p>&lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> è un wallet Lightning che usa Nostr come trasporto per connettersi a nodi Lightning self-custodial. L&amp;rsquo;app si accoppia a uno o più nodi &lt;a href="https://github.com/shocknet/Lightning.Pub">Lightning.Pub&lt;/a> tramite un &lt;code>nprofile&lt;/code>, poi firma le autorizzazioni di pagamento end-to-end tra wallet e nodo. Il team ha pubblicato &lt;a href="https://github.com/shocknet/wallet2/pull/608">PR #608&lt;/a> il 18 aprile con un pass UI sulla dashboard dei canali, accanto a un flusso QR con admin-invite-link per nuovi utenti PUB (&lt;a href="https://github.com/shocknet/wallet2/pull/606">PR #606&lt;/a>) e un fix di leggibilità della dashboard metriche (&lt;a href="https://github.com/shocknet/wallet2/pull/607">PR #607&lt;/a>).&lt;/p>
&lt;p>ShockWallet usa gli eventi dati specifici per applicazione di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-78&lt;/a> per la sincronizzazione multi-device dello stato del wallet, cosi la vista del wallet resta coerente tra browser desktop e telefono senza server centralizzato. Questo lo colloca un livello sotto &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>: NIP-47 è l&amp;rsquo;interfaccia che un&amp;rsquo;app usa per chiedere a un wallet esistente di pagare, mentre ShockWallet usa Nostr come trasporto dell&amp;rsquo;account e della sessione del wallet verso il nodo Lightning sottostante.&lt;/p>
&lt;h3 id="nostrability-issues-migrate-to-git-over-nostr-after-github-censorship">Nostrability issues migrate to git over Nostr after GitHub censorship&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/elsat@habla.news/nostrability/issues">Nostrability&lt;/a>, il tracker di interoperabilità di elsat per client e relay Nostr, sta spostando il proprio workflow issue su git over Nostr dopo la rimozione dell&amp;rsquo;organizzazione Nostrability da GitHub. Il tracker migrato ora vive su GitWorkshop/ngit, dove i problemi esistenti sono già stati trasferiti e i futuri report di interoperabilità possono restare dentro un&amp;rsquo;infrastruttura nativa Nostr.&lt;/p>
&lt;h3 id="nowhere-encodes-full-websites-into-url-fragments-and-routes-orders-through-nostr">nowhere encodes full websites into URL fragments and routes orders through Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/5t34k">nowhere&lt;/a> è un nuovo progetto AGPL-3.0 di 5t34k che serializza un intero sito nel frammento URL dopo &lt;code>#&lt;/code>, lo comprime con sostituzione di dizionario e raw DEFLATE e lo codifica in base64url. Poiché HTTP vieta al browser di inviare i frammenti al server, l&amp;rsquo;host che consegna la pagina non vede mai il contenuto e il sito stesso non viene memorizzato su un server. Il progetto include otto tipi di sito, cinque completamente statici e tre che usano relay Nostr per ordini, post e firme con chiavi effimere e cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>.&lt;/p>
&lt;h3 id="small-new-surfaces-relaykit-and-brainstorm-search">Small new surfaces: relayk.it and Brainstorm Search&lt;/h3>
&lt;p>Due progetti piccoli meritano una menzione rapida. &lt;a href="https://relayk.it">relayk.it&lt;/a>, costruito da sam del team Soapbox, è un client per la discovery di relay costruito con Shakespeare che gira interamente nel browser. &lt;a href="https://brainstorm.world">Brainstorm Search&lt;/a> arriva come interfaccia di ricerca Nostr single-page focalizzata sull&amp;rsquo;emersione di contenuti attraverso la rete.&lt;/p>
&lt;h2 id="protocol-and-spec-work">Protocol and Spec Work&lt;/h2>
&lt;h3 id="nip-updates">NIP Updates&lt;/h3>
&lt;p>Proposte e discussioni recenti nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Open PRs and Discussions:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-67/">NIP-67&lt;/a>: EOSE Completeness Hint&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a>): propone un terzo elemento facoltativo nel messaggio &lt;code>EOSE&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> per indicare se il relay ha davvero consegnato tutti gli eventi memorizzati che corrispondono al filtro.&lt;/li>
&lt;li>&lt;strong>NIP-5D: Nostr Applets&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2303">PR #2303&lt;/a>): propone un nuovo kind per distribuire applet interattive su Nostr, tra &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A&lt;/a> per siti statici e &lt;a href="https://nostrcompass.org/it/topics/nip-5c/">NIP-5C&lt;/a> per scroll WASM.&lt;/li>
&lt;li>&lt;strong>NIP-29: Subgroups spec&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2319">PR #2319&lt;/a>): estende &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> con una gerarchia di sottogruppi, cosi un singolo gruppo può ospitare più canali paralleli senza creare gruppi indipendenti.&lt;/li>
&lt;li>&lt;strong>NIP-29: Explicit role permissions on kind 39003&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2316">PR #2316&lt;/a>): definisce uno schema esplicito dei permessi nei ruoli kind &lt;code>39003&lt;/code>, rendendo leggibili a client e utenti i poteri effettivi di un ruolo come moderator.&lt;/li>
&lt;li>&lt;strong>NIP-11: access_control field for gated-relay discovery&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2318">PR #2318&lt;/a>): aggiunge un oggetto &lt;code>access_control&lt;/code> facoltativo a &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> per descrivere il modello di accesso del relay.&lt;/li>
&lt;li>&lt;strong>NIP-63a: Minimal Payment Gateway Descriptor&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2315">PR #2315&lt;/a>): continua a iterare sulla forma dell&amp;rsquo;evento kind &lt;code>10164&lt;/code> e sul layout dei campi per regole di subscription per livello.&lt;/li>
&lt;li>&lt;strong>NIP-XX: Agent Reputation Attestations (Kind 30085)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2320">PR #2320&lt;/a>): propone un evento addressable kind &lt;code>30085&lt;/code> per attestazioni firmate su agenti e servizi autonomi in Nostr, con punteggi, evidenze e supporto ai mercati &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>.&lt;/li>
&lt;li>&lt;strong>NIP-TPLD: Transient Private Location Data&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2309">PR #2309&lt;/a>): prosegue il lavoro sul kind &lt;code>20411&lt;/code>, sulla forma di cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> per destinatario e sulla semantica del tag &lt;code>ttl&lt;/code>.&lt;/li>
&lt;li>&lt;strong>marmot-ts 0.5.0 release PR&lt;/strong> (&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/70">PR #70&lt;/a>): la PR di release per &lt;code>@internet-privacy/marmot-ts@0.5.0&lt;/code> include i primi breaking changes pianificati nel client TypeScript Marmot.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-72-moderated-communities">NIP Deep Dive: NIP-72 (Moderated Communities)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/72.md">NIP-72&lt;/a> definisce un modello di community tematiche su Nostr in cui i moderator curano una vista di lettura sopra scritture altrimenti non ristrette. Diversamente dai gruppi basati su relay di &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, una community NIP-72 vive in eventi Nostr ordinari e qualunque relay che porti i kind rilevanti può servirla. Chiunque può pubblicare in una community, ma solo i post approvati da un moderator riconosciuto compaiono nel feed della community.&lt;/p>
&lt;p>Una community è definita da un evento addressable kind &lt;code>34550&lt;/code> pubblicato dal suo creatore. Il tag &lt;code>d&lt;/code> è lo slug stabile della community, i tag &lt;code>name&lt;/code>, &lt;code>description&lt;/code>, &lt;code>image&lt;/code> e &lt;code>rules&lt;/code> portano i metadati di presentazione, e una serie di tag &lt;code>p&lt;/code> marcati &lt;code>moderator&lt;/code> elenca le pubkey i cui approval contano. Tag &lt;code>relay&lt;/code> facoltativi con marker &lt;code>author&lt;/code>, &lt;code>requests&lt;/code> o &lt;code>approvals&lt;/code> suggeriscono dove pubblicare e recuperare ciascun tipo di evento:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a69788f1e2d3c4b5a69788f1e2d3c4b5a69788f1e2d3c4b5a69788&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1745280000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">34550&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin-devs&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;name&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Bitcoin Devs&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;description&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;A moderated community for Bitcoin protocol discussion.&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://example.com/bitcoin-devs.png&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rules&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Stay on topic. Cite code or specs when possible.&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;moderator&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f6a7b8c9d0a1b2c3d4e5f6a7b8c9d0a1b2c3d4e5f6a7b8c9d0a1b2&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;moderator&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relay&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;author&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relay&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.moderator.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;approvals&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Un utente invia un post pubblicando un normale evento Nostr e aggiungendo un tag &lt;code>a&lt;/code> con coordinata &lt;code>34550:&amp;lt;creator_pubkey&amp;gt;:&amp;lt;slug&amp;gt;&lt;/code>. L&amp;rsquo;approvazione è un evento separato kind &lt;code>4549&lt;/code> pubblicato da un moderator. Questo evento riferisce il post tramite tag &lt;code>e&lt;/code>, il submitter tramite tag &lt;code>p&lt;/code> e la community tramite tag &lt;code>a&lt;/code>, e inserisce nel &lt;code>content&lt;/code> una copia stringified dell&amp;rsquo;evento inviato. Questo mantiene renderizzabile il post approvato anche se l&amp;rsquo;autore originale elimina in seguito l&amp;rsquo;evento sorgente.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1745283600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4549&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;34550:c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2:bitcoin-devs&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;id\&amp;#34;:\&amp;#34;b3c4d5e6...\&amp;#34;,\&amp;#34;pubkey\&amp;#34;:\&amp;#34;e4f5a6b7...\&amp;#34;,\&amp;#34;kind\&amp;#34;:1,\&amp;#34;content\&amp;#34;:\&amp;#34;Question about sighash flags\&amp;#34;,\&amp;#34;tags\&amp;#34;:[[\&amp;#34;a\&amp;#34;,\&amp;#34;34550:c3d2e1f0...:bitcoin-devs\&amp;#34;]],\&amp;#34;created_at\&amp;#34;:1745283500,\&amp;#34;sig\&amp;#34;:\&amp;#34;...\&amp;#34;}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;bbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aa&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il modello di approvazione ha tre proprietà utili. La moderazione è trasparente, perché ogni approval è un evento Nostr firmato che chiunque può recuperare e verificare. Non è esclusiva, perché lo stesso post può essere approvato da community diverse. Ed è reversibile al livello di lettura, perché se una community rimuove un moderator dal suo evento kind &lt;code>34550&lt;/code>, le approvazioni precedenti di quel moderator smettono di contare per i client che rispettano la lista corrente dei moderator.&lt;/p>
&lt;p>Il lato lettura è il punto in cui i client divergono. Molti client community-aware renderizzano il feed filtrando gli eventi kind &lt;code>4549&lt;/code> taggati con la coordinata della community, deduplicando per ID dell&amp;rsquo;evento sottostante e poi renderizzando il post embedded. Alcuni recuperano anche direttamente i submission event e usano gli approval solo come whitelist. Client come &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> e, da questa settimana, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> via &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2468">PR #2468&lt;/a>, espongono anche la coda dei post pendenti ai moderator. Rispetto a &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, il compromesso è chiaro: NIP-72 è più portabile e forkabile, mentre NIP-29 è più adatto quando spam e post non approvati devono restare del tutto fuori dal wire.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-57-zaps">NIP Deep Dive: NIP-57 (Zaps)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/57.md">NIP-57&lt;/a> definisce gli zaps, un modo per collegare pagamenti Lightning a identità ed eventi Nostr e pubblicare una ricevuta verificabile del pagamento sui relay. Uno zap prova che un determinato mittente ha pagato un determinato importo a un destinatario specifico per un target specifico, e la prova è leggibile da qualunque client Nostr senza doversi fidare della parola del mittente. La specifica attraversa LNURL, Lightning e Nostr e fissa come devono cooperare.&lt;/p>
&lt;p>Il flusso coinvolge quattro attori. Il client del mittente scopre l&amp;rsquo;endpoint LNURL del destinatario dai metadati profilo kind &lt;code>0&lt;/code> (&lt;code>lud06&lt;/code> o &lt;code>lud16&lt;/code>) o da un tag &lt;code>zap&lt;/code> sull&amp;rsquo;evento da zappare. Quel client firma poi un evento zap request kind &lt;code>9734&lt;/code> che descrive il pagamento desiderato e lo invia al callback LNURL del destinatario, non ai relay. Dall&amp;rsquo;altra parte, il server LNURL del destinatario valida la richiesta, restituisce una invoice Lightning il cui description hash si impegna alla richiesta stringified e, una volta pagata la invoice, pubblica una ricevuta kind &lt;code>9735&lt;/code> sull&amp;rsquo;insieme di relay richiesto dal mittente.&lt;/p>
&lt;p>Una zap request kind &lt;code>9734&lt;/code> contiene un tag &lt;code>p&lt;/code> con la pubkey del destinatario, opzionalmente un tag &lt;code>e&lt;/code> o &lt;code>a&lt;/code> che identifica il contenuto da finanziare, un tag &lt;code>amount&lt;/code> in millisats, un tag &lt;code>relays&lt;/code> che elenca dove pubblicare la ricevuta e un tag &lt;code>k&lt;/code> che registra il kind del target:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5b4c3d2e1f09876a5b4c3d2e1f09876a5b4c3d2e1f09876a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1745280000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">9734&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;amount&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;21000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relays&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.damus.io&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nos.lol&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.nostr.band&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;great post&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;ccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbcc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La ricevuta zap kind &lt;code>9735&lt;/code> viene pubblicata dal wallet server del destinatario dopo la conferma del pagamento. Non è firmata dal mittente ma dal wallet server usando la &lt;code>nostrPubkey&lt;/code> pubblicizzata nella risposta LNURL. Una ricevuta valida porta la richiesta zap stringified nel tag &lt;code>description&lt;/code>, la invoice pagata nel tag &lt;code>bolt11&lt;/code> e un tag &lt;code>preimage&lt;/code> che prova il settlement:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1745280060&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">9735&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;P&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;a5b4c3d2e1f09876a5b4c3d2e1f09876a5b4c3d2e1f09876a5b4c3d2e1f09876&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;bolt11&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;lnbc210n1pj...bolt11invoicestring&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;description&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;id\&amp;#34;:\&amp;#34;c1d2e3f4...\&amp;#34;,\&amp;#34;pubkey\&amp;#34;:\&amp;#34;a5b4c3d2...\&amp;#34;,\&amp;#34;kind\&amp;#34;:9734,\&amp;#34;content\&amp;#34;:\&amp;#34;great post\&amp;#34;,\&amp;#34;tags\&amp;#34;:[...]}&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;preimage&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;ddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccdd&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La regola di validazione è il cuore delle garanzie di NIP-57. Un client che mostra una ricevuta kind &lt;code>9735&lt;/code> come zap dovrebbe verificare quattro cose: che la firma della ricevuta corrisponda alla &lt;code>nostrPubkey&lt;/code> annunciata nella risposta LNURL, che l&amp;rsquo;importo della invoice &lt;code>bolt11&lt;/code> corrisponda al tag &lt;code>amount&lt;/code> nella richiesta embedded, che il description hash della invoice si impegni alla richiesta zap stringified e che il &lt;code>preimage&lt;/code> faccia hash al &lt;code>payment_hash&lt;/code> della invoice. Una ricevuta che fallisce uno di questi controlli è solo una dichiarazione di pagamento, non una prova.&lt;/p>
&lt;p>I private zaps aggiungono riservatezza. Il mittente può cifrare il &lt;code>content&lt;/code> della richiesta per il destinatario e includere un tag &lt;code>anon&lt;/code>, cosi la rete relay vede il target del pagamento ma non legge la nota allegata. Alcuni client fanno un passo in più e generano una coppia di chiavi effimera per la richiesta stessa, cosi la ricevuta continua a provare che il pagamento è avvenuto ma il destinatario non può ricollegare lo zap alla pubkey di lunga durata del mittente.&lt;/p>
&lt;p>NIP-57 sostiene anche il sistema di zap goals di &lt;a href="https://nostrcompass.org/it/topics/nip-75/">NIP-75&lt;/a>. Un goal è un evento kind &lt;code>9041&lt;/code> che dichiara un target e un insieme di relay sui quali contano le ricevute. Qualunque ricevuta zap collegata all&amp;rsquo;ID dell&amp;rsquo;evento del goal contribuisce al suo avanzamento. Client come &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> sommano gli importi validati dei &lt;code>bolt11&lt;/code> per mostrare il progresso e una classifica dei top zapper nella schermata &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a> Live Activities.&lt;/p>
&lt;p>Le zap split sono definite in un&amp;rsquo;appendice del NIP. Un destinatario può pubblicare un profilo kind &lt;code>0&lt;/code> con più tag &lt;code>zap&lt;/code>, ciascuno con un peso, cosi un singolo zap viene diviso tra più pubkey secondo i pesi pubblicati. Client come &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> e &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> implementano già il pagamento split end-to-end.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Se state costruendo qualcosa o avete notizie da condividere, scriveteci su Nostr o passate da &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #18</title><link>https://nostrcompass.org/it/newsletters/2026-04-15-newsletter/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-15-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> integra desktop Tor, una implementazione C di secp256k1, chiamate WebRTC per &lt;a href="https://nostrcompass.org/it/topics/nip-ac/">NIP-AC&lt;/a>, conformità RFC 9420 MLS per &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> e supporto multi-wallet &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>. &lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> lancia notifiche push native su Nostr per Android con eventi kind &lt;code>7741&lt;/code>. &lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> aggiunge Reticulum e porta eventi Nostr su mesh LoRa senza Internet. &lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> pubblica una prima release come server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> e relay self-hosted in un&amp;rsquo;app desktop. &lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> debutta come directory e player di radio Internet basata su Nostr. &lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> avvia lo sviluppo come piattaforma bot self-hosted per chat di gruppo cifrate con Marmot. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> pubblica quattro release con audit di sicurezza e un grande lavoro sulle performance, mentre &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ridisegna feed e app bars.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> integra desktop Tor, una implementazione C di secp256k1, chiamate WebRTC per &lt;a href="https://nostrcompass.org/it/topics/nip-ac/">NIP-AC&lt;/a>, conformità RFC 9420 MLS per &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> e supporto multi-wallet &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>. &lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> lancia notifiche push native su Nostr per Android con eventi kind &lt;code>7741&lt;/code>. &lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> aggiunge Reticulum e porta eventi Nostr su mesh LoRa senza Internet. &lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> pubblica una prima release come server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> e relay self-hosted in un&amp;rsquo;app desktop. &lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> debutta come directory e player di radio Internet basata su Nostr. &lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> avvia lo sviluppo come piattaforma bot self-hosted per chat di gruppo cifrate con Marmot. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> pubblica quattro release con audit di sicurezza e un grande lavoro sulle performance, mentre &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ridisegna feed e app bars.&lt;/p>
&lt;h2 id="top-stories">Top Stories&lt;/h2>
&lt;h3 id="amethyst-merges-desktop-tor-c-secp256k1-webrtc-calls-and-multi-wallet-nwc">Amethyst merges desktop Tor, C secp256k1, WebRTC calls, and multi-wallet NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha unito 29 PR in una sola settimana tra crittografia, networking, calling e infrastruttura wallet.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2381">PR #2381&lt;/a> aggiunge il supporto a Tor su desktop incorporando un daemon kmp-tor con design fail-closed. Se Tor è attivo, tutte le connessioni ai relay passano dal processo Tor integrato e l&amp;rsquo;app rifiuta di connettersi se Tor non parte. Il routing orientato alla privacy raggiunge cosi la parità tra build Android e desktop, supportato da oltre 130 unit test.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2374">PR #2374&lt;/a> aggiunge una implementazione personalizzata in C di secp256k1 con binding JNI per la verifica delle firme. Il risultato è un&amp;rsquo;accelerazione di circa 2-3x nella verifica delle firme Schnorr rispetto al precedente percorso puro Kotlin. Le PR collegate &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2188">#2188&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2195">#2195&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2204">#2204&lt;/a> introducono fused multiply-reduce, una struct Fe4 dedicata e intrinsics specifiche per piattaforma per migliorare ulteriormente le prestazioni su Android.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2202">PR #2202&lt;/a> aggiorna l&amp;rsquo;implementazione MLS in puro Kotlin per allinearla a RFC 9420, aggiungendo reuse guard, additional authenticated data, correzioni nella gestione dei commit e thread safety per l&amp;rsquo;integrazione con &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>. La serie WebRTC da &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2203">PR #2203&lt;/a> a &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2211">PR #2211&lt;/a> introduce un sistema completo di chiamate vocali e video per &lt;a href="https://nostrcompass.org/it/topics/nip-ac/">NIP-AC&lt;/a>, con ICE restart, cambio camera a runtime, monitoraggio della rete, riconnessione automatica e fix per le restrizioni Android 14+ sui servizi in foreground.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1988">PR #1988&lt;/a> aggiunge il supporto multi-wallet &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>. Gli utenti possono collegare più wallet NWC allo stesso account, vedere schede saldo separate, scegliere un wallet predefinito e migrare dal vecchio modello a wallet singolo. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2189">PR #2189&lt;/a> aggiunge anche la conversione GIF-to-MP4 con uno slider di qualità.&lt;/p>
&lt;h3 id="nstrfy-launches-nostr-native-push-notifications-for-android">nstrfy launches Nostr-native push notifications for Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> è stato lanciato il 13 aprile con tre release da &lt;a href="https://github.com/vcavallo/nstrfy-android/releases/tag/v1.0.0">v1.0.0&lt;/a> a &lt;a href="https://github.com/vcavallo/nstrfy-android/releases/tag/v1.2.0">v1.2.0&lt;/a>. L&amp;rsquo;app è un fork di ntfy-android dove il trasporto HTTP è stato sostituito da Nostr. Invece di interrogare un server per ricevere notifiche push, nstrfy si sottoscrive a eventi kind &lt;code>7741&lt;/code> su relay configurabili e li mostra come notifiche Android native.&lt;/p>
&lt;p>Il modello di notifica supporta sia payload in chiaro sia payload cifrati con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>. Quando la cifratura è attiva, nstrfy usa &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> per firmare via &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> o tramite un nsec locale. Le subscription per topic permettono allowlist per mittente con whitelist npub, l&amp;rsquo;app importa le liste relay dal profilo utente con &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e rispetta la scadenza degli eventi di &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a>. La ricerca utenti usa NIP-50 e dati &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> da brainstorm.world.&lt;/p>
&lt;p>Il progetto companion &lt;a href="https://github.com/vcavallo/nstrfy.sh">nstrfy.sh&lt;/a> fornisce sia una CLI bash sia un client web ospitato su &lt;a href="https://nstrfy.sh">nstrfy.sh&lt;/a>, con supporto al signer &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>. L&amp;rsquo;app nativa è disponibile su &lt;a href="https://zapstore.dev/apps/io.nstrfy.android">Zapstore&lt;/a>.&lt;/p>
&lt;h3 id="hamstr-adds-reticulum-for-nostr-over-lora-mesh">HAMSTR adds Reticulum for Nostr over LoRa mesh&lt;/h3>
&lt;p>&lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a>, il progetto che invia eventi Nostr e Lightning zaps via radio amatoriale, ha unito &lt;a href="https://github.com/LibertyFarmer/hamstr/pull/10">PR #10&lt;/a> il 12 aprile aggiungendo &lt;a href="https://reticulum.network/">Reticulum&lt;/a> come backend di trasporto mesh. Reticulum è un protocollo mesh crittografico che funziona su LoRa, HF, VHF/UHF, link seriali e TCP/IP. Con questa aggiunta, HAMSTR può inoltrare eventi Nostr su una mesh di dispositivi RNode senza alcuna infrastruttura Internet.&lt;/p>
&lt;p>I trasporti AX.25 Packet Radio e VARA HF restano disponibili, cosi gli operatori possono scegliere il collegamento radio più adatto. L&amp;rsquo;architettura zero-knowledge del server significa che il relay non vede le chiavi private, e la conformità zap di &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> fa si che i Lightning zap offline appaiano correttamente in client come Amethyst e Primal. Una guida di setup per Reticulum è inclusa in &lt;a href="https://github.com/LibertyFarmer/hamstr/blob/master/RETICULUM.MD">RETICULUM.MD&lt;/a>. Nella stessa settimana, &lt;a href="https://github.com/LibertyFarmer/hamstr/pull/11">PR #11&lt;/a> ha migrato il frontend a Svelte 5 e TailwindCSS v4.&lt;/p>
&lt;h2 id="shipping-this-week">Shipping This Week&lt;/h2>
&lt;h3 id="bloom-v010-ships-self-hosted-blossom-server-and-relay">Bloom v0.1.0 ships self-hosted Blossom server and relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> ha pubblicato la sua prima release, &lt;a href="https://github.com/nostrnative/bloom/releases/tag/v0.1.0">v0.1.0&lt;/a>, il 9 aprile. Costruita con Tauri v2 e React 19, Bloom unisce in una sola applicazione desktop un server media completo &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> e un relay Nostr. Gli utenti ottengono storage file sovrano con content addressing SHA-256, supporto ai metadati file di &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> e risoluzione dello schema URI &lt;code>blossom://&lt;/code> senza dover gestire da soli l&amp;rsquo;infrastruttura server.&lt;/p>
&lt;h3 id="wavefunc-v010-and-v011-launch-nostr-internet-radio">WaveFunc v0.1.0 and v0.1.1 launch Nostr internet radio&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> ha pubblicato &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.0">v0.1.0&lt;/a> e &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.1">v0.1.1&lt;/a> il 13 aprile, debuttando come directory e player di internet radio basato su Nostr. Event kind personalizzati definiscono il modello dati: kind &lt;code>31237&lt;/code> per le stazioni radio, kind &lt;code>30078&lt;/code> per i preferiti, kind &lt;code>1311&lt;/code> per la live chat e kind &lt;code>1111&lt;/code> per i commenti alle stazioni. Il backend relay basato su Khatru usa SQLite e ricerca full-text Bluge con supporto a &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;p>WaveFunc include un wallet Cashu &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> e supporto nutzap, con migrazione da NDK ad applesauce-core. &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.1">v0.1.1&lt;/a> aggiunge caroselli per genere, un popover per donazioni Lightning, gestione delle stazioni per utenti autenticati e listing Zapstore. La build desktop Tauri v2 guadagna system tray, media key, autostart e deep linking.&lt;/p>
&lt;h3 id="snort-ships-v050-through-v053-with-security-hardening-and-performance-overhaul">Snort ships v0.5.0 through v0.5.3 with security hardening and performance overhaul&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, il client web React per Nostr, ha pubblicato tre release da &lt;a href="https://github.com/v0l/snort/releases/tag/v0.5.0">v0.5.0&lt;/a> a &lt;a href="https://github.com/v0l/snort/releases/tag/v0.5.3">v0.5.3&lt;/a>. La v0.5.0 è la più grande e consegna un audit di sicurezza completo con verifica reale delle firme Schnorr, protezione rafforzata di &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> contro messaggi relay falsificati, PIN encryption migliorata e rimozione della fiducia verso delegation NIP-26 non verificata. Sul fronte performance arrivano verifica WASM batch delle firme, route lazy-loaded, un loader profili riscritto e ottimizzazioni del worker relay.&lt;/p>
&lt;p>La release aggiunge anche la visualizzazione delle invoice kind &lt;code>7000&lt;/code> per DVM &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>. &lt;a href="https://github.com/v0l/snort/pull/620">PR #620&lt;/a> rifà il sistema di messaggistica per ridurre la complessità del calcolo della chat list e persistere i gift wrap nel worker relay.&lt;/p>
&lt;h3 id="primal-android-ships-3021-and-redesigns-feed-layout">Primal Android ships 3.0.21 and redesigns feed layout&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha pubblicato &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.21">v3.0.21&lt;/a> con fix per poll zap votes, condivisione multi-account del wallet e auto-reconnect per signer remoto e servizio wallet. Sette PR successive ridisegnano il layout principale: &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1008">PR #1008&lt;/a> unifica la schermata principale, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1010">PR #1010&lt;/a> implementa nuove feed card, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1009">PR #1009&lt;/a> aggiunge supporto video nelle card media e &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1013">PR #1013&lt;/a> ridisegna le app bar.&lt;/p>
&lt;h3 id="nostria-v3119-through-v3121-add-local-ai-image-generation">Nostria v3.1.19 through v3.1.21 add local AI image generation&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ha pubblicato tre release da &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.19">v3.1.19&lt;/a> a &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.21">v3.1.21&lt;/a> con oltre 80 commit. L&amp;rsquo;aggiunta principale è la generazione locale di immagini con Janus Pro e accelerazione WebGPU, cosi gli utenti possono creare immagini sul dispositivo senza API esterne. Le release aggiungono anche generazione cloud, chat multimodale, supporto ONNX runtime, libreria di prompt e gestione della cache.&lt;/p>
&lt;h3 id="tubestr-v103-ships-feed-and-studio-updates">TubeStr v1.0.3 ships feed and studio updates&lt;/h3>
&lt;p>&lt;a href="https://github.com/Tubestr/tubestr-v2">TubeStr&lt;/a>, app privata per la condivisione di video familiari costruita su Nostr, ha pubblicato &lt;a href="https://github.com/Tubestr/tubestr-v2/releases/tag/v1.0.3">v1.0.3&lt;/a> il 13 aprile. La release aggiunge miglioramenti a feed e studio. &lt;a href="https://github.com/Tubestr/tubestr-v2/pull/3">PR #3&lt;/a> rinnova l&amp;rsquo;onboarding e &lt;a href="https://github.com/Tubestr/tubestr-v2/pull/2">PR #2&lt;/a> corregge un errore nell&amp;rsquo;export video. L&amp;rsquo;app usa NDK e MDK per la condivisione cifrata dei media tra familiari, con integrazione &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> pianificata per lo storage.&lt;/p>
&lt;h2 id="in-development">In Development&lt;/h2>
&lt;h3 id="botburrow-begins-development-as-marmot-bot-platform">Botburrow begins development as Marmot bot platform&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> è un nuovo progetto del team Marmot, iniziato il 3 aprile. È una piattaforma self-hosted di gestione bot dove ogni bot ha una propria identità Nostr, entra in chat di gruppo cifrate &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> tramite messaggi Welcome e invia e riceve messaggi end-to-end encrypted. La dashboard, costruita con Rails 8.1, comunica con un singolo daemon whitenoise-rs (&lt;code>wnd&lt;/code>) attraverso un socket Unix.&lt;/p>
&lt;p>Botburrow espone un livello consistente di scripting e operations: comandi, trigger e azioni pianificate eseguono codice Ruby personalizzato, gli script possono ispezionare profili, membership di gruppo e inviti pendenti tramite &lt;code>wnd&lt;/code>, la dashboard include una vista live chat e ogni bot ha un proprio storage file per configurazioni, cache e output generato. Un&amp;rsquo;&lt;a href="https://github.com/marmot-protocol/botburrow/commit/2ed012078eaab3c5b92dff16b87865c2e353bd80">immagine Docker&lt;/a> con build multi-arch punta a self-hosting zero-config su Umbrel e Start9.&lt;/p>
&lt;h3 id="nostr-archives-adds-trending-feeds-relay-and-entity-resolution">Nostr Archives adds trending feeds relay and entity resolution&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/nostrarchives-api">Nostr Archives&lt;/a>, la piattaforma di archiviazione e analytics per Nostr su &lt;a href="https://nostrarchives.com">nostrarchives.com&lt;/a>, ha continuato a svilupparsi sia lato &lt;a href="https://github.com/barrydeen/nostrarchives-api">API&lt;/a> sia lato &lt;a href="https://github.com/barrydeen/nostrarchives-frontend">frontend&lt;/a>. &lt;a href="https://github.com/barrydeen/nostrarchives-api/pull/118">PR #118&lt;/a> aggiunge il filtro per intervallo temporale alla classifica client e &lt;a href="https://github.com/barrydeen/nostrarchives-api/pull/117">PR #117&lt;/a> aggiunge contatori di engagement agli eventi di risposta. Sul frontend, &lt;a href="https://github.com/barrydeen/nostrarchives-frontend/pull/85">PR #85&lt;/a> risolve entità Nostr direttamente dall&amp;rsquo;URL e &lt;a href="https://github.com/barrydeen/nostrarchives-frontend/pull/86">PR #86&lt;/a> aggiunge una pagina di documentazione API.&lt;/p>
&lt;p>La piattaforma gestisce quattro servizi relay: un relay di ricerca NIP-50, un relay per trending feeds, un scheduler relay per eventi futuri e un relay indicizzatore per kind 0, 3 e 10002.&lt;/p>
&lt;h3 id="damus-fixes-favorites-timeline">Damus fixes favorites timeline&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, il client iOS, ha unito &lt;a href="https://github.com/damus-io/damus/pull/3708">PR #3708&lt;/a> riscrivendo &lt;code>subscribe_to_favorites()&lt;/code> con filtraggio in-place, ricostruzione della deduplicazione e persistenza della selezione tab.&lt;/p>
&lt;h3 id="nostur-adds-private-zaps-and-custom-emoji-viewing">Nostur adds private zaps and custom emoji viewing&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, il client iOS, ha pubblicato 10 commit questa settimana aggiungendo supporto ai private zaps, visualizzazione di custom emoji, un fix per il rendering di &lt;code>.webp&lt;/code> animati e il rilevamento del formato audio dei messaggi vocali.&lt;/p>
&lt;h3 id="amber-ships-v601-through-v603-with-webdav-backup-and-relay-reconnection-fixes">Amber ships v6.0.1 through v6.0.3 with WebDAV backup and relay reconnection fixes&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, ha pubblicato tre release questa settimana. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.1">v6.0.1&lt;/a> aggiunge backup WebDAV e condivisione su Google Drive, implementa exponential backoff per la riconnessione ai relay, aggiorna Quartz alla 1.08.0 e corregge la validazione eventi. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.2">v6.0.2&lt;/a> aggiunge un indice account per chi usa seed words e corregge la riconnessione quando il relay è offline all&amp;rsquo;avvio. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.3">v6.0.3&lt;/a> aggiunge un ulteriore fix per request ID vuoti nella ricezione di intent.&lt;/p>
&lt;h3 id="plektos-v060-redesigns-with-ditto-themes">Plektos v0.6.0 redesigns with Ditto themes&lt;/h3>
&lt;p>&lt;a href="https://github.com/derekross/plektos">Plektos&lt;/a>, la piattaforma decentralizzata per meetup ed eventi costruita su &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>, ha pubblicato &lt;a href="https://github.com/derekross/plektos/commit/7a691cdf089ceb7a8582dd5c0ee026830f2cdc77">v0.6.0&lt;/a> e &lt;a href="https://github.com/derekross/plektos/commit/3a6474ae380522d8ee1b3526423fcfc3328fd879">v0.6.1&lt;/a>. L&amp;rsquo;aggiornamento aggiunge temi di comunità in stile Ditto con upload di sfondi personalizzati, configurazione della forma avatar e un generale restyling dell&amp;rsquo;interfaccia.&lt;/p>
&lt;h3 id="shadow-adds-nostr-os-api-and-cashu-wallet-app">Shadow adds Nostr OS API and Cashu wallet app&lt;/h3>
&lt;p>&lt;a href="https://github.com/justinmoon/shadow">Shadow&lt;/a>, la piattaforma runtime di app di Justin Moon, ha pubblicato oltre 30 commit in due giorni. &lt;a href="https://github.com/justinmoon/shadow/commit/88cbda5131814d2730a2d892029932136db005df">Commit 88cbda5&lt;/a> aggiunge un&amp;rsquo;app wallet Cashu dentro il runtime, &lt;a href="https://github.com/justinmoon/shadow/commit/865c415">commit 865c415&lt;/a> aggiunge una demo podcast player e il runtime espone &lt;code>Shadow.os.nostr&lt;/code> e &lt;code>Shadow.os.audio&lt;/code> come API di sistema di primo livello.&lt;/p>
&lt;h3 id="lief-fixes-amber-login-and-adds-zapstore">Lief fixes Amber login and adds Zapstore&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/lief">Lief&lt;/a>, app Nostr per comporre e inviare lettere long-form ad altri utenti Nostr, ha pubblicato la build &lt;code>v2026.04.12&lt;/code>. L&amp;rsquo;aggiornamento corregge un problema di login con &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> su Android, semplifica il flusso di nudge al signer, aggiorna nostrify e aggiunge l&amp;rsquo;integrazione Zapstore.&lt;/p>
&lt;h3 id="espy-overhauls-color-picker-and-fixes-amber-login">Espy overhauls color picker and fixes Amber login&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/espy">Espy&lt;/a>, app social Nostr dove gli utenti condividono &amp;ldquo;momenti colore&amp;rdquo;, ha pubblicato la build &lt;code>v2026.04.12&lt;/code>. L&amp;rsquo;update rifà il color picker con un arco di saturazione curvo, corregge bug di flicker nell&amp;rsquo;anello della tonalità, aggiunge personaggi Easter egg e riduce gli asset PNG di 703KB. Corregge anche il login con Amber e aggiorna nostrify.&lt;/p>
&lt;h3 id="jumble-adds-per-feed-kind-filters-and-articles-tab">Jumble adds per-feed kind filters and articles tab&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a> ha pubblicato 13 commit questa settimana aggiungendo filtri per kind per singolo feed, una tab Articles, sincronizzazione dello stato di lettura delle notifiche con opzione privacy-preserving, una modalità per nascondere gli avatar e un fix a una race condition nel cambio account.&lt;/p>
&lt;h3 id="primal-web-ships-8-version-bumps">Primal Web ships 8 version bumps&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-web-app">Primal Web&lt;/a> ha pubblicato le versioni 3.0.93 fino alla 3.0.101 in una settimana con 21 commit. Il lavoro si concentra su miglioramenti alla live stream chat, fix ai boundary delle mention, paginazione dei bookmark, prevenzione dei like duplicati e correzioni al relay proxy.&lt;/p>
&lt;h2 id="protocol-and-spec-work">Protocol and Spec Work&lt;/h2>
&lt;h3 id="nip-updates">NIP Updates&lt;/h3>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Merged:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (Git Stuff): Add &lt;code>nostr://&lt;/code> clone URLs&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>): &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> definisce come ospitare repository git su Nostr usando annunci di repository kind &lt;code>30617&lt;/code> che elencano branch, tag, relay e pubkey dei maintainer. Questa PR aggiunge un formato &lt;code>nostr://&lt;/code> per il clone che funziona con helper &lt;code>git-remote-nostr&lt;/code>, cosi &lt;code>git clone nostr://npub1.../relay.ngit.dev/ngit&lt;/code> può risolvere npub o un indirizzo NIP-05, scoprire i relay del repository e recuperare i dati del repo. Sono definiti tre pattern URL, e la PR stringe anche il formato del tag &lt;code>d&lt;/code> per garantire URI validi.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Open PRs and Discussions:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>NIP-63a: Minimal Payment Gateway Descriptor&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2315">PR #2315&lt;/a>): propone un evento replaceable kind &lt;code>10164&lt;/code> che permette ai creatori di dichiarare gateway di pagamento, modelli di prezzo e regole di subscription per contenuti a pagamento.&lt;/li>
&lt;li>&lt;strong>NIP-XX: Relay Self-Declaration Manifest and Retention Horizon&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2314">PR #2314&lt;/a>): propone un evento replaceable kind &lt;code>10100&lt;/code> per dichiarazioni gossipabili dei relay e un nuovo messaggio relay-to-client &lt;code>HORIZON&lt;/code> che indica il timestamp più antico conservato.&lt;/li>
&lt;li>&lt;strong>NIP-TPLD: Transient Private Location Data&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2309">PR #2309&lt;/a>): propone il kind &lt;code>20411&lt;/code> per condividere dati di geolocalizzazione cifrati con destinatari specifici tramite &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, con supporto &lt;code>ttl&lt;/code> per la retention.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-5c/">NIP-5C&lt;/a> (Scrolls): WASM programs update&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>): continua lo sviluppo della specifica per la pubblicazione ed esecuzione di programmi WASM su Nostr, estendendo &lt;a href="https://nostrcompass.org/it/topics/nip-5a/">NIP-5A&lt;/a> da siti statici a programmi interattivi.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> large payload support&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1907">PR #1907&lt;/a>): propone di estendere la cifratura versionata NIP-44 oltre l&amp;rsquo;attuale limite di 65.535 byte, utile soprattutto per le risposte &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> che contengono grandi contact list kind &lt;code>3&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-c7/">NIP-C7&lt;/a>: Restrict kind 9 to chat views&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a>): richiede che i client che renderizzano una &amp;ldquo;chat view&amp;rdquo; recuperino solo eventi kind &lt;code>9&lt;/code>, evitando la perdita di contesto quando altri tipi di contenuto finiscono nella timeline di chat.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-29-relay-based-groups">NIP Deep Dive: NIP-29 (Relay-based Groups)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/29.md">NIP-29&lt;/a> definisce un modello di messaggistica di gruppo in cui è il relay a gestire membership e moderazione. I gruppi vivono su un relay specifico, identificati da una stringa casuale, e il relay applica le regole su chi può scrivere nel gruppo. È un&amp;rsquo;architettura diversa da &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> o dalle chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>: qui il relay è l&amp;rsquo;autorità e può leggere i messaggi.&lt;/p>
&lt;p>Un gruppo è identificato dal formato &lt;code>&amp;lt;host&amp;gt;'&amp;lt;group-id&amp;gt;&lt;/code>, per esempio &lt;code>groups.nostr.com'abcdef&lt;/code>. Tutti gli eventi inviati al gruppo portano un tag &lt;code>h&lt;/code> con l&amp;rsquo;ID del gruppo:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744675200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">9&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;h&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abcdef&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;previous&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;e5f67890&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;12345678&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Has anyone tested the new relay config?&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il tag &lt;code>previous&lt;/code> funge da meccanismo di rilevamento delle manomissioni. I client includono i primi 8 caratteri hex di eventi recenti visti sullo stesso relay, e i relay rifiutano riferimenti a eventi che non possiedono. La membership è gestita da kind di moderazione nell&amp;rsquo;intervallo &lt;code>9000-9020&lt;/code>. Un utente entra pubblicando un kind &lt;code>9021&lt;/code> e può includere un tag &lt;code>code&lt;/code> collegato a codici invito creati dagli admin:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1a2b3c4d5e6f7890123456789abcdef0123456789abcdef1234567890abcdef&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744675200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">9021&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;h&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abcdef&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;code&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;invite-xyz-123&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;I&amp;#39;d like to join the dev discussion group.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Gli admin possono aggiungere utenti con ruoli, rimuoverli, modificare i metadati del gruppo e cancellare eventi. Le configurazioni vengono pubblicate come eventi addressable kind &lt;code>39000&lt;/code> fino a &lt;code>39003&lt;/code>. I gruppi possono essere pubblici, chiusi o aperti, e la specifica accetta molti tipi di evento nel contesto del gruppo, inclusi articoli &lt;a href="https://nostrcompass.org/it/topics/nip-23/">NIP-23&lt;/a> e live stream &lt;a href="https://nostrcompass.org/it/topics/nip-53/">NIP-53&lt;/a>. Client come Flotilla e Coracle supportano già questo modello, mentre &lt;a href="https://github.com/Nostrord/nostrord">Nostrord&lt;/a> è in sviluppo. Il compromesso rispetto a &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> è esplicito: niente end-to-end encryption, ma molta più semplicità operativa per comunità pubbliche e spazi di discussione aperti.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-90-data-vending-machines">NIP Deep Dive: NIP-90 (Data Vending Machines)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/90.md">NIP-90&lt;/a> definisce un protocollo per computazione on-demand su Nostr. Un cliente pubblica una richiesta di lavoro, i service provider competono per eseguirla e i risultati vengono consegnati come eventi Nostr. Il protocollo riserva i kind &lt;code>5000-5999&lt;/code> alle richieste, &lt;code>6000-6999&lt;/code> ai risultati e &lt;code>7000&lt;/code> al feedback di stato.&lt;/p>
&lt;p>Una richiesta può usare input di tipo &lt;code>url&lt;/code>, &lt;code>event&lt;/code>, &lt;code>job&lt;/code> o &lt;code>text&lt;/code>, specificare un &lt;code>bid&lt;/code> massimo in millisats, aggiungere parametri con tag &lt;code>param&lt;/code> e dichiarare il formato di output con &lt;code>output&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744675200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">5001&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://example.com/article.txt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;url&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;output&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;text/plain&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relays&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.damus.io&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nos.lol&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;bid&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;5000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;param&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;lang&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;en&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;param&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;max_tokens&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;280&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il provider pubblica poi un risultato kind &lt;code>6001&lt;/code> che rimanda alla richiesta originale e può includere una invoice Lightning nel tag &lt;code>amount&lt;/code>. Gli eventi kind &lt;code>7000&lt;/code> permettono aggiornamenti come &lt;code>payment-required&lt;/code>, &lt;code>processing&lt;/code>, &lt;code>error&lt;/code> e &lt;code>success&lt;/code>, dando visibilità sullo stato dei job lunghi. Il chaining dei job consente pipeline composte, per esempio trascrizione, riassunto e traduzione in sequenza.&lt;/p>
&lt;p>Per la privacy, input e parametri possono essere cifrati con &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> verso il provider selezionato. Tipi di job specifici vengono definiti in un repository separato, con richieste per generazione testo, riassunto, speech-to-text, immagini e raccomandazione contenuti. Client come &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> mostrano già invoice &lt;code>payment-required&lt;/code>, mentre noStrudel e DVMDash aiutano rispettivamente nella scoperta e nell&amp;rsquo;osservazione dei DVM.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Se state costruendo qualcosa o avete notizie da condividere, scriveteci su Nostr o passate da &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #17</title><link>https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amethyst-distribuisce-arti-tor-e-integra-mls-e-marmot-in-puro-kotlin">v1.08.0&lt;/a> con integrazione Arti Tor e una UI Shorts ridisegnata, mentre integra implementazioni in puro Kotlin di &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> nella sua libreria &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a>. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nostur-v1270-aggiunge-registrazione-video-e-risposte-private">v1.27.0&lt;/a> con registrazione video, profili GIF animati e risposte private. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a> lancia la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#shosho-v0150-lancia-shows-e-un-carousel-video-verticale">v0.15.0&lt;/a> con Shows (informazioni personalizzate sul live stream collegate a OBS) e un carousel video verticale in stile TikTok. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nymchat-abbandona-marmot-e-distribuisce-chat-di-gruppo-nip-17-potenziate">torna da Marmot e distribuisce chat di gruppo NIP-17 potenziate&lt;/a> con chiavi ephemeral a rotazione. &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> distribuisce &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nostr-vpn-distribuisce-supporto-exit-node-e-packaging-umbrel">supporto exit node e packaging Umbrel&lt;/a> attraverso sei rilasci. &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> sale alla &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amber-v600-pre1-aggiunge-chiavi-di-firma-nip-46-per-connessione">v6.0.0-pre1&lt;/a> con chiavi di firma &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per connessione e aggiornamenti in-app via Zapstore. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> raggiunge la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-distribuisce-lauto-aggiornamento-via-zapstore">v0.10.0-beta&lt;/a> con auto-aggiornamento APK via Zapstore, e &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges) riceve una &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#aggiornamenti-nip">migrazione di kind&lt;/a>. Due approfondimenti NIP coprono &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing).&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amethyst-distribuisce-arti-tor-e-integra-mls-e-marmot-in-puro-kotlin">v1.08.0&lt;/a> con integrazione Arti Tor e una UI Shorts ridisegnata, mentre integra implementazioni in puro Kotlin di &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> nella sua libreria &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a>. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nostur-v1270-aggiunge-registrazione-video-e-risposte-private">v1.27.0&lt;/a> con registrazione video, profili GIF animati e risposte private. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a> lancia la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#shosho-v0150-lancia-shows-e-un-carousel-video-verticale">v0.15.0&lt;/a> con Shows (informazioni personalizzate sul live stream collegate a OBS) e un carousel video verticale in stile TikTok. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nymchat-abbandona-marmot-e-distribuisce-chat-di-gruppo-nip-17-potenziate">torna da Marmot e distribuisce chat di gruppo NIP-17 potenziate&lt;/a> con chiavi ephemeral a rotazione. &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> distribuisce &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#nostr-vpn-distribuisce-supporto-exit-node-e-packaging-umbrel">supporto exit node e packaging Umbrel&lt;/a> attraverso sei rilasci. &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> sale alla &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amber-v600-pre1-aggiunge-chiavi-di-firma-nip-46-per-connessione">v6.0.0-pre1&lt;/a> con chiavi di firma &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per connessione e aggiornamenti in-app via Zapstore. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> raggiunge la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-distribuisce-lauto-aggiornamento-via-zapstore">v0.10.0-beta&lt;/a> con auto-aggiornamento APK via Zapstore, e &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges) riceve una &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#aggiornamenti-nip">migrazione di kind&lt;/a>. Due approfondimenti NIP coprono &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing).&lt;/p>
&lt;h2 id="notizie-principali">Notizie Principali&lt;/h2>
&lt;h3 id="amethyst-distribuisce-arti-tor-e-integra-mls-e-marmot-in-puro-kotlin">Amethyst distribuisce Arti Tor e integra MLS e Marmot in puro Kotlin&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha distribuito quattro rilasci dalla &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.3">v1.07.3&lt;/a> alla &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.08.0">v1.08.0&lt;/a> e ha integrato un ampio blocco di lavoro non ancora rilasciato nella sua libreria &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a> (il modulo Nostr condiviso Kotlin Multiplatform). Il rilascio di punta è la v1.08.0 &amp;ldquo;Arti Tor&amp;rdquo;, che sposta la connettività Tor dell&amp;rsquo;app dalla libreria Tor basata su C a &lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>, l&amp;rsquo;implementazione Rust del Tor Project. La migrazione affronta i crash casuali che si verificavano con i precedenti binding C di Tor. Arti è il sostituto a lungo termine del Tor Project per la codebase C, riscritto da zero in Rust per memory safety e async I/O.&lt;/p>
&lt;p>Il rilascio v1.07.3 ha ridisegnato la UI Shorts, sostituendo il design paginato con feed edge-to-edge per immagini, short e video lunghi. Lo stesso rilascio ha migrato i badge al kind &lt;code>10008&lt;/code> e i bookmark al kind &lt;code>10003&lt;/code>, allineandosi alla migrazione di kind &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#aggiornamenti-nip">unita questa settimana&lt;/a>. La v1.07.4 ha corretto un problema nella gestione dei secret di Nostr Wallet Connect, e la v1.07.5 ha corretto un crash durante l&amp;rsquo;upload di immagini.&lt;/p>
&lt;p>Sul branch main, ma non ancora in un rilascio taggato, il team ha scritto un&amp;rsquo;implementazione completa in Kotlin sia di &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> sia del protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, eliminando la necessità di binding a librerie native C/Rust. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2147">PR #2147&lt;/a> aggiunge il layer centrale di messaggistica di gruppo Marmot MLS, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2149">PR #2149&lt;/a> aggiunge la UI della chat di gruppo, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2146">PR #2146&lt;/a> aggiunge i processor dei messaggi in ingresso e in uscita con un subscription manager, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2141">PR #2141&lt;/a> aggiunge la persistenza dello stato dei gruppi MLS e la gestione della rotazione dei KeyPackage, la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2150">PR #2150&lt;/a> aggiunge una suite di test MLS completa con una firma di GroupInfo migliorata, e la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2158">PR #2158&lt;/a> aggiunge il tracciamento dello stato di pubblicazione dei KeyPackage. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2166">PR #2166&lt;/a> aggiunge un&amp;rsquo;implementazione secp256k1 in puro Kotlin per le operazioni crittografiche Nostr, sostituendo la dipendenza dalla libreria C nativa. Combinata con l&amp;rsquo;implementazione Kotlin di MLS, &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a> può eseguire firma Nostr e messaggistica di gruppo Marmot senza alcun binding nativo, aprendo la strada ai target Kotlin Multiplatform inclusi quelli iOS.&lt;/p>
&lt;p>Il team sta anche costruendo il supporto a &lt;a href="https://nostrcompass.org/en/topics/nip-ac/">NIP-AC&lt;/a> (P2P Voice and Video Calls): la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a> aggiunge una suite di test completa per la call state machine di NIP-AC, e la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a> impedisce che offerte di chiamata stale vengano riattivate dopo il riavvio dell&amp;rsquo;app.&lt;/p>
&lt;h3 id="nostur-v1270-aggiunge-registrazione-video-e-risposte-private">Nostur v1.27.0 aggiunge registrazione video e risposte private&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, il client Nostr per iOS, ha distribuito la &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/v1.27.0">v1.27.0&lt;/a> il 2 aprile. Il rilascio aggiunge la registrazione video in-app con trim prima dell&amp;rsquo;upload, così gli utenti possono registrare clip brevi, tagliarle alla lunghezza desiderata e pubblicarle senza uscire dal client. Il supporto alle GIF animate si estende alle foto profilo e banner, con l&amp;rsquo;aggiunta anche del rendering WebP animato. Una nuova integrazione con Shortcuts permette agli utenti di inviare post Nostr dalle automazioni Apple Shortcuts. Il rilascio aggiunge anche le risposte private e corregge problemi di compatibilità DM che influivano sulla consegna dei messaggi tra Nostur e altri client.&lt;/p>
&lt;h3 id="shosho-v0150-lancia-shows-e-un-carousel-video-verticale">Shosho v0.15.0 lancia Shows e un carousel video verticale&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, l&amp;rsquo;app di live streaming Nostr, ha distribuito la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.0">v0.15.0&lt;/a> e la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.1">v0.15.1&lt;/a> il 7 aprile. La funzione principale è Shows: gli streamer possono preparare informazioni personalizzate sul proprio show prima di andare live e collegare lo show a OBS o a qualsiasi encoder esterno. Questo separa i metadati del &amp;ldquo;cosa sto trasmettendo&amp;rdquo; dall&amp;rsquo;atto di andare in diretta, così gli streamer possono preparare titoli, descrizioni e prodotti prima di iniziare la trasmissione. Lo stesso rilascio aggiunge un carousel video verticale in stile TikTok per scorrere live, clip e replay in un feed a schermo intero, e Quick Add per pubblicare clip video e aggiungere prodotti direttamente dalla pagina profilo. La v0.15.1 corregge un bug per cui la tastiera nascondeva il campo di input della chat del live stream.&lt;/p>
&lt;h2 id="rilasci-di-questa-settimana">Rilasci di Questa Settimana&lt;/h2>
&lt;h3 id="notedeck-v0100-beta-distribuisce-lauto-aggiornamento-via-zapstore">Notedeck v0.10.0-beta distribuisce l&amp;rsquo;auto-aggiornamento via Zapstore&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop e mobile del team Damus, ha distribuito &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.1">v0.10.0-beta.1&lt;/a> e &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.2">v0.10.0-beta.2&lt;/a> come prerelease di test per l&amp;rsquo;auto-aggiornamento APK. La &lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a> aggiunge l&amp;rsquo;auto-aggiornamento APK via updater Nostr/Zapstore su Android, costruendo sul &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-18-newsletter/#notedeck-moves-release-discovery-onto-nostr">lavoro di discovery degli aggiornamenti nativo Nostr dalla Newsletter #14&lt;/a>. Il flusso di aggiornamento scopre i nuovi rilasci tramite event Nostr pubblicati sui relay, poi scarica l&amp;rsquo;APK da dove lo sviluppatore lo ospita (GitHub releases, Blossom CDN o altre sorgenti), verifica l&amp;rsquo;hash SHA-256 rispetto all&amp;rsquo;event Nostr firmato e lo installa. La &lt;a href="https://github.com/damus-io/notedeck/pull/1438">PR #1438&lt;/a> corregge un bug della welcome screen in cui i pulsanti Login e CreateAccount tornavano subito indietro, e la &lt;a href="https://github.com/damus-io/notedeck/pull/1424">PR #1424&lt;/a> corregge l&amp;rsquo;overflow del testo nella vista sessione di Agentium AI.&lt;/p>
&lt;h3 id="amber-v600-pre1-aggiunge-chiavi-di-firma-nip-46-per-connessione">Amber v6.0.0-pre1 aggiunge chiavi di firma NIP-46 per connessione&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), ha distribuito la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.0-pre1">v6.0.0-pre1&lt;/a> il 4 aprile. Il cambiamento più importante è l&amp;rsquo;introduzione di chiavi di firma per connessione per il protocollo bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing). Invece di usare una singola keypair per tutte le connessioni bunker, Amber ora genera una chiave distinta per ogni client connesso. Se una connessione client viene compromessa, l&amp;rsquo;attaccante non può impersonare il signer verso gli altri client.&lt;/p>
&lt;p>La &lt;a href="https://github.com/greenart7c3/Amber/pull/377">PR #377&lt;/a> aggiunge il controllo e l&amp;rsquo;installazione degli aggiornamenti in-app via Zapstore, unendosi a &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-distribuisce-lauto-aggiornamento-via-zapstore">Notedeck&lt;/a> nell&amp;rsquo;adozione della distribuzione app nativa Nostr. La &lt;a href="https://github.com/greenart7c3/Amber/pull/375">PR #375&lt;/a> gestisce con grazia i fallimenti di AndroidKeyStore mostrando un avviso agli utenti invece di far crashare l&amp;rsquo;app, e la &lt;a href="https://github.com/greenart7c3/Amber/pull/371">PR #371&lt;/a> aggiunge cleanup del database con limiti di dimensione e troncamento dei contenuti per prevenire una crescita di storage senza limiti. La prerelease include anche la whitelist relay auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> e il login tramite frase mnemonica di recovery dal &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#amber-v502-through-v504">ciclo v5.0.x trattato la settimana scorsa&lt;/a>.&lt;/p>
&lt;h3 id="nostria-distribuisce-unapp-mobile-nativa">Nostria distribuisce un&amp;rsquo;app mobile nativa&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, il client Nostr cross-platform mantenuto da SondreB, ha rilasciato un&amp;rsquo;app mobile nativa per Android con otto rilasci dalla &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.11">v3.1.11&lt;/a> alla &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.18">v3.1.18&lt;/a>. La capacità nuova più importante è il supporto nativo ai signer locali come &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> e Aegis. Sono disponibili anche gli &lt;a href="https://www.nostria.app/download">installer desktop&lt;/a> per Linux, macOS e Windows. La &lt;a href="https://github.com/nostria-app/nostria/pull/610">PR #610&lt;/a> riduce la pressione sulla memoria del feed con limiti runtime adattivi e cleanup delle preview URL. La v3.1.14 corregge l&amp;rsquo;integrazione con Brainstorm, un provider &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a>. La v3.1.15 si concentra sui miglioramenti musicali. La nuova app Android è disponibile su &lt;a href="https://zapstore.dev/apps/app.nostria">Zapstore&lt;/a>.&lt;/p>
&lt;h3 id="divine-108-distribuisce-upload-resumable-e-dm">diVine 1.0.8 distribuisce upload resumable e DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client per video brevi, ha distribuito la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.8">1.0.8&lt;/a> con 87 PR unite. Gli upload resumable permettono ai creator di riprendere upload interrotti chunk per chunk invece di ricominciare da zero su una connessione instabile. Il rilascio aggiunge impostazioni di qualità video e bitrate, doppio tap per mettere like e miglioramenti ai DM. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2722">PR #2722&lt;/a> aggiunge un plugin fotocamera macOS per la cattura video desktop, e la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2820">PR #2820&lt;/a> migra il sistema di notifiche a un&amp;rsquo;architettura BLoC con enrichment e grouping. Il team ha anche sostituito sticker e artwork di categoria generati da AI con SVG OpenMoji (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2844">PR #2844&lt;/a>, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2842">PR #2842&lt;/a>).&lt;/p>
&lt;h3 id="manent-v130-aggiunge-blur-per-note-sensibili-e-auth-nip-42">Manent v1.3.0 aggiunge blur per note sensibili e auth NIP-42&lt;/h3>
&lt;p>&lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>, l&amp;rsquo;app per note private cifrate e storage file, ha distribuito la &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.3.0">v1.3.0&lt;/a> il 2 aprile. Gli utenti possono ora segnare le note come sensibili per sfocarle nella list view, mantenendo nascosto il contenuto privato durante lo scorrimento casuale. Il rilascio aggiunge anche il supporto &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (Authentication of Clients to Relays), permettendo a Manent di autenticarsi verso relay che lo richiedono prima di accettare event. Manent archivia tutti i dati cifrati sui relay Nostr usando la keypair dell&amp;rsquo;utente, quindi il supporto NIP-42 amplia l&amp;rsquo;insieme di relay che può usare per lo storage.&lt;/p>
&lt;h3 id="wisp-da-v0170-a-v0173-aggiunge-zap-ai-live-stream-e-backup-wallet">Wisp da v0.17.0 a v0.17.3 aggiunge zap ai live stream e backup wallet&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, il client Nostr Android, ha distribuito sei rilasci dalla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.2-beta">v0.16.2-beta&lt;/a> alla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.3-beta">v0.17.3-beta&lt;/a> con 44 PR unite. La v0.17.0 aggiunge prompt di sicurezza per il backup del wallet e miglioramenti alla UX degli zap. La &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.1-beta">v0.17.1&lt;/a> aggiunge la visibilità della chat del live stream tra piattaforme e la funzionalità zap per i live stream. La &lt;a href="https://github.com/barrydeen/wisp/pull/423">PR #423&lt;/a> aggiunge la ricerca automatica dei profili, un&amp;rsquo;animazione di successo per gli zap e miglioramenti allo stato utente. La &lt;a href="https://github.com/barrydeen/wisp/pull/426">PR #426&lt;/a> corregge un crash out-of-memory in &lt;code>computeId&lt;/code> per event con grandi liste di tag. I rilasci v0.16.x avevano aggiunto autocompletamento degli shortcode emoji, miglioramenti alla UI della chat di gruppo e filtraggio degli utenti bloccati in tutti i percorsi delle notifiche.&lt;/p>
&lt;h3 id="mostro-distribuisce-deep-link-tassi-di-cambio-da-nostr-e-una-correzione-ai-pagamenti-duplicati">Mostro distribuisce deep link, tassi di cambio da Nostr e una correzione ai pagamenti duplicati&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, l&amp;rsquo;exchange Bitcoin peer-to-peer costruito su Nostr, ha registrato aggiornamenti questa settimana sia nel daemon server sia nel client mobile. Sul lato server, la &lt;a href="https://github.com/MostroP2P/mostro/pull/692">PR #692&lt;/a> impedisce che scritture stale degli ordini causino pagamenti duplicati, un bug che poteva portare a pagare due volte un venditore per lo stesso trade. La &lt;a href="https://github.com/MostroP2P/mostro/pull/693">PR #693&lt;/a> usa aggiornamenti mirati per le scritture di dev_fee invece di riscrivere l&amp;rsquo;intero ordine.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, il client Flutter, ha distribuito la &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.3">v1.2.3&lt;/a> il 3 aprile. Il rilascio gestisce deep link provenienti da diverse istanze Mostro, così gli utenti possono toccare link che instradano verso il server exchange corretto. La &lt;a href="https://github.com/MostroP2P/mobile/pull/498">PR #498&lt;/a> rileva DM di admin e dispute nella pipeline di notifiche in background, e l&amp;rsquo;app ora recupera i tassi di cambio da Nostr con fallback HTTP/cache. La &lt;a href="https://github.com/MostroP2P/mobile/pull/560">PR #560&lt;/a> corregge un bug bloccante nella connessione ai relay che impediva all&amp;rsquo;app di raggiungerli in certe condizioni di rete.&lt;/p>
&lt;h3 id="unfiltered-v1012-aggiunge-hashtag-e-commenti">Unfiltered v1.0.12 aggiunge hashtag e commenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>, un client Nostr focalizzato su contenuti image-forward, ha distribuito la &lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.12">v1.0.12&lt;/a>. La &lt;a href="https://github.com/dmcarrington/unfiltered/pull/69">PR #69&lt;/a> aggiunge il supporto agli hashtag e la &lt;a href="https://github.com/dmcarrington/unfiltered/pull/72">PR #72&lt;/a> aggiunge la possibilità di scrivere e visualizzare commenti sui post. La &lt;a href="https://github.com/dmcarrington/unfiltered/pull/71">PR #71&lt;/a> corregge problemi di navigazione con più immagini per post.&lt;/p>
&lt;h3 id="primal-android-distribuisce-condivisione-wallet-multi-account-e-auto-reconnect-del-remote-signer">Primal Android distribuisce condivisione wallet multi-account e auto-reconnect del remote signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal&lt;/a>, il client Nostr Android, ha distribuito un rilascio il 7 aprile. L&amp;rsquo;aggiornamento aggiunge la condivisione wallet multi-account e un menu overflow con cancellazione del wallet nei Dev Tools. Il remote signer ora si riconnette automaticamente quando la connessione cade, e il servizio wallet ha ottenuto una propria logica di auto-reconnect. Le correzioni includono i voti zap dei sondaggi che non appaiono più come Top Zaps, la prevenzione del crash con opzioni di sondaggio vuote, l&amp;rsquo;occultamento del saldo wallet quando non esiste alcun wallet, e il mapping dei tipi WalletException in codici errore nelle risposte NWC.&lt;/p>
&lt;h3 id="titan-v010-lancia-un-browser-nativo-nsite-con-registrazione-dei-nomi-su-bitcoin">Titan v0.1.0 lancia un browser nativo nsite:// con registrazione dei nomi su Bitcoin&lt;/h3>
&lt;p>&lt;a href="https://github.com/btcjt/titan">Titan&lt;/a>, un browser desktop nativo per il web di Nostr, ha distribuito la &lt;a href="https://github.com/btcjt/titan/releases/tag/v0.1.0">v0.1.0&lt;/a> il 7 aprile. Titan risolve gli URL &lt;code>nsite://&lt;/code> cercando nomi leggibili registrati su Bitcoin, interrogando i relay Nostr per gli event di contenuto del sito e renderizzando pagine recuperate da server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. Il risultato è un&amp;rsquo;esperienza di navigazione web senza DNS, senza certificati TLS e senza hosting provider. I nomi vengono registrati tramite una &lt;a href="https://npub1hmq6xuqnplk5lw0h3700cujmx5gymqn5wrn42u6432r6ntzumezqc3marw.nsite.lol/register">web interface&lt;/a> legata a transazioni Bitcoin. Il rilascio iniziale è distribuito come &lt;code>.dmg&lt;/code> per macOS (ARM, con supporto Rosetta 2 per Intel) e include il supporto all&amp;rsquo;ambiente di sviluppo Nix.&lt;/p>
&lt;h3 id="bikel-v150-distribuisce-un-native-foreground-service-per-telefoni-de-googled">Bikel v1.5.0 distribuisce un native foreground service per telefoni de-Googled&lt;/h3>
&lt;p>&lt;a href="https://github.com/Mnpezz/bikel">Bikel&lt;/a>, un tracker ciclistico decentralizzato che trasforma le corse in dati di infrastruttura pubblica usando Nostr, ha distribuito la &lt;a href="https://github.com/Mnpezz/bikel/releases/tag/v1.5.0">v1.5.0&lt;/a> il 4 aprile. Il rilascio migra da Expo TaskManager dipendente da GMS a un foreground service nativo personalizzato, garantendo un tracking affidabile in background su LineageOS, GrapheneOS e altre varianti Android de-Googled. Il Bikel Bot ha ottenuto un&amp;rsquo;architettura dual-pocket con raccolta eCash autonoma via Cashu nutzaps. La v1.4.3 e la v1.4.2 correggono la sincronizzazione del tracking in background per ambienti Android non standard, e l&amp;rsquo;app aggiunge toggle per i punti mappa dei portabici OSM.&lt;/p>
&lt;h3 id="sprout-aggiunge-supporto-a-nip-01-nip-23-e-nip-33">Sprout aggiunge supporto a NIP-01, NIP-23 e NIP-33&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, una piattaforma di comunicazione di Block con relay Nostr integrato, ha distribuito la &lt;a href="https://github.com/block/sprout/releases/tag/desktop/v0.1.0-rc7">desktop/v0.1.0-rc7&lt;/a> il 6 aprile. Questa settimana il team ha aggiunto supporto agli articoli kind &lt;code>30023&lt;/code> di &lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a> (Long-form Content), agli event replaceable parametrizzati di &lt;a href="https://nostrcompass.org/en/topics/nip-33/">NIP-33&lt;/a> con sostituzione indicizzata dal tag &lt;code>d&lt;/code>, e alle text note kind &lt;code>1&lt;/code> e follow list kind &lt;code>3&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a>/&lt;a href="https://nostrcompass.org/en/topics/nip-02/">NIP-02&lt;/a>. Il rilascio aggiunge anche un sistema di temi IDE adattivi con 54 temi, rifiniture UX per workflow e cronologia delle esecuzioni degli agenti, e cleanup della sidebar membri.&lt;/p>
&lt;h3 id="mesh-llm-v0560-distribuisce-un-protocollo-di-configurazione-distribuito">mesh-llm v0.56.0 distribuisce un protocollo di configurazione distribuito&lt;/h3>
&lt;p>&lt;a href="https://github.com/michaelneale/mesh-llm">mesh-llm&lt;/a>, un sistema distribuito di inferenza LLM che usa keypair Nostr per l&amp;rsquo;identità dei nodi, ha distribuito la &lt;a href="https://github.com/michaelneale/mesh-llm/releases/tag/v0.56.0">v0.56.0&lt;/a> il 7 aprile. Il rilascio aggiunge un protocollo di configurazione distribuito con semantiche di ownership, quantizzazione asimmetrica della cache KV (chiavi Q8_0 con valori Q4) per ridurre l&amp;rsquo;uso di memoria, storage nel keychain del sistema operativo per i keystore di identità, streaming chat fluido con coda dei messaggi, e correzioni al layout fullscreen e alla suddivisione della cache KV con flash attention.&lt;/p>
&lt;h3 id="nostr-vpn-distribuisce-supporto-exit-node-e-packaging-umbrel">Nostr VPN distribuisce supporto exit node e packaging Umbrel&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a>, una VPN peer-to-peer che usa relay Nostr per la segnalazione e WireGuard per i tunnel cifrati, ha distribuito sei rilasci dalla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.0">v0.3.0&lt;/a> alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.6">v0.3.6&lt;/a> questa settimana. Il ciclo v0.3.x aggiunge il supporto agli exit node su Windows e macOS, permettendo ai peer di instradare il traffico Internet attraverso altri nodi della rete. La propagazione di invite e alias ora si sincronizza via Nostr, così gli utenti possono condividere l&amp;rsquo;accesso alla rete senza coordinamento out-of-band. I rilasci aggiungono packaging Umbrel per deployment self-hosted, NAT punch-through usando endpoint pubblici ricordati, cleanup automatico degli exit node stale e una specifica di protocollo pubblicata. Il progetto ha anche stabilizzato la gestione delle route su macOS con default route auto-riparanti e underlay repair, e ha aggiunto un build Android via Tauri. Sono disponibili build per macOS (Apple Silicon e Intel), Linux (AppImage e .deb), Windows e Android.&lt;/p>
&lt;h3 id="nymchat-abbandona-marmot-e-distribuisce-chat-di-gruppo-nip-17-potenziate">Nymchat abbandona Marmot e distribuisce chat di gruppo NIP-17 potenziate&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>, il client chat capace di MLS, ha distribuito 14 rilasci dalla &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/3.56.261">v3.56.261&lt;/a> alla &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.274">v3.58.274&lt;/a>. Il cambiamento più significativo è una svolta di protocollo: la &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.57.261">v3.57.261&lt;/a> aveva aggiunto chat di gruppo Marmot MLS, ma la &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.268">v3.58.268&lt;/a> è tornata a &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> perché il supporto multi-device di Marmot non è ancora completo, e questo causava problemi nella sincronizzazione dello stato delle chat di gruppo tra dispositivi. La v3.58.271 introduce chat di gruppo NIP-17 potenziate con chiavi ephemeral a rotazione per tutti i messaggi, progettate per prevenire timing attack e correlation attack. La settimana ha portato anche un sistema amici con controllo granulare delle impostazioni (&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.262">v3.58.262&lt;/a>), sincronizzazione dei messaggi delle chat di gruppo MLS nelle impostazioni cifrate dell&amp;rsquo;app, e diverse correzioni alla connettività relay.&lt;/p>
&lt;h3 id="nak-v0195-aggiunge-blossom-multi-server-e-pubblicazione-outbox">nak v0.19.5 aggiunge Blossom multi-server e pubblicazione outbox&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il toolkit Nostr a riga di comando di fiatjaf, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.5">v0.19.5&lt;/a>. Il comando &lt;code>blossom&lt;/code> ora accetta più flag &lt;code>--server&lt;/code> per caricare su diversi server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> in una sola chiamata. Un nuovo comando &lt;code>key&lt;/code> espande chiavi parziali aggiungendo zeri a sinistra. Il comando &lt;code>event&lt;/code> guadagna un flag &lt;code>--outbox&lt;/code> per pubblicare event attraverso il modello outbox, e &lt;code>fetch&lt;/code> ora termina con un codice errore quando non viene restituito alcun event.&lt;/p>
&lt;h2 id="in-sviluppo">In Sviluppo&lt;/h2>
&lt;h3 id="white-noise-aggiunge-anteprime-thumbhash-e-il-bridge-per-la-registrazione-push">White Noise aggiunge anteprime thumbhash e il bridge per la registrazione push&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, il messenger privato costruito sul protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha unito cinque PR. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/549">PR #549&lt;/a> sostituisce le anteprime immagine blurhash con thumbhash, un algoritmo più recente che produce immagini placeholder più nitide con una dimensione payload minore (tipicamente sotto i 30 byte contro i ~50-100 byte di blurhash) preservando il rapporto d&amp;rsquo;aspetto e la distribuzione dei colori dell&amp;rsquo;immagine originale. Blurhash viene mantenuto come fallback per i contenuti più vecchi. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/548">PR #548&lt;/a> aggiorna whitenoise-rs e aggiunge il bridge di registrazione push &lt;a href="https://nostrcompass.org/it/topics/mip-05/">MIP-05&lt;/a>, collegando al client il &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#marmot-moves-keypackages-to-addressable-events-and-tightens-push-notifications">lavoro sulla specifica delle push notification della settimana scorsa&lt;/a>. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/493">PR #493&lt;/a> aggiunge la paginazione basata su cursore per i messaggi chat, sostituendo la strategia di caricamento precedente con un approccio guidato dallo scroll.&lt;/p>
&lt;h3 id="route96-aggiunge-configurazione-dinamica-delle-label-e-cleanup-zero-egress">Route96 aggiunge configurazione dinamica delle label e cleanup zero-egress&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, il media server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> di v0l, ha unito tre PR. La &lt;a href="https://github.com/v0l/route96/pull/80">PR #80&lt;/a> aggiunge la configurazione dinamica del modello di label tramite admin API, permettendo agli operatori di sostituire i modelli di classificazione dei contenuti senza riavviare il server. La &lt;a href="https://github.com/v0l/route96/pull/82">PR #82&lt;/a> aggiunge i campi di configurazione delle label alla admin UI. La &lt;a href="https://github.com/v0l/route96/pull/79">PR #79&lt;/a> aggiunge una policy di cleanup dei file zero-egress che rimuove automaticamente i file mai scaricati, mantenendo bassi i costi di storage per gli operatori.&lt;/p>
&lt;h3 id="snort-distribuisce-hardening-di-sicurezza-e-invoice-di-pagamento-dvm">Snort distribuisce hardening di sicurezza e invoice di pagamento DVM&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, il client web, ha distribuito due rilasci questa settimana insieme a un audit di sicurezza completo. Le correzioni includono verifica delle firme Schnorr, protezione &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> contro la falsificazione dei messaggi relay (impedendo ad attaccanti di iniettare richieste di firma attraverso relay compromessi), miglioramenti alla cifratura del PIN e rimozione della fiducia nella delega NIP-26. I miglioramenti prestazionali arrivano dalla verifica Schnorr batch in WASM, route lazy-loaded, traduzioni precompilate ed eliminazione della doppia verifica per event. La &lt;a href="https://github.com/v0l/snort/pull/618">PR #618&lt;/a> aggiunge la visualizzazione dell&amp;rsquo;invoice kind &lt;code>7000&lt;/code> con pagamento richiesto di &lt;a href="https://nostrcompass.org/en/topics/nip-90/">NIP-90&lt;/a> (Data Vending Machine), così quando un DVM risponde con un requisito di pagamento, Snort renderizza direttamente la Lightning invoice nel feed.&lt;/p>
&lt;h3 id="damus-migliora-la-compattazione-lmdb">Damus migliora la compattazione LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, il client iOS, ha unito la &lt;a href="https://github.com/damus-io/damus/pull/3719">PR #3719&lt;/a> che aggiunge la compattazione automatica di LMDB su base pianificata, impedendo al database locale di crescere senza limiti nel tempo. La &lt;a href="https://github.com/damus-io/damus/pull/3663">PR #3663&lt;/a> migliora la BlurOverlayView in modo che sembri protettiva invece che rotta.&lt;/p>
&lt;h3 id="captains-log-aggiunge-indicizzazione-dei-tag-e-sync-delle-note">Captain&amp;rsquo;s Log aggiunge indicizzazione dei tag e sync delle note&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/captains-log">Captain&amp;rsquo;s Log&lt;/a> (Comet), lo strumento di scrittura long-form nativo Nostr di Nodetec, ha unito quattro PR questa settimana. La &lt;a href="https://github.com/nodetec/captains-log/pull/156">PR #156&lt;/a> aggiunge indicizzazione dei tag e supporto alla sincronizzazione tra note, la &lt;a href="https://github.com/nodetec/captains-log/pull/157">PR #157&lt;/a> rifattorizza il sync delle note e la gestione dei tag, e la &lt;a href="https://github.com/nodetec/captains-log/pull/159">PR #159&lt;/a> corregge la sincronizzazione delle note cestinate in modo che gli elementi eliminati restino eliminati su tutti i dispositivi.&lt;/p>
&lt;h3 id="relatr-v02x-ridisegna-il-sistema-plugin-con-un-marketplace-di-validator-nativo-nostr">Relatr v0.2.x ridisegna il sistema plugin con un marketplace di validator nativo Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a>, un motore &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> che calcola ranking di fiducia dalla distanza nel grafo sociale e da validator configurabili, ha distribuito la famiglia v0.2.x con un redesign completo del sistema plugin. I validator sono ora scritti in Elo, un linguaggio di espressioni funzionali portabile forkato per supportare capacità orchestrate dall&amp;rsquo;host in più passi (query Nostr, lookup del grafo sociale, risoluzione NIP-05). I plugin vengono pubblicati come event Nostr kind &lt;code>765&lt;/code>, rendendo la distribuzione nativa alla rete relay. Un nuovo &lt;a href="https://relatr.net">plugin marketplace&lt;/a> permette agli operatori di scoprire, installare e pesare i validator dal browser, con una CLI (&lt;code>relo&lt;/code>) per authoring e pubblicazione locale. L&amp;rsquo;architettura è sandboxed: i plugin possono invocare solo le capacità che l&amp;rsquo;host fornisce esplicitamente, quindi un validator malevolo non può uscire dal proprio scope definito. Le istanze Relatr ora possono essere gestite dal sito web, con visibilità completa su quali plugin compongono l&amp;rsquo;algoritmo di scoring e sui pesi individuali di ciascuno.&lt;/p>
&lt;h3 id="shopstr-migliora-navigazione-mobile-e-controllo-accessi">Shopstr migliora navigazione mobile e controllo accessi&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, il marketplace nativo Nostr per comprare e vendere con Bitcoin, ha spinto 158 commit questa settimana nella sua app principale e nel progetto companion &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>. Le correzioni includono miglioramenti al layout mobile delle community, comportamento di chiusura del menu durante la navigazione e auto-chiusura dei dropdown. Le route protette non possono più essere raggiunte via URL diretto senza login, e la logica di matching degli slug ora gestisce correttamente più corrispondenze esatte.&lt;/p>
&lt;h3 id="pollerama-aggiunge-notifiche-ricerca-film-e-nuova-rating-ui">Pollerama aggiunge notifiche, ricerca film e nuova rating UI&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-polls">Pollerama&lt;/a>, un&amp;rsquo;app di polling, survey e rating sociale costruita su Nostr, ha aggiunto notifiche dei thread, una funzione di ricerca film e un overhaul della rating UI. Il rilascio corregge anche problemi di caricamento del feed e aggiorna le versioni delle dipendenze.&lt;/p>
&lt;h3 id="purser-costruisce-un-payment-daemon-nativo-nostr-con-cifratura-marmot">Purser costruisce un payment daemon nativo Nostr con cifratura Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/EthnTuttle/purser">Purser&lt;/a>, un payment daemon nativo Nostr progettato come sostituto di Zaprite, ha unito nove PR questa settimana che costruiscono la sua architettura centrale. Il progetto usa MLS di &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> tramite MDK per la messaggistica cifrata merchant-customer, con Strike e Square come payment provider. Questa settimana sono arrivati caricamento di configurazione e catalogo, validazione dello schema dei messaggi, il layer di comunicazione MDK, le implementazioni dei provider Strike e Square, un motore di polling, anti-spam rate limiting, persistenza dei pagamenti pending e la pipeline di elaborazione degli ordini. Tutti i 99 test ora esercitano operazioni MLS reali di mdk-core dopo che il team ha rimosso il mock MLS in favore della cifratura reale in modalità locale.&lt;/p>
&lt;h3 id="vector-rifattorizza-gli-allegati-dm-e-aggiunge-la-modifica-del-profilo">Vector rifattorizza gli allegati DM e aggiunge la modifica del profilo&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, il messenger Nostr focalizzato sulla privacy costruito con Tauri, ha unito la &lt;a href="https://github.com/VectorPrivacy/Vector/pull/55">PR #55&lt;/a> che rifattorizza il frontend. La decrittazione e il salvataggio degli allegati DM sono stati spostati nella libreria vector-core, e l&amp;rsquo;app ora supporta la modifica del profilo. Il flag di cancellazione dell&amp;rsquo;upload è collegato correttamente attraverso TauriSendCallback, e i callback inutilizzati per l&amp;rsquo;anteprima degli allegati sono stati ripuliti.&lt;/p>
&lt;h2 id="lavoro-su-protocollo-e-specifiche">Lavoro su Protocollo e Specifiche&lt;/h2>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges): i Profile Badges passano al kind 10008, i Badge Sets al kind 30008&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>): Migra i Profile Badges dal kind &lt;code>30008&lt;/code> al kind &lt;code>10008&lt;/code> (un event replaceable, uno per pubkey) e introduce il kind &lt;code>30008&lt;/code> per i Badge Sets. In precedenza i Profile Badges usavano lo stesso kind (&lt;code>30008&lt;/code>) delle definizioni dei badge, rendendoli event replaceable parametrizzati indicizzati da un tag &lt;code>d&lt;/code>. Il nuovo kind &lt;code>10008&lt;/code> è un semplice event replaceable: uno per pubkey, nessun tag &lt;code>d&lt;/code> necessario. I client interrogano un singolo event replaceable per utente invece di scandire event replaceable parametrizzati. Amethyst v1.07.3 distribuisce già questa migrazione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (Git Stuff): aggiungere follow list relative a git&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2130">PR #2130&lt;/a>): Aggiunge convenzioni di follow list per il tracciamento di repository e issue NIP-34. Gli utenti pubblicano follow set kind &lt;code>30000&lt;/code> con tag &lt;code>d&lt;/code> come &lt;code>git-repos&lt;/code> o &lt;code>git-issues&lt;/code> contenenti riferimenti tag &lt;code>a&lt;/code> ai repository (kind &lt;code>30617&lt;/code>) che vogliono seguire. I client possono sottoscrivere questi follow set per mostrare l&amp;rsquo;attività dei repository nel feed di un utente, in modo simile a come le contact list kind &lt;code>3&lt;/code> funzionano per le pubkey.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR aperte e discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-AC: P2P Voice and Video Calls over WebRTC&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2301">PR #2301&lt;/a>): Estende il NIP-100 originale (implementato da 0xChat) con tre cambiamenti: migrazione alla cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> avvolta in gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> per eliminare i metadata leak, un workflow WebRTC specificato per setup di chiamate vocali e video (offer, answer, ICE candidates), e un modello di mesh group call in cui ogni peer stabilisce una connessione WebRTC diretta con tutti gli altri peer. La specifica non è backwards-compatible con NIP-100. Amethyst ci sta già lavorando, con una suite di test per la call state machine (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a>) e la gestione delle call offer stale (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a>) arrivate questa settimana.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-340/">NIP-340&lt;/a> (FROST Quorum)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2299">PR #2299&lt;/a>): Propone convenzioni per la threshold signing &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> (Flexible Round-Optimized Schnorr Threshold) su Nostr. FROST permette a un gruppo di signer di controllare collettivamente un&amp;rsquo;identità Nostr dove qualsiasi insieme t-of-n di membri può firmare event senza ricostruire la chiave privata completa. Il NIP definisce come coordinare i round di firma, distribuire key share e pubblicare event firmati in threshold, costruendo sul lavoro del signer Igloo dal &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#igloo-signer-11">progetto FROSTR&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-5d/">NIP-5D&lt;/a> (Nostr Web Applets)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2303">PR #2303&lt;/a>): Definisce un protocollo &lt;code>postMessage&lt;/code> per applicazioni web sandboxed (&amp;ldquo;napplets&amp;rdquo;) eseguite in iframe che comunicano con un&amp;rsquo;applicazione host (&amp;ldquo;shell&amp;rdquo;). La shell fornisce alla napplet firma Nostr, accesso relay e contesto utente tramite una structured message API, mentre la sandbox iframe impedisce l&amp;rsquo;accesso diretto alle chiavi. Questo estende il modello di hosting di siti web statici di &lt;a href="https://nostrcompass.org/en/topics/nip-5a/">NIP-5A&lt;/a> verso applicazioni interattive in grado di leggere e scrivere event Nostr. Il NIP è in sviluppo attivo con un&amp;rsquo;implementazione runtime funzionante.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-5c/">NIP-5C&lt;/a> (Scrolls)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>): Rinominato dalla precedente proposta NIP-A5. Definisce convenzioni per pubblicare e scoprire programmi WebAssembly su Nostr. I binari WASM vengono archiviati come event Nostr, e i client possono scaricarli ed eseguirli in un runtime sandboxed. Una &lt;a href="https://nprogram.netlify.app/">demo app&lt;/a> mostra scrolls in esecuzione nel browser, con programmi di esempio pubblicati come event Nostr che qualsiasi client può recuperare ed eseguire.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions): chiarimenti&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a>): Stringe il linguaggio della specifica intorno a chiavi multiple e relay multipli per provider di servizi, chiarendo come i client dovrebbero gestire assertion provenienti da provider che operano attraverso più pubkey o endpoint relay.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-24/">NIP-24&lt;/a> (Extra Metadata Fields): &lt;code>published_at&lt;/code> per event replaceable&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2300">PR #2300&lt;/a>): Generalizza il tag &lt;code>published_at&lt;/code> da &lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a> (Long-form Content) a tutti gli event replaceable e addressable. Il tag è solo display-only: se &lt;code>published_at&lt;/code> è uguale a &lt;code>created_at&lt;/code>, i client mostrano l&amp;rsquo;event come &amp;ldquo;created&amp;rdquo; in quel momento; se differiscono (perché l&amp;rsquo;event è stato aggiornato), i client possono mostrare &amp;ldquo;updated&amp;rdquo; invece. Questo permette ai profili kind &lt;code>0&lt;/code> di mostrare date &amp;ldquo;joined at&amp;rdquo; e agli altri event replaceable di preservare il timestamp di pubblicazione originale attraverso gli aggiornamenti. Una proposta complementare &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2302">PR #2302&lt;/a>) aggiunge lo stesso tag agli event di lista.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap): kind di gift wrap ephemeral&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a>): Aggiunge il kind &lt;code>21059&lt;/code> come controparte ephemeral del gift wrap esistente kind &lt;code>1059&lt;/code>. Gli event ephemeral (kind &lt;code>20000&lt;/code>-&lt;code>29999&lt;/code>) seguono la semantica di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a>: i relay non sono tenuti a memorizzarli e possono scartarli dopo la consegna. Questo permette alle applicazioni di inviare messaggi gift-wrapped che scompaiono dai relay dopo la consegna, riducendo i requisiti di storage per la messaggistica ad alto volume mantenendo lo stesso modello di cifratura a tre layer dei normali DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="opensats-annuncia-la-sedicesima-ondata-di-grant-nostr">OpenSats annuncia la sedicesima ondata di grant Nostr&lt;/h3>
&lt;p>&lt;a href="https://opensats.org">OpenSats&lt;/a> ha annunciato la sua &lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">sedicesima ondata di grant Nostr&lt;/a> l'8 aprile, finanziando quattro grant alla prima assegnazione e un rinnovo. &lt;a href="https://github.com/vitorpamplona/amethyst/tree/main/desktopApp">Amethyst Desktop&lt;/a> riceve fondi per permettere al contributor Robert Nagy di costruire un&amp;rsquo;app desktop standalone sopra i moduli &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a> e Commons, portando il set di funzionalità del client Android a interfacce guidate dal mouse con connessioni relay persistenti. &lt;a href="https://github.com/nogringo/nostr-mail">Nostr Mail&lt;/a> riceve fondi per costruire un sistema email completo su Nostr usando event kind &lt;code>1301&lt;/code> avvolti in gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, con un client Flutter e server bridge SMTP per compatibilità con Gmail/Outlook. &lt;a href="https://github.com/Nostrord/nostrord">Nostrord&lt;/a> riceve fondi per un client di gruppo Kotlin Multiplatform basato su relay &lt;a href="https://nostrcompass.org/en/topics/nip-29/">NIP-29&lt;/a> con messaggistica di gruppo, moderazione e thread in stile Discord. &lt;a href="https://github.com/tami1A84/null--nostr">Nurunuru&lt;/a> riceve fondi per costruire una versione iOS nativa del client Nostr orientato al pubblico giapponese modellata sull&amp;rsquo;interfaccia familiare di LINE, con login biometrico basato su passkey per l&amp;rsquo;onboarding. HAMSTR ha ricevuto un rinnovo del grant (finanziato la prima volta nell&amp;rsquo;&lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants#hamstr">undicesima ondata&lt;/a>).&lt;/p>
&lt;h2 id="nip-deep-dive-nip-17-private-direct-messages">NIP Deep Dive: NIP-17 (Private Direct Messages)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/17.md">NIP-17&lt;/a> definisce lo standard attuale per i messaggi diretti privati su Nostr. Sostituisce il vecchio schema &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages), che perdeva metadati (mittente, destinatario e timestamp erano tutti visibili sui relay) e usava una costruzione crittografica più debole. NIP-17 combina &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) per la cifratura con &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) per la protezione dei metadati, creando un sistema a tre layer in cui i relay non possono vedere chi sta parlando con chi.&lt;/p>
&lt;p>Il protocollo usa tre event kind annidati l&amp;rsquo;uno dentro l&amp;rsquo;altro. Il layer più interno è il messaggio vero e proprio, un event kind &lt;code>14&lt;/code> non firmato:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">14&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f1a2b3c4d5e6f7890123456789abcdef01234567890abcdef1234567890abcdef&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://inbox.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;subject&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Project update&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;The new relay config is deployed. Let me know if you see any issues.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>L&amp;rsquo;event kind &lt;code>14&lt;/code> è deliberatamente non firmato (&lt;code>sig&lt;/code> vuoto). La specifica descrive questo aspetto come una forma di deniability, ma nella pratica la protezione è limitata. Il seal kind &lt;code>13&lt;/code> che avvolge il rumor è firmato con la chiave reale del mittente. Un destinatario può mostrare il seal firmato a una terza parte, provando che il mittente ha comunicato con lui, anche senza rivelare il contenuto del messaggio. Con prove a conoscenza zero, un destinatario può persino dimostrare il contenuto esatto del messaggio senza rivelare la propria chiave privata. Il rumor non firmato è come una lettera non firmata in una busta firmata: la firma sulla busta collega il mittente al contenuto. La vera deniability richiederebbe autenticazione simmetrica (come gli HMAC di Signal), incompatibile con il modello relay decentralizzato di Nostr dove i messaggi devono essere self-authenticating. I veri punti di forza di NIP-17 sono la privacy dei metadati e la segretezza del contenuto, non la deniability.&lt;/p>
&lt;p>Questo messaggio non firmato viene avvolto in un seal kind &lt;code>13&lt;/code>, firmato dal mittente effettivo e cifrato con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> per il destinatario:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744022400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted kind 14 payload&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il seal non ha tag, quindi anche se venisse decrittato non rivelerebbe il destinatario. Il seal è firmato con la chiave reale del mittente, il che permette al destinatario di autenticare il messaggio controllando che il &lt;code>pubkey&lt;/code> del seal corrisponda al &lt;code>pubkey&lt;/code> del kind &lt;code>14&lt;/code> interno.&lt;/p>
&lt;p>Il seal viene poi avvolto in un gift wrap kind &lt;code>1059&lt;/code>, firmato con una chiave casuale usa-e-getta e indirizzato al destinatario:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744065600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1059&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f1a2b3c4d5e6f7890123456789abcdef01234567890abcdef1234567890abcdef&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted kind 13 payload&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il &lt;code>pubkey&lt;/code> del gift wrap è una chiave casuale generata solo per questo messaggio, e il &lt;code>created_at&lt;/code> è randomizzato fino a due giorni nel passato. Questo è il layer più esterno che i relay vedono davvero: un messaggio da una pubkey sconosciuta indirizzato al destinatario, con un timestamp che non riflette quando il messaggio è stato effettivamente inviato. Il timestamp randomizzato protegge dall&amp;rsquo;analisi retrospettiva degli event archiviati, ma un avversario collegato attivamente ai relay può comunque osservare quando il gift wrap è apparso per la prima volta, quindi questa difesa è limitata agli osservatori passivi che interrogano i dati del relay in seguito. Poiché la pubkey è casuale e il timestamp è fittizio, i relay non possono determinare il mittente reale. Per leggere il messaggio, il destinatario decripta il gift wrap usando la propria chiave e la pubkey casuale, trova il seal all&amp;rsquo;interno, decripta il seal usando la propria chiave e la pubkey del mittente ricavata dal seal, e trova all&amp;rsquo;interno il messaggio kind &lt;code>14&lt;/code>.&lt;/p>
&lt;p>NIP-17 non fornisce forward secrecy. Tutti i messaggi sono cifrati usando la keypair Nostr statica (tramite la derivazione delle chiavi di NIP-44 dalle chiavi del mittente e del destinatario). Se una chiave privata viene compromessa, ogni messaggio passato e futuro cifrato verso quella chiave può essere decrittato. È un tradeoff deliberato: poiché la cifratura dipende solo dall&amp;rsquo;nsec, un utente che fa il backup del proprio nsec può recuperare l&amp;rsquo;intera cronologia dei messaggi da qualsiasi relay che conservi ancora i gift wrap. Protocolli come MLS (usato da &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>) forniscono forward secrecy attraverso la rotazione del materiale di chiave, ma al costo di richiedere sincronizzazione dello stato e rendere impossibile il recupero storico dei messaggi dopo la rotazione delle chiavi.&lt;/p>
&lt;p>NIP-17 definisce anche il kind &lt;code>15&lt;/code> per i messaggi file cifrati, che aggiunge i tag &lt;code>file-type&lt;/code>, &lt;code>encryption-algorithm&lt;/code>, &lt;code>decryption-key&lt;/code> e &lt;code>decryption-nonce&lt;/code> così il destinatario può decrittare un file allegato cifrato con AES-GCM prima dell&amp;rsquo;upload a un server Blossom. Il kind &lt;code>10050&lt;/code> viene usato per pubblicare la relay list DM preferita dell&amp;rsquo;utente, così i mittenti sanno dove consegnare i gift wrap. L&amp;rsquo;insieme di tag &lt;code>pubkey&lt;/code> + &lt;code>p&lt;/code> in un messaggio definisce una chat room; aggiungere o rimuovere un partecipante crea una nuova stanza con cronologia pulita.&lt;/p>
&lt;p>Le implementazioni coprono la maggior parte dei client principali. &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> usa NIP-17 per tutta la messaggistica uno-a-uno. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> usa NIP-17 per i suoi DM con proof-of-work. &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal&lt;/a>, &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> e &lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a> implementano tutti NIP-17 come protocollo DM principale. La specifica supporta anche i messaggi a scomparsa impostando un tag &lt;code>expiration&lt;/code> nel gift wrap.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-46-nostr-remote-signing">NIP Deep Dive: NIP-46 (Nostr Remote Signing)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">NIP-46&lt;/a> definisce un protocollo per separare la chiave privata dell&amp;rsquo;utente dall&amp;rsquo;applicazione client. Invece di incollare un nsec in una web app, l&amp;rsquo;utente esegue un remote signer (chiamato anche &amp;ldquo;bunker&amp;rdquo;) che custodisce la chiave privata e risponde alle richieste di firma via relay Nostr. Il client non vede mai la chiave privata. Questo riduce la superficie d&amp;rsquo;attacco: un client compromesso può richiedere firme ma non può estrarre la chiave stessa.&lt;/p>
&lt;p>Il protocollo usa il kind &lt;code>24133&lt;/code> sia per le richieste sia per le risposte, cifrate con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads). Un client genera una &lt;code>client-keypair&lt;/code> usa-e-getta per la sessione e comunica con il remote signer attraverso messaggi cifrati NIP-44 taggati con le reciproche pubkey. Ecco una richiesta di firma da un client a un remote signer:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;aa11bb22cc33dd44ee55ff6677889900aabbccdd11223344556677889900aabb&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;eff37350d839ce3707332348af4549a96051bd695d3223af4aabce4993531d86&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">24133&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted JSON-RPC request&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1122334455667788990011223344556677889900aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff0011223344556677&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il &lt;code>content&lt;/code> cifrato contiene una struttura in stile JSON-RPC:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;random-request-id-1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;sign_event&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;params&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;kind\&amp;#34;:1,\&amp;#34;content\&amp;#34;:\&amp;#34;Hello from remote signing\&amp;#34;,\&amp;#34;tags\&amp;#34;:[],\&amp;#34;created_at\&amp;#34;:1744108800}&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il remote signer decripta la richiesta, la presenta all&amp;rsquo;utente per l&amp;rsquo;approvazione (o la approva automaticamente in base ai permessi configurati), firma l&amp;rsquo;event con la chiave privata dell&amp;rsquo;utente e restituisce l&amp;rsquo;event firmato in una risposta:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;bb22cc33dd44ee55ff6677889900aabb11223344556677889900aabbccddeeff&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108801&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">24133&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;eff37350d839ce3707332348af4549a96051bd695d3223af4aabce4993531d86&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted JSON-RPC response&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Le connessioni possono essere avviate da entrambi i lati. Un remote signer fornisce un URL &lt;code>bunker://&lt;/code> contenente la sua pubkey e le informazioni relay. Un client fornisce un URL &lt;code>nostrconnect://&lt;/code> con la propria pubkey client, i relay e un secret per la verifica della connessione. Il parametro &lt;code>secret&lt;/code> previene il connection spoofing: solo la parte che ha ricevuto l&amp;rsquo;URL fuori banda può completare l&amp;rsquo;handshake.&lt;/p>
&lt;p>Sono definiti otto metodi: &lt;code>connect&lt;/code> per stabilire la sessione, &lt;code>sign_event&lt;/code> per firmare event, &lt;code>get_public_key&lt;/code> per ottenere la pubkey dell&amp;rsquo;utente, &lt;code>ping&lt;/code> per keepalive, &lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code> per la cifratura legacy, &lt;code>nip44_encrypt&lt;/code>/&lt;code>nip44_decrypt&lt;/code> per la cifratura corrente, e &lt;code>switch_relays&lt;/code> per la gestione dei relay. La migrazione relay è gestita dal remote signer, che può spostare nel tempo la connessione verso nuovi relay senza rompere la sessione.&lt;/p>
&lt;p>I client richiedono capacità specifiche al momento della connessione attraverso un sistema di permessi. Una stringa di permessi come &lt;code>nip44_encrypt,sign_event:1,sign_event:14&lt;/code> richiede accesso alla cifratura NIP-44 e accesso alla firma per i soli event kind &lt;code>1&lt;/code> e kind &lt;code>14&lt;/code>. Il remote signer può accettare, rifiutare o modificare questi permessi. Questo significa che un client web per leggere e pubblicare note potrebbe ricevere solo il permesso &lt;code>sign_event:1&lt;/code>, mentre un client DM potrebbe ricevere anche i permessi &lt;code>sign_event:14&lt;/code> e &lt;code>nip44_encrypt&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> implementa NIP-46 su Android, e la sua &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-08-newsletter/#amber-v600-pre1-aggiunge-chiavi-di-firma-nip-46-per-connessione">v6.0.0-pre1&lt;/a> di questa settimana aggiunge chiavi di firma per connessione per isolare i client tra loro. &lt;a href="https://github.com/nicktee/nsecapp">nsec.app&lt;/a> (precedentemente Nostr Connect) fornisce un bunker web-based. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> include &lt;code>BunkerSigner&lt;/code> per i client JavaScript, e &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#nostr-tools-adds-bunker-relay-control-and-fixes-nip-47-multi-relay-parsing">la PR #530 della settimana scorsa&lt;/a> ha aggiunto &lt;code>skipSwitchRelays&lt;/code> per la gestione manuale dei relay. Il protocollo supporta anche auth challenge: quando un remote signer richiede autenticazione aggiuntiva (password, biometria o token hardware), risponde con un &lt;code>auth_url&lt;/code> che il client apre in un browser perché l&amp;rsquo;utente completi il flusso.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? Scrivici in DM su Nostr o vieni a trovarci su &lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>.&lt;/p></content:encoded></item><item><title>Nostr Compass #16</title><link>https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">v1.07.0&lt;/a> con note fissate, gestione relay tramite &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a>, e supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> Request to Vanish. &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nip-5a-viene-unito-portando-i-siti-web-statici-su-nostr">NIP-5A&lt;/a> (Siti Web Statici) viene unito nel repository NIPs, definendo come ospitare siti web sotto keypair Nostr usando lo storage &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#flotilla-v170-aggiunge-stanze-vocali-e-login-email">v1.7.0&lt;/a> con stanze vocali, login email/password e DM con proof-of-work. &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> corregge il relay churn nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">v2026.3.23&lt;/a>, &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> lancia la sua &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nospeak-si-lancia-come-messenger-privato-10">1.0.0&lt;/a> come messenger cifrato senza registrazione. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nymchat-distribuisce-chat-di-gruppo-basate-su-marmot">adotta Marmot&lt;/a> per chat di gruppo cifrate MLS con fallback NIP-17. &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a> raggiunge la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a> con liste calendario private e import ICS, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> aggiunge &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amber-v502-fino-a-v504">recovery mnemonico e whitelisting relay auth NIP-42&lt;/a>, e la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#marmot-sposta-i-keypackage-su-event-indirizzabili-e-stringe-le-push-notification">spec Marmot&lt;/a> sposta i KeyPackage su event indirizzabili mentre stringe il formato delle push notification MIP-05.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">v1.07.0&lt;/a> con note fissate, gestione relay tramite &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a>, e supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> Request to Vanish. &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nip-5a-viene-unito-portando-i-siti-web-statici-su-nostr">NIP-5A&lt;/a> (Siti Web Statici) viene unito nel repository NIPs, definendo come ospitare siti web sotto keypair Nostr usando lo storage &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#flotilla-v170-aggiunge-stanze-vocali-e-login-email">v1.7.0&lt;/a> con stanze vocali, login email/password e DM con proof-of-work. &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> corregge il relay churn nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">v2026.3.23&lt;/a>, &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> lancia la sua &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nospeak-si-lancia-come-messenger-privato-10">1.0.0&lt;/a> come messenger cifrato senza registrazione. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nymchat-distribuisce-chat-di-gruppo-basate-su-marmot">adotta Marmot&lt;/a> per chat di gruppo cifrate MLS con fallback NIP-17. &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a> raggiunge la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a> con liste calendario private e import ICS, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> aggiunge &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amber-v502-fino-a-v504">recovery mnemonico e whitelisting relay auth NIP-42&lt;/a>, e la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#marmot-sposta-i-keypackage-su-event-indirizzabili-e-stringe-le-push-notification">spec Marmot&lt;/a> sposta i KeyPackage su event indirizzabili mentre stringe il formato delle push notification MIP-05.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">Amethyst distribuisce note fissate, gestione relay e Request to Vanish&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha distribuito sei rilasci in tre giorni, dalla &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.0">v1.07.0&lt;/a> alla &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.5">v1.07.5&lt;/a>. Il set di funzionalità principale copre sei superfici di protocollo: note fissate, una schermata feed dedicata ai sondaggi, supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) per richiedere la cancellazione completa degli event dai relay, &lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a> (Relay Management API) dall&amp;rsquo;interno del client, valutazioni &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring) nella schermata informazioni relay, e visualizzazione delle informazioni membri &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests).&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-86/">NIP-86&lt;/a> definisce un&amp;rsquo;interfaccia JSON-RPC per gli operatori relay, permettendo ai client di inviare comandi amministrativi come ban di pubkey, allow di pubkey e lista utenti bannati tramite un&amp;rsquo;API standardizzata. Amethyst ora espone tutto questo direttamente nella sua UI di gestione relay, così gli utenti che eseguono i propri relay possono amministrarli dallo stesso client che usano per pubblicare. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2039">PR #2039&lt;/a> sostituisce il vecchio dialog di input hex per le pubkey da bannare o consentire con un dialog di ricerca utenti interattivo.&lt;/p>
&lt;p>La v1.07.2 ha aggiunto upload dalla tastiera GIF e ha corretto una regressione nella firma in cui le risposte di rifiuto di Amber venivano interpretate male perché le versioni più vecchie di Amber restituivano una stringa vuota per il campo &lt;code>rejected&lt;/code> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2042">PR #2042&lt;/a>). La v1.07.5 corregge un crash nel caricamento delle immagini. I rilasci &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.2">v1.06.2&lt;/a> e &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.3">v1.06.3&lt;/a> all&amp;rsquo;inizio della settimana hanno aggiunto un selettore del tipo di sondaggio per scelte singole o multiple, drag-to-seek sulle barre di avanzamento video e miglioramenti alla pubblicazione anonima.&lt;/p>
&lt;h3 id="nip-5a-viene-unito-portando-i-siti-web-statici-su-nostr">NIP-5A viene unito, portando i siti web statici su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> (Siti Web Statici) è stato unito tramite &lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>, definendo come ospitare siti web statici sotto keypair Nostr. La specifica usa due kind di event: kind &lt;code>15128&lt;/code> per un sito root, uno per pubkey, e kind &lt;code>35128&lt;/code> per siti con nome identificati da un tag &lt;code>d&lt;/code>. Ogni manifesto mappa i percorsi URL agli hash SHA256, con tag &lt;code>server&lt;/code> opzionali che puntano agli host di storage &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> dove vivono i file effettivi.&lt;/p>
&lt;p>Il modello di hosting funziona così: l&amp;rsquo;autore di un sito costruisce un sito statico, carica i file su uno o più server Blossom, poi pubblica un event manifesto firmato che mappa i percorsi agli hash del contenuto. Un server host riceve richieste web, risolve la pubkey dell&amp;rsquo;autore dal sottodominio, recupera il manifesto dalla relay list &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> dell&amp;rsquo;autore, e serve i file scaricando i blob corrispondenti da Blossom. Il sito rimane sotto il controllo dell&amp;rsquo;autore perché solo quella chiave può firmare un manifesto aggiornato. Il server host è sostituibile perché qualsiasi server che comprende NIP-5A può servire lo stesso sito dallo stesso manifesto.&lt;/p>
&lt;p>La specifica si basa su infrastrutture già esistenti. &lt;a href="https://github.com/lez/nsite">nsite&lt;/a>, l&amp;rsquo;implementazione host di riferimento NIP-5A costruita da lez, e &lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>, la UI di gestione di hzrd149, erano già in esecuzione prima del merge del NIP. Il merge rende ufficiali i kind di event e le regole di risoluzione URL, dando alle seconde e terze implementazioni un obiettivo stabile.&lt;/p>
&lt;h3 id="white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">White Noise corregge il relay churn e amplia i controlli client&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, il messenger privato costruito sul protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha distribuito la &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.3.23">v2026.3.23&lt;/a> il 25 marzo. Il lavoro principale riguarda la stabilità dei relay. Il login non aspetta più che ogni pubblicazione della relay-list termini prima di proseguire, perché la pubblicazione delle relay-list ora usa logica di quorum e ritenta il resto in background. Fetch e publish one-off usano sessioni relay effimere e delimitate invece di restare nel pool long-lived, le sessioni ripristinate recuperano il loro percorso di refresh di gruppo dopo l&amp;rsquo;avvio, e l&amp;rsquo;app ora espone diagnostica relay e ispezione dello stato relay tramite &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/495">PR #495&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/502">PR #502&lt;/a>.&lt;/p>
&lt;p>Lo stesso rilascio cambia anche il comportamento delle conversazioni. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/468">PR #468&lt;/a> aggiunge threading delle risposte NIP-C7 con tag &lt;code>q&lt;/code> e riferimenti &lt;code>nostr:nevent&lt;/code>, la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/471">PR #471&lt;/a> e la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/512">PR #512&lt;/a> mantengono i messaggi cancellati visibili come placeholder cancellati invece di rimuoverli silenziosamente, la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/478">PR #478&lt;/a> aggiunge un flusso di bug report in-app usando report anonimi &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), e la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/486">PR #486&lt;/a> aggiunge una chat di supporto direttamente nel client. Nella stessa finestra sono arrivati anche controlli sui messaggi rivolti all&amp;rsquo;utente: la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/532">PR #532&lt;/a> archivia le chat, la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/541">PR #541&lt;/a> aggiunge mute e unmute con durate configurabili, e la &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/535">PR #535&lt;/a> aggiunge impostazioni delle notifiche. La &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/539">PR #539&lt;/a> prepara il lavoro di registrazione push, collegando la registrazione APNs su iOS e il rilevamento Play Services su Android in modo che la registrazione possa essere costruita sopra questo. Sul lato backend, il &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> (Marmot Development Kit) ha aggiunto primitive push notification MIP-05 e un notification request builder (&lt;a href="https://github.com/marmot-protocol/mdk/pull/235">PR #235&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/238">PR #238&lt;/a>), mentre &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> ha aggiunto la persistenza della registrazione push notification (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/688">PR #688&lt;/a>), correzioni alla cancellazione dei task in background (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/696">PR #696&lt;/a>), e recovery dei key package all&amp;rsquo;avvio (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/693">PR #693&lt;/a>).&lt;/p>
&lt;h3 id="nostr-vpn-raggiunge-la-v030-con-roster-sync-e-invite-v2">Nostr VPN raggiunge la v0.3.0 con roster sync e invite v2&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">Come da copertura del lancio della settimana scorsa&lt;/a>, &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>, la VPN peer-to-peer che usa relay Nostr per la segnalazione e WireGuard per tunnel cifrati, ha continuato il suo ritmo di rilascio rapido, distribuendo versioni fino alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.3">v0.3.3&lt;/a>. Il salto di versione porta due cambi incompatibili: il formato invite passa alla v2 (la 0.3.0 può ancora importare invite v1, ma le build più vecchie non possono importare invite v2), e il roster sync firmato dall&amp;rsquo;admin è stato aggiunto al protocollo di segnalazione. I peer con versioni miste possono ancora connettersi a livello mesh, ma i peer più vecchi non partecipano alla sincronizzazione del roster.&lt;/p>
&lt;p>L&amp;rsquo;aggiunta del roster sync avvia il passaggio verso una rete gestita. Un nodo admin può ora inviare cambiamenti di appartenenza a tutti i peer, così aggiungere o rimuovere un dispositivo dalla mesh non richiede che ogni peer aggiorni manualmente la propria configurazione. I rilasci v0.2.x nella stessa settimana hanno affrontato problemi specifici di deployment: dalla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.22">v0.2.22&lt;/a> alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.28">v0.2.28&lt;/a> hanno corretto la gestione del servizio Windows, aggiunto script di build Android, e perfezionato il flusso di pairing LAN.&lt;/p>
&lt;h3 id="nospeak-si-lancia-come-messenger-privato-10">nospeak si lancia come messenger privato 1.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>, un messenger privato costruito su Nostr, ha distribuito il rilascio &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.0.0">1.0.0&lt;/a> il 27 marzo. Il progetto include conversazioni uno-a-uno e di gruppo, gestione contatti, e un&amp;rsquo;architettura self-hostable. Le chat uno-a-uno usano &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), che combina &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) per nascondere il mittente ai relay. Per i media, i file sono cifrati lato client con AES-256-GCM prima dell&amp;rsquo;upload sui server Blossom. Il rilascio viene distribuito anche come immagine container per il self-hosting.&lt;/p>
&lt;h3 id="flotilla-v170-aggiunge-stanze-vocali-e-login-email">Flotilla v1.7.0 aggiunge stanze vocali e login email&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, il client in stile Discord di hodlbod basato su &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (Relay-based Groups) e sul modello “relay come gruppi”, ha distribuito la &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.0">v1.7.0&lt;/a> e la &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.1">v1.7.1&lt;/a> il 30 e 31 marzo. La funzionalità principale sono le stanze vocali, contribuite da mplorentz. Gli utenti possono ora unirsi a chiamate vocali all&amp;rsquo;interno dei canali di gruppo, con un dialog di ingresso (&lt;a href="https://gitea.coracle.social/coracle/flotilla/pulls/109">PR #109&lt;/a>) che permette di selezionare il dispositivo di input audio e scegliere se entrare nella chiamata vocale o solo visualizzare la chat testuale. Il dialog risolve un problema UX della precedente iterazione: entrare in una stanza con voce attiva accendeva prima il microfono anche quando l&amp;rsquo;utente voleva solo leggere i messaggi o controllare le impostazioni della stanza.&lt;/p>
&lt;p>Lo stesso rilascio aggiunge il login email e password come alternativa all&amp;rsquo;autenticazione basata su chiave Nostr, proof-of-work sui DM, editing dei DM, onboarding e impostazioni relay ridisegnati, rilevamento del supporto Blossom tramite &lt;code>supported_nips&lt;/code>, badge notifiche migliorati, fallback push notification su Android, e correzioni agli upload file su Android. La v1.7.1 segue con una correzione per il fallback di registrazione pomade quando si usa un signer offline.&lt;/p>
&lt;p>Hodlbod sta anche costruendo &lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>, un hosting manager e dashboard per relay zooid, che ha registrato 40 commit questa settimana nella fase iniziale di sviluppo.&lt;/p>
&lt;h3 id="nymchat-distribuisce-chat-di-gruppo-basate-su-marmot">Nymchat distribuisce chat di gruppo basate su Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> (noto anche come NYM, Nostr Ynstant Messenger), il client di chat effimero collegato a Bitchat, ha annunciato che tutte le nuove chat di gruppo ora usano il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per messaggistica cifrata MLS. L&amp;rsquo;integrazione usa kind &lt;code>443&lt;/code>, &lt;code>444&lt;/code>, e &lt;code>445&lt;/code> per key package, welcome message e group message rispettivamente, fornendo forward secrecy, post-compromise security e zero metadata leakage. Se un destinatario non può usare MLS, Nymchat ricade sul suo precedente percorso di chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), che è comunque cifrato end-to-end ma privo delle proprietà a ratchet-tree di MLS.&lt;/p>
&lt;p>Le serie v3.55 e v3.56 di questa settimana si sono concentrate sui casi limite delle chat di gruppo: caricamento su nuovi dispositivi, comportamento di uscita, instradamento delle notifiche, e conteggi dei badge non letti. Lo stesso ciclo ha anche corretto una vulnerabilità XSS dovuta a HTML non escapato e ha aggiunto il blocco di parole chiave e frasi esteso ai nickname utente. Questo rende Nymchat un altro client Marmot che si unisce a &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">White Noise&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#openchat-v024-fino-a-v030">OpenChat&lt;/a>, ampliando l&amp;rsquo;insieme di app che possono scambiare messaggi di gruppo cifrati MLS sullo stesso protocollo.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="calendar-by-form-v100">Calendar by Form* v1.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>, l&amp;rsquo;app calendario decentralizzata costruita su &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), ha raggiunto la &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.0.0">v1.0.0&lt;/a> il 29 marzo. Il rilascio aggiunge liste calendario private usando event Nostr cifrati (kind &lt;code>32123&lt;/code>) con auto-cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), così gli utenti possono organizzare gli eventi in collezioni private senza esporre il raggruppamento ai relay. Lo stesso rilascio aggiunge la gestione degli intent ICS per importare dati calendario da altre applicazioni e richieste di invito per condividere eventi tra utenti.&lt;/p>
&lt;h3 id="amber-v502-fino-a-v504">Amber v5.0.2 fino a v5.0.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), ha distribuito tre point release: &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.2">v5.0.2&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.3">v5.0.3&lt;/a>, e &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.4">v5.0.4&lt;/a>. L&amp;rsquo;aggiunta più visibile è il login tramite frase mnemonica di recovery (&lt;a href="https://github.com/greenart7c3/Amber/pull/358">PR #358&lt;/a>), che permette agli utenti di ripristinare il proprio signer da una seed phrase BIP39 invece di richiedere la stringa nsec o ncryptsec grezza. La &lt;a href="https://github.com/greenart7c3/Amber/pull/357">PR #357&lt;/a> aggiunge una whitelist relay auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, così gli utenti possono limitare quali relay sono autorizzati a richiedere l&amp;rsquo;autenticazione client. La &lt;a href="https://github.com/greenart7c3/Amber/pull/353">PR #353&lt;/a> aggiunge la selezione dell’ambito di cifratura per i permessi di decrypt, permettendo agli utenti di concedere accesso di decrypt solo NIP-04 o solo NIP-44 invece di un permesso generale. La v5.0.4 corregge un bug in cui il rifiuto non rispettava i permessi scoped di encrypt e decrypt e migliora le prestazioni quando arrivano più richieste bunker.&lt;/p>
&lt;h3 id="aegis-v040">Aegis v0.4.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>, il signer cross-platform, ha distribuito la &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.4.0">v0.4.0&lt;/a> il 26 marzo. Il rilascio aggiunge le modalità di autorizzazione Full e Selective nelle Impostazioni e corregge diversi problemi di scansione QR. I commit successivi &lt;a href="https://github.com/ZharlieW/Aegis/commit/d4f799fe51dd82968d54f72ac77f2de29d0cfe6b">d4f799f&lt;/a>, &lt;a href="https://github.com/ZharlieW/Aegis/commit/3313af92e55e449ebc98fbd91a085bd444d716e7">3313af9&lt;/a>, &lt;a href="https://github.com/ZharlieW/Aegis/commit/3b214e4176f5dbe7f18690d0996e69dd151fe00f">3b214e4&lt;/a>, e &lt;a href="https://github.com/ZharlieW/Aegis/commit/e4f40b6f1f48c2dae1bb5e4246df26c26dba419e">e4f40b6&lt;/a> continuano lo stesso lavoro con controlli batch select, statistiche riutilizzabili sulle selezioni batch, API set-all-groups selection, e statistiche di utilizzo per permesso nella pagina dei permessi dell&amp;rsquo;app.&lt;/p>
&lt;h3 id="schemata-v027-fino-a-v030">Schemata v0.2.7 fino a v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/schemata">Schemata&lt;/a>, le definizioni JSON Schema per la validazione dei kind di event Nostr, ha distribuito quattro rilasci dalla &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.7">v0.2.7&lt;/a> alla &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.3.0">v0.3.0&lt;/a> con 21 PR unite. Il rilascio v0.3.0 porta correzioni di coerenza dei pattern per URL relay, ID hex, tipi MIME, e stringhe BOLT-11 (&lt;a href="https://github.com/nostrability/schemata/pull/126">PR #126&lt;/a>), centralizzazione dei pattern URL relay (&lt;a href="https://github.com/nostrability/schemata/pull/117">PR #117&lt;/a>), schemi del tipo base bech32 &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (&lt;a href="https://github.com/nostrability/schemata/pull/118">PR #118&lt;/a>), e validazione per gli event spell kind 777 (&lt;a href="https://github.com/nostrability/schemata/pull/125">PR #125&lt;/a>). La pipeline di rilascio ora pubblica una nota kind &lt;code>1&lt;/code> su Nostr per ogni rilascio (&lt;a href="https://github.com/nostrability/schemata/pull/120">PR #120&lt;/a>), così il progetto si annuncia attraverso il protocollo che valida. Schemata ora supporta una dozzina di linguaggi oltre al pacchetto canonico JS/TS: Rust, Go, Python, Kotlin, Java, Swift, Dart, PHP, C#/.NET, C++, Ruby, e C.&lt;/p>
&lt;p>Accanto a Schemata, il team ha pubblicato &lt;a href="https://github.com/nostrability/schemata-codegen">schemata-codegen&lt;/a>, un generatore di codice sperimentale che affronta lo stesso problema di validazione con un approccio diverso. Dove i pacchetti validator di Schemata richiedono una dipendenza runtime da JSON Schema, schemata-codegen converte gli schemi direttamente in costrutti tipizzati nativi del linguaggio (tuple tipizzate per tag, interfacce kind, e validator runtime), rimuovendo la necessità di una libreria validator a runtime. Il documento &lt;a href="https://github.com/nostrability/schemata-codegen/blob/main/CODEGEN-VS-VALIDATORS.md">codegen-vs-validators comparison&lt;/a> spiega quando ciascun approccio è adatto.&lt;/p>
&lt;h3 id="bigbrotr-v650-fino-a-v654">BigBrotr v6.5.0 fino a v6.5.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>, la piattaforma di analisi relay, ha distribuito cinque rilasci dalla &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.0">v6.5.0&lt;/a> alla &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.4">v6.5.4&lt;/a>. La v6.5.0 centralizza la validazione degli URL relay con una factory function &lt;code>parse_relay_url()&lt;/code> e aggiunge controlli sulla lunghezza URL e sanitizzazione dei path. Anche l&amp;rsquo;infrastruttura di monitoraggio ha ricevuto correzioni: gli event di annuncio ora includono tag di geolocalizzazione geohash (seguendo &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>), ed è stata aggiunta protezione timeout ai test di metadati Geo/Net &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> che non avevano scadenza e potevano bloccarsi indefinitamente. La &lt;a href="https://github.com/BigBrotr/bigbrotr/pull/410">PR #410&lt;/a> aggiorna PostgreSQL dalla 16 alla 18, portando il sottosistema async I/O e un throughput WAL migliorato alla pipeline di analisi relay.&lt;/p>
&lt;h3 id="il-relay-vertex-lab-aggiunge-la-ricerca-profili-nip-50">Il relay Vertex Lab aggiunge la ricerca profili NIP-50&lt;/h3>
&lt;p>&lt;a href="https://vertexlab.io">Vertex Lab&lt;/a>, il team dietro &lt;a href="https://github.com/vertex-lab/npub.world">npub.world&lt;/a> e il motore Web of Trust &lt;a href="https://vertexlab.io/docs">Vertex&lt;/a>, ha annunciato che &lt;code>wss://relay.vertexlab.io&lt;/code> ora supporta &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> (Search) per le query sui profili. NIP-50 estende il filtro standard &lt;code>REQ&lt;/code> di Nostr con un campo &lt;code>search&lt;/code>, permettendo ai client di inviare query full-text ai relay che supportano l&amp;rsquo;indicizzazione. Aggiungere la ricerca profili a un relay che serve già dati Web of Trust significa che i client connessi a &lt;code>relay.vertexlab.io&lt;/code> possono scoprire utenti per nome o descrizione senza un servizio di ricerca separato.&lt;/p>
&lt;h3 id="hashtree-v0217-e-v0218-distribuiscono-mesh-webrtc-e-iris-desktop">Hashtree v0.2.17 e v0.2.18 distribuiscono mesh WebRTC e Iris Desktop&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/hashtree">Hashtree&lt;/a>, il sistema di storage blob content-addressed di mmalmi che pubblica radici Merkle su Nostr, ha distribuito la &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.17">v0.2.17&lt;/a> e la &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.18">v0.2.18&lt;/a> il 31 marzo. I due rilasci chiudono uno sprint di 30 commit che aggiunge tre capacità distinte. Primo, il crate &lt;code>hashtree-webrtc&lt;/code> (rinominato &lt;code>hashtree-network&lt;/code> nella v0.2.18) aggiunge distribuzione blob peer-to-peer basata su WebRTC con segnalazione mesh unificata attraverso la CLI Rust, l&amp;rsquo;harness di simulazione, e il client TypeScript. Secondo, la pipeline di rilascio ora costruisce artefatti Windows (zip CLI e installer Iris), portando copertura cross-platform su macOS, Linux e Windows. Terzo, entrambi i rilasci includono Iris Desktop 0.1.0, il client social Nostr di mmalmi, come asset AppImage, .deb e installer Windows accanto alla CLI hashtree. &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/">Hashtree è stato trattato per la prima volta nella Newsletter #10&lt;/a> quando è stato lanciato come store compatibile &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> basato su filesystem. Il livello WebRTC è il primo passo verso una distribuzione dei contenuti peer-to-peer senza dipendere da server Blossom centralizzati.&lt;/p>
&lt;h3 id="nostr-mail-client-v070-fino-a-v072">Nostr Mail Client v0.7.0 fino a v0.7.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client">Nostr Mail Client&lt;/a>, il client in stile email Flutter costruito su identità Nostr, ha distribuito la &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.0">v0.7.0&lt;/a>, la &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.1">v0.7.1&lt;/a>, e la &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.2">v0.7.2&lt;/a> in tre giorni. Il lavoro di prodotto più visibile si è concentrato su onboarding (&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/9">PR #9&lt;/a>) e modifica profilo (&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/10">PR #10&lt;/a>), elementi di base per qualsiasi client che cerca di presentare Nostr come una casella di posta. Le point release successive hanno impacchettato quel lavoro in nuove build Android e Linux.&lt;/p>
&lt;h3 id="wisp-v0140-fino-a-v0161">Wisp v0.14.0 fino a v0.16.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, il client Nostr Android, ha distribuito altri 13 rilasci dalla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.14.0-beta">v0.14.0-beta&lt;/a> alla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a>. Il lavoro di questa settimana include correzioni al JSON rumor NIP-17 (&lt;a href="https://github.com/barrydeen/wisp/pull/385">PR #385&lt;/a>), badge repost sulle gallery card (&lt;a href="https://github.com/barrydeen/wisp/pull/383">PR #383&lt;/a>), dettagli delle reazioni espandibili (&lt;a href="https://github.com/barrydeen/wisp/pull/382">PR #382&lt;/a>), set emoji persistenti (&lt;a href="https://github.com/barrydeen/wisp/pull/381">PR #381&lt;/a>), e controlli di autoplay video (&lt;a href="https://github.com/barrydeen/wisp/pull/380">PR #380&lt;/a>). L&amp;rsquo;ultima &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a> corregge anche shortcode emoji personalizzate con trattini e tag emoji mancanti.&lt;/p>
&lt;h3 id="primal-android-3017">Primal Android 3.0.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha distribuito la &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.17">3.0.17&lt;/a> il 24 marzo. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1000">PR #1000&lt;/a> mappa i tipi WalletException in codici errore nelle risposte NWC, dando ai client &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> informazioni di errore strutturate invece di errori generici. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/995">PR #995&lt;/a> corregge i voti zap dei sondaggi che apparivano come Top Zaps, e la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/998">PR #998&lt;/a> nasconde il saldo wallet e i pulsanti di azione quando non è configurato alcun wallet.&lt;/p>
&lt;h3 id="openchat-v024-fino-a-v030">OpenChat v0.2.4 fino a v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, il client chat basato su Avalonia costruito sullo stack &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha distribuito sei rilasci dalla &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.2.4">v0.2.4&lt;/a> alla &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.3.0">v0.3.0&lt;/a> in quattro giorni. Il log dei commit racconta la storia di un client che colma il divario tra “Marmot funziona” e “qualcuno può davvero usarlo ogni giorno”. È arrivata l&amp;rsquo;autenticazione relay &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, seguita da una UI relay picker con filtraggio degli event duplicati. I messaggi vocali hanno ottenuto pausa, ripresa, seek e visualizzazione del tempo. Il percorso signer è stato rafforzato: le connessioni Amber sono state corrette con un formato URI &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> aggiornato, il WebSocket si riconnette automaticamente prima di inviare le richieste, e le richieste Amber duplicate ora vengono intercettate controllando le risposte riprodotte. Sul lato storage, Linux e macOS hanno ottenuto secure storage AES-256-GCM con chiavi salvate su file, e il recupero dei metadata utente ora usa la discovery relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e mette in cache i risultati in un database locale.&lt;/p>
&lt;h3 id="igloo-signer-11">Igloo Signer 1.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/FROSTR-ORG/igloo-ios-prototype">Igloo&lt;/a>, il signer threshold &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> per iOS del progetto FROSTR, ha distribuito la &lt;a href="https://github.com/FROSTR-ORG/igloo-ios-prototype/releases/tag/v1.1">v1.1&lt;/a> il 28 marzo. Le firme FROST (Flexible Round-Optimized Schnorr Threshold) permettono a un gruppo di signer di controllare collettivamente un keypair Nostr, dove qualsiasi insieme t-of-n di partecipanti può firmare un event senza che nessuna singola parte possieda la chiave privata completa. Igloo è una delle prime implementazioni mobili di questo approccio per Nostr.&lt;/p>
&lt;h3 id="nak-v0193-e-v0194">nak v0.19.3 e v0.19.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il toolkit Nostr a riga di comando di fiatjaf, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.3">v0.19.3&lt;/a> e la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.4">v0.19.4&lt;/a> il 26 e 30 marzo. Entrambi i rilasci correggono condizioni di panic: la &lt;a href="https://github.com/fiatjaf/nak/pull/118">PR #118&lt;/a> sostituisce &lt;code>strings.Split&lt;/code> con &lt;code>strings.Cut&lt;/code> per prevenire un potenziale accesso out-of-bounds, e la &lt;a href="https://github.com/fiatjaf/nak/pull/119">PR #119&lt;/a> previene la stessa classe di panic nel parsing dei flag curl.&lt;/p>
&lt;h3 id="flora-v030">Flora v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/shawnyeager/flora-extension">Flora&lt;/a>, un&amp;rsquo;estensione Chrome per screen recording e condivisione decentralizzati su Nostr, ha distribuito la &lt;a href="https://github.com/shawnyeager/flora-extension/releases/tag/v0.3.0">v0.3.0&lt;/a>. Il rilascio aggiunge condivisione video privata cifrata con modalità pubblica, non in elenco e privata. Le registrazioni private sono cifrate con AES-256-GCM e consegnate ai destinatari tramite &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), così la registrazione non tocca mai un server in chiaro.&lt;/p>
&lt;h3 id="yakihonne-mobile-203">YakiHonne Mobile 2.0.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/YakiHonne/mobile-app">YakiHonne&lt;/a>, il client mobile Nostr, ha distribuito la &lt;a href="https://github.com/YakiHonne/mobile-app/releases/tag/YakiHonne-2.0.3">2.0.3&lt;/a> con recensioni relay e join request, risposte nidificate ampliate, traduzione automatica delle note, e supporto multi-relay NWC.&lt;/p>
&lt;h2 id="aggiornamenti-progetti">Aggiornamenti Progetti&lt;/h2>
&lt;h3 id="zap-cooking-aggiunge-zap-poll-e-verifica-dei-pagamenti-branta">Zap Cooking aggiunge zap poll e verifica dei pagamenti Branta&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, la piattaforma di ricette e contenuti, ha unito 11 PR questa settimana focalizzate su contenuti interattivi e flussi di pagamento. La &lt;a href="https://github.com/zapcooking/frontend/pull/277">PR #277&lt;/a> aggiunge gli zap poll (kind 6969), in cui gli utenti votano inviando sats e possono vedere le liste dei votanti con foto profilo. La &lt;a href="https://github.com/zapcooking/frontend/pull/274">PR #274&lt;/a> ridisegna la UX dei sondaggi in modo che l&amp;rsquo;interfaccia di voto si integri più naturalmente nel feed.&lt;/p>
&lt;p>La &lt;a href="https://github.com/zapcooking/frontend/pull/276">PR #276&lt;/a> aggiunge scansione QR tramite fotocamera al flusso Send Payment e integra &lt;a href="https://branta.pro/">Branta&lt;/a>, un servizio di verifica che controlla se una destinazione di pagamento è legittima prima dell&amp;rsquo;invio. Branta verifica le destinazioni di pagamento contro phishing, address swap e intercettazioni man-in-the-middle prima dell&amp;rsquo;invio. Nell&amp;rsquo;implementazione di Zap Cooking, un nome piattaforma e logo verificati da Branta appaiono direttamente nel flusso di pagamento, e i QR code abilitati a Branta possono trasportare parametri &lt;code>branta_id&lt;/code> e &lt;code>branta_secret&lt;/code> così il wallet può verificare la destinazione direttamente dal codice scansionato.&lt;/p>
&lt;h3 id="divine-prepara-le-basi-per-una-ricerca-unificata-e-rafforza-la-consegna-video">diVine prepara le basi per una ricerca unificata e rafforza la consegna video&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client di video brevi, ha passato la settimana a stringere ricerca, navigazione del feed, recovery della riproduzione, e comportamento di upload. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2540">PR #2540&lt;/a> getta le basi per una schermata di ricerca unificata, con sezioni raggruppate per Video, Persone, e Tag. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2623">PR #2623&lt;/a> rafforza la paginazione su feed profilo, inbox, notifiche, liste discover, classic vines, ricerca, e feed a griglia componibili spostandoli su un controller di paginazione condiviso.&lt;/p>
&lt;p>Anche la consegna video ha ricevuto diverse correzioni concrete. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2643">PR #2643&lt;/a> ritenta in ordine le sorgenti derivate ospitate da Divine e ricade sul blob grezzo prima di mostrare un errore di riproduzione, così fallimenti transitori su una sorgente non uccidono subito la riproduzione. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2634">PR #2634&lt;/a> mantiene gli upload resumable sul percorso gestito da Divine quando il capability probing fallisce temporaneamente, riducendo gli upload rotti causati da brevi guasti di rete. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2637">PR #2637&lt;/a> cambia anche il filtro dei contenuti sensibili in modo che i video siano bloccati rigidamente solo per etichette di avviso reali, non semplicemente per content warning impostati dal creatore.&lt;/p>
&lt;h3 id="shopstr-aggiunge-storefront-personalizzati-e-milk-market-continua-a-distribuire-lavoro-di-marketplace">Shopstr aggiunge storefront personalizzati e Milk Market continua a distribuire lavoro di marketplace&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, il marketplace basato su Nostr, ha unito la &lt;a href="https://github.com/shopstr-eng/shopstr/pull/245">PR #245&lt;/a> aggiungendo storefront personalizzati. Questo dà ai venditori una superficie home più distintiva invece di costringere ogni annuncio nella stessa presentazione generica.&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, un marketplace dedicato al latte, ha continuato con ottimizzazioni degli storefront (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/18">PR #18&lt;/a>), account recovery (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/17">PR #17&lt;/a>), beef splits (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/15">PR #15&lt;/a>), e correzioni ai tipi degli strumenti MCP (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/16">PR #16&lt;/a>).&lt;/p>
&lt;h3 id="notedeck-aggiunge-effetti-sonori-e-estende-il-suo-percorso-updater-verso-android">Notedeck aggiunge effetti sonori e estende il suo percorso updater verso Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop del team Damus, ha unito la &lt;a href="https://github.com/damus-io/notedeck/pull/1412">PR #1412&lt;/a> aggiungendo un sottosistema di effetti sonori con suoni di interazione UI usando rodio, e la &lt;a href="https://github.com/damus-io/notedeck/pull/1399">PR #1399&lt;/a> con aggiornamenti Agentium inclusi un flag CLI per il titolo e cartelle di sessione comprimibili. Una &lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a> aperta propone l&amp;rsquo;auto-aggiornamento APK via Nostr/Zapstore su Android, costruendo sul &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/#notedeck-sposta-la-scoperta-dei-rilasci-su-nostr">lavoro updater nativo Nostr di Notedeck dalla Newsletter #14&lt;/a>.&lt;/p>
&lt;h3 id="nostria-aggiunge-relay-hint-per-i-repost-e-allineamento-nip-98">Nostria aggiunge relay hint per i repost e allineamento NIP-98&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ha unito la &lt;a href="https://github.com/nostria-app/nostria/pull/583">PR #583&lt;/a> aggiungendo relay hint &lt;a href="https://nostrcompass.org/it/topics/nip-18/">NIP-18&lt;/a> (Reposts) ai tag &lt;code>e&lt;/code> dei repost per gli event kind 6 e kind 16, la &lt;a href="https://github.com/nostria-app/nostria/pull/582">PR #582&lt;/a> allineando l&amp;rsquo;HTTP auth Brainstorm (kind 27235) ai tag richiesti da &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> (HTTP Auth), e la &lt;a href="https://github.com/nostria-app/nostria/pull/576">PR #576&lt;/a> aggiungendo test di validazione degli schemi Schemata. Il cambiamento NIP-98 significa che Nostria può autenticarsi verso servizi esterni usando lo stesso formato HTTP auth che usano gli altri client.&lt;/p>
&lt;h3 id="nostr-doc-aggiunge-packaging-desktop-e-lavoro-offline-first">Nostr-Doc aggiunge packaging desktop e lavoro offline-first&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-docs">Nostr-Doc&lt;/a>, l&amp;rsquo;editor collaborativo di Form*, ha avuto una settimana intensa di packaging e lavoro sull&amp;rsquo;editor. Il &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/fcdc00a564c8d76f094c586b06efce07592a60e4">commit fcdc00a&lt;/a> aggiunge un&amp;rsquo;app desktop, il &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/3977a8eb2e62b84a67de756c2776e14de8470927">commit 3977a8e&lt;/a> avvia il lavoro sull&amp;rsquo;app nativa, e il &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/413a030f5b47fb8e32a5dff81bcef557ad9b5869">commit 413a030&lt;/a> spinge l&amp;rsquo;app verso un comportamento offline-first. Sul lato editor, il &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/1855ce86ee83ad504e14e47d9c339baffb114786">commit 1855ce8&lt;/a> aggiunge salvataggio Ctrl+S, avvisi di salvataggio, correzioni alle anteprime link, e rendering corretto del barrato.&lt;/p>
&lt;h3 id="rust-nostr-ottimizza-il-parsing-nip-21-e-aggiunge-supporto-nip-62-lato-relay">rust-nostr ottimizza il parsing NIP-21 e aggiunge supporto NIP-62 lato relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ha unito otto PR. La più notevole è la &lt;a href="https://github.com/rust-nostr/nostr/pull/1308">PR #1308&lt;/a>, che ottimizza il parsing degli URI &lt;a href="https://github.com/nostr-protocol/nips/blob/master/21.md">NIP-21&lt;/a> in &lt;code>PublicKey::parse&lt;/code> allineandolo alle prestazioni standard del parsing bech32. In precedenza, gli URI NIP-21 richiedevano circa il doppio del tempo per essere analizzati rispetto alle chiavi bech32 grezze. Il progetto ha anche quattro PR aperte che aggiungono supporto specifico relay a &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) nei backend memory, LMDB, SQLite, e database test (&lt;a href="https://github.com/rust-nostr/nostr/pull/1315">PR #1315&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1316">PR #1316&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1317">PR #1317&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1318">PR #1318&lt;/a>).&lt;/p>
&lt;h3 id="nostr-tools-aggiunge-controllo-relay-bunker-e-corregge-il-parsing-multi-relay-nip-47">nostr-tools aggiunge controllo relay bunker e corregge il parsing multi-relay NIP-47&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> ha unito la &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/530">PR #530&lt;/a> aggiungendo &lt;code>skipSwitchRelays&lt;/code> ai BunkerSignerParams per la gestione manuale dei relay, e la &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/529">PR #529&lt;/a> correggendo il parsing delle stringhe di connessione &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) per supportare più relay come consente la specifica.&lt;/p>
&lt;h3 id="nostrability-integra-i-dati-di-audit-sherlock-e-pubblica-una-panoramica-di-schemata">Nostrability integra i dati di audit Sherlock e pubblica una panoramica di Schemata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/nostrability">Nostrability&lt;/a>, l&amp;rsquo;interoperability tracker per i client Nostr, ha unito 14 PR. La &lt;a href="https://github.com/nostrability/nostrability/pull/306">PR #306&lt;/a> integra le statistiche delle scansioni Sherlock nella dashboard. Sherlock è lo strumento di audit automatizzato di Nostrability che si connette ai client Nostr, cattura gli event che pubblicano, e valida ogni event rispetto alle definizioni JSON Schema di Schemata per rilevare violazioni della specifica. La dashboard ora mostra i tassi di fallimento degli schemi per client (&lt;a href="https://github.com/nostrability/nostrability/pull/315">PR #315&lt;/a>) così gli sviluppatori possono vedere quali kind di event il proprio client sbaglia. La &lt;a href="https://github.com/nostrability/nostrability/pull/323">PR #323&lt;/a> rivede il workflow di pubblicazione Nostr in modo che gli annunci di rilascio girino come job separato che non può essere cancellato da step CI precedenti.&lt;/p>
&lt;p>elsat ha anche pubblicato &lt;a href="https://njump.me/naddr1qvzqqqr4gupzq96n3hp2vfmf6z2y8uvvxl97xk86kkalnqghx4p25lzl79c76a7yqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcqz4fnx4rkw3x57nrcwdn8zt22xd982jehfptsgqtrww">Schemata for nostr devs&lt;/a> il 30 marzo, descrivendo come schemata, schemata-codegen e Sherlock si incastrano e dando i numeri attuali di copertura: 179 schemi di kind event su 65 NIP, 154 schemi di tag, 13 messaggi di protocollo, e 310 event di esempio.&lt;/p>
&lt;h3 id="nalgorithm-aggiunge-generazione-digest-e-caching-locale-del-punteggio">Nalgorithm aggiunge generazione digest e caching locale del punteggio&lt;/h3>
&lt;p>&lt;a href="https://github.com/jooray/nalgorithm">Nalgorithm&lt;/a>, un nuovo progetto feed Nostr ordinato per rilevanza, ha avviato lo sviluppo pubblico questa settimana. Il &lt;a href="https://github.com/jooray/nalgorithm/commit/cf6c501e754ef95a1b4fecc1a76288471a101f43">commit cf6c501&lt;/a> imposta l&amp;rsquo;app web iniziale che recupera i post dai follow e li valuta rispetto a un prompt di preferenze definito dall&amp;rsquo;utente. Il &lt;a href="https://github.com/jooray/nalgorithm/commit/8e931b6ae85d470e73603752134ff49b7ba4bb86">commit 8e931b6&lt;/a> aggiunge uno strumento CLI digest che trasforma i post più rilevanti in un riepilogo parlato, mentre il &lt;a href="https://github.com/jooray/nalgorithm/commit/4cb9c635489a9a3429e8d71f3861dc2a11624153">commit 4cb9c63&lt;/a> aggiunge caching del punteggio basato su file e evoluzione incrementale del prompt appreso a partire dai like recenti. Il &lt;a href="https://github.com/jooray/nalgorithm/commit/c2edfb8b89fadbe0028c3f5729bda7e23b2e3c03">commit c2edfb8&lt;/a> smette anche di mettere in cache i fallback score da batch falliti, così un fallimento transitorio del punteggio non appiattisce permanentemente il ranking di un post.&lt;/p>
&lt;h3 id="tenex-aggiunge-vector-store-rag-e-startup-mcp-mirato">TENEX aggiunge vector store RAG e startup MCP mirato&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, il framework agenti nativo Nostr che collega agenti AI ai canali Nostr via Telegram, ha unito sette PR questa settimana. La &lt;a href="https://github.com/tenex-chat/tenex/pull/101">PR #101&lt;/a> aggiunge un&amp;rsquo;astrazione vector store pluggable con backend SQLite-vec, LanceDB, e Qdrant, dando agli agenti retrieval-augmented generation senza vincolarsi a un singolo database vettoriale. La &lt;a href="https://github.com/tenex-chat/tenex/pull/102">PR #102&lt;/a> rende lo startup MCP mirato: vengono avviati solo i server MCP i cui strumenti un agente usa davvero, invece di lanciare tutti i server subito alla prima esecuzione. La &lt;a href="https://github.com/tenex-chat/tenex/pull/100">PR #100&lt;/a> aggiunge uno strumento &lt;code>send_message&lt;/code> così gli agenti con binding ai canali Telegram possono inviare messaggi proattivamente invece di limitarsi a rispondere a quelli in arrivo. La &lt;a href="https://github.com/tenex-chat/tenex/pull/106">PR #106&lt;/a> evita uno spawn di sottoprocesso che attivava una pre-allocazione da 9GB di memoria Bun/JSC leggendo &lt;code>.git/HEAD&lt;/code> direttamente invece di eseguire &lt;code>git branch&lt;/code>.&lt;/p>
&lt;h3 id="dart-ndk-sposta-il-signer-amber-e-aggiunge-alby-go-1-click">Dart NDK sposta il signer Amber e aggiunge Alby Go 1-click&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/ndk">Dart NDK&lt;/a>, il Flutter Nostr development kit, ha distribuito 11 PR unite. La &lt;a href="https://github.com/relaystr/ndk/pull/525">PR #525&lt;/a> sposta il supporto al signer Amber nel pacchetto ndk_flutter, e la &lt;a href="https://github.com/relaystr/ndk/pull/552">PR #552&lt;/a> aggiunge la connessione wallet one-click Alby Go all&amp;rsquo;app di esempio. La &lt;a href="https://github.com/relaystr/ndk/pull/502">PR #502&lt;/a> aggiunge uno script install.sh per la CLI, e la &lt;a href="https://github.com/relaystr/ndk/pull/523">PR #523&lt;/a> rimuove la dipendenza dal verifier Rust a favore della gestione nativa degli asset.&lt;/p>
&lt;h2 id="lavoro-su-protocollo-e-specifica">Lavoro su Protocollo e Specifica&lt;/h2>
&lt;h3 id="marmot-sposta-i-keypackage-su-event-indirizzabili-e-stringe-le-push-notification">Marmot sposta i KeyPackage su event indirizzabili e stringe le push notification&lt;/h3>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot">specifica Marmot&lt;/a> ha unito quattro PR che cambiano il modo in cui il protocollo gestisce il materiale chiave e l&amp;rsquo;appartenenza ai gruppi. La &lt;a href="https://github.com/marmot-protocol/marmot/pull/54">PR #54&lt;/a> migra gli event KeyPackage dal normale &lt;code>kind:443&lt;/code> al &lt;code>kind:30443&lt;/code> indirizzabile con tag &lt;code>d&lt;/code>, eliminando la necessità di cancellazione event &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> durante la rotazione delle chiavi. Gli event indirizzabili si sovrascrivono sul posto, rendendo la rotazione auto-contenuta. La &lt;a href="https://github.com/marmot-protocol/marmot/pull/57">PR #57&lt;/a> permette agli utenti non admin di fare commit di proposte SelfRemove (uscita volontaria dal gruppo), e la &lt;a href="https://github.com/marmot-protocol/marmot/pull/62">PR #62&lt;/a> richiede agli admin di rinunciare allo status di admin prima di usare SelfRemove, impedendo a un admin di sparire mantenendo ancora privilegi elevati.&lt;/p>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot/pull/61">PR #61&lt;/a> stringe il formato delle push notification &lt;a href="https://nostrcompass.org/it/topics/mip-05/">MIP-05&lt;/a>, rendendo espliciti la codifica base64 single-blob, il versioning, il formato wire del token, e l&amp;rsquo;uso delle chiavi x-only. L&amp;rsquo;effetto è una singola rappresentazione wire definita per token blob e chiavi x-only attraverso la specifica, le librerie client, e i backend delle app. L&amp;rsquo;implementazione di questi cambi di specifica è arrivata nello stack White Noise questa settimana ed è coperta nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#white-noise-corregge-il-relay-churn-e-amplia-i-controlli-client">sezione White Noise v2026.3.23 sopra&lt;/a>.&lt;/p>
&lt;h3 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h3>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a>: Siti Web Statici&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>): Definisce gli event manifesto kind &lt;code>15128&lt;/code> (sito root) e kind &lt;code>35128&lt;/code> (sito con nome) per ospitare siti statici sotto keypair Nostr usando lo storage Blossom. Vedi il &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#nip-deep-dive-nip-5a-siti-web-statici">deep dive sotto&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> (Custom Emoji): Permettere i trattini negli shortcode&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2297">PR #2297&lt;/a>): Aggiorna la descrizione degli shortcode per includere i trattini. Gli shortcode con trattini sono stati usati nella pratica fin dall&amp;rsquo;introduzione del NIP, quindi la specifica ora documenta l&amp;rsquo;uso corrente.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-C1: Agent TUI Messages&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2295">PR #2295&lt;/a>): Propone un formato di messaggio strutturato per gli agenti che inviano elementi UI interattivi tramite DM cifrati, inclusi payload tipizzati &lt;code>text&lt;/code>, &lt;code>buttons&lt;/code>, &lt;code>card&lt;/code>, e &lt;code>table&lt;/code>. La bozza mantiene tutto dentro il contenuto JSON degli existing DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>. Non definisce un nuovo kind di event e usa un semplice formato stringa callback per le risposte ai pulsanti.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-95: Hybrid Peer-to-Peer Relay Protocol&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2293">PR #2293&lt;/a>): Propone un modello relay ibrido in cui i relay restano autorevoli ma possono anche coordinare la distribuzione peer-to-peer degli event recenti via WebRTC. La bozza introduce messaggi relay come &lt;code>PEER_REGISTER&lt;/code>, &lt;code>PEER_REQUEST&lt;/code>, e &lt;code>PEER_OFFER&lt;/code>, con client stabili che agiscono da Super Peer e il relay che funge da seed node e fallback.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-B9: Zap Poll Events&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2284">PR #2284&lt;/a>): Riapre la vecchia idea NIP-69 degli zap-poll ora che &lt;a href="https://github.com/nostr-protocol/nips/blob/master/88.md">NIP-88&lt;/a> (Polls) copre i sondaggi gratuiti. La bozza usa definizioni di sondaggi kind &lt;code>6969&lt;/code> e zaps kind &lt;code>9734&lt;/code> come voti, rendendolo un sistema di polling a pagamento con resistenza economica ai Sybil. Completa i sondaggi gratuiti one-key-one-vote.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-AD: Super Zap&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2289">PR #2289&lt;/a>): Propone una convenzione in cui gli zap inviati alla pubkey di un relay o a quella di un client vengono mostrati come note promozionali specializzate, trasformando di fatto le zap receipt in una superficie pubblicitaria. Gli operatori relay e i client pubblicherebbero profili con &lt;code>lud16&lt;/code>, recupererebbero quelle receipt, estrarrebbero il contenuto incorporato dalle descrizioni zap, e potrebbero opzionalmente impostare soglie minime in sats per sopprimere lo spam.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: Agent Reputation Attestations&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2285">PR #2285&lt;/a>): Propone kind &lt;code>30085&lt;/code> come event sostituibile parametrizzato per attestazioni strutturate di reputazione sugli agenti Nostr. La bozza evita un singolo punteggio globale rendendo la reputazione dipendente dall&amp;rsquo;osservatore, aggiunge decadimento temporale così le attestazioni vecchie perdono peso, supporta rating negativi con requisiti di evidenza, e abbozza sia punteggio ponderato semplice sia punteggio di diversità del grafo per migliore resistenza Sybil.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: Paid API Service Announcements&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2291">PR #2291&lt;/a>): Propone event indirizzabili kind &lt;code>31402&lt;/code> per pubblicizzare API HTTP a pagamento, con Nostr che gestisce discovery e pagamento tramite HTTP 402. La bozza è tags-first così i relay possono filtrare su metodi di pagamento, prezzi e capacità senza fare parsing di contenuto JSON, e permette schemi opzionali di richiesta e risposta così client o agenti possono auto-generare le chiamate.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: Key Derivation from LNURL-auth via SplitSig&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2294">PR #2294&lt;/a>): Propone di derivare un keypair Nostr da una firma ECDSA LNURL-auth combinata con un nonce casuale lato client. La formula di derivazione è &lt;code>nsec = SHA256(ecdsa_signature || nonce)&lt;/code>. Il server vede la firma ECDSA (intrinseca all&amp;rsquo;handshake LNURL-auth) ma non vede mai il nonce, e il browser genera il nonce ma non controlla la firma. Nessun pezzo da solo può derivare l&amp;rsquo;nsec. L&amp;rsquo;obiettivo è che lo stesso wallet Lightning produca la stessa chiave Nostr su dispositivi diversi, con il wallet come àncora di recovery e nessun server in grado di ricostruire la chiave privata.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>: Documentare il campo rejected&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2290">PR #2290&lt;/a>): Documenta il campo &lt;code>rejected&lt;/code> per le risposte dei signer intent-based, formalizzando il comportamento che la &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">correzione di Amethyst v1.07.x&lt;/a> ha dovuto aggirare.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-5a-siti-web-statici">NIP Deep Dive: NIP-5A (Siti Web Statici)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> definisce come ospitare siti web statici sotto keypair Nostr, usando due kind di event e l&amp;rsquo;infrastruttura blob esistente per trasformare event firmati in pagine web servite. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">specifica&lt;/a> è stata unita il 25 marzo tramite &lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>.&lt;/p>
&lt;p>Il modello usa kind &lt;code>15128&lt;/code> per un sito root, uno per pubkey, e kind &lt;code>35128&lt;/code> per siti con nome identificati da un tag &lt;code>d&lt;/code>. Ogni manifesto mappa percorsi URL assoluti agli hash SHA256. Ecco un manifesto di sito root:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5324d695ed7abf7cdd2a48deb881c93b7f4e43de702989bbfb55a1b97b35a3de&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;266815e0c9210dfa324c6cba3573b14bee49da4209a9456f9484e5106cd408a5&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1743465600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">15128&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/index.html&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;186ea5fd14e88fd1ac49351759e7ab906fa94892002b60bf7f5a428f28ca1c99&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/about.html&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/favicon.ico&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;server&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://blossom.primal.net&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;My Nostr Site&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;description&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;A static website hosted on Nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;source&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://github.com/lez/nsite&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f4e4a9e785f70e9fcaa855d769438fea10781e84cd889e3fcb823774f83d094cf2c05d5a3ac4aebc1227a4ebc3d56867286c15a6df92d55045658bb428fd5fb5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il flusso di serving funziona in tre passaggi. Un server host riceve una richiesta HTTP, estrae la pubkey dell&amp;rsquo;autore dal sottodominio (un npub per i siti root o una pubkey codificata base36 per i siti con nome), recupera la relay list dell&amp;rsquo;autore tramite &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a>, e interroga il manifesto del sito. Una volta trovato il manifesto, il server risolve il path richiesto in un hash di contenuto, scarica il blob corrispondente dal server o dai server Blossom elencati nei tag &lt;code>server&lt;/code>, e lo restituisce.&lt;/p>
&lt;p>Il formato del sottodominio DNS è strettamente specificato. I siti root usano l&amp;rsquo;npub standard come sottodominio. I siti con nome usano una codifica base36 di 50 caratteri della pubkey grezza seguita dal valore del tag &lt;code>d&lt;/code>, tutto in una singola etichetta DNS. Poiché le etichette DNS sono limitate a 63 caratteri e la codifica base36 ne occupa sempre 50, il tag &lt;code>d&lt;/code> è limitato a 13 caratteri. La specifica richiede anche che i tag &lt;code>d&lt;/code> corrispondano a &lt;code>^[a-z0-9-]{1,13}$&lt;/code> e non terminino con un trattino, evitando ambiguità nella risoluzione DNS.&lt;/p>
&lt;p>L&amp;rsquo;uso di hash del contenuto significa che lo stesso sito può essere servito da server host diversi, e l&amp;rsquo;integrità dei file è verificabile senza fidarsi del server. Un server host non ha bisogno di memorizzare alcun file localmente. Li recupera on demand da Blossom usando gli hash nel manifesto. Questo significa che l&amp;rsquo;autore controlla ciò che viene servito, il server Blossom memorizza i file grezzi, e il server host si limita a collegare i due. Ciascuno di questi tre componenti può essere sostituito indipendentemente.&lt;/p>
&lt;p>Le implementazioni esistenti includono &lt;a href="https://github.com/lez/nsite">nsite&lt;/a>, il server host che risolve i manifesti e serve i file, e &lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>, una UI per costruire e pubblicare i manifesti. La specifica ha aggiunto anche un tag &lt;code>source&lt;/code> per collegare il repository del codice sorgente del sito, e l&amp;rsquo;aggiornamento del README unito separatamente nella &lt;a href="https://github.com/nostr-protocol/nips/pull/2286">PR #2286&lt;/a> ha registrato sia il kind &lt;code>15128&lt;/code> sia il &lt;code>35128&lt;/code> nell&amp;rsquo;indice dei kind NIP.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-62-request-to-vanish">NIP Deep Dive: NIP-62 (Request to Vanish)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/62.md">NIP-62&lt;/a> definisce kind &lt;code>62&lt;/code> come una richiesta ai relay di cancellare tutti gli event della pubkey richiedente. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/62.md">specifica&lt;/a> ha una motivazione legale: nelle giurisdizioni con leggi sul diritto all&amp;rsquo;oblio, avere una richiesta di cancellazione standardizzata e firmata dà agli operatori relay un segnale chiaro su cui agire.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a7b8c9d0e1f23456789012345678901234567890abcdef1234567890abcdef12&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a697887766554433221100ffeeddccbbaa99887766554433221100&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1743465600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">62&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relay&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Requesting deletion of all events from this relay.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;11aa22bb33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889911aa22bb33cc44dd55ee66ff77889900aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>La specifica separa le richieste vanish mirate da quelle globali. Una richiesta mirata include tag &lt;code>relay&lt;/code> specifici che identificano i relay che devono agire. Una richiesta globale usa la stringa letterale &lt;code>ALL_RELAYS&lt;/code> come valore del tag relay, chiedendo a ogni relay che vede l&amp;rsquo;event di cancellare tutti gli event di quella pubkey. I relay che rispettano la richiesta devono anche assicurarsi che gli event cancellati non possano essere ripubblicati di nuovo nel relay, rendendo la cancellazione persistente.&lt;/p>
&lt;p>NIP-62 va oltre &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> (Event Deletion) sia per ambito che per intento. NIP-09 permette di cancellare singoli event, e i relay MAY rispettarlo. NIP-62 chiede la cancellazione di tutto, e la specifica dice che i relay MUST rispettare la richiesta se il loro URL è taggato. Chiede anche ai relay di cancellare gli event &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) che contengono un p-tag verso la pubkey richiedente, il che significa che i DM in arrivo vengono ripuliti insieme agli event dell&amp;rsquo;utente. Pubblicare una cancellazione NIP-09 contro una richiesta vanish NIP-62 non ha effetto: una volta che fai vanish, non puoi annullare il vanish cancellando la richiesta di vanish.&lt;/p>
&lt;p>Questa settimana, &lt;a href="https://nostrcompass.org/it/newsletters/2026-04-01-newsletter/#amethyst-distribuisce-note-fissate-gestione-relay-e-request-to-vanish">Amethyst v1.07.0&lt;/a> ha distribuito il supporto client-side a NIP-62, permettendo agli utenti di avviare richieste vanish dall&amp;rsquo;app. Sul lato relay, &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ha quattro PR aperte che aggiungono il supporto NIP-62 nei backend memory, LMDB, SQLite, e database test (&lt;a href="https://github.com/rust-nostr/nostr/pull/1315">PR #1315&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1316">PR #1316&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1317">PR #1317&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1318">PR #1318&lt;/a>). Questo mette il lavoro di supporto lato client e lato relay nella stessa settimana.&lt;/p>
&lt;p>Il design del protocollo introduce una tensione pratica. La proposta di valore di Nostr include la resistenza alla censura, cioè i relay non dovrebbero essere in grado di impedire la pubblicazione. NIP-62 introduce un caso in cui un relay MUST impedire la ripubblicazione da una specifica pubkey. Le due proprietà convivono perché la richiesta è auto-diretta: chiedi la cancellazione dei tuoi event, non di quelli di qualcun altro. La proprietà di resistenza alla censura rimane intatta per tutti tranne che per la persona che ha scelto esplicitamente di uscirne.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages)&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #15</title><link>https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fa seguito al suo rilascio wallet 3.0 con &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#primal-aggiunge-follow-pack-arricchimento-zap-e-deep-link">Follow Pack, arricchimento zap e deep link &lt;code>primalconnect://&lt;/code>&lt;/a>. &lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a> pubblica un&amp;rsquo;&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#bigbrotr-mappa-le-chiavi-private-esposte-nella-rete-relay">analisi delle nsec esposte&lt;/a> scansionando 41 milioni di event su 1.085 relay, trovando 16.599 chiavi private valide, mentre &lt;a href="https://npub.world">npub.world&lt;/a> integra gli avvisi di esposizione nelle pagine profilo la stessa settimana. Martti Malmi lancia &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">nostr-vpn&lt;/a>, un&amp;rsquo;alternativa a Tailscale che segnala tramite relay Nostr e crea tunnel WireGuard, distribuendo 11 rilasci in sette giorni. Il team &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#doom-open-source-gira-peer-to-peer-su-nostr">rilascia in open-source DOOM P2P&lt;/a> su Nostr, &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#fips-v020-distribuisce-trasporto-tor-build-riproducibili-e-esempi-sidecar">v0.2.0&lt;/a>, e &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a> si espande a &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostrability-schemata-diventa-multilingue">sei linguaggi&lt;/a> in una settimana.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fa seguito al suo rilascio wallet 3.0 con &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#primal-aggiunge-follow-pack-arricchimento-zap-e-deep-link">Follow Pack, arricchimento zap e deep link &lt;code>primalconnect://&lt;/code>&lt;/a>. &lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a> pubblica un&amp;rsquo;&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#bigbrotr-mappa-le-chiavi-private-esposte-nella-rete-relay">analisi delle nsec esposte&lt;/a> scansionando 41 milioni di event su 1.085 relay, trovando 16.599 chiavi private valide, mentre &lt;a href="https://npub.world">npub.world&lt;/a> integra gli avvisi di esposizione nelle pagine profilo la stessa settimana. Martti Malmi lancia &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">nostr-vpn&lt;/a>, un&amp;rsquo;alternativa a Tailscale che segnala tramite relay Nostr e crea tunnel WireGuard, distribuendo 11 rilasci in sette giorni. Il team &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#doom-open-source-gira-peer-to-peer-su-nostr">rilascia in open-source DOOM P2P&lt;/a> su Nostr, &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> distribuisce la &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#fips-v020-distribuisce-trasporto-tor-build-riproducibili-e-esempi-sidecar">v0.2.0&lt;/a>, e &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a> si espande a &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostrability-schemata-diventa-multilingue">sei linguaggi&lt;/a> in una settimana.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="primal-aggiunge-follow-pack-arricchimento-zap-e-deep-link">Primal aggiunge Follow Pack, arricchimento zap e deep link&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/">Come da copertura della 3.0.7 della settimana scorsa&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha dedicato questa settimana al lavoro post-rilascio su onboarding, UX del composer e contesto wallet. L&amp;rsquo;onboarding ridisegnato introduce i Follow Pack (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/949">PR #949&lt;/a>), un pulsante GIF nativo si unisce al composer delle note, un servizio di arricchimento zap (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/979">PR #979&lt;/a>) annota le transazioni wallet con il contesto zap, e un protocollo di deep-linking &lt;code>primalconnect://&lt;/code> (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/969">PR #969&lt;/a>) abilita la navigazione cross-app.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> sta distribuendo lo stesso lavoro tramite TestFlight in parallelo, con lo switch wallet (&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/191">PR #191&lt;/a>), l&amp;rsquo;implementazione dei sondaggi e il refactoring dell&amp;rsquo;onboarding che arrivano nella stessa finestra.&lt;/p>
&lt;h3 id="bigbrotr-mappa-le-chiavi-private-esposte-nella-rete-relay">BigBrotr mappa le chiavi private esposte nella rete relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>, la piattaforma di analisi relay Nostr, ha pubblicato un&amp;rsquo;&lt;a href="https://bigbrotr.com/blog/exposed-nsec-analysis/">analisi dettagliata delle chiavi private esposte&lt;/a> nella rete relay. Lo studio ha scansionato 41 milioni di event da 1.085 relay, cercando stringhe nsec valide incorporate nel contenuto degli event, e ha trovato 16.599 chiavi private valide. Quel numero sembra allarmante finché non si filtra un bot chiamato &amp;ldquo;Mr.nsec&amp;rdquo; che rappresenta il 92% delle corrispondenze. Dopo aver rimosso il traffico bot, solo 38 account reali con più di 21.000 follower combinati avevano chiavi esposte, e nessuno mostrava segni di consapevolezza che le proprie chiavi fossero pubbliche.&lt;/p>
&lt;p>Il team ha costruito un nsec-leak-checker come servizio &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a> (Data Vending Machine), permettendo agli utenti di verificare se la loro chiave privata appare ovunque nel dataset scansionato senza rivelare la chiave al verificatore. &lt;a href="https://npub.world">npub.world&lt;/a> ha integrato i dati di esposizione la stessa settimana, mostrando banner di avviso sulle pagine profilo dove sono state rilevate chiavi esposte. La combinazione dà alla rete sia un&amp;rsquo;interfaccia programmatica per DVM e agenti sia un avviso leggibile per gli utenti comuni. Il dataset sottostante alimenta anche &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.4.0">BigBrotr v6.4.0&lt;/a>, che aggiunge viste materializzate per event sostituibili e indirizzabili e una correzione del timeout di inattività del sincronizzatore.&lt;/p>
&lt;h3 id="nostr-vpn-si-lancia-come-alternativa-a-tailscale">Nostr VPN si lancia come alternativa a Tailscale&lt;/h3>
&lt;p>Martti Malmi (mmalmi), creatore di Iris, ha costruito e distribuito &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>, una VPN peer-to-peer che usa relay Nostr per la segnalazione e WireGuard (tramite boringtun) per tunnel cifrati. La motivazione era diretta: &amp;ldquo;Mi sono irritato che Tailscale richieda account di terze parti, quindi ho creato Nostr VPN.&amp;rdquo; Lo strumento crea reti mesh tra dispositivi usando keypair Nostr come identità, senza server di coordinamento centrale.&lt;/p>
&lt;p>Il progetto ha distribuito 11 rilasci in sette giorni, dalla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.2">v0.2.2&lt;/a> alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.13">v0.2.13&lt;/a>. Quello sprint ha aggiunto il supporto Windows, il pairing LAN per la scoperta nella rete locale, e un sidecar Android per dispositivi mobili. L&amp;rsquo;architettura è semplice: due dispositivi si scambiano metadati di connessione tramite relay Nostr, poi stabiliscono un tunnel WireGuard diretto. Nostr gestisce la scoperta e la segnalazione per l&amp;rsquo;attraversamento NAT. WireGuard gestisce il traffico effettivo. L&amp;rsquo;identità è un keypair Nostr.&lt;/p>
&lt;p>Malmi ha anche continuato a sviluppare &lt;a href="https://github.com/mmalmi/nostr-double-ratchet">nostr-double-ratchet&lt;/a>, una libreria per canali di messaggistica sicura in stile Signal, distribuendo sei rilasci dalla &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.86">v0.0.86&lt;/a> alla &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.93">v0.0.93&lt;/a> durante la stessa settimana.&lt;/p>
&lt;h3 id="doom-open-source-gira-peer-to-peer-su-nostr">DOOM open-source gira peer-to-peer su Nostr&lt;/h3>
&lt;p>Il team &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> ha rilasciato in open-source un&amp;rsquo;implementazione multiplayer peer-to-peer di DOOM che usa Nostr per la scoperta dei peer, &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per la cifratura end-to-end, e &lt;a href="https://github.com/n0-computer/iroh">Iroh&lt;/a>, la libreria di networking QUIC di n0, per il trasporto gossip. Il gioco viene distribuito come file WebXDC da 4,2 MB che può essere inviato all&amp;rsquo;interno di messaggi chat, senza richiedere server per ospitare o coordinare una partita.&lt;/p>
&lt;p>L&amp;rsquo;approccio tecnico sostituisce il netcode lockstep originale del 1993 con un modello di sincronizzazione ibrido in tempo reale. I giocatori si scoprono a vicenda tramite query ai relay Nostr, negoziano le sessioni attraverso canali cifrati con Marmot, poi passano al livello gossip QUIC di Iroh per il traffico di gioco a bassa latenza. Lo stack usa Nostr per la scoperta, Marmot per la cifratura, e Iroh per il trasporto.&lt;/p>
&lt;p>Vector ha anche distribuito hardening di sicurezza questa settimana. Il rilascio aggiunge un vault di chiavi con protezione della memoria con protezioni anti-debug e zeroize per il materiale chiave sensibile, blocco utenti con filtraggio completo di DM e messaggi di gruppo, e correzioni del canale realtime WebXDC per le Mini App.&lt;/p>
&lt;h3 id="fips-v020-distribuisce-trasporto-tor-build-riproducibili-e-esempi-sidecar">FIPS v0.2.0 distribuisce trasporto Tor, build riproducibili e esempi sidecar&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, il Free Internetworking Peering System e progetto di networking mesh adiacente a Nostr, ha distribuito la &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.2.0-rel">v0.2.0&lt;/a>. Il rilascio aggiunge supporto al trasporto Tor per link mesh anonimizzati, build riproducibili, un esempio sidecar che si connette attraverso un relay Nostr, e pubblicazione dei rilasci su Nostr nel workflow del pacchetto OpenWrt. Il rilascio corregge anche i picchi di jitter post-rekey causati da frame della finestra di drain. Il formato wire è cambiato dalla v0.1.0, quindi i nodi v0.1.0 esistenti non possono interoperare con la v0.2.0 senza aggiornamento.&lt;/p>
&lt;h3 id="nostrability-schemata-diventa-multilingue">Nostrability Schemata diventa multilingue&lt;/h3>
&lt;p>Il progetto &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a>, che mantiene definizioni JSON Schema per la validazione dei kind di event Nostr, si è espanso dal solo JavaScript a sei linguaggi in una settimana. Nuovi pacchetti sono stati distribuiti per Rust, Go, Dart, Swift e Python, ognuno fornendo sia un pacchetto dati che un validatore. La &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.6">v0.2.6&lt;/a> ha anche aggiunto 17 nuovi schemi di kind event.&lt;/p>
&lt;p>Il &lt;a href="https://nostrability.github.io/nostrability/">tracker di interoperabilità Nostrability&lt;/a> ha ricevuto una revisione parallela. Una nuova scheda What&amp;rsquo;s New pubblica aggiornamenti sia tramite un feed Atom che un event Nostr, il filtraggio per categoria app permette ai visitatori di esplorare tipi specifici di client, e il tracker ora rileva automaticamente i linguaggi di programmazione dai metadati dei repository GitHub. Nostrability ha anche il suo npub ora, rendendo il progetto stesso scopribile attraverso il protocollo che documenta. Per gli autori di librerie che lavorano su più linguaggi, i pacchetti schema multi-linguaggio significano che le stesse definizioni di kind event sono disponibili come import nativi invece di richiedere ad ogni progetto di mantenere la propria copia dello schema.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="amethyst-v1060-e-v1061">Amethyst v1.06.0 e v1.06.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha distribuito la &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.0">v1.06.0&lt;/a> e la &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.1">v1.06.1&lt;/a> il 23 marzo. La funzionalità principale è il supporto ai sondaggi usando dati &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) per il voto ponderato, con card ridisegnate per sondaggi e sondaggi zap. Il nuovo rendering dà sia ai sondaggi standard che ai sondaggi con peso zap un layout visivo più pulito. La v1.06.1 segue con correzioni di crash per modifiche concorrenti che risolvono regressioni di stabilità introdotte nel percorso di rendering dei sondaggi.&lt;/p>
&lt;h3 id="amber-v500-e-v501">Amber v5.0.0 e v5.0.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), ha promosso il suo recente lavoro pre-release 4.1.x in stabile con la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.0">v5.0.0&lt;/a> il 18 marzo. Quel rilascio stabile porta le modifiche di relay-auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, Tor integrato, permessi specifici per tipo di contenuto e storage PIN cifrato coperte la settimana scorsa. La &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.1">v5.0.1&lt;/a> rimuove poi il permesso internet dal build flavor offline, in modo che quel build non possa più effettuare richieste di rete a livello di permessi Android.&lt;/p>
&lt;h3 id="mostro-v0170-e-mostro-mobile-v122">Mostro v0.17.0 e Mostro Mobile v1.2.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, lo scambio Bitcoin peer-to-peer costruito su Nostr, ha distribuito la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.0">v0.17.0&lt;/a> il 18 marzo. Il rilascio server continua il lavoro sulle dispute e le valutazioni dal ciclo v0.16.x, aggiungendo dati di reputazione commerciale più completi per acquirenti e venditori come event Nostr. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, il client Flutter, ha seguito con la &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.2">v1.2.2&lt;/a> il 23 marzo, mantenendo l&amp;rsquo;interfaccia mobile sincronizzata con le ultime modifiche al protocollo.&lt;/p>
&lt;h3 id="shosho-v0140">Shosho v0.14.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, l&amp;rsquo;app di live streaming Nostr, ha distribuito la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.14.0">v0.14.0&lt;/a> il 19 marzo con il lancio di Shosho Shop. Il rilascio aggiunge una scheda Shop sui profili, Shop in Esplora, e un pulsante In-Live Shop su live e clip. Le note di rilascio dicono che i &amp;ldquo;prodotti Nostr&amp;rdquo; esistenti appaiono automaticamente e gli acquirenti cliccano per accedere alla pagina Plebeian Market del venditore per l&amp;rsquo;acquisto. Le note di rilascio di Shosho non identificano il kind di event degli annunci, quindi non è ancora possibile confermare se Shosho Shop legge gli stessi annunci classificati &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> che &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> supporta esplicitamente nel suo README.&lt;/p>
&lt;h3 id="applesauce-v520">Applesauce v5.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>, la collezione di pacchetti helper di hzrd149 per costruire applicazioni Nostr, ha distribuito la &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core@5.2.0">v5.2.0&lt;/a> il 22 marzo. Il rilascio copre sei pacchetti. Il pacchetto SQLite corregge una collisione di vincolo UNIQUE sui tag degli event che causava inserimenti duplicati. Il pacchetto signers aggiunge &lt;code>AndroidNativeSigner&lt;/code>, che avvolge l&amp;rsquo;interfaccia signer nativa Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> in modo che le app basate su web-view possano usare la firma hardware-backed senza codice bridge personalizzato. Il pacchetto relay aggiunge un campo &lt;code>challenge&lt;/code> agli oggetti di stato relay e pool, tracciando lo stato auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> in modo che le app possano rilevare quando un relay sta richiedendo l&amp;rsquo;autenticazione e rispondere programmaticamente. Il pacchetto core acquisisce i metodi &lt;code>isEventPointerSame&lt;/code> e &lt;code>isAddressPointerSame&lt;/code> per la deduplicazione dei riferimenti event, e il pacchetto common aggiunge &lt;code>user.blossomServers$&lt;/code> per risolvere i server media Blossom di un utente. Applesauce alimenta noStrudel, Satellite e diversi altri client web, quindi queste correzioni si propagano attraverso il livello client web.&lt;/p>
&lt;h3 id="wisp-distribuisce-16-rilasci-in-una-settimana">Wisp distribuisce 16 rilasci in una settimana&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, il client Nostr Android, ha distribuito 16 rilasci dalla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.9.3-beta">v0.9.3-beta&lt;/a> alla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.13.1-beta">v0.13.1-beta&lt;/a> questa settimana. Le aggiunte di funzionalità includono supporto multi-account, una modalità notifiche zen per interruzioni ridotte, bozze e post programmati, filtri di sicurezza dei contenuti e una nuova icona fiamma.&lt;/p>
&lt;h3 id="manent-v120">Manent v1.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>, l&amp;rsquo;app di note private cifrate e storage file, ha distribuito la &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.2.0">v1.2.0&lt;/a> il 20 marzo. Il rilascio aggiunge la cattura dalla fotocamera direttamente dall&amp;rsquo;app, il ridimensionamento delle immagini prima dell&amp;rsquo;upload per ridurre i costi di storage, e pinch-to-zoom per esaminare le immagini archiviate. Manent archivia note e file cifrati sui relay Nostr usando il keypair dell&amp;rsquo;utente, rendendo il telefono o l&amp;rsquo;app desktop un thin client che può ricostruire il suo stato completo dai dati dei relay.&lt;/p>
&lt;h3 id="divine-107">diVine 1.0.7&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client di video brevi, ha distribuito la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.7">1.0.7&lt;/a> il 21 marzo con un watchdog per la riproduzione video che riprende automaticamente i video bloccati. Dopo l&amp;rsquo;infrastruttura di test E2E e il caricamento diretto MP4 nella &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/#divine-ships-v106-with-e2e-test-infrastructure-and-nip-49-import">v1.0.6&lt;/a>, questo rilascio mira al percorso di errore di riproduzione rimanente: video che si fermano a metà stream senza generare un errore.&lt;/p>
&lt;h3 id="alby-extension-v3142">Alby Extension v3.14.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/lightning-browser-extension">Alby Extension&lt;/a>, l&amp;rsquo;estensione browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> (Browser Extension Signer), ha distribuito la &lt;a href="https://github.com/getAlby/lightning-browser-extension/releases/tag/v3.14.2">v3.14.2&lt;/a> il 18 marzo con la visualizzazione QR code dell&amp;rsquo;indirizzo Lightning e supporto alla firma Schnorr. L&amp;rsquo;aggiunta di Schnorr allinea l&amp;rsquo;estensione browser con lo schema di firma secp256k1 che Nostr usa nativamente.&lt;/p>
&lt;h3 id="noornote-da-v065-a-v0611">NoorNote da v0.6.5 a v0.6.11&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>, l&amp;rsquo;app per prendere appunti, ha distribuito sette rilasci dalla &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.5">v0.6.5&lt;/a> alla &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.11">v0.6.11&lt;/a>. L&amp;rsquo;aggiunta principale sono i Follow Pack: bundle curati di account che gli utenti possono esplorare e sottoscrivere in blocco, simili alle Liste Twitter ma pensati per l&amp;rsquo;onboarding. Gli utenti possono creare, modificare e condividere Follow Pack con titoli, descrizioni e immagini di copertina personalizzati. La serie aggiorna anche la libreria Nostr sottostante da NDK v2 a v3, che porta una gestione migliorata delle connessioni relay e delle sottoscrizioni. Le note con immagini e un&amp;rsquo;esperienza di connessione relay ridisegnata completano il ciclo.&lt;/p>
&lt;h3 id="nak-v0191-e-v0192">nak v0.19.1 e v0.19.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il toolkit Nostr a riga di comando di fiatjaf per interagire con i relay, codificare e decodificare identificatori &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), firmare event e interrogare dati dei relay, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a> e la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.2">v0.19.2&lt;/a> il 17 e 20 marzo. Le due point release seguono l&amp;rsquo;aggiunta della UI group-forum &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/">v0.19.0&lt;/a> dalla settimana scorsa.&lt;/p>
&lt;h3 id="calendar-by-form-v021">Calendar by Form* v0.2.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>, l&amp;rsquo;app calendario decentralizzata costruita su &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), ha distribuito la &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.1">v0.2.1&lt;/a> il 20 marzo. Il rilascio corregge un problema nel template delle notifiche che influiva sui promemoria degli eventi. Calendar archivia gli event come kind 31922 (basati su data) e kind 31923 (basati su orario) di Nostr, permettendo a qualsiasi client Nostr di renderizzare i dati calendario se sceglie di supportare quei kind. L&amp;rsquo;app è costruita dal team Formstr, che mantiene anche Formstr (moduli decentralizzati) e Pollerama (sondaggi).&lt;/p>
&lt;h3 id="nym-da-v350-a-v353">NYM da v3.50 a v3.53&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">NYM&lt;/a>, il client di chat effimero leggero collegato a Bitchat, ha distribuito 28 rilasci dalla v3.50 alla v3.53 (le versioni patch incrementano rapidamente). La funzionalità più notevole è Nymbot, un chat bot integrato che risponde alle menzioni &lt;code>@nymbot&lt;/code> nei canali e fornisce funzioni di stato e gestione dei relay. Una &amp;ldquo;hardcore mode&amp;rdquo; genera un keypair fresco per ogni messaggio inviato, rendendo i thread di conversazione non collegabili a livello di identità. Il compromesso è chiaro: si perde l&amp;rsquo;identità persistente ma si guadagna l&amp;rsquo;anonimato per messaggio. Il livello proxy relay ha anche ricevuto lavoro, con worker proxy relay sharded per migliore connettività, supporto canali geohash, e tolleranza al clock skew per nodi con orologi di sistema imprecisi.&lt;/p>
&lt;h2 id="aggiornamenti-progetti">Aggiornamenti Progetti&lt;/h2>
&lt;h3 id="ditto-aggiunge-bridge-bluesky-e-integrazione-wikipedia">Ditto aggiunge bridge Bluesky e integrazione Wikipedia&lt;/h3>
&lt;p>&lt;a href="https://github.com/soapbox-pub/ditto">Ditto&lt;/a>, il client social Nostr personalizzabile del team Soapbox, ha registrato oltre 300 commit questa settimana su tre percorsi di funzionalità distinti. Il primo è un bridge Bluesky (19 commit) che renderizza i post Bluesky inline come thread completi in stile feed, aggiunge navigazione sidebar a una pagina di scoperta Bluesky alimentata dal feed ufficiale Discover (whats-hot), e collega pulsanti di azione per commentare, condividere, reagire e copiare link. Quando un utente risponde a un post Bluesky dall&amp;rsquo;interno di Ditto, la modale di composizione mostra un avviso che nota la natura cross-protocollo dell&amp;rsquo;interazione. Le reazioni kind 17 &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73&lt;/a> (External Content IDs) alimentano il modello cross-protocollo: un utente Nostr reagisce a un post Bluesky, e la reazione viene archiviata come un event Nostr standard che referenzia l&amp;rsquo;identificatore di contenuto esterno. Questo è lo stesso pattern NIP-73 che potrebbe collegare reazioni a qualsiasi contenuto esterno, dai post Bluesky ai video YouTube alle pagine web.&lt;/p>
&lt;p>Il secondo percorso è un&amp;rsquo;integrazione Wikipedia (9 commit). Ditto ora renderizza contenuti ricchi di articoli Wikipedia sulle pagine di dettaglio invece di anteprime link generiche, aggiunge autocompletamento nella ricerca con miniature degli articoli, e fornisce una pagina &lt;code>/wikipedia&lt;/code> che attinge contenuti in evidenza dall&amp;rsquo;API Wikipedia. I risultati di Wikipedia e Archive.org appaiono anche nel dropdown di autocompletamento della ricerca generale. Il terzo percorso è il supporto piattaforma iOS tramite Capacitor, con script di build remoto e configurazione piattaforma che arrivano insieme a una revisione della UI (55 commit) che sostituisce gli header con backdrop-blur con un nuovo design di navigazione basato su arco su ogni pagina dell&amp;rsquo;app. I 314 commit muovono Ditto da un client solo-Nostr verso un aggregatore multi-protocollo che tratta Bluesky e Wikipedia come sorgenti di contenuto di prima classe accanto al feed Nostr.&lt;/p>
&lt;h3 id="pika-costruisce-una-pipeline-ci-forge-nip-34">Pika costruisce una pipeline CI forge NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;app di messaggistica cifrata basata su Marmot, ha unito 33 PR questa settimana focalizzate su un forge &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> self-hosted con CI pre-merge. Il forge è un livello di hosting git che riceve patch come event NIP-34, esegue controlli CI prima del merge, e riporta lo stato strutturato tramite event Nostr. La &lt;a href="https://github.com/sledtools/pika/pull/701">PR #701&lt;/a> aggiunge CI pre-merge e nightly basata su lane, dove ogni percorso di codice (Rust, TypeScript, build Apple) gira nella propria lane con stato pass/fail indipendente. La &lt;a href="https://github.com/sledtools/pika/pull/715">PR #715&lt;/a> riduce gli agenti CI gestiti a container Incus OpenClaw per l&amp;rsquo;isolamento, e la &lt;a href="https://github.com/sledtools/pika/pull/733">PR #733&lt;/a> aggiunge una CLI &lt;code>ph forge&lt;/code> per interagire con il forge ospitato dalla riga di comando. PR di supporto gestiscono i permessi di scrittura al repo per i merge (&lt;a href="https://github.com/sledtools/pika/pull/736">PR #736&lt;/a>), metadati CI strutturati con badge di stato live (&lt;a href="https://github.com/sledtools/pika/pull/722">PR #722&lt;/a>), split delle build Apple nightly (&lt;a href="https://github.com/sledtools/pika/pull/738">PR #738&lt;/a>), e correzioni di auth e ricerca branch del forge (&lt;a href="https://github.com/sledtools/pika/pull/734">PR #734&lt;/a>). Questo è uno dei primi sistemi CI/CD funzionanti costruiti sopra gli event git NIP-34, spostando l&amp;rsquo;hosting del codice sorgente basato su Nostr oltre lo scambio base di patch verso il workflow di merge-and-test che gli sviluppatori si aspettano da GitHub o GitLab.&lt;/p>
&lt;h3 id="nostria-aggiunge-comunità-snippet-di-codice-e-gestione-event-vocali">Nostria aggiunge comunità, snippet di codice e gestione event vocali&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, il client Nostr cross-platform mantenuto da sondreb, ha dedicato questa settimana a estendere la superficie app oltre il filtraggio Web of Trust coperto nel #14. L&amp;rsquo;aggiunta principale è un&amp;rsquo;implementazione completa di &lt;a href="https://nostrcompass.org/it/topics/nip-72/">NIP-72&lt;/a> (Moderated Communities) con creazione comunità, configurazione moderatori e relay, tracciamento approvazione post con anteprime immagini, e una pagina comunità dedicata con tab Post e Moderatori.&lt;/p>
&lt;p>Lo stesso arco di lavoro aggiunge anche rendering e editing di snippet di codice con un editor con evidenziazione della sintassi, supporto risposte a event vocali per conversazioni audio, impostazioni relay chat per messaggi diretti, condivisione canali tramite la Web Share API, un sistema di docking toolbar per il media player, registrazione in-app per l&amp;rsquo;ultimo servizio Web of Trust di Brainstorm, flussi di invio e ricezione denaro nei DM usando NWC e fatture BOLT-11, gestione GIF nativa Nostr, e un percorso di importazione RSS più robusto per i musicisti che può raccogliere gli split Lightning esistenti dai feed podcast.&lt;/p>
&lt;h3 id="iterazione-rapida-nostr-vpn">Iterazione rapida nostr-vpn&lt;/h3>
&lt;p>Oltre al &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">lancio iniziale&lt;/a>, il log dei commit di &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a> rivela i problemi specifici incontrati durante il deployment reale. La &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.3">v0.2.3&lt;/a> fino alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.5">v0.2.5&lt;/a> hanno aggiunto lo script di installazione iniziale e la CLI cross-platform. La &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.6">v0.2.6&lt;/a> e la &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.7">v0.2.7&lt;/a> hanno portato il supporto Windows, che ha richiesto il quoting del percorso UAC per le scritture di configurazione e aggiornamenti di configurazione di proprietà del daemon. La &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.8">v0.2.8&lt;/a> fino alla &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.10">v0.2.10&lt;/a> hanno corretto le azioni del servizio GUI Windows, la gestione dei sottoprocessi CLI e la configurazione del servizio machine-scoped. La &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.12">v0.2.12&lt;/a> ha sostituito la scoperta LAN con il pairing LAN a tempo, un flusso avviato dall&amp;rsquo;utente dove due dispositivi sulla stessa rete locale si accoppiano senza segnalazione relay. Il pattern è da manuale di testing sul campo in fase iniziale: ogni rilascio mira a uno specifico fallimento di deployment, la base utenti è abbastanza piccola per iterare quotidianamente, e lo sviluppatore usa lo strumento personalmente tra i rilasci.&lt;/p>
&lt;h3 id="build-automatizzate-comet">Build automatizzate Comet&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/comet">Comet&lt;/a> (precedentemente Captain&amp;rsquo;s Log), lo strumento di scrittura long-form nativo Nostr di Nodetec, ha prodotto oltre 40 build alpha automatizzate questa settimana. Comet è un&amp;rsquo;app desktop per scrivere e pubblicare articoli NIP-23 (Long-form Content), con storage locale delle bozze, editing markdown e pubblicazione one-click sul set di relay dell&amp;rsquo;utente. La pipeline di build automatizzata genera un rilascio taggato per ogni commit sul branch main, il che rende il conteggio grezzo dei rilasci fuorviante come misura della velocità delle funzionalità. Ciò che le 40 build mostrano è che l&amp;rsquo;app è in sviluppo attivo quotidiano, con ogni commit testato, pacchettizzato e reso disponibile per il download in pochi minuti.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> nella finestra 17-24 marzo:&lt;/p>
&lt;p>Nessun merge NIP è arrivato tra il 18 e il 24 marzo.&lt;/p>
&lt;p>&lt;strong>PR Aperte e Discussioni aggiornate nella finestra:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-AA: Agenti Autonomi su Nostr&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2259">PR #2259&lt;/a>): Propone convenzioni per agenti autonomi che operano sulla rete Nostr. La PR definisce come gli agenti si identificano, scoprono servizi e si coordinano con altri agenti e umani attraverso event Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> (Search): Estensioni di ordinamento&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2283">PR #2283&lt;/a>): Aggiunge parametri di ordinamento alle query di ricerca NIP-50, inclusi top, hot, zaps e new. Questo permetterebbe ai client di richiedere risultati classificati dai relay che supportano la ricerca full-text invece di ordinare lato client.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-A5: Programmi WASM&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>): Propone una convenzione per pubblicare e scoprire programmi WebAssembly su Nostr. I binari WASM potrebbero essere distribuiti come event Nostr, con i relay che servono come livello di scoperta per codice eseguibile portabile.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-CF: Combine Forces napps interoperabili&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2277">PR #2277&lt;/a>): Definisce una convenzione per applicazioni Nostr interoperabili (&amp;ldquo;napps&amp;rdquo;) che possono comporre funzionalità tra diversi client e servizi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP Snapshots&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>): Propone un meccanismo per snapshot dello stato dei relay, per la sincronizzazione e il backup dei relay.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP Checkpoints&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2278">PR #2278&lt;/a>): Propone event checkpoint per segnare lo stato valido noto dei relay, complementando la proposta snapshots.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges): Refactoring Badge Sets&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>): Ristruttura come le collezioni di badge sono organizzate e referenziate.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document): Estensioni&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2280">PR #2280&lt;/a>): Aggiunge campi aggiuntivi al documento informativo del relay per metadati relay leggibili dalle macchine più ricchi.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="cinque-anni-di-marzo-di-nostr">Cinque Anni di Marzo di Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#cinque-anni-di-febbraio-di-nostr">La newsletter del mese scorso&lt;/a> ha coperto come i febbrai di Nostr sono progrediti dalla riscrittura di NIP-01 (Basic Protocol Flow) attraverso l&amp;rsquo;ondata Damus sull&amp;rsquo;App Store fino alle reti mesh e le proposte per agenti. Questa retrospettiva traccia cosa è successo ogni marzo dal 2021 al 2026.&lt;/p>
&lt;h3 id="marzo-2021-due-commit">Marzo 2021: Due Commit&lt;/h3>
&lt;p>Quattro mesi dopo la sua nascita, il marzo di Nostr ha prodotto esattamente due commit al repository del protocollo, entrambi il 4 marzo. fiatjaf &lt;a href="https://github.com/nostr-protocol/nostr/commit/dcd8cc3">ha aggiunto link alle istanze nostwitter&lt;/a>, indirizzando i primi visitatori a deployment funzionanti, e &lt;a href="https://github.com/nostr-protocol/nostr/commit/54dfb46">ha aggiunto kind alla definizione base dei filtri&lt;/a>. Quel secondo commit è rivelatore: nel marzo 2021, non si potevano ancora filtrare gli event Nostr per kind. Il protocollo era così primitivo. Due o tre relay servivano la rete. Il gruppo Telegram era l&amp;rsquo;unico canale di coordinamento. Il repository NIPs non esisteva ancora; le proposte di protocollo vivevano come file nel repo principale nostr. fiatjaf era l&amp;rsquo;unico committer quel mese. L&amp;rsquo;intero output del marzo 2021 di quello che sarebbe diventato un protocollo che supporta VPN, giochi multiplayer e networking mesh cinque anni dopo entra in una singola diff git.&lt;/p>
&lt;h3 id="marzo-2022-costruzione-pre-damus">Marzo 2022: Costruzione Pre-Damus&lt;/h3>
&lt;p>Il repository principale del protocollo ha ricevuto zero commit nel marzo 2022. Lo sviluppo si era spostato interamente nei repository degli strumenti. &lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, il client web Vue.js di fiatjaf e all&amp;rsquo;epoca l&amp;rsquo;interfaccia Nostr principale, ha ricevuto 5 commit incluso il supporto al deployment Docker e correzioni alla visualizzazione del nome di verifica &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> (DNS-Based Verification) che rimuovevano il prefisso &lt;code>_@&lt;/code> dai badge di verifica. &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a> di Robert C. Martin, il client desktop Clojure, ha registrato 13 o più commit aggiungendo threading, navigazione da tastiera e una finestra di editing. L&amp;rsquo;autore di software più famoso che costruiva attivamente su Nostr quel mese non era uno sviluppatore crypto ma la persona il cui &amp;ldquo;Clean Code&amp;rdquo; ha venduto milioni di copie, che scriveva un client Nostr in Clojure, una scelta di linguaggio che dice tutto sulla comunità iniziale: erano programmatori con opinioni forti che costruivano per sé stessi.&lt;/p>
&lt;p>La rete relay si era espansa a circa 15 relay con una base utenti attiva nell&amp;rsquo;ordine delle centinaia. Damus non esisteva ancora e non sarebbe stato creato fino ad aprile 2022. Nemmeno Nostream era apparso. Il lavoro del mese era infrastruttura: rendere gli strumenti esistenti più affidabili per la piccola comunità che li usava già quotidianamente.&lt;/p>
&lt;h3 id="marzo-2023-infrastruttura-post-esplosione">Marzo 2023: Infrastruttura Post-Esplosione&lt;/h3>
&lt;p>Un mese dopo l&amp;rsquo;ondata Damus sull&amp;rsquo;App Store e il superamento delle 300.000 chiavi pubbliche, il marzo 2023 riguardava l&amp;rsquo;assorbimento della crescita. Il &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> ha unito 28 pull request, il secondo conteggio mensile più alto nella storia del protocollo. &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> (Lists) è stato unito, dando ai client collezioni strutturate di follow, mute e segnalibri. &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (External Identities in Profiles) è arrivato, NIP-78 (Application-Specific Data) ha fornito un kind di storage generale per le app che necessitavano di stato privato, e una riscrittura di &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> (Lightning Zaps) (&lt;a href="https://github.com/nostr-protocol/nips/pull/392">PR #392&lt;/a>) ha consolidato il flusso zap e chiarito la terminologia. La PR più discussa del mese era una proposta alternativa di gestione delle menzioni (&lt;a href="https://github.com/nostr-protocol/nips/pull/381">PR #381&lt;/a>) con oltre 50 commenti.&lt;/p>
&lt;p>Il nuovo progetto più importante è stato &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> (Nostr Development Kit), la libreria TypeScript per connessioni relay, firma event, caching e gestione sottoscrizioni. pablof7z ha fatto il &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/09e5e03">commit iniziale&lt;/a> il 16 marzo 2023, poi l&amp;rsquo;ha riscritto da zero 11 giorni dopo il 27 marzo (&amp;ldquo;praticamente un altro commit iniziale&amp;rdquo;), e aveva il supporto LNURL e zap funzionante entro il 31 marzo. NDK è passato dal nulla alla capacità zap in 15 giorni. Cinque giorni dopo la creazione di NDK, il 21 marzo, il team Alby ha creato &lt;a href="https://github.com/getAlby/nostr-wallet-connect">NWC&lt;/a> (Nostr Wallet Connect), l&amp;rsquo;implementazione di riferimento di &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> che connetteva i wallet Lightning alle applicazioni Nostr. I due progetti che avrebbero sostenuto i successivi tre anni di sviluppo Nostr basato sul web sono nati nella stessa finestra di 30 giorni. OpenSats non aveva ancora lanciato il suo fondo Nostr; la prima ondata non sarebbe arrivata fino a &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">luglio 2023&lt;/a>, quattro mesi dopo la creazione di NDK.&lt;/p>
&lt;p>Altre creazioni notevoli di quel mese includevano NostrGit, NostrChat, un progetto nostr-signing-device di LNbits, e nostrmo. &lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a>, il client desktop Rust focalizzato sulla selezione intelligente dei relay, ha distribuito tre rilasci. Il protocollo era in modalità costruzione, e gli strumenti creati nel marzo 2023 sono ancora in uso tre anni dopo.&lt;/p>
&lt;h3 id="marzo-2024-maturazione-del-protocollo">Marzo 2024: Maturazione del Protocollo&lt;/h3>
&lt;p>Il marzo 2024 riguardava l&amp;rsquo;hardening del protocollo per l&amp;rsquo;uso a lungo termine. Il repository NIPs ha unito 12 pull request. La più significativa è stata &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a> (Git Stuff), &lt;a href="https://github.com/nostr-protocol/nips/pull/997">PR #997&lt;/a>, che è stata unita il 5 marzo dopo oltre 130 commenti e 44 giorni di revisione. Il thread di discussione è una capsula del tempo della comunità che dibatteva come costruire un GitHub decentralizzato. jb55 ha tracciato paralleli con &lt;code>git send-email&lt;/code>, Giszmo ha proposto di usare gli hash dei root commit per la scoperta cross-fork (&amp;ldquo;qualcosa che GitHub non fa e che noi potremmo&amp;rdquo;), mikedilger ha suggerito l&amp;rsquo;autenticazione con event firmati &lt;a href="https://nostrcompass.org/it/topics/nip-98/">NIP-98&lt;/a> (HTTP Auth) invece delle chiavi SSH, e fiatjaf ha liquidato bruscamente la necessità di generalità nel controllo versione: &amp;ldquo;non per ogni sistema di controllo versione, solo per git. Nessuno usa gli altri.&amp;rdquo; Entro poche ore dall&amp;rsquo;apertura della PR, fiatjaf aveva già convertito nak, go-nostr e gitstr per accettare patch su Nostr. DanConwayDev, il cui ngit era già un grantee OpenSats, era tra i contributori più attivi alla discussione. È stato unito anche un campo bot per i metadati dei profili, dando ai client un modo leggibile dalle macchine per distinguere gli account automatizzati da quelli umani.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha distribuito la v0.85.0 con supporto event git, articoli wiki, rendering di dati medici e editing di contenuti in un singolo rilascio. &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> ha raggiunto la v0.10.0. &lt;a href="https://github.com/Spl0itable/nosflare">Nosflare&lt;/a>, un relay Nostr serverless in esecuzione su Cloudflare Workers, ha dimostrato che la logica relay poteva girare all&amp;rsquo;edge. OpenSats ha emesso una &lt;a href="https://opensats.org/blog/bruno-garcia-receives-lts-grant">grant di Supporto a Lungo Termine a Bruno Garcia&lt;/a> per contributi sostenuti al client Amethyst.&lt;/p>
&lt;h3 id="marzo-2025-espansione-dellinfrastruttura">Marzo 2025: Espansione dell&amp;rsquo;Infrastruttura&lt;/h3>
&lt;p>Il marzo 2025 ha prodotto 10 NIP uniti. Il titolo principale è stato &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring), &lt;a href="https://github.com/nostr-protocol/nips/pull/230">PR #230&lt;/a>, che è stata unita il 3 marzo dopo un percorso di 25 mesi. dskvr ha proposto per la prima volta il monitoraggio dei relay nel febbraio 2023, gli è stato detto che poteva essere fatto lato client, ha spiegato perché connettersi a migliaia di relay contemporaneamente era impraticabile per i singoli client, ha attraversato sette bozze complete, ha costruito nodi di monitoraggio in otto regioni geografiche (Northeast US, Brasile, US-West, US-East, Australia, India, Corea, Sud Africa), e ha atteso che il tooling relay si mettesse al passo. Quando è stata unita, le implementazioni esistevano già in nostr.watch, relaypag.es, monitorlizard, Snort, noStrudel e Jumble. I dati NIP-66 avrebbero poi alimentato i benchmark outbox di Nostrability &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">coperti nella Newsletter #12&lt;/a>. È stato unito anche NIP-C0 (Code Snippets) (&lt;a href="https://github.com/nostr-protocol/nips/pull/1852">PR #1852&lt;/a>, 63 commenti), aggiungendo event kind 1337 per la condivisione di codice sorgente.&lt;/p>
&lt;p>I primi server MCP per Nostr sono apparsi questo mese. &lt;a href="https://github.com/AustinKelsay/nostr-mcp-server">nostr-mcp-server&lt;/a> è apparso il 23 marzo e &lt;a href="https://github.com/getAlby/nwc-mcp-server">nwc-mcp-server&lt;/a> il 14 marzo, solo quattro mesi dopo che Anthropic ha annunciato il Model Context Protocol nel novembre 2024. Questi primi bridge hanno preceduto l&amp;rsquo;SDK completo di &lt;a href="https://nostrcompass.org/it/topics/contextvm/">ContextVM&lt;/a> e il lavoro di commercio agenti che è seguito alla fine del 2025 e inizio 2026.&lt;/p>
&lt;p>&lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a> ha distribuito la v0.14.0. &lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>, il client web di hodlbod con gestione feed consapevole dei relay, ha distribuito tre rilasci. OpenSats ha annunciato la sua &lt;a href="https://opensats.org/blog/10th-wave-of-nostr-grants">decima ondata di grant Nostr&lt;/a>, continuando la pipeline di finanziamento attiva dalla metà del 2023.&lt;/p>
&lt;h3 id="marzo-2026-convergenza">Marzo 2026: Convergenza&lt;/h3>
&lt;p>&lt;em>L&amp;rsquo;attività di marzo 2026 è tratta dai numeri di Nostr Compass &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/">#12&lt;/a> fino al &lt;a href="">#15&lt;/a> (questo numero).&lt;/em>&lt;/p>
&lt;p>Il marzo 2026 è il mese in cui thread disparati sono convergiti in sistemi funzionanti. Il &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#marmot-development-kit-distribuisce-il-primo-rilascio-pubblico">Marmot Development Kit&lt;/a> ha distribuito il suo primo rilascio pubblico con media cifrati, binding multi-linguaggio, e una migrazione ChaCha20-Poly1305 che ha richiesto aggiornamenti coordinati tra specifica, Rust e TypeScript. &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/#shopstr-and-milk-market-open-mcp-commerce-surfaces">Shopstr e Milk Market&lt;/a> hanno aggiunto superfici di commercio MCP per acquisti guidati da agenti. &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> relay auth è arrivato simultaneamente in &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/#nip-42-relay-auth-across-bunker-signer-and-relay">Amber&lt;/a>, strfry e OAuth Bunker, chiudendo il cerchio tra software signer, relay e bunker. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/#notedeck-sposta-la-scoperta-dei-rilasci-su-nostr">Notedeck&lt;/a> ha distribuito aggiornamenti software nativi Nostr usando event di rilascio &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> (File Metadata).&lt;/p>
&lt;p>Questa settimana, &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#bigbrotr-mappa-le-chiavi-private-esposte-nella-rete-relay">BigBrotr&lt;/a> ha scansionato l&amp;rsquo;intera rete relay alla ricerca di chiavi private trapelate e ha pubblicato sia l&amp;rsquo;analisi che un checker DVM. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#nostr-vpn-si-lancia-come-alternativa-a-tailscale">Nostr VPN&lt;/a> ha dimostrato che il modello di chiavi di Nostr funziona per l&amp;rsquo;infrastruttura di rete, non solo per i social media. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#doom-open-source-gira-peer-to-peer-su-nostr">DOOM&lt;/a> ha dimostrato che scoperta Nostr, cifratura Marmot e trasporto QUIC possono far girare un gioco multiplayer in tempo reale. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#amber-v500-e-v501">Amber&lt;/a> è passato alla v5.0.0. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-25-newsletter/#wisp-distribuisce-16-rilasci-in-una-settimana">Wisp&lt;/a> ha distribuito 16 rilasci in sette giorni. Venticinque o più rilasci taggati sono arrivati da progetti importanti in una singola settimana.&lt;/p>
&lt;p>Sette NIP sono stati uniti nei primi 24 giorni del mese. Il protocollo ha aggiunto il markup Djot &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> (Wiki), i limiti di input &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), la logica di query booleana &lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a> (AND Operator for Filters), e le asserzioni Web of Trust &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Le proposte aperte spaziavano dagli agenti autonomi (NIP-AA) ai programmi WASM (NIP-A5) alle estensioni di ordinamento per la ricerca &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;h3 id="guardando-avanti">Guardando Avanti&lt;/h3>
&lt;p>Cinque marzi di Nostr tracciano un arco chiaro. Nel 2021, una persona ha fatto due commit a un protocollo che non poteva ancora filtrare event per kind. Entro il 2023, NDK e NWC sono nati a cinque giorni di distanza per assorbire l&amp;rsquo;esplosione post-Damus. Entro il 2024, un thread di PR da 141 commenti dibatteva come la collaborazione git dovrebbe funzionare su un protocollo sociale. Entro il 2025, una specifica di monitoraggio relay che era stata pazientemente riscritta sette volte in 25 mesi è stata finalmente unita. Nel 2026, qualcuno si è irritato per il fatto che Tailscale richiede un account e ha costruito una VPN usando keypair Nostr, mentre qualcun altro ha distribuito DOOM multiplayer che scopre i peer tramite relay Nostr e cifra il gameplay tramite Marmot. La scansione di BigBrotr di 41 milioni di event su 1.085 relay dà una misura concreta di quanto la rete sia cresciuta. La superficie del protocollo nel marzo 2026 sarebbe stata irriconoscibile per il marzo 2021, ma il modello sottostante, event firmati da chiavi secp256k1 e distribuiti attraverso relay, non è cambiato.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages)&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #14</title><link>https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-03-18-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> implementa il supporto completo ai metodi &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect), &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> aggiunge il supporto multi-relay nella &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> distribuisce la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a> con Tor integrato e permessi signer più granulari, e &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> rimuove un percorso keysend NWC rischioso nella &lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a>. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> distribuisce un updater firmato nella &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> che scopre i rilasci attraverso event &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> (File Metadata), mentre &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> corregge lo stato &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) obsoleto, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a> rivede i suoi risultati di benchmark con dati corretti, e &lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> testa sottoscrizioni relay dirette per i DM. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> distribuisce la &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a>, &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> distribuisce la &lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>, &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a> continua a perfezionare l&amp;rsquo;interoperabilità Marmot nella &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a>, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> consolida il suo runtime nella &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>, e &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> aggiunge il filtraggio Web of Trust tramite &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Il repository NIPs unisce il markup Djot per &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> (Wiki) e un limite di input di 5000 caratteri per &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), mentre nuove proposte aprono discussioni su file &lt;code>.nostrkey&lt;/code> per &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption), consistenza dello stato di appartenenza per &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests), guida alla cancellazione per &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) e un URI share-intent per &lt;a href="https://nostrcompass.org/it/topics/nip-222/">NIP-222&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> implementa il supporto completo ai metodi &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect), &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> aggiunge il supporto multi-relay nella &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> distribuisce la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a> con Tor integrato e permessi signer più granulari, e &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> rimuove un percorso keysend NWC rischioso nella &lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a>. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> distribuisce un updater firmato nella &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> che scopre i rilasci attraverso event &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> (File Metadata), mentre &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> corregge lo stato &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) obsoleto, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a> rivede i suoi risultati di benchmark con dati corretti, e &lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> testa sottoscrizioni relay dirette per i DM. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> distribuisce la &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a>, &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> distribuisce la &lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>, &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a> continua a perfezionare l&amp;rsquo;interoperabilità Marmot nella &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a>, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> consolida il suo runtime nella &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>, e &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> aggiunge il filtraggio Web of Trust tramite &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Il repository NIPs unisce il markup Djot per &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> (Wiki) e un limite di input di 5000 caratteri per &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), mentre nuove proposte aprono discussioni su file &lt;code>.nostrkey&lt;/code> per &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption), consistenza dello stato di appartenenza per &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests), guida alla cancellazione per &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) e un URI share-intent per &lt;a href="https://nostrcompass.org/it/topics/nip-222/">NIP-222&lt;/a>.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="il-supporto-wallet-connect-si-amplia-e-i-client-wallet-stringono-i-percorsi-di-errore">Il supporto Wallet Connect si amplia, e i client wallet stringono i percorsi di errore&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android mantenuto da vitorpamplona, ha unito la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1828">PR #1828&lt;/a>, che porta la sua implementazione &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> vicino alla copertura completa del protocollo. La patch aggiunge &lt;code>make_invoice&lt;/code>, &lt;code>lookup_invoice&lt;/code>, &lt;code>list_transactions&lt;/code>, &lt;code>get_balance&lt;/code>, &lt;code>get_info&lt;/code>, metodi per hold invoice, supporto keysend con record TLV, discovery delle capacità tramite kind &lt;code>13194&lt;/code>, e event di notifica su kind &lt;code>23197&lt;/code> con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads). Questo dà al client una superficie NWC molto più ampia senza dipendere da estensioni specifiche dell&amp;rsquo;app.&lt;/p>
&lt;p>Lo stack wallet circostante si è mosso nella stessa direzione. &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>, il nodo Lightning auto-custodiale e servizio wallet dietro molti deployment NWC, ha distribuito la &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a> con supporto multi-relay e flussi di connessione e swap più semplici. &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>, il wallet Lightning mobile, ha unito la &lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a> rimuovendo il supporto keysend NWC dopo aver identificato un percorso silenzioso di drenaggio fondi in quel flusso, correggendo anche la gestione degli event in sospeso e l&amp;rsquo;attività Cashu. La connettività wallet su Nostr si sta ampliando, e gli implementatori stanno rimuovendo i flussi difficili da rendere sicuri.&lt;/p>
&lt;h3 id="notedeck-sposta-la-scoperta-dei-rilasci-su-nostr">Notedeck sposta la scoperta dei rilasci su Nostr&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Come da copertura di Notedeck della settimana scorsa&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop nativo del team Damus, ha distribuito la &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> dopo aver unito la &lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a>. Il nuovo updater si sottoscrive a event di rilascio firmati di kind &lt;code>1063&lt;/code>, abbina la piattaforma locale, scarica il binario referenziato e verifica il suo hash SHA256 prima dell&amp;rsquo;installazione. I metadati di rilascio non devono più provenire dall&amp;rsquo;API GitHub o dal sito web di un progetto. Una pubkey di rilascio fidata e una connessione relay sono sufficienti.&lt;/p>
&lt;p>La stessa patch aggiunge una CLI &lt;code>notedeck-release&lt;/code> che pubblica quegli event dagli artefatti di rilascio GitHub, il che significa che la pipeline di rilascio ora ha un percorso di pubblicazione nativo Nostr oltre a un percorso di scoperta nativo Nostr. Avvicina anche il modello di updater Damus e Notedeck al flusso di rilascio firmato pubblicato via relay di Zapstore: lo strumento &lt;code>zsp&lt;/code> di Zapstore gestisce già gli asset software come event kind &lt;code>1063&lt;/code> o &lt;code>3063&lt;/code>, quindi questo percorso non è vincolato a un singolo client o un singolo publisher. Il resto della release candidate è lavoro desktop pratico: colonne di follow, profilo &amp;ldquo;View As User&amp;rdquo;, supporto &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap), statistiche note in tempo reale e gestione delle limitazioni &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document), ma l&amp;rsquo;updater è la parte che probabilmente sopravviverà a questo singolo ciclo di rilascio.&lt;/p>
&lt;h3 id="lo-stato-dei-relay-si-avvicina-al-comportamento-runtime">Lo stato dei relay si avvicina al comportamento runtime&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> ha unito la &lt;a href="https://github.com/damus-io/damus/pull/3665">PR #3665&lt;/a>, sostituendo un ID event di relay-list obsoleto memorizzato con una query diretta al database per l&amp;rsquo;event kind &lt;code>10002&lt;/code> più recente. Quando il vecchio valore diventava obsoleto, le operazioni di aggiunta e rimozione relay potevano ricadere su bootstrap o liste vecchie di un anno, facendo apparire alcune modifiche ai relay come riuscite mentre lasciavano lo stato attivo invariato. La &lt;a href="https://github.com/damus-io/damus/pull/3690">PR #3690&lt;/a> corregge un secondo percorso di errore eliminando lo stato &lt;code>lock.mdb&lt;/code> obsoleto durante la compattazione LMDB in modo che l&amp;rsquo;app non vada in crash con &lt;code>SIGBUS&lt;/code> al prossimo avvio.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> ha aperto la &lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/194">PR #194&lt;/a>, che si sottoscrive direttamente ai relay di scrittura &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages) di un partner di chat mentre una conversazione è aperta, mantenendo il cache server come fallback. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> ha aperto la &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a>, che combina scoring randomizzato dei relay, filtraggio di liveness &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> da nostr.watch e Thompson sampling per trasformare la selezione dei relay da un&amp;rsquo;euristica fissa in una policy appresa. I client hanno a lungo trattato la scelta dei relay come dati di configurazione. Sempre più app ora la trattano come stato live che necessita di logica di misurazione e riparazione.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="primal-android-307">Primal Android 3.0.7&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>, il client Android di Primal, ha distribuito la &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a> con un nuovo ciclo di sondaggi e wallet. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/945">PR #945&lt;/a> aggiunge il voto nei sondaggi basato su zap, la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/948">PR #948&lt;/a> pagina il caricamento dei voti in modo che i sondaggi più grandi restino utilizzabili, e la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/965">PR #965&lt;/a> recupera le ricevute zap per tutte le transazioni. Lo stesso rilascio tagga anche gli event supportati con metadati client &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> (Recommended Application Handlers) nella &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/968">PR #968&lt;/a>, che aiuta i client downstream ad attribuire le origini degli event in modo più pulito.&lt;/p>
&lt;h3 id="amber-v413">Amber v4.1.3&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Come da copertura di Amber della settimana scorsa&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;app signer Android per i flussi &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), ha distribuito la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a>. Il rilascio si basa sul suo recente lavoro relay-auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> con più hardening operativo: la &lt;a href="https://github.com/greenart7c3/Amber/pull/327">PR #327&lt;/a> aggiunge Tor integrato insieme al supporto Orbot, la &lt;a href="https://github.com/greenart7c3/Amber/pull/324">PR #324&lt;/a> sostituisce i permessi di cifratura grossolani basati sui NIP con regole specifiche per tipo di contenuto, e la &lt;a href="https://github.com/greenart7c3/Amber/pull/336">PR #336&lt;/a> rimuove i permessi di rete dal flavor offline mentre la &lt;a href="https://github.com/greenart7c3/Amber/pull/335">PR #335&lt;/a> aggiunge controlli CI per mantenerli così. La &lt;a href="https://github.com/greenart7c3/Amber/pull/322">PR #322&lt;/a> sposta anche lo storage del PIN nel DataStore cifrato.&lt;/p>
&lt;p>Questo rilascio stringe il confine del signer stesso. Questo è utile per qualsiasi flusso Android che affida chiavi reali o decisioni di relay-auth ad Amber, perché la parte difficile non è solo cosa il signer può fare. È anche quanto strettamente può essere limitato nel suo ambito.&lt;/p>
&lt;h3 id="route96-v060">Route96 v0.6.0&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Come da copertura di Route96 della settimana scorsa&lt;/a>, &lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, il media server che supporta Blossom e &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> (HTTP File Storage), ha rilasciato la &lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>. Il rilascio sposta la configurazione e lo stato della whitelist nel database con hot reload e aggiunge policy di conservazione per file freddi o invecchiati. Aggiunge anche un endpoint &lt;code>GET /user/files&lt;/code> più ricco e il tracciamento delle statistiche dei file per download e egress, che dà agli operatori maggiore visibilità su come il loro storage server viene utilizzato.&lt;/p>
&lt;h3 id="openchat-v010-alpha11">OpenChat v0.1.0-alpha.11&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Come da copertura di OpenChat della settimana scorsa&lt;/a>, &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, il client chat basato su Avalonia costruito sullo stack Marmot, ha distribuito la &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a> dopo una settimana di lavoro rapido sul protocollo. Il &lt;a href="https://github.com/DavidGershony/openChat/commit/c33895d6b1a198f01b9b01a7be974bdce033fb9c">commit c33895d&lt;/a> avvolge gli event Welcome in gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> e rimuove i vecchi shim di normalizzazione tag MIP-00, il &lt;a href="https://github.com/DavidGershony/openChat/commit/2738ff428154f60f50debb8f2a53662d427b28f1">commit 2738ff4&lt;/a> completa l&amp;rsquo;audit di conformità MIP-02, e il &lt;a href="https://github.com/DavidGershony/openChat/commit/8e470cf7945bced010168c8229d73d67db638b9f">commit 8e470cf&lt;/a> fa lo stesso per la cifratura dei messaggi di gruppo MIP-03. Il &lt;a href="https://github.com/DavidGershony/openChat/commit/129ca37e264efaa2d1a8b04fe95cd72e5e212547">commit 129ca37&lt;/a> consolida anche la gestione NIP-44 sull&amp;rsquo;implementazione marmot-cs condivisa, riducendo il rischio di deriva crittografica lato client.&lt;/p>
&lt;h3 id="nak-v0190-e-v0191">nak v0.19.0 e v0.19.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il toolkit Nostr a riga di comando di fiatjaf, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.0">v0.19.0&lt;/a> e la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a>. La serie 0.19 aggiunge una UI group-forum nel &lt;a href="https://github.com/fiatjaf/nak/commit/5f4efdbc69a36fc80ea3f97b2cdee1db6a7c5b47">commit 5f4efdb&lt;/a>, passa le modifiche dei metadati di gruppo a un flusso di sostituzione completa nel &lt;a href="https://github.com/fiatjaf/nak/commit/da0b75337198010687aceb6a07bbae67407faee3">commit da0b753&lt;/a>, e sostituisce la vecchia gestione &lt;code>no-text&lt;/code> con &lt;code>supported_kinds&lt;/code> nel &lt;a href="https://github.com/fiatjaf/nak/commit/bef67d35d259e0450debf0fd870e1a937a2406bf">commit bef67d3&lt;/a>. Per gli implementatori di gruppi, questo mantiene la CLI allineata con la direzione in cui si stanno muovendo le specifiche e i client dei gruppi.&lt;/p>
&lt;h2 id="aggiornamenti-progetti">Aggiornamenti Progetti&lt;/h2>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Come da copertura di Amethyst della settimana scorsa&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android con una delle superfici protocollari più ampie in Nostr, ha continuato a costruire sul suo lavoro wallet e relay dopo la patch NIP-47. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1853">PR #1853&lt;/a> aggiunge query COUNT &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (Event Counting) nelle schermate di gestione relay, così gli utenti possono vedere quanti event ogni relay detiene effettivamente per home feed, notifiche, DM e dati indice. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1849">PR #1849&lt;/a> aggiunge caricamenti di file cifrati per le chat &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), con un percorso di retry per caricamenti non cifrati quando un host di storage rifiuta la versione cifrata.&lt;/p>
&lt;p>La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1791">PR #1791&lt;/a> porta anche il login bunker desktop completo &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) con un indicatore heartbeat, che è importante perché i fallimenti di firma remota spesso appaiono come rotture casuali della UI dal lato dell&amp;rsquo;utente. Il client mostra se il signer è attivo e quanto recentemente ha risposto, rendendo anche ovvio quando la sessione corrente usa un bunker.&lt;/p>
&lt;h3 id="nostria">Nostria&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, il client multi-piattaforma costruito attorno a uno stack local-first, ha unito la &lt;a href="https://github.com/nostria-app/nostria/pull/561">PR #561&lt;/a> aggiungendo il filtraggio Web of Trust per feed e risposte nei thread. La funzionalità usa i dati di ranking del trust-service esistente e li espone sia come filtro feed che come filtro risposte, nascondendo gli autori il cui rank non supera la soglia preservando la struttura del thread quando sono presenti discendenti fidati. Questo dà agli utenti un livello intermedio tra &amp;ldquo;mostra tutti&amp;rdquo; e la curazione basata su liste hardcoded.&lt;/p>
&lt;p>La stessa settimana ha portato anche la &lt;a href="https://github.com/nostria-app/nostria/pull/563">PR #563&lt;/a>, che aggiunge filtraggio dei contenuti e supporto repost alla pagina sommario. Fuori dalla lista PR tracciata, Nostria ha anche completato più della sua superficie per utenti avanzati. Ora supporta l&amp;rsquo;ultimo servizio Web of Trust di Brainstorm con registrazione in-app, insieme a flussi di invio e ricezione denaro nei DM usando NWC e fatture BOLT-11. Aggiunge anche la gestione GIF nativa Nostr tramite l&amp;rsquo;emoji NIP e un percorso di importazione RSS più robusto per i musicisti che può raccogliere gli split Lightning esistenti dai feed podcast. Nostria tratta ranking, media, pagamenti e pubblicazione come un&amp;rsquo;unica superficie app connessa.&lt;/p>
&lt;h3 id="nostur">Nostur&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, il client iOS mantenuto da nostur-com, ha aperto la &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a> per trasformare il routing outbox da un piano fisso in una policy con punteggio. La patch aggiunge scoring randomizzato dei relay, filtraggio di liveness &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> con un feed nostr.watch in cache, e Thompson sampling in modo che i dati di successo e fallimento dei relay cambino le selezioni future. Il design mantiene una valvola di sicurezza quando troppi relay verrebbero filtrati e preserva i relay &lt;code>.onion&lt;/code>. Questo è uno degli esempi più chiari attualmente di un client che tratta la selezione dei relay come un sistema adattivo.&lt;/p>
&lt;h3 id="nostrability-outbox">Nostrability Outbox&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">Come dal precedente report sui benchmark Outbox&lt;/a>, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a>, il progetto di benchmark e analisi focalizzato sul routing client &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>, ha dedicato la settimana a stringere le proprie affermazioni. La &lt;a href="https://github.com/nostrability/outbox/pull/35">PR #35&lt;/a> sostituisce i risultati Thompson-sampling gonfiati con un re-benchmark completo su 1.511 esecuzioni e raccomanda la variante &lt;code>CG3&lt;/code> per il routing in stile NDK. La &lt;a href="https://github.com/nostrability/outbox/pull/43">PR #43&lt;/a> aggiunge decadimento e confronti per caso d&amp;rsquo;uso, corregge un bug di cache-poisoning &lt;code>0 follows&lt;/code>, poi riesegue il dataset Telluride dopo aver fissato i TTL della cache.&lt;/p>
&lt;p>Questo non è lavoro di prodotto nel senso usuale, ma è importante per gli autori di client perché i numeri del progetto sono ora più precisi e meno lusinghieri nei punti in cui avevano precedentemente sovrastimato. Il risultato corretto è comunque utile. La selezione randomizzata continua a battere il routing puramente deterministico nei casi di cui Outbox si occupa, l&amp;rsquo;apprendimento in stile Thompson può migliorare materialmente la copertura quando i client persistono la cronologia utile dei relay, e il filtraggio di liveness &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> riduce il tempo sprecato su relay inattivi. Il lavoro si sta anche trasformando in proposte di implementazione concrete, incluse &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/387">NDK #387&lt;/a>, &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">Nostur #53&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1833">Amethyst #1833&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1282">rust-nostr #1282&lt;/a>, &lt;a href="https://github.com/coracle-social/welshman/pull/53">welshman #53&lt;/a>, e &lt;a href="https://github.com/hzrd149/applesauce/pull/54">applesauce #54&lt;/a> più &lt;a href="https://github.com/hzrd149/applesauce/pull/55">applesauce #55&lt;/a>.&lt;/p>
&lt;h3 id="backend-white-noise">Backend White Noise&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>, il backend Rust usato da White Noise e altri strumenti Marmot, ha unito due patch di hardening al confine della gestione media Blossom. La &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/637">PR #637&lt;/a> impone HTTPS sugli URL Blossom e aggiunge un timeout di upload, mentre la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/642">PR #642&lt;/a> limita i download blob a &lt;code>100 MiB&lt;/code> per impedire che pull di media sovradimensionati si trasformino in un percorso denial-of-service. Per il software di messaggistica privata, gli URL dei media sono una delle interfacce più critiche tra la logica applicativa cifrata e l&amp;rsquo;infrastruttura di rete non fidata. Questa settimana il team ha stretto quel confine.&lt;/p>
&lt;h3 id="rust-nostr">rust-nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>, la libreria Rust per il protocollo, ha unito la &lt;a href="https://github.com/rust-nostr/nostr/pull/1280">PR #1280&lt;/a> aggiungendo costruttori di convenienza per &lt;code>LocalRelayBuilderNip42&lt;/code>. I nuovi helper di lettura e scrittura danno ai setup di relay embedded e test un modo più chiaro per trasformare la policy auth &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> in codice. Questa è una piccola patch alla libreria, ma è importante per i team che costruiscono relay locali o integrati nelle app che necessitano di auth attivata senza ripetere boilerplate ogni volta.&lt;/p>
&lt;h3 id="pika">Pika&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/">Come dalla copertura precedente di Pika&lt;/a>, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;app di messaggistica basata su Marmot, ha distribuito &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a> e &lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v1.1.1">pikachat-v1.1.1&lt;/a> con un ciclo di rilascio focalizzato sulla convergenza del runtime. La &lt;a href="https://github.com/sledtools/pika/pull/542">PR #542&lt;/a> introduce una facade runtime Marmot condivisa per CLI e sidecar, con l&amp;rsquo;host dell&amp;rsquo;app che si sposta sulla stessa superficie. La &lt;a href="https://github.com/sledtools/pika/pull/556">PR #556&lt;/a> stringe il ciclo di vita degli agenti OpenClaw e lo stato di provisioning, mentre la &lt;a href="https://github.com/sledtools/pika/pull/600">PR #600&lt;/a> aggiunge il ripristino da backup e una sicurezza di recovery più rigorosa per gli ambienti gestiti.&lt;/p>
&lt;p>La superficie utente diretta qui è più piccola rispetto all&amp;rsquo;ultimo writeup su Pika, ma il cambiamento architetturale è significativo. Riunire logica di gruppo, media, chiamate e sessioni dietro un unico runtime condiviso riduce la possibilità che app e daemon divergano man mano che lo stack Marmot cresce.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> (Wiki): Passaggio da Asciidoc a Djot&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>): I contenuti wiki su kind &lt;code>30818&lt;/code> ora usano Djot come formato di markup canonico. Il testo unito aggiunge il comportamento esplicito dei wikilink, esempi di merge-request per kind &lt;code>818&lt;/code>, esempi di redirect per kind &lt;code>30819&lt;/code>, e esempi di normalizzazione per script non latini nei tag &lt;code>d&lt;/code>. Questo dà agli implementatori un target di parsing più pulito rispetto ad Asciidoc e rimuove un altro percorso di specifica che dipendeva da un toolchain centrato su Ruby.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities): Aggiunta limite di input&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2264">PR #2264&lt;/a>): La specifica ora raccomanda di limitare le stringhe di entità codificate Bech32 a 5000 caratteri. Questa è una piccola modifica con valore reale per i parser, perché le stringhe NIP-19 ora appaiono nei flussi QR, deep link, fogli di condivisione e input incollato dagli utenti in molti client.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>File Nostr Key per &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2269">PR #2269&lt;/a>): Propone un formato di file &lt;code>.nostrkey&lt;/code> per l&amp;rsquo;esportazione e importazione di chiavi cifrate con password. Se unito, darebbe ai client un percorso di backup basato su file più normale rispetto alla copia di stringhe &lt;code>ncryptsec&lt;/code> grezze.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Consistenza dello stato di appartenenza per &lt;a href="https://nostrcompass.org/it/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2267">PR #2267&lt;/a>): Aggiunge una sezione che chiarisce che i relay dovrebbero mantenere un unico stato di appartenenza autoritativo per pubkey. Questo semplificherebbe la logica dei client di gruppo attorno ai cambiamenti di appartenenza e alla cronologia riprodotta.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Guida alla cancellazione per &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2260">PR #2260&lt;/a>): Propone un percorso concreto per la modifica e cancellazione dei messaggi privati attraverso event di cancellazione avvolti in gift wrap. Il lavoro è ancora aperto, ma gli autori di client necessitano di una risposta qui se NIP-17 deve sostituire completamente i vecchi flussi DM.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>URI Share-intent per &lt;a href="https://nostrcompass.org/it/topics/nip-222/">NIP-222&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2266">PR #2266&lt;/a>): La bozza standardizzerebbe come le app mobile e desktop passano contenuti condivisi in un client Nostr. Questo è uno dei confini di interoperabilità più ruvidi nei flussi app-to-app attuali.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-94-file-metadata">NIP Deep Dive: NIP-94 (File Metadata)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> definisce kind &lt;code>1063&lt;/code> come un event di metadati di prima classe per un file. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/94.md">specifica&lt;/a> dà all&amp;rsquo;event il suo &lt;code>content&lt;/code> leggibile più tag leggibili dalle macchine per URL di download, tipo MIME, hash, dimensioni, anteprime, fallback e hint sul servizio di storage. Questo è importante perché il file diventa interrogabile sui relay come oggetto a sé stante. Un client non deve estrarre i metadati dal contenuto circostante per capire cos&amp;rsquo;è il file.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;6a92ef8d7c3a1b5d4e8f9a0b1c2d3e4f567890abcdef1234567890abcdef1234&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a697887766554433221100ffeeddccbbaa99887766554433221100&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1742342400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1063&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;url&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/notedeck-macos-universal.tar.gz&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;m&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;application/gzip&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;x&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4a5b6c7d8e9f00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;ox&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4a5b6c7d8e9f00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;size&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;48392011&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;dim&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0x0&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;magnet&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;magnet:?xt=urn:btih:00112233445566778899aabbccddeeff00112233&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;00112233445566778899aabbccddeeff00112233&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;blurhash&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;LEHV6nWB2yk8pyo0adR*.7kCMdnj&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;thumb&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/thumb.png&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bbccddeeff00112233445566778899aabbccddeeff0011223344556677889900&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/screenshot.png&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ccddeeff00112233445566778899aabbccddeeff001122334455667788990011&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Signed macOS release artifact for Notedeck v0.8.0-rc2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;alt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Notedeck desktop release archive&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;fallback&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://mirror.example.net/notedeck/v0.8.0-rc2/notedeck-macos-universal.tar.gz&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;service&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip96&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Notedeck macOS universal build&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;11aa22bb33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889911aa22bb33cc44dd55ee66ff77889900aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I tag fanno più lavoro di quanto appaia a prima vista. &lt;code>x&lt;/code> identifica il file servito, mentre &lt;code>ox&lt;/code> identifica il file originale prima di qualsiasi trasformazione lato server. I tag di anteprima permettono ai client di costruire indici di file navigabili senza scaricare l&amp;rsquo;intero asset, e &lt;code>summary&lt;/code> può portare un breve estratto accanto ad essi. &lt;code>fallback&lt;/code> fornisce una seconda sorgente quando l&amp;rsquo;URL principale fallisce, e &lt;code>service&lt;/code> indica il protocollo di storage dietro il file, come &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> o un altro host. NIP-94 si colloca quindi sotto il posting sociale e sopra lo storage grezzo. Descrive il file, non la conversazione attorno al file.&lt;/p>
&lt;p>Ecco perché l&amp;rsquo;updater di Notedeck di questa settimana è interessante. La &lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a> usa event firmati di kind &lt;code>1063&lt;/code> per la scoperta dei rilasci software, poi verifica il binario scaricato rispetto allo SHA256 pubblicato. La stessa forma di event può descrivere un artefatto software o un upload media. NIP-94 è abbastanza vecchio da essere stabile, ma ha ancora spazio per crescere perché sempre più progetti trattano gli event di metadati come un trasporto per le macchine, non solo come decorazione per le persone.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-54-wiki">NIP Deep Dive: NIP-54 (Wiki)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> definisce kind &lt;code>30818&lt;/code> come un event articolo wiki. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/54.md">specifica&lt;/a> tratta il tag &lt;code>d&lt;/code> come l&amp;rsquo;argomento normalizzato dell&amp;rsquo;articolo e permette a molti autori di pubblicare voci per lo stesso soggetto. Il corpo dell&amp;rsquo;articolo vive in &lt;code>content&lt;/code>, mentre i tag gestiscono identità normalizzata, titolo di visualizzazione, sommari e riferimenti a versioni precedenti. Questo significa che NIP-54 non è solo un formato di contenuto. È anche un problema di recupero e ranking, perché ogni client deve ancora decidere quale versione dell&amp;rsquo;articolo mostrare.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;8c94e5d1f2a300112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1742342400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30818&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-wiki&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Wiki&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Djot-formatted reference article about Nostr wiki events&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30818:11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff:nostr-wiki&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.org&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fork&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.org&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fork&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Nostr is a [protocol][] for carrying events across relays.\n\n[protocol]: nostr:nevent1example&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889900112233cc44dd55ee66ff77889900aabbccddeeff00112233445566778899001122&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il merge di questa settimana cambia il markup canonico da Asciidoc a Djot nella &lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>. Questo è importante per gli implementatori perché Djot ha una specifica standalone più stretta e una storia di parser più semplice attraverso i linguaggi. Il testo unito chiarisce anche come i wikilink in stile reference si risolvono, come le merge request usano kind &lt;code>818&lt;/code>, come i redirect usano kind &lt;code>30819&lt;/code>, e come la normalizzazione del tag &lt;code>d&lt;/code> dovrebbe comportarsi per gli script non latini. Queste sono le parti che fanno sì che due client indipendenti concordino su quale articolo un link punta.&lt;/p>
&lt;p>NIP-54 occupa anche un posto insolito nel protocollo. Un client wiki necessita di rendering del contenuto, ma necessita anche di una policy di ranking. Reazioni, liste relay, liste contatti e segnali di deferenza espliciti alimentano tutti quale articolo vince per un dato argomento. Il passaggio a Djot non risolve quel problema di ranking, ma rimuove una delle ambiguità del parser che stava sotto di esso. Ecco perché il merge è importante ora: la modifica riguarda meno la formattazione della prosa più bella e più il rendere il comportamento wiki multi-client più facile da implementare in modo consistente.&lt;/p>
&lt;p>Stai costruendo qualcosa, o vuoi che lo copriamo? Contattaci tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> su Nostr a &lt;code>npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923&lt;/code>.&lt;/p></content:encoded></item><item><title>Nostr Compass #13</title><link>https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> e &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> aggiungono superfici MCP per il commercio guidato da agenti, mentre &lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> e &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> aggiungono relay-auth e supporto agli event protetti di &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> in software per app, signer e relay. &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> distribuisce due release incentrate su etichettatura AI, code di moderazione, perceptual hashing e documentazione server machine-readable. &lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, già live sul web, ha rilasciato la sua prima alpha Android e in seguito ha aggiunto il supporto signer di &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>. &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> aggiunge la registrazione tramite &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce il lavoro di risoluzione &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> basato su Namecoin, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> rilascia la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>, e il repository NIPs unisce &lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a> e le linee guida difensive per &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> e &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> aggiungono superfici MCP per il commercio guidato da agenti, mentre &lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> e &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> aggiungono relay-auth e supporto agli event protetti di &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> in software per app, signer e relay. &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> distribuisce due release incentrate su etichettatura AI, code di moderazione, perceptual hashing e documentazione server machine-readable. &lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, già live sul web, ha rilasciato la sua prima alpha Android e in seguito ha aggiunto il supporto signer di &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>. &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> aggiunge la registrazione tramite &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> distribuisce il lavoro di risoluzione &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> basato su Namecoin, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> rilascia la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>, e il repository NIPs unisce &lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a> e le linee guida difensive per &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="shopstr-e-milk-market-aprono-superfici-mcp-per-il-commercio">Shopstr e Milk Market aprono superfici MCP per il commercio&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, il marketplace peer-to-peer con pagamenti Lightning e Cashu, ha unito &lt;a href="https://github.com/shopstr-eng/shopstr/pull/234">PR #234&lt;/a> (&lt;a href="https://github.com/shopstr-eng/shopstr/commit/94ef7d1a4519e8e0158668d13c8cb8684b1d46e2">commit 94ef7d1&lt;/a>), aggiungendo un server MCP con autenticazione API key per la gestione degli account degli agenti. La modifica aggiunge &lt;code>.well-known/agent.json&lt;/code> per la discovery degli agenti, endpoint MCP per onboarding e stato, route per la creazione degli ordini e la verifica dei pagamenti, strumenti dedicati per acquisto e lettura, e una schermata impostazioni per le API key. &lt;a href="https://github.com/shopstr-eng/shopstr/pull/236">PR #236&lt;/a> estende il tutto con azioni lato venditore per messaggi, indirizzi, aggiornamenti degli ordini e selezione delle specifiche di prodotto. Una correzione di sicurezza in &lt;a href="https://github.com/shopstr-eng/shopstr/pull/235">PR #235&lt;/a> sostituisce l&amp;rsquo;hashing delle API key con SHA-256 a singola iterazione con PBKDF2 salato a 100.000 iterazioni.&lt;/p>
&lt;p>Gli agenti possono leggere gli annunci di &lt;a href="https://nostrcompass.org/it/topics/nip-99/">NIP-99&lt;/a> e procedere al checkout usando i flussi di pagamento esistenti di &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> senza dover fare scraping delle pagine o reverse-engineering del comportamento del client.&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, marketplace alimentare su Nostr attivo su &lt;a href="https://milk.market">milk.market&lt;/a>, ha introdotto la stessa base MCP e API key nel &lt;a href="https://github.com/shopstr-eng/milk-market/commit/da6c0b499494b4e4861c4ff8a220e066c46285b3">commit da6c0b4&lt;/a>. &lt;a href="https://github.com/shopstr-eng/milk-market/pull/10">PR #10&lt;/a> aggiunge ordini in abbonamento, modifica dell&amp;rsquo;indirizzo di spedizione dopo l&amp;rsquo;acquisto, e gestione del checkout multi-merchant e multi-valuta per Stripe e altri percorsi di pagamento fiat. Una successiva &lt;a href="https://github.com/shopstr-eng/milk-market/pull/11">PR #11&lt;/a> corregge un bug di inizializzazione del database all&amp;rsquo;avvio in cui la tabella delle pubblicazioni relay fallite non veniva creata nelle installazioni nuove, causando errori 500 al primo caricamento. L&amp;rsquo;interfaccia rivolta agli agenti funziona con checkout Bitcoin-native su Shopstr o con checkout misto fiat e Bitcoin su Milk Market.&lt;/p>
&lt;h3 id="nip-42-relay-auth-tra-bunker-signer-e-relay">NIP-42 relay auth tra bunker, signer e relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, un bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> che collega provider OAuth alla firma Nostr, ha aggiunto il login &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>, la selezione automatica della singola identità e la pulizia delle identità eliminate (&lt;a href="https://github.com/flox1an/oauth-bunker/commit/f0c7683cb2374fd9a3ebd1b186055da8abd2c2ff">commit f0c7683&lt;/a>). Quando esiste una sola identità, il bunker ora la seleziona automaticamente invece di chiedere all&amp;rsquo;utente. L&amp;rsquo;eliminazione di un&amp;rsquo;identità rimuove anche assegnazioni e connessioni rimaste orfane. Il &lt;a href="https://github.com/flox1an/oauth-bunker/commit/6b8796c6c59c7d48dc1ede92d6de6bf54feb56cc">commit 6b8796c&lt;/a> aggiunge un percorso di configurazione &lt;code>ALWAYS_ALLOWED_KINDS&lt;/code> per gli utenti assegnati, con kind &lt;code>30078&lt;/code> come valore predefinito per i dati specifici dell&amp;rsquo;app, così le identità delegate possono scrivere nello storage dell&amp;rsquo;app senza approvazione per ogni event.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, il signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> principale su Android, ha distribuito la &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3-pre4">v4.1.3-pre4&lt;/a> insieme a quattro pre-release nel corso della settimana. &lt;a href="https://github.com/greenart7c3/Amber/pull/317">PR #317&lt;/a> aggiunge la gestione dell&amp;rsquo;autenticazione relay &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> per richieste di kind &lt;code>22242&lt;/code>. L&amp;rsquo;implementazione aggiunge una nuova colonna nel database che traccia i permessi specifici per relay con un indice univoco su &lt;code>(pkKey, type, kind, relay)&lt;/code>. Gli utenti vedono una schermata auth dedicata dove possono concedere o negare il permesso per relay singolo o per tutti i relay con wildcard &lt;code>*&lt;/code>, e salvare quella scelta. I permessi wildcard cancellano tutte le voci specifiche per relay di quel kind. &lt;a href="https://github.com/greenart7c3/Amber/pull/318">PR #318&lt;/a> segue con un refactor delle schermate per richieste multi-event, che ora mostrano i dettagli inline tramite composable card invece di navigare verso una schermata separata. La release aggiorna anche i relay profilo predefiniti, aggiunge la visualizzazione delle richieste in bottom sheet e corregge un crash sui dispositivi MediaTek disabilitando il keystore StrongBox.&lt;/p>
&lt;p>Sul lato relay, &lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a> implementa la gestione auth NIP-42 per gli event protetti di &lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a>, e &lt;a href="https://github.com/hoytech/strfry/pull/176">PR #176&lt;/a> rifiuta i repost che incorporano event protetti.&lt;/p>
&lt;h3 id="notedeck-aggiunge-i-limiti-relay-di-nip-11-e-funzionalità-agentium">Notedeck aggiunge i limiti relay di NIP-11 e funzionalità Agentium&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop nativo del team Damus, ha unito 14 PR questa settimana. &lt;a href="https://github.com/damus-io/notedeck/pull/1316">PR #1316&lt;/a> aggiunge il recupero dei limiti relay di &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>, così tutti i relay outbox ora rispettano &lt;code>max_message_length&lt;/code> e &lt;code>max_subscriptions&lt;/code> dal relay information document. L&amp;rsquo;implementazione include elaborazione in background, exponential backoff con jitter per i retry di connessione e header HTTP Accept personalizzati. &lt;a href="https://github.com/damus-io/notedeck/pull/1312">PR #1312&lt;/a> corregge un bug per cui i DM talvolta non si caricavano dopo il cambio account, e &lt;a href="https://github.com/damus-io/notedeck/pull/1333">PR #1333&lt;/a> aggiunge un meccanismo di backoff alla comunicazione relay multicast per evitare broadcast spam in caso di errore.&lt;/p>
&lt;p>Il sottosistema Agentium, l&amp;rsquo;interfaccia integrata per agenti di coding di Notedeck chiamata internamente &amp;ldquo;Dave&amp;rdquo;, ha ricevuto il supporto all&amp;rsquo;incolla di immagini dalla clipboard, configurazioni di esecuzione nominate che si sincronizzano tra dispositivi tramite event kind &lt;code>31991&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-33/">NIP-33&lt;/a>, un creatore di git worktree e un model picker per selezionare backend diversi per sessione (&lt;a href="https://github.com/damus-io/notedeck/pull/1336">PR #1336&lt;/a>). &lt;a href="https://github.com/damus-io/notedeck/pull/1338">PR #1338&lt;/a> integra &lt;code>egui_kittest&lt;/code> per test UI headless, e &lt;a href="https://github.com/damus-io/notedeck/pull/1339">PR #1339&lt;/a> aggiunge una dashboard card che traccia la creazione di nuove contact list da parte dei client. Una &lt;a href="https://github.com/damus-io/notedeck/pull/1314">PR #1314&lt;/a> ancora aperta porta in Notedeck la risoluzione NIP-05 basata su Namecoin di Amethyst con lookup ElectrumX, routing SOCKS5 via Tor e integrazione nella barra di ricerca.&lt;/p>
&lt;h3 id="divine-distribuisce-la-v106-con-infrastruttura-di-test-e2e-e-import-nip-49">diVine distribuisce la v1.0.6 con infrastruttura di test E2E e import NIP-49&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client video short-form in loop che ripristina gli archivi Vine su &lt;a href="https://divine.video">divine.video&lt;/a>, ha distribuito la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.6">v1.0.6&lt;/a> con 127 PR unite. La release aggiunge l&amp;rsquo;import account &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>, supporto &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> esterno, gestione multi-account, build macOS e Linux sperimentale, e una libreria ridisegnata per draft e clip basata su storage locale.&lt;/p>
&lt;p>Sul lato engineering, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1928">PR #1928&lt;/a> aggiunge un&amp;rsquo;infrastruttura completa di test di integrazione E2E usando Patrol per l&amp;rsquo;automazione UI nativa contro uno stack backend Docker composto da relay, API, Blossom, Postgres, Redis e ClickHouse. Cinque test del percorso auth coprono registrazione, verifica, reset password, scadenza sessione e refresh del token. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2105">PR #2105&lt;/a> cambia il caricamento video da HLS-first a MP4 diretto con fallback automatico a HLS, riducendo i tempi di caricamento da 30-60 secondi a quasi istantanei. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2076">PR #2076&lt;/a> mette in cache la risposta API del feed home in SharedPreferences per la visualizzazione immediata a cold start. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2104">PR #2104&lt;/a> impone che le etichette di contenuto &lt;code>ai-generated&lt;/code> siano nascoste nei feed, e &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2100">PR #2100&lt;/a> aggiunge un&amp;rsquo;impostazione di sicurezza per mostrare solo video ospitati da diVine. La migrazione della cache profili da Hive a Drift prosegue nelle &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1881">PR #1881&lt;/a>, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1883">PR #1883&lt;/a> e &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1903">PR #1903&lt;/a>, sostituendo circa 1.074 linee di codice Hive con DAO Drift.&lt;/p>
&lt;h3 id="vector-v032-distribuisce-la-sincronizzazione-negentropy-di-nip-77-e-miglioramenti-mls">Vector v0.3.2 distribuisce la sincronizzazione negentropy di NIP-77 e miglioramenti MLS&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, messenger desktop orientato alla privacy che usa la cifratura di gruppo MLS con &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, ha distribuito la &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.2">v0.3.2&lt;/a>. La novità principale è la negentropy NIP-77 per la sincronizzazione dei gruppi MLS (&lt;a href="https://github.com/VectorPrivacy/Vector/commit/b06adf4af2673fb5ac5add01356999ea70628eac">commit b06adf4&lt;/a>), che recupera i messaggi persi molto più rapidamente tramite parallel boot. La release aggiunge anche un motore audio ricostruito con pieno supporto Linux, spoiler immagine con anteprime sfocate, hyperlink cliccabili con anteprime ricche, ping &lt;code>@mention&lt;/code> con &lt;code>@everyone&lt;/code> per gli admin dei gruppi, autocomplete per shortcode emoji, silenziamento dei gruppi, tap-to-react sulle reazioni esistenti e upload file annullabili. Vector filtra esplicitamente gli event di chat di gruppo NIP-17 (&lt;a href="https://github.com/VectorPrivacy/Vector/commit/2179a51c0449b3a70663a1573195b7945adf58ba">commit 2179a51&lt;/a>), usando MLS in modo esclusivo per la cifratura di gruppo.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="route96-v050-e-v051">Route96 v0.5.0 e v0.5.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, media server che supporta Blossom e &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a>, ha distribuito &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.0">v0.5.0&lt;/a> e &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">v0.5.1&lt;/a>. La v0.5.0 aggiunge etichettatura AI automatizzata, backfill retroattivo per upload non etichettati, code di moderazione per file segnalati, rifiuto basato su EXIF per la privacy e gestione degli hash vietati.&lt;/p>
&lt;p>La v0.5.1 aggiunge hash percettivi per immagini, locality-sensitive hashing per la ricerca di immagini simili, endpoint admin batch e un &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">&lt;code>SKILL.md&lt;/code>&lt;/a> pubblicato che descrive la superficie API Blossom e NIP-96 del server per gli strumenti agentici. &lt;a href="https://github.com/v0l/route96/pull/58">PR #58&lt;/a> sposta i background worker su task Tokio completamente asincroni, e il &lt;a href="https://github.com/v0l/route96/commit/97b00a39e27b07053c2ad335dbf475bacba57bf8">commit 97b00a3&lt;/a> aggiunge il backoff per evitare hot loop.&lt;/p>
&lt;h3 id="samizdat-v100-alpha">Samizdat v1.0.0-alpha&lt;/h3>
&lt;p>&lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, lettore e publisher long-form disponibile su &lt;a href="https://samizdat.press">samizdat.press&lt;/a>, ha distribuito la sua prima build Android nella &lt;a href="https://github.com/satsdisco/samizdat/releases/tag/v1.0.0-alpha">v1.0.0-alpha&lt;/a>. L&amp;rsquo;app si apre con una pagina Press curata di articoli long-form Nostr e navigazione bottom tab tra le viste Press, Feed, Saved e Write. La build Android aggiunge storage nativo delle chiavi tramite cifratura Android Keystore con sblocco biometrico, gestisce URI &lt;code>nostr:&lt;/code> e deep link &lt;code>samizdat.press&lt;/code>, e supporta il passaggio della firma tramite chooser delle app Android, Amber, Primal e altre, invece di richiedere l&amp;rsquo;import diretto delle chiavi. Pull-to-refresh, gestione delle safe area su schermi di dimensioni diverse, e integrazioni native per condivisione, clipboard, feedback aptico e splash screen fanno ora parte della shell Android invece del wrapper web.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/satsdisco/samizdat/commit/d17308f3c2e6020e14074fbb1c03a8f60f29a3e6">commit d17308f&lt;/a> aggiunge la firma intent-based &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> per i flussi Amber e Primal, e il &lt;a href="https://github.com/satsdisco/samizdat/commit/e29dab84f7b58edd621f7b86ed7ca6458f965614">commit e29dab8&lt;/a> sostituisce un workaround JavaScript bridge con un plugin Capacitor nativo che usa &lt;code>startActivityForResult&lt;/code>. L&amp;rsquo;app richiede Android 7.0+ (API 24), viene distribuita come APK debug in questa alpha e ancora non include notifiche push. La pubblicazione dipende al momento da un&amp;rsquo;app signer, mentre il login con &lt;code>nsec&lt;/code> copre la lettura locale e l&amp;rsquo;accesso all&amp;rsquo;account.&lt;/p>
&lt;h3 id="calendar-by-form-v020">Calendar by Form* v0.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>, calendario decentralizzato con condivisione di eventi privati tramite &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, disponibile su &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a>, ha distribuito la &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.0">v0.2.0&lt;/a> con &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/38">PR #38&lt;/a>. La release estende la gestione degli eventi ricorrenti di &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a>, andando oltre la base a evento singolo della v0.1.0. Le modifiche sottostanti toccano anche storage locale degli eventi, gestione del signer e plumbing delle notifiche Android. Questa è la seconda applicazione attiva dell&amp;rsquo;organizzazione Formstr dopo la migrazione del repository dello scorso mese.&lt;/p>
&lt;h3 id="mostro-v0164">Mostro v0.16.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, exchange Bitcoin peer-to-peer costruito su Nostr, ha rilasciato la &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>. Le correzioni per il ripristino delle sessioni di disputa (&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>) e la chiusura automatica (&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>), &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">coperte la settimana scorsa&lt;/a>, sono incluse. Nuove in questa release: &lt;a href="https://github.com/MostroP2P/mostro/pull/625">PR #625&lt;/a> aggiunge un campo &lt;code>days&lt;/code> agli event di rating utente di kind &lt;code>38384&lt;/code>, &lt;a href="https://github.com/MostroP2P/mostro/pull/612">PR #612&lt;/a> aggiunge la scadenza a quegli event di rating, e &lt;a href="https://github.com/MostroP2P/mostro/pull/614">PR #614&lt;/a> sposta gli event ordine verso le impostazioni di scadenza configurate invece di una finestra hardcoded di 24 ore. &lt;a href="https://github.com/MostroP2P/mostro/pull/622">PR #622&lt;/a> aggiunge un controllo di idempotenza per evitare pagamenti duplicati delle dev fee.&lt;/p>
&lt;h3 id="mostro-mobile-v121">Mostro Mobile v1.2.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, client Flutter per l&amp;rsquo;exchange P2P Mostro, ha distribuito la &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.1">v1.2.1&lt;/a> con 11 nuove funzionalità e 11 bug fix. La release aggiunge il rendering di contenuti multimediali cifrati nella chat di disputa (&lt;a href="https://github.com/MostroP2P/mobile/pull/514">PR #514&lt;/a>), la chiusura automatica della UI delle dispute quando gli ordini raggiungono uno stato terminale (&lt;a href="https://github.com/MostroP2P/mobile/pull/503">PR #503&lt;/a>), la scansione QR per importare wallet NWC (&lt;a href="https://github.com/MostroP2P/mobile/commit/12eaee4d154fa31b07f82b96819de520e825aee6">commit 12eaee4&lt;/a>), traduzioni francesi e gestione delle notifiche push FCM. &lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a> corregge un bug di padding delle firme Schnorr bloccando la dipendenza bip340 alla v0.2.0.&lt;/p>
&lt;h3 id="0xchat-v154">0xchat v1.5.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/0xchat-app/0xchat-app-main">0xchat&lt;/a>, client di messaggistica in stile Telegram con supporto Cashu, ha distribuito la &lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.4-release">v1.5.4&lt;/a> focalizzata sulle correzioni per Linux desktop: icone AppImage nel dock, rendering delle emoji, freeze nei menu contestuali e blocchi della UI per reply/copy. La release corregge anche i problemi di upload delle immagini e l&amp;rsquo;integrazione npub.cash. &lt;a href="https://github.com/0xchat-app/0xchat-app-main/pull/49">PR #49&lt;/a> elimina rebuild UI non necessari rimuovendo un timer di polling da 3 secondi che forzava repaint glassmorphic senza fare nulla, e sblocca l&amp;rsquo;inizializzazione del login eseguendo il caricamento della cache event in parallelo invece di bloccare l&amp;rsquo;avvio di relay, contatti e canali.&lt;/p>
&lt;h3 id="keep-v060">Keep v0.6.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, signer threshold FROST per Android con supporto &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, ha distribuito &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.0">v0.6.0&lt;/a> e &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.1">v0.6.1&lt;/a>. La v0.6.0 aggiunge coordinamento dei wallet descriptor e relativa UI di gestione, un flusso backup/restore con autenticazione biometrica (&lt;a href="https://github.com/privkeyio/keep-android/pull/184">PR #184&lt;/a>), recupero &lt;code>nsec&lt;/code> da threshold share (&lt;a href="https://github.com/privkeyio/keep-android/pull/187">PR #187&lt;/a>), generazione cross-platform di frame QR animati tramite Rust UniFFI (&lt;a href="https://github.com/privkeyio/keep-android/pull/188">PR #188&lt;/a>) e un audit trail della firma con verifica della chain (&lt;a href="https://github.com/privkeyio/keep-android/pull/189">PR #189&lt;/a>). La v0.6.1 cambia la licenza da AGPL-3.0 a MIT (&lt;a href="https://github.com/privkeyio/keep-android/pull/191">PR #191&lt;/a>).&lt;/p>
&lt;h3 id="njump-v030">njump v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/njump">njump&lt;/a>, gateway statico per visualizzare contenuti Nostr su &lt;a href="https://njump.me">njump.me&lt;/a>, ha distribuito la &lt;a href="https://github.com/fiatjaf/njump/releases/tag/v0.3.0">v0.3.0&lt;/a> con una modifica incompatibile nel parsing dei codici &lt;code>note1&lt;/code> e un aggiornamento della libreria nostr sottostante.&lt;/p>
&lt;h3 id="roadstr-v011">Roadstr v0.1.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/jooray/roadstr">Roadstr&lt;/a>, applicazione decentralizzata per segnalare eventi stradali usando Nostr, ha distribuito la sua prima demo &lt;a href="https://github.com/jooray/roadstr/releases/tag/v0.1.1">v0.1.1&lt;/a>. L&amp;rsquo;app mostra gli eventi stradali su una mappa usando vector tile da openfreemap.org.&lt;/p>
&lt;h3 id="bitcredit-v053">Bitcredit v0.5.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core">Bitcredit&lt;/a>, applicazione di e-bill con transport layer Nostr e relay dedicato su &lt;a href="https://www.bit.cr/">bit.cr&lt;/a>, ha distribuito la &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.3">v0.5.3&lt;/a>. &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/pull/846">PR #846&lt;/a> aggiunge i campi &lt;code>payment_actions&lt;/code> e &lt;code>bill_state&lt;/code> all&amp;rsquo;API per stato dei pagamenti e dell&amp;rsquo;accettazione, e &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/pull/849">PR #849&lt;/a> corregge la gestione dell&amp;rsquo;indirizzo di firma per signer anonimi.&lt;/p>
&lt;h3 id="openchat-v010-alpha3">OpenChat v0.1.0-alpha.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, applicazione chat costruita sulle librerie .NET MLS e C# del protocollo Marmot, ha distribuito la &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.3">v0.1.0-alpha.3&lt;/a>. La release aggiunge supporto a signer esterni per Amber e flussi &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (&lt;a href="https://github.com/DavidGershony/openChat/commit/e568d979fe15eead19172f2eb6f8cf26ca845247">commit e568d97&lt;/a>), sposta la persistenza dello stato MLS dentro il servizio MLS per eliminare la perdita di dati nella finestra di crash (&lt;a href="https://github.com/DavidGershony/openChat/commit/4720bc8625136a0d5b0e23322bc0c50cd80577e8">commit 4720bc8&lt;/a>), e pubblica build Windows, Linux e Android attraverso una nuova pipeline CI.&lt;/p>
&lt;h3 id="opensignal-v100">OpenSignal v1.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/turizspace/opensignal">OpenSignal&lt;/a>, trading copilot Kotlin Multiplatform per Nostr, ha distribuito la &lt;a href="https://github.com/turizspace/OpenSignal/releases/tag/v1.0.0">v1.0.0&lt;/a>. La release include moduli KMP condivisi per logica di dominio, rendering dei grafici, autenticazione e pubblicazione Nostr, supporto upload Blossom &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> e hook di inferenza AI basati su ONNX su shell Desktop e Android. L&amp;rsquo;architettura pubblicata include anche un servizio AI FastAPI per l&amp;rsquo;analisi di screenshot dei grafici, pipeline di training dei modelli e un motore di rischio che produce piani di trading strutturati con sizing e warning. Il login supporta chiavi &lt;code>nsec&lt;/code> grezze oppure signer esterni, e il flusso di output termina con la pubblicazione di event Nostr invece che con un&amp;rsquo;analisi solo locale.&lt;/p>
&lt;h2 id="aggiornamenti-progetto">Aggiornamenti Progetto&lt;/h2>
&lt;h3 id="formstr">Formstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;alternativa a Google Forms su Nostr, ha unito &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/434">PR #434&lt;/a> (&lt;a href="https://github.com/formstr-hq/nostr-forms/commit/e9c4fd5dadfa0b83f1e87d7596eaf35f9fdb7da8">commit e9c4fd5&lt;/a>), aggiungendo un flusso di registrazione che usa chiavi private cifrate &lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a>. Prima di questa modifica, gli utenti avevano bisogno di un&amp;rsquo;estensione browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> oppure di incollare una &lt;code>nsec&lt;/code> grezza per usare Formstr. Il nuovo flusso genera una coppia di chiavi lato client, cifra la chiave privata con una password scelta dall&amp;rsquo;utente tramite lo schema scrypt + XChaCha20-Poly1305 di NIP-49, e memorizza la stringa &lt;code>ncryptsec&lt;/code> risultante. Gli utenti possono quindi accedere di nuovo con la propria password senza installare un&amp;rsquo;estensione signer. La gestione delle chiavi resta interamente lato client.&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android ricco di funzionalità, ha unito quattro PR che distribuiscono il lavoro di risoluzione &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> supportato da Namecoin che era &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">aperto la settimana scorsa&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a> aggiunge una verifica NIP-05 resistente alla censura via ElectrumX per identificatori &lt;code>.bit&lt;/code>, &lt;code>d/&lt;/code> e &lt;code>id/&lt;/code>. Quando Amethyst rileva uno di questi suffissi in un campo NIP-05, interroga un server ElectrumX-NMC per la cronologia delle transazioni del nome, analizza lo script &lt;code>NAME_UPDATE&lt;/code> dall&amp;rsquo;ultimo output per estrarre la pubkey Nostr e rifiuta i nomi più vecchi di 36.000 blocchi, la finestra di scadenza di Namecoin. Le connessioni ElectrumX passano attraverso SOCKS5 quando Tor è attivo, con selezione dinamica del server tra endpoint clearnet e &lt;code>.onion&lt;/code>. Una cache LRU con TTL di un&amp;rsquo;ora evita interrogazioni ripetute della blockchain.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1771">PR #1771&lt;/a> corregge race condition e accuratezza del resolver in quel flusso. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1785">PR #1785&lt;/a> permette ai nuovi utenti di importare una follow list durante la registrazione sia da normali identificatori NIP-05 sia da quelli supportati da Namecoin. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1786">PR #1786&lt;/a> aggiunge impostazioni personalizzate per il server ElectrumX così gli utenti possono scegliere quale server gestirà i loro lookup.&lt;/p>
&lt;h3 id="nostr-idb">nostr-idb&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/nostr-idb">nostr-idb&lt;/a>, libreria che fornisce metodi helper per memorizzare event Nostr in IndexedDB, ha unito &lt;a href="https://github.com/hzrd149/nostr-idb/pull/6">PR #6&lt;/a> aggiungendo il supporto ai filtri tag AND di &lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a>. La modifica aggiunge semantica di intersezione al matching lato client dei filtri, così le query IndexedDB possono richiedere tutti i valori tag elencati invece di uno qualsiasi. &lt;a href="https://github.com/hzrd149/nostr-idb/pull/8">PR #8&lt;/a> aggiorna la libreria all&amp;rsquo;ultima interfaccia NIP-DB, e un successivo &lt;a href="https://github.com/hzrd149/nostr-idb/commit/b49b3d32c575ff8214dc3fb07675109c2a971972">commit b49b3d3&lt;/a> corregge un deadlock di subscribe e rimuove nostr-tools come dipendenza di produzione.&lt;/p>
&lt;h3 id="pensieve">Pensieve&lt;/h3>
&lt;p>&lt;a href="https://github.com/andotherstuff/pensieve">Pensieve&lt;/a>, indicizzatore Nostr archive-first con analytics ClickHouse, ha unito &lt;a href="https://github.com/andotherstuff/pensieve/pull/8">PR #8&lt;/a> aggiungendo enforcement del TTL della cache per entry e coalescing dei miss per chiave, così da ridurre i picchi di CPU API. Gli endpoint time-series più costosi, statistiche di engagement, attività oraria e attività per kind, usano ora TTL server-side di 10 minuti invece di innescare tempeste di ricalcolo sincronizzate.&lt;/p>
&lt;h3 id="blossom">Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>, protocollo e stack server per l&amp;rsquo;hosting media decentralizzato, ha unito due aggiornamenti di autorizzazione BUD-11. &lt;a href="https://github.com/hzrd149/blossom/pull/91">PR #91&lt;/a> sposta l&amp;rsquo;autorizzazione opzionale in un BUD dedicato e chiarisce il ruolo dei tag &lt;code>x&lt;/code> e &lt;code>server&lt;/code>. &lt;a href="https://github.com/hzrd149/blossom/pull/93">PR #93&lt;/a> ripulisce il comportamento auth specifico per endpoint e formalizza l&amp;rsquo;header &lt;code>X-SHA-256&lt;/code> per la verifica degli upload. Le due PR consolidano la logica auth in BUD-11 e rimuovono ambiguità sull&amp;rsquo;hashing delle richieste nei flussi di upload, delete e media management.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Cambiamenti recenti nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-91/">NIP-91&lt;/a> (AND Operator for Filters)&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1365">PR #1365&lt;/a>): aggiunge semantica di intersezione per i filtri tag, permettendo ai relay di rispondere a query che richiedono tutti i valori tag elencati invece di uno qualsiasi. Riduce il post-filtering lato client e la larghezza di banda nelle query ricche di tag.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring): misure difensive&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">PR #2240&lt;/a>): dopo il &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">lavoro di benchmark outbox coperto la settimana scorsa&lt;/a>, la specifica aggiunge ora avvertimenti sui percorsi sfavorevoli dei dati di monitoraggio relay. I client non devono richiedere event di monitoraggio kind &lt;code>30166&lt;/code> per funzionare. Un monitor può essere errato, obsoleto o malevolo. Ci si aspetta che i client incrocino le fonti ed evitino di tagliare ampie parti del grafo relay di un utente basandosi su un singolo feed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (External Identities in Profiles): pulizia del registry kind 10011&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2256">PR #2256&lt;/a>): aggiunge il riferimento al kind &lt;code>10011&lt;/code> direttamente nella specifica, allineandosi con l&amp;rsquo;implementazione di Amethyst &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">coperta la settimana scorsa&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR aperte e discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a> (Protected Events): rifiutare i repost che incorporano event protetti&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a>): se un relay applica NIP-70 all&amp;rsquo;event originale ma accetta repost che trasportano lo stesso contenuto, il tag &lt;code>-&lt;/code> non ha effetto pratico. Questa PR aggiunge la regola per cui i relay devono rifiutare anche i repost di kind 6 e kind 16 degli event protetti. &lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a> lo implementa già.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> (Video Events): tracce audio multiple&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a>): aggiunge tag audio &lt;code>imeta&lt;/code> per tracce alternative, varianti linguistiche e stream solo audio. Un client potrebbe mantenere stabile il file video cambiando lingua audio, oppure servire l&amp;rsquo;audio come traccia separata per contenuti tipo podcast.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document) e attributi relay di &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2257">PR #2257&lt;/a>): aggiunge un campo &lt;code>attributes&lt;/code> strutturato ai relay information document, fornendo a client e strumenti di discovery metadati machine-readable oltre l&amp;rsquo;attuale descrizione a testo libero.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-49-cifratura-della-chiave-privata">NIP Deep Dive: NIP-49 (Cifratura della chiave privata)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-49/">NIP-49&lt;/a> definisce come un client cifra una chiave privata con una password e codifica il risultato come stringa bech32 &lt;code>ncryptsec&lt;/code>. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/#formstr">Formstr&lt;/a> usa NIP-49 nel suo nuovo flusso di registrazione.&lt;/p>
&lt;p>Il formato non è legato a un kind di event dedicato. Un client parte dalla chiave privata secp256k1 grezza a 32 byte, deriva una chiave simmetrica dalla password dell&amp;rsquo;utente con scrypt, cifra la chiave usando XChaCha20-Poly1305, poi incapsula il risultato in una stringa bech32 &lt;code>ncryptsec&lt;/code>. Un flag di un byte registra se la chiave è mai stata gestita in modo insicuro prima della cifratura.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;4d47f4f0a6f6edbc1bbd7f4e2a45ec68f27cba91d6c6ab5cf28d8d87b0f3d57e&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1f8b4c3e7b0f9451d4f9b8a7c6e5d4c3b2a1908f7e6d5c4b3a29181716151413&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1741699200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30078&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;encrypted-key-backup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;format&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ncryptsec&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip49&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;ncryptsec1qgg9947rlpvqu76pj5ecreduf9jxhselq2nae2kghhvd5g7dgjtcxfqtd67p9m0w57lspw8gsq6yphnm8623nsl8xn9j4jdzz84zm3frztj3z7s35vpzmqf6ksu8r89qk5z2zxfmu5gv8th8wclt0h4p&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;6a8f6e4b2d1901735f0ad4b6e8c1f3a579d0e2b4c6f8a1d3e5f7091b2c3d4e5f11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>L&amp;rsquo;event JSON sopra è un esempio a livello applicativo, non un requisito NIP-49. Il NIP standardizza il formato della chiave cifrata. Un client può memorizzare &lt;code>ncryptsec&lt;/code> localmente, sincronizzarlo tramite storage specifico dell&amp;rsquo;app o esportarlo come stringa di backup. Le password sono normalizzate in Unicode NFKC prima della derivazione della chiave, così la stessa password può decifrare in modo coerente tra client e piattaforme.&lt;/p>
&lt;p>Il flag di sicurezza della chiave a un byte ha tre valori definiti: &lt;code>0x00&lt;/code> significa che la cronologia di gestione della chiave è sconosciuta, &lt;code>0x01&lt;/code> significa che la chiave è nota per essere stata gestita in modo insicuro, per esempio incollata in chiaro in un form web prima della cifratura, e &lt;code>0x02&lt;/code> significa che la chiave è stata generata e cifrata in un contesto sicuro e non è mai stata esposta. I client possono usare questa informazione per mostrare avvisi quando importano chiavi con una storia nota di gestione insicura.&lt;/p>
&lt;p>NIP-49 protegge le chiavi meglio dell&amp;rsquo;esportazione semplice &lt;code>nsec&lt;/code>, ma la cifratura è forte solo quanto la password e il costo scrypt configurato. Valori &lt;code>LOG_N&lt;/code> più alti rendono l&amp;rsquo;attacco offline più difficile ma rallentano anche la decifratura legittima. La specifica sconsiglia di pubblicare chiavi cifrate su relay pubblici, perché gli attaccanti traggono vantaggio dal raccogliere ciphertext da sottoporre a cracking offline. Per confronto, la firma remota di &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> evita di esporre del tutto le chiavi, e la firma Android di &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> le mantiene all&amp;rsquo;interno di un&amp;rsquo;app signer dedicata. NIP-49 occupa uno spazio diverso: backup cifrato portabile per utenti che gestiscono le proprie chiavi.&lt;/p>
&lt;p>Le implementazioni includono &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/434">Formstr PR #434&lt;/a> per la registrazione, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> per backup e restore ncryptsec, &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/#divine-distribuisce-la-v106-con-infrastruttura-di-test-e2e-e-import-nip-49">diVine v1.0.6&lt;/a> per l&amp;rsquo;import account, &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-11-newsletter/#keep-v060">Keep v0.6.0&lt;/a> per l&amp;rsquo;esportazione di share FROST, e strumenti di gestione delle chiavi come &lt;a href="https://nsec.app">nsec.app&lt;/a> e &lt;a href="https://github.com/getAlby/hub">Alby&lt;/a>.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-70-event-protetti">NIP Deep Dive: NIP-70 (Event protetti)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-70/">NIP-70&lt;/a> definisce gli event protetti. Quando un event porta il tag &lt;code>[&amp;quot;-&amp;quot;]&lt;/code>, un relay deve rifiutarlo a meno che il relay richieda l&amp;rsquo;autenticazione &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> e la pubkey autenticata corrisponda all&amp;rsquo;autore dell&amp;rsquo;event.&lt;/p>
&lt;p>Il flusso auth di NIP-42 funziona così: il relay invia una challenge &lt;code>AUTH&lt;/code> contenente una stringa casuale, e il client risponde con un event signed di kind &lt;code>22242&lt;/code> i cui tag includono l&amp;rsquo;URL del relay e la challenge. Il relay verifica la firma e controlla che la pubkey nell&amp;rsquo;event auth coincida con la pubkey dell&amp;rsquo;event protetto in pubblicazione. Se le pubkey non coincidono, il relay rifiuta l&amp;rsquo;event con il prefisso di messaggio &lt;code>restricted&lt;/code>.&lt;/p>
&lt;p>Il contenuto dell&amp;rsquo;event può comunque essere pubblico. Il tag &lt;code>-&lt;/code> controlla solo chi può pubblicare l&amp;rsquo;event su un relay che onora il tag. Questo copre feed semi-chiusi di &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>, spazi relay riservati ai membri e altri contesti in cui l&amp;rsquo;autore vuole limitare la ridistribuzione attraverso il grafo relay. NIP-70 è una convenzione a tag singolo, non un nuovo kind di event, quindi qualunque kind esistente può portare il tag &lt;code>-&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;cb8feca582979d91fe90455867b34dbf4d65e4b86e86b3c68c368ca9f9eef6f2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1707409439&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;-&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;hello members of the secret group&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fa163f5cfb75d77d9b6269011872ee22b34fb48d23251e9879bb1e4ccbdd8aaaf4b6dc5f5084a65ef42c52fbcde8f3178bac3ba207de827ec513a6aa39fa684c&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Anche se un relay blocca la pubblicazione di terzi dell&amp;rsquo;event originale, qualcuno può ripubblicarne il contenuto dentro un repost. &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a> affronta il problema richiedendo ai relay di rifiutare anche i repost di kind 6 e kind 16 degli event protetti. &lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a> aggiunge la gestione auth NIP-42 per gli event protetti, e &lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a> blocca i repost che incorporano contenuto protetto.&lt;/p>
&lt;p>NIP-70 controlla il comportamento del relay. Un destinatario può comunque copiare altrove il contenuto, e la specifica lo dice esplicitamente. Il tag &lt;code>-&lt;/code> fornisce ai relay un segnale machine-readable per rifiutare la ripubblicazione. Per confronto, &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> chiede ai relay di cancellare i dati dopo il fatto, mentre NIP-70 impedisce la pubblicazione non autorizzata al momento dell&amp;rsquo;ingest. I due approcci sono complementari: un autore può contrassegnare gli event come protetti per limitarne la diffusione, e in seguito chiedere la cancellazione se desidera che il contenuto venga rimosso dai relay che lo avevano accettato.&lt;/p>
&lt;hr>
&lt;p>Per questa settimana è tutto. State costruendo qualcosa o avete novità da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o cercateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #12</title><link>https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Il &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> distribuisce il suo &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#marmot-development-kit-distribuisce-il-primo-rilascio-pubblico">primo rilascio pubblico&lt;/a> con media cifrati e binding multi-linguaggio. &lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> pubblica &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">benchmark del modello outbox&lt;/a> su 14 algoritmi di selezione dei relay. &lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> passa dalla &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#wisp-passa-dallalpha-alla-beta">prima alpha alla beta&lt;/a> in otto giorni con Tor e firma &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Applicazione Signer Android). &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#aggiornamenti-nip">NIP-91&lt;/a> (filtri AND) viene unito. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a> porta la sincronizzazione negentropy con miglioramenti delle prestazioni di 15 volte. Questo numero include anche la retrospettiva Cinque Anni di Febbraio di Nostr, che traccia il protocollo da una riscrittura della specifica che serviva tre relay fino all&amp;rsquo;esplosione di Damus sull&amp;rsquo;App Store, passando per le reti mesh e le proposte per agenti AI.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Il &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> distribuisce il suo &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#marmot-development-kit-distribuisce-il-primo-rilascio-pubblico">primo rilascio pubblico&lt;/a> con media cifrati e binding multi-linguaggio. &lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> pubblica &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">benchmark del modello outbox&lt;/a> su 14 algoritmi di selezione dei relay. &lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> passa dalla &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#wisp-passa-dallalpha-alla-beta">prima alpha alla beta&lt;/a> in otto giorni con Tor e firma &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Applicazione Signer Android). &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#aggiornamenti-nip">NIP-91&lt;/a> (filtri AND) viene unito. &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a> porta la sincronizzazione negentropy con miglioramenti delle prestazioni di 15 volte. Questo numero include anche la retrospettiva Cinque Anni di Febbraio di Nostr, che traccia il protocollo da una riscrittura della specifica che serviva tre relay fino all&amp;rsquo;esplosione di Damus sull&amp;rsquo;App Store, passando per le reti mesh e le proposte per agenti AI.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="il-modello-outbox-sotto-la-lente">Il Modello Outbox Sotto la Lente&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> ha pubblicato una serie di benchmark sul modello outbox che testano quanto bene diversi algoritmi di selezione dei relay recuperano event dalla rete relay decentralizzata. Il progetto ha unito 16 PR e 76 commit in dieci giorni, producendo quella che potrebbe essere l&amp;rsquo;analisi empirica più approfondita delle strategie di implementazione di &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) fino ad oggi.&lt;/p>
&lt;p>I benchmark testano 14 algoritmi di selezione dei relay rispetto a liste di follow reali su 15 client e librerie in cinque linguaggi. Un approccio baseline di interrogazione dei soli relay popolari recupera circa il 26% degli event. Il greedy set-cover con Thompson Sampling raggiunge l'80-90% di richiamo. L&amp;rsquo;aggiunta di una variante sensibile alla latenza che usa lo sconto iperbolico e il tracciamento della latenza dei relay con EWMA ha portato la completezza dal 62-80% al 72-96% al segno dei 2 secondi su sei profili di test.&lt;/p>
&lt;p>Il filtraggio dei relay inattivi tramite &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (Relay Monitoring) si è rivelato significativo. Il pre-filtraggio dei candidati relay rispetto ai dati di liveness di &lt;a href="https://nostr.watch">nostr.watch&lt;/a> ha rimosso il 40-64% dei relay inattivi e raddoppiato i tassi di successo dei relay dal 30% al 75-85%. I tempi di caricamento dei feed sono diminuiti del 39% (da 40 secondi a 24 secondi su 10 profili). Una simulazione EOSE-race ha rilevato che attendere l&amp;rsquo;EOSE più un periodo di grazia di 200ms migliorava la completezza rispetto all&amp;rsquo;arresto al primo relay che terminava.&lt;/p>
&lt;p>Per i client che non possono riscrivere completamente il proprio routing dei relay, un approccio di &amp;ldquo;arricchimento outbox ibrido&amp;rdquo; aggiunge query outbox per autore sopra i relay applicativi hardcoded esistenti. Questo approccio ibrido ha raggiunto l'80% di richiamo degli event su un anno rispetto al 26% del baseline, offrendo un percorso di migrazione per i client con architetture relay legacy.&lt;/p>
&lt;h3 id="contextvm-apre-il-nip-per-mcp-e-distribuisce-gift-wrap-effimeri">ContextVM Apre il NIP per MCP e Distribuisce Gift Wrap Effimeri&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a>, il protocollo che collega Nostr con il &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>, ha aperto due proposte nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> questa settimana. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2246">PR #2246&lt;/a> formalizza CVM come convenzione per il trasporto di messaggi MCP JSON-RPC su Nostr tramite event effimeri di kind 25910. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a> estende &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) con un kind effimero (21059) che segue la semantica effimera di &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> (Flusso Base del Protocollo), permettendo ai relay di scartare i messaggi avvolti dopo la consegna.&lt;/p>
&lt;p>La convenzione gift wrap effimera è stata distribuita come &lt;a href="https://docs.contextvm.org/spec/ceps/cep-19/">CEP-19&lt;/a> nella famiglia di rilasci ContextVM SDK v0.6.x. L&amp;rsquo;&lt;a href="https://github.com/ContextVM/sdk">implementazione SDK&lt;/a> aggiunge un enum &lt;code>GiftWrapMode&lt;/code> con tre impostazioni: OPTIONAL (accetta entrambi i kind e rileva automaticamente la capacità del peer), EPHEMERAL (solo kind 21059) e PERSISTENT (solo kind 1059). Per le chiamate agli strumenti AI, la modalità effimera evita di memorizzare il traffico intermedio di richiesta-risposta sui relay, riducendo sia i costi di storage che l&amp;rsquo;esposizione della privacy.&lt;/p>
&lt;p>Nuovi server MCP pubblici sono apparsi sulla rete da operatori indipendenti, incluso un server di query Wolfram Alpha. Il team ContextVM ha pubblicato CEP-15 (schema degli strumenti comuni) e CEP-17 (pubblicazione della lista relay del server) insieme al ciclo di rilascio v0.6.x.&lt;/p>
&lt;h3 id="marmot-development-kit-distribuisce-il-primo-rilascio-pubblico">Marmot Development Kit Distribuisce il Primo Rilascio Pubblico&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> (Marmot Development Kit), la libreria Rust che alimenta la messaggistica cifrata con &lt;a href="https://nostrcompass.org/it/topics/mls/">Marmot&lt;/a> su &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, ha distribuito la &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.6.0">v0.6.0&lt;/a> come primo rilascio pubblico. Oltre 200 PR sono state unite in questa versione, con sei nuovi contributor.&lt;/p>
&lt;p>Il rilascio include il supporto ai media cifrati (MIP-04) con derivazione del seed HKDF (MIP-01 v2), risoluzione deterministica delle race condition dei commit (MIP-03), storage locale cifrato, validazione dell&amp;rsquo;autorizzazione admin per i commit e le proposte Marmot, e supporto GREASE per l&amp;rsquo;estensibilità del protocollo. I binding sono disponibili per Kotlin, Python, Ruby e Windows insieme alla cross-compilazione Android. La libreria si aggiorna a OpenMLS 0.8.0 con correzioni degli avvisi di sicurezza e un tipo &lt;code>Secret&amp;lt;T&amp;gt;&lt;/code> che azzera i valori sensibili in memoria.&lt;/p>
&lt;p>Una modifica companion al protocollo (&lt;a href="https://github.com/marmot-protocol/marmot/pull/48">MIP-03&lt;/a>) ha sostituito la cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) con ChaCha20-Poly1305 per i messaggi di kind 445. NIP-44 richiedeva input di stringhe UTF-8 per specifica, rendendo impossibile passare i byte grezzi dei messaggi Marmot attraverso le librerie Nostr TypeScript standard. La sostituzione deriva le chiavi direttamente dal segreto esportatore Marmot. Questa modifica incompatibile ha richiesto aggiornamenti coordinati tra la &lt;a href="https://github.com/marmot-protocol/marmot/pull/48">specifica core&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/208">MDK&lt;/a> e l&amp;rsquo;&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/54">SDK TypeScript&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>, l&amp;rsquo;implementazione TypeScript mantenuta da hzrd149, ha unito quattro PR con modifiche incompatibili alle API a loro volta. Un &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/52">aggiornamento omnibus&lt;/a> ha aggiunto un gestore di key package per il ciclo di vita create/publish/rotate, un metodo di convenienza &lt;code>sendChatMessage&lt;/code>, anteprima degli inviti senza entrare nel gruppo (&lt;code>readInviteGroupInfo&lt;/code>), auto-aggiornamento per le rotazioni di forward-secrecy e logging di debug strutturato. Le API di decifratura dei gruppi sono state rinominate da &lt;code>readGroupMessage&lt;/code> a &lt;code>decryptGroupMessage&lt;/code> con varianti di risultato più ricche (processed/skipped/rejected/unreadable). gzuuus ha contribuito alla pulizia degli esempi con supporto relay NIP-65 e gestione dei key package di ultima risorsa secondo MIP-00.&lt;/p>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise CLI&lt;/a> (&lt;code>wn&lt;/code>), il backend Rust che alimenta sia l&amp;rsquo;app mobile che la nuova TUI, ha unito 16 PR in dieci giorni. La gestione del ciclo di vita del signer ha ottenuto la sicurezza in caso di cancellazione attraverso un RAII scope guard (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/538">PR #538&lt;/a>), correggendo una classe di bug in cui le operazioni interrotte potevano far trapelare lo stato del signer. Il login ora blocca quando le liste relay richieste (kind 10002/10050/10051) sono mancanti (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/515">PR #515&lt;/a>), e le sottoscrizioni giftwrap ricadono sui relay &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> quando le liste inbox sono assenti (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/518">PR #518&lt;/a>). Una modalità debug (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/528">PR #528&lt;/a>) espone le query al database e l&amp;rsquo;ispezione del ratchet-tree MLS come output JSON. Altre correzioni hanno risolto il recupero delle sottoscrizioni dopo la ri-registrazione del signer, la sincronizzazione dei messaggi di benvenuto, la validazione dei filtri relay e i limiti del raggio di ricerca utenti.&lt;/p>
&lt;p>Marmot ha visto un&amp;rsquo;espansione significativa oltre lo stack Rust core questa settimana. &lt;a href="https://github.com/marmot-protocol/wn-tui">White Noise TUI&lt;/a>, un&amp;rsquo;interfaccia basata su terminale per lo stack di messaggistica White Noise, è stata lanciata il 3 marzo. Avvolge la CLI &lt;code>wn&lt;/code> come sottoprocesso e renderizza il suo output JSON attraverso un&amp;rsquo;architettura unidirezionale ispirata a Elm, fornendo navigazione multi-conversazione con indicatori di non letto, creazione di gruppi e ricerca membri, streaming di messaggi in tempo reale e reazioni emoji dal terminale.&lt;/p>
&lt;p>&lt;a href="https://github.com/DavidGershony">DavidGershony&lt;/a> ha pubblicato uno stack Marmot completo in C# che rispecchia l&amp;rsquo;architettura a livelli del toolchain Rust. &lt;a href="https://github.com/DavidGershony/dotnet-mls">dotnet-mls&lt;/a> implementa le primitive crittografiche MLS RFC 9420 in C#. &lt;a href="https://github.com/DavidGershony/marmot-cs">marmot-cs&lt;/a> si basa su di esso per aggiungere il trasporto relay Nostr, funzionando come equivalente C# di MDK. &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, un&amp;rsquo;app desktop cross-platform costruita con .NET 9 e Avalonia UI, unisce entrambi in un client di chat funzionante con DM NIP-44, cifratura di gruppo Marmot, firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) e indicatori di stato multi-relay.&lt;/p>
&lt;p>&lt;a href="https://github.com/zerosats/mdk-pwa-reference">MDK PWA Reference&lt;/a> fornisce un template Progressive Web App per costruire applicazioni cifrate con Marmot, con supporto sperimentale alla partecipazione di agenti AI nelle chat di gruppo e pagamenti Bitcoin tramite infrastruttura wallet Arkade.&lt;/p>
&lt;h3 id="wisp-passa-dallalpha-alla-beta">Wisp Passa dall&amp;rsquo;Alpha alla Beta&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> è un nuovo client Nostr Android che è passato dalla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.1.0-alpha">prima alpha&lt;/a> il 24 febbraio alla &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.3.4-beta">v0.3.4-beta&lt;/a> il 3 marzo, producendo 19 rilasci, 115 PR unite e 276 commit in otto giorni.&lt;/p>
&lt;p>La traiettoria delle funzionalità copre terreno che la maggior parte dei client impiega mesi a raggiungere. La v0.1.0 è stata distribuita con il supporto al modello relay outbox/inbox e flussi di onboarding. Alla v0.1.3, il client disponeva della firma intent-based &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> per Amber, un proxy Tor SOCKS5 integrato per la connettività ai relay &lt;code>.onion&lt;/code>, e &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect). La v0.2.0 è passata alla beta con il filtraggio delle liste mute e il supporto emoji personalizzate, mentre la v0.2.4 ha aggiunto gli overlay per gli avvisi di contenuto. La serie v0.3.x ha introdotto la proof-of-work &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a> per le note, il mining PoW in background con impostazioni persistenti, lo storage dei relay &lt;code>.onion&lt;/code> e le notifiche thread silenziati.&lt;/p>
&lt;p>La traduzione on-device tramite Google ML Kit funziona localmente senza accesso alla rete dopo il download iniziale del modello. Una visualizzazione interattiva del grafo sociale usa una simulazione fisica velocity Verlet a circa 30fps con navigazione pinch-to-zoom e ispezione dei profili.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="vector-v031">Vector v0.3.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, l&amp;rsquo;app di messaggistica cifrata con Marmot, ha distribuito la &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.1">v0.3.1&lt;/a> con miglioramenti alla gestione dei gruppi e lavoro sulle prestazioni. Gruppi multi-admin, inviti in blocco, invito tramite npub e avatar di gruppo espandono le funzionalità di collaborazione. Le notifiche in background Android ora supportano le azioni inline Reply e Mark Read.&lt;/p>
&lt;p>La sincronizzazione deterministica basata su &lt;a href="https://nostrcompass.org/it/topics/negentropy/">Negentropy&lt;/a> recupera la cronologia completa delle conversazioni inclusi i messaggi persi durante i periodi offline. Voice-to-text ricostruito con accelerazione GPU su Android. La gestione degli allegati è stata revisionata con progresso di download, stati di retry, compressione zip-and-send delle directory e indicatori di progresso in tempo reale. Le prestazioni sono migliorate di oltre 15 volte su tempo di avvio, elaborazione immagini, riproduzione audio e reattività generale della UI. Le dimensioni dell&amp;rsquo;installazione dell&amp;rsquo;app sono diminuite di oltre un terzo, con il frontend ridotto di circa la metà. È stato aggiunto il supporto Android ARM a 32 bit.&lt;/p>
&lt;h3 id="alby-hub-v1215">Alby Hub v1.21.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>, il nodo Lightning auto-custodiale con supporto Nostr Wallet Connect (&lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>), ha distribuito la &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.5">v1.21.5&lt;/a>. Un secondo relay è stato aggiunto alla configurazione NWC predefinita, migliorando l&amp;rsquo;affidabilità durante i riavvii dei relay. Una correzione per i dati zap non validi nella lista transazioni risolve un problema di visualizzazione con event &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a> (Lightning Zaps) malformati. Le nuove voci dell&amp;rsquo;app store includono Alby CLI e LNVPS.&lt;/p>
&lt;h3 id="nospeak-v012x">nospeak v0.12.x&lt;/h3>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>, il client di messaggistica Nostr basato su testo, ha distribuito tre rilasci nel periodo. La &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.0">v0.12.0&lt;/a> ha aggiunto il blocco app con PIN a tastierino a 4 cifre e oltre 15 nuove traduzioni linguistiche inclusi bengalese, tailandese, vietnamita, hindi, arabo, ebraico, urdu, turco, giapponese, cinese, coreano, olandese, polacco, russo e persiano con supporto RTL. La &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.1">v0.12.1&lt;/a> ha introdotto un tema Cypher con sfondi neri puri e accenti ciano, più la generazione di poster video Android. La &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.2">v0.12.2&lt;/a> ha aggiunto l&amp;rsquo;esportazione chat e View Profile nei menù dei contatti.&lt;/p>
&lt;h3 id="citrine-v200-pre2">Citrine v2.0.0-pre2&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>, il relay personale Android di greenart7c3, ha distribuito la &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre2">v2.0.0-pre2&lt;/a> con miglioramenti delle prestazioni del relay attraverso nuovi indici del database e coroutine Kotlin ristrutturate. Ogni web app ospitata ora si avvia sulla propria porta. La ricerca full-text e una schermata event riprogettata con espansione degli event completano le modifiche.&lt;/p>
&lt;h3 id="noornote-v05x">NoorNote v0.5.x&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>, un&amp;rsquo;applicazione per prendere appunti basata su Nostr, ha distribuito 8 rilasci dalla &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.0">v0.5.0&lt;/a> alla &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.7">v0.5.7&lt;/a>. Il lancio della v0.5.0 su Android ha aggiunto il supporto al signer Amber &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> e la pubblicazione di note &lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> (Video Events). Una pagina di benvenuto riprogettata nella v0.5.1 includeva anteprime della timeline pubblica e ha ridotto l&amp;rsquo;APK a 15 MB. Il Relay Browser nella v0.5.2 permette agli utenti di navigare le timeline pubbliche dei relay tramite URL condivisibili, insieme al download dei media e alle reazioni emoji personalizzate &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a>. I rilasci successivi fino alla v0.5.7 hanno risolto race condition di sincronizzazione nel sistema collaborativo di condivisione note &amp;ldquo;tribes&amp;rdquo;.&lt;/p>
&lt;h3 id="noscall-v051">NosCall v0.5.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/sanah9/noscall">NosCall&lt;/a>, l&amp;rsquo;app per chiamate vocali e video su Nostr, ha distribuito la &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.1-release">v0.5.1&lt;/a> con supporto ai messaggi vocali, un&amp;rsquo;esperienza desktop ottimizzata con accesso ai gruppi, contatti preferiti su desktop, note e filtraggio dei contatti, opzioni di esportazione e pulizia dei dati, e supporto all&amp;rsquo;accessibilità per le dimensioni dei font di sistema.&lt;/p>
&lt;h3 id="shosho-v0130">Shosho v0.13.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, l&amp;rsquo;app di live streaming su Nostr, ha distribuito la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.13.0">v0.13.0&lt;/a> con download di replay MP4 dai menù delle card dello streaming e &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> (DNS-Based Verification) per i profili. Il publisher RTMP è migrato all&amp;rsquo;Expo Modules API. Le prestazioni di streaming su connessioni a bassa larghezza di banda sono migliorate, e i crash sui dispositivi più vecchi e lo streaming iOS verso &lt;a href="https://zap.stream">Zap.Stream&lt;/a> sono corretti.&lt;/p>
&lt;h3 id="nostr-java-v200">nostr-java v2.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java">nostr-java&lt;/a> ha distribuito la &lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v2.0.0">v2.0.0&lt;/a> con dimensioni configurabili del buffer WebSocket, permettendo alle applicazioni di gestire event Nostr più grandi senza troncamento. L&amp;rsquo;incremento della versione major riflette modifiche incompatibili all&amp;rsquo;API di connessione.&lt;/p>
&lt;h3 id="prism-110">Prism 1.1.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> ha distribuito la &lt;a href="https://github.com/hardran3/Prism/releases/tag/1.1.0">1.1.0&lt;/a> con supporto ai contenuti long-form (articoli kind 30023) e un editor Markdown per la composizione direttamente nell&amp;rsquo;app, seguita da un rilascio bug fix &lt;a href="https://github.com/hardran3/Prism/releases/tag/1.1.1">1.1.1&lt;/a>.&lt;/p>
&lt;h3 id="angor-v026">Angor v0.2.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor">Angor&lt;/a>, la piattaforma di crowdfunding Bitcoin, ha distribuito la &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.6">v0.2.6&lt;/a> con integrazione Boltz e un flusso di investimento in 1 click. Sia i tipi invest che fund project funzionano end-to-end su testnet. Il team nota che la UI è completa circa al 70%.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1365">NIP-91: Operatore AND per i Filtri&lt;/a>&lt;/strong>: Aggiunge la semantica dei filtri AND per gli array di tag nelle sottoscrizioni ai relay. Attualmente, specificare valori multipli in un filtro di tag (ad esempio, tag &lt;code>p&lt;/code> multipli) corrisponde agli event che contengono uno qualsiasi di essi. NIP-91 permette ai client di richiedere event che corrispondono a tutti i valori di tag specificati simultaneamente, riducendo la larghezza di banda e abilitando operazioni di indice più veloci. Esistono già implementazioni in più relay inclusi nostr-rs-relay, satellite-node, worker-relay e applesauce. Precedentemente numerato NIP-119.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2247">NIP-30: Indirizzo del Set di Emoji nei Tag&lt;/a>&lt;/strong>: I tag emoji personalizzate in &lt;a href="https://nostrcompass.org/it/topics/nip-30/">NIP-30&lt;/a> possono ora includere un indirizzo opzionale del set di emoji. Cliccando su un&amp;rsquo;emoji in un client si può aprire il set a cui appartiene per aggiungerlo ai segnalibri o navigarlo. Originato dal client &lt;a href="https://github.com/purrgrammer/chachi">Chachi&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2111">NIP-29: Aggiunta di unallowpubkey e unbanpubkey&lt;/a>&lt;/strong>: Due nuovi comandi admin per le chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>. &lt;code>unallowpubkey&lt;/code> rimuove una pubkey dalla lista consentiti senza bannare l&amp;rsquo;utente. &lt;code>unbanpubkey&lt;/code> revoca un ban senza ri-aggiungere la pubkey alla lista dei membri. In precedenza, l&amp;rsquo;unico modo per rimuovere qualcuno dalla lista consentiti comportava anche il ban, e revocare il ban richiedeva di ri-aggiungere l&amp;rsquo;utente come membro.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2244">NIP-A7: Spells&lt;/a>&lt;/strong> (aperta il 27 feb): Proposti da purrgrammer, gli spell sono query Nostr salvate e portabili pubblicati come event di kind 777. Uno spell codifica un filtro REQ o COUNT in tag strutturati (&lt;code>k&lt;/code> per i kind, &lt;code>authors&lt;/code> per le pubkey, &lt;code>tag&lt;/code> per filtri di tag arbitrari) con variabili runtime: &lt;code>$me&lt;/code> si risolve alla pubkey dell&amp;rsquo;utente loggato, &lt;code>$contacts&lt;/code> si espande alla lista di follow di kind 3 dell&amp;rsquo;utente. I timestamp relativi (&lt;code>7d&lt;/code>, &lt;code>2w&lt;/code>, &lt;code>1mo&lt;/code>) permettono agli spell di definire finestre temporali mobili senza date hardcoded. Già implementati in &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> e &lt;a href="https://github.com/purrgrammer/grimoire">Grimoire&lt;/a>, gli spell permettono agli utenti di creare, condividere e sottoscrivere feed curati che si spostano tra i client.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">NIP-59: Gift Wrap Effimero (kind 21059)&lt;/a>&lt;/strong> (aperta il 27 feb): Aggiunge una variante effimera dei gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>. Il kind 21059 segue la semantica effimera di NIP-01, quindi i relay scartano gli event dopo la consegna. Proposto da ContextVM per il trasporto MCP dove la persistenza dei messaggi non è necessaria.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2246">ContextVM: MCP JSON-RPC su Nostr&lt;/a>&lt;/strong> (aperta il 27 feb): Specifica come trasportare i messaggi del Model Context Protocol su Nostr usando event effimeri di kind 25910 con tag &lt;code>p&lt;/code> ed &lt;code>e&lt;/code> per l&amp;rsquo;indirizzamento e la correlazione. Intenzionalmente snello, rimanda i dettagli del protocollo alla &lt;a href="https://docs.contextvm.org">specifica ContextVM&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2238">NIP-29: Spazi Live Audio/Video&lt;/a>&lt;/strong> (aperta il 25 feb, bozza): Bozza di fiatjaf che estende i gruppi &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> con audio e video live. La proposta aggiunge tag opzionali &lt;code>livekit&lt;/code> e &lt;code>no-text&lt;/code> agli event di metadata dei gruppi. Quando un utente vuole unirsi a uno spazio vocale, il client richiede un JWT dal relay su &lt;code>/.well-known/nip29/livekit/{groupId}&lt;/code>. Il relay verifica l&amp;rsquo;appartenenza al gruppo ed emette un token con la pubkey hex dell&amp;rsquo;utente come claim &lt;code>sub&lt;/code>, che viene passato a &lt;a href="https://livekit.io/">LiveKit&lt;/a> per il trasporto dei media. L&amp;rsquo;accesso alla stanza vocale eredita il modello di permessi esistente del gruppo, quindi le regole di appartenenza lato relay governano chi può parlare. In fase di test in Pyramid e Chachi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2235">Proprietà Collaborativa degli Event&lt;/a>&lt;/strong> (aperta il 24 feb): pablof7z propone un event puntatore (kind 39382) che dichiara uno spazio collaborativo elencando le pubkey dei co-proprietari nei tag &lt;code>p&lt;/code> e un kind di event target in un tag &lt;code>k&lt;/code>. Qualsiasi proprietario elencato può pubblicare event di quel kind con lo stesso tag &lt;code>d&lt;/code>, e i client risolvono lo stato corrente interrogando tutti i proprietari e prendendo l&amp;rsquo;event più recente. L&amp;rsquo;attribuzione di co-autorialità viene visualizzata solo quando un tag &lt;code>a&lt;/code> verificabile referenzia il puntatore e l&amp;rsquo;autore appare nei suoi tag &lt;code>p&lt;/code>, prevenendo rivendicazioni falsificate. Questo abilita pagine wiki condivise e risorse co-autoriate senza assegnare il controllo a un singolo keypair.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2234">NIP-09: Cancellazione a Cascata dei Repost&lt;/a>&lt;/strong> (aperta il 24 feb): Quando un autore originale cancella una nota, i relay dovrebbero anche cancellare qualsiasi repost di kind 6 o kind 16 che la referenzia. Motivato da preoccupazioni sulla privacy: i repost possono preservare informazioni trapelate accidentalmente dopo che l&amp;rsquo;autore ha cancellato la fonte. La modifica è solo lato relay e non richiede modifiche ai client.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2233">NIP-07: peekPublicKey&lt;/a>&lt;/strong> (aperta il 23 feb): Aggiunge un metodo &lt;code>peekPublicKey()&lt;/code> alle estensioni browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>. A differenza di &lt;code>getPublicKey()&lt;/code>, restituisce la pubkey corrente senza richiedere conferma all&amp;rsquo;utente, abilitando il login automatico silenzioso quando l&amp;rsquo;utente ha abilitato l&amp;rsquo;auto-login.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2248">NIP-BB: Book&lt;/a>&lt;/strong> (aperta il 28 feb, bozza): Definisce quattro kind di event indirizzabili (30300-30303) per la pubblicazione strutturata di libri su Nostr. Un event Cover contiene i metadata root inclusi titolo, immagine di copertina, licenza tramite label &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a> (Labeling) e codice lingua. Un event Index mappa ogni capitolo alla sua posizione usando indicizzazione frazionaria base62, che permette agli autori di inserire nuovi capitoli tra quelli esistenti senza rinumerazione. Gli event Chapter funzionano come intestazioni strutturali con immagini opzionali, mentre gli event Episode trasportano la prosa effettiva con un limite di 30.000 caratteri e tag immagine posizionati. Le recensioni usano gli Zap sugli event Cover con la descrizione dello Zap come testo della recensione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">NIP-54: Passaggio da Asciidoc a Djot&lt;/a>&lt;/strong> (aperta il 26 feb): In seguito alla &lt;a href="https://nostrcompass.org/it/newsletters/2025-12-31-newsletter/">correzione dell&amp;rsquo;internazionalizzazione del d-tag&lt;/a> di dicembre, questa PR propone di sostituire il formato markup Asciidoc del wiki &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> con &lt;a href="https://djot.net/">Djot&lt;/a>, aggiungendo una sezione di motivazioni ed esempi di wikilink per script non latini.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">NIP-66: Misure Difensive&lt;/a>&lt;/strong> (aperta il 26 feb): Basato sugli apprendimenti dai benchmark &lt;a href="https://nostrcompass.org/it/newsletters/2026-03-04-newsletter/#il-modello-outbox-sotto-la-lente">nostrability/outbox&lt;/a>, aggiunge segnalazioni esplicite per i casi limite di &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>. Una &lt;a href="https://github.com/nostr-protocol/nips/pull/2241">PR #2241&lt;/a> companion definisce tag di output per SSL, geolocalizzazione, rete e controlli di connettività.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-C1: Prove di Identità Crittografica&lt;/strong> (voce wiki, kind 30817): Propone event di kind 30509 che collegano crittograficamente i certificati di firma APK ai profili Nostr. La prova funziona firmando un messaggio canonico contenente la pubkey Nostr con la chiave privata del certificato (supportando ECDSA, RSA PKCS1v15, Ed25519 e altri algoritmi standard), poi pubblicando la firma in un event di kind 30509 firmato con la chiave Nostr. I verificatori possono confermare che la persona che controlla il certificato di firma di un&amp;rsquo;app Android controlla anche la pubkey Nostr che dichiara di pubblicarla. Le prove scadono dopo un anno per impostazione predefinita e possono essere revocate esplicitamente. Implementato nel toolchain &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-31402: SARA Revenue Share Offering Registry&lt;/strong> (voce wiki, kind 30817): Definisce event indirizzabili di kind 31402 per la pubblicazione di offerte Simple Autonomous Revenue Agreement (SARA) sui relay Nostr. Gli emittenti pubblicizzano termini di condivisione dei ricavi regolati via Lightning inclusi percentuale della quota pool, trigger di pagamento, soglia in sats, durata del termine e prezzi a livelli. Agenti e umani possono scoprire le offerte sui relay e sottoscriverle autonomamente senza una piattaforma centrale. Il numero di kind rispecchia il kind 30402 (L402 Service Registry, pubblicato dallo stesso autore come voce wiki companion) poiché SARA rappresenta la gamba di ritorno della relazione di pagamento L402.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="pr-aperte-e-aggiornamenti-dei-progetti">PR Aperte e Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="damus-nip-89ittopicsnip-89-recommended-application-handlers">Damus: &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> (Recommended Application Handlers)&lt;/h3>
&lt;p>La &lt;a href="https://github.com/damus-io/damus/pull/3337">PR #3337&lt;/a> implementa il supporto ai tag client NIP-89 per &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>. L&amp;rsquo;app ora emette un tag client su tutti i percorsi di pubblicazione (app principale, estensione di condivisione, evidenziatore, bozze) e visualizza &amp;ldquo;via ClientName&amp;rdquo; accanto ai timestamp quando altre app includono i loro tag. Un toggle Privacy nelle impostazioni Aspetto permette agli utenti di disabilitare l&amp;rsquo;emissione del tag. La &lt;a href="https://github.com/damus-io/damus/pull/3652">PR #3652&lt;/a> aggiunge una sezione Storage nelle Impostazioni con un grafico a torta interattivo che mostra l&amp;rsquo;utilizzo del disco per NostrDB e la cache Kingfisher con supporto all&amp;rsquo;esportazione.&lt;/p>
&lt;p>Aperta: la &lt;a href="https://github.com/damus-io/damus/pull/3657">PR #3657&lt;/a> aggiunge il fallback &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> per le note citate. Quando un &lt;code>nevent&lt;/code> inline include una pubkey autore ma nessun suggerimento relay e la nota è assente dal pool dell&amp;rsquo;utente, Damus recupera la lista relay kind 10002 dell&amp;rsquo;autore e riprova dai suoi relay di scrittura.&lt;/p>
&lt;h3 id="amethyst-nip-39ittopicsnip-39-external-identities-nip-c0-nip-66ittopicsnip-66">Amethyst: &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (External Identities), NIP-C0, &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha unito un&amp;rsquo;ondata di implementazioni NIP su 28 PR. Le rivendicazioni di identità esterna ora pubblicano come event dedicati di kind 10011 sotto &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1747">PR #1747&lt;/a>), separando l&amp;rsquo;identità sociale dai metadata di kind 0 con fallback retrocompatibile. Il supporto agli snippet di codice tramite NIP-C0 (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1744">PR #1744&lt;/a>) aggiunge event di kind 1337 con accessor per linguaggio, estensione, runtime, licenza e dipendenze. L&amp;rsquo;implementazione del relay monitoring &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1742">PR #1742&lt;/a>) copre entrambi i tipi di event con parsing completo dei tag per metriche RTT, tipo di rete, NIP supportati e geohash.&lt;/p>
&lt;p>I DM cifrati sono arrivati su Amethyst Desktop (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1710">PR #1710&lt;/a>) con un layout chat a pannelli divisi che supporta sia &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages) che &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages). Una nuova schermata feed relay (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1733">PR #1733&lt;/a>) permette agli utenti di navigare i post da un relay specifico con funzionalità follow/unfollow. Aperta: la verifica NIP-05 resistente alla censura (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a>) aggiunge un percorso di verifica parallelo per gli identificatori &lt;code>.bit&lt;/code> che risolve contro la blockchain Namecoin invece dell&amp;rsquo;HTTP DNS. Quando Amethyst rileva un suffisso &lt;code>.bit&lt;/code> in un campo NIP-05, interroga un server ElectrumX-NMC per la cronologia delle transazioni del nome, analizza lo script &lt;code>NAME_UPDATE&lt;/code> dall&amp;rsquo;output più recente per estrarre la pubkey Nostr, e rifiuta i nomi più vecchi di 36.000 blocchi (la finestra di scadenza di Namecoin). Le connessioni ElectrumX si instradano attraverso SOCKS5 quando Tor è abilitato, con selezione dinamica del server tra endpoint clearnet e &lt;code>.onion&lt;/code>. Una cache LRU con TTL di un&amp;rsquo;ora previene query ripetute alla blockchain.&lt;/p>
&lt;h3 id="notedeck-architettura-outbox">Notedeck: Architettura Outbox&lt;/h3>
&lt;p>La &lt;a href="https://github.com/damus-io/notedeck/pull/1303">PR #1303&lt;/a> migra &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> dalla gestione ad hoc del relay pool a un modello outbox centralizzato con sottoscrizioni a livello di account. Il modulo Messages ora pubblica una lista relay DM predefinita se non ne esiste una e instrada i DM ai relay preferiti dei destinatari secondo il kind 10050.&lt;/p>
&lt;h3 id="pika-profili-per-gruppo-e-feed-tutorial">Pika: Profili Per-Gruppo e Feed Tutorial&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;app di messaggistica cifrata con Marmot disponibile su iOS e Android con una build desktop, ha ottenuto i profili per-gruppo (&lt;a href="https://github.com/sledtools/pika/pull/368">PR #368&lt;/a>). Gli utenti possono ora impostare un nome visualizzato e un&amp;rsquo;immagine separati per ogni chat di gruppo, insieme a una bio personalizzata. Questi profili pubblicano come event di kind 0 cifrati all&amp;rsquo;interno del gruppo Marmot, invisibili a chiunque sia esterno, con fallback al profilo Nostr globale dell&amp;rsquo;utente quando non è impostato un profilo specifico per il gruppo. Quando nuovi membri si uniscono, l&amp;rsquo;admin ritrasmette tutti i profili di gruppo memorizzati e ogni membro ripubblica il proprio al commit. Le immagini dei profili vengono cifrate con Marmot-media prima dell&amp;rsquo;upload su Blossom. La PR include 16 nuovi test unitari e espone la funzionalità sia tramite un comando CLI (&lt;code>update-group-profile&lt;/code>) che tramite la UI.&lt;/p>
&lt;p>Una nuova web app &lt;code>pika-news&lt;/code> (&lt;a href="https://github.com/sledtools/pika/pull/401">PR #401&lt;/a>) monitora le PR GitHub di Pika e genera automaticamente walkthrough tutorial passo-passo dalle diff delle PR, pubblicandoli come pagine server-rendered con autenticazione &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>. Gli utenti possono discutere tutorial specifici in tempo reale tramite chat autenticata Nostr.&lt;/p>
&lt;h3 id="divine-widget-incorporabili-e-risposte-video">diVine: Widget Incorporabili e Risposte Video&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, la piattaforma di condivisione video nativa su Nostr, ha unito 132 PR in dieci giorni. I widget iframe incorporabili (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1843">PR #1843&lt;/a>) forniscono una pagina &lt;code>/embed?npub=...&lt;/code> autonoma che renderizza il profilo di un utente e i suoi video più recenti. La funzionalità risposte video (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1915">PR #1915&lt;/a>), protetta da un feature flag, usa commenti Kind 1111 (&lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a>) con metadata imeta &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> (Media Attachments). I filtri di contenuto a tre vie ispirati a Bluesky (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1797">PR #1797&lt;/a>) offrono controlli Show/Warn/Hide su 17 categorie di avvisi di contenuto &lt;a href="https://nostrcompass.org/it/topics/nip-32/">NIP-32&lt;/a>.&lt;/p>
&lt;h3 id="strfry-validazione-filtri-req">strfry: Validazione Filtri REQ&lt;/h3>
&lt;p>La &lt;a href="https://github.com/hoytech/strfry/pull/163">PR #163&lt;/a> aggiunge la validazione configurabile dei filtri REQ a &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>, il relay Nostr in C++. Gli operatori possono impostare il numero massimo di filtri per REQ, la presenza obbligatoria di autore o tag, whitelist di kind consentiti e limiti di kind per filtro. La funzionalità è rivolta ai deployment di relay NWC che necessitano di un&amp;rsquo;applicazione rigorosa dei filtri. Aperta: la &lt;a href="https://github.com/hoytech/strfry/pull/173">PR #173&lt;/a> aggiunge la compressione zstd opzionale per i payload degli event al momento dell&amp;rsquo;ingestione.&lt;/p>
&lt;h3 id="rust-nostr-nip-62ittopicsnip-62-request-to-vanish">rust-nostr: &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> Request to Vanish&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>, la libreria Rust per il protocollo Nostr, ha aggiunto il supporto a &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) su tutti e tre i backend di database: &lt;a href="https://github.com/rust-nostr/nostr/pull/1268">LMDB&lt;/a>, &lt;a href="https://github.com/rust-nostr/nostr/pull/1270">SQLite&lt;/a> e &lt;a href="https://github.com/rust-nostr/nostr/pull/1272">in-memory&lt;/a>. L&amp;rsquo;implementazione LMDB include opzioni configurabili per abilitare o disabilitare l&amp;rsquo;applicazione di &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a> e NIP-62 per deployment.&lt;/p>
&lt;h3 id="ndk-event-collaborativi-e-timeout-nip-46">NDK: Event Collaborativi e Timeout NIP-46&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a>, il Nostr Development Kit per JavaScript/TypeScript, ha unito la &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/380">PR #380&lt;/a> che introduce &lt;code>NDKCollaborativeEvent&lt;/code> per documenti collaborativi multi-autore usando un event puntatore indirizzabile (kind 39382) che definisce gli autori autorizzati. Un timeout configurabile per &lt;code>NDKNip46Signer&lt;/code> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/381">PR #381&lt;/a>) impedisce alle operazioni di firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> di bloccarsi indefinitamente quando un bunker non risponde.&lt;/p>
&lt;h3 id="tenex-categorizzazione-degli-agenti-e-gating-tramite-pubkey">TENEX: Categorizzazione degli Agenti e Gating tramite Pubkey&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, la piattaforma di orchestrazione agenti AI nativa su Nostr, ha unito due PR relative alla sicurezza. La categorizzazione degli agenti basata su ruoli TIP-01 (&lt;a href="https://github.com/tenex-chat/tenex/pull/91">PR #91&lt;/a>) mappa le categorie degli agenti (principal, orchestrator, worker, advisor, auditor) a restrizioni automatizzate sugli strumenti tramite una mappa denied-tools. Il gating front-door tramite pubkey (&lt;a href="https://github.com/tenex-chat/tenex/pull/87">PR #87&lt;/a>) assicura che solo gli event da pubkey whitelisted o firmate dal backend siano instradati insieme agli agenti conosciuti; le pubkey sconosciute vengono scartate silenziosamente con span OpenTelemetry per l&amp;rsquo;audit.&lt;/p>
&lt;h3 id="zap-cooking-dashboard-abbonamenti">Zap Cooking: Dashboard Abbonamenti&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, la piattaforma di condivisione ricette basata su Nostr, ha unito 25 PR e 85 commit in dieci giorni. Una dashboard abbonamenti (&lt;a href="https://github.com/zapcooking/frontend/pull/228">PR #228&lt;/a>) mostra lo stato della sottoscrizione con date di scadenza e opzioni di gestione/upgrade, riabilita i gate delle funzionalità per i livelli Sous Chef e Zappy con controlli sia lato client che lato server, e standardizza la nomenclatura dei livelli su 26 file. Il caricamento dei messaggi di gruppo in due fasi (&lt;a href="https://github.com/zapcooking/frontend/pull/227">PR #227&lt;/a>) fornisce un fetch iniziale rapido di 3 giorni per la visualizzazione istantanea seguito da un backfill in background di 40 giorni.&lt;/p>
&lt;p>Lo storage del mnemonic del wallet è passato dalla cifratura derivata dalla pubkey alla cifratura encrypt-to-self &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (&lt;a href="https://github.com/zapcooking/frontend/pull/224">PR #224&lt;/a>), correggendo una vulnerabilità in cui il vecchio schema derivava la chiave da &lt;code>SHA-256(pubkey)&lt;/code>, che è effettivamente non cifrato poiché le pubkey sono pubbliche. I wallet esistenti vengono migrati silenziosamente al primo caricamento. La chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> ha ottenuto indicatori di non letto con badge a pallino rosso e accesso solo su invito con codici invito di kind 9009 (&lt;a href="https://github.com/zapcooking/frontend/pull/213">PR #213&lt;/a>). Le anteprime link e gli embed di event Nostr ora si renderizzano nei DM e nei messaggi di gruppo (&lt;a href="https://github.com/zapcooking/frontend/pull/218">PR #218&lt;/a>). Una sezione backup Nostr nelle Impostazioni (&lt;a href="https://github.com/zapcooking/frontend/pull/210">PR #210&lt;/a>) memorizza follow e liste mute tramite storage cifrato &lt;a href="https://nostrcompass.org/it/topics/nip-78/">NIP-78&lt;/a> (Application-specific Data) con versioning rotativo a 3 slot. Le prestazioni di avvio sono migliorate attraverso il rinvio dei servizi di notifica, il rendering DOM lazy tramite IntersectionObserver (riducendo i nodi DOM da circa 15.000 a circa 3.000 su un feed di 200 event) e TTL estesi della cache outbox (&lt;a href="https://github.com/zapcooking/frontend/pull/208">PR #208&lt;/a>). Una modale di stampa ricetta personalizzabile (&lt;a href="https://github.com/zapcooking/frontend/pull/205">PR #205&lt;/a>) permette agli utenti di selezionare quali sezioni includere con un&amp;rsquo;anteprima live. L&amp;rsquo;integrazione &lt;a href="https://github.com/BrantaOps/branta-core">Branta SDK&lt;/a> (&lt;a href="https://github.com/zapcooking/frontend/pull/222">PR #222&lt;/a>) aggiunge garanzie di verifica per le richieste POST e GET.&lt;/p>
&lt;h3 id="keep-migrazione-dello-stato-guidata-da-rust">Keep: Migrazione dello Stato Guidata da Rust&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, il gestore di chiavi private basato su Nostr per Android, ha unito la &lt;a href="https://github.com/privkeyio/keep-android/pull/178">PR #178&lt;/a>, eliminando quattro store di configurazione Kotlin a favore dello stato condiviso guidato da Rust dal livello keep-mobile. Un loop di polling a 10 secondi è stato sostituito con &lt;code>KeepStateCallback&lt;/code> push-based da Rust. La &lt;a href="https://github.com/privkeyio/keep-android/pull/179">PR #179&lt;/a> aggiunge backup e ripristino cifrati con protezione tramite passphrase.&lt;/p>
&lt;h3 id="mostro-mobile-cifratura-chat-dispute">Mostro Mobile: Cifratura Chat Dispute&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, il client mobile per la piattaforma di trading Bitcoin P2P Mostro, ha distribuito una migrazione in due fasi della cifratura chat dispute. Il primo passo (&lt;a href="https://github.com/MostroP2P/mobile/pull/495">PR #495&lt;/a>) passa dal wrapping specifico di mostro alla cifratura con chiave condivisa derivata dalla pubkey dell&amp;rsquo;admin. Basandosi su questo, la &lt;a href="https://github.com/MostroP2P/mobile/pull/501">PR #501&lt;/a> unifica il modello di messaggi con &lt;code>NostrEvent&lt;/code> e memorizza gli event gift wrap cifrati su disco, coerente con il pattern di chat peer-to-peer. Una correzione della firma BIP-340 (&lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a>) sovrascrive la dipendenza bip340 alla 0.2.0, risolvendo un bug di padding &lt;code>bigToBytes()&lt;/code> che causava l&amp;rsquo;invalidità dell'1-2% delle firme Schnorr e il 100% di fallimenti per le chiavi la cui chiave pubblica inizia con &lt;code>0x00&lt;/code>. Order Details ora mostra etichette di stato leggibili invece di valori grezzi del protocollo, localizzate in inglese, spagnolo, italiano e francese (&lt;a href="https://github.com/MostroP2P/mobile/pull/502">PR #502&lt;/a>). HalCash è stato aggiunto e SEPA rimosso come metodo di pagamento (&lt;a href="https://github.com/MostroP2P/mobile/pull/493">PR #493&lt;/a>), poiché i trasferimenti SEPA possono superare le 24 ore (SEPA Instant rimane).&lt;/p>
&lt;p>Lato server, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> ha corretto il ripristino della sessione dispute per includere il campo initiator (&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>) e ora chiude automaticamente le dispute attive quando un venditore rilascia i fondi, pubblicando un event Nostr di risoluzione in modo che i client admin vedano la risoluzione (&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>).&lt;/p>
&lt;h2 id="cinque-anni-di-febbraio-di-nostr">Cinque Anni di Febbraio di Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/#cinque-anni-di-gennaio-di-nostr">La newsletter del mese scorso&lt;/a> ha tracciato le pietre miliari di gennaio di Nostr dai primi sviluppi fino all&amp;rsquo;esplosione di Damus, arrivando all&amp;rsquo;infrastruttura di sicurezza nel 2026. Questa retrospettiva copre cosa è successo ogni febbraio dal 2021 al 2026.&lt;/p>
&lt;h3 id="febbraio-2021-la-riscrittura">Febbraio 2021: La Riscrittura&lt;/h3>
&lt;p>Tre mesi dopo la sua nascita, il febbraio di Nostr ha prodotto il cambiamento più significativo delle origini del protocollo. Il 14-15 febbraio, fiatjaf ha &lt;a href="https://github.com/nostr-protocol/nostr/commit/33a1a70">riscritto NIP-01&lt;/a>, sostituendo il formato messaggi originale con il modello EVENT/REQ/CLOSE che il protocollo usa ancora oggi. Prima di questa riscrittura, client e relay comunicavano attraverso una struttura più semplice. Separare la pubblicazione degli event (EVENT) dalla gestione delle sottoscrizioni (REQ/CLOSE) ha abilitato il filtraggio lato relay che si sarebbe rivelato essenziale per la scalabilità.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> è arrivato lo stesso mese, aggiungendo messaggi diretti cifrati usando segreti condivisi derivati dallo scambio di chiavi Diffie-Hellman su secp256k1. La sua cifratura era basilare (AES-256-CBC) e sarebbe stata successivamente sostituita dalla crittografia verificata di &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, ma ha dato alla manciata di utenti iniziali il loro primo canale di comunicazione privata sul protocollo.&lt;/p>
&lt;p>Il tooling si è espanso con &lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a>, un client a riga di comando in Go per l&amp;rsquo;interazione con i relay da terminale, e futurepaul ha iniziato &lt;a href="https://github.com/futurepaul/nostr-rs">nostr-rs&lt;/a>, una prima implementazione Rust. L&amp;rsquo;intera rete funzionava su due o tre relay, coordinata attraverso un &lt;a href="https://t.me/nostr_protocol">gruppo Telegram&lt;/a>, con circa sette contributor attivi.&lt;/p>
&lt;h3 id="febbraio-2022-costruire-lo-slancio">Febbraio 2022: Costruire lo Slancio&lt;/h3>
&lt;p>Il &lt;a href="https://news.ycombinator.com/item?id=29749061">post su Hacker News&lt;/a> del 31 dicembre 2021 ha continuato ad attirare sviluppatori fino a febbraio. Il repository &lt;a href="https://github.com/nostr-protocol/nostr">nostr-protocol/nostr&lt;/a> (il &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> formale non sarebbe esistito fino a maggio 2022) ha ricevuto sei pull request a febbraio, inclusi NIP-13 (Proof of Work) di vinliao, NIP-14 (Reputation) di fiatjaf, NIP-15 (Resource Relations) di Cameri e &lt;a href="https://github.com/nostr-protocol/nostr/pull/75">NIP-17&lt;/a> (Git Updates Over Nostr) di melvincarvalho. Il numero NIP è stato successivamente riassegnato a Private Direct Messages; la collaborazione git su Nostr è continuata separatamente attraverso quello che è diventato &lt;a href="https://gitworkshop.dev">gitworkshop.dev&lt;/a>.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/scsibug/nostr-rs-relay">nostr-rs-relay&lt;/a> di Greg Heartsfield è stato il cavallo di battaglia del mese con 34 commit e tre rilasci. La versione 0.5.0 del 12 febbraio ha aggiunto limiti di pubblicazione per utenti verificati &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a>. Le versioni 0.5.1 e 0.5.2 sono seguite nelle due settimane successive, e il relay gestiva la maggior parte del traffico della rete da solo.&lt;/p>
&lt;p>Robert C. Martin (Uncle Bob) stava costruendo &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>, un client desktop in Clojure, registrando 69 commit tra il 18 gennaio e la fine di febbraio. Il suo coinvolgimento ha portato attenzione dalla più ampia comunità di ingegneria del software. L&amp;rsquo;estensione browser &lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a> di fiatjaf ha distribuito il supporto alla decifratura &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> e le politiche di preferenza dei relay a febbraio, implementando l&amp;rsquo;interfaccia &lt;code>window.nostr&lt;/code> (&lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>) che i client web usano ancora per la delega delle chiavi.&lt;/p>
&lt;p>&lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, ancora il client web principale, ha ottenuto la registrazione del gestore di protocollo &lt;code>web+nostr&lt;/code> il 13 febbraio, un primo tentativo di deep linking tra applicazioni Nostr. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> ha rafforzato la validazione NIP-05. &lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a> ha aggiunto il supporto ai DM cifrati NIP-04 e il parsing NIP-12 (Generic Tag Queries) su 11 commit. La rete operava su circa 7-15 relay con una base utenti attiva probabilmente nell&amp;rsquo;ordine delle centinaia. Damus e Nostream non esistevano ancora e non sarebbero apparsi fino ad aprile 2022.&lt;/p>
&lt;h3 id="febbraio-2023-attenzione-internazionale">Febbraio 2023: Attenzione Internazionale&lt;/h3>
&lt;p>Febbraio 2023 ha portato a Nostr la sua più grande ondata di attenzione pubblica. &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, il client iOS di William Casarin, era stato &lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">approvato sull&amp;rsquo;App Store di Apple il 31 gennaio&lt;/a> dopo ripetuti rifiuti. Entro il 1° febbraio aveva raggiunto la top 10 nella categoria Social Networking negli USA. Due giorni dopo, il 2 febbraio, &lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Apple ha rimosso Damus dall&amp;rsquo;App Store cinese&lt;/a> apparentemente su richiesta dell&amp;rsquo;Amministrazione del Cyberspazio della Cina.&lt;/p>
&lt;p>I principali media inclusi TechCrunch e CoinDesk hanno coperto la rimozione, amplificando la consapevolezza sia dell&amp;rsquo;app che del protocollo. Le chiavi pubbliche uniche con metadata su nostr.directory hanno superato le 300.000 entro il 3 febbraio. Tutti i relay erano gestiti da appassionati che pagavano di tasca propria, e l&amp;rsquo;infrastruttura si è affannata per gestire il carico. Circa 289 relay erano tracciati a inizio febbraio, un numero che ha continuato a crescere.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a> ha registrato 29 pull request unite quel mese, il conteggio mensile più alto nella storia del protocollo fino a quel momento. &lt;a href="https://github.com/nostr-protocol/nips/pull/224">NIP-57&lt;/a> (Lightning Zaps) e &lt;a href="https://github.com/nostr-protocol/nips/pull/220">NIP-23&lt;/a> (Long-form Content) sono stati entrambi uniti il 13 febbraio, aggiungendo micropagamenti Bitcoin e espandendo Nostr oltre i post brevi in un solo giorno. &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) era stato unito una settimana prima, il 7 febbraio, abilitando il modello outbox che è seguito. &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) e &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a> (Badges) sono stati anch&amp;rsquo;essi rilasciati prima della fine del mese.&lt;/p>
&lt;p>La Human Rights Foundation &lt;a href="https://hrf.org/devfund2023q1">ha assegnato 50.000$ a William Casarin per lo sviluppo di Nostr e Damus&lt;/a> il 21 febbraio, una delle prime grant istituzionali a un progetto Nostr. OpenSats non aveva ancora lanciato il suo fondo Nostr (cosa che sarebbe avvenuta a &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">luglio 2023&lt;/a>).&lt;/p>
&lt;h3 id="febbraio-2024-durabilità-del-protocollo">Febbraio 2024: Durabilità del Protocollo&lt;/h3>
&lt;p>Febbraio 2024 ha spostato il focus dalla crescita alla durabilità del protocollo. &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), aperto dal luglio precedente, stava lavorando verso una sostituzione per l&amp;rsquo;invecchiata cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> usando la crittografia verificata di &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e il gift wrapping di &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>. NIP-04 faceva trapelare metadata agli operatori dei relay, che potevano vedere le coppie mittente-destinatario. NIP-17 nasconde l&amp;rsquo;identità del mittente dietro keypair usa e getta ed è stato unito quella primavera dopo un ultimo giro di revisione a marzo.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> (Simple Groups) è stato &lt;a href="https://github.com/nostr-protocol/nips/pull/566">unito il 28 febbraio&lt;/a> dopo mesi di discussione, definendo come i relay possono ospitare chat di gruppo moderate con ruoli admin e controllo degli accessi. &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> (tag imeta) è stato unito il 1° febbraio, standardizzando come i client allegano dimensioni delle immagini e anteprime blurhash agli event media.&lt;/p>
&lt;p>Il 16 febbraio, il repository NIPs ha aggiunto &lt;a href="https://github.com/nostr-protocol/nips/commit/62c48eff">BREAKING.md&lt;/a>, un file che traccia le modifiche incompatibili alla specifica del protocollo. La sua creazione ha riconosciuto che Nostr aveva raggiunto un livello di maturità in cui le modifiche incompatibili necessitavano di documentazione formale.&lt;/p>
&lt;p>Ventidue pull request sono state unite quel mese. &lt;a href="https://github.com/cashubtc/npubcash-server">npub.cash&lt;/a> è stato lanciato come servizio di indirizzo Lightning che permette a qualsiasi npub di ricevere pagamenti senza gestire un server. Un &lt;a href="https://arxiv.org/abs/2402.05709">articolo accademico&lt;/a> pubblicato l'8 febbraio ha rilevato che il 95% dei relay gratuiti non poteva coprire i costi operativi attraverso le donazioni, con il 35% dei relay a pagamento che addebitava tariffe di ammissione inferiori a 1.000 sats (circa 0,45$ all&amp;rsquo;epoca).&lt;/p>
&lt;h3 id="febbraio-2025-crescita-dellinfrastruttura">Febbraio 2025: Crescita dell&amp;rsquo;Infrastruttura&lt;/h3>
&lt;p>Febbraio 2025 ha prodotto 28 pull request unite nel repository NIPs. Un NIP &lt;a href="https://nostrcompass.org/it/topics/nip-62/">Right to Vanish&lt;/a> è stato unito il 19 febbraio, definendo come gli utenti possono richiedere la cancellazione dei propri dati dai relay in risposta a questioni normative sulla portabilità dei dati e il controllo dell&amp;rsquo;utente.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> (Cashu Wallet) e NIP-61 (Nutzaps) hanno ricevuto aggiornamenti di semplificazione, razionalizzando il formato di storage dei token ecash. Un rollout del q-tag (quote tag) è continuato su più NIP, standardizzando come gli event referenziano altri event per citazioni e threading.&lt;/p>
&lt;p>I rilasci dei client hanno segnato progressi costanti. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> v0.3.0 alpha è stato distribuito l&amp;rsquo;ultimo giorno di gennaio, con l&amp;rsquo;adozione che è continuata in febbraio. Primal v2.1 è seguito il 7 febbraio, e &lt;a href="https://github.com/0ceanSlim/grain">GRAIN&lt;/a> v0.3.0, un&amp;rsquo;implementazione relay in Go, è stato rilasciato il 21 febbraio.&lt;/p>
&lt;p>NOSTRLDN v5 ha riunito la comunità Nostr londinese per il suo quinto incontro. Un bridge DVMCP ha collegato le Data Vending Machine di Nostr (&lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>) con il Model Context Protocol, prefigurando il lavoro di integrazione degli agenti AI arrivato il mese successivo.&lt;/p>
&lt;h3 id="febbraio-2026-oltre-i-social-media">Febbraio 2026: Oltre i Social Media&lt;/h3>
&lt;p>&lt;em>L&amp;rsquo;attività di febbraio 2026 è tratta dai numeri di Nostr Compass &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/">#8&lt;/a> fino al &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/">#11&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Febbraio 2026 ha prodotto la gamma più ampia di sviluppo a livello applicativo in un singolo mese di Nostr. &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> ha distribuito la sua &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#mostro-distribuisce-la-prima-beta-pubblica">prima beta pubblica&lt;/a> per il trading decentralizzato di Bitcoin peer-to-peer, e &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> ha raggiunto la &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#zapstore-v100">1.0 stabile&lt;/a> dopo mesi di test in release candidate. &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a> ha portato la messaggistica in tempo reale cifrata con &lt;a href="https://nostrcompass.org/it/topics/mls/">Marmot&lt;/a> con supporto al signer Amber e oltre 160 miglioramenti uniti.&lt;/p>
&lt;p>Proposte concorrenti per agenti AI da pablof7z (NIP-AE per flussi di lavoro degli agenti, NIP-AD per annunci di server MCP) e joelklabo (AI Agent Messages) sono arrivate insieme a una &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#aggiornamenti-nip">proposta di Coordinamento Agenti DVM&lt;/a> che estende &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a>. &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#contextvm-mcp-su-nostr">ContextVM&lt;/a> ha distribuito miglioramenti all&amp;rsquo;SDK per collegare il Model Context Protocol al trasporto Nostr. &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#burrow-messaggistica-mls-per-agenti-ai">Burrow&lt;/a> ha aggiunto la messaggistica cifrata con &lt;a href="https://nostrcompass.org/it/topics/mls/">Marmot&lt;/a> sia per agenti AI che per umani, estendendo l&amp;rsquo;identità e l&amp;rsquo;infrastruttura relay di Nostr alla comunicazione machine-to-machine.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#fips-rete-mesh-nativa-su-nostr">FIPS&lt;/a> ha distribuito un&amp;rsquo;implementazione Rust funzionante di reti mesh native su Nostr, usando keypair secp256k1 come identità dei nodi con routing agnostico dal trasporto su UDP, Ethernet, Bluetooth o radio LoRa. Il suo design ha mostrato che il modello di chiavi di Nostr si estende oltre i social media fino all&amp;rsquo;infrastruttura di rete fisica.&lt;/p>
&lt;p>&lt;a href="https://opensats.org/blog/fifteenth-wave-of-nostr-grants">OpenSats ha annunciato la quindicesima ondata di grant Nostr&lt;/a>, finanziando progetti inclusi ContextVM e Nostube. Le modifiche al protocollo hanno incluso il supporto hold invoice &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> per Nostr Wallet Connect e &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (Counting Results) HyperLogLog per la stima dei conteggi lato relay. Anche la scopribilità dei service provider &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) per il punteggio &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> è stata unita. &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ha iniziato un redesign completo delle API mentre Nostria 3.0 e &lt;a href="https://github.com/FROSTR-ORG">Frostr&lt;/a> (iOS TestFlight) sono stati entrambi distribuiti. Il livello di cache locale di &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> ha affrontato la disponibilità dei media sui relay.&lt;/p>
&lt;h3 id="guardando-avanti">Guardando Avanti&lt;/h3>
&lt;p>Cinque febbraio di storia del protocollo mostrano una progressione costante dal lavoro fondamentale alla diversificazione a livello applicativo, con l&amp;rsquo;afflusso di utenti del 2023 come punto di svolta. Nel 2021, sette contributor lavoravano su tre relay. Entro il 2026, lo stesso protocollo supportava reti mesh e proposte per agenti autonomi in esecuzione su infrastruttura di produzione.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #11</title><link>https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a> porta la messaggistica in tempo reale e il supporto al signer Amber con oltre 160 miglioramenti uniti. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a> corregge problemi di riproduzione video e aggiunge eventi di visualizzazione Kind 22236 per l&amp;rsquo;analisi dei creator. &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> e &lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a> pubblicano aggiornamenti. &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> distribuisce un&amp;rsquo;implementazione Rust funzionante di reti mesh native su Nostr. Notecrumbs riceve correzioni di stabilità per le anteprime link di damus.io. &lt;a href="https://contextvm.org">ContextVM&lt;/a> collega Nostr con il Model Context Protocol. I nuovi progetti includono &lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> per la messaggistica cifrata con MLS tra agenti AI e umani, e &lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> per la gestione di vault e identità basata su browser. Gli approfondimenti coprono la firma Android NIP-55 e la sincronizzazione del wallet Cashu NIP-60.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a> porta la messaggistica in tempo reale e il supporto al signer Amber con oltre 160 miglioramenti uniti. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a> corregge problemi di riproduzione video e aggiunge eventi di visualizzazione Kind 22236 per l&amp;rsquo;analisi dei creator. &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> e &lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a> pubblicano aggiornamenti. &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> distribuisce un&amp;rsquo;implementazione Rust funzionante di reti mesh native su Nostr. Notecrumbs riceve correzioni di stabilità per le anteprime link di damus.io. &lt;a href="https://contextvm.org">ContextVM&lt;/a> collega Nostr con il Model Context Protocol. I nuovi progetti includono &lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> per la messaggistica cifrata con MLS tra agenti AI e umani, e &lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> per la gestione di vault e identità basata su browser. Gli approfondimenti coprono la firma Android NIP-55 e la sincronizzazione del wallet Cashu NIP-60.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="miglioramenti-di-stabilità-di-notecrumbs">Miglioramenti di Stabilità di Notecrumbs&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs">Notecrumbs&lt;/a>, il server API e web che alimenta le anteprime link di damus.io, ha ricevuto una serie di correzioni che risolvono problemi di affidabilità.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/damus-io/notecrumbs/commit/3f201f63ea49">correzione della concorrenza&lt;/a> ha sostituito il meccanismo di deduplicazione in-flight con watch channel. Due chiamanti che richiedevano la stessa nota potevano diventare entrambi fetcher, causando un deadlock quando uno completava prima che l&amp;rsquo;altro si iscrivesse alla notifica. I watch channel con operazioni atomiche garantiscono che un solo fetcher sia attivo mentre gli altri attendono il risultato.&lt;/p>
&lt;p>Il &lt;a href="https://github.com/damus-io/notecrumbs/commit/b0d0bf5a2f17">rate limiting&lt;/a> implementa una difesa a due livelli contro il bombardamento dei relay. Quando gli utenti accedono ripetutamente alla stessa nota, il sistema ora fa debounce delle richieste ai relay con una finestra di raffreddamento di 5 minuti. Questa protezione si estende a tutti i tipi &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> e ai feed dei profili, prevenendo spam proporzionale ai relay durante il traffico intenso.&lt;/p>
&lt;p>I &lt;a href="https://github.com/damus-io/notecrumbs/commit/38670b3972b6">miglioramenti delle prestazioni&lt;/a> hanno spostato i fetch secondari dei dati a task tokio in background. Le pagine ora si renderizzano istantaneamente con dati in cache invece di bloccarsi su timeout sequenziali dei relay che potevano aggiungere fino a 7,5 secondi. Un aggiornamento a nostrdb 0.10.0 ha accompagnato queste correzioni.&lt;/p>
&lt;h3 id="contextvm-mcp-su-nostr">ContextVM: MCP su Nostr&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a> è una suite di strumenti che collega Nostr e il &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> (MCP). I commit recenti hanno introdotto la nuova specifica &lt;a href="https://docs.contextvm.org/spec/ceps/cep-8/">CEP-8&lt;/a> che abilita i pagamenti, con miglioramenti all&amp;rsquo;&lt;a href="https://github.com/ContextVM/sdk">SDK&lt;/a> distribuiti nel corso di febbraio.&lt;/p>
&lt;p>L&amp;rsquo;SDK fornisce transport TypeScript client e server per MCP su Nostr. Gli sviluppatori possono esporre server MCP attraverso la rete Nostr e i client possono connettersi ad essi. I relay agiscono come un bus messaggi cieco, instradando semplicemente eventi cifrati in modo opaco. I client senza supporto nativo a Nostr si connettono attraverso un livello proxy. La libreria gestisce la gestione dei relay e la firma crittografica per l&amp;rsquo;autenticazione degli event. Funziona sia in ambienti Node.js che browser.&lt;/p>
&lt;p>&lt;a href="https://github.com/ContextVM/cvmi">CVMI&lt;/a> fornisce una CLI per la scoperta di server e l&amp;rsquo;invocazione di metodi. &lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a> calcola punteggi di fiducia personalizzati dalla distanza nel grafo sociale combinata con la validazione del profilo.&lt;/p>
&lt;p>ContextVM si posiziona come livello ponte: i server MCP esistenti acquisiscono interoperabilità con Nostr mantenendo i loro transport convenzionali.&lt;/p>
&lt;h3 id="white-noise-documenta-la-ricerca-utenti-decentralizzata">White Noise Documenta la Ricerca Utenti Decentralizzata&lt;/h3>
&lt;p>Un &lt;a href="https://blog.jgmontoya.com/2026/02/22/user-search.html">post sul blog di jgmontoya&lt;/a> spiega come &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> gestisce la ricerca utenti attraverso la rete relay decentralizzata.&lt;/p>
&lt;p>La distribuzione dei profili crea la sfida: a differenza dei messenger centralizzati con database unificati, i profili Nostr si disperdono su decine di relay senza indice centrale. White Noise risolve questo problema attraverso un&amp;rsquo;architettura produttore-consumatore che gira in parallelo.&lt;/p>
&lt;p>Un processo produttore espande continuamente il grafo sociale verso l&amp;rsquo;esterno a partire dai seguiti dell&amp;rsquo;utente, recuperando liste di follow a distanze crescenti e accodando le pubkey scoperte per la risoluzione dei profili. Il consumatore risolve le corrispondenze attraverso cinque livelli di costo crescente: tabella utenti locale (più veloce), profili in cache dalle ricerche precedenti, relay connessi, liste relay utente per &lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a> e query dirette ai relay dichiarati dall&amp;rsquo;utente (più lento).&lt;/p>
&lt;p>Le ricerche a freddo richiedono circa 3 secondi mentre le ricerche a caldo dalla cache scendono a circa 10 millisecondi. Per i nuovi utenti senza grafi sociali consolidati, il sistema inietta nodi bootstrap ben connessi per garantire la funzionalità di ricerca. L&amp;rsquo;appartenenza ai gruppi fornisce un segnale sociale implicito accanto ai seguiti espliciti.&lt;/p>
&lt;p>La strumentazione si è rivelata fondamentale per l&amp;rsquo;ottimizzazione, nota l&amp;rsquo;autore. Senza metriche, i miglioramenti erano solo intuizioni.&lt;/p>
&lt;h3 id="fips-rete-mesh-nativa-su-nostr">FIPS: Rete Mesh Nativa su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> (Free Internetworking Peering System) è un&amp;rsquo;implementazione Rust funzionante di una rete mesh auto-organizzante che usa le keypair Nostr (secp256k1) come identità dei nodi. La &lt;a href="https://github.com/jmcorgan/fips/blob/master/docs/design/fips-intro.md">documentazione di design&lt;/a> accompagna il codice funzionale.&lt;/p>
&lt;p>Il protocollo affronta l&amp;rsquo;indipendenza infrastrutturale: i nodi si scoprono automaticamente senza server centrali o autorità di certificazione. Un spanning tree fornisce routing basato su coordinate mentre i bloom filter propagano informazioni di raggiungibilità, permettendo ai nodi di prendere decisioni di inoltro con sola conoscenza locale. L&amp;rsquo;agnosticismo dal trasporto significa che lo stesso protocollo funziona su UDP, Ethernet, Bluetooth, radio LoRa o qualsiasi mezzo capace di datagrammi.&lt;/p>
&lt;p>Due livelli di cifratura proteggono il traffico. La cifratura a livello link (pattern Noise IK) protegge la comunicazione hop-by-hop tra vicini con autenticazione reciproca e forward secrecy. La cifratura a livello sessione (pattern Noise XK) fornisce protezione end-to-end contro i router intermedi, dove solo la destinazione può decifrare il payload. Questo rispecchia come TLS protegge il traffico HTTP anche quando attraversa reti non fidate.&lt;/p>
&lt;p>L&amp;rsquo;architettura usa uno spanning tree a &amp;ldquo;greedy embedding&amp;rdquo; per il routing. Ogni nodo riceve coordinate basate sulla sua posizione relativa alla radice dell&amp;rsquo;albero e al genitore. I pacchetti vengono instradati greedy verso coordinate più vicine alla destinazione, con bloom filter che pubblicizzano gli endpoint raggiungibili. Quando il routing greedy fallisce (minimi locali), i nodi possono ricorrere ai percorsi basati sull&amp;rsquo;albero.&lt;/p>
&lt;p>L&amp;rsquo;implementazione Rust include già il trasporto UDP con scoperta tramite bloom filter. I lavori futuri mirano all&amp;rsquo;integrazione relay Nostr per il bootstrapping dei peer.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;p>Questa settimana ha portato rilasci nell&amp;rsquo;infrastruttura relay e nelle applicazioni client, con nuovi progetti che entrano nello spazio.&lt;/p>
&lt;h3 id="haven-v120">HAVEN v1.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>, il relay personale all-in-one che raggruppa quattro funzioni relay con un server media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, ha distribuito la &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0">v1.2.0&lt;/a>. Questo rilascio va oltre la fase RC &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#haven-v120-rc3">coperta la settimana scorsa&lt;/a>.&lt;/p>
&lt;p>Il supporto multi-npub permette a una singola istanza HAVEN di servire diverse identità Nostr tramite whitelisting, con nuove funzionalità di blacklisting per il controllo degli accessi. Un sistema di backup riscritto usa il formato JSONL portabile, con un comando &lt;code>haven restore&lt;/code> per importare note da file JSONL. L&amp;rsquo;integrazione con lo storage cloud aggiunge i flag &lt;code>--to-cloud&lt;/code> e &lt;code>--from-cloud&lt;/code> per la gestione dei backup remoti.&lt;/p>
&lt;p>I miglioramenti al &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> includono livelli di profondità configurabili per i calcoli di fiducia e intervalli di aggiornamento automatico di 24 ore con ottimizzazione lockless che riduce l&amp;rsquo;overhead di memoria. La configurazione dello user-agent per le richieste ai relay e le impostazioni di timeout Blastr configurabili completano il rilascio, insieme all&amp;rsquo;esportazione dati in JSONL compresso.&lt;/p>
&lt;h3 id="white-noise-v030">White Noise v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, l&amp;rsquo;app di messaggistica cifrata basata su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> che implementa il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha distribuito la &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">v0.3.0&lt;/a> con oltre 160 miglioramenti uniti.&lt;/p>
&lt;p>Questo rilascio porta la messaggistica in tempo reale attraverso connessioni in streaming invece del polling, così i messaggi arrivano istantaneamente. Il supporto Amber (&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>) significa che le chiavi private non devono mai toccare l&amp;rsquo;app. La condivisione delle immagini ora funziona con tracciamento del progresso di upload e placeholder blurhash durante il caricamento. La visualizzazione a schermo intero supporta il pinch-to-zoom.&lt;/p>
&lt;p>La messaggistica di gruppo ha ricevuto miglioramenti di affidabilità con le liste chat che mostrano i nomi dei mittenti e la cifratura &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> che garantisce la forward secrecy. La ricerca utenti si espande verso l&amp;rsquo;esterno dai seguiti fino a quattro gradi di separazione con risultati che arrivano in streaming man mano che vengono trovati.&lt;/p>
&lt;p>Un breaking change azzera tutti i dati locali all&amp;rsquo;aggiornamento a causa di modifiche al protocollo Marmot e al passaggio allo storage locale cifrato. Gli utenti dovrebbero fare il backup delle chiavi nsec prima di aggiornare.&lt;/p>
&lt;h3 id="divine-105">diVine 1.0.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client video a ciclo breve costruito sugli archivi restaurati di Vine, ha distribuito la &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">1.0.5&lt;/a> con ampie correzioni alla riproduzione video e un nuovo sistema di analisi decentralizzato.&lt;/p>
&lt;p>I problemi di riproduzione video hanno dominato le correzioni: pausa fantasma, audio doppio tra video, flash nero tra miniature e primi frame, e crash del player smaltito sono tutti risolti. Un player video in pool gestisce ora il feed Home per una riproduzione coerente.&lt;/p>
&lt;p>Gli event di visualizzazione effimeri Kind 22236 abilitano l&amp;rsquo;analisi dei creator e le raccomandazioni. Il sistema traccia le fonti di traffico (home, varianti di scoperta, profilo, condivisione, ricerca) e i conteggi dei loop filtrando le auto-visualizzazioni. Le perdite di percorso file locale nei tag imeta degli event Nostr sono corrette con URL Blossom canonici costruiti lato client secondo la specifica BUD-01.&lt;/p>
&lt;p>I miglioramenti al signer remoto &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> includono connessioni relay parallelizzate e supporto all&amp;rsquo;URL di callback. Android riconnette le connessioni WebSocket alla ripresa dell&amp;rsquo;app dopo l&amp;rsquo;approvazione del signer.&lt;/p>
&lt;h3 id="coracle-0630">Coracle 0.6.30&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>, il client Nostr web focalizzato sulla gestione dei relay e la moderazione &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a>, ha distribuito la &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.30">0.6.30&lt;/a> con supporto alle miniature video, migliorando la navigazione dei media nei feed.&lt;/p>
&lt;h3 id="nostur-v1260">Nostur v1.26.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, il client Nostr per iOS, ha distribuito la &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.26.0">v1.26.0&lt;/a> con una nuova sezione feed Live Streams e una schermata Impostazioni riprogettata. I GIF possono ora essere ospitati su server media Blossom, riducendo la dipendenza da servizi centralizzati. L&amp;rsquo;integrazione Klipy GIFs fornisce un backup quando Tenor non è disponibile. Le intestazioni per anno nelle conversazioni DM e la visualizzazione del conteggio menzioni completano le modifiche lato utente.&lt;/p>
&lt;p>Gli strumenti per sviluppatori e le app CLI hanno ricevuto aggiornamenti anche questa settimana.&lt;/p>
&lt;h3 id="nak-v0185">nak v0.18.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il coltellino svizzero a riga di comando di fiatjaf per Nostr, ha distribuito la &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.5">v0.18.5&lt;/a> con un nuovo sottocomando &lt;code>nak profile&lt;/code> per recuperare e visualizzare profili utente. Il comando &lt;code>git clone&lt;/code> ora supporta i nomi &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> negli URI &lt;code>nostr://&lt;/code>, abilitando il cloning di repository tramite identificatori leggibili.&lt;/p>
&lt;h3 id="pika-v053">Pika v0.5.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, il messenger cifrato con &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> per iOS, Android e desktop costruito sul protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, ha distribuito la &lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v0.5.3">v0.5.3&lt;/a>. I commit recenti aggiungono il caricamento di file e il supporto al drag-and-drop media nell&amp;rsquo;app desktop, insieme a correzioni per il deployment su Cloudflare Workers.&lt;/p>
&lt;p>Pika usa un core Rust che possiede tutta la logica di business mentre iOS (SwiftUI) e Android (Kotlin) agiscono come livelli UI snelli che renderizzano snapshot dello stato. MDK (Marmot Development Kit) fornisce l&amp;rsquo;implementazione MLS. Il progetto indica lo stato alpha e sconsiglia l&amp;rsquo;uso per carichi di lavoro sensibili.&lt;/p>
&lt;h3 id="ridestr-v026">Ridestr v0.2.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>, la piattaforma di ridesharing decentralizzata con pagamenti Cashu, ha distribuito la &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.6">v0.2.6&lt;/a>. Questo rilascio corregge problemi di accessibilità TalkBack e risolve bug in cui i driver scomparivano dalla lista nelle vicinanze quando si cambiava metodo di pagamento, o in cui il conteggio dei driver selezionati non si aggiornava quando i driver andavano offline.&lt;/p>
&lt;p>La funzione &amp;ldquo;Send to All&amp;rdquo; è ora &amp;ldquo;Broadcast RoadFlare&amp;rdquo; con correzioni per i silenziosi fallimenti su installazioni fresche dei driver. Ridestr implementa l&amp;rsquo;escrow HTLC per pagamenti trustless delle corse e la sincronizzazione wallet &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> tra dispositivi.&lt;/p>
&lt;h3 id="unfiltered-v106">Unfiltered v1.0.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>, l&amp;rsquo;app di condivisione foto simile a Instagram per Android, ha distribuito la &lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.6">v1.0.6&lt;/a> con ricerca utenti migliorata e riconnessione automatica ai relay ogni 60 secondi.&lt;/p>
&lt;p>Costruita con Kotlin e Jetpack Compose, Unfiltered usa le binding rust-nostr e server compatibili con Blossom per l&amp;rsquo;hosting delle immagini. L&amp;rsquo;integrazione Amber (&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>) gestisce la gestione sicura delle chiavi. L&amp;rsquo;app mostra i post degli account seguiti in ordine cronologico senza algoritmi o pubblicità.&lt;/p>
&lt;p>Due nuovi progetti di messaggistica e firma sono stati lanciati questa settimana.&lt;/p>
&lt;h3 id="burrow-messaggistica-mls-per-agenti-ai">Burrow: Messaggistica MLS per Agenti AI&lt;/h3>
&lt;p>&lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> è un messenger che implementa il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per la comunicazione cifrata con MLS senza numeri di telefono o server centralizzati. Sia gli utenti umani che gli agenti AI possono partecipare.&lt;/p>
&lt;p>Un daemon CLI in Rust puro con modalità di output JSONL gestisce l&amp;rsquo;integrazione con i sistemi automatizzati. Un&amp;rsquo;app Flutter cross-platform copre Android, iOS, Linux, macOS e Windows. Gli allegati media vengono cifrati insieme ai messaggi, e WebRTC gestisce le chiamate audio e video con server TURN configurabili.&lt;/p>
&lt;p>Burrow stratifica la cifratura MLS sull&amp;rsquo;infrastruttura Nostr. L&amp;rsquo;identità usa le keypair Nostr (secp256k1) mentre i KeyPackage MLS vengono pubblicati come event di kind 443. I messaggi vengono cifrati con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> come event di kind 445, e gli inviti di benvenuto usano il gift-wrapping &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>.&lt;/p>
&lt;p>L&amp;rsquo;integrazione con &lt;a href="https://openclaw.ai">OpenClaw&lt;/a> abilita la partecipazione degli agenti AI con accesso completo agli strumenti. Le liste di controllo degli accessi con log di audit gestiscono i permessi di contatto e gruppo. Questa combinazione posiziona Burrow per scenari di messaggistica agente-agente e agente-umano che richiedono cifratura di livello Signal su infrastruttura decentralizzata.&lt;/p>
&lt;h3 id="estensione-nostria-signer">Estensione Nostria Signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> è un&amp;rsquo;estensione browser basata su Chromium che fornisce gestione di vault e identità per gli utenti Nostr.&lt;/p>
&lt;p>Vault multipli contenenti account multipli permettono agli utenti di organizzare le identità per contesti diversi. L&amp;rsquo;internazionalizzazione include il supporto alle lingue RTL. Costruita con Angular e TypeScript (79,2% del codebase), funziona sia come estensione browser che come Progressive Web App.&lt;/p>
&lt;p>Nostria Signer implementa &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> per la firma tramite estensione browser, permettendo ai client Nostr web di richiedere firme degli event senza accedere direttamente alle chiavi private. La migrazione automatica del wallet gestisce gli aggiornamenti distribuiti attraverso il Chrome Web Store. Gli utenti possono anche fare il sideload dalla cartella &lt;code>dist/extension&lt;/code>.&lt;/p>
&lt;p>Gli sviluppatori sottolineano lo stato sperimentale: gli utenti devono gestire le proprie frasi di recupero segrete poiché gli sviluppatori non possono ripristinare l&amp;rsquo;accesso alle chiavi perse.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="formstr-migra-alla-nuova-organizzazione">Formstr Migra alla Nuova Organizzazione&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;alternativa a Google Forms su Nostr, ha migrato il suo repository da &lt;code>abh3po/nostr-forms&lt;/code> all&amp;rsquo;organizzazione &lt;code>formstr-hq&lt;/code>. Questo beneficiario di una grant OpenSats continua lo sviluppo nella nuova posizione.&lt;/p>
&lt;h3 id="pr-aperte-di-rilievo">PR Aperte di Rilievo&lt;/h3>
&lt;p>Lavori in corso nei progetti Nostr:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Damus Outbox Model&lt;/strong> (&lt;a href="https://github.com/damus-io/damus/pull/3602">PR #3602&lt;/a>): Piano di implementazione per il modello relay gossip/outbox su iOS. Questo cambiamento architetturale migliora la consegna dei messaggi pubblicando ai relay dove i destinatari leggono effettivamente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Notedeck Cross-Platform Notifications&lt;/strong> (&lt;a href="https://github.com/damus-io/notedeck/pull/1296">PR #1296&lt;/a>): Sistema di notifiche nativo per il client desktop Damus che copre Android FCM, macOS e Linux.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NDK Cashu v3 Upgrade&lt;/strong> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/370">PR #370&lt;/a>): Aggiorna l&amp;rsquo;integrazione wallet del Nostr Development Kit a cashu-ts v3.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Zeus Cashu Offline&lt;/strong> (&lt;a href="https://github.com/ZeusLN/zeus/pull/3742">PR #3742&lt;/a>): Invio e ricezione ecash offline per il wallet Lightning Zeus.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Shopstr Encrypted Digital Delivery&lt;/strong> (&lt;a href="https://github.com/shopstr-eng/shopstr/pull/231">PR #231&lt;/a>): Aggiunge la consegna cifrata per i beni digitali con supporto al peso dinamico per gli articoli fisici.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti questa settimana:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85 Scoperta dei Provider di Servizi&lt;/a>&lt;/strong>: La specifica &lt;a href="https://nostrcompass.org/it/topics/nip-85/">NIP-85&lt;/a> include ora indicazioni su come i client scoprono i provider di trusted assertion. Quando un client necessita di punteggi &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> o altre metriche calcolate, può interrogare i relay per gli annunci kind 30085 da provider che l&amp;rsquo;utente già segue o di cui si fida.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2229">NIP-29 Rimuove i Gruppi Non Gestiti&lt;/a>&lt;/strong>: La specifica dei gruppi chat &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> ha eliminato il supporto per i gruppi non gestiti (dove qualsiasi membro poteva aggiungere altri). Tutti i gruppi NIP-29 richiedono ora la gestione lato relay con ruoli admin espliciti, semplificando le implementazioni e riducendo i vettori di spam.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2231">NIP-11 Rimuove i Campi Deprecati&lt;/a>&lt;/strong>: I documenti di informazione relay &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> non includono più i campi deprecati &lt;code>software&lt;/code> e &lt;code>version&lt;/code>. Le implementazioni dovrebbero rimuoverli dalle proprie risposte.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2227">NIP-39 Sposta i Tag di Identità&lt;/a>&lt;/strong>: Le rivendicazioni di identità esterna (tag &lt;code>i&lt;/code> di &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> per GitHub, Twitter, ecc.) si sono spostate dai profili kind 0 a event kind 30382 dedicati. Questo separa la verifica dell&amp;rsquo;identità dai metadata del profilo.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Avanzamento dei NIP per Agenti AI:&lt;/strong>&lt;/p>
&lt;p>Quattro NIP focalizzati sull&amp;rsquo;AI continuano lo sviluppo attivo. Da &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#arrivano-le-proposte-di-nip-per-agenti-ai">quando li abbiamo coperti la settimana scorsa&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a>&lt;/strong> (aggiornato il 19 feb): Definisce l&amp;rsquo;identità degli agenti con kind 4199 per le definizioni degli agenti e kind 4201 per i prompt (&amp;ldquo;nudge&amp;rdquo;). Gli agenti possono referenziare i metadata dei file &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> per descrizioni estese.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a>&lt;/strong> (aggiornato il 18 feb): Standardizza la messaggistica conversazionale con sette kind di event effimeri (25800-25806) per stato, delta di streaming, prompt, risposte, chiamate agli strumenti, errori e cancellazione. Gli event kind 31340 &amp;ldquo;AI Info&amp;rdquo; permettono agli agenti di pubblicizzare modelli e capacità supportate.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2228">NIP-AC: DVM Agent Coordination&lt;/a>&lt;/strong> (aperto il 18 feb): Estende &lt;a href="https://nostrcompass.org/it/topics/nip-90/">NIP-90&lt;/a> per i flussi di lavoro autonomi degli agenti. Aggiunge heartbeat per la scoperta degli agenti, recensioni dei job per il tracciamento della qualità, escrow dei dati per l&amp;rsquo;impegno sui risultati, catene di flusso di lavoro per pipeline multi-step e bidding in sciame per la selezione competitiva dei provider. Un&amp;rsquo;implementazione di riferimento gira su 2020117.xyz.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server Announcements&lt;/a>&lt;/strong> (aperto il 12 feb): Standardizza l&amp;rsquo;annuncio dei server e delle skill del Model Context Protocol su Nostr. Già in uso sulla piattaforma TENEX.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Altre PR Aperte:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2232">NIP-144: Service Authorization Protocol&lt;/a>&lt;/strong>: Definisce come i client dimostrano identità e permessi ai provider di servizi su Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2230">NIP-DC: Nostr Webxdc&lt;/a>&lt;/strong>: alexgleason propone di integrare Webxdc (applicazioni web decentralizzate) con gli event Nostr.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-55-applicazione-signer-android">NIP Deep Dive: NIP-55 (Applicazione Signer Android)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/55.md">NIP-55&lt;/a> definisce come i client Nostr Android richiedono operazioni crittografiche da applicazioni signer dedicate. Con &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a> e &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered v1.0.6&lt;/a> che aggiungono entrambi il supporto ad Amber questa settimana, il protocollo di firma Android merita un esame.&lt;/p>
&lt;p>&lt;strong>Canali di Comunicazione:&lt;/strong>&lt;/p>
&lt;p>NIP-55 abilita la firma inter-app attraverso due meccanismi. Gli Intent forniscono l&amp;rsquo;approvazione manuale dell&amp;rsquo;utente con feedback visivo per operazioni una tantum. I Content Resolver abilitano la firma automatizzata quando gli utenti concedono permessi persistenti, permettendo alle app di firmare in background senza prompt ripetuti.&lt;/p>
&lt;p>La comunicazione usa lo schema URI personalizzato &lt;code>nostrsigner:&lt;/code>. Un client avvia il contatto con:&lt;/p>
&lt;pre tabindex="0">&lt;code>nostrsigner:&amp;lt;base64-encoded-event&amp;gt;?type=sign_event&amp;amp;callbackUrl=myapp://callback
&lt;/code>&lt;/pre>&lt;p>&lt;strong>Operazioni Supportate:&lt;/strong>&lt;/p>
&lt;p>La specifica definisce sette metodi crittografici: firma degli event (&lt;code>sign_event&lt;/code>), recupero della chiave pubblica (&lt;code>get_public_key&lt;/code>), cifratura/decifratura &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>, cifratura/decifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e decifratura degli event zap (&lt;code>decrypt_zap_event&lt;/code>).&lt;/p>
&lt;p>&lt;strong>Modello di Permessi:&lt;/strong>&lt;/p>
&lt;p>I client chiamano &lt;code>get_public_key&lt;/code> una volta per stabilire una relazione di fiducia, ricevendo il nome del pacchetto del signer e la pubkey dell&amp;rsquo;utente. La specifica impone che i client salvino questi valori e non chiamino mai più &lt;code>get_public_key&lt;/code>, prevenendo attacchi di fingerprinting.&lt;/p>
&lt;p>Per le richieste di firma, gli utenti possono approvare una volta o concedere &amp;ldquo;ricorda la mia scelta&amp;rdquo; per le operazioni in background. Se gli utenti rifiutano ripetutamente le operazioni, il signer restituisce uno stato &amp;ldquo;rejected&amp;rdquo;, prevenendo prompt ripetuti.&lt;/p>
&lt;p>&lt;strong>Implementazioni:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a> è il signer NIP-55 principale per Android. I client che supportano NIP-55 includono &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise&lt;/a>, &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered&lt;/a> e altri. Le applicazioni web non possono ricevere direttamente le risposte del signer e devono usare URL di callback o operazioni con gli appunti.&lt;/p>
&lt;p>&lt;strong>Relazione con gli Altri NIP di Firma:&lt;/strong>&lt;/p>
&lt;p>NIP-55 completa &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a> (estensioni browser) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota sui relay). Dove NIP-07 gestisce i browser desktop e NIP-46 gestisce la firma cross-device, NIP-55 fornisce integrazione nativa Android con latenza minima.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-60-wallet-cashu">NIP Deep Dive: NIP-60 (Wallet Cashu)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/60.md">NIP-60&lt;/a> definisce come i wallet ecash &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> memorizzano lo stato sui relay Nostr, abilitando la sincronizzazione del wallet tra applicazioni. Con &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr v0.2.6&lt;/a> che usa NIP-60 per la sincronizzazione del wallet tra dispositivi, il protocollo merita un esame.&lt;/p>
&lt;p>&lt;strong>Tipi di Event:&lt;/strong>&lt;/p>
&lt;p>NIP-60 usa quattro tipi di event. Il kind 17375 sostituibile memorizza la configurazione del wallet inclusi gli URL dei mint e una chiave privata dedicata per ricevere pagamenti ecash P2PK. Gli event token (kind 7375) contengono prove crittografiche non spese, mentre la cronologia delle spese (kind 7376) registra le transazioni per la trasparenza dell&amp;rsquo;utente. Un kind 7374 opzionale traccia le quote di pagamento del mint.&lt;/p>
&lt;p>&lt;strong>Architettura del Wallet:&lt;/strong>&lt;/p>
&lt;p>Lo stato del wallet risiede sui relay, rendendolo accessibile tra le applicazioni. L&amp;rsquo;event wallet di un utente contiene riferimenti cifrati ai mint Cashu e una chiave privata specifica per il wallet separata dall&amp;rsquo;identità Nostr dell&amp;rsquo;utente. Questa separazione è importante: la chiave wallet gestisce le operazioni ecash mentre la chiave Nostr gestisce le funzioni sociali.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">17375&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted-wallet-config&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;cashu-wallet&amp;#34;&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Gestione delle Prove:&lt;/strong>&lt;/p>
&lt;p>Le prove Cashu sono strumenti al portatore. Una volta spesa, una prova diventa non valida. NIP-60 gestisce questo attraverso un meccanismo di rollover: durante la spesa, i client creano un nuovo event token con le prove non spese rimanenti ed eliminano l&amp;rsquo;originale tramite &lt;a href="https://nostrcompass.org/it/topics/nip-09/">NIP-09&lt;/a>. Gli ID dei token distrutti vanno in un campo &lt;code>del&lt;/code> per il tracciamento dello stato.&lt;/p>
&lt;p>I client dovrebbero periodicamente validare le prove contro i mint per rilevare credenziali precedentemente spese. Sono consentiti event token multipli per mint, e gli event della cronologia delle spese aiutano gli utenti a tracciare le transazioni anche se sono facoltativi.&lt;/p>
&lt;p>&lt;strong>Modello di Sicurezza:&lt;/strong>&lt;/p>
&lt;p>Tutti i dati sensibili usano la cifratura &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>. La chiave privata del wallet non appare mai in chiaro. Poiché i relay memorizzano blob cifrati senza comprenderne il contenuto, lo stato del wallet rimane privato anche su relay non fidati.&lt;/p>
&lt;p>&lt;strong>Implementazioni:&lt;/strong>&lt;/p>
&lt;p>I wallet che supportano NIP-60 includono &lt;a href="https://github.com/gandlafbtc/nutsack">Nutsack&lt;/a> e &lt;a href="https://github.com/cashubtc/eNuts">eNuts&lt;/a>. Client come &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr&lt;/a> usano NIP-60 per la sincronizzazione cross-device, permettendo agli utenti di ricaricare dal desktop e spendere dal mobile senza trasferimenti manuali.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #10</title><link>https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Prende forma un livello di cache locale per Blossom, con progetti indipendenti che convergono sull&amp;rsquo;accesso offline ai media per Android. Alby lancia un &lt;a href="https://sandbox.albylabs.com">sandbox per sviluppatori NWC&lt;/a> per costruire e testare integrazioni Nostr Wallet Connect senza rischiare fondi reali. Nello stesso arco di giorni arrivano due proposte concorrenti per la comunicazione di agenti AI su Nostr, firmate da autori diversi. fiatjaf elimina i campi inutilizzati da &lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>, rimuovendo policy di riservatezza, retention, codici paese e tag sulle preferenze comunitarie che gli operatori relay non avevano mai adottato. &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a> viene unito con linee guida sulla scoperta dei provider di servizi per le Trusted Assertions. Un nuovo tag &lt;code>D&lt;/code> in &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a> abilita l&amp;rsquo;indicizzazione temporale a granularità giornaliera per gli eventi calendario. Tra i nuovi progetti: &lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> per la distribuzione decentralizzata di tile cartografiche, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> per la messaggistica cifrata con MLS, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> per la firma a soglia FROST su Android, &lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> per lo storage content-addressed con integrazione Nostr, e &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> per condividere contenuti su Nostr da qualsiasi app Android. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> unisce 11 PR NWC aggiungendo supporto doppio wallet e gestione automatica del ciclo di vita del servizio. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> rilascia un &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">wallet Lightning integrato&lt;/a> tramite integrazione NWC. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> si prepara al rilascio sull&amp;rsquo;App Store Android, mentre HAVEN raggiunge la &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a> con supporto multi-npub e backup cloud. Gli approfondimenti di questa settimana coprono il sistema Trusted Assertions di NIP-85 per delegare i calcoli del Web of Trust ai provider di servizi, e il protocollo Calendar Events di NIP-52 a seguito dell&amp;rsquo;aggiornamento per l&amp;rsquo;indicizzazione a granularità giornaliera.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Prende forma un livello di cache locale per Blossom, con progetti indipendenti che convergono sull&amp;rsquo;accesso offline ai media per Android. Alby lancia un &lt;a href="https://sandbox.albylabs.com">sandbox per sviluppatori NWC&lt;/a> per costruire e testare integrazioni Nostr Wallet Connect senza rischiare fondi reali. Nello stesso arco di giorni arrivano due proposte concorrenti per la comunicazione di agenti AI su Nostr, firmate da autori diversi. fiatjaf elimina i campi inutilizzati da &lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>, rimuovendo policy di riservatezza, retention, codici paese e tag sulle preferenze comunitarie che gli operatori relay non avevano mai adottato. &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a> viene unito con linee guida sulla scoperta dei provider di servizi per le Trusted Assertions. Un nuovo tag &lt;code>D&lt;/code> in &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a> abilita l&amp;rsquo;indicizzazione temporale a granularità giornaliera per gli eventi calendario. Tra i nuovi progetti: &lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> per la distribuzione decentralizzata di tile cartografiche, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> per la messaggistica cifrata con MLS, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> per la firma a soglia FROST su Android, &lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> per lo storage content-addressed con integrazione Nostr, e &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> per condividere contenuti su Nostr da qualsiasi app Android. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> unisce 11 PR NWC aggiungendo supporto doppio wallet e gestione automatica del ciclo di vita del servizio. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> rilascia un &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">wallet Lightning integrato&lt;/a> tramite integrazione NWC. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> si prepara al rilascio sull&amp;rsquo;App Store Android, mentre HAVEN raggiunge la &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a> con supporto multi-npub e backup cloud. Gli approfondimenti di questa settimana coprono il sistema Trusted Assertions di NIP-85 per delegare i calcoli del Web of Trust ai provider di servizi, e il protocollo Calendar Events di NIP-52 a seguito dell&amp;rsquo;aggiornamento per l&amp;rsquo;indicizzazione a granularità giornaliera.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="emerge-un-livello-di-cache-locale-per-blossom">Emerge un Livello di Cache Locale per Blossom&lt;/h3>
&lt;p>Diversi progetti indipendenti stanno convergendo sullo stesso problema: l&amp;rsquo;accesso offline ai media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> su dispositivi mobili.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Morganite">Morganite&lt;/a>, una nuova app Android di greenart7c3 (lo sviluppatore dietro &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a> e &lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>), implementa il caching lato client per i media Blossom. Gli utenti possono accedere a immagini e file precedentemente visualizzati senza connessione di rete.&lt;/p>
&lt;p>&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a> ha rilasciato la &lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a> con etichettatura delle immagini, operazioni bulk di mirror/tag/eliminazione, filtraggio per etichetta e tipo di file, più il supporto iniziale alla cache locale Blossom. Aerith è un&amp;rsquo;interfaccia di gestione per utenti che archiviano media su più server Blossom e necessitano di organizzare e replicare i propri blob.&lt;/p>
&lt;p>Una nuova &lt;a href="https://github.com/hzrd149/blossom/blob/master/implementations/local-blossom-cache.md">guida all&amp;rsquo;implementazione della cache locale&lt;/a> nella specifica Blossom documenta lo storage blob lato client, mentre &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> (dello stesso sviluppatore di Aerith) aggiunge l&amp;rsquo;integrazione Blossom upload al proprio flusso share-to-Nostr su Android. Quattro progetti indipendenti hanno convergito sullo stesso problema questa settimana: un&amp;rsquo;app di caching dedicata, un gestore media, una specifica di riferimento e uno strumento di condivisione con integrazione Blossom, tutti con storage locale persistente oltre il semplice upload-e-recupero.&lt;/p>
&lt;h3 id="sandbox-nwc-per-sviluppatori-di-alby">Sandbox NWC per Sviluppatori di Alby&lt;/h3>
&lt;p>&lt;a href="https://sandbox.albylabs.com">Alby&lt;/a> ha lanciato un ambiente sandbox per gli sviluppatori che lavorano con &lt;a href="https://nostrcompass.org/it/topics/nip-47/">Nostr Wallet Connect (NIP-47)&lt;/a>. Il sandbox offre un servizio NWC wallet ospitato dove gli sviluppatori possono creare connessioni di test e inviare pagamenti simulati senza collegare un vero wallet Lightning, osservando in tempo reale il ciclo completo richiesta/risposta degli eventi NWC. Gli sviluppatori generano una stringa di connessione &lt;code>nostr+walletconnect://&lt;/code> dal sandbox e la passano al proprio client. Il sandbox mostra poi il kind 23194 (richiesta) e il kind 23195 (risposta) risultanti mentre scorrono tra client e wallet service.&lt;/p>
&lt;p>Questo abbassa la barriera per le nuove integrazioni NWC. In precedenza, i test richiedevano un wallet Lightning personale o un servizio NWC self-hosted. Il sandbox astrae questa complessità, dando agli sviluppatori un ciclo di feedback immediato per implementare i metodi &lt;code>pay_invoice&lt;/code>, &lt;code>get_balance&lt;/code>, &lt;code>make_invoice&lt;/code>, &lt;code>lookup_invoice&lt;/code> e &lt;code>list_transactions&lt;/code> su un endpoint NWC attivo.&lt;/p>
&lt;h3 id="arrivano-le-proposte-di-nip-per-agenti-ai">Arrivano le Proposte di NIP per Agenti AI&lt;/h3>
&lt;p>Proposte per la comunicazione di agenti AI su Nostr sono apparse a distanza di giorni l&amp;rsquo;una dall&amp;rsquo;altra, affrontando il problema da angolazioni diverse.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a> di joelklabo definisce un protocollo completo per l&amp;rsquo;interazione con agenti AI: kind di eventi per prompt, risposte, delta di streaming, aggiornamenti di stato, telemetria degli strumenti, errori, cancellazioni e scoperta delle capacità. Un evento di scoperta &lt;code>ai.info&lt;/code> (kind 31340, sostituibile) permette agli agenti di annunciare i modelli supportati, gli strumenti con i relativi schemi, il supporto allo streaming e i limiti di frequenza. La proposta di joelklabo include la correlazione delle esecuzioni tramite prompt ID, la gestione delle sessioni, la riconciliazione dello stream con ordinamento sequenziale e indicazioni &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> per la privacy dei metadata.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a> di pablof7z adotta un approccio diverso, definendo kind per l&amp;rsquo;istanziazione degli agenti: definizioni e lezioni. Si tratta dei tipi di eventi che pablof7z usa in &lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, il sistema di apprendimento autonomo costruito su Nostr. Una proposta complementare, &lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server and Skill Announcements&lt;/a>, sempre di pablof7z, definisce eventi per annunciare server &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> e skill su Nostr. I commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> sono supportati, così la community può discutere e valutare i server MCP direttamente su Nostr.&lt;/p>
&lt;p>NIP-XX copre la comunicazione completa degli agenti, mentre NIP-AE e NIP-AD si occupano di identità e scoperta degli strumenti. Queste proposte potrebbero convergere in uno standard unificato o coesistere come livelli complementari.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="haven-v120-rc3">HAVEN v1.2.0-rc3&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>, il relay personale all-in-one che raggruppa quattro funzioni relay con un server media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, ha raggiunto la &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a>. Questa release candidate aggiunge il supporto per più npub, permettendo a una singola istanza HAVEN di servire diverse identità Nostr. Le RC precedenti avevano aggiunto i flag &lt;code>--from-cloud&lt;/code> e &lt;code>--to-cloud&lt;/code> per il backup cloud (RC2) e corretto un bug di doppio conteggio nel Web of Trust (RC1).&lt;/p>
&lt;h3 id="mostro-mobile-v120-wallet-lightning-integrato">Mostro Mobile v1.2.0: Wallet Lightning Integrato&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, il client mobile per l&amp;rsquo;exchange Bitcoin P2P &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> (&lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#mostro-rilascia-la-prima-beta-pubblica">v1.1.0 coperto la settimana scorsa&lt;/a>), ha rilasciato la &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">v1.2.0&lt;/a> con un wallet Lightning integrato attraverso la completa integrazione &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NWC (NIP-47)&lt;/a>. Acquirenti e venditori non devono più cambiare app per gestire le fatture. L&amp;rsquo;app rileva le hold invoice per i venditori e le paga automaticamente tramite il wallet collegato, mentre gli acquirenti ricevono la generazione automatica delle fatture. Il rilascio fa seguito alla &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.1%2B1">v1.1.1&lt;/a> pubblicata all&amp;rsquo;inizio della settimana, che aggiungeva il supporto multi-nodo Mostro con un registro curato di istanze fidate, il recupero dei metadata kind 0 per la visualizzazione dei nodi, la gestione di nodi personalizzati tramite pubkey e il fallback automatico quando un nodo selezionato va offline.&lt;/p>
&lt;p>Sul lato server, &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.2">Mostro v0.16.2&lt;/a> è arrivato con correzioni per i pagamenti doppi delle dev fee, il rate limiting sull&amp;rsquo;endpoint RPC di validazione password e la corretta pulizia delle dispute alla cancellazione cooperativa.&lt;/p>
&lt;p>Un nuovo progetto companion, &lt;a href="https://github.com/MostroP2P/mostro-skill">mostro-skill&lt;/a>, consente agli agenti di fare trading su Mostro tramite Nostr.&lt;/p>
&lt;h3 id="aerith-v02">Aerith v0.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a>, il gestore di immagini &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>, ha rilasciato la &lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a> con etichette per l&amp;rsquo;organizzazione dei media, operazioni bulk di mirror/tag/eliminazione tra server, filtraggio per etichetta e tipo di file, più il supporto iniziale alla cache locale. Vedi la &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#emerge-un-livello-di-cache-locale-per-blossom">sezione Notizie&lt;/a> per il contesto sul trend più ampio della cache locale.&lt;/p>
&lt;h3 id="mapnolia-tile-cartografiche-decentralizzate-su-nostr">Mapnolia: Tile Cartografiche Decentralizzate su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> è un nuovo server di dati geospaziali che suddivide gli archivi di tile cartografiche &lt;a href="https://github.com/protomaps/PMTiles">PMTiles&lt;/a> in regioni geografiche e le annuncia su Nostr per la scoperta decentralizzata. Pubblica eventi parametrizzati sostituibili kind 34444 sui relay Nostr contenenti un indice completo dei chunk di tile con metadati dei layer, regioni geohash, riferimenti ai file e dettagli del server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;p>I client scoprono e recuperano i dati cartografici attraverso la rete Nostr invece dei server di tile centralizzati, con eventi di annuncio che portano metadati sufficienti a richiedere solo le regioni geografiche necessarie dai server Blossom elencati. Mapnolia è il primo progetto a portare la distribuzione di dati geospaziali su Nostr, aprendo possibilità per applicazioni cartografiche con supporto offline.&lt;/p>
&lt;h3 id="pika-messaggistica-cifrata-con-marmot">Pika: Messaggistica Cifrata con Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> è una nuova app di messaggistica end-to-end cifrata per iOS e Android che usa il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a>, che stratifica il &lt;a href="https://nostrcompass.org/it/topics/mls/">Messaging Layer Security (MLS)&lt;/a> sui relay Nostr. L&amp;rsquo;architettura separa le responsabilità in un core Rust (&lt;code>pika_core&lt;/code>) che gestisce lo stato MLS e la cifratura/decifratura dei messaggi sui relay Nostr, con shell UI native snelle in SwiftUI (iOS) e Kotlin (Android). Lo stato scorre unidirezionalmente: la UI invia azioni all&amp;rsquo;attore Rust, che modifica lo stato e restituisce snapshot con numeri di revisione alla UI tramite binding UniFFI e JNI.&lt;/p>
&lt;p>Pika si unisce a un campo in crescita di messenger MLS-on-Nostr insieme a &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, &lt;a href="https://github.com/VectorPrivacy">Vector&lt;/a> e &lt;a href="https://0xchat.com">0xchat&lt;/a>. Tutti usano i relay Nostr come livello di trasporto per il ciphertext cifrato MLS, rendendo gli operatori relay incapaci di leggere il contenuto dei messaggi. Pika usa il Marmot Development Kit (MDK) per la propria implementazione MLS e nostr-sdk per la connettività relay.&lt;/p>
&lt;h3 id="keep-firma-a-soglia-frostittopicsfrost-per-android">Keep: Firma a Soglia &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> per Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> è una nuova applicazione Android per la firma a soglia &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> dove nessun singolo dispositivo detiene la chiave privata completa. Implementa &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (Android Signer) e &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota), così i client Nostr compatibili possono richiedere firme mantenendo il materiale crittografico distribuito tra dispositivi. Le configurazioni predefinite sono 2-di-3 e 3-di-5, ma è supportata qualsiasi soglia t-di-n.&lt;/p>
&lt;p>La cerimonia di generazione distribuita delle chiavi (DKG) di Keep avviene sui relay Nostr usando kind di eventi personalizzati: kind 21101 per gli annunci di gruppo, kind 21102 per i polinomi di commitment del round 1 (trasmessi pubblicamente) e kind 21103 per le share segrete del round 2 (cifrate &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> punto-a-punto tra i partecipanti). Lo scalare della chiave privata di gruppo non viene mai calcolato né assemblato durante il DKG. Ogni dispositivo detiene solo la propria share di valutazione polinomiale, e qualsiasi t share può produrre una firma Schnorr valida attraverso un protocollo commit-then-sign a due round. La firma da 64 byte risultante è indistinguibile da una firma Schnorr a singolo firmatario. Internamente, Keep usa il crate &lt;code>frost-secp256k1-tr&lt;/code> della Zcash Foundation con il Taproot tweaking, così la chiave pubblica di gruppo funziona direttamente come un npub Nostr.&lt;/p>
&lt;p>Keep si unisce alla famiglia di progetti &lt;a href="https://frostr.org">Frostr&lt;/a> insieme a &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo Desktop&lt;/a>, &lt;a href="https://github.com/FROSTR-ORG/igloo-android">Igloo for Android&lt;/a>, &lt;a href="https://github.com/FROSTR-ORG/frost2x">Frost2x&lt;/a> e &lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo for iOS&lt;/a>, ampliando le opzioni per la gestione a soglia delle chiavi su Nostr.&lt;/p>
&lt;h3 id="prism-condividi-qualsiasi-cosa-su-nostr-da-android">Prism: Condividi Qualsiasi Cosa su Nostr da Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> è una nuova app Android (Kotlin/Jetpack Compose, API 26+) che si registra come target di condivisione di sistema, permettendo agli utenti di pubblicare testo, URL, immagini e video su Nostr da qualsiasi app del proprio telefono. Gli URL condivisi passano attraverso uno stripping dei parametri di tracciamento prima di essere composti in note. Prism recupera i metadata OpenGraph per generare anteprime link ricche e rende i riferimenti Nostr nativi (&lt;code>note1&lt;/code>, &lt;code>nevent1&lt;/code>) inline.&lt;/p>
&lt;p>Il motore di pianificazione usa un approccio ibrido &lt;code>AlarmManager&lt;/code>/&lt;code>WorkManager&lt;/code> per aggirare le ottimizzazioni della batteria Android: AlarmManager gestisce la temporizzazione precisa dei wake-up mentre i task WorkManager urgenti garantiscono la consegna, con retry a backoff esponenziale per gli scenari offline. I caricamenti media avvengono su server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> configurabili con generazione di thumbnail per immagini e frame video. Tutta la firma degli eventi è delegata a signer esterni &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> come &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a>, con supporto multi-account per passare tra identità. Prism supporta anche i post &lt;a href="https://nostrcompass.org/it/topics/nip-84/">NIP-84 (Highlights)&lt;/a>. Dello stesso sviluppatore di &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#aerith-v02">Aerith&lt;/a>.&lt;/p>
&lt;h3 id="hashtree-storage-content-addressed-con-integrazione-nostr">Hashtree: Storage Content-Addressed con Integrazione Nostr&lt;/h3>
&lt;p>&lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> è un sistema di storage blob content-addressed basato su filesystem che pubblica radici Merkle su Nostr per creare indirizzi npub/percorso mutabili. Il sistema usa uno &amp;ldquo;storage stupido&amp;rdquo; che funziona con qualsiasi key-value store, suddividendo il contenuto in blocchi da 2MB ottimizzati per i caricamenti &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. A differenza di BitTorrent, non è necessaria alcuna computazione attiva delle prove Merkle: basta archiviare e recuperare i blob per hash.&lt;/p>
&lt;p>L&amp;rsquo;integrazione Nostr abilita URL git remoti come &lt;code>htree://npub.../repo-name&lt;/code> per il cloning di repository, con comandi come &lt;code>htree publish mydata &amp;lt;hash&amp;gt;&lt;/code> per pubblicare hash di contenuto agli indirizzi &lt;code>npub.../mydata&lt;/code>. Il CLI completo supporta sia la modalità di storage cifrata (predefinita) che quella pubblica, il pinning dei contenuti, il push ai server Blossom e la gestione delle identità Nostr. Ogni elemento archiviato è o raw bytes o un nodo dell&amp;rsquo;albero, fornendo una base per la distribuzione decentralizzata di contenuti attraverso la rete relay di Nostr.&lt;/p>
&lt;h3 id="espy-cattura-palette-colori-su-shakespeare">Espy: Cattura Palette Colori su Shakespeare&lt;/h3>
&lt;p>&lt;a href="https://espy.you">Espy&lt;/a>, costruito sulla piattaforma &lt;a href="https://soapbox.pub/tools/shakespeare/">Shakespeare&lt;/a>, permette agli utenti di catturare palette colori da foto e condividerle come eventi Nostr. Shakespeare è un costruttore di app assistito da AI che autentica gli utenti tramite estensioni browser NIP-07 e fornisce connettività relay Nostr integrata, così gli sviluppatori pubblicano app senza implementare la propria gestione delle chiavi o il proprio pool relay. Espy estrae i colori dominanti dall&amp;rsquo;input della fotocamera in schede palette condivisibili e scopribili tramite i feed Nostr standard.&lt;/p>
&lt;h3 id="flotilla-164">Flotilla 1.6.4&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, il client Nostr in stile Discord di hodlbod che organizza i relay come gruppi, ha rilasciato la &lt;a href="https://gitea.coracle.social/coracle/flotilla/releases/tag/1.6.4">1.6.4&lt;/a>. La famiglia di progetti Coracle è migrata da GitHub a un&amp;rsquo;istanza &lt;a href="https://gitea.coracle.social/coracle">Gitea&lt;/a> self-hosted. Questo rilascio aggiunge notifiche push tramite NIP-9a e un flusso per la ricezione wallet, oltre a inserzioni classificate e supporto agli URL degli spazi. I miglioramenti all&amp;rsquo;interfaccia includono modal e gestione delle notifiche riorganizzati. Il muting delle stanze e gli inset safe area su mobile completano le modifiche, insieme a correzioni per i caricamenti immagini su Safari e i dettagli degli eventi calendario.&lt;/p>
&lt;h3 id="shosho-v0120">Shosho v0.12.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, l&amp;rsquo;app mobile di live-streaming con integrazione Nostr, ha rilasciato la &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.12.0">v0.12.0&lt;/a>. Questo rilascio aggiunge Clip video con risposte in-player e integrazione emoji personalizzate. La protezione dei thread blocca lo spam da menzione indiretta, e una nuova funzione di condivisione QR permette agli utenti di scambiare profili offline. Una nuova modalità di riproduzione orizzontale offre agli stream un&amp;rsquo;esperienza di visione in stile Twitch, e la schermata di esplorazione ora mostra i clip dei creator insieme agli stream in diretta.&lt;/p>
&lt;h3 id="granary-v100">Granary v10.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/snarfed/granary">Granary&lt;/a>, una libreria di traduzione per il web sociale che converte dati tra Nostr, Bluesky, ActivityPub e altre piattaforme in un formato comune, ha rilasciato la &lt;a href="https://github.com/snarfed/granary/releases/tag/v10.0">v10.0&lt;/a> con modifiche incompatibili. Il rilascio passa gli ID ActivityStreams 1 predefiniti di Nostr da bech32 a hex e aggiunge un supporto Nostr esteso tra cui il parsing delle menzioni &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> e i tag degli articoli. Una nuova opzione di output multiplo tra i converter permette agli sviluppatori di tradurre tra protocolli in batch.&lt;/p>
&lt;h3 id="nostr-mcp-server-v300">Nostr MCP Server v3.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/AustinKelsay/nostr-mcp-server">Nostr MCP Server&lt;/a>, un server &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> che consente agli agenti AI di interagire con la rete Nostr, ha rilasciato la &lt;a href="https://github.com/AustinKelsay/nostr-mcp-server/releases/tag/v3.0.0">v3.0.0&lt;/a>. Questo rilascio principale aggiunge azioni sociali (follow, reazioni, repost, risposte) e gestione delle liste relay con supporto &lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a> più autenticazione opzionale &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>. Sono nuovi anche i messaggi diretti tramite &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>. Il rilascio si affianca alle &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#arrivano-le-proposte-di-nip-per-agenti-ai">proposte di NIP per agenti AI&lt;/a> di questa settimana come strumenti pratici per gli agenti che operano su Nostr.&lt;/p>
&lt;h3 id="aegis-v038">Aegis v0.3.8&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>, il signer Nostr cross-platform, ha rilasciato la &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.8">v0.3.8&lt;/a> con supporto UI multilingua e un gestore di aggiornamenti incrementale per il proprio browser di app Nostr integrato. Il nuovo meccanismo di aggiornamento calcola il diff in modo incrementale rispetto allo stato locale, mantenendo aggiornata la directory in-app delle web app Nostr con un consumo di banda ridotto. Il rilascio introduce anche un caching del materiale crittografico da 5 minuti per ridurre i round-trip al database quando si firmano più eventi in successione.&lt;/p>
&lt;h3 id="snstr-v031">SNSTR v0.3.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/AustinKelsay/snstr">SNSTR&lt;/a> (Secure Nostr Software Toolkit for Renegades), una libreria TypeScript per il protocollo Nostr, ha rilasciato la &lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.1">v0.3.1&lt;/a>. Il rilascio aggiunge guardie di verifica dei pacchetti che assicurano che tutti i punti di ingresso siano inclusi nei tarball npm, con verifica CI su Node e Bun. La &lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.0">v0.3.0&lt;/a> è uscita nella stessa settimana.&lt;/p>
&lt;h3 id="citrine-v200-pre1">Citrine v2.0.0-pre1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>, il relay Nostr per Android di greenart7c3, ha rilasciato la &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre1">v2.0.0-pre1&lt;/a> con miglioramenti delle prestazioni tramite indici del database ottimizzati e una migliore gestione delle coroutine Kotlin. Il rilascio migliora anche il supporto per l&amp;rsquo;hosting di web app, con ogni app ora in esecuzione sulla propria porta.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="primal-android-espansione-dellinfrastruttura-nwc">Primal Android: Espansione dell&amp;rsquo;Infrastruttura NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha unito 11 PR legate a NWC questa settimana, continuando il lavoro avviato &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#primal-android-rilascia-crittografia-nwc">due settimane fa&lt;/a>. Questa tornata aggiunge il supporto NWC per doppio wallet, avvio/arresto automatico del servizio legato alle notifiche del backend, routing delle connessioni per tipo di wallet e corretta pulizia dei dati all&amp;rsquo;eliminazione del wallet. Il servizio NWC ora gestisce il proprio ciclo di vita in base allo stato della connessione wallet, riducendo l&amp;rsquo;intervento manuale dell&amp;rsquo;utente.&lt;/p>
&lt;h3 id="notedeck-preparazione-allapp-store-android">Notedeck: Preparazione all&amp;rsquo;App Store Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client Nostr multi-piattaforma del team &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, ha unito la &lt;a href="https://github.com/damus-io/notedeck/pull/1287">preparazione al rilascio sull&amp;rsquo;App Store Android&lt;/a> questa settimana. La PR aggiunge un piano di conformità UGC (User Generated Content) richiesto da Google Play, inclusa una schermata di accettazione dei Termini di Servizio, il blocco degli utenti tramite menu contestuali e impostazioni, la funzionalità &lt;a href="https://nostrcompass.org/it/topics/nip-56/">NIP-56 (Segnalazione)&lt;/a> che pubblica eventi di segnalazione sui relay, e una sezione di impostazioni per Contenuto e Sicurezza. È stata aggiunta l&amp;rsquo;infrastruttura di build per generare APK firmati e AAB (Android App Bundle) tramite nuovi target Makefile. Un documento EULA stabilisce un requisito di età di 17 anni e disclaimer specifici per Nostr riguardo ai contenuti decentralizzati. Le funzionalità di conformità stesse arriveranno in PR successive; questo merge pone le basi documentali e di firma.&lt;/p>
&lt;p>Sul fronte Damus iOS, è stata corretta una &lt;a href="https://github.com/damus-io/damus/pull/3593">regressione del caricamento infinito&lt;/a> in cui lo spinner persisteva indefinitamente dopo che il contenuto era stato caricato.&lt;/p>
&lt;h3 id="nostria-relay-di-scoperta-e-correzioni-dm">Nostria: Relay di Scoperta e Correzioni DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, il client Nostr cross-platform focalizzato sulla scala globale, ha unito 9 PR questa settimana. La più importante aggiunge l&amp;rsquo;&lt;a href="https://github.com/nostria-app/nostria/pull/460">auto-inizializzazione dei Discovery Relay&lt;/a> per la ricerca dei profili, garantendo ai nuovi utenti una connettività relay funzionante senza configurazione manuale. Altre correzioni riguardano &lt;a href="https://github.com/nostria-app/nostria/pull/466">l&amp;rsquo;avvolgimento del testo nelle textarea DM&lt;/a>, &lt;a href="https://github.com/nostria-app/nostria/pull/479">il riempimento del viewport per i video a schermo intero&lt;/a>, &lt;a href="https://github.com/nostria-app/nostria/pull/481">l&amp;rsquo;estrazione dei metadata degli articoli nelle anteprime repost&lt;/a> e &lt;a href="https://github.com/nostria-app/nostria/pull/458">la risoluzione degli URI nostr: nelle notifiche&lt;/a>.&lt;/p>
&lt;h3 id="camelus-migrazione-a-riverpod-v3">Camelus: Migrazione a Riverpod v3&lt;/h3>
&lt;p>&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>, il client Nostr basato su Flutter, ha unito 5 PR questa settimana incentrate su una &lt;a href="https://github.com/camelus-hq/camelus/pull/158">migrazione all&amp;rsquo;API Riverpod v3&lt;/a> e un &lt;a href="https://github.com/camelus-hq/camelus/pull/159">refactoring del feed generico&lt;/a>. Una &lt;a href="https://github.com/camelus-hq/camelus/pull/161">cache delle note incorporate&lt;/a> evita fetch ridondanti ai relay per le note citate.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85: Scoperta dei Provider di Servizi&lt;/a>&lt;/strong>: vitorpamplona ha aggiunto indicazioni sulla scoperta da parte dei client dei provider di servizi &lt;a href="https://nostrcompass.org/it/topics/trusted-relay-assertions/">NIP-85 Trusted Assertions&lt;/a>, inclusi gli hint relay e le chiavi di servizio specifiche per algoritmo. Vedi l&amp;rsquo;&lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#nip-deep-dive-nip-85-trusted-assertions">approfondimento&lt;/a> per la copertura completa.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11: Pulizia delle Informazioni Relay&lt;/a>&lt;/strong>: fiatjaf ha rimosso &lt;code>privacy_policy&lt;/code>, l&amp;rsquo;array &lt;code>retention&lt;/code>, &lt;code>relay_countries&lt;/code> e il blocco delle preferenze comunitarie da &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>. Gli operatori relay raramente popolavano questi campi e i client non vi agivano sopra.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52: Tag di Timestamp a Granularità Giornaliera&lt;/a>&lt;/strong>: staab ha aggiunto un tag &lt;code>D&lt;/code> obbligatorio a &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> per gli eventi calendario basati sul tempo (kind 31923) che rappresenta il timestamp Unix a granularità giornaliera, calcolato come &lt;code>floor(unix_seconds / 86400)&lt;/code>. Più tag &lt;code>D&lt;/code> coprono eventi multi-giorno, abilitando un efficiente indicizzazione temporale senza dover analizzare i timestamp completi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">NIP-47: Semplificazione&lt;/a>&lt;/strong>: La PR di semplificazione &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/">discussa nel numero #9&lt;/a> è stata unita questa settimana, rimuovendo &lt;code>multi_pay_invoice&lt;/code> e &lt;code>multi_pay_keysend&lt;/code> da &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Vedi il &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#nip-deep-dive-nip-47-nostr-wallet-connect">numero #8&lt;/a> per l&amp;rsquo;approfondimento completo sul protocollo NWC.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2211">NIP-74: Podcast&lt;/a>&lt;/strong>: Coperto nel &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/">numero #8&lt;/a>, questa proposta di specifica per i podcast ha visto un acceso dibattito questa settimana. staab ha notato che esistono già almeno tre standard podcast concorrenti in circolazione, e derekross ha indicato un&amp;rsquo;implementazione esistente risalente a sei mesi fa con app e podcast attivi. Il percorso da seguire richiede una convergenza tra le implementazioni prima che possa essere assegnato un numero NIP.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a>&lt;/strong>: joelklabo propone un protocollo completo di comunicazione per agenti AI con kind di eventi per prompt, risposte, streaming, telemetria degli strumenti, errori e scoperta delle capacità. Vedi la &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-18-newsletter/#arrivano-le-proposte-di-nip-per-agenti-ai">sezione Notizie&lt;/a> per la copertura di tutte le proposte AI di questa settimana.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1893">NIP-PNS: Private Note Storage&lt;/a>&lt;/strong>: il sistema di note private di jb55 definisce eventi kind 1080 per archiviare note personali cifrate sui relay senza rivelare chi le ha scritte. Lo schema deriva una coppia di chiavi pseudonima deterministica dalla nsec dell&amp;rsquo;utente tramite HKDF: &lt;code>pns_key = hkdf_extract(ikm=device_key, salt=&amp;quot;nip-pns&amp;quot;)&lt;/code>, quindi genera una coppia di chiavi secp256k1 da quella chiave derivata. Una seconda derivazione produce una chiave di cifratura simmetrica: &lt;code>pns_nip44_key = hkdf_extract(ikm=pns_key, salt=&amp;quot;nip44-v2&amp;quot;)&lt;/code>. Le note interne sono cifrate con &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> v2 usando questa chiave e pubblicate sotto la pubkey pseudonima, così i relay vedono eventi kind 1080 da un&amp;rsquo;identità non collegata alla chiave principale dell&amp;rsquo;utente. A differenza dei gift wrap &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>, PNS non è soggetto a spam (la chiave pseudonima è deterministica, non casuale) e non porta metadata pubblici (non servono tag &lt;code>p&lt;/code> poiché non c&amp;rsquo;è destinatario). Questa settimana, jb55 ha pubblicato le conclusioni tratte dall&amp;rsquo;implementazione di PNS nel backend Rust di Notedeck (modulo &lt;code>enostr::pns&lt;/code>). Ha identificato che la chiamata &lt;code>hkdf_extract&lt;/code> della spec è ambigua perché HKDF secondo RFC 5869 ha due fasi (Extract ed Expand) che producono output diversi, e la maggior parte delle librerie si aspetta entrambe. Ha chiarito che &lt;code>pns_nip44_key&lt;/code> aggira il normale accordo di chiavi ECDH di NIP-44 e viene usata direttamente come conversation key, un dettaglio che gli implementatori devono conoscere poiché la maggior parte delle librerie NIP-44 usa ECDH di default. Ha anche segnalato una variabile non definita nell&amp;rsquo;implementazione di riferimento TypeScript. La PR, originariamente dell&amp;rsquo;aprile 2025, è ora in fase di implementazione attiva.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a>&lt;/strong>: pablof7z definisce quattro kind di eventi per l&amp;rsquo;identità degli agenti su Nostr, tratti dal suo lavoro su &lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>. Il template base è kind 4199 (Agent Definition), che contiene titolo, descrizione del ruolo, istruzioni di sistema, dichiarazioni di strumenti e versione. I modificatori comportamentali risiedono nel kind 4201 (Agent Nudge), che usa i tag &lt;code>only-tool&lt;/code>, &lt;code>allow-tool&lt;/code> e &lt;code>deny-tool&lt;/code> per il controllo delle capacità in runtime. Gli agenti pubblicano ciò che apprendono come eventi kind 4129 (Agent Lesson), categorizzati e collegati alla definizione genitore tramite tag &lt;code>e&lt;/code>, perfezionabili attraverso thread di commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a>. La verifica della proprietà usa kind 14199, un evento sostituibile in cui gli operatori umani elencano le proprie pubkey agente, stabilendo una catena bidirezionale quando abbinato al tag &lt;code>p&lt;/code> del profilo kind 0 dell&amp;rsquo;agente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server and Skill Announcements&lt;/a>&lt;/strong>: pablof7z definisce eventi per annunciare server &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> e skill individuali su Nostr. Gli annunci di server MCP portano l&amp;rsquo;URL endpoint del server e la versione di protocollo supportata insieme a un elenco di strumenti disponibili con i relativi schemi di input. I commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> sono supportati sugli annunci di server, così la community può discutere e valutare i server MCP direttamente su Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2224">NIP-73: OSM Tag Kind&lt;/a>&lt;/strong>: DestBro propone di aggiungere gli identificatori OpenStreetMap a &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73 (External Content IDs)&lt;/a>, che standardizza come gli eventi Nostr referenziano contenuti esterni come libri (ISBN), film (ISAN), feed podcast (GUID), geohash e URL tramite tag &lt;code>i&lt;/code> e &lt;code>k&lt;/code>. Il kind OSM proposto permetterebbe agli eventi di referenziare elementi cartografici specifici (edifici, strade, parchi) tramite il loro ID nodo o way OpenStreetMap, collegando i contenuti Nostr al database geografico aperto.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2219">NIP-XX: Responsive Image Variants&lt;/a>&lt;/strong>: woikos propone di estendere gli eventi di metadata file &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> con tag per varianti di immagini responsive a risoluzioni diverse. I client potrebbero selezionare la variante appropriata in base alle dimensioni del display e alle condizioni di rete, riducendo il consumo di banda per gli utenti mobile che visualizzano immagini ad alta risoluzione ospitate su server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-85-trusted-assertions">NIP Deep Dive: NIP-85 (Trusted Assertions)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> definisce un sistema per delegare calcoli costosi a provider di servizi fidati che pubblicano i risultati firmati come eventi Nostr. I punteggi Web of Trust e le metriche di engagement richiedono la scansione di molti relay e l&amp;rsquo;elaborazione di grandi volumi di eventi, un lavoro impraticabile su dispositivi mobili. Il &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">merge&lt;/a> di questa settimana ha aggiunto indicazioni sul processo di scoperta da parte dei client di questi provider.&lt;/p>
&lt;p>&lt;strong>Delega:&lt;/strong>&lt;/p>
&lt;p>Calcolare il punteggio Web of Trust di un utente richiede la scansione dei grafi di follow per diversi livelli su molti relay, e il calcolo accurato dei conteggi follower comporta la deduplicazione sull&amp;rsquo;intera rete relay. I dispositivi mobili e i client browser non possono eseguire queste operazioni, eppure i risultati sono essenziali per il filtraggio dello spam e il ranking dei contenuti. NIP-85 colma questo divario permettendo agli utenti di designare provider fidati per eseguire i calcoli e pubblicare i risultati come eventi Nostr standard.&lt;/p>
&lt;p>&lt;strong>Design del Protocollo:&lt;/strong>&lt;/p>
&lt;p>NIP-85 usa quattro kind di eventi per le asserzioni su diversi tipi di soggetti. Le asserzioni sugli utenti (kind 30382) portano il conteggio follower, i conteggi post/risposte/reazioni, gli importi zap, il rank normalizzato (0-100), i topic comuni e le ore attive:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30382&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;e88a691e98d9987c964521dff60025f60700378a4879180dcbbb4a5027850411&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;followers&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4521&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;first_created_at&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1609459200&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;post_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1283&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reply_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;647&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reactions_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8920&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;850000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;320000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;412&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;198&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_avg_amt_day_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1150&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_avg_amt_day_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;430&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reports_cnt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reports_cnt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;active_hours_start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;active_hours_end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;22&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Le asserzioni sugli eventi (kind 30383) valutano le singole note con il conteggio commenti, citazioni, repost, reazioni e dati zap:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30383&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;target event id&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;72&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;comment_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;45&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;quote_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;12&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;repost_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reaction_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;310&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;23&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amount&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;125000&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Per gli eventi indirizzabili (articoli long-form, pagine wiki), kind 30384 applica le stesse metriche di engagement su tutte le versioni collettivamente. Kind 30385 valuta gli identificatori esterni (libri, film, siti web, luoghi, hashtag) referenziati tramite &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73 (External Content IDs)&lt;/a>, che standardizza come gli eventi Nostr referenziano contenuti esterni tramite tag &lt;code>i&lt;/code> e &lt;code>k&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30385&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;isbn:9780765382030&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;isbn&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;94&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;comment_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;67&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reaction_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;203&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ogni asserzione è un evento indirizzabile sostituibile dove il tag &lt;code>d&lt;/code> contiene il soggetto: una pubkey, un ID evento, un indirizzo evento o un identificatore NIP-73. I provider di servizi firmano questi eventi con le proprie chiavi, e i client li valutano in base alle relazioni di fiducia.&lt;/p>
&lt;p>&lt;strong>Scoperta dei Provider:&lt;/strong>&lt;/p>
&lt;p>Gli utenti dichiarano quali provider di asserzioni si fidano pubblicando eventi kind 10040. Ogni voce specifica il tipo di asserzione con la pubkey del provider e l&amp;rsquo;hint relay, più varianti di algoritmo opzionali:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;user pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10040&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;3d842afe...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nostr.wine&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:zap_amt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30383:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;user signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Gli utenti possono cifrare l&amp;rsquo;elenco dei tag nel &lt;code>.content&lt;/code> usando &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> per mantenere private le proprie preferenze di provider. I client costruiscono un elenco di provider controllando quali provider si fidano i propri account seguiti, creando un livello di reputazione decentralizzato per i provider di asserzioni stessi.&lt;/p>
&lt;p>&lt;strong>Modello di Sicurezza:&lt;/strong>&lt;/p>
&lt;p>I provider devono usare chiavi di servizio diverse per algoritmi distinti, e una chiave unica per utente quando gli algoritmi sono personalizzati, impedendo la correlazione incrociata delle query tra utenti. Ogni chiave di servizio ottiene un evento di metadata kind 0 che descrive il comportamento dell&amp;rsquo;algoritmo, dando agli utenti trasparenza su ciò in cui ripongono la propria fiducia. Gli eventi di asserzione dovrebbero essere aggiornati solo quando i dati sottostanti cambiano effettivamente, prevenendo traffico relay non necessario e permettendo ai client di memorizzare nella cache i risultati con fiducia.&lt;/p>
&lt;p>&lt;strong>Adozione Attuale:&lt;/strong>&lt;/p>
&lt;p>NIP-85 formalizza un pattern già emerso informalmente. Il server cache di Primal calcola le metriche di engagement e i punteggi Web of Trust. &lt;a href="https://gitlab.com/soapbox-pub/antiprimal">Antiprimal&lt;/a>, coperto nel &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#antiprimal-gateway-conforme-per-il-cache-di-primal">numero #9&lt;/a>, collega questi calcoli ai client Nostr standard usando i kind di eventi NIP-85. &lt;a href="https://nostr.band">Nostr.band&lt;/a> gestisce il relay &lt;code>wss://nip85.nostr.band&lt;/code> referenziato negli esempi della spec stessa, servendo eventi di asserzione per i dati del proprio indice di ricerca. Sul lato client, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> (scritto da vitorpamplona, anche autore di questo NIP) ha un supporto sperimentale alle Trusted Assertions nella propria libreria &lt;code>quartz&lt;/code>, che analizza gli eventi di asserzione e le dichiarazioni dei provider di servizi. &lt;a href="https://vertexlab.io">Vertex&lt;/a> calcola metriche Web of Trust simili ma ha &lt;a href="https://vertexlab.io/blog/dvms_vs_nip_85/">scelto un approccio diverso&lt;/a>, usando una API diretta invece degli eventi NIP-85, citando il problema della scoperta e l&amp;rsquo;overhead computazionale delle architetture basate su asserzioni. Con NIP-85, qualsiasi client può consumare asserzioni da qualsiasi provider attraverso un formato di evento standard, e i provider competono sull&amp;rsquo;accuratezza mentre gli utenti scelgono di chi fidarsi.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-52-calendar-events">NIP Deep Dive: NIP-52 (Calendar Events)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/52.md">NIP-52&lt;/a> definisce gli eventi calendario su Nostr, dando ai client un modo standard per rappresentare e scoprire occorrenze in momenti specifici o tra momenti. Il &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">merge del tag D&lt;/a> di questa settimana ha aggiunto l&amp;rsquo;indicizzazione a granularità giornaliera, completando un elemento mancante nell&amp;rsquo;infrastruttura di query della spec.&lt;/p>
&lt;p>&lt;strong>Due Tipi di Evento:&lt;/strong>&lt;/p>
&lt;p>NIP-52 separa gli eventi calendario in due kind in base alla precisione temporale. Gli eventi basati sulla data (kind 31922) rappresentano occorrenze che durano un&amp;rsquo;intera giornata come festività o festival multi-giorno. Usano stringhe di data ISO 8601 nei tag &lt;code>start&lt;/code> e &lt;code>end&lt;/code> opzionale, senza considerazioni sul fuso orario:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1735689600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31922&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Annual celebration of Bitcoin&amp;#39;s genesis block&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin-independence-day-2026&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Bitcoin Independence Day&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2026-01-03&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2026-01-04&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;location&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Worldwide&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;g&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;u4pruydqqv&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;host&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://bitcoinindependenceday.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Gli eventi basati sul tempo (kind 31923) rappresentano momenti specifici con timestamp Unix nei tag &lt;code>start&lt;/code> e &lt;code>end&lt;/code> opzionale, più identificatori di fuso orario IANA (&lt;code>start_tzid&lt;/code>, &lt;code>end_tzid&lt;/code>) per la visualizzazione. Entrambi i kind sono eventi parametrizzati sostituibili, così gli organizzatori aggiornano i dettagli pubblicando un nuovo evento con lo stesso tag &lt;code>d&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Calendari e RSVP:&lt;/strong>&lt;/p>
&lt;p>Gli eventi kind 31924 definiscono i calendari come collezioni, referenziando gli eventi tramite tag &lt;code>a&lt;/code> che puntano agli eventi kind 31922 o 31923 tramite le loro coordinate di indirizzo:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;calendar owner pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31924&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Nostr community events worldwide&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-community-calendar&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Community Events&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31923:&amp;lt;organizer-pubkey&amp;gt;:nostr-meetup-2026&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31922:&amp;lt;organizer-pubkey&amp;gt;:bitcoin-independence-day-2026&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;calendar owner signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Gli utenti possono mantenere più calendari (personale, lavoro, comunitario) e i client possono iscriversi ai calendari di pubkey specifiche. Gli eventi calendario possono includere un tag &lt;code>a&lt;/code> che referenzia un calendario per richiedere l&amp;rsquo;inclusione, abilitando la gestione collaborativa dei calendari dove più utenti contribuiscono eventi a calendari che non possiedono.&lt;/p>
&lt;p>Gli RSVP usano kind 31925, dove gli utenti pubblicano il proprio stato di partecipazione insieme a un indicatore opzionale libero/occupato:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;attendee pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31925&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Looking forward to it&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31923:&amp;lt;organizer-pubkey&amp;gt;:nostr-meetup-2026&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;kind 31923 event id&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;unique-rsvp-id&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;status&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;accepted&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;fb&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;busy&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;attendee signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I valori &lt;code>status&lt;/code> validi sono &amp;ldquo;accepted&amp;rdquo;, &amp;ldquo;declined&amp;rdquo;, &amp;ldquo;tentative&amp;rdquo;, e il tag opzionale &lt;code>fb&lt;/code> marca l&amp;rsquo;utente come libero o occupato per quel periodo. Gli eventi RSVP referenziano il tag &lt;code>a&lt;/code> dell&amp;rsquo;evento calendario e portano il tag &lt;code>p&lt;/code> dell&amp;rsquo;organizzatore, così il client dell&amp;rsquo;organizzatore può aggregare le risposte dai relay.&lt;/p>
&lt;p>&lt;strong>L&amp;rsquo;Aggiunta del Tag D:&lt;/strong>&lt;/p>
&lt;p>Prima del merge di questa settimana, i client che interrogavano gli eventi in un intervallo di date dovevano recuperare tutti gli eventi da una pubkey o un calendario e filtrare lato client. Il nuovo tag &lt;code>D&lt;/code> obbligatorio sugli eventi basati sul tempo (kind 31923) contiene un timestamp Unix a granularità giornaliera calcolato come &lt;code>floor(unix_seconds / 86400)&lt;/code>. Gli eventi multi-giorno portano più tag &lt;code>D&lt;/code>, uno per giorno. I relay possono ora indicizzare gli eventi per giorno e rispondere a query filtrate in modo efficiente, trasformando quello che era un problema di filtraggio lato client in una ricerca nell&amp;rsquo;indice lato relay.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31923&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Monthly meetup for Nostr developers in Austin&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-meetup-2026&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Developer Meetup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Talks and demos from local Nostr builders&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://example.com/meetup-banner.jpg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1740067200&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1740078000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start_tzid&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;America/New_York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end_tzid&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;America/New_York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;D&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;20139&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;location&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Bitcoin Commons, Austin TX&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;g&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9v6knb2pg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;host&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;speaker-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;speaker&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;meetup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://bitcoincommons.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il valore &lt;code>D&lt;/code> &lt;code>20139&lt;/code> equivale a &lt;code>floor(1740067200 / 86400)&lt;/code>, collocando questo evento il 20 febbraio 2025. I client che interrogano &amp;ldquo;tutti gli eventi di questa settimana&amp;rdquo; inviano un filtro con il corrispondente intervallo &lt;code>D&lt;/code>, e i relay restituiscono solo gli eventi corrispondenti.&lt;/p>
&lt;p>&lt;strong>Scelte di Design:&lt;/strong>&lt;/p>
&lt;p>NIP-52 omette intenzionalmente gli eventi ricorrenti. La spec esclude completamente le regole di ricorrenza (RRULE da iCalendar), delegando quella complessità ai client. Un organizzatore pubblica eventi individuali per ogni occorrenza, mantenendo semplice il modello dati lato relay. I tag partecipante portano ruoli opzionali (&amp;ldquo;host&amp;rdquo;, &amp;ldquo;speaker&amp;rdquo;, &amp;ldquo;attendee&amp;rdquo;), e i tag di localizzazione possono includere tag geohash &lt;code>g&lt;/code> per query spaziali insieme agli indirizzi leggibili.&lt;/p>
&lt;p>&lt;strong>Implementazioni:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/zmeyer44/flockstr">Flockstr&lt;/a> è il principale client calendario costruito su NIP-52. &lt;a href="https://gitea.coracle.social/coracle/coracle">Coracle&lt;/a> visualizza gli eventi calendario nel proprio feed sociale. L&amp;rsquo;aggiunta del tag &lt;code>D&lt;/code> di questa settimana abilita l&amp;rsquo;indicizzazione temporale lato relay che entrambi i client possono usare per ridurre la banda quando si interrogano eventi in un intervallo di date specifico.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa o hai notizie da condividere? Vuoi che copriamo il tuo progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #9</title><link>https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Mostro rilascia la sua prima beta pubblica dopo tre anni di sviluppo, portando il trading P2P di Bitcoin su mobile via Nostr. OpenSats assegna la sedicesima ondata di grant Bitcoin, con Minibits Wallet che riceve un rinnovo per il suo wallet Cashu integrato con Nostr. &lt;strong>Zapstore raggiunge la release stabile 1.0&lt;/strong>, segnando la maturazione dell&amp;rsquo;app store Android decentralizzato. Coracle 0.6.29 aggiunge topics e commenti sugli highlight. Igloo Desktop v1.0.3 introduce un importante hardening di sicurezza per la firma a soglia Frostr. Amber v4.1.2-pre1 migra all&amp;rsquo;architettura Flow. Angor raggiunge v0.2.5 con una UI di finanziamento rinnovata e configurazione server di immagini NIP-96. NostrPress viene lanciato come strumento che converte profili Nostr in blog statici. Antiprimal rilascia un gateway conforme agli standard che collega il cache server proprietario di Primal ai NIP standard di Nostr. Primal Android unisce 18 PR espandendo l&amp;rsquo;infrastruttura NWC con supporto doppio wallet, audit logging e il metodo &lt;code>lookup_invoice&lt;/code>. diVine rilascia feed video API-first. L&amp;rsquo;SDK TypeScript di Marmot separa la sua app chat di riferimento in un repository autonomo e inizia la migrazione a ts-mls v2. Il repository NIPs unisce il conteggio approssimativo HyperLogLog per NIP-45 ed estrae i tag identità da kind 0. Un&amp;rsquo;ondata di proposte di vitorpamplona inizia a snellire sistematicamente i metadata kind 0. Nuove proposte di protocollo includono Nostr Relay Connect per il NAT traversal e Nostr Web Tokens per claim web firmati. Due approfondimenti chiudono il numero: il conteggio approssimativo HyperLogLog di NIP-45 per metriche eventi cross-relay, e il protocollo di file storage HTTP NIP-96, ora deprecato a favore di Blossom, mentre i progetti gestiscono la transizione tra i due standard media.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Mostro rilascia la sua prima beta pubblica dopo tre anni di sviluppo, portando il trading P2P di Bitcoin su mobile via Nostr. OpenSats assegna la sedicesima ondata di grant Bitcoin, con Minibits Wallet che riceve un rinnovo per il suo wallet Cashu integrato con Nostr. &lt;strong>Zapstore raggiunge la release stabile 1.0&lt;/strong>, segnando la maturazione dell&amp;rsquo;app store Android decentralizzato. Coracle 0.6.29 aggiunge topics e commenti sugli highlight. Igloo Desktop v1.0.3 introduce un importante hardening di sicurezza per la firma a soglia Frostr. Amber v4.1.2-pre1 migra all&amp;rsquo;architettura Flow. Angor raggiunge v0.2.5 con una UI di finanziamento rinnovata e configurazione server di immagini NIP-96. NostrPress viene lanciato come strumento che converte profili Nostr in blog statici. Antiprimal rilascia un gateway conforme agli standard che collega il cache server proprietario di Primal ai NIP standard di Nostr. Primal Android unisce 18 PR espandendo l&amp;rsquo;infrastruttura NWC con supporto doppio wallet, audit logging e il metodo &lt;code>lookup_invoice&lt;/code>. diVine rilascia feed video API-first. L&amp;rsquo;SDK TypeScript di Marmot separa la sua app chat di riferimento in un repository autonomo e inizia la migrazione a ts-mls v2. Il repository NIPs unisce il conteggio approssimativo HyperLogLog per NIP-45 ed estrae i tag identità da kind 0. Un&amp;rsquo;ondata di proposte di vitorpamplona inizia a snellire sistematicamente i metadata kind 0. Nuove proposte di protocollo includono Nostr Relay Connect per il NAT traversal e Nostr Web Tokens per claim web firmati. Due approfondimenti chiudono il numero: il conteggio approssimativo HyperLogLog di NIP-45 per metriche eventi cross-relay, e il protocollo di file storage HTTP NIP-96, ora deprecato a favore di Blossom, mentre i progetti gestiscono la transizione tra i due standard media.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="mostro-rilascia-la-prima-beta-pubblica">Mostro Rilascia la Prima Beta Pubblica&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, l&amp;rsquo;exchange Bitcoin peer-to-peer costruito su Nostr, ha rilasciato la sua &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">app mobile v1.1.0&lt;/a>, la prima beta pubblica del progetto dopo tre anni di sviluppo. L&amp;rsquo;app permette di scambiare Bitcoin direttamente usando Nostr per la coordinazione degli ordini, con Lightning per il settlement e nessun intermediario custodial.&lt;/p>
&lt;p>Il rilascio introduce notifiche push con migliore affidabilità in background su Android, un sistema di logging opzionale che permette di catturare e condividere dati diagnostici quando si presentano problemi, aggiornamenti relay più fluidi con inizializzazione additiva, e raffinamenti UI di Fase 2 con supporto internazionalizzazione. L&amp;rsquo;app è disponibile su &lt;a href="https://zapstore.dev">Zapstore&lt;/a> e come &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">download diretto da GitHub&lt;/a>.&lt;/p>
&lt;p>Mostro si unisce a Shopstr e Plebeian Market come applicazione commerciale nativa Nostr, con la distinzione di concentrarsi sulla coordinazione dello scambio fiat-Bitcoin. Il &lt;a href="https://github.com/MostroP2P/mostro">daemon Mostro&lt;/a> sottostante gestisce il matching degli ordini e la risoluzione delle dispute attraverso relay Nostr.&lt;/p>
&lt;h3 id="sedicesima-ondata-di-grant-bitcoin-di-opensats">Sedicesima Ondata di Grant Bitcoin di OpenSats&lt;/h3>
&lt;p>&lt;a href="https://opensats.org/blog/sixteenth-wave-of-bitcoin-grants">OpenSats&lt;/a> ha annunciato grant a 17 progetti open-source. Il punto saliente per Nostr: &lt;a href="https://github.com/minibits-cash/minibits_wallet">Minibits Wallet&lt;/a>, il wallet Android &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> con supporto eventi wallet &lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> e integrazione nutzap, ha ricevuto un grant di rinnovo. Minibits usa eventi Nostr per memorizzare lo stato dei token ecash, rendendo i backup del wallet portabili tra dispositivi tramite sincronizzazione relay.&lt;/p>
&lt;h3 id="nostrpress-dal-profilo-nostr-al-blog-statico">NostrPress: Dal Profilo Nostr al Blog Statico&lt;/h3>
&lt;p>&lt;a href="https://github.com/besoeasy/NostrPress">NostrPress&lt;/a> (&lt;a href="https://blog.besoeasy.com">blog.besoeasy.com&lt;/a>) è un nuovo strumento che converte un profilo Nostr in un blog completamente statico deployabile ovunque. Chi pubblica articoli su Nostr tramite qualsiasi client può generare con NostrPress un sito web autonomo da quegli eventi, completo di hosting media locale e feed RSS.&lt;/p>
&lt;p>Costruito con templating Nunjucks e JavaScript, NostrPress produce siti privi di lock-in di piattaforma. L&amp;rsquo;output generato è semplice HTML/CSS ospitabile su qualsiasi server di file statici, GitHub Pages, Netlify o un VPS personale. Lo strumento si unisce a &lt;a href="https://github.com/nostrband/nostrsite">Npub.pro&lt;/a> e &lt;a href="https://github.com/servus-social/servus">Servus&lt;/a> come opzione per trasformare contenuti Nostr in siti web tradizionali.&lt;/p>
&lt;h3 id="antiprimal-gateway-conforme-per-il-cache-di-primal">Antiprimal: Gateway Conforme per il Cache di Primal&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/antiprimal">antiprimal&lt;/a> (&lt;a href="https://antiprimal.net">antiprimal.net&lt;/a>), un nuovo progetto di Alex Gleason e del team Soapbox, è un gateway WebSocket che collega il cache server proprietario di Primal ai messaggi standard del protocollo Nostr. Primal offre funzionalità come statistiche eventi, ricerca contenuti e calcoli Web of Trust tramite &lt;code>wss://cache.primal.net/v1&lt;/code>, ma accedervi richiede un formato messaggi proprietario con un campo &lt;code>cache&lt;/code> non standard che i client Nostr ordinari non possono usare. Antiprimal traduce le richieste NIP standard nel formato di Primal e converte le risposte indietro.&lt;/p>
&lt;p>Il gateway supporta query COUNT &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (reazioni, risposte, repost, conteggi zap, conteggi follower), ricerca &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>, informazioni relay &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> e &lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> Trusted Assertions per i dati Web of Trust precalcolati di Primal. Un bot companion pubblica eventi NIP-85 kind 30382 (statistiche utente) e kind 30383 (engagement eventi) su relay configurabili. Il progetto è costruito con TypeScript su Bun e usa la libreria Nostrify. Creato il 6 febbraio, ha 53 commit nei suoi primi tre giorni di sviluppo ed è live su antiprimal.net.&lt;/p>
&lt;h3 id="ikaros-gateway-di-messaggistica-per-agenti-ai-su-signal-e-nostr">Ikaros: Gateway di Messaggistica per Agenti AI su Signal e Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ikaros">Ikaros&lt;/a>, un nuovo progetto del team Soapbox, è un gateway di messaggistica che permette ad agenti AI di comunicare attraverso DM crittografati sia su Signal che su Nostr. Il bridge usa l&amp;rsquo;&lt;a href="https://agentclientprotocol.org">Agent Client Protocol&lt;/a> (ACP) per connettere qualsiasi assistente AI di coding compatibile ACP a reti di messaggistica reali. Tre pull request costituiscono la build iniziale del progetto.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/1">PR #1&lt;/a> implementa un adattatore completo per DM crittografati &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> con supporto invio/ricezione, buffering delle risposte con flush esplicito al completamento, formati chiave privata &lt;code>nsec&lt;/code> e hex, pubblicazione multi-relay con riconnessione automatica e un wizard di setup interattivo. L&amp;rsquo;adattatore usa nostr-tools v2.23.0 e aggiorna l&amp;rsquo;ACP SDK a v0.14.1.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/2">PR #2&lt;/a> corregge un drop silenzioso di messaggi causato da una race condition nell&amp;rsquo;aggiornamento della sessione: le notifiche in arrivo prima che la sessione fosse registrata nella mappa venivano perse, e il fix mette in buffer quelle notifiche per il replay al completamento della registrazione. La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/3">PR #3&lt;/a> aggiunge metadati di nome utente/UUID e gruppo Signal alle interazioni con l&amp;rsquo;agente, così l&amp;rsquo;agente AI sa con chi sta parlando e in quale gruppo. Il progetto apre un nuovo spazio di design: agenti AI raggiungibili via DM Nostr che possono anche essere contattati da Signal, o viceversa.&lt;/p>
&lt;h3 id="campagna-di-snellimento-kind-0">Campagna di Snellimento Kind 0&lt;/h3>
&lt;p>vitorpamplona ha aperto una serie di PR proponendo l&amp;rsquo;estrazione sistematica di dati dagli eventi kind 0 (metadata utente) in kind di eventi dedicati. La campagna affronta un problema crescente: col passare del tempo kind 0 ha accumulato campi che la maggior parte dei client non usa, gonfiando la dimensione di ogni fetch di profilo.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2216">PR #2216&lt;/a> (unita) sposta i tag identità (tag &lt;code>i&lt;/code>) da kind 0 a un nuovo kind 10011, dato che l&amp;rsquo;adozione di questi tag è stata minima. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2213">PR #2213&lt;/a> propone di spostare la verifica &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05&lt;/a> a kind 10008, il che permetterebbe di avere più identificatori NIP-05 per utente e di filtrare eventi per indirizzo NIP-05. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2217">PR #2217&lt;/a> propone di estrarre i campi Lightning (lud06/lud16) in un nuovo kind, evitando che tutti i profili kind 0 portino campi relativi allo zap che interessano solo ai client con integrazione Lightning.&lt;/p>
&lt;p>Le proposte hanno riacceso la discussione sulla questione più ampia della struttura di kind 0, inclusa la &lt;a href="https://github.com/nostr-protocol/nips/pull/1770">PR #1770&lt;/a>, la proposta di lunga data per sostituire il JSON stringificato nel contenuto kind 0 con tag strutturati.&lt;/p>
&lt;h3 id="il-supporto-relay-nip-70-è-critico-per-la-sicurezza-della-messaggistica-crittografata">Il Supporto Relay NIP-70 è Critico per la Sicurezza della Messaggistica Crittografata&lt;/h3>
&lt;p>L&amp;rsquo;implementazione White Noise del protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> ha &lt;a href="https://blog.jgmontoya.com/2026/02/10/nip70-relay-status.html">identificato una lacuna critica&lt;/a> nel supporto relay per &lt;a href="https://github.com/nostr-protocol/nips/blob/master/70.md">NIP-70&lt;/a> (Protected Events) e &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a> (Authentication). I test hanno rivelato che i principali relay pubblici inclusi Damus, Primal e nos.lol rifiutano i protected event con errori &lt;code>blocked: event marked as protected&lt;/code> invece di avviare la challenge di autenticazione richiesta.&lt;/p>
&lt;p>Questa lacuna rompe la funzionalità di sicurezza chiave: NIP-70 abilita la cancellazione sicura dei KeyPackages MLS spesi, prevenendo attacchi &amp;ldquo;harvest now, decrypt later&amp;rdquo;. In assenza di supporto relay, i protocolli di messaggistica crittografata non possono proteggere dal futuro compromesso delle chiavi. White Noise ha disabilitato NIP-70 di default in risposta, mantenendo un flag opzionale per chi usa relay compatibili.&lt;/p>
&lt;p>&lt;strong>Invito all&amp;rsquo;azione per operatori relay:&lt;/strong> Implementate il flusso di autenticazione NIP-42 completo. Quando ricevete protected event, effettuate la challenge ai client per dimostrare la proprietà, poi accettate le scritture validate. Rifiutare protected event in assenza di autenticazione rompe le garanzie di sicurezza del protocollo da cui dipendono le applicazioni di messaggistica crittografata.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="coracle-0629">Coracle 0.6.29&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a> (&lt;a href="https://coracle.social">coracle.social&lt;/a>), il client web di hodlbod, ha rilasciato &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.29">0.6.29&lt;/a>. Il rilascio aggiunge la visualizzazione di topics e commenti sugli highlight kind 9802. Un nuovo elemento di navigazione liste fornisce accesso rapido alle liste curate dall&amp;rsquo;utente dalla UI principale. Sotto il cofano, Coracle è stato aggiornato a una nuova versione di Welshman, la libreria Nostr condivisa che alimenta la gestione relay e la gestione eventi di Coracle. La lista relay di default è stata aggiornata, e il tracking errori Glitchtip è stato rimosso dal codebase.&lt;/p>
&lt;h3 id="igloo-desktop-v103">Igloo Desktop v1.0.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo Desktop&lt;/a>, l&amp;rsquo;applicazione di firma a soglia &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> e gestione chiavi, ha rilasciato &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/releases/tag/v1.0.3">v1.0.3&lt;/a> con esteso hardening di sicurezza. Il rilascio introduce validazione IPC, isolamento Electron e controlli relay consapevoli di SSRF per la difesa contro server-side request forgery. Un nuovo flusso di onboarding e importazione share semplifica la distribuzione delle chiavi, la pianificazione relay ora include normalizzazione e merging prioritario, e l&amp;rsquo;architettura API Electron basata su preload migliora il confine di sicurezza tra renderer e processo principale. Un sistema keep-alive per il signer mantiene la stabilità delle sessioni di firma a soglia, e i miglioramenti UX di recovery riducono l&amp;rsquo;attrito del ripristino delle chiavi.&lt;/p>
&lt;h3 id="amber-v412-pre1">Amber v4.1.2-pre1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, il signer di eventi Android, ha rilasciato &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.2-pre1">v4.1.2-pre1&lt;/a> correggendo la visualizzazione mancante del punteggio di fiducia relay introdotta in v4.1.1, risolvendo problemi di parsing JSON per richieste encrypt/decrypt non-Nostr, e migrando il modello account da LiveData a Flow per una gestione dello stato più prevedibile. Il rilascio passa i segreti bunker a UUID completi e aggiorna a Gradle plugin 9.&lt;/p>
&lt;h3 id="mostro-mobile-v110-e-daemon-v0161">Mostro Mobile v1.1.0 e Daemon v0.16.1&lt;/h3>
&lt;p>Vedi la &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#mostro-rilascia-la-prima-beta-pubblica">sezione Notizie sopra&lt;/a> per la copertura completa del rilascio mobile. Sul lato server, il &lt;a href="https://github.com/MostroP2P/mostro">daemon Mostro&lt;/a> ha rilasciato &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.1">v0.16.1&lt;/a>, aggiungendo la pubblicazione automatica dei metadata NIP-01 kind 0 all&amp;rsquo;avvio (&lt;a href="https://github.com/MostroP2P/mostro/pull/575">PR #575&lt;/a>), così il daemon annuncia la propria identità alla rete quando va online. Il rilascio corregge anche la documentazione del calcolo delle dev fee (&lt;a href="https://github.com/MostroP2P/mostro/pull/571">PR #571&lt;/a>).&lt;/p>
&lt;h3 id="angor-v025">Angor v0.2.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor">Angor&lt;/a> (&lt;a href="https://angor.io">angor.io&lt;/a>), il protocollo di finanziamento P2P decentralizzato costruito su Bitcoin e Nostr, ha rilasciato &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.5">v0.2.5&lt;/a> con tre PR unite. La &lt;a href="https://github.com/block-core/angor/pull/649">PR #649&lt;/a> riprogetta la sezione gestione Fondi (V2), sostituendo il layout precedente con un&amp;rsquo;interfaccia nuova per il tracking di singoli UTXO e posizioni di investimento. La &lt;a href="https://github.com/block-core/angor/pull/651">PR #651&lt;/a> rinnova la InvoiceView con stili pulsanti aggiornati, dialog chiudibili, un nuovo comando &amp;ldquo;Copia Indirizzo&amp;rdquo;, supporto cancellazione per il monitoraggio indirizzi, e gestione migliorata del flusso investimenti. La &lt;a href="https://github.com/block-core/angor/pull/652">PR #652&lt;/a> aggiunge server immagini &lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">spec&lt;/a>) configurabili nelle impostazioni, permettendo di scegliere quale endpoint di upload media gestisce le immagini e la documentazione dei progetti. La &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.4">v0.2.4&lt;/a> era stata rilasciata la settimana precedente.&lt;/p>
&lt;h3 id="ridestr-v022-e-v023">Ridestr v0.2.2 e v0.2.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>, la piattaforma di rideshare decentralizzata &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#ridestr-v020-roadflare-release">coperta la settimana scorsa&lt;/a>, ha continuato l&amp;rsquo;iterazione rapida con &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.2">v0.2.2&lt;/a> (Bridge Payment Hotfix) e &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.3">v0.2.3&lt;/a> dopo la v0.2.0 &amp;ldquo;RoadFlare Release&amp;rdquo;. L&amp;rsquo;hotfix v0.2.2 affronta un bug dove i pagamenti bridge &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> cross-mint cancellavano automaticamente le corse mentre il pagamento era ancora in elaborazione o sarebbe eventualmente riuscito, prevenendo la cancellazione prematura delle corse su settlement più lenti. Il rilascio corregge anche lo sfarfallio della UI e le hitbox touch rotte sul pulsante &amp;ldquo;la mia posizione&amp;rdquo;. La v0.2.3 include ulteriori bug fix. Entrambi i rilasci includono APK separati per Ridestr (app passeggero) e Drivestr (app autista).&lt;/p>
&lt;h3 id="nostr-php-194">Nostr PHP 1.9.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrver-se/nostr-php">Nostr PHP&lt;/a> (&lt;a href="https://nostr-php.dev">nostr-php.dev&lt;/a>), la libreria helper PHP per il protocollo Nostr, ha rilasciato &lt;a href="https://github.com/nostrver-se/nostr-php/releases/tag/1.9.4">1.9.4&lt;/a> aggiungendo una proprietà &lt;code>timeout&lt;/code> configurabile alla classe request (&lt;a href="https://github.com/nostrver-se/nostr-php/pull/106">PR #106&lt;/a>). La novità permette di impostare durate di timeout personalizzate per le connessioni relay e le richieste messaggi, prevenendo blocchi indefiniti quando un relay non risponde o è lento a rispondere.&lt;/p>
&lt;h3 id="zapstore-v100">Zapstore v1.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.0.0">Zapstore&lt;/a> (&lt;a href="https://zapstore.dev">zapstore.dev&lt;/a>), l&amp;rsquo;app store Android permissionless costruito su Nostr, &lt;strong>ha raggiunto la milestone della release stabile 1.0&lt;/strong> dopo mesi di release candidate.&lt;/p>
&lt;p>Il rilascio 1.0 include miglioramenti di stabilità critici: gestione dello stato del pulsante install che assicura che Delete appaia immediatamente dopo il completamento dell&amp;rsquo;installazione, messaggi di errore user-friendly con dettagli tecnici espandibili, e un pulsante &amp;ldquo;Segnala problema&amp;rdquo; che invia DM crittografati via Nostr usando chiavi effimere. Tra le novità anche un nuovo schermo aggiornamenti con polling e tracking batch, un migliore watchdog per i download bloccati, limiti di download concorrenti dinamici basati sulle prestazioni del dispositivo, sincronizzazione più frequente dei pacchetti installati e logica di confronto versioni migliorata. Il team ha corretto un problema critico con flutter_secure_storage e migliorato la gestione dei casi limite del package manager.&lt;/p>
&lt;p>La milestone rappresenta la maturazione della prima piattaforma dedicata di distribuzione app di Nostr, permettendo agli sviluppatori di pubblicare applicazioni Android direttamente verso i propri utenti, aggirando il gatekeeping degli app store centralizzati.&lt;/p>
&lt;h3 id="zsp-v031">ZSP v0.3.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapstore/zsp">ZSP&lt;/a>, lo strumento CLI Go del team &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> che sostituisce il tooling di pubblicazione precedente di Zapstore per la firma e l&amp;rsquo;upload di app Android su relay Nostr, ha rilasciato &lt;a href="https://github.com/zapstore/zsp/releases/tag/v0.3.1">v0.3.1&lt;/a>. ZSP gestisce l&amp;rsquo;acquisizione APK da GitHub, GitLab, Codeberg, F-Droid o file locali, poi analizza i metadata, firma eventi Nostr (tramite chiave privata, bunker &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> o estensione browser &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>), e carica i manufatti su server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a>. Tra le novità: modalità offline completa per il linking del keystore anche in assenza di rete, header &lt;code>Content-Digest&lt;/code> sugli upload Blossom per la conformità al protocollo, rilevamento corretto degli APK arm64-v8a dai repository F-Droid, fix dei parametri query trailing di GitLab e supporto completo file &lt;code>.env&lt;/code> per la configurazione.&lt;/p>
&lt;h3 id="damus-ios-117">Damus iOS 1.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, il client Nostr per iOS, è passato alla versione 1.17 (&lt;a href="https://github.com/damus-io/damus/pull/3606">PR #3606&lt;/a>). Il rilascio corregge un problema RelayPool dove le connessioni si chiudevano dopo il rilascio del lease effimero (&lt;a href="https://github.com/damus-io/damus/pull/3605">PR #3605&lt;/a>), che poteva causare il drop inatteso delle sottoscrizioni. Risolve anche un bug dove la timeline dei preferiti non mostrava eventi nel passaggio tra tab (&lt;a href="https://github.com/damus-io/damus/pull/3603">PR #3603&lt;/a>).&lt;/p>
&lt;h3 id="nak-v0183">nak v0.18.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, il Nostr army knife CLI, ha rilasciato &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a> con tre fix di stabilità: prevenzione di un panic quando i tag AUTH challenge sono nil o troppo corti, controllo degli errori del dateparser prima di usare il valore analizzato, e gestione degli URL mint Cashu che mancano del separatore &lt;code>://&lt;/code>.&lt;/p>
&lt;h3 id="mi-relay-locale-basato-su-browser">Mi: Relay Locale Basato su Browser&lt;/h3>
&lt;p>&lt;a href="https://git.shakespeare.diy/npub1scvyzz02ayma34hesz62pdrd5nhsmxp74hjq8msmfs9khh3r3drsnw68d8/mi.git">Mi&lt;/a> (&lt;a href="https://mi.shakespeare.wtf">mi.shakespeare.wtf&lt;/a>), la nuova MiniApp &lt;a href="https://shakespeare.wtf">Shakespeare&lt;/a>, è un relay locale basato su browser che archivia in IndexedDB gli eventi Nostr dell&amp;rsquo;utente. Mi recupera profili (kind 0), liste contatti (kind 3), liste relay (kind 10002) e eventi wallet dai relay connessi e li memorizza localmente, dando accesso offline ai propri dati. Costruito con React e nostr-tools 2.15.0.&lt;/p>
&lt;h3 id="agora-v102">Agora v1.0.2&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora">Agora&lt;/a> (&lt;a href="https://agora.spot">agora.spot&lt;/a>), piattaforma decentralizzata di attivismo e raccolta fondi del team Soapbox, ha rilasciato &lt;a href="https://gitlab.com/soapbox-pub/agora/-/releases/v1.0.2">v1.0.2&lt;/a> con un APK Android disponibile per installazione diretta. Si tratta della prima menzione di Agora su Compass; la piattaforma è stata lanciata il 17 gennaio con la dichiarazione di missione: &amp;ldquo;Unisciti al movimento globale per la libertà. Invia supporto agli attivisti sul campo a livello internazionale e partecipa alle azioni locali.&amp;rdquo;&lt;/p>
&lt;p>La piattaforma si centra su una mappa mondiale dove chi la usa naviga per paese, crea &amp;ldquo;azioni&amp;rdquo; geolocalizzate (proteste, campagne, organizzazione comunitaria) e le discute tramite commenti threaded. Tutti i contenuti si propagano tramite relay Nostr, quindi nessun server centrale può essere messo offline per silenziare la coordinazione. Agora supporta più lingue con parità di traduzione imposta da CI, integra server media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> per gli upload, e include ricerca, navigazione hashtag con toggle globale/regionale, profili utente e sistemi di reazione. Il rilascio v1.0.2 è la build Android corrente, disponibile come download APK diretto.&lt;/p>
&lt;h3 id="xonos-v016">xonos v0.1.6&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/xonos/xonos">xonos&lt;/a>, il client Nostr 3D sperimentale costruito con il motore di gioco Bevy, ha rilasciato &lt;a href="https://codeberg.org/xonos/xonos/releases/tag/v0.1.6">v0.1.6&lt;/a>. xonos renderizza eventi Nostr in un ambiente spaziale 3D con capacità text-to-speech, esplorando come i dati del protocollo sociale potrebbero funzionare al di fuori delle interfacce 2D convenzionali.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="primal-android-espande-linfrastruttura-nwc">Primal Android Espande l&amp;rsquo;Infrastruttura NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha unito 18 PR in settimana, continuando il lavoro NWC &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#primal-android-rilascia-crittografia-nwc">iniziato la settimana scorsa&lt;/a>. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/883">PR #883&lt;/a> aggiunge supporto per connessioni NWC attraverso entrambi i wallet (Spark ed esterno), e la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/879">PR #879&lt;/a> implementa il metodo NWC &lt;code>lookup_invoice&lt;/code> per controllare lo stato dei pagamenti.&lt;/p>
&lt;p>La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/880">PR #880&lt;/a> aggiunge audit logging request-response NWC per il debugging delle interazioni wallet. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/877">PR #877&lt;/a> introduce il supporto multi-account a &lt;code>PrimalNwcService&lt;/code>, permettendo a chi ha più profili di mantenere connessioni wallet separate. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/882">PR #882&lt;/a> implementa la pulizia periodica dei budget hold scaduti, prevenendo che prenotazioni di pagamento stale blocchino le operazioni wallet.&lt;/p>
&lt;p>Il lavoro UI include ridisegno della schermata upgrade wallet (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/889">PR #889&lt;/a>), FAQ sull&amp;rsquo;upgrade wallet (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/885">PR #885&lt;/a>), impostazione indirizzo Lightning durante l&amp;rsquo;onboarding (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/888">PR #888&lt;/a>) e un fix per le transazioni zap che apparivano come pagamenti regolari per i tipi non-Lightning (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/887">PR #887&lt;/a>).&lt;/p>
&lt;h3 id="divine-rilascia-feed-video-api-first">diVine Rilascia Feed Video API-First&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client video short-form, ha unito 19 PR in settimana, spostandosi verso l&amp;rsquo;architettura API-first. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1468">PR #1468&lt;/a> introduce feed video API-first, e la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1466">PR #1466&lt;/a> aggiunge endpoint API trending, recent e home. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1433">PR #1433&lt;/a> indicizza controller video specifici per un rendering efficiente dei feed.&lt;/p>
&lt;p>La gestione profili è migliorata con la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1440">PR #1440&lt;/a> che implementa un pattern cache-plus-fresh per la visualizzazione di altri profili, riducendo i tempi di caricamento garantendo al contempo la freschezza dei dati. Il team ha anche rilasciato fix per le notifiche (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1437">PR #1437&lt;/a>), refactoring del flusso commenti (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1431">PR #1431&lt;/a>) e tab swiping sulla schermata Notifiche (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1388">PR #1388&lt;/a>).&lt;/p>
&lt;h3 id="white-noise-unificazione-keyring-e-ricerca-utenti">White Noise: Unificazione Keyring e Ricerca Utenti&lt;/h3>
&lt;p>Il backend &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise&lt;/a> per il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> ha unito 4 PR in settimana. Due PR hanno migliorato la gestione del keyring: la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/468">PR #468&lt;/a> rende l&amp;rsquo;identificatore del servizio keyring configurabile tramite &lt;code>WhitenoiseConfig&lt;/code>, e la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/475">PR #475&lt;/a> unifica l&amp;rsquo;implementazione su un singolo crate &lt;code>keyring-core&lt;/code> con store nativi per piattaforma, sostituendo codice frammentato specifico per piattaforma. Separatamente, la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/470">PR #470&lt;/a> aggiunge funzionalità di ricerca utenti.&lt;/p>
&lt;h3 id="marmot-ts-estrae-lapp-chat-di-riferimento">Marmot TS Estrae l&amp;rsquo;App Chat di Riferimento&lt;/h3>
&lt;p>L&amp;rsquo;SDK TypeScript di &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> (&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>) ha unito la &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/40">PR #40&lt;/a>, rimuovendo l&amp;rsquo;applicazione chat di riferimento integrata e separandola in un repository autonomo: &lt;a href="https://github.com/marmot-protocol/marmots-web-chat">marmots-web-chat&lt;/a>. Il nuovo repo, creato il 6 febbraio, è un&amp;rsquo;implementazione di riferimento dell&amp;rsquo;SDK TypeScript Marmot con la propria pipeline CI, vista chat a tab e sistema di build indipendente. La separazione permette all&amp;rsquo;SDK di concentrarsi sulle funzioni di libreria mentre l&amp;rsquo;app chat itera sulla UX in modo indipendente.&lt;/p>
&lt;p>Una PR aperta (&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/41">#41&lt;/a>) migra marmot-ts a ts-mls v2.0.0, portando un&amp;rsquo;API ridisegnata con oggetti contesto unificati, nuove utility di gestione messaggi (creazione eventi, lettura, deserializzazione), helper per i metadata dei key package, e supporto eventi di cancellazione.&lt;/p>
&lt;h3 id="aggiornamenti-alby-hub">Aggiornamenti Alby Hub&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> ha unito 5 PR in settimana. La &lt;a href="https://github.com/getAlby/hub/pull/2049">PR #2049&lt;/a> aggiunge un Alby CLI all&amp;rsquo;interfaccia dell&amp;rsquo;app store. La &lt;a href="https://github.com/getAlby/hub/pull/2033">PR #2033&lt;/a> corregge la gestione di dati zap invalidi nella lista transazioni, e la &lt;a href="https://github.com/getAlby/hub/pull/2046">PR #2046&lt;/a> rimuove il metodo &lt;code>ListTransactions&lt;/code> non utilizzato dall&amp;rsquo;interfaccia LNClient.&lt;/p>
&lt;h3 id="notedeck-rilascia-dashboard-e-agentium">Notedeck Rilascia Dashboard e Agentium&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client Nostr cross-platform di Damus, ha unito 6 PR in settimana. La &lt;a href="https://github.com/damus-io/notedeck/pull/1247">PR #1247&lt;/a> aggiunge un&amp;rsquo;app dashboard iniziale. La &lt;a href="https://github.com/damus-io/notedeck/pull/1293">PR #1293&lt;/a> introduce Agentium, un ambiente di sviluppo multi-agente che trasforma l&amp;rsquo;assistente AI Dave in un sistema con due modalità AI e gestione agenti basata su scene. La &lt;a href="https://github.com/damus-io/notedeck/pull/1276">PR #1276&lt;/a> aggiunge un compositore messaggi multilinea con keybinding stile Signal, e la &lt;a href="https://github.com/damus-io/notedeck/pull/1278">PR #1278&lt;/a> fornisce miglioramenti delle prestazioni media. PR aperte degne di nota includono &lt;a href="https://github.com/damus-io/notedeck/pull/1288">infrastruttura outbox&lt;/a> e &lt;a href="https://github.com/damus-io/notedeck/pull/1289">pianificazione Git App&lt;/a> &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34&lt;/a>.&lt;/p>
&lt;h3 id="agora-rilascia-un-importante-rinnovo-della-ui">Agora Rilascia un Importante Rinnovo della UI&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora">Agora&lt;/a> ha unito 7 PR in settimana insieme al rilascio v1.0.2. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/106">PR #106&lt;/a> è la più grande, chiudendo 11 task UI attraverso impostazioni, modifica profilo, interazioni mappa, risultati ricerca, filtraggio commenti e gestione server Blossom. Il merge ha disabilitato i pulsanti reazione per chi non è autenticato (che prima riceveva errori silenziosi cercando di reagire ai post sulla mappa), corretto il panning della mappa sulla linea di cambio data, e aggiunto testo corrispondente in grassetto nei risultati di ricerca.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/108">PR #108&lt;/a> aggiunge conteggi commenti sotto i post del feed e nelle pagine thread. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/107">PR #107&lt;/a> aggiunge retry automatico sui fallimenti di caricamento eventi con un pulsante di reload esplicito quando i tentativi si esauriscono. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/104">PR #104&lt;/a> cambia la navigazione hashtag per default allo scope globale, dato che il default precedente limitato per paese spesso restituiva zero risultati.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/109">PR #109&lt;/a> aggiunge un passaggio CI che verifica la parità di traduzione tra tutte le lingue, facendo fallire la build se a qualche chiave manca un valore. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/110">PR #110&lt;/a> taglia le note lunghe nei feed per preservare il ritmo di scroll, e la &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/111">PR #111&lt;/a> corregge un problema di zoom iOS mobile quando si commentano azioni causato da font di dimensioni ridotte.&lt;/p>
&lt;h3 id="clawstr-rilascia-cli-e-pulsanti-zap-lightning">Clawstr Rilascia CLI e Pulsanti Zap Lightning&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/clawstr">Clawstr&lt;/a>, la piattaforma ispirata a Reddit dove agenti AI creano e gestiscono community su Nostr, ha unito 3 PR in settimana. La &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/11">PR #11&lt;/a> sostituisce tutti i comandi manuali nak nelle definizioni skill dell&amp;rsquo;agente AI con il nuovo pacchetto &lt;code>@clawstr/cli&lt;/code> (&lt;code>npx -y @clawstr/cli@latest&lt;/code>), rimuovendo la costruzione manuale di eventi JSON a favore di comandi CLI e aggiungendo operazioni wallet (init, balance, zap, npc) e ricerca full-text &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/13">PR #13&lt;/a> aggiunge la pagina di documentazione &amp;ldquo;For Humans&amp;rdquo; e un componente &lt;code>ProfileZapDialog&lt;/code>. Il pulsante zap appare sulle pagine profilo quando l&amp;rsquo;utente ha un indirizzo Lightning configurato e funziona anche non autenticati, usando LNURL-pay direttamente con importi sats preimpostati e visualizzazione codice QR. La &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/12">PR #12&lt;/a> documenta il comando &lt;code>wallet sync&lt;/code>, spiegando come i pagamenti verso indirizzi Lightning vengono trattenuti da NPC fino a che i rispettivi agenti sincronizzano esplicitamente i wallet.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1561">NIP-45: Risposta Relay HyperLogLog&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45 (Event Counting)&lt;/a> ora supporta il conteggio approssimativo HyperLogLog (HLL). I relay possono restituire valori registro HLL da 256 byte insieme alle risposte COUNT. I client uniscono questi registri da più relay per calcolare la cardinalità approssimativa evitando di scaricare set completi di eventi. Il caso d&amp;rsquo;uso principale: conteggi follower e reazioni indipendenti da un singolo relay come fonte autoritativa. Anche solo due eventi reazione consumano più banda del payload HLL da 256 byte. I client possono applicare le correzioni HyperLogLog++ per migliorare l&amp;rsquo;accuratezza su cardinalità ridotte.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2216">NIP-39: Tag Identità Spostati da Kind 0&lt;/a>&lt;/strong> - I tag di claim identità &lt;a href="https://nostrcompass.org/it/topics/nip-39/">NIP-39&lt;/a> (tag &lt;code>i&lt;/code>) sono stati estratti dagli eventi metadata kind 0 a un nuovo kind dedicato 10011. La motivazione: quasi nessun client supporta questi tag, quindi aggiungono dimensione a ogni fetch kind 0 senza valore reale. Si tratta della prima di un ciclo di PR di estrazione kind 0 di vitorpamplona (vedi &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#campagna-di-snellimento-kind-0">sezione Notizie&lt;/a>).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2214">NIP-XX: Nostr Relay Connect (NRC)&lt;/a>&lt;/strong> - woikos propone un protocollo per accedere ai relay Nostr attraverso tunneling crittografato tramite un relay rendezvous pubblico. Il meccanismo abilita l&amp;rsquo;accesso a relay dietro NAT o firewall, inclusi relay personali in esecuzione su home server o dispositivi mobili. Il tunneling usa eventi kind 24891/24892 con crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> attraverso un relay rendezvous che non può decrittare il traffico. Applicazione pratica: qualsiasi client Nostr può esporre lo storage locale (IndexedDB, SQLite) come endpoint relay per la sincronizzazione cross-device. La semantica standard NIP-01 (REQ, EVENT, CLOSE, COUNT) passa attraverso il tunnel in modo trasparente. Implementazioni di riferimento esistono in Go (ORLY Relay) e TypeScript (Smesh).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2187">Nostr Web Tokens (NWT)&lt;/a>&lt;/strong> - pippellia-btc propone Nostr Web Tokens, un formato evento Nostr per trasmettere claim firmati tra parti web, ispirato ai JSON Web Tokens (JWT). NWT può rappresentare sia &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> (HTTP Auth) che &lt;a href="https://nostrcompass.org/it/topics/blossom/">eventi di autorizzazione Blossom&lt;/a>, dando ai client flessibilità su come e quanto a lungo i token rimangono validi. Sono disponibili la libreria Go di riferimento, la &lt;a href="https://github.com/pippellia-btc/nostr-web-tokens">spiegazione video&lt;/a> e il &lt;a href="https://github.com/pippellia-btc/nostr-web-tokens?tab=readme-ov-file#comparisons">confronto dettagliato&lt;/a> con NIP-98 e Blossom Auth.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">Semplificazione NIP-47&lt;/a>&lt;/strong> - rolznz propone di rimuovere i metodi &lt;code>multi_&lt;/code> da &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>, complessi da implementare e privi di adozione. La PR riduce anche la duplicazione nella gestione crittografia e retrocompatibilità, ripulendo la spec dopo &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/#aggiornamenti-nip">l&amp;rsquo;aggiunta hold invoice della settimana scorsa&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2213">NIP-05: Spostamento in un Kind Evento Proprio&lt;/a>&lt;/strong> - vitorpamplona propone di spostare la verifica NIP-05 da kind 0 a un nuovo kind 10008, abilitando più identificatori NIP-05 per utente e il filtraggio per indirizzo NIP-05. Parte della campagna di snellimento kind 0.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2217">NIP-57: Indirizzi Lightning da Kind 0&lt;/a>&lt;/strong> - vitorpamplona propone di estrarre lud06/lud16 (indirizzi Lightning) da kind 0 a un kind evento dedicato per &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>, continuando lo sforzo di snellimento kind 0.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2165">Iperpersonalizzazione Profilo&lt;/a>&lt;/strong> - fiatjaf propone capacità estese di personalizzazione profilo oltre a quanto kind 0 supporta attualmente.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-45-event-counting-e-hyperloglog">NIP Deep Dive: NIP-45 (Event Counting) e HyperLogLog&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-45/">NIP-45&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/45.md">spec&lt;/a>) definisce come i client possono chiedere ai relay di contare eventi corrispondenti a un filtro evitando di trasferire gli eventi stessi. Il merge del &lt;a href="https://github.com/nostr-protocol/nips/pull/1561">supporto HyperLogLog&lt;/a> aggiunge una struttura dati probabilistica che risolve un problema fondamentale: come contare cose attraverso più relay indipendenti.&lt;/p>
&lt;p>&lt;strong>Il Problema:&lt;/strong>&lt;/p>
&lt;p>Contare eventi su un singolo relay è semplice: invia una richiesta COUNT, ottieni un numero indietro. Contare attraverso la rete è più difficile. Se il relay A riporta 50 reazioni e il relay B ne riporta 40, il totale non è 90 perché molti eventi esistono su entrambi i relay. Non è possibile calcolare il conteggio reale in assenza del download completo per deduplicare.&lt;/p>
&lt;p>&lt;strong>HyperLogLog:&lt;/strong>&lt;/p>
&lt;p>HyperLogLog (HLL) è un algoritmo probabilistico che stima il numero di elementi distinti in un insieme usando un quantitativo fisso di memoria. L&amp;rsquo;implementazione NIP-45 usa 256 registri di un byte ciascuno, consumando esattamente 256 byte indipendentemente dal numero di eventi contati. L&amp;rsquo;algoritmo funziona esaminando la rappresentazione binaria di ciascun ID evento e tracciando la posizione degli zeri iniziali. ID evento che iniziano con molti zeri sono statisticamente rari, e la loro occorrenza indica un insieme grande.&lt;/p>
&lt;p>&lt;strong>Come Funziona in NIP-45:&lt;/strong>&lt;/p>
&lt;p>Un relay che risponde a una richiesta COUNT può includere un campo &lt;code>hll&lt;/code> contenente valori registro codificati in base64:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;COUNT&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;subscription_id&amp;gt;&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;count&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4527&lt;/span>, &lt;span style="color:#f92672">&amp;#34;hll&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;base64 encoded 256 bytes&amp;gt;&amp;#34;&lt;/span>}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il client raccoglie i valori HLL da più relay e li unisce prendendo il valore massimo a ciascuna posizione registro. L&amp;rsquo;HLL unito rappresenta l&amp;rsquo;unione di tutti gli insiemi di eventi attraverso i relay, gestendo automaticamente la deduplicazione. La stima finale di cardinalità viene calcolata dai registri uniti.&lt;/p>
&lt;p>&lt;strong>Accuratezza:&lt;/strong>&lt;/p>
&lt;p>Con 256 registri, l&amp;rsquo;errore standard è di circa il 5,2%. Per un conteggio reale di 1.000, la stima cadrà tipicamente tra 948 e 1.052. Per conteggi più grandi, l&amp;rsquo;errore relativo rimane costante: un conteggio reale di 100.000 verrà stimato in circa 94.800-105.200. Le correzioni HyperLogLog++ migliorano l&amp;rsquo;accuratezza per cardinalità ridotte (sotto ~200), dove l&amp;rsquo;algoritmo base tende a sovrastimare.&lt;/p>
&lt;p>&lt;strong>Perché è Importante:&lt;/strong>&lt;/p>
&lt;p>Le metriche social (conteggi follower, conteggi reazioni, conteggi repost) sono tra le funzionalità core dei client social media. In assenza di HLL, i client devono interrogare un singolo relay &amp;ldquo;fidato&amp;rdquo; (centralizzando il conteggio) o scaricare tutti gli eventi da tutti i relay (sprecando banda). HLL permette ai client di ottenere un buon conteggio approssimativo da più relay con un overhead totale di 256 byte per relay, indipendentemente dal conteggio effettivo. Anche solo due eventi reazione consumano più banda di un payload HLL completo.&lt;/p>
&lt;p>La spec fissa il numero di registri a 256 per l&amp;rsquo;interoperabilità. Tutti i relay producono valori HLL che i client possono unire, indipendentemente da quale implementazione relay usano. I client possono implementare il supporto HLL una volta e beneficiare di ogni relay che lo supporta.&lt;/p>
&lt;p>&lt;strong>Stato Attuale:&lt;/strong>&lt;/p>
&lt;p>La PR è stata aperta da fiatjaf ed era in discussione da diversi mesi prima del merge avvenuto in settimana. Le implementazioni relay dovranno aggiungere il calcolo HLL ai loro handler COUNT. Le implementazioni client dovranno aggiungere il merging HLL alla propria logica di aggregazione conteggi.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-96-http-file-storage-e-la-transizione-a-blossom">NIP Deep Dive: NIP-96 (HTTP File Storage) e la Transizione a Blossom&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-96/">NIP-96&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">spec&lt;/a>) definiva come i client Nostr caricavano, scaricavano e gestivano file su server media HTTP. Ora contrassegnato come &amp;ldquo;non raccomandato&amp;rdquo; a favore di &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> (hosting media basato su BUD), NIP-96 resta rilevante in settimana perché Angor v0.2.5 &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#angor-v025">ha aggiunto la configurazione server NIP-96&lt;/a> e ZSP v0.3.1 &lt;a href="https://nostrcompass.org/it/newsletters/2026-02-11-newsletter/#zsp-v031">carica su server Blossom&lt;/a>, illustrando la transizione di protocollo in corso.&lt;/p>
&lt;p>&lt;strong>Come Funziona NIP-96:&lt;/strong>&lt;/p>
&lt;p>Un client scopre le capacità di un file server recuperando &lt;code>/.well-known/nostr/nip96.json&lt;/code>, che restituisce l&amp;rsquo;URL API, i tipi di contenuto supportati, i limiti di dimensione e le trasformazioni media disponibili:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;api_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://file-server.example/api&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;download_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://cdn.example/files&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content_types&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;image/jpeg&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;video/webm&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;audio/*&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;plans&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;free&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;is_nip98_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_byte_size&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10485760&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;media_transformations&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;image&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;resizing&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Per caricare, il client invia un POST &lt;code>multipart/form-data&lt;/code> all&amp;rsquo;URL API con un header di autorizzazione &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> (un evento Nostr firmato che prova l&amp;rsquo;identità di chi carica). Il server restituisce una struttura metadata file &lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a> contenente l&amp;rsquo;URL del file, i hash SHA-256 originali e trasformati, il tipo MIME e le dimensioni:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;status&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;success&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;nip94_event&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;url&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://cdn.example/files/&amp;lt;hash&amp;gt;.png&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;ox&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;original-file-hash&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;x&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;transformed-file-hash&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;m&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;image/png&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;dim&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;800x600&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I download usano richieste GET a &lt;code>&amp;lt;api_url&amp;gt;/&amp;lt;sha256-hash&amp;gt;&lt;/code>, con parametri query opzionali per trasformazioni server-side come il ridimensionamento immagini (&lt;code>?w=320&lt;/code>). La cancellazione usa DELETE con auth NIP-98, e solo chi ha caricato il file originale può cancellare i propri file. Un endpoint di elenco file restituisce risultati paginati dei caricamenti di un utente.&lt;/p>
&lt;p>Chi pubblica eventi kind 10096 dichiara i propri server di upload preferiti, permettendo ai client di selezionare automaticamente il server giusto in assenza di configurazione manuale.&lt;/p>
&lt;p>&lt;strong>Perché È Stato Deprecato:&lt;/strong>&lt;/p>
&lt;p>NIP-96 legava gli URL dei file a server specifici. Se &lt;code>files.example.com&lt;/code> andava giù, ogni nota Nostr che referenziava quegli URL perdeva i suoi media. Il server era l&amp;rsquo;indirizzo, e l&amp;rsquo;indirizzo era fragile.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> (Blobs Stored Simply on Mediaservers) inverte il modello rendendo l&amp;rsquo;hash SHA-256 del contenuto del file l&amp;rsquo;identificatore canonico. Un URL Blossom ha la forma &lt;code>https://blossom.example/&amp;lt;sha256&amp;gt;.png&lt;/code>, ma qualsiasi server Blossom che ospita lo stesso file lo serve allo stesso percorso hash. Se un server scompare, i client interrogano un altro server per lo stesso hash. L&amp;rsquo;indirizzamento basato sul contenuto rende i dati portabili tra server di default.&lt;/p>
&lt;p>Blossom semplifica anche l&amp;rsquo;API. NIP-96 usava upload multipart form con risposte JSON, policy di trasformazione e un endpoint di discovery. Blossom usa semplice PUT per gli upload, GET per i download, ed eventi Nostr firmati (non header HTTP) per l&amp;rsquo;autorizzazione. La specifica Blossom è divisa in documenti modulari: BUD-01 copre il protocollo server, l&amp;rsquo;autorizzazione e il recupero, BUD-02 copre l&amp;rsquo;upload blob, BUD-03 copre i server utente, e BUD-04 copre il mirroring tra server.&lt;/p>
&lt;p>La deprecazione è avvenuta a settembre 2025 tramite &lt;a href="https://github.com/nostr-protocol/nips/pull/2047">PR #2047&lt;/a>, che ha contrassegnato NIP-96 come &amp;ldquo;non raccomandato&amp;rdquo; nell&amp;rsquo;indice NIPs.&lt;/p>
&lt;p>&lt;strong>La Transizione in Pratica:&lt;/strong>&lt;/p>
&lt;p>Server come nostr.build e void.cat supportavano NIP-96 e hanno aggiunto o migrato a endpoint Blossom. I client sono a vari stadi: il rilascio v0.2.5 di Angor in settimana ha aggiunto la configurazione server NIP-96 per le immagini dei progetti, mentre il rilascio v0.3.1 di ZSP carica artefatti esclusivamente su server Blossom con header &lt;code>Content-Digest&lt;/code> per la conformità al protocollo. Amethyst e Primal supportano gli upload Blossom. La coesistenza probabilmente continuerà fino a quando le rimanenti implementazioni NIP-96 completeranno la propria migrazione.&lt;/p>
&lt;p>&lt;strong>Cosa Viene Preservato:&lt;/strong>&lt;/p>
&lt;p>I preference event kind 10096 rimangono utili per la selezione server Blossom. I metadata file NIP-94 (eventi kind 1063) descrivono ancora le proprietà dei file indipendentemente da quale protocollo di upload li ha creati. L&amp;rsquo;hashing SHA-256 che NIP-96 usava per gli URL di download è diventato la base dell&amp;rsquo;indirizzamento basato sul contenuto di Blossom. Il design di NIP-96 ha informato ciò che Blossom ha semplificato: la lezione è stata che l&amp;rsquo;hosting media su rete decentralizzata richiede storage indirizzato per contenuto per corrispondere alla resistenza alla censura del livello relay.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa? Hai notizie da condividere? Vuoi che copriamo il tuo progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM NIP-17&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #8</title><link>https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-02-04-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> rust-nostr rilascia una importante riprogettazione dell&amp;rsquo;API con 21 PR che rivedono l&amp;rsquo;architettura dell&amp;rsquo;SDK. Nostria 3.0 viene lanciato con navigazione a doppio pannello, gestione liste e una completa revisione dell&amp;rsquo;UI. Vector aggiunge accelerazione SIMD raggiungendo speedup di 65x-184x e rilascia supporto per il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per la messaggistica di gruppo crittografata. Frostr porta la firma a soglia su iOS tramite TestFlight. Damus implementa i suggerimenti relay &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19 (Entità Codificate Bech32)&lt;/a> per la scoperta di contenuti cross-relay. Primal Android aggiunge crittografia NWC e esportazione transazioni wallet. nostr-tools e NDK ricevono miglioramenti di affidabilità. NIP-82 (Applicazioni Software) si espande per coprire il 98% delle piattaforme dispositivo. Il repository NIPs unisce il supporto hold invoice per &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Nuove proposte di protocollo includono NIP-74 per il podcasting, NIP-DB per database eventi nel browser e una suite TRUSTed Filters per la curation decentralizzata dei contenuti. Nuovi progetti includono Instagram to Nostr v2 per la migrazione dei contenuti, Pod21 che lancia un marketplace decentralizzato di stampa 3D, Clawstr che introduce community gestite da agenti AI, e Shosho e NosCall che espandono le capacità di live streaming e videochiamate.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> rust-nostr rilascia una importante riprogettazione dell&amp;rsquo;API con 21 PR che rivedono l&amp;rsquo;architettura dell&amp;rsquo;SDK. Nostria 3.0 viene lanciato con navigazione a doppio pannello, gestione liste e una completa revisione dell&amp;rsquo;UI. Vector aggiunge accelerazione SIMD raggiungendo speedup di 65x-184x e rilascia supporto per il protocollo &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> per la messaggistica di gruppo crittografata. Frostr porta la firma a soglia su iOS tramite TestFlight. Damus implementa i suggerimenti relay &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19 (Entità Codificate Bech32)&lt;/a> per la scoperta di contenuti cross-relay. Primal Android aggiunge crittografia NWC e esportazione transazioni wallet. nostr-tools e NDK ricevono miglioramenti di affidabilità. NIP-82 (Applicazioni Software) si espande per coprire il 98% delle piattaforme dispositivo. Il repository NIPs unisce il supporto hold invoice per &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Nuove proposte di protocollo includono NIP-74 per il podcasting, NIP-DB per database eventi nel browser e una suite TRUSTed Filters per la curation decentralizzata dei contenuti. Nuovi progetti includono Instagram to Nostr v2 per la migrazione dei contenuti, Pod21 che lancia un marketplace decentralizzato di stampa 3D, Clawstr che introduce community gestite da agenti AI, e Shosho e NosCall che espandono le capacità di live streaming e videochiamate.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="rust-nostr-rilascia-una-importante-riprogettazione-dellapi">rust-nostr Rilascia una Importante Riprogettazione dell&amp;rsquo;API&lt;/h3>
&lt;p>L&amp;rsquo;SDK &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> ha subito una significativa revisione dell&amp;rsquo;architettura questa settimana con 21 PR unite che introducono breaking changes attraverso la libreria. La riprogettazione riguarda le API core su cui la maggior parte degli sviluppatori Rust fa affidamento.&lt;/p>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1245">PR #1245&lt;/a> riprogetta le API di notifica, mentre &lt;a href="https://github.com/rust-nostr/nostr/pull/1244">PR #1244&lt;/a> sostituisce &lt;code>RelayNotification::Shutdown&lt;/code> con &lt;code>RelayStatus::Shutdown&lt;/code> per una gestione dello stato più pulita. Le API del signer ora si allineano con altri pattern dell&amp;rsquo;SDK tramite &lt;a href="https://github.com/rust-nostr/nostr/pull/1243">PR #1243&lt;/a>. I metodi Client e Relay hanno ricevuto una pulizia in &lt;a href="https://github.com/rust-nostr/nostr/pull/1242">PR #1242&lt;/a>, e le opzioni client ora usano un builder pattern (&lt;a href="https://github.com/rust-nostr/nostr/pull/1241">PR #1241&lt;/a>).&lt;/p>
&lt;p>Le API di invio messaggi sono state riprogettate in &lt;a href="https://github.com/rust-nostr/nostr/pull/1240">PR #1240&lt;/a>, l&amp;rsquo;unsubscription REQ in &lt;a href="https://github.com/rust-nostr/nostr/pull/1239">PR #1239&lt;/a>, e la rimozione relay in &lt;a href="https://github.com/rust-nostr/nostr/pull/1229">PR #1229&lt;/a>. Una &lt;a href="https://github.com/rust-nostr/nostr/pull/1246">PR aperta #1246&lt;/a> aggiunge supporto per le API bloccanti per completare la riprogettazione.&lt;/p>
&lt;p>Le modifiche portano consistenza all&amp;rsquo;SDK ma richiederanno sforzo di migrazione dai progetti esistenti. Gli sviluppatori che costruiscono su rust-nostr dovrebbero rivedere attentamente il changelog prima di aggiornare.&lt;/p>
&lt;h3 id="instagram-to-nostr-v2-abilita-la-migrazione-dei-contenuti">Instagram to Nostr v2 Abilita la Migrazione dei Contenuti&lt;/h3>
&lt;p>Un nuovo strumento permette ai creatori di migrare i loro contenuti esistenti dalle piattaforme centralizzate a Nostr. &lt;a href="https://github.com/primalpaul1/instagram-to-nostr-v2">Instagram to Nostr v2&lt;/a> supporta l&amp;rsquo;importazione da Instagram, TikTok, Twitter e Substack senza richiedere accesso alle chiavi private dell&amp;rsquo;utente.&lt;/p>
&lt;p>Lo strumento affronta una barriera comune all&amp;rsquo;onboarding: gli utenti esitanti a ricominciare da zero su una nuova piattaforma possono ora preservare la loro cronologia di contenuti. Supporta anche il regalare account Nostr a nuovi utenti o proporre contenuti ad account esistenti, rendendolo utile per aiutare altri nella transizione al protocollo.&lt;/p>
&lt;h3 id="pod21-rete-di-stampa-3d-decentralizzata">Pod21: Rete di Stampa 3D Decentralizzata&lt;/h3>
&lt;p>&lt;a href="https://github.com/gobrrrme/Pod21">Pod21&lt;/a> (&lt;a href="https://pod21.com">pod21.com&lt;/a>) connette operatori di stampanti 3D con acquirenti usando Nostr per la coordinazione del marketplace. La piattaforma include un bot DM compatibile &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17 (Messaggi Diretti Privati)&lt;/a> che gestisce le interazioni del marketplace, permettendo agli acquirenti di richiedere stampe e negoziare con i maker attraverso messaggi diretti crittografati.&lt;/p>
&lt;p>I maker elencano la loro capacità e competenze di stampa; gli acquirenti sfogliano le inserzioni e avviano ordini tramite il bot. L&amp;rsquo;architettura segue un pattern simile ad altre applicazioni commerciali Nostr: scoperta basata su relay, messaggistica crittografata per la coordinazione degli ordini, e Lightning per il settlement. Pod21 si unisce a Ridestr e Shopstr come applicazioni Nostr che coordinano transazioni nel mondo reale attraverso il protocollo.&lt;/p>
&lt;h3 id="clawstr-social-network-con-agenti-ai">Clawstr: Social Network con Agenti AI&lt;/h3>
&lt;p>&lt;a href="https://github.com/clawstr/clawstr">Clawstr&lt;/a> si lancia come piattaforma ispirata a Reddit dove agenti AI creano e gestiscono community su Nostr. La piattaforma permette ad agenti autonomi di stabilire community tematiche, curare contenuti e interagire con gli utenti. Le community funzionano come subreddit ma con moderatori e curatori AI che guidano le discussioni. L&amp;rsquo;architettura usa il protocollo aperto di Nostr per interazioni agente-agente e agente-umano, stabilendo un nuovo modello per la formazione di community sui social media decentralizzati.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="ridestr-v020-roadflare-release">Ridestr v0.2.0: RoadFlare Release&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> ha rilasciato &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.0">v0.2.0&lt;/a>, denominato &amp;ldquo;RoadFlare Release&amp;rdquo;, introducendo reti personali di rideshare. La funzionalità permette ai passeggeri di aggiungere autisti preferiti a una rete fidata. Gli autisti approvano i follower e condividono posizioni crittografate, permettendo ai passeggeri di vedere quando autisti fidati sono online e nelle vicinanze. Le richieste di corsa vanno direttamente agli autisti conosciuti.&lt;/p>
&lt;p>L&amp;rsquo;affidabilità dei pagamenti è migliorata con recupero automatico dell&amp;rsquo;escrow, migliore sincronizzazione wallet tra dispositivi e elaborazione pagamenti più veloce tramite polling progressivo. &lt;a href="https://github.com/variablefate/ridestr/pull/37">PR #37&lt;/a> aggiunge l&amp;rsquo;infrastruttura Fase 5-6 che supporta queste funzionalità. &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.1">v0.2.1&lt;/a> ha seguito con hotfix per bug della dialog di pagamento e il flusso &amp;ldquo;Aggiungi ai Preferiti&amp;rdquo; post-corsa.&lt;/p>
&lt;h3 id="nostria-30">Nostria 3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, il client cross-platform di sondreb costruito per scala globale, ha rilasciato la versione 3.0 con una completa revisione dell&amp;rsquo;UI, nuovo logo e centinaia di fix. Il rilascio rappresenta un intensivo ciclo di sviluppo di sei settimane.&lt;/p>
&lt;p>La navigazione a doppio pannello è il cambiamento UX più grande, permettendo agli utenti desktop di ridurre il cambio di contesto quando si spostano tra liste, dettagli e thread. Una nuova sezione Home fornisce una panoramica di tutte le funzionalità disponibili, e tutti gli schermi condividono toolbar, layout e funzionalità unificati.&lt;/p>
&lt;p>La gestione delle liste è l&amp;rsquo;aggiornamento funzionale più significativo, integrato in tutta l&amp;rsquo;applicazione. Gli utenti possono gestire liste di profili e filtrare contenuti in qualsiasi funzionalità: Stream, Musica o Feed. Stanchi dello spam nei thread? Filtra per preferiti per vedere solo le loro risposte. Quick Zaps aggiunge zapping con un tap con valori configurabili. Copia/Screenshot genera screenshot per la clipboard per condividere eventi ovunque. Parole Silenziate ora filtra sui campi del profilo (name, display_name, NIP-05), permettendo agli utenti di bloccare tutti i profili bridged con una singola parola bannata. Le Impostazioni sono diventate ricercabili per modifiche di configurazione più veloci.&lt;/p>
&lt;p>Il rilascio aggiunge rendering delle richieste di pagamento BOLT11 e BOLT12, selezione dimensione testo e font, e messaggistica &amp;ldquo;Nota-a-Te-Stesso&amp;rdquo; nella sezione Messaggi con rendering di contenuti referenziati come articoli ed eventi. La nuova dialog Condividi permette condivisione rapida via email, siti web o messaggi diretti a più destinatari. Funzionalità aggiuntive includono set di emoji personalizzati, Interessi (liste hashtag come feed dinamici), Segnalibri, Feed Relay Pubblici e personalizzazione completa del menu inclusa quale opzione apre l&amp;rsquo;icona Nostria.&lt;/p>
&lt;p>Disponibile su Android, iOS, Windows e web su &lt;a href="https://www.nostria.app/">nostria.app&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-v510">Applesauce v5.1.0&lt;/h3>
&lt;p>La suite di librerie &lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a> di hzrd149 ha rilasciato v5.1.0 su tutti i pacchetti. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-signers%405.1.0">applesauce-signers&lt;/a> aggiunge supporto per i metodi &lt;code>switch_relays&lt;/code> e &lt;code>ping&lt;/code> sui signer remoti Nostr Connect, utili per gestire le connessioni signer programmaticamente. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-loaders%405.1.0">applesauce-loaders&lt;/a> introduce &lt;code>loadAsyncMap&lt;/code> per caricamento asincrono parallelo. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-react%405.1.0">applesauce-react&lt;/a> aggiunge argomenti padding a &lt;code>useAction().run()&lt;/code>. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.1.0">applesauce-core&lt;/a> aggiorna il mapping event-to-store per gestire stringhe direttamente senza richiedere &lt;code>onlyEvents&lt;/code>.&lt;/p>
&lt;h3 id="nak-v0183">nak v0.18.3&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> (Nostr Army Knife) di fiatjaf ha raggiunto &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a> con fix di stabilità da mattn. Il rilascio previene panic quando gli URL mint mancano del separatore &lt;code>://&lt;/code>, valida gli errori del dateparser prima di usare i valori data e gestisce casi limite nel parsing dei tag AUTH challenge. Questi fix difensivi rendono la CLI più resiliente quando elabora input malformati.&lt;/p>
&lt;h3 id="aegis-v037">Aegis v0.3.7&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>, il signer desktop cross-platform, ha rilasciato &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.7">v0.3.7&lt;/a> aggiungendo supporto Nostr App Browser con firma &lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07 (Interfaccia Estensione Browser)&lt;/a>. Il rilascio registra eventi di crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04 (Messaggi Diretti Crittografati)&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44 (Crittografia Versionata)&lt;/a>, permettendo agli utenti di tracciare quali applicazioni richiedono operazioni di crittografia. Il segmento browser ora filtra per piattaforma per mostrare solo app web.&lt;/p>
&lt;h3 id="bitchat-v151-ios">Bitchat v1.5.1 (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/permissionlesstech/bitchat">Bitchat&lt;/a>, l&amp;rsquo;app di messaggistica offline-capable che usa Nostr e mesh Bluetooth, ha rilasciato &lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.1">v1.5.1&lt;/a> con hardening di sicurezza iOS. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1012">PR #1012&lt;/a> valida le firme degli eventi Nostr prima dell&amp;rsquo;elaborazione, rifiuta giftwrap e pacchetti embedded invalidi, limita i payload sovradimensionati e blocca gli ID mittente BLE announce spoofati. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/998">PR #998&lt;/a> corregge l&amp;rsquo;autenticazione mesh BLE iOS legando gli ID mittente agli UUID di connessione, prevenendo lo spoofing di identità nella rete mesh. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/972">PR #972&lt;/a> aggiunge rate limiting delle notifiche per prevenire flood di peer discovery quando più dispositivi mesh sono nelle vicinanze.&lt;/p>
&lt;h3 id="keychat-v1392">KeyChat v1.39.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/keychat-io/keychat-app">KeyChat&lt;/a> ha rilasciato &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.39.2%2B6495">v1.39.2&lt;/a> aggiungendo supporto &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect tramite &lt;a href="https://github.com/keychat-io/keychat-app/pull/148">PR #148&lt;/a>. Gli utenti possono ora connettere wallet Lightning esterni per i pagamenti all&amp;rsquo;interno dell&amp;rsquo;app di messaggistica. Il rilascio aggiunge anche notifiche desktop macOS.&lt;/p>
&lt;h3 id="nostrmo-v350">Nostrmo v3.5.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/haorendashu/nostrmo">Nostrmo&lt;/a>, il client Flutter cross-platform, ha rilasciato &lt;a href="https://github.com/haorendashu/nostrmo/releases/tag/3.5.0">v3.5.0&lt;/a> rivedendo il suo sistema di feed. L&amp;rsquo;aggiornamento sostituisce i feed fissi con alternative personalizzabili: Feed Generale, Feed Menzioni e Feed Relay, ciascuno configurabile attraverso nuove pagine di modifica. Il rilascio implementa supporto per il modello outbox per un migliore routing degli eventi ed espande la funzionalità relay locale con limiti di dimensione configurabili e supporto sottoscrizioni.&lt;/p>
&lt;h3 id="shosho-v0111">Shosho v0.11.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, l&amp;rsquo;app di live streaming per Nostr, ha rilasciato &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.11.1">v0.11.1&lt;/a> con capacità di registrazione e VOD. L&amp;rsquo;aggiornamento aggiunge indicatori di presenza nella stanza che mostrano chi sta guardando gli stream, conversazioni chat threaded per una migliore organizzazione delle discussioni e supporto Nostr Connect su iOS tramite &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>. Gli streamer possono ora salvare le loro trasmissioni per la visione successiva mantenendo interazioni chat in tempo reale con il loro pubblico.&lt;/p>
&lt;h3 id="noscall-v050">NosCall v0.5.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/sanah9/noscall">NosCall&lt;/a>, l&amp;rsquo;app per chiamate audio e video per Nostr, ha rilasciato &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.0-release">v0.5.0&lt;/a> con gruppi di contatti per organizzare le chiamate per categoria, gestione relay per l&amp;rsquo;ottimizzazione delle connessioni e impostazioni server ICE configurabili per una migliore traversal NAT. Il rilascio aggiunge anche supporto per la modalità scura. NosCall usa Nostr per il signaling e la coordinazione delle chiamate, abilitando chiamate peer-to-peer senza server centralizzati.&lt;/p>
&lt;h3 id="divine-104">diVine 1.0.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, il client video short-form looping di rabble, ha rilasciato &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.4">1.0.4&lt;/a> come pre-release alpha Android prima della sua sottomissione a Zapstore. Il rilascio si concentra sul test della gestione delle chiavi Nostr, incluso import nsec, firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46 (Nostr Connect)&lt;/a> con nsecBunker e Amber, e gestione URL nostrconnect://. Il team sta sollecitando feedback sulla compatibilità relay e l&amp;rsquo;interoperabilità video con altri client. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1265">PR #1265&lt;/a> corregge la gestione dei percorsi file iOS che causava l&amp;rsquo;inutilizzabilità dei clip video dopo gli aggiornamenti dell&amp;rsquo;app memorizzando percorsi relativi invece di percorsi container assoluti. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1251">PR #1251&lt;/a> corregge problemi di navigazione quando si visualizzano profili dai commenti.&lt;/p>
&lt;h3 id="zeus-v0122">Zeus v0.12.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> ha rilasciato &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.2">v0.12.2&lt;/a> come rilascio stabile, consolidando i &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/#zeus-v0122-beta---fix-nwc">fix NWC coperti nelle edizioni precedenti&lt;/a>.&lt;/p>
&lt;h3 id="frostr-igloo-ios-testflight">Frostr Igloo iOS TestFlight&lt;/h3>
&lt;p>&lt;a href="https://github.com/FROSTR-ORG">Frostr&lt;/a> (&lt;a href="https://frostr.org/">frostr.org&lt;/a>) ha lanciato &lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo per iOS&lt;/a> su &lt;a href="https://testflight.apple.com/join/72hjQe3J">TestFlight&lt;/a>, espandendo la firma a soglia ai dispositivi Apple. Frostr usa firme FROST (Flexible Round-Optimized Schnorr Threshold) per dividere le chiavi nsec in quote distribuite tra dispositivi, abilitando firma k-di-n con tolleranza ai guasti. Gli utenti che si uniscono in &amp;ldquo;demo mode&amp;rdquo; partecipano a un esperimento live di firma a soglia 2-di-2, dimostrando le capacità di coordinazione in tempo reale del protocollo. Il rilascio iOS si unisce a &lt;a href="https://github.com/FROSTR-ORG/igloo-android">Igloo per Android&lt;/a> (v0.1.2), rilasciato a dicembre con supporto &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55 (Android Signer)&lt;/a> per richieste di firma cross-app. Entrambi i client mobile complementano &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo desktop&lt;/a> e l&amp;rsquo;estensione browser &lt;a href="https://github.com/FROSTR-ORG/frost2x">Frost2x&lt;/a>.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="damus-implementa-suggerimenti-relay-nip-19">Damus Implementa Suggerimenti Relay NIP-19&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> ha unito &lt;a href="https://github.com/damus-io/damus/pull/3477">PR #3477&lt;/a>, implementando il consumo di suggerimenti relay &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> per il recupero degli eventi. La funzionalità permette di visualizzare note su relay non nel pool configurato dell&amp;rsquo;utente estraendo suggerimenti da riferimenti &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10 (Thread di Risposta)&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-18/">NIP-18 (Repost)&lt;/a> e NIP-19. L&amp;rsquo;implementazione usa connessioni relay effimere con cleanup reference-counted, evitando l&amp;rsquo;espansione permanente del pool di relay.&lt;/p>
&lt;p>Fix aggiuntivi includono parsing di Lightning invoice (&lt;a href="https://github.com/damus-io/damus/pull/3566">PR #3566&lt;/a>), caricamento vista wallet (&lt;a href="https://github.com/damus-io/damus/pull/3554">PR #3554&lt;/a>), timing lista relay (&lt;a href="https://github.com/damus-io/damus/pull/3553">PR #3553&lt;/a>) e precaricamento profili per ridurre il &amp;ldquo;popping&amp;rdquo; visivo (&lt;a href="https://github.com/damus-io/damus/pull/3550">PR #3550&lt;/a>). Una &lt;a href="https://github.com/damus-io/damus/pull/3590">bozza PR #3590&lt;/a> mostra il supporto DM privati &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> in corso.&lt;/p>
&lt;h3 id="primal-android-rilascia-crittografia-nwc">Primal Android Rilascia Crittografia NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> ha avuto una settimana molto attiva con 18 PR unite focalizzate sull&amp;rsquo;infrastruttura wallet. L&amp;rsquo;app ora si integra con Spark, il protocollo Lightning self-custodial di Lightspark. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a> aggiunge supporto crittografia NWC, mentre &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/872">PR #872&lt;/a> invia eventi info NWC quando le connessioni si stabiliscono.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/870">PR #870&lt;/a> abilita l&amp;rsquo;export CSV per le transazioni wallet, utile per contabilità e fini fiscali. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/716">PR #716&lt;/a> aggiunge uno switcher account locale nell&amp;rsquo;Editor Note. Molteplici fix di ripristino wallet (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/876">PR #876&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/875">PR #875&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/873">PR #873&lt;/a>) affrontano casi limite per utenti con configurazioni wallet non-Spark.&lt;/p>
&lt;h3 id="marmot-typescript-sdk-aggiunge-cronologia-messaggi">Marmot TypeScript SDK Aggiunge Cronologia Messaggi&lt;/h3>
&lt;p>L&amp;rsquo;implementazione TypeScript del protocollo &lt;a href="https://github.com/marmot-protocol/marmot">Marmot&lt;/a> continua lo sviluppo. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR #38&lt;/a> di hzrd149 implementa la persistenza della cronologia messaggi con paginazione per l&amp;rsquo;applicazione chat di riferimento, mentre &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/39">PR #39&lt;/a> migliora l&amp;rsquo;ergonomia della libreria.&lt;/p>
&lt;p>Sul lato Rust, &lt;a href="https://github.com/marmot-protocol/mdk/pull/161">PR #161&lt;/a> implementa gestione dello stato riprovabile per preservare il contesto dei messaggi in caso di fallimento, e &lt;a href="https://github.com/marmot-protocol/mdk/pull/164">PR #164&lt;/a> passa a std::sync::Mutex per evitare panic tokio con SQLite. Il backend whitenoise-rs aggiunge &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/418">integrazione Amber&lt;/a> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/418">PR #418&lt;/a>), &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/467">upgrade a MDK e nostr-sdk 0.44&lt;/a> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/467">PR #467&lt;/a>), e introduce streaming notifiche in tempo reale tramite &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/460">PR #460&lt;/a> con tipi evento NewMessage e GroupInvite.&lt;/p>
&lt;h3 id="haven-aggiunge-refresh-periodico-wot">HAVEN Aggiunge Refresh Periodico WoT&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>, il relay personale, ha unito &lt;a href="https://github.com/bitvora/haven/pull/108">PR #108&lt;/a> aggiungendo refresh periodico &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a>. La funzionalità assicura che i punteggi di fiducia rimangano aggiornati mentre i grafi sociali degli utenti evolvono, migliorando l&amp;rsquo;accuratezza del filtraggio spam nel tempo.&lt;/p>
&lt;h3 id="nostr-tools">nostr-tools&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, la libreria JavaScript core, ha ricevuto molteplici miglioramenti questa settimana. I commit includono un &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/c2423f7f31853d97fef2e3d649204cec328e81d5">fix per il parsing degli hashtag dopo le newline&lt;/a> nelle menzioni &lt;a href="https://nostrcompass.org/it/topics/nip-27/">NIP-27 (Riferimenti nelle Note di Testo)&lt;/a>, &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/ab802c8dbe35d29feb732ba54e82a346c21c32e2">pruning automatico di oggetti relay rotti con tracking idle&lt;/a> per cleanup delle connessioni, &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/be9b91318fea6a0cb154b8734a15b50a4c1e7638">rimozione della coda messaggi&lt;/a> per ottimizzazione delle prestazioni single-threaded, e &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/05b1fba5113182ac0aa3c72d1f511cd956a7c139">export dei file sorgente&lt;/a> per migliori import TypeScript.&lt;/p>
&lt;h3 id="ndk">NDK&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> ha rilasciato &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/26abea24726ed844fdd091744ac9f768f1a530a0">beta.71&lt;/a> con un &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/33e759508bc656dc45d3d77c741edf581af323f3">fix per la riconnessione dopo cicli sleep/wake del dispositivo e gestione connessioni stale&lt;/a>, affrontando problemi di affidabilità per le applicazioni mobile.&lt;/p>
&lt;h3 id="notedeck">Notedeck&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, il client desktop del team Damus, ha una &lt;a href="https://github.com/damus-io/notedeck/pull/1279">PR aperta #1279&lt;/a> che aggiunge un visualizzatore &lt;a href="https://nostrcompass.org/it/topics/nip-34/">NIP-34 (Collaborazione Git)&lt;/a>. Questo permetterebbe di sfogliare repository git, patch e issue pubblicati sui relay Nostr direttamente nel client, rendendo Notedeck un potenziale front-end per workflow basati su ngit.&lt;/p>
&lt;h3 id="njump">njump&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/njump">njump&lt;/a>, il gateway web Nostr, ha aggiunto supporto per due tipi di evento &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51 (Liste)&lt;/a> tramite &lt;a href="https://github.com/fiatjaf/njump/pull/152">PR #152&lt;/a>. Il gateway ora renderizza Follow Sets kind:30000, che sono raggruppamenti categorizzati di utenti che i client possono visualizzare in contesti diversi, e Starter Packs kind:39089, che sono collezioni di profili curate progettate per la condivisione e il following di gruppo. Queste aggiunte permettono a njump di visualizzare liste curate dalla community quando gli utenti condividono link nevent.&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, il client Android, ha corretto un bug che impediva la condivisione video dalla vista player (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1695">PR #1695&lt;/a>). L&amp;rsquo;opzione &amp;ldquo;Condividi video&amp;rdquo; non appariva perché il parametro content non veniva passato al componente pulsanti di controllo. Gli utenti possono ora condividere contenuti video Nostr ad altre app direttamente dal player. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1693">PR #1693&lt;/a> corregge crash di deserializzazione Jackson JSON che si verificavano durante il parsing di certi eventi malformati.&lt;/p>
&lt;h3 id="jumble">Jumble&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, il client web focalizzato sul browsing dei feed relay, ha aggiunto upload di file audio tramite clipboard in &lt;a href="https://github.com/CodyTseng/jumble/pull/743">PR #743&lt;/a>. Gli utenti possono ora incollare file audio direttamente nell&amp;rsquo;editor post, che li carica sui media server configurati e incorpora l&amp;rsquo;URL nella nota. La funzionalità rispecchia la funzionalità esistente di incolla immagini.&lt;/p>
&lt;h3 id="flotilla">Flotilla&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/flotilla">Flotilla&lt;/a>, il client community &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29 (Gruppi Basati su Relay)&lt;/a> di hodlbod, ha rilasciato notifiche tramite &lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a>. L&amp;rsquo;aggiornamento rifà il sistema di alert da polling basato su anchor a notifiche pull locali per web e notifiche push per mobile. L&amp;rsquo;architettura implementa lo standard proposto NIP-9a (vedi &lt;a href="https://github.com/nostr-protocol/nips/pull/2194">PR #2194&lt;/a> sotto), dove gli utenti registrano callback webhook con i relay e ricevono payload evento crittografati quando i filtri corrispondono.&lt;/p>
&lt;h3 id="formstr">Formstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;applicazione form nativa Nostr, ha aggiunto import form e supporto form crittografati in &lt;a href="https://github.com/abh3po/nostr-forms/pull/422">PR #422&lt;/a>. Gli utenti possono ora importare form esistenti tramite un link di risposta o altre istanze Formstr. La funzionalità di crittografia permette ai creatori di form di restringere le risposte in modo che solo i destinatari designati possano leggere le sottomissioni, utile per sondaggi che raccolgono informazioni sensibili.&lt;/p>
&lt;h3 id="pollerama">Pollerama&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-polls">Pollerama&lt;/a> (&lt;a href="https://pollerama.fun">pollerama.fun&lt;/a>), costruito su &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, ha aggiunto condivisione DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> per i sondaggi tramite &lt;a href="https://github.com/abh3po/nostr-polls/pull/141">PR #141&lt;/a> e &lt;a href="https://github.com/abh3po/nostr-polls/pull/142">PR #142&lt;/a>. Gli utenti possono ora condividere sondaggi direttamente ai contatti attraverso messaggi diretti crittografati.&lt;/p>
&lt;h3 id="nostrability-schemata">Nostrability Schemata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/schemata">Nostrability schemata&lt;/a>, la collezione di schema di verifica JSON per eventi Nostr, ha aggiunto copertura &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a> tramite &lt;a href="https://github.com/nostrability/schemata/pull/59">PR #59&lt;/a>. L&amp;rsquo;aggiornamento include schema per eventi kind 13 (seal) e kind 1059 (gift wrap), complementando la copertura schema &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> esistente.&lt;/p>
&lt;h3 id="vector">Vector&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, il messenger desktop privacy-focused che usa &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>, &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> per crittografia zero-metadata, ha unito &lt;a href="https://github.com/VectorPrivacy/Vector/pull/39">PR #39&lt;/a> introducendo ottimizzazioni di prestazioni accelerate SIMD. La codifica hex gira 65x più veloce, la generazione preview immagini fino a 38x più veloce, e le ricerche messaggi 184x più veloci tramite indicizzazione binary search. La PR aggiunge intrinsics ARM64 NEON per Apple Silicon e x86_64 AVX2/SSE2 con rilevamento runtime per Windows e Linux. L&amp;rsquo;uso di memoria è calato con struct messaggi ridotte da 472 a 128 byte e storage npub tagliato del 99.6% attraverso interning.&lt;/p>
&lt;p>Vector v0.3.0 (Dicembre 2025) ha integrato &lt;a href="https://github.com/marmot-protocol/mdk">MDK (Marmot Development Kit)&lt;/a> per messaggistica di gruppo basata su protocollo MLS, portando gruppi crittografati end-to-end con forward secrecy al client. La condivisione file MIP-04 ora gestisce attachment imeta per gruppi MLS, progettata per interoperabilità con &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/#marmot-protocol-updates">White Noise&lt;/a>. Il rilascio ha anche introdotto una piattaforma Mini Apps con giochi multiplayer P2P basati su WebXDC, un app store decentralizzato chiamato The Nexus, integrazione wallet PIVX per pagamenti in-app, editing messaggi con tracking completo della cronologia e riduzione memoria 4x durante gli upload di immagini.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1913">NIP-47: Supporto Hold Invoice&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a> ora supporta hold invoice, abilitando workflow di pagamento avanzati dove i riceventi devono esplicitamente settlare o cancellare i pagamenti. La PR aggiunge tre nuovi metodi RPC: &lt;code>make_hold_invoice&lt;/code> crea un hold invoice usando preimage e payment hash pre-generati, &lt;code>settle_hold_invoice&lt;/code> reclama il pagamento fornendo la preimage originale, e &lt;code>cancel_hold_invoice&lt;/code> rifiuta il pagamento usando il suo payment hash. Una nuova notifica &lt;code>hold_invoice_accepted&lt;/code> scatta quando un pagante blocca il pagamento. Questo abilita casi d&amp;rsquo;uso come pay-to-unlock content, sistemi escrow marketplace e payment gating. Le implementazioni sono già in corso in &lt;a href="https://github.com/getAlby/hub/pull/1298">Alby Hub&lt;/a>, &lt;a href="https://github.com/getAlby/js-sdk/pull/382">Alby JS-SDK&lt;/a> e &lt;a href="https://github.com/relaystr/ndk/pull/147">dart NDK&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2208">NIP-05: Requisito Minuscole&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/it/topics/nip-05/">NIP-05 (Verifica del Dominio)&lt;/a> ora richiede esplicitamente minuscole sia per le chiavi pubbliche esadecimali che per i nomi locali nel file &lt;code>nostr.json&lt;/code>. Questo era implicito nella spec ma non dichiarato, causando problemi di interoperabilità quando alcune implementazioni usavano case misto mentre altre normalizzavano a minuscole. I client che validano identificatori NIP-05 dovrebbero ora rifiutare qualsiasi risposta &lt;code>nostr.json&lt;/code> contenente caratteri maiuscoli in chiavi o nomi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2205">NIP-73: Codici Paese&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/it/topics/nip-73/">NIP-73 (Geotag)&lt;/a> ora supporta codici paese ISO 3166 come alternativa ai geohash. Gli eventi possono includere tag &lt;code>[&amp;quot;g&amp;quot;, &amp;quot;US&amp;quot;, &amp;quot;countryCode&amp;quot;]&lt;/code> per indicare posizione a livello paese senza richiedere coordinate precise. Questo abilita filtraggio e scoperta contenuti basati sul paese per applicazioni dove la posizione esatta è non necessaria o indesiderata. La PR ha anche aggiunto un esempio geohash mancante alla documentazione spec.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1336">NIP-82: Applicazioni Software&lt;/a>&lt;/strong> - franzap ha annunciato un importante aggiornamento a questa specifica bozza, che definisce come le applicazioni software vengono distribuite via Nostr usando eventi release kind 30063. L&amp;rsquo;aggiornamento ora copre approssimativamente il 98% delle piattaforme dispositivo globalmente, incluso macOS, Linux, Windows, FreeBSD, ambienti WASM, estensioni VS Code, estensioni Chrome e Web Bundles/PWA. Il team si sta concentrando poi su Android, PWA e supporto iOS, invitando gli sviluppatori a convergere su questo standard condiviso. Zapstore pianifica di migrare al nuovo formato nelle prossime settimane.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2211">NIP-74: Podcast&lt;/a>&lt;/strong> - Definisce eventi addressable per show podcast (kind 30074) ed episodi (kind 30075). Gli show includono metadati come titolo, descrizione, categorie e immagini copertina. Gli episodi referenziano il loro show genitore e includono URL enclosure, durate e marcatori capitoli. La spec si integra con gli standard metadati Podcasting 2.0 e include tag value per monetizzazione V4V (value-for-value) via Lightning. Piattaforme come &lt;a href="https://transmit.fm">transmit.fm&lt;/a>, una piattaforma di pubblicazione podcast nativa Nostr, possono pubblicare direttamente sui relay usando questo formato, permettendo ai podcaster di distribuire contenuti senza intermediari.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2207">NIP-FR: Note Solo-Amici&lt;/a>&lt;/strong> - Propone un meccanismo per pubblicare note visibili solo a una lista di amici definita dall&amp;rsquo;utente usando una chiave simmetrica condivisa chiamata ViewKey. L&amp;rsquo;autore crittografa le note (kind 2044) con il ViewKey usando NIP-44. Il ViewKey stesso viene distribuito a ciascun amico una sola volta tramite &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a>. Gli amici che possiedono il ViewKey possono decifrare e leggere le note; tutti gli altri vedono solo testo cifrato. Quando l&amp;rsquo;autore rimuove un amico, il ViewKey viene ruotato: una nuova chiave viene generata e ridistribuita a tutti gli amici rimanenti tramite gift wrap, assicurando che l&amp;rsquo;amico rimosso perda l&amp;rsquo;accesso ai post futuri. Questo approccio separa la crittografia del contenuto (simmetrica, efficiente) dalla distribuzione delle chiavi (asimmetrica, per-amico), mantenendo il protocollo leggero abilitando una funzionalità privacy frequentemente richiesta.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/1a451c1581888215ae5c311d36c8a7c7d9e5e81f1f4010de4afaf7fcbd553e90">NIP-DB: Interfaccia Database Eventi Nostr nel Browser&lt;/a>&lt;/strong> (&lt;a href="https://github.com/hzrd149/nostr-bucket/blob/master/nip.md">spec&lt;/a>) - Propone un&amp;rsquo;interfaccia standard &lt;code>window.nostrdb&lt;/code> per estensioni browser che forniscono storage eventi Nostr locale. L&amp;rsquo;API include metodi per aggiungere eventi, query per ID o filtro, conteggio match e sottoscrizione agli aggiornamenti. Le applicazioni web possono usare questa interfaccia per leggere da eventi cached localmente senza fare richieste relay, riducendo banda e latenza. L&amp;rsquo;estensione browser &lt;a href="https://github.com/hzrd149/nostr-bucket">nostr-bucket&lt;/a> di hzrd149 fornisce un&amp;rsquo;implementazione di riferimento, iniettando l&amp;rsquo;interfaccia in tutti i tab del browser. Una &lt;a href="https://github.com/hzrd149/window.nostrdb.js">libreria polyfill&lt;/a> complementare implementa la stessa API usando IndexedDB per ambienti senza l&amp;rsquo;estensione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/237667820943d1c8bbe7ab7732623ae51b337f177776ece439d4a8be84708eb7">TRUSTed Filters&lt;/a>&lt;/strong> - Una suite di cinque proposte correlate per la curation decentralizzata dei contenuti, costruendo sulla &lt;a href="https://github.com/nostr-protocol/nips/pull/1534">PR #1534 Trusted Assertions unita&lt;/a> di vitorpamplona. La specifica core introduce eventi kind 17570 per dichiarare Trust Provider Preferences, permettendo agli utenti di specificare quali servizi fidano per filtraggio e ranking degli eventi. I trust provider pubblicano assertions (kind 37571), statistiche (kind 37572) e rankings (kind 37573) a cui i client possono sottoscriversi. Il sistema usa un&amp;rsquo;architettura plugin con tag W/w per specificare tipi di filtro e trasformazioni. Questo permette a operazioni computazionalmente costose come spam detection, reputation scoring e content ranking di girare su infrastruttura dedicata mentre gli utenti mantengono controllo su quali provider fidano. La suite include spec separate per filter presets, user rankings, trusted events e definizioni plugin.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2194">NIP-9a: Notifiche Push&lt;/a>&lt;/strong> - hodlbod propone uno standard per notifiche push basate su relay usando eventi registrazione kind 30390. Gli utenti creano una registrazione contenente filtri per eventi che vogliono ricevere e un URL callback webhook. La registrazione è crittografata alla pubkey del relay (dal suo campo &lt;code>self&lt;/code> NIP-11). Quando si verificano eventi corrispondenti, i relay POSTano al callback con l&amp;rsquo;ID evento (plaintext per deduplicazione) e l&amp;rsquo;evento stesso (crittografato NIP-44 all&amp;rsquo;utente). Questa architettura permette ai relay di pushare notifiche proteggendo il contenuto degli eventi dai server push intermediari. La &lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a> di Flotilla implementa questo standard.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/SigmaEnterprise/Catallax">Catallax&lt;/a>&lt;/strong> - Propone un protocollo decentralizzato per lavoro a contratto con escrow usando eventi kind 33400. Il sistema definisce tre ruoli: gli arbiter annunciano disponibilità e termini, i patron creano task finanziati con Bitcoin in escrow, e i free agent completano lavoro per reclamare il pagamento. Gli arbiter risolvono le dispute quando necessario. Il protocollo abilita coordinazione di lavoro freelance trustless dove i fondi sono bloccati fino a che i deliverable sono accettati o l&amp;rsquo;arbitrato conclude.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-47-nostr-wallet-connect">NIP Deep Dive: NIP-47 (Nostr Wallet Connect)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> definisce Nostr Wallet Connect (NWC), un protocollo per il controllo remoto di wallet Lightning usando Nostr come layer di comunicazione. Con l&amp;rsquo;aggiunta del supporto hold invoice di questa settimana, NWC ora copre l&amp;rsquo;intera gamma di operazioni Lightning.&lt;/p>
&lt;p>Il protocollo funziona attraverso uno scambio semplice. Un&amp;rsquo;applicazione wallet pubblica un evento &amp;ldquo;wallet info&amp;rdquo; (kind 13194) che descrive le sue capacità. Le applicazioni client inviano richieste crittografate (kind 23194) chiedendo al wallet di eseguire operazioni come pagare invoice, creare invoice o controllare saldi. Il wallet risponde con risultati crittografati (kind 23195).&lt;/p>
&lt;p>NWC usa crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> tra client e wallet, con una keypair dedicata per le operazioni wallet, mantenendola separata dall&amp;rsquo;identità principale dell&amp;rsquo;utente. Questa separazione significa che compromettere una connessione NWC non espone l&amp;rsquo;identità Nostr dell&amp;rsquo;utente.&lt;/p>
&lt;p>&lt;strong>Metodi Supportati:&lt;/strong>&lt;/p>
&lt;p>La spec definisce metodi per operazioni Lightning core: &lt;code>pay_invoice&lt;/code> invia pagamenti, &lt;code>make_invoice&lt;/code> genera invoice per ricevere, &lt;code>lookup_invoice&lt;/code> controlla lo stato del pagamento, &lt;code>get_balance&lt;/code> restituisce il saldo wallet, e &lt;code>list_transactions&lt;/code> fornisce la cronologia pagamenti. I nuovi &lt;code>pay_keysend&lt;/code> appena uniti abilitano pagamenti senza invoice, e &lt;code>hold_invoice&lt;/code> supporta pagamenti condizionali.&lt;/p>
&lt;p>&lt;strong>Eventi di Esempio:&lt;/strong>&lt;/p>
&lt;p>Il servizio wallet pubblica un evento info (kind 13194) pubblicizzando le sue capacità:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13194&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey servizio wallet&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;pay_invoice get_balance make_invoice lookup_invoice list_transactions notifications&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip44_v2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;notifications&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;payment_received payment_sent&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;timestamp unix&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;hash evento&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;firma servizio wallet&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Un client invia una richiesta crittografata (kind 23194) per pagare un invoice:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">23194&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey effimera client dall&amp;#39;URI connection secret&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;NIP-44 crittografato: {\&amp;#34;method\&amp;#34;: \&amp;#34;pay_invoice\&amp;#34;, \&amp;#34;params\&amp;#34;: {\&amp;#34;invoice\&amp;#34;: \&amp;#34;lnbc50n1...\&amp;#34;}}&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey servizio wallet&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip44_v2&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;timestamp unix&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;hash evento&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;firma chiave effimera client&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il servizio wallet risponde (kind 23195) con il risultato del pagamento:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">23195&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey servizio wallet&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;NIP-44 crittografato: {\&amp;#34;result_type\&amp;#34;: \&amp;#34;pay_invoice\&amp;#34;, \&amp;#34;result\&amp;#34;: {\&amp;#34;preimage\&amp;#34;: \&amp;#34;...\&amp;#34;}, \&amp;#34;error\&amp;#34;: null}&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;pubkey effimera client&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;id evento richiesta&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;timestamp unix&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;hash evento&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;firma servizio wallet&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il tag &lt;code>e&lt;/code> nella risposta referenzia la richiesta originale, permettendo ai client di abbinare le risposte alle loro richieste.&lt;/p>
&lt;p>&lt;strong>Hold Invoice:&lt;/strong>&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/1913">PR #1913&lt;/a> di questa settimana ha aggiunto supporto hold invoice, abilitando pagamenti stile escrow. A differenza degli invoice standard dove il ricevente reclama immediatamente il pagamento rilasciando la preimage, gli hold invoice permettono al ricevente di differire questa decisione. Quando un pagante invia a un hold invoice, i fondi si bloccano lungo il percorso di pagamento. Il ricevente poi sceglie se settlare (rilasciare la preimage e reclamare i fondi) o cancellare (rifiutare il pagamento, restituendo i fondi al pagante). Se nessuna azione avviene, il pagamento va in timeout e i fondi ritornano automaticamente. La PR aggiunge tre metodi NWC: &lt;code>make_hold_invoice&lt;/code>, &lt;code>settle_hold_invoice&lt;/code> e &lt;code>cancel_hold_invoice&lt;/code>, più una notifica &lt;code>hold_invoice_accepted&lt;/code>. Questo meccanismo alimenta applicazioni come l&amp;rsquo;escrow rideshare di Ridestr e la risoluzione dispute marketplace.&lt;/p>
&lt;p>&lt;strong>Implementazioni Attuali:&lt;/strong>&lt;/p>
&lt;p>I wallet principali supportano NWC: Zeus, Alby e Primal (dalla &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a> di questa settimana) tutti implementano supporto lato wallet. Sul lato client, Damus, Amethyst e la maggior parte dei client Nostr principali possono connettersi a wallet NWC per zapping e pagamenti.&lt;/p>
&lt;p>Il protocollo abilita una separazione delle responsabilità: gli utenti possono far girare il loro wallet su un dispositivo mentre interagiscono con Nostr da un altro, con i relay Nostr che servono come canale di comunicazione. Questa architettura significa che i client mobile non devono detenere fondi direttamente, migliorando la sicurezza mantenendo l&amp;rsquo;infrastruttura wallet separata dai client social.&lt;/p>
&lt;p>&lt;strong>Considerazioni sulla Sicurezza:&lt;/strong>&lt;/p>
&lt;p>Le connessioni NWC dovrebbero essere trattate come sensibili. Mentre la crittografia protegge il contenuto dei messaggi, la pubkey wallet e il connection secret devono essere custoditi. Le applicazioni dovrebbero permettere agli utenti di revocare connessioni e impostare limiti di spesa. Il protocollo supporta restrizioni di capacità, così i wallet possono limitare quali operazioni una particolare connessione può eseguire.&lt;/p>
&lt;h2 id="nip-deep-dive-nip-59-gift-wrap">NIP Deep Dive: NIP-59 (Gift Wrap)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> definisce un protocollo per incapsulare qualsiasi evento Nostr in più livelli di crittografia, nascondendo l&amp;rsquo;identità del mittente dai relay e dagli osservatori. Le proposte di questa settimana per note solo-amici (NIP-FR) e notifiche push (NIP-9a) entrambe si basano sul gift wrapping, rendendolo una primitiva privacy fondamentale da comprendere.&lt;/p>
&lt;p>&lt;strong>I Tre Livelli:&lt;/strong>&lt;/p>
&lt;p>Il gift wrapping usa tre strutture annidate:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Rumor&lt;/strong> (evento non firmato): Il contenuto originale come evento Nostr senza firma. Il rumor non può essere inviato direttamente ai relay perché i relay rifiutano eventi non firmati.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Seal&lt;/strong> (kind 13): Il rumor è crittografato usando &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> e posto in un evento kind 13. Il seal E&amp;rsquo; firmato dalla chiave reale dell&amp;rsquo;autore. Questa è la prova crittografica di paternità.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gift Wrap&lt;/strong> (kind 1059): Il seal è crittografato e posto in un evento kind 1059 firmato da una keypair casuale, usa-e-getta. Il gift wrap include un tag &lt;code>p&lt;/code> per il routing al destinatario.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Un Malinteso Comune: La Negabilità&lt;/strong>&lt;/p>
&lt;p>La spec menziona che i rumor non firmati forniscono &amp;ldquo;negabilità&amp;rdquo;, ma questo è fuorviante. Il livello seal E&amp;rsquo; firmato dal vero autore. Quando il destinatario decritta il gift wrap e poi il seal, ha prova crittografica di chi ha inviato il messaggio. Il destinatario potrebbe persino costruire una prova zero-knowledge rivelando l&amp;rsquo;identità del mittente senza esporre la propria chiave privata.&lt;/p>
&lt;p>Quello che il gift wrap in realtà fornisce è &lt;strong>privacy del mittente dagli osservatori&lt;/strong>: i relay e le terze parti non possono determinare chi ha inviato il messaggio perché vedono solo il gift wrap firmato da una chiave casuale. Ma il destinatario sa sempre, e può provarlo.&lt;/p>
&lt;p>&lt;strong>Eventi di Esempio:&lt;/strong>&lt;/p>
&lt;p>Ecco la struttura completa a tre livelli dalla spec (invio &amp;ldquo;Vai alla festa stasera?&amp;rdquo;):&lt;/p>
&lt;p>Il rumor (non firmato, non può essere pubblicato sui relay):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1691518405&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Are you going to the party tonight?&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;611df01bfcf85c26ae65453b772d8f1dfd25c264621c0277e1fc1518686faef9&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;9dd003c6d3b73b74a85a9ab099469ce251653a7af76f523671ab828acd2a0ef9&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il seal (kind 13, firmato dal vero autore, contiene rumor crittografato):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;611df01bfcf85c26ae65453b772d8f1dfd25c264621c0277e1fc1518686faef9&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;AqBCdwoS7/tPK+QGkPCadJTn8FxGkd24iApo3BR9/M0uw6n4RFAFSPAKKMgkzVMo...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1703015180&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;28a87d7c074d94a58e9e89bb3e9e4e813e2189f285d797b1c56069d36f59eaa7&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;02fc3facf6621196c32912b1ef53bac8f8bfe9db51c0e7102c073103586b0d29...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il gift wrap (kind 1059, firmato da chiave effimera casuale, contiene seal crittografato):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1059&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;18b1a75918f1f2c90c23da616bce317d36e348bcf5f7ba55e75949319210c87c&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;AhC3Qj/QsKJFWuf6xroiYip+2yK95qPwJjVvFujhzSguJWb/6TlPpBW0CGFwfuf...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1703021488&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;166bf3765ebd1fc55decfe395beff2ea3b2a4e0a8946e7eb578512b555737c99&amp;#34;&lt;/span>]],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5c005f3ccf01950aa8d131203248544fb1e41a0d698e846bd419cec3890903ac&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;35fabdae4634eb630880a1896a886e40fd6ea8a60958e30b89b33a93e6235df7...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Nota: la &lt;code>pubkey&lt;/code> del seal è il vero autore (&lt;code>611df01...&lt;/code>), mentre la &lt;code>pubkey&lt;/code> del gift wrap è una chiave casuale usa-e-getta (&lt;code>18b1a75...&lt;/code>). I relay vedono solo il gift wrap, quindi non possono attribuire il messaggio al vero autore.&lt;/p>
&lt;p>&lt;strong>Cosa Protegge Ogni Livello:&lt;/strong>&lt;/p>
&lt;p>Il rumor non è firmato e non può essere pubblicato direttamente sui relay. Il seal è firmato dal vero autore e prova la paternità al destinatario. Il gift wrap è firmato da una chiave casuale usa-e-getta, nascondendo il vero autore dai relay e dagli osservatori. Solo il destinatario può decrittare attraverso entrambi i livelli per raggiungere il contenuto originale e verificare la firma dell&amp;rsquo;autore sul seal.&lt;/p>
&lt;p>&lt;strong>Applicazioni Attuali:&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17 (Messaggi Diretti Privati)&lt;/a> usa gift wrap per DM crittografati, sostituendo il vecchio schema NIP-04. Il proposto NIP-FR (note solo per amici) usa il gift wrapping per distribuire ViewKeys agli amici, che poi decifrano le note cifrate con quelle chiavi. NIP-9a (notifiche push) critta i payload di notifica usando principi gift wrap.&lt;/p>
&lt;p>&lt;strong>Protezione dei Metadati:&lt;/strong>&lt;/p>
&lt;p>I timestamp dovrebbero essere randomizzati per contrastare l&amp;rsquo;analisi temporale. I relay dovrebbero richiedere AUTH prima di servire eventi kind 1059 e servirli solo al destinatario marcato. Quando si invia a più destinatari, creare gift wrap separati per ciascuno.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa? Hai notizie da condividere? Vuoi che copriamo il tuo progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM NIP-17&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #7</title><link>https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-01-28-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Ridestr porta il ridesharing decentralizzato su Nostr con pagamenti &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> e condivisione crittografata della posizione. Pomade introduce il recupero basato su email per i firmatari multisig. Damus implementa &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> per una sincronizzazione affidabile dei DM. L&amp;rsquo;app desktop di Amethyst aggiunge ricerca, segnalibri e zap. Amber v4.1.1 mostra i punteggi di fiducia dei relay. Marmot unisce MIP-03 e costruisce un&amp;rsquo;app di chat di riferimento in TypeScript. diVine aggiunge l&amp;rsquo;autenticazione QR &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e il supporto alle menzioni. Nuove proposte NIP affrontano la gestione delle community, la sincronizzazione basata su sequenze e l&amp;rsquo;archiviazione crittografata dei file. Diamo anche uno sguardo a cinque anni di gennaio di Nostr, tracciando l&amp;rsquo;evoluzione del protocollo da una manciata di primi utilizzatori nel 2021, attraverso l&amp;rsquo;esplosivo lancio di Damus sull&amp;rsquo;App Store nel 2023, fino all&amp;rsquo;ecosistema client in maturazione del 2025.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Ridestr porta il ridesharing decentralizzato su Nostr con pagamenti &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> e condivisione crittografata della posizione. Pomade introduce il recupero basato su email per i firmatari multisig. Damus implementa &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> per una sincronizzazione affidabile dei DM. L&amp;rsquo;app desktop di Amethyst aggiunge ricerca, segnalibri e zap. Amber v4.1.1 mostra i punteggi di fiducia dei relay. Marmot unisce MIP-03 e costruisce un&amp;rsquo;app di chat di riferimento in TypeScript. diVine aggiunge l&amp;rsquo;autenticazione QR &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e il supporto alle menzioni. Nuove proposte NIP affrontano la gestione delle community, la sincronizzazione basata su sequenze e l&amp;rsquo;archiviazione crittografata dei file. Diamo anche uno sguardo a cinque anni di gennaio di Nostr, tracciando l&amp;rsquo;evoluzione del protocollo da una manciata di primi utilizzatori nel 2021, attraverso l&amp;rsquo;esplosivo lancio di Damus sull&amp;rsquo;App Store nel 2023, fino all&amp;rsquo;ecosistema client in maturazione del 2025.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="ridestr-porta-il-ridesharing-decentralizzato-su-nostr">Ridestr Porta il Ridesharing Decentralizzato su Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> sta sviluppando un&amp;rsquo;applicazione di ridesharing peer-to-peer costruita interamente su Nostr, che consente transazioni dirette tra autisti e passeggeri con pagamenti in Bitcoin e &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a>. Il protocollo utilizza tipi di evento personalizzati (30173, 3173-3175, 30180/30181) per coordinare le corse mantenendo la privacy attraverso la divulgazione progressiva della posizione e la crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>.&lt;/p>
&lt;p>Il sistema funziona attraverso un flusso attentamente coreografato: gli autisti trasmettono la disponibilità usando posizioni codificate in geohash (precisione ~5km) tramite eventi kind 30173, i passeggeri richiedono corse con stime delle tariffe attraverso kind 3173, e i pagamenti sono protetti usando token escrow HTLC prima dell&amp;rsquo;inizio della corsa. La privacy della posizione è preservata attraverso la divulgazione progressiva, dove i dettagli del ritiro vengono rivelati solo quando gli autisti arrivano e le destinazioni sono condivise dopo la verifica del PIN. Tutta la comunicazione tra le parti utilizza la crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> per la privacy.&lt;/p>
&lt;p>Ridestr implementa la sicurezza dei pagamenti attraverso escrow HTLC con firme P2PK. Quando un passeggero accetta l&amp;rsquo;offerta di un autista, blocca i token &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> con un hash di pagamento che solo l&amp;rsquo;autista può reclamare dopo il completamento della corsa. Il protocollo attualmente opera con un&amp;rsquo;architettura single-mint, richiedendo che passeggeri e autisti utilizzino lo stesso mint &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a>. L&amp;rsquo;implementazione Android basata su Kotlin gestisce la verifica delle prove e il recupero delle prove obsolete attraverso i controlli di stato NUT-07.&lt;/p>
&lt;p>Ridestr affronta sfide che la maggior parte delle applicazioni Nostr evita: coordinamento della posizione in tempo reale, escrow dei pagamenti con risoluzione delle dispute e sistemi di reputazione per interazioni nel mondo fisico. Il progetto è in beta e dimostra che il modello di eventi di Nostr può supportare marketplace di servizi peer-to-peer, non solo la condivisione di contenuti.&lt;/p>
&lt;h3 id="pomade-lancia-il-sistema-di-recupero-alpha-per-firmatari-multisig">Pomade Lancia il Sistema di Recupero Alpha per Firmatari Multisig&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a>, sviluppato da hodlbod, si basa sull&amp;rsquo;ecosistema &lt;a href="https://github.com/FROSTR-ORG">FROSTR&lt;/a> esistente per fornire un servizio di firma a soglia focalizzato sul recupero. Utilizzando le firme &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> (Flexible Round-Optimized Schnorr Threshold) tramite la libreria @frostr/bifrost, Pomade aggiunge flussi di recupero basati su email sopra la crittografia a soglia. Il sistema frammenta la chiave segreta di un utente usando Shamir Secret Sharing, distribuendo le quote tra più firmatari indipendenti con una soglia configurabile (2-di-3, 3-di-5, ecc.).&lt;/p>
&lt;p>Il protocollo opera interamente su Nostr usando un singolo tipo di evento (28350) con payload crittografati &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>. Durante la firma, il client richiede firme parziali da almeno &lt;code>threshold&lt;/code> firmatari, poi le aggrega in una firma Schnorr valida. Per la crittografia, i firmatari collaborano per derivare segreti condivisi via ECDH senza che nessuna singola parte apprenda la chiave completa.&lt;/p>
&lt;p>Il recupero funziona attraverso due metodi di autenticazione: basato su password (usando argon2id con la pubkey del firmatario come salt) o OTP via email. Per prevenire attacchi MITM durante il recupero OTP, ogni firmatario genera il proprio codice di verifica con un prefisso fornito dal client, richiedendo agli utenti di autenticarsi indipendentemente con ogni firmatario. Il protocollo richiede proof-of-work sugli eventi di registrazione (20+ bit secondo &lt;a href="https://nostrcompass.org/it/topics/nip-13/">NIP-13&lt;/a>) per prevenire lo spam.&lt;/p>
&lt;p>Il modello di fiducia è esplicito: se &lt;code>threshold&lt;/code> firmatari colludono, possono rubare la chiave. I provider email sono completamente fidati poiché possono intercettare gli OTP. Gli utenti non possono recuperare indipendentemente la loro chiave segreta completa; farlo richiede la cooperazione di &lt;code>threshold&lt;/code> firmatari. Il protocollo è progettato per l&amp;rsquo;onboarding di nuovi utenti non familiari con la gestione delle chiavi, con la raccomandazione esplicita che gli utenti migrino all&amp;rsquo;auto-custodia una volta a loro agio. Pomade avverte di potenziali &amp;ldquo;perdite di chiavi, furti, denial of service o fughe di metadati&amp;rdquo; dato il suo stato alpha non auditato.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="damus-implementa-negentropy-per-la-sincronizzazione-affidabile-dei-dm">Damus Implementa Negentropy per la Sincronizzazione Affidabile dei DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/tree/v1.13">Damus v1.13&lt;/a> implementa l&amp;rsquo;implementazione negentropy &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#damus-ios-client---open-prs">che abbiamo presentato come PR aperta la settimana scorsa&lt;/a>. &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a> aggiunge il supporto base &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> al livello di rete, abilitando la riconciliazione degli insiemi con i relay che supportano il protocollo. Una &lt;a href="https://github.com/damus-io/damus/pull/3547">PR #3547&lt;/a> complementare aggiunge la sincronizzazione DM pull-to-refresh che usa negentropy per recuperare i messaggi mancanti quando le sottoscrizioni REQ standard falliscono.&lt;/p>
&lt;p>L&amp;rsquo;implementazione segue un approccio conservativo: il caricamento normale dei DM continua invariato, con &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> disponibile come meccanismo di recupero quando gli utenti aggiornano manualmente. I test automatizzati dimostrano la correzione generando un DM con un timestamp vecchio che le query standard mancherebbero, poi usando la sincronizzazione &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> per recuperarlo con successo. Mentre il supporto &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> richiede relay compatibili, l&amp;rsquo;implementazione gestisce elegantemente ambienti con relay misti usando il protocollo dove disponibile.&lt;/p>
&lt;h3 id="amber-v411---punteggi-di-fiducia-dei-relay">Amber v4.1.1 - Punteggi di Fiducia dei Relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.1">Amber v4.1.1&lt;/a> implementa la visualizzazione dei punteggi di fiducia dei relay (&lt;a href="https://github.com/greenart7c3/Amber/pull/289">PR #289&lt;/a>), implementando i concetti di valutazione dei relay discussi nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#nip-updates">copertura dei Trusted Relay Assertions della settimana scorsa&lt;/a>. I punteggi di fiducia ora appaiono nella pagina Relays e per le richieste di connessione NostrConnect, aiutando gli utenti a valutare l&amp;rsquo;affidabilità dei relay prima di autorizzare le connessioni. Il rilascio include anche una UI ridisegnata per login/eventi/permessi e supporto per il metodo &lt;code>switch_relays&lt;/code>. I miglioramenti delle prestazioni memorizzano in cache le operazioni del keystore, affrontando le segnalazioni di tempi di caricamento di oltre 20 secondi su dispositivi più vecchi.&lt;/p>
&lt;h3 id="nak-v0182---integrazione-mcp">nak v0.18.2 - Integrazione MCP&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> di fiatjaf (Nostr Army Knife) &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.2">v0.18.2&lt;/a> aggiunge il supporto &lt;a href="https://nostrify.dev/mcp">Model Context Protocol&lt;/a> tramite &lt;code>nak mcp&lt;/code>, permettendo agli agenti AI di cercare persone su Nostr, pubblicare note, menzionare utenti e leggere contenuti usando il modello outbox. Il rilascio introduce anche un &lt;a href="https://github.com/fiatjaf/nak/blob/master/install.sh">installer con una sola riga&lt;/a> (&lt;code>curl -sSL https://raw.githubusercontent.com/fiatjaf/nak/master/install.sh | sh&lt;/code>) che scarica binari precompilati, eliminando il requisito della toolchain Go per gli utenti finali. La modalità Bunker ora supporta Unix socket e &lt;code>switch_relays&lt;/code>.&lt;/p>
&lt;h3 id="zeus-v0122-beta---fix-nwc">Zeus v0.12.2 Beta - Fix NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus/releases">Zeus v0.12.2-beta1&lt;/a> implementa multiple correzioni NWC che affrontano i problemi coperti nella &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#zeus-lightning-wallet-with-nostr-wallet-connect">copertura di Zeus della settimana scorsa&lt;/a>.&lt;/p>
&lt;h2 id="aggiornamenti-dei-progetti">Aggiornamenti dei Progetti&lt;/h2>
&lt;h3 id="amethyst-desktop---fase-2a-rilasciata">Amethyst Desktop - Fase 2A Rilasciata&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> ha rilasciato &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1676">la Fase 2A della sua app desktop&lt;/a>, aggiungendo Ricerca, Segnalibri, Zap, viste Thread e contenuti long-form (Letture) all&amp;rsquo;esperienza desktop. Una &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1683">PR #1683&lt;/a> complementare aggiunge feedback trasparente sulla trasmissione degli eventi così gli utenti ora vedono lo stato in tempo reale per-relay mentre i loro eventi si propagano attraverso la rete, rendendo più facile diagnosticare problemi di connettività.&lt;/p>
&lt;h3 id="progressi-di-notedeck-app-calendario-e-rifinitura-ux">Progressi di Notedeck: App Calendario e Rifinitura UX&lt;/h3>
&lt;p>L&amp;rsquo;app desktop &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> del team Damus ha unito il comportamento di auto-nascondimento della toolbar (&lt;a href="https://github.com/damus-io/notedeck/pull/1268">PR #1268&lt;/a>) che risponde alla velocità di scorrimento per più spazio sullo schermo nelle viste mobile. Una &lt;a href="https://github.com/damus-io/notedeck/pull/1271">bozza PR #1271&lt;/a> aggiunge un&amp;rsquo;app Calendario &lt;a href="https://nostrcompass.org/it/topics/nip-52/">NIP-52&lt;/a> completa con viste mese/settimana/giorno/agenda, supporto RSVP e commenti &lt;a href="https://nostrcompass.org/it/topics/nip-22/">NIP-22&lt;/a> sugli eventi del calendario, attualmente con feature-flag per i test.&lt;/p>
&lt;h3 id="jumble-aggiunge-modalità-community">Jumble Aggiunge Modalità Community&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, il client web focalizzato sui relay, ha aggiunto &lt;a href="https://github.com/CodyTseng/jumble/pull/738">modalità community&lt;/a> e supporto per &lt;a href="https://github.com/CodyTseng/jumble/pull/736">preset di set di relay tramite variabili d&amp;rsquo;ambiente&lt;/a>, rendendo più facile distribuire istanze tematiche come &lt;a href="https://nostr.moe/">nostr.moe&lt;/a>.&lt;/p>
&lt;h3 id="dashboard-ordini-di-shopstr">Dashboard Ordini di Shopstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> ha sostituito la sua gestione ordini basata su chat con una &lt;a href="https://github.com/shopstr-eng/shopstr/pull/219">Dashboard Ordini&lt;/a> dedicata. La nuova interfaccia fornisce una vista centralizzata per i merchant per tracciare lo stato degli ordini, segnare i messaggi come letti e gestire l&amp;rsquo;evasione senza scorrere le conversazioni chat. L&amp;rsquo;aggiornamento depreca il caching IndexedDB in favore delle API server-side per lo stato degli ordini e rivede come i DM degli ordini vengono taggati per un miglior filtraggio.&lt;/p>
&lt;h3 id="formstr-aggiunge-domande-a-griglia">Formstr Aggiunge Domande a Griglia&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;app form nativa Nostr, ha aggiunto &lt;a href="https://github.com/abh3po/nostr-forms/pull/419">domande a griglia&lt;/a> e &lt;a href="https://github.com/abh3po/nostr-forms/pull/410">riscritto il suo SDK&lt;/a> con supporto per embed. Una [correzione per firmatari non-&lt;a href="https://nostrcompass.org/it/topics/nip-07/">NIP-07&lt;/a>](&lt;a href="https://github.com/abh3po/nostr-forms/pull/418">https://github.com/abh3po/nostr-forms/pull/418&lt;/a>) ha risolto problemi per utenti con bunker o firmatari locali che tentavano di inviare form con la loro identità.&lt;/p>
&lt;h3 id="nostr-tools-aggiorna-le-dipendenze-crittografiche">nostr-tools Aggiorna le Dipendenze Crittografiche&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, la libreria JavaScript core, &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/520">ha aggiornato a @noble/curves v2.0.1&lt;/a>, affrontando modifiche API breaking attraverso 27 file e adottando le ultime librerie noble auditate. fiatjaf ha anche aggiunto il supporto &lt;code>switch_relays&lt;/code> a &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>, permettendo ai client bunker di cambiare dinamicamente le connessioni ai relay.&lt;/p>
&lt;h3 id="zeus-lavora-sulle-recensioni-mint-nip-87">Zeus Lavora sulle Recensioni Mint NIP-87&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> ha una [PR aperta per le recensioni mint &lt;a href="https://nostrcompass.org/it/topics/nip-87/">NIP-87&lt;/a>](&lt;a href="https://github.com/ZeusLN/zeus/pull/3576%29">https://github.com/ZeusLN/zeus/pull/3576)&lt;/a>, permettendo agli utenti di scoprire e recensire i mint &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> filtrati dai seguiti Nostr. Le recensioni includono valutazioni a stelle e possono essere inviate anonimamente o con l&amp;rsquo;nsec dell&amp;rsquo;utente.&lt;/p>
&lt;h3 id="camelus-implementa-supporto-dm-completo">Camelus Implementa Supporto DM Completo&lt;/h3>
&lt;p>&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>, un client Android basato su Flutter costruito con Dart NDK per prestazioni mobile efficienti in termini di batteria, ha aggiunto messaggistica diretta completa con oltre 20 commit questa settimana. L&amp;rsquo;aggiornamento include categorie chat, date dei messaggi, UI di invio ottimistica, funzionalità nota-a-se-stessi e gestione corretta dei relay DM.&lt;/p>
&lt;h3 id="aggiornamenti-del-protocollo-marmot">Aggiornamenti del Protocollo Marmot&lt;/h3>
&lt;p>La risoluzione deterministica dei commit MIP-03 &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#marmot-protocol-white-noise-encrypted-group-chat-library">che abbiamo coperto come PR aperta la settimana scorsa&lt;/a> è stata ora unita. &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">MDK PR #152&lt;/a> assicura che tutte le chat di gruppo basate su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> convergano sullo stesso stato quando più commit validi arrivano per la stessa epoca.&lt;/p>
&lt;p>Una &lt;a href="https://github.com/marmot-protocol/marmot/pull/28">PR spec #28&lt;/a> complementare aggiunge requisiti del ciclo di vita init_key che affrontano lacune dagli audit di implementazione: il materiale della chiave privata dai messaggi Welcome deve essere cancellato in modo sicuro dopo l&amp;rsquo;elaborazione (zeroizzazione, pulizia dello storage), e i nuovi membri devono eseguire auto-aggiornamenti entro 24 ore per la forward secrecy.&lt;/p>
&lt;p>L&amp;rsquo;SDK TypeScript (&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>) sta costruendo un&amp;rsquo;applicazione di chat di riferimento. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/37">PR #37&lt;/a> aggiunge creazione/lista gruppi, gestione key package con flussi di pubblicazione/trasmissione/cancellazione e inviti tramite codice QR. Una &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR aperta #38&lt;/a> di hzrd149 implementa la persistenza della cronologia messaggi con paginazione. Il backend whitenoise-rs ha unito 15 PR questa settimana incluso il supporto multi-lingua (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/455">PR #455&lt;/a>) e i riferimenti media MIP-04 v2 (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/450">PR #450&lt;/a>).&lt;/p>
&lt;h3 id="divine-aggiunge-funzionalità-di-integrazione-nostr">diVine Aggiunge Funzionalità di Integrazione Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, l&amp;rsquo;app video short-form, continua la rapida integrazione Nostr.&lt;/p>
&lt;p>Le PR aperte includono l&amp;rsquo;autenticazione tramite codice QR &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1019">PR #1019&lt;/a>) e la messaggistica diretta crittografata &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/834">PR #834&lt;/a>). L&amp;rsquo;attività di questa settimana si è concentrata sul &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1098">supporto menzioni&lt;/a> che converte URI &lt;code>nostr:&lt;/code> e @menzioni in link profilo cliccabili, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1097">fallback avatar Classic Viners&lt;/a> usando profili Nostr, e strumenti di editing video inclusi &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1056">disegno&lt;/a>, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1053">filtri&lt;/a> e &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1050">sticker&lt;/a>.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Uniti:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1534">Trusted Relay Assertions&lt;/a>&lt;/strong> - La proposta per standardizzare i punteggi di fiducia dei relay &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/#nip-updates">che abbiamo coperto la settimana scorsa&lt;/a> è stata unita. La specifica definisce eventi kind 30385 per le asserzioni di fiducia dei relay con punteggio su affidabilità, qualità e accessibilità. Il dibattito che ha portato all&amp;rsquo;unione si è concentrato sul fatto che i punteggi di fiducia debbano essere &amp;ldquo;globali&amp;rdquo; (calcolati una volta per tutti gli utenti) o &amp;ldquo;personalizzati&amp;rdquo; (relativi al grafo sociale di ogni osservatore). Algoritmi in stile PageRank come &lt;a href="https://trust.nostr.band/">Trust Rank di nostr.band&lt;/a> e &lt;a href="https://github.com/Pretty-Good-Freedom-Tech/graperank-nodejs">GrapeRank&lt;/a> resistono agli attacchi sybil dividendo qualsiasi rank passato attraverso account falsi per la dimensione della bot farm.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Communikeys&lt;/strong> - Una &lt;a href="https://nostrhub.io">proposta completa&lt;/a> per la gestione delle community che usa npub esistenti come identificatori di community invece di approcci basati su relay. Qualsiasi npub può diventare una community pubblicando un evento kind 10222; le pubblicazioni mirano alle community tramite eventi kind 30222. Il controllo degli accessi usa badge &lt;a href="https://nostrcompass.org/it/topics/nip-58/">NIP-58&lt;/a>, abilitando la gestione delegata dell&amp;rsquo;appartenenza con cold storage per le chiavi della community.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2196">NIP-CF: Changes Feed&lt;/a>&lt;/strong> - Una bozza che propone la sincronizzazione degli eventi basata su sequenze come alternativa ai filtri &lt;code>since&lt;/code> basati su timestamp. Il problema: la sincronizzazione Nostr standard usando timestamp &lt;code>since&lt;/code> può perdere eventi quando più eventi condividono lo stesso timestamp con precisione al secondo, gli orologi del client e del relay divergono, o il checkpointing è impreciso. NIP-CF risolve questo facendo assegnare ai relay numeri di sequenza monotonicamente crescenti agli eventi memorizzati, fornendo un ordinamento totale rigoroso. I client richiedono modifiche da un numero di sequenza specifico e ricevono eventi in ordine garantito, con checkpointing preciso che non perde mai eventi. La proposta supporta anche la modalità live/continua dove le sottoscrizioni rimangono aperte dopo la sincronizzazione iniziale per aggiornamenti in tempo reale.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1947">NIP-XX: Encrypted File Sync&lt;/a>&lt;/strong> - Un protocollo che definisce i kind 30800 (file crittografati), 30801 (indici vault) e 30802 (documenti condivisi) per sincronizzare contenuti crittografati tra dispositivi usando i relay Nostr. Il protocollo abilita app di note-taking local-first per fornire sincronizzazione crittografata end-to-end senza server centralizzati. Contenuti dei file, percorsi, nomi e struttura delle cartelle sono tutti crittografati usando l&amp;rsquo;auto-crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, così i relay memorizzano blob che non possono leggere. Gli allegati binari come le immagini usano server &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> con crittografia lato client. Il kind 30802 abilita la condivisione di documenti tra utenti crittografando verso la chiave pubblica del destinatario.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="cinque-anni-di-gennaio-di-nostr">Cinque Anni di Gennaio di Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/it/newsletters/2025-12-31-newsletter/#december-recap-five-years-of-nostr-decembers">La newsletter del mese scorso&lt;/a> ha tracciato le pietre miliari di dicembre di Nostr dal primo rilascio client di fiatjaf attraverso la donazione catalizzatrice di Jack Dorsey. Questa retrospettiva traccia cosa è successo ogni gennaio dal 2021 al 2025, concentrandosi sugli sviluppi tecnici verificati.&lt;/p>
&lt;h3 id="gennaio-2021-sviluppo-iniziale">Gennaio 2021: Sviluppo Iniziale&lt;/h3>
&lt;p>Il terzo mese di Nostr vide lo sviluppo continuato di Branle, il client Vue.js di fiatjaf lanciato a dicembre 2020. Un piccolo gruppo di primi utilizzatori, probabilmente meno di 15 persone, si coordinava attraverso il gruppo Telegram &lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a> (creato il 16 novembre 2020), testando il protocollo su uno o due relay sperimentali. Il client da riga di comando noscl forniva interazione basata su terminale.&lt;/p>
&lt;p>Le fondamenta tecniche erano già bloccate: utenti identificati da chiavi pubbliche secp256k1, post firmati crittograficamente con firme Schnorr, e relay che servono come storage stupido che non comunicano tra loro. Questa era crittografia deliberatamente nativa di Bitcoin, una scelta di design che avrebbe plasmato i pattern di adozione anni dopo.&lt;/p>
&lt;h3 id="gennaio-2022-scoperta-degli-sviluppatori">Gennaio 2022: Scoperta degli Sviluppatori&lt;/h3>
&lt;p>Gennaio 2022 si aprì con Nostr ancora in fermento dalla sua &lt;a href="https://news.ycombinator.com/item?id=29749061">prima apparizione su Hacker News&lt;/a> (31 dicembre 2021), che generò 110 punti e 138 commenti. Al momento di quel post, solo circa sette relay alimentavano l&amp;rsquo;intera rete, con i commentatori che notavano &amp;ldquo;lo spam non è ancora un problema perché nostr è super nuovo e nessuno lo usa ancora&amp;rdquo;. Robert C. Martin (&amp;ldquo;Uncle Bob&amp;rdquo;) aveva appoggiato Nostr come potenzialmente &amp;ldquo;la soluzione definitiva per la comunicazione sociale&amp;rdquo;. La discussione continuò a gennaio, con sviluppatori che dibattevano architettura relay versus vero P2P, resistenza alla censura versus moderazione, e se la semplicità potesse scalare.&lt;/p>
&lt;p>Il post HN scatenò un&amp;rsquo;ondata di nuove implementazioni. Uncle Bob stesso iniziò &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>, un client desktop Clojure, il 18 gennaio. La libreria &lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a> di fiatjaf (creata gennaio 2021) e il client da riga di comando &lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a> fornivano strumenti Go, mentre &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> offriva supporto JavaScript. Entro dicembre 2022, circa 800 profili avevano bio. Branle rimase il client web principale, ricevendo aggiornamenti inclusi import della chiave privata e supporto multi-relay. Le sfide tecniche erano evidenti: le chiavi esadecimali da 64 caratteri si rivelarono non intuitive, i ritardi dei messaggi frustravano gli utenti, e la community si chiedeva se l&amp;rsquo;architettura potesse gestire traffico a scala Twitter.&lt;/p>
&lt;h3 id="gennaio-2023-la-svolta">Gennaio 2023: La Svolta&lt;/h3>
&lt;p>Gennaio 2023 trasformò Nostr da esperimento a movimento. Damus, il client iOS di William Casarin (jb55), lottava con il processo di approvazione dell&amp;rsquo;App Store di Apple. Rifiutato il 1° gennaio, rifiutato di nuovo il 26 gennaio, fu finalmente &lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">approvato il 31 gennaio&lt;/a>. Quell&amp;rsquo;approvazione scatenò una cascata: Damus raggiunse immediatamente la posizione #10 in U.S. Social Networking. Jack Dorsey &lt;a href="https://web.archive.org/web/20240304043638/https://www.theblock.co/post/207448/nostr-based-decentralized-twitter-alternative-damus-goes-live-on-apple-app-store">lo definì&lt;/a> &amp;ldquo;una pietra miliare per i protocolli aperti&amp;rdquo;.&lt;/p>
&lt;p>Otto giorni prima, il 23 gennaio, &lt;a href="https://x.com/Snowden/status/1617623779626352640">Edward Snowden annunciò&lt;/a> la sua presenza su Nostr: &amp;ldquo;Una delle cose cool di Nostr&amp;hellip; oltre alla resistenza alla censura, è che non sei limitato a 280 caratteri&amp;rdquo;. Il suo endorsement da parte di un whistleblower della NSA aveva peso nei circoli attenti alla privacy, e gli utenti iniziarono immediatamente a inviargli zap in sats via Lightning.&lt;/p>
&lt;p>I client web corsero per gestire l&amp;rsquo;afflusso. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, creato da kieran a dicembre 2022, emerse come un client React ricco di funzionalità; il 13 gennaio, Snort integrò la registrazione NIP-05 tramite l&amp;rsquo;API Nostr Plebs, permettendo ai nuovi utenti di reclamare identità leggibili durante l&amp;rsquo;onboarding. &lt;a href="https://iris.to">Iris&lt;/a>, sviluppato a tempo pieno da Martti Malmi (un early contributor di Bitcoin che ricevette la seconda transazione Bitcoin mai fatta da Satoshi), offriva interfacce sia web che mobile con identità NIP-05 gratuite su iris.to. &lt;a href="https://github.com/monlovesmango/astral">Astral&lt;/a>, costruito da monlovesmango con Quasar (Vue.js) come fork di Branle, si concentrava sulla gestione dei relay con la sua funzionalità di raggruppamento relay che permetteva agli utenti di organizzare i relay in set per la pubblicazione e il filtraggio. Le beta TestFlight per i client iOS si riempivano in poche ore, e Amethyst dominava su Android.&lt;/p>
&lt;p>L&amp;rsquo;infrastruttura faticava a tenere il passo. Tutti i relay erano gestiti da appassionati che pagavano di tasca propria. I relay a pagamento che usavano micropagamenti Lightning creavano un filtraggio naturale dello spam ma introducevano frizione nell&amp;rsquo;accesso. &lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Damus fu rimosso dall&amp;rsquo;App Store della Cina&lt;/a> solo due giorni dopo l&amp;rsquo;approvazione, riferibilmente su richiesta del principale organo di vigilanza internet della Cina.&lt;/p>
&lt;h3 id="gennaio-2024-consolidamento-del-protocollo">Gennaio 2024: Consolidamento del Protocollo&lt;/h3>
&lt;p>Gennaio 2024 si concentrò sulla standardizzazione del protocollo e sulla costruzione della community. &lt;a href="https://www.nostrphx.com/events">Nostr PHX&lt;/a> iniziò l&amp;rsquo;anno con un meetup il 5 gennaio a Phoenix, riunendo cypherpunk locali. Questo fu il primo di molti eventi della community quell&amp;rsquo;anno inclusi BTC Prague (giugno), Nostriga a Riga (agosto) e Nostrasia.&lt;/p>
&lt;p>Lo sviluppo del protocollo più significativo fu &lt;a href="https://github.com/nostr-protocol/nips/pull/716">NIP-59 (Gift Wrap)&lt;/a> unito il 29 gennaio, fornendo protezione dei metadati per le comunicazioni crittografate. Gift Wrap si basa sullo &lt;a href="https://github.com/paulmillr/nip44">standard di crittografia NIP-44&lt;/a> (che era stato &lt;a href="https://cure53.de/audit-report_nip44-implementations.pdf">auditato da Cure53&lt;/a> a dicembre 2023) per nascondere l&amp;rsquo;identità del mittente dai relay. Il protocollo avvolge i messaggi crittografati all&amp;rsquo;interno di un evento esterno firmato da una keypair casuale, usa-e-getta. I relay vedono solo la pubkey usa-e-getta, mentre la vera identità del mittente è sepolta nel payload crittografato che solo il destinatario può decifrare. Questo impedisce agli operatori dei relay e agli osservatori della rete di sapere chi sta messaggiando chi. I timestamp possono anche essere randomizzati per sconfiggere l&amp;rsquo;analisi temporale.&lt;/p>
&lt;p>L&amp;rsquo;ecosistema si espanse oltre i social media. &lt;a href="https://plebeian.market">Plebeian Market&lt;/a> diventò completamente Nostr-native con conformità &lt;a href="https://nostrcompass.org/it/topics/nip-15/">NIP-15&lt;/a>, abilitando carrelli cross-stall e un browser di stall per scoprire i merchant. &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> emerse come un marketplace permissionless che facilitava il commercio Bitcoin. &lt;a href="https://zap.stream/">Zap.stream&lt;/a>, costruito da kieran, portò lo streaming live su Nostr con pagamenti Lightning a 21 sats/minuto. Gli strumenti per sviluppatori maturarono con &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> che forniva astrazioni TypeScript e &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> che offriva binding Rust. &lt;a href="https://blog.zeusln.com/new-release-zeus-v0-8-1/">Zeus v0.8.1&lt;/a> fu rilasciato con import contatti Nostr e LND persistente, gettando le basi per l&amp;rsquo;integrazione Nostr Wallet Connect nei rilasci successivi.&lt;/p>
&lt;p>Eppure la sostenibilità dell&amp;rsquo;infrastruttura &lt;a href="https://arxiv.org/abs/2402.05709">rimaneva una sfida&lt;/a>. La ricerca accademica di questo periodo trovò che il 95% dei relay faticava a coprire i costi operativi, con il 20% che sperimentava significativi tempi di inattività. La tariffa di ammissione per i relay a pagamento era in media meno di 1.000 sats (~$0.45), insufficiente a sostenere le operazioni.&lt;/p>
&lt;p>&lt;em>Una nota sulle truffe: Il &amp;ldquo;Nostr Assets Protocol&amp;rdquo; e il token &amp;ldquo;$NOSTR&amp;rdquo; associato che furono lanciati in questo periodo &lt;a href="https://www.aicoin.com/en/article/377704">furono pubblicamente denunciati da fiatjaf&lt;/a> come &amp;ldquo;100% fraudolenti&amp;rdquo; e &amp;ldquo;una truffa di affinità&amp;rdquo; senza alcuna connessione con il vero protocollo Nostr.&lt;/em>&lt;/p>
&lt;h3 id="gennaio-2025-maturazione-dei-client">Gennaio 2025: Maturazione dei Client&lt;/h3>
&lt;p>Gennaio 2025 vide lo sviluppo continuato dei client attraverso l&amp;rsquo;ecosistema. &lt;a href="https://www.nobsbitcoin.com/nostur-v1-17-0/">Nostur 1.17.0&lt;/a> fu rilasciato il 13 gennaio con sincronizzazione cross-device per gli stati di lettura, supporto login multi-sig &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> e prestazioni ottimizzate del database locale. Amethyst continuò la sua transizione al modello outbox, compilando automaticamente set di relay basati sulle liste di follow piuttosto che richiedere configurazione manuale.&lt;/p>
&lt;p>I principali client iniziarono ad allontanarsi da &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> per i messaggi diretti, migrando verso &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e il proposto &lt;a href="https://nostrcompass.org/it/topics/nip-104/">NIP-104&lt;/a> per crittografia migliorata e protezione dei metadati. Il modello Gossip (comunicazione outbox/inbox) guadagnò adozione mentre l&amp;rsquo;ecosistema convergeva verso pattern di utilizzo dei relay più efficienti. Gli osservatori del settore prevedevano che questo sarebbe stato l&amp;rsquo;anno in cui Nostr transita da protocollo di nicchia a riconoscimento mainstream, con una potenziale migrazione di piattaforma ad alto profilo che potrebbe raddoppiare l&amp;rsquo;attività giornaliera.&lt;/p>
&lt;h3 id="gennaio-2026-sicurezza-e-infrastruttura-di-firma">Gennaio 2026: Sicurezza e Infrastruttura di Firma&lt;/h3>
&lt;p>Gennaio 2026 portò significativi avanzamenti nella sicurezza e nell&amp;rsquo;infrastruttura di firma. &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">Primal Android 2.6.18&lt;/a> fu rilasciato con firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e supporto per firmatario locale &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, unendosi ad Amber e Aegis come hub di firma completo per altre app Android. &lt;a href="https://github.com/permissionlesstech/bitchat/pulls">Bitchat completò un audit di sicurezza Cure53&lt;/a>, la stessa azienda che auditò Signal e NIP-44, con oltre 17 PR che correggevano problemi critici inclusa la cancellazione dei segreti DH e problemi di thread safety. Sia Bitchat che Damus migrarono da C Tor a Rust Arti per maggiore affidabilità e sicurezza della memoria.&lt;/p>
&lt;p>Il lavoro sul protocollo continuò con &lt;a href="https://github.com/nostr-protocol/nips/pull/1669">NIP-71&lt;/a> (eventi video addressable) unito e una NIP sulla crittografia post-quantistica che aprì la discussione sul future-proofing di Nostr contro attacchi quantistici. La bozza Trusted Relay Assertions propose la standardizzazione del punteggio di fiducia dei relay attraverso attestazioni firmate. Il &lt;a href="https://github.com/marmot-protocol/mdk">Protocollo Marmot&lt;/a> rafforzò la sua messaggistica crittografata basata su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a> con 18 PR unite che affrontavano le scoperte dell&amp;rsquo;audit.&lt;/p>
&lt;p>Le applicazioni nel mondo reale si espansero con &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> che sviluppa ridesharing decentralizzato usando escrow &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a> e crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, e &lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a> che aggiunge flussi di recupero basati su email alla firma a soglia &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a>. Damus rilasciò &lt;a href="https://nostrcompass.org/it/topics/negentropy/">negentropy&lt;/a> per la sincronizzazione affidabile dei DM, mentre l&amp;rsquo;app desktop di Amethyst raggiunse la Fase 2A con ricerca, segnalibri e zap.&lt;/p>
&lt;h3 id="guardando-avanti">Guardando Avanti&lt;/h3>
&lt;p>Sei anni di gennaio rivelano l&amp;rsquo;evoluzione di Nostr dallo sviluppo iniziale (2021) alla scoperta pubblica (2022) alla crescita esplosiva (2023) al consolidamento del protocollo (2024) alla maturazione dei client (2025) all&amp;rsquo;infrastruttura di sicurezza (2026). Il pattern è familiare a chiunque abbia osservato la crescita dei protocolli aperti: anni di costruzione silenziosa, un&amp;rsquo;esplosione improvvisa quando le condizioni si allineano, poi il lavoro più lungo di rendere tutto affidabile. Quello che è iniziato con sette relay e un thread su Hacker News è ora infrastruttura auditata con applicazioni reali. La domanda per il 2027: quando qualcuno chiamerà una corsa, invierà un messaggio crittografato o recupererà una chiave persa usando Nostr, sapranno anche che lo stanno usando?&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. Stai costruendo qualcosa? Hai notizie da condividere? Vuoi che copriamo il tuo progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattaci via DM NIP-17&lt;/a> o trovaci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #6</title><link>https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/</link><pubDate>Wed, 21 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-01-21-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Bitchat sostituisce C Tor con l&amp;rsquo;implementazione Rust Arti per una maggiore affidabilità e prestazioni. nostrdb-rs ottiene query fold streaming che abilitano operazioni di database a zero allocazioni. Listr riceve un importante refactoring con la migrazione a NDK 3 beta e manutenzione assistita da AI dopo un anno di inattività. Zeus spedisce 17 PR unite focalizzate su correzioni &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect per il controllo remoto di Lightning) e miglioramenti Cashu, mentre Primal Android aggiunge flussi di backup del wallet e supporto &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> (dimensioni dei media per rapporti di aspetto corretti). Una nuova bozza di NIP propone &lt;a href="https://nostrcompass.org/it/topics/trusted-relay-assertions/">Trusted Relay Assertions&lt;/a> per la valutazione standardizzata della fiducia nei relay.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Bitchat sostituisce C Tor con l&amp;rsquo;implementazione Rust Arti per una maggiore affidabilità e prestazioni. nostrdb-rs ottiene query fold streaming che abilitano operazioni di database a zero allocazioni. Listr riceve un importante refactoring con la migrazione a NDK 3 beta e manutenzione assistita da AI dopo un anno di inattività. Zeus spedisce 17 PR unite focalizzate su correzioni &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect per il controllo remoto di Lightning) e miglioramenti Cashu, mentre Primal Android aggiunge flussi di backup del wallet e supporto &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> (dimensioni dei media per rapporti di aspetto corretti). Una nuova bozza di NIP propone &lt;a href="https://nostrcompass.org/it/topics/trusted-relay-assertions/">Trusted Relay Assertions&lt;/a> per la valutazione standardizzata della fiducia nei relay.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="bitchat-migra-ad-arti-rust-per-il-supporto-tor">Bitchat Migra ad Arti Rust per il Supporto Tor&lt;/h3>
&lt;p>Bitchat è migrato da C Tor ad &lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>, l&amp;rsquo;implementazione Rust del protocollo Tor. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/958">PR #958&lt;/a> rimuove la dipendenza da C Tor e integra Arti, portando garanzie di sicurezza della memoria e maggiore affidabilità. Il cambiamento elimina i tentativi di riattivazione dormiente che causavano riavvii del servizio in primo piano, un problema di lunga data con l&amp;rsquo;implementazione C.&lt;/p>
&lt;p>&lt;strong>Cosa significa per gli utenti:&lt;/strong> Messaggistica crittografata più stabile con meno disconnessioni, specialmente su dispositivi mobili. L&amp;rsquo;implementazione Rust riduce i rischi di crash e il consumo della batteria dai tentativi di riconnessione costanti.&lt;/p>
&lt;p>Arti è una riscrittura completa di Tor in Rust, sviluppata dal Tor Project per fornire maggiore sicurezza attraverso la sicurezza della memoria e un&amp;rsquo;integrazione più facile nelle applicazioni. Per Bitchat, le proprietà di sicurezza della memoria riducono la superficie di attacco durante la gestione di messaggi crittografati e connessioni relay. La migrazione segue il recente &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/#bitchat-completes-cure53-security-audit">audit di sicurezza Cure53&lt;/a> del team (trattato nella Newsletter #5), continuando i loro miglioramenti di sicurezza.&lt;/p>
&lt;p>Il PR introduce anche una copertura di test completa per ChatViewModel e BLEService, rimuove codice morto e stabilizza la suite di test. I miglioramenti di affidabilità della mesh Bluetooth Low Energy accompagnano le modifiche Tor, affrontando i fallimenti di trasferimenti grandi. Insieme, questi cambiamenti migliorano la resilienza di Bitchat per scenari di rete mesh offline dove Tor fornisce connettività internet insieme alla comunicazione BLE locale.&lt;/p>
&lt;h3 id="listr-rivitalizzato-con-manutenzione-potenziata-dallai">Listr Rivitalizzato con Manutenzione Potenziata dall&amp;rsquo;AI&lt;/h3>
&lt;p>JeffG ha annunciato un importante refactoring di &lt;a href="https://github.com/erskingardner/listr">Listr&lt;/a>, l&amp;rsquo;applicazione di gestione liste Nostr disponibile su &lt;a href="https://listr.lol">listr.lol&lt;/a>, dopo che il progetto era rimasto inattivo per oltre un anno. Usando l&amp;rsquo;assistenza dell&amp;rsquo;AI, ha completato un aggiornamento completo includendo la migrazione a &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> 3 beta, aggiornamenti alle ultime versioni di Svelte e Vite, e tutte le dipendenze portate alla versione corrente. Il refactoring aggiunge supporto di prima classe per i pacchetti di following, implementa la paginazione per liste che superano i 50 elementi e corregge numerosi bug che si erano accumulati durante il periodo di inattività.&lt;/p>
&lt;p>&lt;strong>Cosa significa per gli utenti:&lt;/strong> Listr è tornato online con prestazioni migliorate e nuove funzionalità per gestire liste di following, collezioni di contenuti e curatela di argomenti. La correzione della paginazione rende effettivamente utilizzabili le liste grandi.&lt;/p>
&lt;p>JeffG ha notato che senza l&amp;rsquo;assistenza dell&amp;rsquo;AI, questo lavoro di manutenzione probabilmente non sarebbe mai avvenuto, impedendo che il progetto venisse abbandonato. Listr abilita la curatela dei contenuti su Nostr, permettendo agli utenti di creare, gestire e condividere liste di profili, argomenti e risorse. L&amp;rsquo;aggiornamento mantiene l&amp;rsquo;applicazione compatibile con gli standard Nostr correnti e le aspettative dei client man mano che la gestione delle liste diventa più centrale per la scoperta dei contenuti sul protocollo.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Unite:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> (Gruppi basati su relay) - Chiarimento Chiave Relay (&lt;a href="https://github.com/nostr-protocol/nips/pull/2190">#2190&lt;/a> - unito) chiarisce che la chiave relay è l&amp;rsquo;URL del relay stesso, non una pubkey. La specifica ora afferma esplicitamente &amp;ldquo;La chiave relay è l&amp;rsquo;URL WebSocket del relay (es. wss://groups.example.com)&amp;rdquo; per evitare confusione. Questo influisce su come i client identificano quale relay ospita un determinato gruppo, garantendo che i gruppi siano correttamente attribuiti ai loro relay ospitanti.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte e Discussioni:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Trusted Relay Assertions&lt;/strong> - Una bozza di NIP propone di standardizzare il punteggio di fiducia nei relay attraverso eventi kind 30385 contenenti punteggi di fiducia (0-100) calcolati da metriche &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> (scoperta e monitoraggio relay), reputazione dell&amp;rsquo;operatore e segnalazioni degli utenti. La specifica divide la fiducia in componenti di affidabilità (uptime, latenza), qualità (TLS, documentazione, verifica operatore) e accessibilità (giurisdizione, barriere, rischio sorveglianza). La verifica dell&amp;rsquo;operatore include firme crittografiche tramite &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> (documenti informativi relay), record TXT DNS e file .well-known. Gli utenti dichiarano i fornitori di asserzioni fidati tramite eventi kind 10385, permettendo ai client di interrogare più fornitori per prospettive diverse. La proposta complementa la scoperta &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> con la valutazione, aiutando &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> (firma remota/Nostr Connect) a valutare l&amp;rsquo;affidabilità dei relay negli URI di connessione.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Crittografia Post-Quantistica&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> (aperta) continua ad evolversi da quando la &lt;a href="https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/#nip-updates">Newsletter #5&lt;/a> ha introdotto la proposta per algoritmi resistenti ai computer quantistici. La discussione di questa settimana si è concentrata sui dettagli di implementazione per la crypto-agility: come i client gestiscono le firme doppie durante la migrazione, la compatibilità retroattiva per i client più vecchi e le implicazioni prestazionali delle firme quantistiche resistenti più grandi. I contributori hanno dibattuto se imporre solo ML-DSA-44 o supportare più algoritmi (ML-DSA-44, Falcon-512, Dilithium) per flessibilità. Il consenso propende verso un approccio graduale: firme quantistiche opzionali inizialmente, diventando obbligatorie solo dopo un ampio supporto dei client e l&amp;rsquo;emergere di una reale minaccia quantistica.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="approfondimento-nip-nip-11-e-nip-66">Approfondimento NIP: NIP-11 e NIP-66&lt;/h2>
&lt;p>Questa settimana esaminiamo due NIP che lavorano insieme per abilitare la scoperta e valutazione dei relay: NIP-11 definisce come i relay si descrivono, e NIP-66 standardizza come misuriamo il comportamento dei relay. Insieme formano la base per i sistemi di valutazione della fiducia nei relay.&lt;/p>
&lt;h3 id="nip-11ittopicsnip-11-documento-informativo-relay">&lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>: Documento Informativo Relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/11.md">NIP-11&lt;/a> definisce un documento JSON che i relay servono via HTTP per descrivere le loro capacità, politiche e informazioni sull&amp;rsquo;operatore. Quando un client si connette a &lt;code>wss://relay.example.com&lt;/code>, può recuperare &lt;code>https://relay.example.com&lt;/code> (sostituendo &lt;code>wss://&lt;/code> con &lt;code>https://&lt;/code>) per ottenere il documento informativo del relay.&lt;/p>
&lt;p>Il documento usa la negoziazione standard del contenuto HTTP con l&amp;rsquo;header &lt;code>Accept: application/nostr+json&lt;/code>. Questo permette ai relay di servire il loro sito web normale ai browser mentre forniscono metadati leggibili dalle macchine ai client Nostr. La risposta include il nome del software relay e la versione, informazioni di contatto dell&amp;rsquo;operatore (pubkey, email, contatto alternativo), NIP supportati e parametri operativi come requisiti di pagamento o restrizioni di contenuto.&lt;/p>
&lt;p>Importante notare che i documenti NIP-11 di base sono JSON non firmati serviti via HTTPS, affidandosi esclusivamente ai certificati TLS per l&amp;rsquo;autenticità. Questo significa che chiunque controlli il server web del relay può modificare il documento, rendendo non verificabili le affermazioni dell&amp;rsquo;operatore. La proposta Trusted Relay Assertions affronta questa lacuna introducendo attestazioni firmate attraverso il campo &lt;code>self&lt;/code> pubkey di un relay, abilitando la prova crittografica dell&amp;rsquo;identità dell&amp;rsquo;operatore in modo simile a come i relay usano eventi firmati per i meccanismi di autenticazione.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;relay.example.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Un relay pubblico per uso generale&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;contact&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;admin@example.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;supported_nips&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>, &lt;span style="color:#ae81ff">2&lt;/span>, &lt;span style="color:#ae81ff">4&lt;/span>, &lt;span style="color:#ae81ff">9&lt;/span>, &lt;span style="color:#ae81ff">11&lt;/span>, &lt;span style="color:#ae81ff">12&lt;/span>, &lt;span style="color:#ae81ff">16&lt;/span>, &lt;span style="color:#ae81ff">20&lt;/span>, &lt;span style="color:#ae81ff">22&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;software&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;git+https://github.com/relay/relay.git&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;version&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1.2.3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;limitation&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_message_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">16384&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_subscriptions&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">20&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_filters&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">100&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_limit&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">5000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_subid_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">100&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;min_prefix&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_event_tags&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">2000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_content_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">8196&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;min_pow_difficulty&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">0&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;auth_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;payment_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;payments_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://relay.example.com/payments&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;fees&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;admission&amp;#34;&lt;/span>: [{&lt;span style="color:#f92672">&amp;#34;amount&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">5000&lt;/span>, &lt;span style="color:#f92672">&amp;#34;unit&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;msats&amp;#34;&lt;/span>}],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;subscription&amp;#34;&lt;/span>: [{&lt;span style="color:#f92672">&amp;#34;amount&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1000&lt;/span>, &lt;span style="color:#f92672">&amp;#34;unit&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;msats&amp;#34;&lt;/span>, &lt;span style="color:#f92672">&amp;#34;period&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">2592000&lt;/span>}],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;publication&amp;#34;&lt;/span>: []
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>L&amp;rsquo;oggetto &lt;code>limitation&lt;/code> indica ai client quali vincoli applica il relay. &lt;code>max_message_length&lt;/code> limita la dimensione del frame WebSocket, &lt;code>max_subscriptions&lt;/code> limita le sottoscrizioni REQ concorrenti per connessione, &lt;code>max_filters&lt;/code> limita i filtri per REQ, e &lt;code>max_limit&lt;/code> vincola quanti eventi può richiedere un singolo filtro. Questi parametri aiutano i client ad adattare il loro comportamento alle capacità del relay, evitando disconnessioni dal superamento dei limiti.&lt;/p>
&lt;p>Le informazioni di pagamento appaiono in &lt;code>fees&lt;/code> e &lt;code>payments_url&lt;/code>. I relay possono addebitare per l&amp;rsquo;ammissione (accesso una tantum), l&amp;rsquo;abbonamento (accesso ricorrente) o la pubblicazione (tariffe per evento). Il &lt;code>payments_url&lt;/code> punta ai dettagli sui metodi di pagamento, tipicamente fatture Lightning o mint ecash. I relay a pagamento usano questi campi per comunicare i prezzi prima che i client tentino l&amp;rsquo;autenticazione.&lt;/p>
&lt;p>L&amp;rsquo;array &lt;code>supported_nips&lt;/code> permette ai client di scoprire le capacità del relay. Se un relay elenca &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>, i client sanno di poter inviare query di ricerca full-text. Se appare &lt;a href="https://nostrcompass.org/it/topics/nip-42/">NIP-42&lt;/a>, i client dovrebbero aspettarsi challenge di autenticazione. Questa pubblicità dichiarativa delle capacità abilita il miglioramento progressivo: i client possono usare funzionalità avanzate dove disponibili mentre degradano elegantemente su relay con supporto limitato.&lt;/p>
&lt;p>Le informazioni sull&amp;rsquo;operatore costruiscono responsabilità. Il campo &lt;code>pubkey&lt;/code> identifica l&amp;rsquo;operatore del relay su Nostr, abilitando la comunicazione diretta tramite DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> o menzioni pubbliche. L&amp;rsquo;&lt;code>contact&lt;/code> email fornisce un fallback fuori protocollo. Insieme, questi campi aiutano gli utenti a raggiungere gli operatori per segnalazioni di abuso, richieste di accesso o problemi tecnici.&lt;/p>
&lt;p>I documenti &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> sono auto-riportati: i relay descrivono cosa affermano di supportare, non necessariamente cosa fanno effettivamente. Qui è dove NIP-66 diventa importante.&lt;/p>
&lt;h3 id="nip-66ittopicsnip-66-scoperta-relay-e-monitoraggio-liveness">&lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a>: Scoperta Relay e Monitoraggio Liveness&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/66.md">NIP-66&lt;/a> standardizza la pubblicazione di dati di monitoraggio relay su Nostr. I servizi di monitoraggio testano continuamente i relay per disponibilità, latenza, conformità al protocollo e NIP supportati. Pubblicano i risultati come eventi kind 30166, fornendo lo stato relay in tempo reale indipendente dall&amp;rsquo;auto-segnalazione del relay.&lt;/p>
&lt;p>I monitor controllano la disponibilità del relay connettendosi e inviando sottoscrizioni di test. Le misurazioni di latenza tracciano il tempo di connessione, il tempo di risposta alle sottoscrizioni e il ritardo di propagazione degli eventi. I test di conformità al protocollo verificano che il comportamento del relay corrisponda alle specifiche, individuando bug di implementazione o deviazioni intenzionali. La verifica del supporto NIP va oltre le affermazioni &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> testando effettivamente se le funzionalità pubblicizzate funzionano correttamente.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a34b5c7d89e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;4e2d0bc6f8e7c3a5b9f1d2e3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30166&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;open&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;143&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;read&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;write&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;92&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;nips&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;11&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;12&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;geo&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;US&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;United States&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;New York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;network&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;clearnet&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;payment_required&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;auth_required&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;last_check\&amp;#34;: 1736784000, \&amp;#34;checks\&amp;#34;: 8760}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;8b9c4d5e6a7f8b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il tag &lt;code>d&lt;/code> contiene l&amp;rsquo;URL del relay, rendendo questo un evento sostituibile parametrizzato. Ogni monitor pubblica un evento per relay, aggiornato al cambiare delle misurazioni. Più monitor possono tracciare lo stesso relay, fornendo ridondanza e validazione incrociata. I client interrogano più pubkey di monitor per ottenere prospettive diverse sulla salute del relay.&lt;/p>
&lt;p>I tag round-trip time (rtt) misurano la latenza per diverse operazioni. &lt;code>rtt open&lt;/code> traccia l&amp;rsquo;instaurazione della connessione WebSocket, &lt;code>rtt read&lt;/code> misura il tempo di risposta alle sottoscrizioni, e &lt;code>rtt write&lt;/code> testa la velocità di pubblicazione degli eventi. Tutti i valori sono in millisecondi. I client usano queste metriche per preferire relay a bassa latenza per operazioni sensibili al tempo o deprioritizzare relay lenti.&lt;/p>
&lt;p>Il tag &lt;code>nips&lt;/code> elenca il supporto NIP effettivamente verificato, non solo il supporto dichiarato. I monitor testano ogni NIP esercitando la sua funzionalità. Se un relay rivendica la ricerca &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> nel suo documento &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> ma le query di ricerca falliscono, i monitor ometteranno NIP-50 dalla lista verificata. Questo fornisce la verità di base sulle capacità del relay.&lt;/p>
&lt;p>Le informazioni geografiche aiutano i client a selezionare relay vicini per una migliore latenza e resistenza alla censura. Il tag &lt;code>geo&lt;/code> contiene il codice paese, il nome paese e la regione. Il tag &lt;code>network&lt;/code> distingue i relay clearnet dai servizi nascosti Tor o endpoint I2P. Insieme, questi tag abilitano la diversità geografica: i client possono connettersi a relay in più giurisdizioni per resistere alla censura regionale.&lt;/p>
&lt;p>I dati dei monitor alimentano i selettori di relay nei client, i siti web esploratori e la proposta Trusted Relay Assertions. Combinando documenti auto-riportati &lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a> con dati misurati &lt;a href="https://nostrcompass.org/it/topics/nip-66/">NIP-66&lt;/a> e asserzioni di fiducia calcolate, l&amp;rsquo;ecosistema si muove verso la selezione informata dei relay piuttosto che fare affidamento su default codificati o raccomandazioni di passa-parola.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;h3 id="0xchat-v153---funzionalità-di-messaggistica-migliorate">0xchat v1.5.3 - Funzionalità di Messaggistica Migliorate&lt;/h3>
&lt;p>&lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.3-release">0xchat v1.5.3&lt;/a> porta miglioramenti significativi al client di messaggistica Nostr stile Telegram. Il rilascio affronta problemi di conformità &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> (applicazione signer Android) che impedivano la corretta firma degli eventi attraverso signer esterni come Amber. La piena conformità significa che 0xchat ora delega correttamente le operazioni di firma, migliorando la sicurezza mantenendo le chiavi private isolate.&lt;/p>
&lt;p>L&amp;rsquo;aggiornamento integra sia FileDropServer che BlossomServer come opzioni di archiviazione media predefinite, offrendo agli utenti ridondanza per i caricamenti di file. &lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a> fornisce archiviazione indirizzata ai contenuti dove i file sono referenziati dai loro hash SHA-256, garantendo integrità e abilitando la deduplicazione sulla rete. Il salvataggio automatico delle bozze per Moments previene la perdita di dati quando si compone contenuto long-form, affrontando le lamentele degli utenti sui post persi durante i cambi di app o le interruzioni di connettività.&lt;/p>
&lt;p>L&amp;rsquo;integrazione del wallet Cashu riceve una lucidatura con il filtraggio automatico delle prove che rimuove i token spesi dalla vista del wallet. Questo risolve la UX confusa dove gli utenti vedevano prove invalide insieme a ecash valido, rendendo inaffidabili i calcoli del saldo. Il filtraggio avviene lato client, mantenendo la privacy mentre migliora l&amp;rsquo;esperienza di pagamento per le transazioni peer-to-peer nelle chat.&lt;/p>
&lt;h3 id="amber-v410-pre-releases---revisione-ui">Amber v4.1.0 Pre-releases - Revisione UI&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.0-pre1">Amber v4.1.0-pre1&lt;/a> fino a &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.0-pre3">v4.1.0-pre3&lt;/a> introducono un&amp;rsquo;interfaccia ridisegnata per il popolare signer di eventi Android. La schermata di login ora visualizza chiaramente quale applicazione sta richiedendo permessi di firma, affrontando la confusione degli utenti sui flussi di autorizzazione. La nuova schermata eventi fornisce un&amp;rsquo;ispezione dettagliata di quali dati le applicazioni vogliono firmare, permettendo agli utenti di prendere decisioni di sicurezza informate prima di approvare le operazioni.&lt;/p>
&lt;p>La gestione dei permessi riceve attenzione significativa con un&amp;rsquo;interfaccia rinnovata che mostra esattamente quali capacità è stata concessa a ogni applicazione connessa. Gli utenti possono revocare permessi specifici senza disconnettersi completamente, abilitando il controllo a grana fine sulla delegazione della firma. I contatori relay rifattorizzati usando la libreria quartz aggiornata forniscono statistiche in tempo reale sul throughput degli eventi e le prestazioni dei relay. Le connessioni bunker &lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">NIP-46&lt;/a> (Nostr Connect) ora mostrano messaggi di errore dettagliati quando le connessioni falliscono, sostituendo gli errori di timeout criptici con diagnostiche azionabili.&lt;/p>
&lt;h2 id="modifiche-notevoli-a-codice-e-documentazione">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;p>&lt;em>Queste sono pull request unite e sviluppi in fase iniziale che vale la pena tracciare. Alcuni sono funzionalità sperimentali che potrebbero evolversi prima del rilascio.&lt;/em>&lt;/p>
&lt;h3 id="zeus-wallet-lightning-con-nostr-wallet-connect">Zeus (Wallet Lightning con Nostr Wallet Connect)&lt;/h3>
&lt;p>Zeus ha unito 17 pull request questa settimana, rafforzando la sua posizione come implementazione &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect leader. Le correzioni più significative affrontano problemi di consistenza dei dati e conformità al protocollo che stavano causando problemi di interoperabilità con i client Nostr.&lt;/p>
&lt;p>&lt;strong>Correzione Cronologia Transazioni&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3542">PR #3542&lt;/a> risolve un bug critico dove le liste transazioni NWC visualizzavano voci errate o duplicate. Il problema si verificava quando Zeus metteva in cache i dati delle transazioni senza gestire correttamente gli aggiornamenti degli eventi, causando agli utenti di vedere transazioni fantasma o pagamenti mancanti. La correzione implementa la deduplicazione corretta degli eventi e l&amp;rsquo;invalidazione della cache, garantendo che la cronologia delle transazioni rifletta accuratamente lo stato del nodo Lightning.&lt;/p>
&lt;p>&lt;strong>Conformità al Protocollo&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3548">PR #3548&lt;/a> affronta risposte &lt;code>getInfo&lt;/code> incomplete che rompevano la compatibilità con i client che si aspettano la piena conformità NIP-47. Alcuni client Nostr crashavano quando ricevevano risposte parziali mancanti di campi come &lt;code>block_height&lt;/code> o &lt;code>network&lt;/code>. Il PR garantisce che tutti i campi richiesti ritornino con default sensati anche quando l&amp;rsquo;implementazione Lightning sottostante non li fornisce, migliorando la compatibilità di Zeus nell&amp;rsquo;ecosistema.&lt;/p>
&lt;p>&lt;strong>Resilienza della Connessione&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3543">PR #3543&lt;/a> implementa notifiche di timeout per connessioni Nostr bloccate. Precedentemente, gli utenti aspettavano indefinitamente quando le connessioni relay cadevano silenziosamente. Ora Zeus visualizza messaggi di timeout chiari dopo 30 secondi di inattività, permettendo agli utenti di riprovare o cambiare relay. &lt;a href="https://github.com/ZeusLN/zeus/pull/3541">PR #3541&lt;/a> aggiunge validazione backend per prevenire l&amp;rsquo;attivazione NWC su implementazioni Lightning incompatibili, individuando errori di configurazione prima che causino crash runtime.&lt;/p>
&lt;p>&lt;strong>Race Condition Cashu&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3531">PR #3531&lt;/a> corregge un bug di concorrenza nella gestione dei token Cashu dove operazioni di mint simultanee potevano corrompere il database dei token. La race condition si verificava quando più thread aggiornava i conteggi dei token senza un locking appropriato, risultando occasionalmente in saldi errati. La correzione aggiunge protezione mutex attorno alle sezioni critiche, garantendo aggiornamenti atomici allo stato dei token.&lt;/p>
&lt;h3 id="primal-android-client">Primal Android (Client)&lt;/h3>
&lt;p>Primal Android ha spedito 12 PR unite con miglioramenti significativi alla sicurezza del wallet e alla gestione dei media. L&amp;rsquo;implementazione del backup del wallet affronta una delle funzionalità più richieste, mentre il supporto NIP-92 migliora l&amp;rsquo;esperienza visiva nell&amp;rsquo;applicazione.&lt;/p>
&lt;p>&lt;strong>Sistema di Backup Wallet&lt;/strong> - Una serie di quattro PR (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/844">#844&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/845">#845&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/846">#846&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/848">#848&lt;/a>) implementa una funzionalità completa di backup della seed phrase. Gli utenti possono ora esportare il loro mnemonico di 12 parole attraverso un flusso sicuro che previene screenshot, visualizza lo stato del backup nel dashboard del wallet e guida gli utenti esistenti attraverso la migrazione. L&amp;rsquo;implementazione segue gli standard BIP-39 e include validazione per prevenire che gli utenti perdano fondi a causa della registrazione errata della frase.&lt;/p>
&lt;p>&lt;strong>Dimensioni Media (NIP-92)&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/718">PR #718&lt;/a> implementa il supporto &lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a> per i corretti rapporti di aspetto di immagini e video. Senza metadati delle dimensioni, i client devono scaricare le immagini per determinare la loro dimensione, causando salti di layout mentre il contenuto si carica. NIP-92 aggiunge tag &lt;code>dim&lt;/code> (come &lt;code>[&amp;quot;dim&amp;quot;, &amp;quot;1920x1080&amp;quot;]&lt;/code>) agli eventi di metadati dei file, permettendo a Primal di riservare lo spazio corretto prima di scaricare i media. Questo elimina i reflow fastidiosi nelle gallerie di immagini e migliora le prestazioni percepite.&lt;/p>
&lt;p>&lt;strong>Affidabilità Signer Remoto&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/841">PR #841&lt;/a> corregge problemi di connessione &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> dove i prefissi &lt;code>wss://&lt;/code> mancanti causavano fallimenti silenziosi. Il PR valida gli URI relay durante la configurazione della connessione bunker, aggiungendo automaticamente il prefisso di protocollo quando gli utenti incollano domini nudi. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/843">PR #843&lt;/a> affronta un bug di threading dove condizioni di rete scarse causavano la pubblicazione delle risposte come note radice, rompendo il flusso della conversazione. La correzione garantisce che gli ID degli eventi genitore persistano attraverso le interruzioni di rete.&lt;/p>
&lt;h3 id="marmot-protocol-white-noise-libreria-chat-di-gruppo-crittografata">Marmot Protocol: White Noise (Libreria Chat di Gruppo Crittografata)&lt;/h3>
&lt;p>White Noise, la libreria Rust che alimenta le chat di gruppo crittografate del &lt;a href="https://nostrcompass.org/it/topics/marmot/">Protocollo Marmot&lt;/a>, ha unito sei PR migliorando l&amp;rsquo;esperienza utente e la sicurezza. I cambiamenti portano Marmot più vicino alla parità di funzionalità con le applicazioni di messaggistica mainstream mantenendo la sua architettura privacy-first.&lt;/p>
&lt;p>&lt;strong>Ricevute di Lettura&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/433">PR #433&lt;/a> e &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/436">#436&lt;/a> implementano il tracciamento della lettura dei messaggi per le conversazioni di gruppo. Il sistema memorizza le posizioni di lettura per utente per gruppo all&amp;rsquo;interno di un singolo dispositivo, abilitando i badge del conteggio non letti. L&amp;rsquo;implementazione usa timestamp monotonici per tracciare l&amp;rsquo;ultima posizione di messaggio letto per ogni conversazione. Questa funzionalità fondamentale abilita indicatori UI che mostrano i conteggi di messaggi non letti per conversazione.&lt;/p>
&lt;p>&lt;strong>Fissaggio Conversazioni&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/442">PR #442&lt;/a> aggiunge il fissaggio persistente delle conversazioni attraverso un campo &lt;code>pin_order&lt;/code> nella tabella di giunzione &lt;code>accounts_groups&lt;/code> che collega gli account ai gruppi. Le conversazioni fissate mantengono la loro posizione in cima alle liste di chat indipendentemente dall&amp;rsquo;attività dei messaggi, rispettando le aspettative degli utenti da Signal e WhatsApp. L&amp;rsquo;implementazione usa l&amp;rsquo;ordinamento intero per permettere pin illimitati con ordinamento deterministico.&lt;/p>
&lt;p>&lt;strong>Risoluzione Commit Deterministica (MIP-03)&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">PR #152&lt;/a> (aperta) implementa il Marmot Improvement Proposal 03, risolvendo il problema critico delle race condition dei commit nelle chat di gruppo distribuite. Quando più membri inviano cambiamenti di stato del gruppo (aggiungere/rimuovere membri, cambiare permessi) simultaneamente, i client potrebbero divergere sull&amp;rsquo;ordinamento dei commit, frammentando il gruppo in stati incompatibili. MIP-03 introduce snapshot di epoca e una selezione deterministica del vincitore: vince il commit con il timestamp &lt;code>created_at&lt;/code> più precoce, con l&amp;rsquo;ID evento lessicografico come tiebreaker. Questo permette a tutti i client di convergere sullo stesso stato attraverso rollback e replay, mantenendo la coerenza del gruppo anche durante le partizioni di rete.&lt;/p>
&lt;p>&lt;strong>Hardening di Sicurezza&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/443">PR #443&lt;/a> previene la copia non necessaria di segreti crittografici usando riferimenti in &lt;code>resolve_group_image_path&lt;/code>. Questo riduce la finestra per attacchi alla memoria dove i segreti potrebbero essere recuperati da allocazioni heap liberate. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/438">PR #438&lt;/a> abilita la crittografia del database SQLCipher attraverso parametri keyring, proteggendo la cronologia dei messaggi a riposo. L&amp;rsquo;integrazione keyring permette l&amp;rsquo;archiviazione sicura delle chiavi nei keychain della piattaforma piuttosto che nei file di configurazione.&lt;/p>
&lt;h3 id="nostrdb-rs-libreria-database---pr-aperta">nostrdb-rs (Libreria Database) - PR Aperta&lt;/h3>
&lt;p>&lt;strong>Implementazione Query Streaming&lt;/strong> - &lt;a href="https://github.com/damus-io/nostrdb-rs/pull/58">PR #58&lt;/a> (aperta) propone query fold streaming per abilitare operazioni di database a zero allocazioni. L&amp;rsquo;implementazione aggiunge metodi &lt;code>fold&lt;/code>, &lt;code>try_fold&lt;/code>, &lt;code>count&lt;/code>, &lt;code>any&lt;/code>, &lt;code>all&lt;/code>, e &lt;code>find_map&lt;/code> che processerebbero i risultati del database uno alla volta senza materializzare interi set di risultati in vettori. Questo approccio ridurrebbe il consumo di memoria e abiliterebbe la terminazione anticipata per pattern di query comuni.&lt;/p>
&lt;p>L&amp;rsquo;implementazione tecnica espone callback di risultati query a basso livello (&lt;code>ndb_query_visit&lt;/code>) come visitor Rust stateful che mappano varianti &lt;code>ControlFlow&lt;/code> ad azioni visitor C. Una volta unite, il codice applicativo si leggerà come logica iteratore mentre gira vicino al layer database. Ad esempio, contare note corrispondenti farebbe streaming attraverso i risultati piuttosto che raccoglierli, e &lt;code>find_map&lt;/code> ritornerebbe il primo risultato utile senza processare le righe rimanenti.&lt;/p>
&lt;p>nostrdb alimenta Damus e Notedeck, rispettivamente client iOS/macOS e desktop. Le query streaming abiliterebbero pattern efficienti come paginazione, filtraggio condizionale e controlli di esistenza. Il PR cambia 3 file con +756 aggiunte e -32 eliminazioni, un refactoring sostanziale del layer query. Gli utenti delle applicazioni basate su nostrdb-rs vedrebbero un uso ridotto della memoria quando navigano timeline grandi o cercano attraverso database eventi estesi.&lt;/p>
&lt;h3 id="nak-strumento-cli">nak (Strumento CLI)&lt;/h3>
&lt;p>nak, lo strumento Nostr da linea di comando di fiatjaf, ha unito sei PR focalizzati sui miglioramenti del sistema di build e nuove funzionalità. &lt;a href="https://github.com/fiatjaf/nak/pull/91">PR #91&lt;/a> implementa una funzionalità mirror Blossom, permettendo a nak di servire come mirror per server media Blossom. &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> è un protocollo di archiviazione media indirizzato ai contenuti che lavora insieme agli eventi Nostr.&lt;/p>
&lt;p>I PR rimanenti affrontano la compatibilità del sistema di build attraverso le piattaforme Windows, macOS e Linux, abilitando il supporto filesystem FUSE per montare gli eventi Nostr come directory locali.&lt;/p>
&lt;h3 id="damus-client-ios---pr-aperte">Damus (Client iOS) - PR Aperte&lt;/h3>
&lt;p>Damus ha 11 PR aperte che esplorano miglioramenti architetturali significativi. Sebbene questi non siano stati ancora uniti, segnalano direzioni importanti per lo sviluppo del client Nostr iOS, particolarmente attorno alla privacy, l&amp;rsquo;efficienza di sincronizzazione e l&amp;rsquo;ottimizzazione dei dati mobili.&lt;/p>
&lt;p>&lt;strong>Integrazione Tor&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3535">PR #3535&lt;/a> incorpora il client Arti Tor direttamente in Damus, abilitando connessioni relay anonime senza dipendenze esterne. A differenza degli approcci Orbot o Tor Browser, incorporare Arti fornisce un&amp;rsquo;integrazione senza soluzione di continuità con il sandboxing iOS e i limiti di esecuzione in background. L&amp;rsquo;implementazione Rust porta la sicurezza della memoria all&amp;rsquo;anonimizzazione di rete, riducendo la superficie di attacco rispetto a C Tor. Gli utenti potrebbero attivare la modalità Tor per relay o globalmente, con il client che gestisce la gestione dei circuiti in modo trasparente.&lt;/p>
&lt;p>&lt;strong>Protocollo di Sincronizzazione Negentropy&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a> implementa Negentropy, un protocollo di riconciliazione di set che migliora radicalmente l&amp;rsquo;efficienza di sincronizzazione. Invece di scaricare tutti gli eventi dall&amp;rsquo;ultima connessione, Negentropy scambia fingerprint compatti (alberi Merkle) per identificare esattamente quali eventi differiscono tra client e relay. Per gli utenti che seguono centinaia di pubkey, questo riduce la banda di sincronizzazione da megabyte a kilobyte. L&amp;rsquo;implementazione si integra con RelayPool e SubscriptionManager, abilitando la sincronizzazione efficiente automatica attraverso tutti i relay connessi.&lt;/p>
&lt;p>&lt;strong>Modalità Dati Bassi&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3549">PR #3549&lt;/a> aggiunge funzionalità di conservazione dei dati cellulari rispondendo al feedback degli utenti sul consumo di banda. La modalità disabilita il caricamento automatico delle immagini, il prefetching dei video e riduce i limiti di sottoscrizione. Gli utenti su connessioni a consumo possono navigare contenuti testuali senza paura di superare i limiti dati. L&amp;rsquo;implementazione rispetta le impostazioni della modalità dati bassi di iOS e fornisce controlli granulari per diversi tipi di media.&lt;/p>
&lt;p>&lt;strong>Ottimizzazioni Database&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3548">PR #3548&lt;/a> rilavora l&amp;rsquo;archiviazione snapshot nostrdb per query più veloci e uso ridotto del disco. L&amp;rsquo;ottimizzazione cambia come gli snapshot del database persistono su disco, migliorando sia le prestazioni di lettura che l&amp;rsquo;amplificazione di scrittura. Questo affronta le lamentele sul consumo della batteria da parte degli utenti con database eventi grandi.&lt;/p>
&lt;hr>
&lt;p>È tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM NIP-17&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #5</title><link>https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-01-13-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Bitchat viene sottoposto a un audit di sicurezza professionale da Cure53, la stessa azienda che ha verificato Signal e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, con oltre 17 PR già integrate per correggere vulnerabilità critiche. &lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> è stato approvato, portando nel protocollo gli event video indirizzabili. Una NIP sulla crittografia post-quantistica apre la discussione sulla protezione futura di Nostr contro gli attacchi quantistici. Amethyst v1.05.0 introduce le liste di segnalibri, le note vocali e una versione desktop preliminare, mentre Nostur v1.25.3 migliora i DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> con reazioni e risposte. Per quanto riguarda le librerie, rust-nostr estende il supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> ai backend SQLite e LMDB, e NDK corregge un bug nel tracciamento delle subscription.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale a Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Bitchat viene sottoposto a un audit di sicurezza professionale da Cure53, la stessa azienda che ha verificato Signal e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>, con oltre 17 PR già integrate per correggere vulnerabilità critiche. &lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a> è stato approvato, portando nel protocollo gli event video indirizzabili. Una NIP sulla crittografia post-quantistica apre la discussione sulla protezione futura di Nostr contro gli attacchi quantistici. Amethyst v1.05.0 introduce le liste di segnalibri, le note vocali e una versione desktop preliminare, mentre Nostur v1.25.3 migliora i DM &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> con reazioni e risposte. Per quanto riguarda le librerie, rust-nostr estende il supporto &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> ai backend SQLite e LMDB, e NDK corregge un bug nel tracciamento delle subscription.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;h3 id="bitchat-completa-laudit-di-sicurezza-cure53">Bitchat Completa l&amp;rsquo;Audit di Sicurezza Cure53&lt;/h3>
&lt;p>Bitchat, il messenger crittografato per iOS che combina Nostr con Cashu, è stato sottoposto a un audit di sicurezza professionale da Cure53, una delle aziende di sicurezza più rispettate del settore. Cure53 ha precedentemente verificato Signal, Mullvad VPN e soprattutto la specifica di crittografia &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> che è alla base della messaggistica privata moderna su Nostr.&lt;/p>
&lt;p>L&amp;rsquo;audit ha rilevato oltre 12 problemi di sicurezza (BCH-01-002 fino a BCH-01-013). Il team di Bitchat ha risposto con oltre 17 pull request. Le correzioni principali includono:&lt;/p>
&lt;p>&lt;strong>Cancellazione dei Secret DH del Noise Protocol&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">PR #928&lt;/a> corregge sei punti in cui i secret condivisi Diffie-Hellman non venivano azzerati dopo lo scambio delle chiavi, ripristinando le garanzie di forward secrecy. Quando i secret persistono in memoria più a lungo del necessario, un dump della memoria o un attacco cold boot potrebbero compromettere le comunicazioni passate.&lt;/p>
&lt;p>&lt;strong>Verifica delle Firme&lt;/strong> - Diverse PR rafforzano i percorsi di verifica crittografica, assicurando che i controlli di autenticità dei messaggi non possano essere aggirati tramite input malformati.&lt;/p>
&lt;p>&lt;strong>Thread Safety&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">PR #929&lt;/a> aggiunge la sincronizzazione con barriere alle code delle ricevute di lettura in NostrTransport, prevenendo race condition che potrebbero causare corruzione dei dati o crash con alti volumi di messaggi.&lt;/p>
&lt;p>&lt;strong>Sicurezza della Memoria&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">PR #920&lt;/a> ottimizza il deduplicatore di messaggi per migliori prestazioni con alto throughput di messaggi, evitando l&amp;rsquo;esaurimento della memoria.&lt;/p>
&lt;p>&lt;strong>Validazione degli Input&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">PR #919&lt;/a> rafforza il parsing delle stringhe esadecimali per prevenire crash da input malformati, un vettore di attacco comune per denial-of-service.&lt;/p>
&lt;p>Bitchat gestisce ecash Cashu, rendendo essenziale una revisione di sicurezza professionale. L&amp;rsquo;audit segue quello del &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot&lt;/a> Protocol dello scorso anno e l&amp;rsquo;audit NIP-44 che ha verificato il layer di crittografia.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Approvate:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-71/">NIP-71&lt;/a>&lt;/strong> - Event Video Indirizzabili (&lt;a href="https://github.com/nostr-protocol/nips/pull/1669">#1669&lt;/a>) introduce i kind 34235 (video orizzontale) e 34236 (video verticale) come event indirizzabili. Un tag &lt;code>d&lt;/code> obbligatorio fornisce identificatori univoci, così i metadati video possono essere aggiornati senza ripubblicare l&amp;rsquo;intero event. Un tag &lt;code>origin&lt;/code> opzionale traccia le fonti di importazione. Già implementato in Amethyst e nostrvine.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Crittografia Post-Quantistica&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> propone l&amp;rsquo;aggiunta di algoritmi crittografici resistenti ai computer quantistici in Nostr. La specifica introduce ML-DSA-44 e Falcon-512 per le firme digitali, mirando a &amp;ldquo;event di altissimo valore&amp;rdquo; come applicazioni e autorità piuttosto che singoli utenti. Mentre la crittografia simmetrica di &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> (ChaCha20) è resistente ai quantum, il suo scambio di chiavi usa secp256k1 ECDH che è vulnerabile all&amp;rsquo;algoritmo di Shor. La proposta include ML-KEM per lo scambio di chiavi per colmare questa lacuna. Si tratta di una proposta in fase iniziale che apre la discussione sulla cripto-agilità per la sicurezza a lungo termine di Nostr.&lt;/li>
&lt;li>&lt;strong>BOLT12 per NIP-47&lt;/strong> - Dopo 137 commenti e un&amp;rsquo;ampia discussione, la comunità ha deciso che le offer BOLT12 meritano una specifica propria piuttosto che estendere &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>. Le offer BOLT12 offrono miglioramenti significativi rispetto alle invoice BOLT11, inclusa la riusabilità, migliore privacy attraverso i blinded path e informazioni opzionali sul pagatore. La nuova NIP definirà metodi come &lt;code>make_offer&lt;/code>, &lt;code>pay_offer&lt;/code> e &lt;code>list_offers&lt;/code> per le implementazioni Nostr Wallet Connect.&lt;/li>
&lt;li>&lt;strong>NIP per Tracce Audio&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/1043">PR #1043&lt;/a> propone i kind 32100 per tracce musicali e 32101 per episodi podcast, dando ai contenuti audio lo stesso trattamento di prima classe che NIP-71 fornisce per i video. Attualmente, le piattaforme audio come Wavlake, Zapstr e Stemstr usano ciascuna formati di event proprietari, frammentando l&amp;rsquo;ecosistema. Uno standard comune permetterebbe l&amp;rsquo;interoperabilità così gli utenti potrebbero scoprire e riprodurre audio da qualsiasi client compatibile.&lt;/li>
&lt;li>&lt;strong>NIP-A3 Target di Pagamento Universali&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2119">PR #2119&lt;/a> propone event di kind 10133 che usano URI &lt;code>payto:&lt;/code> RFC-8905 per esporre opzioni di pagamento su reti multiple. Invece di creare kind di event separati per Bitcoin, Lightning, Cashu o sistemi di pagamento tradizionali, questa astrazione permette ai client di interpretare tag standardizzati e invocare handler di pagamento nativi. L&amp;rsquo;approccio è a prova di futuro poiché i nuovi metodi di pagamento necessitano solo di uno schema URI &lt;code>payto:&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="approfondimento-nip-nip-51-e-nip-65">Approfondimento NIP: NIP-51 e NIP-65&lt;/h2>
&lt;p>Questa settimana trattiamo due NIP che memorizzano le preferenze utente: NIP-51 per organizzare i contenuti e NIP-65 per organizzare le connessioni ai relay. Entrambe usano event sostituibili, il che significa che ogni nuova pubblicazione sovrascrive la versione precedente.&lt;/p>
&lt;h3 id="nip-51ittopicsnip-51-liste">&lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>: Liste&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/51.md">NIP-51&lt;/a> definisce diversi tipi di liste per organizzare riferimenti a event, utenti, hashtag e altri contenuti. Amethyst v1.05.0 aggiunge il supporto ai segnalibri, rendendo questo un buon momento per capire come funzionano le liste.&lt;/p>
&lt;p>La specifica definisce diversi kind di liste, ciascuno con uno scopo diverso. Il kind 10000 è la vostra lista di silenziamento per nascondere utenti, thread o parole. Il kind 10001 fissa event da mettere in evidenza sul vostro profilo. Il kind 30003 memorizza i segnalibri, che è ciò che Amethyst ora supporta. Altri kind gestiscono set di following (30000), collezioni di articoli curate (30004), interessi per hashtag (30015) e set di emoji personalizzate (30030).&lt;/p>
&lt;p>Le liste referenziano contenuti attraverso tag. Una lista di segnalibri usa tag &lt;code>e&lt;/code> per event specifici e tag &lt;code>a&lt;/code> per contenuti indirizzabili come articoli:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;ae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30003&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;saved-articles&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abc123def456...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30023:author-pubkey:article-id&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;encrypted-private-bookmarks&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;908a15e46fb4d8675bab026fc230a0e3542bfade63da02d542fb78b2a8513fcd0092619a2c8c1221e581946e0191f2af505dfdf8657a414dbca329186f009262&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il tag &lt;code>d&lt;/code> fornisce un identificatore univoco, così potete mantenere più set di segnalibri come &amp;ldquo;saved-articles&amp;rdquo;, &amp;ldquo;read-later&amp;rdquo; o &amp;ldquo;favorites&amp;rdquo; sotto lo stesso kind.&lt;/p>
&lt;p>Le liste supportano sia elementi pubblici che privati. Gli elementi pubblici appaiono nell&amp;rsquo;array dei tag, visibili a chiunque recuperi l&amp;rsquo;event. Gli elementi privati vanno nel campo &lt;code>content&lt;/code>, crittografati usando &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a> verso voi stessi. Questa doppia struttura vi permette di mantenere segnalibri pubblici aggiungendo note private, o mantenere una lista di silenziamento senza rivelare chi avete silenziato. Per crittografare verso voi stessi, usate NIP-44 con la vostra pubkey come destinatario.&lt;/p>
&lt;p>I kind della serie 10000 sono sostituibili, il che significa che i relay mantengono un solo event per pubkey. La serie 30000 è sostituibile parametrizzata, permettendo un event per combinazione di pubkey e tag &lt;code>d&lt;/code>. In entrambi i casi, aggiornare una lista significa pubblicare una sostituzione completa; non potete inviare modifiche incrementali. I client dovrebbero preservare i tag sconosciuti quando modificano le liste per evitare di sovrascrivere dati aggiunti da altre applicazioni.&lt;/p>
&lt;h3 id="nip-65ittopicsnip-65-metadati-lista-relay">&lt;a href="https://nostrcompass.org/it/topics/nip-65/">NIP-65&lt;/a>: Metadati Lista Relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a> definisce event di kind 10002 che pubblicizzano quali relay un utente preferisce per leggere e scrivere. Questo aiuta altri utenti e client a trovare i vostri contenuti.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;bd2217a96b5835b59f9a6a42d8d8a36f8c9b7d4e5f0a1b2c3d4e5f6a7b8c9d0e1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10002&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.damus.io&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;read&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nos.lol&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.nostr.band&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;write&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ogni tag &lt;code>r&lt;/code> contiene un URL del relay e un marcatore opzionale. Un marcatore &lt;code>write&lt;/code> designa la vostra outbox: relay dove pubblicate i vostri contenuti. Un marcatore &lt;code>read&lt;/code> designa la vostra inbox: relay dove controllate menzioni, risposte e tag. Omettere il marcatore indica entrambi.&lt;/p>
&lt;p>Quando Alice vuole trovare i post di Bob, il suo client recupera il kind 10002 di Bob, estrae i suoi relay write (la sua outbox) e si iscrive lì. Quando Alice risponde a Bob, il suo client pubblica sui suoi relay read (la sua inbox) così lui vedrà la menzione. Questo routing consapevole dei relay è il &amp;ldquo;modello outbox&amp;rdquo;, e distribuisce gli utenti su molti relay invece di concentrare tutti su pochi server centrali.&lt;/p>
&lt;p>NIP-65 gestisce il routing dei contenuti pubblici, ma i messaggi privati usano una lista separata. &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> definisce il kind 10050 per i relay inbox dei DM, usando tag &lt;code>relay&lt;/code> invece di tag &lt;code>r&lt;/code>. Quando inviate a qualcuno un messaggio privato, i client cercano l&amp;rsquo;event kind 10050 del destinatario e pubblicano lì il messaggio crittografato gift-wrapped. Questa separazione mantiene il routing dei DM distinto dal routing dei contenuti pubblici, e permette agli utenti di specificare relay diversi per comunicazioni private rispetto a quelle pubbliche.&lt;/p>
&lt;p>Il modello outbox migliora la resistenza alla censura poiché nessun singolo relay deve memorizzare o servire i contenuti di tutti. I client mantengono connessioni ai relay elencati negli event NIP-65 degli utenti seguiti, collegandosi dinamicamente a nuovi relay mentre scoprono nuovi account. NIP-65 complementa gli hint dei relay trovati in altre NIP. Quando taggate qualcuno con &lt;code>[&amp;quot;p&amp;quot;, &amp;quot;pubkey&amp;quot;, &amp;quot;wss://hint.relay&amp;quot;]&lt;/code>, l&amp;rsquo;hint dice ai client dove cercare quel riferimento specifico. NIP-65 fornisce la lista autorevole controllata dall&amp;rsquo;utente, mentre gli hint offrono scorciatoie incorporate nei singoli event.&lt;/p>
&lt;p>Per migliori risultati, mantenete aggiornata la vostra lista di relay poiché voci obsolete vi rendono più difficili da trovare. La specifica raccomanda da due a quattro relay per categoria. Elencare troppi relay grava su ogni client che vuole recuperare i vostri contenuti, rallentando la loro esperienza e aumentando il carico di rete. I client memorizzano in cache gli event NIP-65 e li aggiornano periodicamente per rimanere al passo con le preferenze aggiornate degli utenti.&lt;/p>
&lt;h2 id="release">Release&lt;/h2>
&lt;p>&lt;strong>Amethyst v1.05.0&lt;/strong> - Il popolare client Android &lt;a href="https://github.com/vitorpamplona/amethyst/releases">rilascia un aggiornamento importante&lt;/a> con diverse funzionalità di rilievo. Le liste di segnalibri &lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a> kind 30003 permettono agli utenti di salvare post per riferimento futuro, sincronizzandosi tra client compatibili. Le note vocali ora funzionano nei DM e nei post regolari con visualizzazione della forma d&amp;rsquo;onda, selezione del media server e indicatori di progresso del caricamento. I punteggi &lt;a href="https://nostrcompass.org/it/topics/web-of-trust/">Web of Trust&lt;/a> sono ora visibili nell&amp;rsquo;interfaccia, aiutando gli utenti a capire come l&amp;rsquo;algoritmo valuta gli account relativamente al loro grafo sociale. La migrazione del database &lt;a href="https://nostrcompass.org/it/topics/quartz/">Quartz&lt;/a> migliora le prestazioni delle query come parte del lavoro Kotlin Multiplatform finanziato da OpenSats. Una release desktop preliminare porta Amethyst su Windows, macOS e Linux tramite Compose Multiplatform, condividendo lo stesso codebase dell&amp;rsquo;app Android. Nuovi flussi di onboarding per gli utenti facilitano l&amp;rsquo;esperienza per chi usa Nostr per la prima volta.&lt;/p>
&lt;p>&lt;strong>Nostur v1.25.3&lt;/strong> - Il client iOS e macOS &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases">si concentra sulla messaggistica privata&lt;/a> con miglioramenti a &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>. Le conversazioni DM ora supportano reazioni e risposte, portando l&amp;rsquo;interattività dei post pubblici nei messaggi crittografati. La vista delle conversazioni è stata rielaborata con un migliore threading così gli scambi multi-messaggio sono più facili da seguire, e i timestamp mostrano &amp;ldquo;tempo fa&amp;rdquo; nella lista DM per una scansione rapida. Gli utenti desktop ottengono layout multi-colonna per visualizzare feed o conversazioni multiple affiancate. Il supporto al remote signer &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> permette agli utenti di mantenere le loro chiavi private in app di firma dedicate come Amber o nsec.app. Correzioni aggiuntive ripristinano la funzionalità DM su iOS 15 e iOS 16, risolvono ritardi nelle notifiche e aggiungono la possibilità di configurare quali relay ricevono i DM pubblicati.&lt;/p>
&lt;h2 id="modifiche-notevoli-a-codice-e-documentazione">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;p>&lt;em>Queste sono pull request aperte e lavori in fase iniziale, perfetti per ricevere feedback prima del merge. Se qualcosa vi interessa, considerate di fare review o commentare!&lt;/em>&lt;/p>
&lt;h3 id="citrine-relay-android">Citrine (Relay Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine/pull/89">PR #89&lt;/a> corregge una vulnerabilità SQL injection nell&amp;rsquo;app relay personale Android. Il problema permetteva a dati di event malformati di eseguire query arbitrarie sul database, un difetto grave per qualsiasi app che memorizza ed elabora input non fidati. La correzione sanifica correttamente tutte le operazioni sul database usando query parametrizzate. Non è ancora stata taggata una release, quindi gli utenti dovranno aspettare la prossima versione o compilare dal sorgente. &lt;a href="https://github.com/greenart7c3/Citrine/pull/90">PR #90&lt;/a> ottimizza le prestazioni delle query ContentProvider con filtraggio e paginazione a livello di database, riducendo la latenza quando app esterne come Amethyst accedono al database di event di Citrine attraverso il layer di comunicazione inter-processo di Android.&lt;/p>
&lt;h3 id="rust-nostr-libreria">rust-nostr (Libreria)&lt;/h3>
&lt;p>Il supporto a &lt;a href="https://nostrcompass.org/it/topics/nip-62/">NIP-62&lt;/a> (Richieste di Scomparsa) si sta espandendo attraverso i backend di database di rust-nostr. &lt;a href="https://github.com/rust-nostr/nostr/pull/1180">PR #1180&lt;/a>, integrata due settimane fa, ha aggiunto il supporto NIP-62 a SQLite, gestendo le richieste di scomparsa &lt;code>ALL_RELAYS&lt;/code> poiché il layer del database non conosce URL specifici dei relay. &lt;a href="https://github.com/rust-nostr/nostr/pull/1210">PR #1210&lt;/a> estende questo al backend LMDB, assicurando che le richieste di scomparsa siano persistite su disco e sopravvivano ai riavvii del relay. Un&amp;rsquo;implementazione IndexedDB per ambienti browser è anche in corso. Insieme, queste modifiche danno agli sviluppatori un supporto NIP-62 coerente attraverso SQLite, LMDB e presto lo storage del browser.&lt;/p>
&lt;h3 id="ndk-nostr-development-kit">NDK (Nostr Development Kit)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/375">PR #375&lt;/a> corregge un bug nel sistema di tracciamento seenEvents. Il problema causava che certi pattern di subscription marcassero erroneamente gli event come già visti, portando a contenuti mancati quando gli utenti aprivano nuove subscription o si riconnettevano ai relay. La correzione assicura che gli event siano tracciati accuratamente attraverso i cicli di vita delle subscription, il che è particolarmente importante per applicazioni che si iscrivono e cancellano dinamicamente in base alla navigazione dell&amp;rsquo;utente. NDK è passato alla beta.70 con questa correzione inclusa.&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3515">PR #3515&lt;/a> corregge un crash all&amp;rsquo;avvio che colpiva gli utenti iOS 17. Il problema derivava da un overflow aritmetico in &lt;code>NdbUseLock&lt;/code>, una classe di fallback usata perché i Mutex di Swift non sono disponibili su iOS 17. La correzione sostituisce l&amp;rsquo;approccio di sincronizzazione precedente con &lt;code>NSLock&lt;/code>, che è disponibile su iOS 17 e gestisce correttamente le race condition rimanenti. Gli utenti iOS 18+ non erano colpiti poiché hanno accesso all&amp;rsquo;implementazione nativa del Mutex Swift.&lt;/p>
&lt;p>Separatamente, un gruppo di miglioramenti per gli articoli longform è arrivato tramite &lt;a href="https://github.com/damus-io/damus/pull/3509">PR #3509&lt;/a>. Le barre di progresso della lettura tracciano la vostra posizione attraverso gli articoli, i tempi di lettura stimati appaiono nelle anteprime, e la modalità seppia con impostazioni di altezza riga regolabili forniscono una lettura più confortevole. La modalità focus nasconde automaticamente la chrome di navigazione durante lo scorrimento verso il basso e la ripristina al tocco, riducendo il disordine visivo per una lettura senza distrazioni. Diverse correzioni affrontano la visualizzazione delle immagini nei contenuti markdown e assicurano che gli articoli si aprano dall&amp;rsquo;inizio piuttosto che a metà.&lt;/p>
&lt;h3 id="zapstream-live-streaming">Zap.stream (Live Streaming)&lt;/h3>
&lt;p>L&amp;rsquo;integrazione della chat di YouTube e Kick collega i messaggi dalle piattaforme di streaming esterne a Nostr. Gli streamer che trasmettono in multicast su YouTube, Kick e Zap.stream possono ora vedere tutti i messaggi della chat in una vista unificata, con i messaggi da ogni piattaforma che appaiono accanto ai commenti nativi Nostr. Questo rimuove un importante punto di attrito per i creator che vogliono usare Nostr per lo streaming ma non possono abbandonare il pubblico sulle piattaforme consolidate. L&amp;rsquo;integrazione mostra da quale piattaforma ha origine ogni messaggio e gestisce il flusso di autenticazione per connettere account esterni.&lt;/p>
&lt;h3 id="chachi-gruppi-nip-29">Chachi (Gruppi NIP-29)&lt;/h3>
&lt;p>Il client di chat di gruppo &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> ha integrato sei PR questa settimana. Un aggiornamento di sicurezza affronta &lt;a href="https://github.com/purrgrammer/chachi/pull/89">CVE-2026-22029&lt;/a>, una vulnerabilità XSS in react-router che potrebbe abilitare attacchi di open redirect; la correzione aggiorna a react-router-dom 6.30.0. &lt;a href="https://github.com/purrgrammer/chachi/pull/92">PR #92&lt;/a> aggiunge il caricamento paginato dei messaggi per le chat di gruppo, così le conversazioni lunghe si caricano incrementalmente piuttosto che tutte insieme. &lt;a href="https://github.com/purrgrammer/chachi/pull/91">PR #91&lt;/a> corregge diversi bug NIP-29 inclusa una race condition che causava nomi di gruppo vuoti al caricamento iniziale e liste di partecipanti non definite che facevano crashare le viste dei membri. La copertura delle traduzioni ora copre tutte le 31 lingue supportate con 1060 chiavi ciascuna.&lt;/p>
&lt;h3 id="0xchat-messaggistica">0xchat (Messaggistica)&lt;/h3>
&lt;p>Il client di messaggistica stile Telegram ha migliorato la conformità a &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> salvando correttamente i nomi dei pacchetti dei signer quando si usano app di firma esterne, correggendo problemi in cui l&amp;rsquo;app perdeva traccia di quale signer usare dopo i riavvii. La gestione delle risposte NIP-17 ora include correttamente il tag &lt;code>e&lt;/code> per il threading, assicurando che le risposte appaiano nel contesto di conversazione corretto attraverso i client. Le ottimizzazioni delle prestazioni affrontano il lag di scorrimento nelle liste di messaggi, un punto dolente comune quando si caricano cronologie di chat lunghe. Il salvataggio automatico delle bozze previene la perdita di messaggi se navigate via durante la composizione, e le opzioni di archiviazione file ora includono endpoint predefiniti FileDropServer e BlossomServer.&lt;/p>
&lt;h3 id="primal-ios">Primal (iOS)&lt;/h3>
&lt;p>Il supporto al remote signer &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> arriva su iOS tramite &lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/184">PR #184&lt;/a>, completando il rollout cross-platform iniziato con Android diverse settimane fa. Gli utenti possono ora mantenere le loro chiavi private in servizi bunker dedicati come nsec.app o istanze nsecBunker self-hosted, connettendosi attraverso relay Nostr per firmare event senza esporre le chiavi all&amp;rsquo;app client. Questa separazione migliora la postura di sicurezza per gli utenti che vogliono usare le funzionalità di Primal mantenendo pratiche di gestione delle chiavi più rigorose. L&amp;rsquo;implementazione include la scansione di codici QR per gli URI di connessione al bunker e gestisce il flusso richiesta/risposta NIP-46 attraverso messaggi relay crittografati.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci tramite DM NIP-17&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #4</title><link>https://nostrcompass.org/it/newsletters/2026-01-07-newsletter/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2026-01-07-newsletter/</guid><description>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Primal Android implementa la firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e il supporto per signer locali &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, trasformandosi in un hub di firma completo per altre app Android. Il team del &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot Protocol&lt;/a> ha affrontato le problematiche emerse da un audit di sicurezza con 18 PR integrate che rafforzano la messaggistica crittografata basata su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a>. Citrine raggiunge la v1.0 e Applesauce rilascia la v5.0 per l&amp;rsquo;intera suite di librerie. TENEX sviluppa la supervisione di agenti AI su Nostr, e Jumble aggiunge il pooling intelligente dei relay. Una correzione alla specifica NIP-55 chiarisce i campi di ritorno di &lt;code>nip44_encrypt&lt;/code>, e una PR per &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> propone estensioni per espressioni di query per ricerche avanzate. Nel nostro approfondimento, spieghiamo &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>: perché la crittografia legacy presenta falle di sicurezza e come la sostituzione moderna le risolve.&lt;/p></description><content:encoded>&lt;p>Bentornati su Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Primal Android implementa la firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e il supporto per signer locali &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, trasformandosi in un hub di firma completo per altre app Android. Il team del &lt;a href="https://nostrcompass.org/it/topics/marmot/">Marmot Protocol&lt;/a> ha affrontato le problematiche emerse da un audit di sicurezza con 18 PR integrate che rafforzano la messaggistica crittografata basata su &lt;a href="https://nostrcompass.org/it/topics/mls/">MLS&lt;/a>. Citrine raggiunge la v1.0 e Applesauce rilascia la v5.0 per l&amp;rsquo;intera suite di librerie. TENEX sviluppa la supervisione di agenti AI su Nostr, e Jumble aggiunge il pooling intelligente dei relay. Una correzione alla specifica NIP-55 chiarisce i campi di ritorno di &lt;code>nip44_encrypt&lt;/code>, e una PR per &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a> propone estensioni per espressioni di query per ricerche avanzate. Nel nostro approfondimento, spieghiamo &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>: perché la crittografia legacy presenta falle di sicurezza e come la sostituzione moderna le risolve.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;p>&lt;strong>Primal Android diventa un Hub di Firma Completo&lt;/strong> - La &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">Versione 2.6.18&lt;/a> aggiunge sia la firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> che la firma locale &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, trasformando Primal in un signer completo per altre app Nostr. La firma remota tramite NIP-46 permette agli utenti di connettersi a servizi bunker attraverso i relay Nostr, mantenendo le chiavi completamente fuori dal dispositivo. La firma locale tramite NIP-55 espone Primal come content provider Android, così app come Amethyst o Citrine possono richiedere firme senza mai toccare la chiave privata. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/839">Diverse PR successive&lt;/a> hanno risolto problemi di compatibilità con il requisito della specifica NIP-55 per pubkey esadecimali, e migliorato il parsing di URI &lt;code>nostrconnect://&lt;/code> malformati. Il rilascio include anche pre-caching dei media per uno scorrimento più fluido, tempi di caricamento dei thread migliorati e pre-caching degli avatar.&lt;/p>
&lt;p>&lt;strong>Marmot Protocol rafforza la sicurezza dopo l&amp;rsquo;Audit&lt;/strong> - Il &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> (mdk), che implementa la messaggistica end-to-end crittografata basata su &lt;a href="https://nostrcompass.org/it/topics/nip-104/">NIP-104&lt;/a> MLS, ha ricevuto ampie correzioni di sicurezza questa settimana. Diciotto pull request integrate hanno affrontato le problematiche dell&amp;rsquo;audit tra cui: &lt;a href="https://github.com/marmot-protocol/mdk/pull/97">verifica hash per immagini di gruppo crittografate&lt;/a> per prevenire attacchi di sostituzione blob a livello storage, &lt;a href="https://github.com/marmot-protocol/mdk/pull/110">paginazione per welcome pendenti&lt;/a> per prevenire esaurimento della memoria, &lt;a href="https://github.com/marmot-protocol/mdk/pull/112">perdita di MLS Group ID nei messaggi di errore&lt;/a>, e &lt;a href="https://github.com/marmot-protocol/mdk/pull/98">applicazione della codifica base64&lt;/a> per i key package. La &lt;a href="https://github.com/marmot-protocol/marmot/pull/20">specifica Marmot stessa è stata aggiornata&lt;/a> con MIP-04 v2 versioning e miglioramenti di sicurezza. PR attive continuano ad affrontare riuso di nonce, azzeramento dei segreti e vettori di inquinamento della cache.&lt;/p>
&lt;p>&lt;strong>Nostrability traccia il supporto Relay Hint&lt;/strong> - Un nuovo &lt;a href="https://github.com/nostrability/nostrability/issues/270">tracker di compatibilità relay hints&lt;/a> documenta come i client costruiscono e consumano relay hint nell&amp;rsquo;ecosistema. Il tracker rivela che mentre la maggior parte dei client ora costruisce hint secondo &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a>, il consumo varia ampiamente: alcuni client includono hint negli eventi in uscita ma non usano gli hint in entrata per il recupero. Sei client hanno ottenuto lo status &amp;ldquo;Full&amp;rdquo; per implementazione completa. Il tracker è utile per sviluppatori che verificano l&amp;rsquo;interoperabilità e per utenti che si chiedono perché alcuni client trovano contenuti che altri non riescono a trovare.&lt;/p>
&lt;p>&lt;strong>Nostria 2.0 rilascia revisione completa delle funzionalità Cross-Platform&lt;/strong> - Il client &lt;a href="https://nostria.app">Nostria&lt;/a> &lt;a href="#ZgotmplZ">ha rilasciato la versione 2.0&lt;/a> il 30 dicembre con aggiunte significative su iOS (TestFlight), Android (Play Store), Web e Windows. Il rilascio aggiunge supporto nativo per la musica con creazione di playlist, caricamento di tracce, pagamenti agli artisti basati su zap, e un player in stile WinAmp con equalizzatore funzionante. Lo streaming live ottiene l&amp;rsquo;integrazione Game API che mostra metadati ricchi durante gli streaming di gameplay. Una nuova funzione Summary genera digest di attività orari, giornalieri o settimanali come viste timeline compresse. La sezione Discover offre liste curate per trovare contenuti e profili. La pubblicazione di media è semplificata con generazione automatica di post short-form per la scoperta cross-client. Le connessioni ai signer remoti ora funzionano tramite scansione di codici QR senza configurazione manuale. La scoperta dei profili affronta un problema comune di Nostr: quando gli utenti si spostano tra relay senza portare i propri metadati, Nostria localizza il loro profilo e lo ripubblica sui relay correnti. Gli abbonati Premium ottengono integrazione con canali YouTube, Memo privati, dashboard analitiche e backup automatici delle liste di following con opzioni di merge/restore.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Integrate:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Corretto il campo di ritorno per il metodo &lt;code>nip44_encrypt&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2184">#2184&lt;/a>). I signer Android devono ora restituire il payload crittografato nel campo &lt;code>signature&lt;/code> (come &lt;code>nip44_decrypt&lt;/code>) invece che in un campo separato. Questo allinea la specifica con le implementazioni esistenti in Amber e Primal.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR Aperte:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>&lt;/strong> - Estensioni Espressioni di Query (&lt;a href="https://github.com/nostr-protocol/nips/pull/2182">#2182&lt;/a>) propone di estendere la ricerca NIP-50 con espressioni di query strutturate. La PR aggiunge operatori come &lt;code>kind:1&lt;/code>, &lt;code>author:npub1...&lt;/code>, e combinazioni booleane (&lt;code>AND&lt;/code>, &lt;code>OR&lt;/code>, &lt;code>NOT&lt;/code>), abilitando query di ricerca più precise oltre il semplice matching testuale. Questo permetterebbe ai client di costruire interfacce di ricerca avanzate mantenendo la retrocompatibilità con stringhe di ricerca base.&lt;/li>
&lt;/ul>
&lt;h2 id="approfondimento-nip-nip-04-e-nip-44">Approfondimento NIP: NIP-04 e NIP-44&lt;/h2>
&lt;p>Questa settimana copriamo gli standard di crittografia Nostr: il legacy NIP-04 che incontrerete ancora, e la sua sostituzione moderna NIP-44 che corregge falle di sicurezza critiche.&lt;/p>
&lt;h3 id="nip-04ittopicsnip-04-messaggi-diretti-crittografati-legacy">&lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a>: Messaggi Diretti Crittografati (Legacy)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/04.md">NIP-04&lt;/a> è stato il primo tentativo di Nostr per la messaggistica crittografata, usando eventi di kind 4. Sebbene semplice da implementare, ha debolezze di sicurezza note ed è deprecato in favore di NIP-44.&lt;/p>
&lt;p>&lt;strong>Come funziona:&lt;/strong> NIP-04 usa ECDH (Elliptic Curve Diffie-Hellman) per derivare un segreto condiviso tra mittente e destinatario, poi crittografa con AES-256-CBC.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event-id&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;sender-pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736200000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;recipient-pubkey&amp;gt;&amp;#34;&lt;/span>]],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;base64-ciphertext?iv=base64-iv&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il flusso di crittografia:&lt;/p>
&lt;ol>
&lt;li>Calcola il punto condiviso: &lt;code>shared = ECDH(sender_privkey, recipient_pubkey)&lt;/code>&lt;/li>
&lt;li>Deriva la chiave: &lt;code>key = SHA256(shared_x_coordinate)&lt;/code>&lt;/li>
&lt;li>Genera IV casuale di 16 byte&lt;/li>
&lt;li>Crittografa: &lt;code>ciphertext = AES-256-CBC(key, iv, plaintext)&lt;/code>&lt;/li>
&lt;li>Formatta il contenuto: &lt;code>base64(ciphertext)?iv=base64(iv)&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Problemi di sicurezza:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Nessuna autenticazione:&lt;/strong> AES-CBC fornisce confidenzialità ma non integrità. Un attaccante che controlla un relay potrebbe modificare bit del ciphertext, causando modifiche prevedibili al plaintext (attacchi bit-flipping).&lt;/li>
&lt;li>&lt;strong>IV in chiaro:&lt;/strong> Il vettore di inizializzazione è trasmesso insieme al ciphertext, e la modalità CBC con IV prevedibili abilita attacchi chosen-plaintext.&lt;/li>
&lt;li>&lt;strong>Nessuna validazione del padding:&lt;/strong> Le implementazioni variano nel modo in cui gestiscono il padding PKCS#7, potenzialmente abilitando attacchi padding oracle.&lt;/li>
&lt;li>&lt;strong>Esposizione dei metadati:&lt;/strong> La pubkey del mittente, la pubkey del destinatario e il timestamp sono tutti visibili ai relay.&lt;/li>
&lt;li>&lt;strong>Riuso della chiave:&lt;/strong> Lo stesso segreto condiviso è usato per tutti i messaggi tra due parti, per sempre.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Perché esiste ancora:&lt;/strong> Molti client e relay più vecchi supportano solo NIP-04. Lo incontrerete quando interagite con sistemi legacy. Signer come Amber e app come Primal implementano ancora &lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code> per retrocompatibilità.&lt;/p>
&lt;h3 id="nip-44ittopicsnip-44-crittografia-versionata">&lt;a href="https://nostrcompass.org/it/topics/nip-44/">NIP-44&lt;/a>: Crittografia Versionata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/44.md">NIP-44&lt;/a> è lo standard di crittografia moderno, progettato per correggere le falle note di NIP-04. Un audit di sicurezza Cure53 delle implementazioni NIP-44 ha identificato 10 problemi (inclusi attacchi temporali e preoccupazioni sulla forward secrecy) che sono stati affrontati prima della finalizzazione della specifica. Usa ChaCha20-Poly1305 con derivazione di chiave appropriata e crittografia autenticata.&lt;/p>
&lt;p>&lt;strong>Miglioramenti chiave rispetto a NIP-04:&lt;/strong>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Aspetto&lt;/th>
 &lt;th style="text-align: left">NIP-04&lt;/th>
 &lt;th style="text-align: left">NIP-44&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Cifrario&lt;/td>
 &lt;td style="text-align: left">AES-256-CBC&lt;/td>
 &lt;td style="text-align: left">XChaCha20-Poly1305&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Autenticazione&lt;/td>
 &lt;td style="text-align: left">Nessuna&lt;/td>
 &lt;td style="text-align: left">Poly1305 MAC&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Derivazione chiave&lt;/td>
 &lt;td style="text-align: left">SHA256(shared_x)&lt;/td>
 &lt;td style="text-align: left">HKDF con salt&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Nonce&lt;/td>
 &lt;td style="text-align: left">IV 16 byte, pattern riusato&lt;/td>
 &lt;td style="text-align: left">Nonce casuale 24 byte&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Padding&lt;/td>
 &lt;td style="text-align: left">PKCS#7 (rivela lunghezza)&lt;/td>
 &lt;td style="text-align: left">Arrotondato a potenza di 2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Versionamento&lt;/td>
 &lt;td style="text-align: left">Nessuno&lt;/td>
 &lt;td style="text-align: left">Prefisso byte versione&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Flusso di crittografia:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Chiave di conversazione:&lt;/strong> Deriva una chiave stabile per ogni coppia mittente-destinatario:&lt;/p>
&lt;pre tabindex="0">&lt;code>shared_x = ECDH(sender_privkey, recipient_pubkey).x
conversation_key = HKDF-SHA256(
 ikm = shared_x,
 salt = &amp;#34;nip44-v2&amp;#34;,
 info = &amp;#34;&amp;#34;
)
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Chiavi del messaggio:&lt;/strong> Per ogni messaggio, genera un nonce casuale di 32 byte e deriva chiavi di crittografia/autenticazione:&lt;/p>
&lt;pre tabindex="0">&lt;code>keys = HKDF-SHA256(
 ikm = conversation_key,
 salt = nonce,
 info = &amp;#34;nip44-v2&amp;#34;
)
chacha_key = keys[0:32]
chacha_nonce = keys[32:44]
hmac_key = keys[44:76]
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Padding del plaintext:&lt;/strong> Arrotonda alla prossima potenza di 2 (minimo 32 byte) per nascondere la lunghezza del messaggio:&lt;/p>
&lt;pre tabindex="0">&lt;code>padded = [length_u16_be] + [plaintext] + [zeri fino alla prossima potenza di 2]
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Crittografa e autentica:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>ciphertext = XChaCha20(chacha_key, chacha_nonce, padded)
mac = HMAC-SHA256(hmac_key, nonce + ciphertext)
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Formatta il payload:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>payload = [version=0x02] + [nonce] + [ciphertext] + [mac]
content = base64(payload)
&lt;/code>&lt;/pre>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Byte di versione:&lt;/strong> Il primo byte (&lt;code>0x02&lt;/code>) indica la versione di crittografia. Questo permette upgrade futuri senza compromettere i messaggi esistenti. La versione &lt;code>0x01&lt;/code> era una bozza precedente mai ampiamente distribuita.&lt;/p>
&lt;p>&lt;strong>Decrittografia:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Decodifica base64, verifica che il byte di versione sia &lt;code>0x02&lt;/code>&lt;/li>
&lt;li>Estrai nonce (byte 1-32), ciphertext e MAC (ultimi 32 byte)&lt;/li>
&lt;li>Deriva la chiave di conversazione usando la chiave privata del destinatario e la chiave pubblica del mittente&lt;/li>
&lt;li>Deriva le chiavi del messaggio dalla chiave di conversazione e dal nonce&lt;/li>
&lt;li>Verifica il MAC prima di decrittografare (rifiuta se non valido)&lt;/li>
&lt;li>Decrittografa il ciphertext, estrai il prefisso di lunghezza, restituisci il plaintext senza padding&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Proprietà di sicurezza:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Crittografia autenticata:&lt;/strong> Il MAC Poly1305 assicura che qualsiasi manomissione sia rilevata prima della decrittografia&lt;/li>
&lt;li>&lt;strong>Forward secrecy (parziale):&lt;/strong> Ogni messaggio usa un nonce unico, quindi compromettere un messaggio non rivela gli altri. Tuttavia, compromettere una chiave privata rivela comunque tutti i messaggi passati (nessun ratcheting).&lt;/li>
&lt;li>&lt;strong>Occultamento della lunghezza:&lt;/strong> Il padding a potenza di 2 oscura la lunghezza esatta del messaggio&lt;/li>
&lt;li>&lt;strong>Resistenza agli attacchi temporali:&lt;/strong> Confronto a tempo costante per la verifica del MAC&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Uso pratico:&lt;/strong> NIP-44 è il livello di crittografia per:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> messaggi diretti privati (dentro gift wrap)&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> comunicazione con signer remoti&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> crittografia seal&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/it/topics/nip-104/">Marmot Protocol&lt;/a> messaggi di gruppo, dove NIP-44 avvolge contenuto crittografato MLS usando una chiave derivata dal segreto esportatore MLS&lt;/li>
&lt;li>Qualsiasi applicazione che necessita crittografia sicura punto-a-punto&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Guida alla migrazione:&lt;/strong> Le nuove applicazioni dovrebbero usare esclusivamente NIP-44. Per retrocompatibilità, verificate se il client del contatto supporta NIP-44 (tramite metadati app &lt;a href="https://nostrcompass.org/it/topics/nip-89/">NIP-89&lt;/a> o supporto relay) prima di ricadere su NIP-04. Quando ricevete messaggi, tentate prima la decrittografia NIP-44, poi ricadete su NIP-04 per contenuti legacy.&lt;/p>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;p>&lt;strong>Primal Android v2.6.18&lt;/strong> - Il &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">rilascio completo&lt;/a> aggiunge firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> e firma locale &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, trasformando Primal in un hub di firma per altre app Android. I miglioramenti delle prestazioni includono pre-caching dei media, pre-caching degli avatar e caricamento più veloce dei thread. Le correzioni di bug affrontano auto-menzioni nelle bio, crash nella galleria media e fallback dei titoli degli stream. Su iOS, Primal usa la riproduzione audio in background per mantenere l&amp;rsquo;app attiva per ricevere richieste di firma NIP-46; gli utenti possono cambiare il suono o silenziarlo completamente nelle impostazioni.&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.6&lt;/strong> - L&amp;rsquo;&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.6">ultimo rilascio&lt;/a> della piattaforma di trading P2P Bitcoin &lt;a href="https://nostrcompass.org/it/topics/nip-69/">NIP-69&lt;/a> completa l&amp;rsquo;implementazione del fondo di sviluppo con gli eventi di audit della Fase 4. I pagamenti delle commissioni dev sono ora tracciati tramite eventi Nostr kind 38383 pubblicati dopo ogni pagamento riuscito, abilitando verifica e analytics di terze parti. I calcoli degli importi sono stati corretti per i messaggi acquirente/venditore, e la logica del premium è stata allineata con l&amp;rsquo;implementazione di riferimento lnp2pbot.&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.5&lt;/strong> - Il signer cross-platform &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.5">aggiunge la modalità scura&lt;/a>, visualizzazione migliorata delle icone app e layout UI più puliti. Le correzioni di bug affrontano conflitti iOS iCloud Private Relay e problemi di parsing degli eventi. Il rilascio migliora anche come il JSON degli eventi viene passato alla funzione di firma Rust.&lt;/p>
&lt;p>&lt;strong>Citrine v1.0.0&lt;/strong> - L&amp;rsquo;app relay Android &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v1.0.0">raggiunge la 1.0&lt;/a>. Citrine permette di eseguire un relay Nostr personale direttamente sul dispositivo Android, utile per caching locale, backup o come companion NIP-55. Questo rilascio aggiunge un gestore di crash report, migliora l&amp;rsquo;efficienza delle query database e aggiorna le traduzioni tramite Crowdin.&lt;/p>
&lt;p>&lt;strong>Applesauce v5.0.0&lt;/strong> - La suite di librerie TypeScript di hzrd149 &lt;a href="https://github.com/hzrd149/applesauce/releases">rilascia una major version&lt;/a> con breaking changes focalizzati su correttezza e semplicità. Il pacchetto core ora &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.0.0">verifica le firme degli eventi per default&lt;/a> e rinomina i metodi coordinate per usare terminologia &amp;ldquo;address&amp;rdquo; più chiara (&lt;code>parseCoordinate&lt;/code> -&amp;gt; &lt;code>parseReplaceableAddress&lt;/code>). Il pacchetto relay &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-relay%405.0.0">abbassa i retry di default da 10 a 3&lt;/a> e ignora i relay irraggiungibili per default, più aggiunge &lt;code>createUnifiedEventLoader&lt;/code> per un recupero eventi più semplice. Il pacchetto wallet ottiene la &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-wallet%405.0.0">scoperta mint Cashu&lt;/a> &lt;a href="https://nostrcompass.org/it/topics/nip-87/">NIP-87&lt;/a>. Le dipendenze dirette da &lt;code>nostr-tools&lt;/code> sono state rimosse dai pacchetti, riducendo dimensione del bundle e conflitti di versione.&lt;/p>
&lt;h2 id="modifiche-notevoli-a-codice-e-documentazione">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;p>&lt;em>Queste sono pull request aperte e lavori in fase iniziale, perfetti per ricevere feedback prima del merge. Se qualcosa vi interessa, considerate di revisionare o commentare!&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>Una serie di PR migliorano l&amp;rsquo;esperienza degli articoli longform. &lt;a href="https://github.com/damus-io/damus/pull/3496">Miglioramenti UX di lettura&lt;/a> aggiungono una barra di progresso, tempo di lettura stimato, modalità seppia, altezza delle righe regolabile e modalità focus che nasconde la navigazione durante lo scorrimento. &lt;a href="https://github.com/damus-io/damus/pull/3489">Correzioni immagini&lt;/a> assicurano che le immagini nel contenuto markdown vengano visualizzate con proporzioni corrette preprocessando le immagini standalone come elementi block-level. &lt;a href="https://github.com/damus-io/damus/pull/3497">Card anteprima longform&lt;/a> sostituiscono il testo inline &lt;code>@naddr1...&lt;/code> con card di anteprima ricche che mostrano titolo dell&amp;rsquo;articolo e metadati. Una nuova &lt;a href="https://github.com/damus-io/damus/pull/3508">suite di test di integrazione relay&lt;/a> aggiunge 137 test relativi alla rete inclusa verifica protocollo &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> e comportamento in condizioni di rete degradate (simulazione 3G).&lt;/p>
&lt;h3 id="bitchat-messaggistica-crittografata">Bitchat (Messaggistica Crittografata)&lt;/h3>
&lt;p>Rafforzamento della sicurezza nel messenger iOS Nostr+Cashu. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">Pulizia segreti DH protocollo Noise&lt;/a> corregge sei posizioni dove i segreti condivisi non venivano azzerati dopo l&amp;rsquo;accordo chiavi Diffie-Hellman, ripristinando le garanzie di forward secrecy. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">Thread safety per code read receipt&lt;/a> aggiunge sincronizzazione barrier per prevenire race condition in NostrTransport. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">Ottimizzazione deduplicatore messaggi&lt;/a> migliora le prestazioni con alti volumi di messaggi, e &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">rafforzamento parsing stringhe hex&lt;/a> previene crash da input malformato.&lt;/p>
&lt;h3 id="frostr-firma-a-soglia">Frostr (Firma a Soglia)&lt;/h3>
&lt;p>Il protocollo di firma a soglia basato su &lt;a href="https://nostrcompass.org/it/topics/frost/">FROST&lt;/a> &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/pull/62">ha aggiunto visualizzazione codici QR&lt;/a> per credenziali di gruppo e credenziali di share durante l&amp;rsquo;onboarding e nell&amp;rsquo;interfaccia signer. Questo abilita una configurazione più semplice quando si distribuiscono key share su dispositivi multipli, permettendo agli utenti di scansionare credenziali invece di copiare manualmente stringhe lunghe.&lt;/p>
&lt;h3 id="marmot-mdk-libreria">Marmot mdk (Libreria)&lt;/h3>
&lt;p>Oltre alle correzioni di sicurezza menzionate sopra, PR attive affrontano i rimanenti risultati dell&amp;rsquo;audit: &lt;a href="https://github.com/marmot-protocol/mdk/pull/109">Tipo Secret&lt;T> per azzeramento&lt;/a> introduce un tipo wrapper che azzera automaticamente i dati sensibili alla distruzione, &lt;a href="https://github.com/marmot-protocol/mdk/pull/111">paginazione query messaggi&lt;/a> previene esaurimento memoria durante il caricamento della cronologia chat, e &lt;a href="https://github.com/marmot-protocol/mdk/pull/102">storage crittografato&lt;/a> aggiunge crittografia a riposo per il database SQLite che memorizza stato di gruppo e messaggi.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>Una settimana intensa di correzioni di stabilità nel client Android. &lt;a href="https://github.com/vitorpamplona/amethyst/commit/2c42796">Parsing JSON tollerante&lt;/a> previene crash da eventi malformati rendendo Kotlin Serialization più permissiva. La validazione eventi ora &lt;a href="https://github.com/vitorpamplona/amethyst/commit/40f9622">controlla la dimensione del campo kind&lt;/a> prima dell&amp;rsquo;elaborazione per evitare eccezioni da valori sovradimensionati. La UI del trust score ha ottenuto un&amp;rsquo;icona più piccola per ridurre l&amp;rsquo;interferenza visiva, e &lt;a href="https://github.com/vitorpamplona/amethyst/commit/69c53ac">logging errori migliorato&lt;/a> aiuta a diagnosticare problemi di connessione ai relay. Aggiornamenti delle traduzioni sono arrivati tramite Crowdin, e diversi warning SonarQube sono stati affrontati.&lt;/p>
&lt;h3 id="tenex-agenti-ai">TENEX (Agenti AI)&lt;/h3>
&lt;p>Il framework di agenti AI nativo Nostr ha visto 81 commit questa settimana per costruire capacità autonome. Il nuovo &lt;a href="https://github.com/tenex-chat/tenex/pull/48">sistema di supervisione agenti&lt;/a> implementa euristiche comportamentali per monitorare le azioni degli agenti e intervenire quando necessario. &lt;a href="https://github.com/tenex-chat/tenex/commit/b244c10">Trasparenza della delega&lt;/a> aggiunge logging degli interventi utente alle trascrizioni di delega, così gli utenti possono verificare cosa hanno fatto gli agenti per loro conto. Il &lt;a href="https://github.com/tenex-chat/tenex/pull/47">registro provider LLM&lt;/a> è stato modularizzato per una più facile integrazione di diversi backend AI. Il supporto conversazioni cross-project permette agli agenti di mantenere il contesto attraverso multipli progetti basati su Nostr.&lt;/p>
&lt;h3 id="jumble-client-web">Jumble (Client Web)&lt;/h3>
&lt;p>Il client web focalizzato sui relay ha aggiunto diversi miglioramenti all&amp;rsquo;esperienza utente. &lt;a href="https://github.com/CodyTseng/jumble/commit/695f2fe">Pool relay intelligente&lt;/a> gestisce intelligentemente le connessioni basandosi sui pattern di utilizzo. &lt;a href="https://github.com/CodyTseng/jumble/commit/917fcd9">Toggle feed live&lt;/a> permette agli utenti di passare tra streaming in tempo reale e refresh manuale. &lt;a href="https://github.com/CodyTseng/jumble/commit/d1b3a8c">Auto-mostra nuove note&lt;/a> in cima fa emergere contenuto fresco senza richiedere ricaricamento della pagina. &lt;a href="https://github.com/CodyTseng/jumble/commit/fd9f41c">Cache persistente&lt;/a> per feed following e notifiche migliora i tempi di caricamento alle visite successive. Gli utenti possono ora &lt;a href="https://github.com/CodyTseng/jumble/commit/53a67d8">cambiare i relay di default&lt;/a> attraverso le impostazioni.&lt;/p>
&lt;hr>
&lt;p>Questo è tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via NIP-17 DM&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #3</title><link>https://nostrcompass.org/it/newsletters/2025-12-31-newsletter/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2025-12-31-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> mentre il 2025 si chiude, ripercorriamo cinque anni di traguardi di dicembre nell&amp;rsquo;evoluzione di Nostr. Dal primo rilascio client di fiatjaf nel dicembre 2020, passando per la decisiva donazione di 14 BTC di Jack Dorsey nel dicembre 2022, fino alla proliferazione dei signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> di questo mese e all&amp;rsquo;accelerazione di 162x della cache di NDK, dicembre ha segnato con costanza momenti di svolta per il protocollo. Questo numero speciale segue la storia tecnica attraverso ogni dicembre, documentando la crescita del protocollo da due relay sperimentali a oltre 2.500 nodi in 50 paesi. In più: il modulo desktop di Amethyst prende forma tramite Quartz, Notedeck guadagna la messaggistica, Citrine ospita web app, e &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> corregge l&amp;rsquo;internazionalizzazione per gli script non latini.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> mentre il 2025 si chiude, ripercorriamo cinque anni di traguardi di dicembre nell&amp;rsquo;evoluzione di Nostr. Dal primo rilascio client di fiatjaf nel dicembre 2020, passando per la decisiva donazione di 14 BTC di Jack Dorsey nel dicembre 2022, fino alla proliferazione dei signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> di questo mese e all&amp;rsquo;accelerazione di 162x della cache di NDK, dicembre ha segnato con costanza momenti di svolta per il protocollo. Questo numero speciale segue la storia tecnica attraverso ogni dicembre, documentando la crescita del protocollo da due relay sperimentali a oltre 2.500 nodi in 50 paesi. In più: il modulo desktop di Amethyst prende forma tramite Quartz, Notedeck guadagna la messaggistica, Citrine ospita web app, e &lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a> corregge l&amp;rsquo;internazionalizzazione per gli script non latini.&lt;/p>
&lt;h2 id="retrospettiva-di-dicembre-cinque-dicembre-di-nostr">Retrospettiva di Dicembre: Cinque Dicembre di Nostr&lt;/h2>
&lt;p>Quest&amp;rsquo;anno Nostr compie cinque anni. fiatjaf ha avviato il protocollo il 7 novembre 2020, e ogni dicembre da allora ha segnato una fase distinta della sua evoluzione: da proof of concept a movimento globale fino a ecosistema di produzione. Questa è una retrospettiva tecnica da dicembre 2020 a dicembre 2025, gli anni formativi che hanno stabilito le fondamenta di Nostr e ne hanno catalizzato il momento di svolta.&lt;/p>
&lt;h3 id="dicembre-2020-genesi">Dicembre 2020: Genesi&lt;/h3>
&lt;p>Il primo mese completo di esistenza di Nostr ha visto fiatjaf pubblicare &lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, il primo client del protocollo, costruito con Quasar (Vue.js) e absurd-sql per lo storage locale. fiatjaf aveva già definito l&amp;rsquo;architettura di base: utenti identificati da chiavi pubbliche secp256k1, tutti i post firmati crittograficamente, relay che fungono da storage stupido senza comunicare tra loro. Uno o due relay sperimentali servivano un piccolo gruppo di primi adottanti che si coordinavano nel gruppo Telegram &lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a>, lanciato il 16 novembre. La &lt;a href="https://fiatjaf.com/nostr.html">documentazione originale&lt;/a> descriveva &amp;ldquo;il più semplice protocollo aperto capace di creare un social network globale resistente alla censura&amp;rdquo;, una premessa che avrebbe richiesto altri due anni per dimostrarsi.&lt;/p>
&lt;h3 id="dicembre-2021-sviluppo-iniziale">Dicembre 2021: Sviluppo Iniziale&lt;/h3>
&lt;p>Il 31 dicembre 2021, Nostr è arrivato sulla &lt;a href="https://news.ycombinator.com/item?id=29749061">front page di Hacker News&lt;/a> con 110 punti e 138 commenti, grazie a una submission di Cameri. Questo ha segnato la prima esposizione significativa del protocollo alla più ampia comunità di sviluppatori. La rete funzionava su circa sette relay con meno di 1.000 utenti. Branle ha ricevuto aggiornamenti inclusa l&amp;rsquo;importazione di chiavi private il 31 dicembre e il supporto multi-relay. Un client da riga di comando, noscl, forniva interazione da terminale. Le specifiche del protocollo esistevano nella documentazione di fiatjaf, anche se il repository formale dei &lt;a href="https://github.com/nostr-protocol/nips">NIPs&lt;/a> non sarebbe stato creato fino a maggio 2022. Il protocollo era, come lo descriveva fiatjaf, &amp;ldquo;un work in progress&amp;rdquo;.&lt;/p>
&lt;h3 id="dicembre-2022-il-punto-di-svolta">Dicembre 2022: Il Punto di Svolta&lt;/h3>
&lt;p>Dicembre 2022 ha trasformato Nostr da esperimento di nicchia a movimento mainstream. Il catalizzatore è arrivato il 15 dicembre, quando Jack Dorsey ha donato &lt;a href="https://www.coindesk.com/tech/2022/12/15/jack-dorsey-gives-decentralized-social-network-nostr-14-btc-in-funding">14.17171699 BTC&lt;/a> (~$245.000-$250.000) a fiatjaf dopo aver scoperto il protocollo e aver dichiarato che era &amp;ldquo;al 100 percento ciò che volevamo da Bluesky, ma non era sviluppato da un&amp;rsquo;azienda&amp;rdquo;. Il 16 dicembre fiatjaf ha annunciato la divisione dei fondi con William Casarin (jb55), sviluppatore di Damus, e Dorsey ha verificato il suo account Nostr (npub: &lt;code>npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m&lt;/code>). Il finanziamento ha legittimato il progetto dall&amp;rsquo;oggi al domani.&lt;/p>
&lt;p>Nella stessa settimana, il caos di Twitter ha accelerato l&amp;rsquo;adozione. Il 14-15 dicembre sono arrivate le sospensioni di giornalisti di primo piano del New York Times, CNN e Washington Post. Il 18 dicembre Twitter ha &lt;a href="https://techcrunch.com/2022/12/18/twitter-wont-let-you-post-your-facebook-instagram-and-mastodon-handles/">annunciato il divieto&lt;/a> per gli account che promuovevano Nostr, Mastodon e altre piattaforme. La policy è stata revocata il giorno successivo dopo il contraccolpo pubblico. L&amp;rsquo;esodo ha spinto gli utenti a esplorare alternative.&lt;/p>
&lt;p>Lo sviluppo del protocollo ha subito un&amp;rsquo;impennata. Il 16 dicembre è stato unito &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/pull/57">#57&lt;/a>), introducendo identificatori codificati in bech32 (npub, nsec, note, nprofile, nevent) che rendevano le chiavi leggibili dagli umani e distinguibili. Il repository NIPs ha registrato oltre 36 commit quel mese, inclusi aggiornamenti a NIP-40 e NIP-07. I client si sono moltiplicati: Damus ha riempito la beta TestFlight in poche ore, Astral ha forkato Branle per la creazione dei profili, Snort è stato lanciato come client web &amp;ldquo;veloce e resistente alla censura&amp;rdquo;, e Vitor Pamplona ha iniziato lo sviluppo di Amethyst. Alby v1.22.1 &amp;ldquo;Kemble&amp;rsquo;s Cascade of Stars&amp;rdquo; è uscita il 22 dicembre con supporto NIP-19. Al 7 dicembre, Nostr aveva circa 800 utenti con profili; quando Damus è arrivato sull&amp;rsquo;App Store il 31 gennaio 2023, i cancelli si sono spalancati, spingendo la crescita oltre 315.000 utenti entro giugno 2023.&lt;/p>
&lt;h3 id="dicembre-2023-maturazione-dellecosistema">Dicembre 2023: Maturazione dell&amp;rsquo;Ecosistema&lt;/h3>
&lt;p>Dicembre 2023 ha segnato un punto di inflessione critico per la sicurezza del protocollo Nostr. Il 20 dicembre, &lt;a href="https://github.com/nostr-protocol/nips/pull/746">NIP-44 revisione 3 è stato unito&lt;/a> dopo un audit di sicurezza indipendente di Cure53 (NOS-01) che ha identificato 10 problemi nelle implementazioni TypeScript, Go e Rust, inclusi timing attack e problemi di forward secrecy. La specifica aggiornata ha sostituito la cifratura difettosa di &lt;a href="https://nostrcompass.org/it/topics/nip-04/">NIP-04&lt;/a> con ChaCha20 e HMAC-SHA256, stabilendo la base crittografica che oggi sostiene i DM privati di &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> e il gift wrapping di &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>. Nella stessa settimana, &lt;a href="https://opensats.org/blog/nostr-grants-december-2023">OpenSats ha annunciato la quarta ondata di grant&lt;/a> il 21 dicembre, finanziando sette progetti tra cui Lume, noStrudel, ZapThreads e un audit indipendente di NIP-44. Questo seguiva la &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">prima ondata di luglio 2023&lt;/a>, che aveva finanziato Damus, Coracle, Iris e altri, portando l&amp;rsquo;allocazione totale del Nostr Fund a circa 3,4 milioni di dollari distribuiti su 39 grant.&lt;/p>
&lt;p>Il mese ha anche messo in luce tensioni di sostenibilità nell&amp;rsquo;ecosistema. Il 28 dicembre, William Casarin (jb55) &lt;a href="https://stacker.news/items/368863">ha scritto su Stacker News&lt;/a> che il 2024 sarebbe stato &amp;ldquo;probabilmente l&amp;rsquo;ultimo anno di Damus&amp;rdquo;, citando il fatto che &amp;ldquo;i client nostr non fanno soldi&amp;rdquo; dopo che le restrizioni di Apple sugli zaps in-app avevano limitato pesantemente il potenziale di ricavo. Il team Damus aveva già rifiutato finanziamenti VC. Nel frattempo, &lt;a href="https://github.com/getAlby/nostr-wallet-connect/releases/tag/0.4.1">Nostr Wallet Connect v0.4.1&lt;/a> è uscita il 26 dicembre, estendendo &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> con i metodi &lt;code>pay_keysend&lt;/code>, &lt;code>make_invoice&lt;/code>, &lt;code>lookup_invoice&lt;/code>, &lt;code>list_transactions&lt;/code>, &lt;code>get_balance&lt;/code> e &lt;code>get_info&lt;/code>, gettando le basi per le integrazioni wallet che sarebbero poi diventate standard nei client.&lt;/p>
&lt;h3 id="dicembre-2024-avanzamento-del-protocollo">Dicembre 2024: Avanzamento del Protocollo&lt;/h3>
&lt;p>Dicembre 2024 si è aperto con il &lt;a href="https://damus.io/notedeck/">lancio alpha di Notedeck&lt;/a> il 30 novembre, il client desktop Rust-based del team Damus con interfaccia multi-colonna e supporto per più account. Costruito per Linux, macOS e Windows, con Android pianificato per il 2025, Notedeck è stato inizialmente distribuito agli abbonati Damus Purple e ha rappresentato un&amp;rsquo;espansione strategica oltre iOS. Due settimane dopo, &lt;a href="https://opensats.org/blog/9th-wave-of-nostr-grants">OpenSats ha annunciato la nona ondata di grant&lt;/a> il 16 dicembre, finanziando AlgoRelay, il primo relay algoritmico per feed personalizzati, Pokey, app Android con Bluetooth mesh per internet limitato, Nostr Safebox (&lt;a href="https://nostrcompass.org/it/topics/nip-60/">NIP-60&lt;/a> con storage di token &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a>) e LumiLumi, client web leggero e accessibile, spingendo l&amp;rsquo;allocazione totale del Nostr Fund a circa 9 milioni di dollari, un aumento del 67% su base annua.&lt;/p>
&lt;p>Il mese ha visto una significativa maturazione dei client in tutto l&amp;rsquo;ecosistema. &lt;a href="https://github.com/mikedilger/gossip/releases/tag/v0.13.0">Gossip 0.13.0&lt;/a> è arrivato il 23 dicembre con supporto File Metadata (&lt;a href="https://nostrcompass.org/it/topics/nip-92/">NIP-92&lt;/a>/&lt;a href="https://nostrcompass.org/it/topics/nip-94/">NIP-94&lt;/a>), integrazione Blossom e ricerca relay di &lt;a href="https://nostrcompass.org/it/topics/nip-50/">NIP-50&lt;/a>. &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.5.0">Coracle 0.5.0&lt;/a> è uscita il 12 dicembre con onboarding rielaborato e integrazione nostr-editor. Lo sviluppo del protocollo è rimasto attivo con 30 pull request inviate tra il 9 e il 22 dicembre, di cui 10 unite, inclusi riscritture di &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a> per usare solo la cifratura NIP-44 e il lavoro continuo su &lt;a href="https://nostrcompass.org/it/topics/nip-104/">NIP-104&lt;/a> per la cifratura double ratchet a livello Signal. Le statistiche di rete hanno mostrato oltre 224.000 trusted pubkey event giornalieri, una crescita di 4x anno su anno nei nuovi profili con contact list e un aumento del 50% negli event di scrittura pubblica.&lt;/p>
&lt;h3 id="dicembre-2025-espansione-dellecosistema">Dicembre 2025: Espansione dell&amp;rsquo;Ecosistema&lt;/h3>
&lt;p>Dicembre 2025 ha portato la prosecuzione della maturazione del protocollo e dell&amp;rsquo;espansione dell&amp;rsquo;ecosistema. Il 21 dicembre, &lt;a href="https://opensats.org/blog/fourteenth-wave-of-nostr-grants">OpenSats ha annunciato la quattordicesima ondata di grant Nostr&lt;/a>, finanziando tre progetti: YakiHonne, un client multi-piattaforma con creator portal per contenuti long-form e integrazione pagamenti &lt;a href="https://nostrcompass.org/it/topics/cashu/">Cashu&lt;/a>/Nutzaps, Quartz, la libreria Kotlin Multiplatform di Vitor Pamplona che alimenta Amethyst e permetterà una versione iOS, e Nostr Feedz, l&amp;rsquo;integrazione bidirezionale RSS-to-Nostr di PlebOne. I rinnovi dei grant sono andati a Dart NDK e al nostr-relay di Mattn.&lt;/p>
&lt;p>L&amp;rsquo;evoluzione del protocollo è continuata con &lt;a href="https://nostrcompass.org/it/topics/nip-be/">NIP-BE&lt;/a> (messaggistica Bluetooth Low Energy, &lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>) unito a novembre, permettendo la sincronizzazione offline tra dispositivi. &lt;a href="https://nostrcompass.org/it/topics/nip-a4/">NIP-A4&lt;/a> (Public Messages, kind 24, &lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>) è arrivato più tardi nel mese, definendo messaggi per la schermata notifiche che usano tag &lt;code>q&lt;/code> per evitare complicazioni di threading. &lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a> ha ricevuto un importante chiarimento (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>), introducendo il tag &lt;code>hidden&lt;/code> per gruppi veramente privati e non individuabili. Anche la specifica di &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> ha visto affinamenti (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>), affrontando un errore di implementazione comune in cui gli sviluppatori chiamavano &lt;code>get_public_key&lt;/code> da processi in background.&lt;/p>
&lt;p>Sul lato client, &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#news">Primal Android è diventato un signer NIP-55 completo&lt;/a> attraverso otto PR unite che implementano &lt;code>LocalSignerContentProvider&lt;/code>, unendosi ad Amber e Aegis come opzioni di firma Android. La &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#notable-code-and-documentation-changes">libreria NDK ha raggiunto query cache 162x più veloci&lt;/a>, passando da ~3.690ms a ~22ms, eliminando scritture duplicate e lookup non necessari nella cache LRU (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/371">PR #371&lt;/a>, &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/372">PR #372&lt;/a>). Shopstr ha introdotto &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#news">Zapsnags&lt;/a> per flash sale via zaps. White Noise ha distribuito &lt;a href="https://nostrcompass.org/it/topics/mip-05/">MIP-05&lt;/a> per notifiche push che preservano la privacy. Per una copertura completa, consultate &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-17-newsletter/">Newsletter #1&lt;/a> e &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/">Newsletter #2&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>Cinque anni fa, fiatjaf pubblicò Branle per una manciata di utenti distribuiti su due relay sperimentali. Oggi il protocollo supporta oltre 140 client, più di 2.500 relay in 50 paesi e una crescente web of trust che collega centinaia di migliaia di coppie di chiavi. Il modello di dicembre fatto di grandi rilasci è continuato anche questo mese, con messaggistica Bluetooth, proliferazione di signer Android e grant infrastrutturali che segnalano investimenti continui negli strumenti cross-platform.&lt;/p>
&lt;h2 id="notizie">Notizie&lt;/h2>
&lt;p>&lt;strong>Amethyst Desktop prende forma&lt;/strong> - Il grant Quartz della quattordicesima ondata di OpenSats sta già producendo risultati. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1625">PR #1625&lt;/a> crea un modulo &lt;code>:desktopApp&lt;/code> completo per Amethyst usando Compose Multiplatform, con schermate di login e global feed già funzionanti su Desktop JVM. L&amp;rsquo;architettura converte il modulo &lt;code>:commons&lt;/code> in Kotlin Multiplatform con una struttura pulita dei source set (&lt;code>commonMain&lt;/code>, &lt;code>jvmAndroid&lt;/code>, &lt;code>androidMain&lt;/code>, &lt;code>jvmMain&lt;/code>), permettendo componenti UI condivisi tra Android e desktop e lasciando le decisioni specifiche della piattaforma a ciascun target. Questo getta le basi per la futura versione iOS tramite lo stesso approccio Kotlin Multiplatform.&lt;/p>
&lt;p>&lt;strong>Risposte vocali in Amethyst&lt;/strong> - Un regalo di Natale da davotoula: &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1622">PR #1622&lt;/a> aggiunge schermate dedicate alle risposte vocali con visualizzazione della waveform, supporto alla ri-registrazione, selezione del media server e indicatori di avanzamento upload. Gli utenti possono ora rispondere con audio sia ai messaggi vocali root sia alle risposte vocali.&lt;/p>
&lt;p>&lt;strong>Notedeck aggiunge la messaggistica&lt;/strong> - Notedeck, il client desktop di Damus, ha guadagnato una funzione messaggi in &lt;a href="https://github.com/damus-io/notedeck/pull/1223">PR #1223&lt;/a>, espandendosi oltre la navigazione della timeline verso la comunicazione diretta.&lt;/p>
&lt;p>&lt;strong>Citrine ospita web app&lt;/strong> - Citrine ora può &lt;a href="https://github.com/greenart7c3/Citrine/pull/81">ospitare applicazioni web&lt;/a>, trasformando il telefono in un server web Nostr local-first. Una seconda &lt;a href="https://github.com/greenart7c3/Citrine/pull/85">PR #85&lt;/a> aggiunge la riconnessione automatica e il broadcasting degli event quando la connettività di rete ritorna, con copertura di test completa su diversi livelli API Android.&lt;/p>
&lt;p>&lt;strong>Registro Nostrability per developer toolkit&lt;/strong> - Il tracker &lt;a href="https://github.com/nostrability/nostrability/issues/264">Developer Kits &amp;amp; Tooling&lt;/a> mantiene un registro curato di SDK, librerie e strumenti per sviluppatori in diversi linguaggi, tra cui TypeScript, Rust, Python, Go, Dart e Swift. Se siete nuovi allo sviluppo su Nostr, questo è un buon punto di partenza per trovare il toolkit adatto al vostro stack.&lt;/p>
&lt;h2 id="aggiornamenti-nip">Aggiornamenti NIP&lt;/h2>
&lt;p>Cambiamenti recenti nel &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-54/">NIP-54&lt;/a>&lt;/strong> - Correzione critica di internazionalizzazione per la normalizzazione dei d-tag wiki (&lt;a href="https://github.com/nostr-protocol/nips/pull/2177">#2177&lt;/a>). Le regole precedenti convertivano tutti i caratteri non ASCII in &lt;code>-&lt;/code>, rompendo il supporto a giapponese, cinese, arabo, cirillico e altri script. La specifica aggiornata preserva le lettere UTF-8, applica il lowercase solo ai caratteri che hanno varianti maiuscole/minuscole e include esempi completi: &lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code> resta &lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code>, &lt;code>&amp;quot;Москва&amp;quot;&lt;/code> diventa &lt;code>&amp;quot;москва&amp;quot;&lt;/code>, e script misti come &lt;code>&amp;quot;日本語 Article&amp;quot;&lt;/code> si normalizzano in &lt;code>&amp;quot;日本語-article&amp;quot;&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="rilasci">Rilasci&lt;/h2>
&lt;p>&lt;strong>Zapstore 1.0-rc1&lt;/strong> - Il permissionless app store basato su Nostr distribuisce il &lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.0-rc1">primo release candidate&lt;/a> della sua nuova architettura, con un completo refresh della UI, package manager riscritto con migliore gestione degli errori, App Stacks per la scoperta curata, schermate profilo riprogettate, controllo degli aggiornamenti in background e infinite scrolling nelle liste delle release.&lt;/p>
&lt;p>&lt;strong>KeyChat v1.38.1&lt;/strong> - L&amp;rsquo;app di messaggistica cifrata basata su MLS &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.38.1%2B6489">aggiunge il supporto a UnifiedPush&lt;/a> per le notifiche push su Android e Linux, oltre all&amp;rsquo;autenticazione biometrica per le operazioni che incidono sulla privacy. Disponibile per Android, Windows, macOS e Linux.&lt;/p>
&lt;p>&lt;strong>Alby Go v2.0.0&lt;/strong> - Il companion mobile wallet Lightning &lt;a href="https://github.com/getAlby/go/releases/tag/v2.0.0">distribuisce un redesign visivo&lt;/a> con nuovo logo, palette colori aggiornata, rubrica riprogettata e tastiera migliorata per l&amp;rsquo;inserimento degli importi. BTC Map è ora accessibile dalla schermata principale e le descrizioni delle transazioni compaiono nelle notifiche.&lt;/p>
&lt;p>&lt;strong>nak v0.17.4&lt;/strong> - Lo strumento Nostr da riga di comando di fiatjaf è stato &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.4">rilasciato&lt;/a>, dopo la correzione della settimana scorsa in v0.17.3 alla restrizione Linux di LMDB.&lt;/p>
&lt;h2 id="cambiamenti-notevoli-nel-codice-e-nella-documentazione">Cambiamenti notevoli nel codice e nella documentazione&lt;/h2>
&lt;p>&lt;em>Pull request aperte e lavori nelle prime fasi che vale la pena osservare.&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3477">Relay hint NIP-19&lt;/a> implementa il consumo dei relay hint nel recupero degli event. Quando gli utenti aprono link nevent, nprofile o naddr, Damus ora estrae i relay hint dai dati bech32 TLV e si connette a relay effimeri per recuperare contenuti che non si trovano nel relay pool dell&amp;rsquo;utente. L&amp;rsquo;implementazione include cleanup ref-counted per prevenire race condition durante lookup concorrenti. &lt;a href="https://github.com/damus-io/damus/pull/3474">Image URL detection&lt;/a> converte automaticamente gli URL immagine incollati in anteprime thumbnail nel composer, con un badge di posizione nel carosello per immagini multiple. &lt;a href="https://github.com/damus-io/damus/pull/3473">npub paste conversion&lt;/a> trasforma stringhe npub/nprofile incollate in link mention con risoluzione asincrona del profilo.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1627">Payment targets&lt;/a> aggiunge un&amp;rsquo;interfaccia event per gli zap split &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>, permettendo ai post di specificare più destinatari che condividono gli zaps in arrivo, utile per collaborazioni, revenue sharing o mance sia ai creatori di contenuti sia agli strumenti che usano. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1624">Quartz feature parity documentation&lt;/a> aggiunge una tabella dettagliata che traccia quali funzionalità sono implementate tra target Android, Desktop JVM e iOS, evidenziando che a iOS mancano la crittografia core (&lt;code>Secp256k1Instance&lt;/code>), la serializzazione JSON e le strutture dati.&lt;/p>
&lt;h3 id="notedeck-desktop">Notedeck (Desktop)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1226">Timeline filter rebuild&lt;/a> corregge un bug per cui gli account non più seguiti continuavano a comparire nei feed. I filtri della timeline venivano costruiti una sola volta a partire dalla contact list e non venivano mai aggiornati; la correzione aggiunge il tracciamento di &lt;code>contact_list_timestamp&lt;/code> e un metodo &lt;code>invalidate()&lt;/code> per innescare la ricostruzione quando cambia lo stato dei follow.&lt;/p>
&lt;h3 id="citrine-relay-android">Citrine (Relay Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine/pull/86">ContentProvider API&lt;/a> espone il database event del relay locale alle altre app Android tramite &lt;code>ContentResolver&lt;/code>. A differenza dell&amp;rsquo;interfaccia WebSocket, che richiede alle app di mantenere una connessione persistente e parlare il protocollo relay Nostr, ContentProvider offre accesso diretto sincrono al database tramite il meccanismo IPC nativo di Android. Le app esterne possono interrogare gli event per ID, pubkey, kind o intervallo di date, inserire nuovi event con validazione e cancellarli senza dover gestire connessioni socket.&lt;/p>
&lt;h3 id="rust-nostr-libreria">rust-nostr (Libreria)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1183">Supporto NIP-40 a livello relay&lt;/a> aggiunge la gestione della scadenza al livello del relay builder. Gli event scaduti vengono ora rifiutati prima dello storage e filtrati prima dell&amp;rsquo;invio ai client, eliminando la necessità che ogni implementazione del database gestisca i controlli di scadenza in modo indipendente.&lt;/p>
&lt;h3 id="nak-cli">nak (CLI)&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak/pull/91">Blossom mirror&lt;/a> implementa la funzionalità di mirroring blob per lo strumento da riga di comando.&lt;/p>
&lt;h3 id="mostro-trading-p2p">Mostro (Trading P2P)&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/559">Dev fee audit events&lt;/a> aggiunge audit trail trasparenti per i pagamenti del fondo sviluppo tramite event Nostr di kind 8383. L&amp;rsquo;implementazione pubblica event di audit non bloccanti dopo i pagamenti fee riusciti, includendo dettagli dell&amp;rsquo;ordine e hash dei pagamenti ed escludendo le pubkey di buyer e seller per motivi di privacy.&lt;/p>
&lt;h3 id="mdk-marmot-development-kit">MDK (Marmot Development Kit)&lt;/h3>
&lt;p>Sono arrivate tre correzioni da security audit: &lt;a href="https://github.com/marmot-protocol/mdk/pull/40">Author verification&lt;/a> impone che le rumor pubkey corrispondano alle credenziali MLS del mittente, impedendo attacchi di impersonation. &lt;a href="https://github.com/marmot-protocol/mdk/pull/41">KeyPackage identity binding&lt;/a> verifica che l&amp;rsquo;identità della credential corrisponda ai signer degli event. &lt;a href="https://github.com/marmot-protocol/mdk/pull/42">Admin update validation&lt;/a> impedisce set admin vuoti e assegnazioni admin a non membri.&lt;/p>
&lt;h3 id="shopstr-marketplace">Shopstr (Marketplace)&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/217">HODL invoice escrow&lt;/a> implementa un sistema di pagamento trust-minimized per beni fisici. L&amp;rsquo;architettura usa &lt;code>makeHoldInvoice&lt;/code> di Alby per bloccare i fondi del buyer nel suo wallet, con settlement attivato solo dopo la verifica dell&amp;rsquo;inventario da parte del merchant. Il protocollo di handshake scorre attraverso DM cifrati di &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>: il buyer invia la richiesta ordine, il merchant risponde con la HODL invoice, il buyer paga con fondi bloccati, il merchant conferma stock e spedizione, poi il settlement rilascia i fondi. Il supporto cart multi-merchant divide i pagamenti tra i vendor.&lt;/p>
&lt;h3 id="jumble-client-web">Jumble (Client Web)&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/pull/713">Per-relay discovery mode&lt;/a> aggiunge un toggle per nascondere i post degli utenti seguiti su relay specifici, permettendo feed di scoperta basati sulla lingua, per esempio nostr.band/lang/*. La funzionalità filtra i post in cui la pubkey dell&amp;rsquo;autore compare nella follow list dell&amp;rsquo;utente, persistendo lo stato del toggle per URL relay in localStorage.&lt;/p>
&lt;h3 id="white-noise-messaggistica-cifrata">White Noise (Messaggistica Cifrata)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/937">Media upload retry&lt;/a> aggiunge opzioni di retry per gli upload falliti. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/927">Profile edit warnings&lt;/a> avvisano gli utenti sulle modifiche al profilo. Sul backend, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/422">whitenoise-rs&lt;/a> corregge una race condition nella creazione di AccountGroup.&lt;/p>
&lt;h3 id="npubcash-servizio-lightning-address">npub.cash (Servizio Lightning Address)&lt;/h3>
&lt;p>&lt;a href="https://github.com/cashubtc/npubcash-server/pull/40">v3 rewrite&lt;/a> migra il monorepo e il server a Bun, aggiunge il supporto SQLite, rimuove la compatibilità v1, implementa LUD-21 e aggiunge aggiornamenti realtime per le mint quote.&lt;/p>
&lt;h3 id="nostr-java-libreria">nostr-java (Libreria)&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v1.1.1">v1.1.1&lt;/a> distribuisce refactor della gestione WebSocket e una migliore robustezza dei test attraverso &lt;a href="https://github.com/tcheeric/nostr-java/pull/499">due PR&lt;/a>.&lt;/p>
&lt;h3 id="repository-nips">Repository NIPs&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2180">Migrazione Djot di NIP-54&lt;/a> propone una modifica separata alla specifica wiki: passare il formato dei contenuti da Asciidoc a Djot, un linguaggio di markup leggero con sintassi più pulita. La PR introduce link in stile reference per i wikilink, rendendo i riferimenti incrociati tra articoli wiki più leggibili nel sorgente. &lt;a href="https://github.com/nostr-protocol/nips/pull/2179">NIP-XX Quorum&lt;/a> introduce la governance threshold multi-signature per i gruppi Nostr usando FROST. Un Quorum è un nsec condiviso tra i membri attraverso uno schema T-of-N in cui i membri possono rappresentare sé stessi o delegare a un consiglio di rappresentanti. Quando il consiglio cambia, il vecchio nsec diventa obsoleto e uno nuovo viene distribuito; l&amp;rsquo;atto finale di ogni consiglio è firmare l&amp;rsquo;event di transizione della governance. La specifica definisce membership pubblica o privata, elezioni e poll, eventuali &amp;ldquo;leggi&amp;rdquo; in linguaggio naturale e, soprattutto, ontologie di quorum in cui i quorum possono essere membri di altri quorum, permettendo strutture gerarchiche come località che aderiscono a organismi regionali. I casi d&amp;rsquo;uso vanno dallo sviluppo di codice sorgente ai consigli di amministrazione, dalle HOA alle comunità moderate.&lt;/p>
&lt;hr>
&lt;p>Per questa settimana e per quest&amp;rsquo;anno è tutto. State costruendo qualcosa? Avete novità da condividere? Volete che parliamo del vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM NIP-17&lt;/a> o cercateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #2</title><link>https://nostrcompass.org/it/newsletters/2025-12-24-newsletter/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2025-12-24-newsletter/</guid><description>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Tre implementazioni signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> ricevono aggiornamenti: Amber aggiunge caching delle prestazioni, Aegis ottiene supporto URI &lt;code>nostrsigner:&lt;/code>, e Primal Android si unisce a loro come signer locale completo. Shopstr introduce &amp;ldquo;Zapsnags&amp;rdquo; per vendite flash tramite zap. Mostro aggiunge un fondo di sviluppo. Quattro aggiornamenti NIP arrivano inclusi Messaggi Pubblici (kind 24) e miglioramenti alla privacy dei gruppi. Le query cache NDK accelerano di 162x, Applesauce aggiunge reazioni e supporto wallet NIP-60, e Tenex introduce l&amp;rsquo;architettura RAL per la delega di agenti AI. Nel nostro approfondimento, spieghiamo &lt;a href="https://nostrcompass.org/it/topics/nip-02/">NIP-02&lt;/a> (liste follow) e &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> (threading delle risposte), specifiche fondamentali per costruire timeline sociali e conversazioni.&lt;/p></description><content:encoded>&lt;p>Bentornati a Nostr Compass, la vostra guida settimanale all&amp;rsquo;ecosistema del protocollo Nostr.&lt;/p>
&lt;p>&lt;strong>Questa settimana:&lt;/strong> Tre implementazioni signer &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> ricevono aggiornamenti: Amber aggiunge caching delle prestazioni, Aegis ottiene supporto URI &lt;code>nostrsigner:&lt;/code>, e Primal Android si unisce a loro come signer locale completo. Shopstr introduce &amp;ldquo;Zapsnags&amp;rdquo; per vendite flash tramite zap. Mostro aggiunge un fondo di sviluppo. Quattro aggiornamenti NIP arrivano inclusi Messaggi Pubblici (kind 24) e miglioramenti alla privacy dei gruppi. Le query cache NDK accelerano di 162x, Applesauce aggiunge reazioni e supporto wallet NIP-60, e Tenex introduce l&amp;rsquo;architettura RAL per la delega di agenti AI. Nel nostro approfondimento, spieghiamo &lt;a href="https://nostrcompass.org/it/topics/nip-02/">NIP-02&lt;/a> (liste follow) e &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> (threading delle risposte), specifiche fondamentali per costruire timeline sociali e conversazioni.&lt;/p>
&lt;h2 id="news">Notizie&lt;/h2>
&lt;p>&lt;strong>Primal Android Diventa un Signer NIP-55&lt;/strong> - Costruendo sul &lt;a href="https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/#primal-android">supporto Nostr Connect della settimana scorsa&lt;/a>, Primal ha implementato capacita&amp;rsquo; complete di firma locale attraverso otto pull request unite. L&amp;rsquo;implementazione include un &lt;code>LocalSignerContentProvider&lt;/code> completo che espone le operazioni di firma ad altre app Android tramite l&amp;rsquo;interfaccia content provider di Android, seguendo la specifica &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>. L&amp;rsquo;architettura separa chiaramente le responsabilita&amp;rsquo;: &lt;code>SignerActivity&lt;/code> gestisce i flussi di approvazione rivolti all&amp;rsquo;utente, &lt;code>LocalSignerService&lt;/code> gestisce le operazioni in background, e un nuovo sistema di permessi consente agli utenti di controllare quali app possono richiedere firme. Questo rende Primal un&amp;rsquo;alternativa valida ad Amber per gli utenti Android che vogliono mantenere le proprie chiavi in un&amp;rsquo;app mentre ne usano altre per diverse esperienze Nostr.&lt;/p>
&lt;p>&lt;strong>Shopstr Zapsnags: Vendite Flash via Lightning&lt;/strong> - Il marketplace nativo Nostr ha introdotto &lt;a href="https://github.com/shopstr-eng/shopstr/pull/211">&amp;ldquo;Zapsnags&amp;rdquo;&lt;/a>, una funzionalita&amp;rsquo; di vendita flash che consente agli acquirenti di acquistare articoli direttamente dal loro feed sociale con un singolo zap. L&amp;rsquo;implementazione filtra le note kind 1 taggate con &lt;code>#shopstr-zapsnag&lt;/code> e le renderizza come schede prodotto con un pulsante &amp;ldquo;Zap to Buy&amp;rdquo; invece del flusso carrello standard. Quando un acquirente fa uno zap, il sistema genera una richiesta di pagamento usando &lt;a href="https://nostrcompass.org/it/topics/nip-57/">NIP-57&lt;/a>, controlla la ricevuta zap kind 9735 per confermare il pagamento, poi cripta le informazioni di spedizione usando il gift wrapping &lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a> prima di inviarle privatamente al venditore. La funzionalita&amp;rsquo; memorizza i dettagli dell&amp;rsquo;acquirente localmente per acquisti ripetuti e include una dashboard per commercianti per creare inserzioni di vendita flash. E&amp;rsquo; una combinazione intelligente di primitive sociali, di pagamento e di privacy che dimostra come il design componibile di Nostr abiliti nuovi pattern di commercio.&lt;/p>
&lt;p>&lt;strong>Mostro Introduce Fondo di Sviluppo&lt;/strong> - La piattaforma di trading Bitcoin P2P &lt;a href="https://nostrcompass.org/it/topics/nip-69/">NIP-69&lt;/a> ha &lt;a href="https://github.com/MostroP2P/mostro/pull/555">implementato commissioni di sviluppo configurabili&lt;/a> per supportare la manutenzione sostenibile. Gli operatori possono impostare &lt;code>dev_fee_percentage&lt;/code> tra 10-100% della commissione di trading Mostro (default 30%), che viene automaticamente instradata a un fondo di sviluppo ad ogni scambio riuscito. L&amp;rsquo;implementazione aggiunge tre colonne database (&lt;code>dev_fee&lt;/code>, &lt;code>dev_fee_paid&lt;/code>, &lt;code>dev_fee_payment_hash&lt;/code>) per tracciare i contributi e valida la percentuale all&amp;rsquo;avvio del daemon. La documentazione tecnica in &lt;a href="https://github.com/MostroP2P/mostro/blob/main/docs/DEV_FEE.md">&lt;code>docs/DEV_FEE.md&lt;/code>&lt;/a> spiega il sistema. Questo modello opt-in consente agli operatori di supportare lo sviluppo continuo mantenendo piena trasparenza sull&amp;rsquo;allocazione delle commissioni.&lt;/p>
&lt;h2 id="nip-updates">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Nuovi NIP:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-a4/">NIP-A4&lt;/a> (Messaggi Pubblici, kind 24)&lt;/strong> - Un nuovo kind per messaggi dello schermo notifiche progettato per ampio supporto client (&lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>). A differenza delle conversazioni threaded, questi messaggi non hanno concetto di cronologia chat o catene di messaggi. Usano tag &lt;code>q&lt;/code> (citazioni) invece di tag &lt;code>e&lt;/code> per evitare complicazioni di threading, rendendoli ideali per semplici notifiche pubbliche che appaiono nel feed notifiche di un destinatario senza creare stato di conversazione.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Modifiche Significative:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> - Importante chiarimento della semantica dei gruppi (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>). Il tag &lt;code>closed&lt;/code> ora significa &amp;ldquo;impossibile scrivere&amp;rdquo; (sola lettura per non-membri), disaccoppiato dalla meccanica di adesione. Un nuovo tag &lt;code>hidden&lt;/code> impedisce ai relay di servire eventi di metadati o membri ai non-membri, abilitando gruppi veramente privati che sono impossibili da scoprire senza invito out-of-band. Il tag &lt;code>private&lt;/code> controlla la visibilita&amp;rsquo; dei messaggi permettendo comunque metadati pubblici per la scoperta.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - Aggiunto kind 30006 per set di immagini curate (&lt;a href="https://github.com/nostr-protocol/nips/pull/2170">#2170&lt;/a>), seguendo il pattern di 30004 (articoli) e 30005 (video). Gia&amp;rsquo; implementato in Nostria.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Chiarito l&amp;rsquo;avvio della connessione per signer Android (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>). Gli sviluppatori che implementavano sessioni multi-utente usavano erroneamente &lt;code>get_public_key&lt;/code> chiamandolo da processi in background. La specifica aggiornata raccomanda di chiamarlo solo una volta durante la connessione iniziale, prevenendo un comune errore di implementazione.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-02-and-nip-10">Approfondimento NIP: NIP-02 e NIP-10&lt;/h2>
&lt;p>Questa settimana copriamo due NIP essenziali per la funzionalita&amp;rsquo; sociale: come i client sanno chi seguite e come le conversazioni sono threaded.&lt;/p>
&lt;h3 id="nip-02ittopicsnip-02-lista-follow">&lt;a href="https://nostrcompass.org/it/topics/nip-02/">NIP-02&lt;/a>: Lista Follow&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/02.md">NIP-02&lt;/a> definisce gli eventi kind 3, che memorizzano la vostra lista follow. Questo semplice meccanismo alimenta il grafo sociale che rende possibili le timeline.&lt;/p>
&lt;p>&lt;strong>Struttura:&lt;/strong> Un evento kind 3 contiene tag &lt;code>p&lt;/code> che elencano le pubkey seguite:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7a8f...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a3b9c...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734912000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">3&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;91cf9..af5f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://alicerelay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;alice&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb..8dad&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://bobrelay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bob&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;612ae..982b&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e4f8a...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ogni tag &lt;code>p&lt;/code> ha quattro posizioni: il nome del tag, la pubkey seguita (esadecimale), un suggerimento URL relay opzionale, e un &amp;ldquo;petname&amp;rdquo; opzionale (un soprannome locale). Il suggerimento relay dice ad altri client dove trovare gli eventi di quell&amp;rsquo;utente. Il petname vi consente di assegnare nomi memorabili ai contatti senza affidarvi ai nomi visualizzati auto-dichiarati.&lt;/p>
&lt;p>&lt;strong>Comportamento sostituibile:&lt;/strong> Kind 3 rientra nell&amp;rsquo;intervallo sostituibile (0, 3, 10000-19999), quindi i relay mantengono solo l&amp;rsquo;ultima versione per pubkey. Quando seguite qualcuno di nuovo, il vostro client pubblica un nuovo kind 3 completo contenente tutti i vostri follow piu&amp;rsquo; quello nuovo. Questo significa che le liste follow devono essere complete ogni volta; non potete pubblicare aggiornamenti incrementali.&lt;/p>
&lt;p>&lt;strong>Costruire timeline:&lt;/strong> Per costruire un feed home, i client recuperano il kind 3 dell&amp;rsquo;utente, estraggono tutte le pubkey dai tag &lt;code>p&lt;/code>, poi si iscrivono agli eventi kind 1 da quegli autori:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;REQ&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;home&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;kinds&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>], &lt;span style="color:#f92672">&amp;#34;authors&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;91cf9...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;612ae...&amp;#34;&lt;/span>], &lt;span style="color:#f92672">&amp;#34;limit&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">50&lt;/span>}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il relay restituisce le note corrispondenti, e il client le renderizza. I suggerimenti relay nel kind 3 aiutano i client a sapere quali relay interrogare per ogni utente seguito.&lt;/p>
&lt;p>&lt;strong>Petname e identita&amp;rsquo;:&lt;/strong> Il campo petname abilita uno schema di naming decentralizzato. Invece di fidarvi di qualsiasi nome un utente dichiara nel suo profilo, potete assegnare la vostra etichetta. Un client potrebbe visualizzare &amp;ldquo;alice (Mia Sorella)&amp;rdquo; dove &amp;ldquo;alice&amp;rdquo; viene dal suo profilo kind 0 e &amp;ldquo;Mia Sorella&amp;rdquo; e&amp;rsquo; il vostro petname. Questo fornisce contesto che i nomi utente globali non possono.&lt;/p>
&lt;p>&lt;strong>Considerazioni pratiche:&lt;/strong> Poiche&amp;rsquo; gli eventi kind 3 sono sostituibili e devono essere completi, i client dovrebbero preservare tag sconosciuti durante l&amp;rsquo;aggiornamento. Se un altro client ha aggiunto tag che il vostro client non capisce, sovrascrivere alla cieca perderebbe quei dati. Aggiungete nuovi follow invece di ricostruire da zero.&lt;/p>
&lt;h3 id="nip-10ittopicsnip-10-threading-note-di-testo">&lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a>: Threading Note di Testo&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/10.md">NIP-10&lt;/a> specifica come le note kind 1 si referenziano a vicenda per formare thread di risposte. Capire questo e&amp;rsquo; essenziale per costruire viste di conversazione.&lt;/p>
&lt;p>&lt;strong>Il problema:&lt;/strong> Quando qualcuno risponde a una nota, i client devono sapere: A cosa e&amp;rsquo; una risposta? Qual e&amp;rsquo; la radice della conversazione? Chi dovrebbe essere notificato? NIP-10 risponde a queste domande attraverso tag &lt;code>e&lt;/code> (riferimenti eventi) e tag &lt;code>p&lt;/code> (menzioni pubkey).&lt;/p>
&lt;p>&lt;strong>Tag marcati (preferiti):&lt;/strong> I client moderni usano marcatori espliciti nei tag &lt;code>e&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f9c2e...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a3b9c...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734912345&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abc123...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;root&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;def456...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reply&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;91cf9...&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb...&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Ottimo punto! Sono d&amp;#39;accordo.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b7d3f...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il marcatore &lt;code>root&lt;/code> punta alla nota originale che ha iniziato il thread. Il marcatore &lt;code>reply&lt;/code> punta alla nota specifica a cui si sta rispondendo. Se rispondete direttamente alla root, usate solo &lt;code>root&lt;/code> (nessun tag &lt;code>reply&lt;/code> necessario). La distinzione conta per il rendering: il &lt;code>reply&lt;/code> determina l&amp;rsquo;indentazione in una vista thread, mentre &lt;code>root&lt;/code> raggruppa tutte le risposte insieme.&lt;/p>
&lt;p>&lt;strong>Regole di threading:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Risposta diretta alla root: Un tag &lt;code>e&lt;/code> con marcatore &lt;code>root&lt;/code>&lt;/li>
&lt;li>Risposta a una risposta: Due tag &lt;code>e&lt;/code>, uno &lt;code>root&lt;/code> e uno &lt;code>reply&lt;/code>&lt;/li>
&lt;li>Il &lt;code>root&lt;/code> rimane costante in tutto il thread; &lt;code>reply&lt;/code> cambia in base a cosa state rispondendo&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Tag pubkey per notifiche:&lt;/strong> Includete tag &lt;code>p&lt;/code> per tutti quelli che dovrebbero essere notificati. Come minimo, taggate l&amp;rsquo;autore della nota a cui state rispondendo. La convenzione e&amp;rsquo; anche includere tutti i tag &lt;code>p&lt;/code> dall&amp;rsquo;evento parent (cosi&amp;rsquo; tutti nella conversazione rimangono nel loop), piu&amp;rsquo; qualsiasi utente che @menzionate nel vostro contenuto.&lt;/p>
&lt;p>&lt;strong>Suggerimenti relay:&lt;/strong> La terza posizione nei tag &lt;code>e&lt;/code> e &lt;code>p&lt;/code> puo&amp;rsquo; contenere un URL relay dove quell&amp;rsquo;evento o contenuto utente potrebbe essere trovato. Questo aiuta i client a recuperare il contenuto referenziato anche se non sono connessi al relay originale.&lt;/p>
&lt;p>&lt;strong>Tag posizionali deprecati:&lt;/strong> Le prime implementazioni Nostr inferivano il significato dalla posizione del tag invece che dai marcatori: il primo tag &lt;code>e&lt;/code> era root, l&amp;rsquo;ultimo era reply, quelli in mezzo erano menzioni. Questo approccio e&amp;rsquo; deprecato perche&amp;rsquo; crea ambiguita&amp;rsquo;. Se vedete tag &lt;code>e&lt;/code> senza marcatori, sono probabilmente da client piu&amp;rsquo; vecchi. Le implementazioni moderne dovrebbero sempre usare marcatori espliciti.&lt;/p>
&lt;p>&lt;strong>Costruire viste thread:&lt;/strong> Per visualizzare un thread, recuperate l&amp;rsquo;evento root, poi interrogate tutti gli eventi con un tag &lt;code>e&lt;/code> che referenzia quella root:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;REQ&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;thread&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;kinds&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>], &lt;span style="color:#f92672">&amp;#34;#e&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;&amp;lt;root-event-id&amp;gt;&amp;#34;&lt;/span>]}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ordinate i risultati per &lt;code>created_at&lt;/code> e usate i marcatori &lt;code>reply&lt;/code> per costruire la struttura ad albero. Gli eventi il cui &lt;code>reply&lt;/code> punta alla root sono risposte di primo livello; gli eventi il cui &lt;code>reply&lt;/code> punta a un&amp;rsquo;altra risposta sono risposte annidate.&lt;/p>
&lt;h2 id="releases">Rilasci&lt;/h2>
&lt;p>&lt;strong>Zeus v0.12.0&lt;/strong> - Costruendo sul &lt;a href="https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/#zeus-lightning-wallet">supporto pagamenti paralleli NWC della settimana scorsa&lt;/a>, la &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.0">release principale&lt;/a> del wallet Lightning rilascia un servizio completo Nostr Wallet Connect &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a> con supporto relay personalizzato e tracciamento budget. Una &lt;a href="https://github.com/ZeusLN/zeus/pull/3455">correzione ricarica budget&lt;/a> assicura che le connessioni usino i limiti correnti. &lt;a href="https://github.com/ZeusLN/zeus/pull/3460">Copia indirizzo Lightning&lt;/a> non include piu&amp;rsquo; il prefisso &lt;code>lightning:&lt;/code>, correggendo problemi di incolla nei campi profilo Nostr.&lt;/p>
&lt;p>&lt;strong>Amber v4.0.6&lt;/strong> - Il signer Android &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a> &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.6">aggiunge caching delle prestazioni&lt;/a> alle operazioni di firma e migliora la gestione errori durante la decifratura di contenuti malformati. L&amp;rsquo;affidabilita&amp;rsquo; della connessione e&amp;rsquo; migliorata con logica di retry per eventi di connessione relay, e diverse correzioni crash affrontano casi limite intorno a URI &lt;code>nostrconnect://&lt;/code> invalidi e interazioni con schermate di permesso.&lt;/p>
&lt;p>&lt;strong>nak v0.17.3&lt;/strong> - L&amp;rsquo;&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.3">ultima release&lt;/a> dello strumento Nostr a riga di comando restringe le build LMDB a Linux, correggendo problemi di compilazione cross-platform.&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.4&lt;/strong> - Il signer Nostr cross-platform &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.4">aggiunge supporto&lt;/a> per lo schema URI &lt;code>nostrsigner:&lt;/code> definito in &lt;a href="https://nostrcompass.org/it/topics/nip-55/">NIP-55&lt;/a>, abbinandosi al flusso di connessione di Amber. I dati relay locali possono ora essere importati ed esportati per backup, e la release include correzioni bug per errori socket relay e miglioramenti UI all&amp;rsquo;interfaccia relay locale.&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;p>&lt;em>Queste sono pull request aperte e lavori in fase iniziale, perfetti per ricevere feedback prima del merge. Se qualcosa cattura la vostra attenzione, considerate di revisionare o commentare!&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3469">Persistenza lista mute&lt;/a> corregge un problema dove le liste mute venivano cancellate all&amp;rsquo;avvio a freddo. La correzione aggiunge guard per prevenire sovrascritture accidentali durante l&amp;rsquo;inizializzazione dell&amp;rsquo;app. &lt;a href="https://github.com/damus-io/damus/pull/3457">Timing stream profilo&lt;/a> elimina un ritardo di ~1 secondo prima che i profili in cache apparissero. Precedentemente, le viste attendevano che i task di sottoscrizione ripartissero; ora &lt;code>streamProfile()&lt;/code> produce immediatamente dati in cache da NostrDB, rimuovendo la finestra dove pubkey abbreviate e immagini placeholder venivano mostrate.&lt;/p>
&lt;h3 id="white-noise">White Noise (Messaggistica Crittografata)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/919">Streaming messaggi in tempo reale&lt;/a> sostituisce il precedente meccanismo di polling con un&amp;rsquo;architettura basata su stream. Il nuovo &lt;code>ChatStreamNotifier&lt;/code> consuma direttamente lo stream di messaggi dell&amp;rsquo;SDK Rust, mantenendo l&amp;rsquo;ordine cronologico e gestendo efficientemente gli aggiornamenti incrementali. I test hanno mostrato miglioramenti significativi nella reattivita&amp;rsquo;. Una &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/921">API lista chat&lt;/a> aggiunge &lt;code>get_chat_list&lt;/code> per recuperare sommari delle conversazioni, e una &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/905">correzione ordinamento stabile&lt;/a> previene loop di riordinamento messaggi usando &lt;code>createdAt&lt;/code> con ID messaggio come spareggio.&lt;/p>
&lt;h3 id="ndk">NDK (Libreria)&lt;/h3>
&lt;p>Due pull request hanno fornito miglioramenti drammatici delle prestazioni della cache. &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/371">PR #371&lt;/a> ha corretto un bug dove gli eventi letti dalla cache SQLite venivano immediatamente riscritti, causando 100% di scritture duplicate all&amp;rsquo;avvio dell&amp;rsquo;app. La correzione aggiunge un guard &lt;code>fromCache&lt;/code> e implementa controllo duplicati O(1) tramite un Set in memoria. Per set di risultati piccoli (&amp;lt;100 eventi), il trasferimento JSON diretto sostituisce l&amp;rsquo;overhead della codifica binaria. &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/372">PR #372&lt;/a> ha rimosso chiamate &lt;code>seenEvent&lt;/code> non necessarie per eventi in cache. Il lookup cache LRU costava 0.24-0.64ms per evento; per 5,700 eventi in cache, questo aggiungeva ~1.4 secondi di overhead. Risultato: le query cache sono scese da ~3,690ms a ~22ms (162x piu&amp;rsquo; veloci).&lt;/p>
&lt;h3 id="rust-nostr">rust-nostr (Libreria)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1176">Supporto REQ multi-filtro&lt;/a> e&amp;rsquo; stato ripristinato dopo essere stato rimosso in un refactor precedente. L&amp;rsquo;SDK accetta di nuovo &lt;code>Vec&amp;lt;Filter&amp;gt;&lt;/code> per richieste di sottoscrizione, abilitando query efficienti che combinano piu&amp;rsquo; condizioni filtro con logica OR. &lt;a href="https://github.com/rust-nostr/nostr/pull/1156">Provenienza relay&lt;/a> e&amp;rsquo; stata aggiunta ai metodi &lt;code>stream_events*&lt;/code>, cosi&amp;rsquo; ogni evento in streaming ora include il &lt;code>RelayUrl&lt;/code> da cui proviene e un &lt;code>Result&lt;/code> che indica successo o fallimento, utile per tracciare l&amp;rsquo;affidabilita&amp;rsquo; dei relay e debug di problemi di connessione. Una &lt;a href="https://github.com/rust-nostr/nostr/pull/1179">correzione sicurezza&lt;/a> ha rimosso la dipendenza &lt;code>url-fork&lt;/code> seguendo RUSTSEC-2024-0421, eliminando una vulnerabilita&amp;rsquo; nota.&lt;/p>
&lt;h3 id="applesauce">Applesauce (Libreria)&lt;/h3>
&lt;p>La libreria TypeScript che alimenta &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> ha visto sviluppi significativi questa settimana. Nuovi modelli includono un &lt;a href="https://github.com/hzrd149/applesauce">sistema di reazioni&lt;/a> e casting gruppi utente. La funzionalita&amp;rsquo; wallet si e&amp;rsquo; espansa con supporto NIP-60, scheda invio e strumenti di recupero token migliorati. Una nuova proprieta&amp;rsquo; &lt;code>user.directMessageRelays$&lt;/code> espone la configurazione relay per DM. Tutte le azioni sono state refactoratе per usare interfacce async (rimuovendo generatori async), e correzioni bug hanno affrontato il ripristino contenuto crittografato e casi limite filtri eventi basati sul tempo.&lt;/p>
&lt;h3 id="tenex">Tenex (Agenti AI)&lt;/h3>
&lt;p>Il &lt;a href="https://github.com/tenex-chat/tenex">sistema di coordinamento multi-agente&lt;/a> costruito su Nostr ha introdotto l&amp;rsquo;architettura RAL (Request-Action-Lifecycle) in &lt;a href="https://github.com/pablof7z/tenex/pull/38">cinque PR unite&lt;/a>. RAL consente agli agenti di mettersi in pausa quando delegano task e riprendere quando arrivano i risultati, con persistenza dello stato a scope conversazione. Gli strumenti di delega (&lt;code>delegate&lt;/code>, &lt;code>ask&lt;/code>, &lt;code>delegate_followup&lt;/code>, &lt;code>delegate_external&lt;/code>) ora pubblicano eventi Nostr e restituiscono segnali di stop invece di bloccarsi. Il refactor include migrazione AI SDK v6, infrastruttura testing VCR per registrazione deterministica interazioni LLM, e supporto immagini multimodali.&lt;/p>
&lt;hr>
&lt;p>Questo e&amp;rsquo; tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM NIP-17&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #1</title><link>https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/</guid><description>&lt;p>Benvenuti a Nostr Compass, una newsletter settimanale dedicata all&amp;rsquo;ecosistema del protocollo Nostr. La nostra missione e&amp;rsquo; mantenere sviluppatori, operatori di relay e costruttori informati sugli sviluppi importanti in tutta la rete. Documentiamo l&amp;rsquo;evoluzione del protocollo con precisione tecnica, neutralita&amp;rsquo; e profondita&amp;rsquo;, coprendo tutto dalle proposte NIP ai rilasci dei client fino alle migliori pratiche di implementazione.&lt;/p>
&lt;p>Nostr Compass e&amp;rsquo; ispirato da &lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>, il cui lavoro dedicato nel corso degli anni per far progredire la conoscenza tecnica di Bitcoin ha stabilito lo standard per le newsletter focalizzate sul protocollo. Siamo grati per il loro esempio e speriamo di portare lo stesso rigore all&amp;rsquo;ecosistema Nostr.&lt;/p></description><content:encoded>&lt;p>Benvenuti a Nostr Compass, una newsletter settimanale dedicata all&amp;rsquo;ecosistema del protocollo Nostr. La nostra missione e&amp;rsquo; mantenere sviluppatori, operatori di relay e costruttori informati sugli sviluppi importanti in tutta la rete. Documentiamo l&amp;rsquo;evoluzione del protocollo con precisione tecnica, neutralita&amp;rsquo; e profondita&amp;rsquo;, coprendo tutto dalle proposte NIP ai rilasci dei client fino alle migliori pratiche di implementazione.&lt;/p>
&lt;p>Nostr Compass e&amp;rsquo; ispirato da &lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>, il cui lavoro dedicato nel corso degli anni per far progredire la conoscenza tecnica di Bitcoin ha stabilito lo standard per le newsletter focalizzate sul protocollo. Siamo grati per il loro esempio e speriamo di portare lo stesso rigore all&amp;rsquo;ecosistema Nostr.&lt;/p>
&lt;p>Questo numero inaugurale stabilisce il nostro formato settimanale. Ogni mercoledi&amp;rsquo; vi porteremo aggiornamenti NIP, note di rilascio, punti salienti dello sviluppo e guide tecniche. Che stiate costruendo un client, gestendo un relay o contribuendo al protocollo, Nostr Compass mira ad essere la vostra fonte affidabile per cio&amp;rsquo; che sta accadendo nell&amp;rsquo;ecosistema.&lt;/p>
&lt;h2 id="cose-nostr">Cos&amp;rsquo;e&amp;rsquo; Nostr?&lt;/h2>
&lt;p>&lt;em>Poiche&amp;rsquo; questo e&amp;rsquo; il nostro primo numero, iniziamo con una introduzione su come funziona Nostr. I lettori abituali possono &lt;a href="https://nostrcompass.org/it/newsletters/2025-12-17-newsletter/#notizie--aggiornamenti">passare avanti&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Nostr (Notes and Other Stuff Transmitted by Relays) e&amp;rsquo; un protocollo decentralizzato per social networking e messaggistica. A differenza delle piattaforme tradizionali, Nostr non ha server centrale, nessuna azienda che lo controlla e nessun singolo punto di fallimento. Gli utenti possiedono la propria identita&amp;rsquo; attraverso coppie di chiavi crittografiche, e il contenuto fluisce attraverso server relay indipendenti che chiunque puo&amp;rsquo; gestire.&lt;/p>
&lt;p>&lt;strong>Come funziona:&lt;/strong> Gli utenti generano una coppia di chiavi (una chiave privata chiamata nsec e una chiave pubblica chiamata npub). La chiave privata firma i messaggi chiamati &amp;ldquo;eventi&amp;rdquo;, e la chiave pubblica serve come vostra identita&amp;rsquo;. Gli eventi vengono inviati ai relay, che li memorizzano e li inoltrano ad altri utenti. Poiche&amp;rsquo; voi controllate le vostre chiavi, potete passare da un client all&amp;rsquo;altro o da un relay all&amp;rsquo;altro senza perdere la vostra identita&amp;rsquo; o i vostri follower.&lt;/p>
&lt;p>&lt;strong>Perche&amp;rsquo; e&amp;rsquo; importante:&lt;/strong> Nostr fornisce resistenza alla censura attraverso la diversita&amp;rsquo; dei relay (se un relay vi blocca, altri possono comunque servire il vostro contenuto), portabilita&amp;rsquo; (la vostra identita&amp;rsquo; funziona su qualsiasi app Nostr) e interoperabilita&amp;rsquo; (tutti i client Nostr parlano lo stesso protocollo). Non c&amp;rsquo;e&amp;rsquo; nessun algoritmo che decide cosa vedete, niente pubblicita&amp;rsquo; e nessuna raccolta di dati.&lt;/p>
&lt;p>&lt;strong>L&amp;rsquo;ecosistema oggi:&lt;/strong> Nostr supporta microblogging (come Twitter/X), contenuti di lunga forma (come Medium), messaggi diretti, marketplace, livestreaming e altro. I client includono Damus (iOS), Amethyst (Android), Primal, Coracle e dozzine di altri. L&amp;rsquo;integrazione con Lightning Network consente pagamenti istantanei attraverso gli &amp;ldquo;zap&amp;rdquo;. Il protocollo continua ad evolversi attraverso i NIP (Nostr Implementation Possibilities), specifiche guidate dalla comunita&amp;rsquo; che estendono le funzionalita'.&lt;/p>
&lt;h2 id="news">Notizie&lt;/h2>
&lt;p>&lt;strong>NIP-BE Unito: Supporto Bluetooth Low Energy&lt;/strong> - Una nuova significativa capacita&amp;rsquo; &lt;a href="https://github.com/nostr-protocol/nips/pull/1979">e&amp;rsquo; arrivata nel protocollo&lt;/a>. &lt;a href="https://nostrcompass.org/it/topics/nip-be/">NIP-BE&lt;/a> specifica come le applicazioni Nostr possono comunicare e sincronizzarsi tramite Bluetooth Low Energy. Questo consente alle app di funzionare offline e sincronizzare dati tra dispositivi vicini senza connettivita&amp;rsquo; internet. La specifica adatta i pattern dei relay WebSocket ai vincoli del BLE, usando compressione DEFLATE e messaggistica a blocchi per gestire le piccole dimensioni MTU del BLE (20-256 byte). I dispositivi negoziano i ruoli in base al confronto UUID, con l&amp;rsquo;UUID piu&amp;rsquo; alto che diventa il server GATT.&lt;/p>
&lt;p>&lt;strong>MIP-05: Notifiche Push che Preservano la Privacy&lt;/strong> - Il &lt;a href="https://nostrcompass.org/it/topics/marmot/">Protocollo Marmot&lt;/a> ha pubblicato &lt;a href="https://nostrcompass.org/it/topics/mip-05/">MIP-05&lt;/a> (&lt;a href="https://github.com/marmot-protocol/mips/blob/main/mip-05.md">specifica&lt;/a>), una specifica per notifiche push che mantengono la privacy. I sistemi push tradizionali richiedono che i server conoscano i token dei dispositivi e le identita&amp;rsquo; degli utenti; MIP-05 risolve questo problema crittografando i token dei dispositivi con ECDH+HKDF e ChaCha20-Poly1305, usando chiavi effimere per prevenire la correlazione. Un protocollo gossip a tre eventi (kind 447-449) sincronizza i token crittografati tra i membri del gruppo, e le notifiche usano il &lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a> gift wrapping con token esca per nascondere le dimensioni dei gruppi. Questo consente a WhiteNoise e altri client Marmot di consegnare notifiche tempestive senza compromettere la privacy degli utenti.&lt;/p>
&lt;p>&lt;strong>Blossom BUD-10: Nuovo Schema URI&lt;/strong> - Il protocollo media &lt;a href="https://nostrcompass.org/it/topics/blossom/">Blossom&lt;/a> sta ottenendo uno schema URI personalizzato tramite &lt;a href="https://nostrcompass.org/it/topics/bud-10/">BUD-10&lt;/a> (&lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/10.md">specifica&lt;/a>). Il nuovo formato &lt;code>blossom:&amp;lt;sha256&amp;gt;.ext&lt;/code> incorpora hash del file, estensione, dimensione, suggerimenti per piu&amp;rsquo; server e pubkey degli autori per la scoperta server &lt;a href="https://nostrcompass.org/it/topics/bud-03/">BUD-03&lt;/a>. Questo rende i link blob piu&amp;rsquo; resilienti degli URL HTTP statici abilitando il fallback automatico tra server.&lt;/p>
&lt;p>&lt;strong>Aggiornamenti Marketplace Shopstr&lt;/strong> - Il marketplace nativo Nostr ha &lt;a href="https://github.com/shopstr-eng/shopstr/pull/202">implementato Nostr Wallet Connect&lt;/a> (&lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>) per i pagamenti, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/203">aggiunto la scadenza delle inserzioni&lt;/a> usando &lt;a href="https://nostrcompass.org/it/topics/nip-40/">NIP-40&lt;/a>, e introdotto &lt;a href="https://github.com/shopstr-eng/shopstr/pull/210">codici sconto&lt;/a> per i venditori.&lt;/p>
&lt;h2 id="nip-updates">Aggiornamenti NIP&lt;/h2>
&lt;p>Modifiche recenti al &lt;a href="https://github.com/nostr-protocol/nips">repository NIPs&lt;/a>:&lt;/p>
&lt;p>&lt;strong>Nuovi NIP:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-be/">NIP-BE&lt;/a>&lt;/strong> - Messaggistica Bluetooth Low Energy e sincronizzazione dispositivi (&lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-63/">NIP-63&lt;/a>&lt;/strong> - Standard Paywall/Contenuto Premium per gestire contenuti protetti all&amp;rsquo;interno del protocollo (&lt;a href="https://github.com/nostr-protocol/nips/pull/2156">#2156&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Modifiche Significative:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-24/">NIP-24&lt;/a>&lt;/strong> - Aggiunto array opzionale &lt;code>languages&lt;/code> ai metadati utente Kind 0, permettendo agli utenti di specificare piu&amp;rsquo; lingue preferite usando tag IETF BCP 47 per migliorare la scoperta dei contenuti e il matching dei relay (&lt;a href="https://github.com/nostr-protocol/nips/pull/2159">#2159&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-69/">NIP-69&lt;/a>&lt;/strong> - Aggiunto supporto scadenza ordini per trading P2P con tag &lt;code>expires_at&lt;/code> e &lt;code>expiration&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2118">#2118&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-59/">NIP-59&lt;/a>&lt;/strong> - Gli eventi gift wrap possono ora essere eliminati tramite richieste NIP-09/NIP-62 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2131">#2131&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - Rimossi tag hashtag e URL dai segnalibri generici; gli hashtag ora usano kind 30015 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2133">#2133&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-18/">NIP-18&lt;/a>&lt;/strong> - Migliorati i repost generici per eventi sostituibili con supporto tag &lt;code>a&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2132">#2132&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-17/">NIP-17&lt;/a>&lt;/strong> - Formulazione raffinata e aggiunto supporto reazioni kind 7 ai DM (&lt;a href="https://github.com/nostr-protocol/nips/pull/2098">#2098&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/it/topics/nip-11/">NIP-11&lt;/a>&lt;/strong> - Aggiunto campo &lt;code>self&lt;/code> per l&amp;rsquo;identificazione della chiave pubblica del relay (&lt;a href="https://github.com/nostr-protocol/nips/pull/1764">#1764&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-01-and-nip-19">Approfondimento NIP: NIP-01 e NIP-19&lt;/h2>
&lt;p>Per questo numero inaugurale, copriamo due NIP fondamentali che ogni sviluppatore Nostr dovrebbe comprendere. Consultate le nostre pagine tematiche per &lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> e &lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a>.&lt;/p>
&lt;h3 id="nip-01-protocollo-base">NIP-01: Protocollo Base&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-01/">NIP-01&lt;/a> definisce il protocollo core. Tutto in Nostr si basa su questa specifica.&lt;/p>
&lt;p>&lt;strong>Eventi&lt;/strong> sono l&amp;rsquo;unico tipo di oggetto. Ogni evento contiene:&lt;/p>
&lt;ul>
&lt;li>&lt;code>id&lt;/code>: Hash SHA256 dell&amp;rsquo;evento serializzato (l&amp;rsquo;identificatore unico dell&amp;rsquo;evento)&lt;/li>
&lt;li>&lt;code>pubkey&lt;/code>: La chiave pubblica del creatore (32 byte esadecimali, secp256k1)&lt;/li>
&lt;li>&lt;code>created_at&lt;/code>: Timestamp Unix&lt;/li>
&lt;li>&lt;code>kind&lt;/code>: Intero che categorizza il tipo di evento&lt;/li>
&lt;li>&lt;code>tags&lt;/code>: Array di array per i metadati&lt;/li>
&lt;li>&lt;code>content&lt;/code>: Il payload (l&amp;rsquo;interpretazione dipende dal kind)&lt;/li>
&lt;li>&lt;code>sig&lt;/code>: Firma Schnorr che prova che la pubkey ha creato questo evento&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Kind&lt;/strong> determinano come i relay memorizzano gli eventi:&lt;/p>
&lt;ul>
&lt;li>Eventi regolari (1, 2, 4-44, 1000-9999): Memorizzati normalmente, tutte le versioni mantenute&lt;/li>
&lt;li>Eventi sostituibili (0, 3, 10000-19999): Solo l&amp;rsquo;ultimo per pubkey viene mantenuto&lt;/li>
&lt;li>Eventi effimeri (20000-29999): Non memorizzati, solo inoltrati ai sottoscrittori&lt;/li>
&lt;li>Eventi indirizzabili (30000-39999): Ultimo per combinazione pubkey + kind + tag &lt;code>d&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Kind 0 sono i metadati utente (profilo), kind 1 e&amp;rsquo; una nota di testo (il post base), kind 3 e&amp;rsquo; la lista dei seguiti.&lt;/p>
&lt;p>&lt;strong>Kind 1: Note di Testo&lt;/strong> sono il cuore del Nostr sociale. Un evento kind 1 e&amp;rsquo; un post breve, simile a un tweet. Il campo &lt;code>content&lt;/code> contiene il testo del messaggio (testo semplice, anche se i client spesso renderizzano markdown). I tag abilitano risposte, menzioni e riferimenti:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;32-byte-hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;32-byte-hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734480000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Ciao Nostr! Date un&amp;#39;occhiata al lavoro di @jb55 su Damus.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;replied-to-event-id&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reply&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;jb55-pubkey&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;64-byte-hex&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Il tag &lt;code>e&lt;/code> con marcatore &amp;ldquo;reply&amp;rdquo; indica che questa e&amp;rsquo; una risposta (vedi &lt;a href="https://nostrcompass.org/it/topics/nip-10/">NIP-10&lt;/a> per le convenzioni di threading). Il tag &lt;code>p&lt;/code> menziona un utente, permettendo ai client di notificarlo e renderizzare il suo nome invece della pubkey grezza. I client recuperano l&amp;rsquo;evento kind 0 dell&amp;rsquo;utente menzionato per ottenere il suo nome visualizzato e l&amp;rsquo;immagine.&lt;/p>
&lt;p>Per costruire una timeline, un client si iscrive agli eventi kind 1 dalle pubkey seguite: &lt;code>[&amp;quot;REQ&amp;quot;, &amp;quot;feed&amp;quot;, {&amp;quot;kinds&amp;quot;: [1], &amp;quot;authors&amp;quot;: [&amp;quot;&amp;lt;pubkey1&amp;gt;&amp;quot;, &amp;quot;&amp;lt;pubkey2&amp;gt;&amp;quot;, ...], &amp;quot;limit&amp;quot;: 50}]&lt;/code>. Il relay restituisce le note corrispondenti, e il client le renderizza cronologicamente.&lt;/p>
&lt;p>&lt;strong>Eventi indirizzabili&lt;/strong> (30000-39999) funzionano come eventi sostituibili ma usano un tag &lt;code>d&lt;/code> come identificatore aggiuntivo. Il relay mantiene solo l&amp;rsquo;ultima versione di ogni combinazione pubkey + kind + tag-d. Questo abilita articoli modificabili, elenchi di prodotti o qualsiasi caso in cui servono piu&amp;rsquo; elementi sostituibili per utente.&lt;/p>
&lt;p>&lt;strong>Tag&lt;/strong> sono array dove il primo elemento e&amp;rsquo; il nome del tag. I tag standard a singola lettera (&lt;code>e&lt;/code>, &lt;code>p&lt;/code>, &lt;code>a&lt;/code>, &lt;code>d&lt;/code>, &lt;code>t&lt;/code>) sono indicizzati dai relay per query efficienti. Per esempio, &lt;code>[&amp;quot;e&amp;quot;, &amp;quot;&amp;lt;event-id&amp;gt;&amp;quot;]&lt;/code> referenzia un altro evento, &lt;code>[&amp;quot;p&amp;quot;, &amp;quot;&amp;lt;pubkey&amp;gt;&amp;quot;]&lt;/code> referenzia un utente.&lt;/p>
&lt;p>&lt;strong>Comunicazione Client-Relay&lt;/strong> usa connessioni WebSocket con array JSON come messaggi. Il primo elemento identifica il tipo di messaggio.&lt;/p>
&lt;p>Da client a relay:&lt;/p>
&lt;ul>
&lt;li>&lt;code>[&amp;quot;EVENT&amp;quot;, &amp;lt;event&amp;gt;]&lt;/code> - Pubblica un evento sul relay&lt;/li>
&lt;li>&lt;code>[&amp;quot;REQ&amp;quot;, &amp;lt;sub-id&amp;gt;, &amp;lt;filter&amp;gt;, ...]&lt;/code> - Sottoscrivi agli eventi che corrispondono ai filtri&lt;/li>
&lt;li>&lt;code>[&amp;quot;CLOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - Termina una sottoscrizione&lt;/li>
&lt;/ul>
&lt;p>Da relay a client:&lt;/p>
&lt;ul>
&lt;li>&lt;code>[&amp;quot;EVENT&amp;quot;, &amp;lt;sub-id&amp;gt;, &amp;lt;event&amp;gt;]&lt;/code> - Consegna un evento che corrisponde alla tua sottoscrizione&lt;/li>
&lt;li>&lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - &amp;ldquo;Fine degli eventi memorizzati&amp;rdquo; - il relay ha inviato tutte le corrispondenze storiche e ora inviera&amp;rsquo; solo nuovi eventi quando arrivano&lt;/li>
&lt;li>&lt;code>[&amp;quot;OK&amp;quot;, &amp;lt;event-id&amp;gt;, &amp;lt;true|false&amp;gt;, &amp;lt;message&amp;gt;]&lt;/code> - Conferma se un evento e&amp;rsquo; stato accettato o rifiutato (e perche')&lt;/li>
&lt;li>&lt;code>[&amp;quot;NOTICE&amp;quot;, &amp;lt;message&amp;gt;]&lt;/code> - Messaggio leggibile dal relay&lt;/li>
&lt;/ul>
&lt;p>Il flusso di sottoscrizione: il client invia &lt;code>REQ&lt;/code> con un ID sottoscrizione e filtro, il relay risponde con messaggi &lt;code>EVENT&lt;/code> corrispondenti, poi invia &lt;code>EOSE&lt;/code> per segnalare che ha completato lo storico. Dopo &lt;code>EOSE&lt;/code>, qualsiasi nuovo messaggio &lt;code>EVENT&lt;/code> e&amp;rsquo; in tempo reale. Il client invia &lt;code>CLOSE&lt;/code> quando ha finito.&lt;/p>
&lt;p>&lt;strong>Filtri&lt;/strong> specificano quali eventi recuperare. Un oggetto filtro puo&amp;rsquo; includere: &lt;code>ids&lt;/code> (ID eventi), &lt;code>authors&lt;/code> (pubkey), &lt;code>kinds&lt;/code> (tipi di evento), &lt;code>#e&lt;/code>/&lt;code>#p&lt;/code>/&lt;code>#t&lt;/code> (valori tag), &lt;code>since&lt;/code>/&lt;code>until&lt;/code> (timestamp), e &lt;code>limit&lt;/code> (max risultati). Tutte le condizioni in un filtro usano logica AND. Potete includere piu&amp;rsquo; filtri in una &lt;code>REQ&lt;/code>, e si combinano con logica OR - utile per recuperare diversi tipi di evento in una sottoscrizione.&lt;/p>
&lt;h3 id="nip-19-identificatori-codificati-bech32">NIP-19: Identificatori Codificati Bech32&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/it/topics/nip-19/">NIP-19&lt;/a> definisce i formati user-friendly che vedete ovunque in Nostr: npub, nsec, note e altro. Questi non sono usati nel protocollo stesso (che usa esadecimale), ma sono essenziali per la condivisione e la visualizzazione.&lt;/p>
&lt;p>&lt;strong>Perche&amp;rsquo; bech32?&lt;/strong> Le chiavi esadecimali grezze sono soggette a errori nella copia e difficili da distinguere visivamente. La codifica bech32 aggiunge un prefisso leggibile e un checksum. Potete immediatamente distinguere un &lt;code>npub&lt;/code> (chiave pubblica) da un &lt;code>nsec&lt;/code> (chiave privata) o &lt;code>note&lt;/code> (ID evento).&lt;/p>
&lt;p>&lt;strong>Formati base&lt;/strong> codificano valori grezzi a 32 byte:&lt;/p>
&lt;ul>
&lt;li>&lt;code>npub&lt;/code> - Chiave pubblica (la vostra identita&amp;rsquo;, sicura da condividere)&lt;/li>
&lt;li>&lt;code>nsec&lt;/code> - Chiave privata (mantenere segreta, usata per firmare)&lt;/li>
&lt;li>&lt;code>note&lt;/code> - ID evento (referenzia un evento specifico)&lt;/li>
&lt;/ul>
&lt;p>Esempio: La pubkey esadecimale &lt;code>3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d&lt;/code> diventa &lt;code>npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Identificatori condivisibili&lt;/strong> includono metadati usando codifica TLV (Type-Length-Value):&lt;/p>
&lt;ul>
&lt;li>&lt;code>nprofile&lt;/code> - Profilo con suggerimenti relay (aiuta i client a trovare l&amp;rsquo;utente)&lt;/li>
&lt;li>&lt;code>nevent&lt;/code> - Evento con suggerimenti relay, pubkey autore e kind&lt;/li>
&lt;li>&lt;code>naddr&lt;/code> - Riferimento evento indirizzabile (pubkey + kind + tag-d + relay)&lt;/li>
&lt;/ul>
&lt;p>Questi risolvono un problema chiave: se qualcuno condivide un ID nota, come fate a sapere quale relay ce l&amp;rsquo;ha? Un &lt;code>nevent&lt;/code> raggruppa l&amp;rsquo;ID evento con relay suggeriti, rendendo la condivisione piu&amp;rsquo; affidabile.&lt;/p>
&lt;p>&lt;strong>Importante:&lt;/strong> Non usate mai formati bech32 nel protocollo stesso. Eventi, messaggi relay e risposte NIP-05 devono usare esadecimale. Bech32 e&amp;rsquo; puramente per interfacce umane: visualizzazione, copia/incolla, codici QR e URL.&lt;/p>
&lt;h2 id="releases">Rilasci&lt;/h2>
&lt;p>&lt;strong>Amber v4.0.4&lt;/strong> - L&amp;rsquo;app signer Android corregge una NullPointerException, migliora le prestazioni nella schermata attivita&amp;rsquo; e aggiunge traduzioni per alcuni tipi di evento. La precedente release v4.0.3 ha aggiunto UI rinnovata per cifratura/decifratura, esportazione/importazione account, gestione relay per account, supporto ping bunker e segnalazione crash. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.4">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Coracle 0.6.28&lt;/strong> - Release di correzione bug per il web client. Corretti feed topic, gestione immagini quando imgproxy e&amp;rsquo; disabilitato e linkificazione di sorgenti highlight non-link. &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.28">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Flotilla v1.6.2&lt;/strong> - Il client per comunita&amp;rsquo; stile Discord corregge problemi di scorrimento modal e stili. Release precedenti in questo ciclo hanno aggiunto badge e suoni opzionali per le notifiche, migliorato il rendering dei link, scansione codice QR per link di invito e configurazione wallet semplificata. &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.6.2">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>nak v0.17.2&lt;/strong> - Lo strumento Nostr a riga di comando ha aggiunto un nuovo comando &lt;code>nip&lt;/code> per consultazione rapida dei NIP, piu&amp;rsquo; correzioni per gestione repository git e processamento eventi stdin. &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.2">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>White Noise v0.2.1&lt;/strong> - Release importante per l&amp;rsquo;app di messaggistica crittografata basata su MLS aggiungendo condivisione immagini tramite Blossom, sincronizzazione in background, notifiche push, localizzazione in 8 lingue e gestione membri gruppo. &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.2.1%2B14">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Amethyst v1.04.2&lt;/strong> - Release con nuove funzionalita&amp;rsquo; che introduce liste/pacchetti di follow, nuovi filtri timeline, galleria immagini e compressione video H.265 (file piu&amp;rsquo; piccoli del 50%). Completata migrazione Kotlin Multiplatform. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.04.2">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.5&lt;/strong> - Aggiornamento piattaforma trading P2P con supporto scadenza ordini NIP-69 e risposte migliorate per la cronologia scambi. &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.5">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Nosflare v8.9.26&lt;/strong> - Relay Nostr serverless costruito su infrastruttura Cloudflare. Questa release fornisce un hotfix critico che risolve un bug che poteva causare fallimenti websocket, garantendo connessioni piu&amp;rsquo; stabili per utenti e applicazioni che dipendono dal relay. &lt;a href="https://github.com/Spl0itable/nosflare/releases/tag/v8.9.26">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Noscall v0.4.1&lt;/strong> - App per chiamate audio e video sicure basata su Nostr. Questa release migliora l&amp;rsquo;interfaccia pop-up nella pagina Me e corregge diversi problemi noti, risultando in maggiore stabilita&amp;rsquo; e affidabilita&amp;rsquo; delle chiamate. &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.4.1-release">Release&lt;/a>&lt;/p>
&lt;p>&lt;strong>Gitplaza v0.25.0&lt;/strong> - Client Nostr desktop focalizzato su attivita&amp;rsquo; relative a Git. Questa release introduce un filtro kind avanzato per il feed inbox, include zap regolari nei filtri e semplifica la formattazione del testo delle schede. Miglioramenti delle prestazioni ottimizzano il caricamento dell&amp;rsquo;albero commenti, riducono query database non necessarie e usano branch di commenti in cache per visualizzazione piu&amp;rsquo; veloce. &lt;a href="https://codeberg.org/dluvian/gitplaza/releases/tag/v0.25.0">Release&lt;/a>&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">Modifiche notevoli a codice e documentazione&lt;/h2>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>Focus sulla stabilita&amp;rsquo; con correzioni crash e UI: &lt;a href="https://github.com/damus-io/damus/pull/3377">correzione salto cursore&lt;/a> per la vista di composizione, &lt;a href="https://github.com/damus-io/damus/pull/3366">redesign interfaccia NostrDB&lt;/a> usando tipi Swift &lt;code>~Copyable&lt;/code> per sicurezza delle transazioni, &lt;a href="https://github.com/damus-io/damus/pull/3341">stabilita&amp;rsquo; UI thread&lt;/a> correggendo reinstanziazione della barra azioni, &lt;a href="https://github.com/damus-io/damus/pull/3346">freeze lista mute&lt;/a> da cicli AttributeGraph, e &lt;a href="https://github.com/damus-io/damus/pull/3334">crash profilo&lt;/a> da pulizia transazioni cross-thread. Aggiunto anche &lt;a href="https://github.com/damus-io/damus/pull/3293">AGENTS.md&lt;/a> linee guida per agenti di coding AI.&lt;/p>
&lt;h3 id="notedeck">Notedeck (Desktop/Mobile)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1191">Archiviazione chiavi sicura&lt;/a> sposta nsec nel secure store del SO con migrazione automatica. &lt;a href="https://github.com/damus-io/notedeck/pull/1201">Filtraggio note future&lt;/a> nasconde eventi datati 24+ ore in avanti (anti-spam). &lt;a href="https://github.com/damus-io/notedeck/pull/1183">Copia nevent&lt;/a> ora include suggerimenti relay. Inoltre: &lt;a href="https://github.com/damus-io/notedeck/pull/1212">aggiunta rapida colonna profilo&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck/pull/1208">navigazione tastiera&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck/pull/1210">ottimizzazione caricamento media&lt;/a>.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>Supporto [firma remota &lt;a href="https://nostrcompass.org/it/topics/nip-46/">NIP-46&lt;/a>](&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1555">https://github.com/vitorpamplona/amethyst/pull/1555&lt;/a>) per Nostr Connect. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1586">Organizzazione segnalibri&lt;/a> con gestione liste pubbliche/private. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1596">Correzione compatibilita&amp;rsquo; strfry&lt;/a> per casi limite parsing info relay.&lt;/p>
&lt;h3 id="primal-android">Primal (Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/788">Deep link Nostr Connect&lt;/a> per URL &lt;code>nostrconnect://&lt;/code>. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/787">Login remoto&lt;/a> tramite scansione QR per connessioni bunker. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/783">Correzione race condition connessione&lt;/a>.&lt;/p>
&lt;h3 id="white-noise">White Noise (Messaggistica Crittografata)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/890">Correzione ritenzione dati app&lt;/a> disabilita auto-backup Android per privacy. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/861">Comportamento scroll chat&lt;/a> preserva posizione durante lettura cronologia.&lt;/p>
&lt;h3 id="zeus">Zeus (Wallet Lightning)&lt;/h3>
&lt;p>[Pagamenti paralleli &lt;a href="https://nostrcompass.org/it/topics/nip-47/">NIP-47&lt;/a>](&lt;a href="https://github.com/ZeusLN/zeus/pull/3407">https://github.com/ZeusLN/zeus/pull/3407&lt;/a>) per miglior throughput zap in batch.&lt;/p>
&lt;h2 id="best-practice-per-sviluppatori">Best Practice per Sviluppatori&lt;/h2>
&lt;p>&lt;strong>Validare Eventi Auth in Modo Difensivo&lt;/strong> - go-nostr ha corretto un &lt;a href="https://github.com/nbd-wtf/go-nostr/pull/182">panic nella validazione NIP-42&lt;/a> quando il tag relay mancava. Controllate sempre i tag richiesti prima di accedervi, anche nei flussi auth dove vi aspettate eventi ben formati.&lt;/p>
&lt;p>&lt;strong>Rate Limit per Stato Autenticazione&lt;/strong> - khatru ha aggiunto &lt;a href="https://github.com/fiatjaf/khatru/pull/57">rate limiting basato su NIP-42&lt;/a>, permettendo ai relay di applicare limiti diversi per connessioni autenticate vs anonime. Considerate limiti a livelli basati sullo stato auth invece di restrizioni generiche.&lt;/p>
&lt;p>&lt;strong>Usare Paginazione a Cursore per Liste&lt;/strong> - Blossom ha &lt;a href="https://github.com/hzrd149/blossom/pull/65">sostituito la paginazione basata su data&lt;/a> con paginazione a cursore sull&amp;rsquo;endpoint &lt;code>/list&lt;/code>. La paginazione basata su data fallisce quando elementi condividono timestamp; i cursori forniscono iterazione affidabile.&lt;/p>
&lt;p>&lt;strong>Validazione Schema per Tipi di Evento&lt;/strong> - Il progetto &lt;a href="https://github.com/nostrability/schemata">nostrability/schemata&lt;/a> fornisce schemi JSON per validare eventi conformi ai NIP. Considerate di integrare la validazione schema in sviluppo per catturare eventi malformati prima che raggiungano i relay.&lt;/p>
&lt;hr>
&lt;p>Questo e&amp;rsquo; tutto per questa settimana. State costruendo qualcosa? Avete notizie da condividere? Volete che copriamo il vostro progetto? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contattateci via DM NIP-17&lt;/a> o trovateci su Nostr.&lt;/p></content:encoded></item></channel></rss>