<?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>Bulletins on Nostr Compass</title><link>https://nostrcompass.org/fr/newsletters/</link><description>Recent content in Bulletins on Nostr Compass</description><generator>Hugo</generator><language>fr</language><atom:link href="https://nostrcompass.org/fr/newsletters/feed.xml" rel="self" type="application/rss+xml"/><item><title>Nostr Compass #26</title><link>https://nostrcompass.org/fr/newsletters/2026-06-10-newsletter/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-06-10-newsletter/</guid><description>&lt;p>L&amp;rsquo;organisation Marmot Protocol ouvre trois nouveaux dépôts pour un projet de protocole v2 et une lignée de client native : un workspace Rust nommé &lt;code>darkmatter&lt;/code>, une app iOS SwiftUI &lt;code>darkmatter-ios&lt;/code>, et une app Android Kotlin/Compose &lt;code>darkmatter-android&lt;/code>. Le Whitenoise Flutter original est archivé. Chama compresse dix-sept versions en une seule semaine et franchit la ligne d&amp;rsquo;app autonome à v3.0.0 avant d&amp;rsquo;atterrir une refonte complète de l&amp;rsquo;UI de salle de trade et des vitrines par vendeur dans v3.1.0, en plus des parts Shamir uniquement pour les détenteurs, la substitution d&amp;rsquo;arbitre, le routage de communauté mondiale, et les notifications de trade de bout en bout. Coracle lance un service de relais hébergé payant soutenu par la pile open source Caravel et zooid, avec une intégration Flotilla profonde planifiée. Angor bascule sur mainnet par défaut dans v0.2.30 et atterrit un test de financement UAT à 3 utilisateurs dans v0.2.29. Amethyst atterrit 41 PRs non publiées poursuivant le travail NIP-32 / NIP-F4 / Tor de la semaine dernière. NIP-67 (indice de complétude EOSE) et l&amp;rsquo;autocomplétion NIP-50 fusionnent, fermant deux lacunes de correction de longue date dans le protocole de relais principal. NIP-GART propose un format de câble préservant la vie privée pour les alertes d&amp;rsquo;urgence, et NIP-46 gagne une méthode de déconnexion.&lt;/p></description><content:encoded>&lt;p>L&amp;rsquo;organisation Marmot Protocol ouvre trois nouveaux dépôts pour un projet de protocole v2 et une lignée de client native : un workspace Rust nommé &lt;code>darkmatter&lt;/code>, une app iOS SwiftUI &lt;code>darkmatter-ios&lt;/code>, et une app Android Kotlin/Compose &lt;code>darkmatter-android&lt;/code>. Le Whitenoise Flutter original est archivé. Chama compresse dix-sept versions en une seule semaine et franchit la ligne d&amp;rsquo;app autonome à v3.0.0 avant d&amp;rsquo;atterrir une refonte complète de l&amp;rsquo;UI de salle de trade et des vitrines par vendeur dans v3.1.0, en plus des parts Shamir uniquement pour les détenteurs, la substitution d&amp;rsquo;arbitre, le routage de communauté mondiale, et les notifications de trade de bout en bout. Coracle lance un service de relais hébergé payant soutenu par la pile open source Caravel et zooid, avec une intégration Flotilla profonde planifiée. Angor bascule sur mainnet par défaut dans v0.2.30 et atterrit un test de financement UAT à 3 utilisateurs dans v0.2.29. Amethyst atterrit 41 PRs non publiées poursuivant le travail NIP-32 / NIP-F4 / Tor de la semaine dernière. NIP-67 (indice de complétude EOSE) et l&amp;rsquo;autocomplétion NIP-50 fusionnent, fermant deux lacunes de correction de longue date dans le protocole de relais principal. NIP-GART propose un format de câble préservant la vie privée pour les alertes d&amp;rsquo;urgence, et NIP-46 gagne une méthode de déconnexion.&lt;/p>
&lt;h2 id="articles-principaux">Articles principaux&lt;/h2>
&lt;h3 id="marmot-v2-dark-matter--refonte-du-protocole-clients-natifs-app-flutter-archivée">Marmot v2 (Dark Matter) : refonte du protocole, clients natifs, app Flutter archivée&lt;/h3>
&lt;p>Trois nouveaux dépôts ont fait surface sous l&amp;rsquo;organisation GitHub &lt;a href="https://github.com/marmot-protocol">marmot-protocol&lt;/a> cette semaine, formant ensemble la forme précoce d&amp;rsquo;un projet de protocole Marmot v2 et d&amp;rsquo;une lignée de client native qui remplace la ligne d&amp;rsquo;app Flutter. &lt;a href="https://github.com/marmot-protocol/darkmatter">&lt;code>darkmatter&lt;/code>&lt;/a> (Rust, créé le 13 mai, trente-quatre commits dans les sept derniers jours) contient le projet de protocole v2 dans &lt;code>spec/&lt;/code>, un moteur CGKA basé sur OpenMLS dans &lt;code>crates/cgka-engine&lt;/code>, un simulateur de conformité avec des tests de propriété, et un modèle formel Tamarin pour les preuves de convergence. &lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> (Swift, créé le 25 mai) est un client SwiftUI soutenu par un xcframework UniFFI &lt;code>MarmotKit&lt;/code> vendu généré à partir du workspace Rust. &lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> (Kotlin/Jetpack Compose, créé le 25 mai) repose sur les mêmes bindings Rust. Le Whitenoise Flutter original a été marqué &lt;a href="https://github.com/marmot-protocol/whitenoise-archive">&lt;code>whitenoise-archive&lt;/code>&lt;/a> (« ARCHIVED: This was the original White Noise Flutter app ») ; un nouveau dépôt Dart &lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a> porte la ligne Flutter active en parallèle.&lt;/p>
&lt;p>Lisez cela comme des progrès précoces vers un Marmot plus fiable, pas comme un pivot terminé. Le README de darkmatter s&amp;rsquo;étiquette « Projet candidat de protocole Marmot v2, moteur CGKA, et workspace de conformité » et dit directement : « MDK reste l&amp;rsquo;implémentation de protocole Rust déployée jusqu&amp;rsquo;à ce que ce projet et ce moteur soient adoptés. » À l&amp;rsquo;intérieur du workspace, le crate cgka-engine est étiqueté &lt;code>0.1.0&lt;/code>, « consommateur interne unique, non-stable-semver ». Chaque page de spécification porte « Statut : projet pour revue interne ». Trois étoiles sur le dépôt workspace et zéro sur les apps iOS et Android confirment que le travail est pré-annonce. Direction, portée et discipline sont le signal ici ; la préparation à la production n&amp;rsquo;est pas la revendication.&lt;/p>
&lt;p>Le projet de protocole rend les deltas v1-à-v2 concrets. L&amp;rsquo;extension MLS &lt;code>marmot_group_data&lt;/code> monolithique de MIP-01, qui a porté le nom, la description, les pubkeys d&amp;rsquo;admin, l&amp;rsquo;id de routage de groupe Nostr, la liste de relais, les données d&amp;rsquo;image de groupe, et les paramètres de messages éphémères sous un seul parapluie depuis le début de Marmot, est &lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/spec/mip-coverage.md">divisée en composants d&amp;rsquo;app versionnés&lt;/a> : &lt;code>marmot.group.profile.v1&lt;/code> pour le nom et la description, &lt;code>marmot.group.admin-policy.v1&lt;/code> pour les pubkeys d&amp;rsquo;admin, &lt;code>marmot.transport.nostr.routing.v1&lt;/code> pour le &lt;code>nostr_group_id&lt;/code> aléatoire et la liste de relais canonique, &lt;code>marmot.group.blossom.image.v1&lt;/code> pour le hash d&amp;rsquo;image, la clé de chiffrement, le nonce, et la clé d&amp;rsquo;upload, et &lt;code>marmot.group.message-retention.v1&lt;/code> pour les secondes de messages éphémères. Chaque composant possède ses octets exacts et son propre chemin de versionnement, afin qu&amp;rsquo;une future fonctionnalité puisse rev un composant sans forcer le reste de l&amp;rsquo;état de groupe à repasser sur le consensus d&amp;rsquo;extension MLS. Les identifiants MIP-00 gagnent également un nouveau document de fondation &lt;code>account-identity-proof-v1.md&lt;/code>, appelé « nouveau dans v2 et cassant ». La preuve d&amp;rsquo;identité vit maintenant sur sa propre surface, séparée de la construction de KeyPackage.&lt;/p>
&lt;p>Les deltas de bibliothèque soutiennent la refonte de la spécification. &lt;code>cgka-engine&lt;/code> est la nouvelle machine d&amp;rsquo;état de groupe locale : elle enveloppe OpenMLS, possède les états d&amp;rsquo;époque &lt;code>Stable&lt;/code>, &lt;code>PendingPublish&lt;/code>, &lt;code>Merging&lt;/code>, et &lt;code>Recovering&lt;/code>, traduit les intents en commits MLS, retourne des valeurs &lt;code>IngestOutcome&lt;/code> et &lt;code>GroupEvent&lt;/code> typées pour chaque enveloppe de transport entrante, et ne livre explicitement aucun transport et aucune persistance. Un trait &lt;code>TransportPeeler&lt;/code> sépare Nostr du moteur, et un trait &lt;code>StorageProvider&lt;/code> sépare SQLite (via &lt;code>storage-sqlite&lt;/code>, soutenu par SQLCipher) du moteur. Aujourd&amp;rsquo;hui, MDK emballe tout cela ensemble ; diviser les couches permet à un moteur de siéger sous un transport de relais Nostr maintenant et les &lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/docs/quic-broker-deployment.md">transports flux QUIC et broker également livrés&lt;/a> plus tard, sans réécriture du modèle de convergence. La convergence elle-même est documentée comme &lt;code>distributed-convergence.md&lt;/code> et prouvée dans un modèle Tamarin qui couvre la sélection de branche déterministe, l&amp;rsquo;éligibilité gate par politique, la relecture d&amp;rsquo;ancre retenue, le rejet de branche périmée, la réorganisation de livraison, la duplication, l&amp;rsquo;invalidation de sortie d&amp;rsquo;app, le passage welcome/commit, la consommation de proposition, et le gating sortant pendant la synchronisation. Les tests de propriété Rust vérifient ensuite que le moteur suit les mêmes règles avec de vrais objets OpenMLS et le harnais de simulateur. Le travail de fiabilité par méthodes formelles de cette portée est absent de la pile Marmot actuelle.&lt;/p>
&lt;p>Les deux clients natifs abandonnent Flutter pour des boîtes à outils UI natives de plateforme. &lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> est du SwiftUI pur avec une Notification Service Extension qui déchiffre les réveils push MIP-05 sur l&amp;rsquo;appareil, vend un paquet Swift &lt;code>MarmotKit&lt;/code> généré construit à partir du workspace Rust, et s&amp;rsquo;enregistre sous l&amp;rsquo;ID de bundle &lt;code>dev.ipf.darkmatter&lt;/code> et le groupe d&amp;rsquo;app. &lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> est Kotlin et Jetpack Compose, avec un build piloté par &lt;code>just&lt;/code> qui produit un APK &lt;code>arm64-v8a&lt;/code> signé et lit les endpoints de télémétrie depuis &lt;code>local.properties&lt;/code>. Le README Android énonce le principe architectural directement : « Dark Matter possède les données de protocole et les stocke dans SQLite. L&amp;rsquo;app Android devrait rendre ces données, gérer le comportement de plateforme Android, et garder l&amp;rsquo;état de cycle de vie UI. L&amp;rsquo;app Android ne devrait pas devenir une seconde base de données pour les données Dark Matter. » Cela reflète la discipline de frontière que le README cgka-engine applique dans la couche Rust, appliquée à la couche UI.&lt;/p>
&lt;p>Les clients natifs comptent pour Marmot parce que la faiblesse la plus citée du protocole a été la fiabilité mobile sous des conditions de livraison inégales : réveils de notification à échéance manquée, courses de commits MLS pendant les fluctuations réseau, limites de récupération en arrière-plan qui bloquent les avancements d&amp;rsquo;époque. SwiftUI et Compose donnent aux clients un accès direct aux primitives de traitement en arrière-plan de plateforme que Flutter atteint via un pont de plugin, et le chemin de binding UniFFI garde la logique de protocole dans un workspace Rust unique livré comme bibliothèque statique sur les deux plateformes. La ligne Whitenoise Flutter continue dans le dépôt &lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a> non archivé, donc l&amp;rsquo;annonce est additive : une nouvelle lignée de client native fonctionne aux côtés de l&amp;rsquo;app Flutter pendant que la spécification v2 converge. Le passage de production depuis MDK ou le Whitenoise actuel attend que le projet, le moteur et les clients atteignent des sorties prêtes pour la production.&lt;/p>
&lt;h3 id="chama-v200-à-v310--entiercement-p2p-autonome-en-une-semaine">Chama v2.0.0 à v3.1.0 : entiercement P2P autonome en une semaine&lt;/h3>
&lt;p>Le client d&amp;rsquo;entiercement P2P Nostr-natif introduit dans Newsletter #25 à v1.3.0 a livré dix-sept versions étiquetées sur les sept derniers jours, se terminant à &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a> le 9 juin avec une refonte de l&amp;rsquo;UI de salle de trade et des vitrines par vendeur. La piste de versions raconte l&amp;rsquo;histoire : &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.0">v2.0.0&lt;/a> est la base BREAKING, puis &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>, et &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.3">v2.0.3&lt;/a> ferment les lacunes de rail de financement 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>, et &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.1">v2.3.1&lt;/a> durcissent la couche d&amp;rsquo;arbitre ; &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>, et &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.6.0">v2.6.0&lt;/a> ajoutent des surfaces de self-custody et le routage de communauté mondial ; &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>, et &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.10.0">v2.10.0&lt;/a> superposent des textes clés en anglais simple, les demandes de groupe, l&amp;rsquo;arbitrage de délai de litige, et la réputation. &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.0.0">v3.0.0&lt;/a> lie le paquet ensemble avec des notifications de trade de bout en bout, et &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a> le 9 juin redessine l&amp;rsquo;écran de trade autour d&amp;rsquo;une épine dorsale de progression Reserved → Locked → Settled, des cartes d&amp;rsquo;action colorées par rôle, et une classe d&amp;rsquo;annonce de vitrine par vendeur (swaps curatés, carnets de prêt, et factures).&lt;/p>
&lt;p>Le pivot architectural vit dans v2.0.0. Le format LOCK d&amp;rsquo;entiercement a changé pour que chaque part d&amp;rsquo;un split Shamir 2-de-3 soit chiffrée uniquement pour son détenteur (sharePolicy &lt;code>holder-only-v1&lt;/code>). L&amp;rsquo;ecash porteur de la fédération ne se reconstruit plus à partir d&amp;rsquo;un seul participant seul, fermant un chemin où une partie malveillante avec sa propre part et une part détenue par la fédération pouvait compléter le trade sans consentement. Les clients pré-2.0 échouent bruyamment avec « impossible de trouver votre part » ; le trade ne peut pas se compléter sur un client périmé, et aucun fonds n&amp;rsquo;est perdu dans le processus. Un verrou v2.0 nécessite chaque partie sur v2.x pour se régler. v2.0.0 a également ajouté les vitrines multi-unités et une vue Market en sats uniquement.&lt;/p>
&lt;p>v2.1.0 a introduit la substitution d&amp;rsquo;arbitre : la part d&amp;rsquo;arbitre à l&amp;rsquo;index Shamir 2 est maintenant chiffrée à un ordre de priorité déterministe sur le pool d&amp;rsquo;arbitres communautaires, afin qu&amp;rsquo;un arbitre absent puisse être remplacé sans échouer le trade. v2.2.0 a prouvé que la substitution fonctionnait en pratique sur un trade de ₿121 et a ajouté des sauvegardes de substitution de guérison. v2.3.0 a fermé la dernière lacune de front-running d&amp;rsquo;arbitre en vérifiant l&amp;rsquo;appartenance communautaire de l&amp;rsquo;arbitre de l&amp;rsquo;annonce au moment du verrouillage, et v2.3.1 a fermé la course frère où un slot d&amp;rsquo;arbitre auto-assigné était un aperçu jusqu&amp;rsquo;à ce que le verrou les installe.&lt;/p>
&lt;p>Les surfaces de self-custody sont arrivées dans v2.4.0 (phrase de récupération BIP-39 pour le portefeuille ecash Fedimint, stockée chiffrée sur Nostr) et v2.5.0 (sauvegarde nsec maître qui possède l&amp;rsquo;identité Nostr et la graine du portefeuille). v2.6.0 a retravaillé l&amp;rsquo;onboarding autour d&amp;rsquo;un sélecteur de communauté global afin que les utilisateurs dans les pays sans Chama locale soient routés vers la fédération la plus proche ; les builds antérieurs faisaient rebondir l&amp;rsquo;utilisateur sans fallback. v2.7.0 a réécrit l&amp;rsquo;écran de clé de récupération en anglais simple (« la seule clé de votre compte et de l&amp;rsquo;argent qui s&amp;rsquo;y trouve ; Chama ne la voit jamais et ne peut pas la réinitialiser ; si vous la perdez, personne ne peut récupérer votre compte »). v2.8.0 a ajouté les demandes de groupe, le thème sombre/clair, et a ajouté deux nouveaux kinds d&amp;rsquo;événements (38120 roster, 38121 application). v2.9.0 a changé la résolution de litige à échéance : les trades contestés qui atteignent leur expiration se résolvent maintenant par jugement d&amp;rsquo;arbitre ; le comportement précédent auto-remboursait. La sortie est marquée COORDINATED afin que toutes les parties en litige doivent mettre à jour. v2.10.0 a ajouté des évaluations pouce-en-haut/pouce-en-bas par trade comme nouveau kind d&amp;rsquo;événement 38123.&lt;/p>
&lt;p>v3.0.0 est le jalon où l&amp;rsquo;app cesse d&amp;rsquo;avoir besoin d&amp;rsquo;une communauté coordinatrice pour fonctionner. Les notifications de trade de bout en bout pingent l&amp;rsquo;utilisateur uniquement sur les transitions d&amp;rsquo;état actionnables : la contrepartie a verrouillé les sats, paiement prêt à réclamer, litige nécessite le jugement de l&amp;rsquo;utilisateur en tant qu&amp;rsquo;arbitre, ou trade réglé ou expiré. Un toggle dans l&amp;rsquo;écran Me active ou désactive les notifications, et l&amp;rsquo;invite de permission ne se déclenche que lorsque le toggle est activé. La déduplication tir-unique empêche un rechargement d&amp;rsquo;état de déclencher une tempête d&amp;rsquo;alertes. Un bug de garde-fou wrong-chama a également été fermé dans &lt;a href="https://github.com/jesuspirate/chama/pull/103">PR #103&lt;/a>, où les versions antérieures pouvaient étiqueter une annonce avec l&amp;rsquo;étiquette d&amp;rsquo;une chama mais la fédération d&amp;rsquo;une autre chama. Les paquets desktop Windows et Linux sont livrés avec la version ; le dmg macOS est retenu jusqu&amp;rsquo;à ce que la signature et la notarisation atterrissent.&lt;/p>
&lt;p>Chama rejoint maintenant Mostro et Shopstr en tant que marketplace Nostr-native, distinguée par une architecture sans serveur, un entiercement Shamir 2-de-3 soutenu par Fedimint, le chiffrement de part uniquement pour le détenteur, et la seule des trois à livrer un client desktop et mobile autonome sans communauté coordinatrice.&lt;/p>
&lt;h3 id="coracle-hosting--service-de-relais-payant-plus-pile-caravel-open-source">Coracle Hosting : service de relais payant plus pile Caravel open source&lt;/h3>
&lt;p>Le 3 juin, Hodlbod a &lt;a href="https://nos.lol/e/f8586160cd12df479c261397353c99e6f3e4d870b616382e1b4338bad3ab498a">annoncé Coracle Hosting&lt;/a> à &lt;a href="https://hosting.coracle.social">hosting.coracle.social&lt;/a>, un service de relais communautaire hébergé qui accepte les paiements Lightning récurrents via NWC ou carte. Le service est alimenté par &lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>, le frontend de facturation et de provisionnement de Coracle, et &lt;a href="https://gitea.coracle.social/coracle/zooid">zooid&lt;/a>, un runtime de relais qui héberge de nombreux relais virtuels sur une seule machine. Les deux sont open source sur le gitea auto-hébergé de Coracle. Caravel est livré avec une intégration optionnelle &lt;a href="https://livekit.io">livekit&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> que les opérateurs peuvent basculer par relais. Un palier gratuit avec des limites de compte de membres permet aux opérateurs d&amp;rsquo;évaluer le service avant de s&amp;rsquo;engager sur des détails de paiement.&lt;/p>
&lt;p>Hodlbod est franc sur le modèle d&amp;rsquo;affaires : monétiser l&amp;rsquo;open source en vendant une version hébergée d&amp;rsquo;une pile que n&amp;rsquo;importe qui d&amp;rsquo;autre peut aussi exécuter. La barrière compétitive est l&amp;rsquo;intégration &lt;a href="https://flotilla.social">Flotilla&lt;/a>, qui est la prochaine étape planifiée. Flotilla possède la surface utilisateur, donc l&amp;rsquo;option hébergée servie depuis l&amp;rsquo;intérieur de Flotilla devient le chemin par défaut pour tout utilisateur qui préfère l&amp;rsquo;infrastructure gérée. Hodlbod a offert d&amp;rsquo;ajouter d&amp;rsquo;autres opérateurs Caravel au sélecteur d&amp;rsquo;hébergement alternatif de Flotilla s&amp;rsquo;ils le contactent, gardant la porte ouverte à un marché d&amp;rsquo;hébergement fédéré.&lt;/p>
&lt;p>Caravel rejoint &lt;a href="https://relay.tools">relay.tools&lt;/a> comme plateforme publique de provisionnement de relais Nostr avec des paliers de membres payants. relay.tools précède Caravel et livre en tant que service dominant de création de relais aujourd&amp;rsquo;hui, avec son propre répertoire de relais communautaires et des flux de jonction de membre payant ou modérateur. La caractéristique distinctive de Caravel est la pile coordonnée : le runtime de relais (zooid), le frontend de facturation et de provisionnement (Caravel lui-même), et le sélecteur côté client (intégration Flotilla, encore en vol) sont livrés comme une seule conception. L&amp;rsquo;autre caractéristique distinctive est la densité multi-relais-par-processus de zooid, où les relais clients partagent un seul processus hôte afin que l&amp;rsquo;opérateur amortisse les coûts d&amp;rsquo;hébergement sur de nombreuses petites communautés. C&amp;rsquo;est le même argument de densité qui a rendu l&amp;rsquo;hébergement web partagé viable au début des années 2000, appliqué à la couche de relais de Nostr.&lt;/p>
&lt;h2 id="sorties">Sorties&lt;/h2>
&lt;h3 id="angor-v0229-et-v0230--mainnet-par-défaut-et-test-de-financement-uat-à-3-utilisateurs">Angor v0.2.29 et v0.2.30 : mainnet par défaut et test de financement UAT à 3 utilisateurs&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.29">Angor v0.2.29&lt;/a> le 4 juin et &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.30">v0.2.30&lt;/a> le 8 juin sont les deux sorties de cette semaine pour le protocole de financement Bitcoin-et-Nostr décentralisé. Le changement titre de v0.2.30 est &lt;a href="https://github.com/block-core/angor/pull/893">PR #893&lt;/a>, qui bascule le réseau par défaut sur mainnet. Angor est toujours livré comme version alpha instable, mais le passage mainnet-par-défaut signale que le protocole a dépassé la phase testnet-uniquement pour les clients desktop et mobile. v0.2.30 atterrit également un flux de création de projet mobile à un seul tap avec upload d&amp;rsquo;image et réinitialisation de défilement (&lt;a href="https://github.com/block-core/angor/pull/889">PR #889&lt;/a>) et résout une condition de course où le spinner de facture Lightning pouvait se bloquer (&lt;a href="https://github.com/block-core/angor/pull/890">PR #890&lt;/a>).&lt;/p>
&lt;p>v0.2.29 a ajouté un test UAT de bout en bout dans &lt;a href="https://github.com/block-core/angor/pull/881">PR #881&lt;/a> couvrant l&amp;rsquo;envoi de fonds à 3 utilisateurs sur 10 tours avec dépenses non confirmées, le premier test de flux de financement multi-utilisateur dans la suite de tests Angor. La sortie a également ajouté un plan d&amp;rsquo;implémentation pour une CLI Angor et un serveur MCP (&lt;a href="https://github.com/block-core/angor/pull/792">PR #792&lt;/a>), avec des améliorations de CLI pour le workflow de test MCP dans &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> par DavidGershony a corrigé une facture Lightning Boltz qui utilisait le mauvais réseau après un changement de réseau à l&amp;rsquo;exécution, un bug qui serait apparu en production après le défaut mainnet v0.2.30. Les paramètres offrent maintenant une purge optionnelle du fichier de portefeuille de récupération pendant l&amp;rsquo;effacement de données (&lt;a href="https://github.com/block-core/angor/pull/883">PR #883&lt;/a>).&lt;/p>
&lt;h3 id="sprout-v036--rafraîchissement-ttl-de-canal-éphémère-et-commandes-slash-acp">Sprout v0.3.6 : rafraîchissement TTL de canal éphémère et commandes slash ACP&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.6">Sprout v0.3.6&lt;/a>, publié le 10 juin, est la huitième version d&amp;rsquo;une série qui a commencé avec v0.3.7 le 2 juin. Newsletter #25 a couvert la série v0.3.1 à v0.3.6 avec l&amp;rsquo;intégration mesh-llm et le travail sur les sections de canal ; v0.3.7 à v0.3.15 sont en aval de cela, axés sur le polissage et quelques ajouts visibles par l&amp;rsquo;utilisateur. Le changement le plus visible par l&amp;rsquo;utilisateur est un rafraîchissement TTL pour les canaux éphémères dans &lt;a href="https://github.com/block/sprout/pull/902">PR #902&lt;/a> : quand un utilisateur désarchive un canal éphémère, Sprout étend le time-to-live du canal afin que le désarchivage ne le réarchive pas immédiatement sous le minuteur d&amp;rsquo;expiration original. Les emojis personnalisés mobiles arrivent dans &lt;a href="https://github.com/block/sprout/pull/906">PR #906&lt;/a> aux côtés d&amp;rsquo;une refonte des paramètres, et les comptes de réactions s&amp;rsquo;animent maintenant au changement (&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> corrige une lacune de longue date où les noms d&amp;rsquo;affichage à plusieurs mots se cassaient et l&amp;rsquo;extraction de mention &lt;code>nostr:npub&lt;/code> &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> tombait silencieusement. Une UI d&amp;rsquo;équipe soutenue par répertoire pour desktop est livrée dans &lt;a href="https://github.com/block/sprout/pull/912">PR #912&lt;/a> avec des commandes install, sync et reveal. Les commandes slash passent maintenant à travers les connecteurs &lt;a href="https://agentclientprotocol.com">ACP&lt;/a> dans &lt;a href="https://github.com/block/sprout/pull/919">PR #919&lt;/a>, permettant à Sprout de transférer les commandes de style &lt;code>/help&lt;/code> directement aux runtimes d&amp;rsquo;agents tout en gardant l&amp;rsquo;UI Sprout hors du chemin.&lt;/p>
&lt;h3 id="wisp-v111--intégration-wallet-spark-et-garde-de-collage-nsec">Wisp v1.1.1 : intégration wallet Spark et garde de collage nsec&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.1">Wisp v1.1.1&lt;/a>, publié le 5 juin, atterrit un écran Connect wallet à deux niveaux avec sous-écran &lt;a href="https://www.spark.money">Spark&lt;/a> dans &lt;a href="https://github.com/barrydeen/wisp/pull/548">PR #548&lt;/a> et parité de tableau de bord avec l&amp;rsquo;UI du portefeuille iOS dans &lt;a href="https://github.com/barrydeen/wisp/pull/549">PR #549&lt;/a>. La sortie inclut une &lt;a href="https://github.com/barrydeen/wisp/pull/553">garde de collage nsec&lt;/a> à l&amp;rsquo;échelle du système qui détecte un collage préfixé &lt;code>nsec1&lt;/code> n&amp;rsquo;importe où dans l&amp;rsquo;app et empêche le champ de l&amp;rsquo;accepter, fermant l&amp;rsquo;un des pièges les plus cités dans l&amp;rsquo;UX Nostr. La connexion par scan QR plus un mode watch-only pour &lt;code>npub&lt;/code> et &lt;code>nprofile&lt;/code> est livrée dans &lt;a href="https://github.com/barrydeen/wisp/pull/552">PR #552&lt;/a>, permettant à un utilisateur de parcourir un profil en lecture seule. Les messages de zap se rendent maintenant comme mini-posts dans le tiroir d&amp;rsquo;engagement (&lt;a href="https://github.com/barrydeen/wisp/pull/559">PR #559&lt;/a>) afin que les notes de zap portent leur texte aux côtés du montant en sats. Un filtre de web of trust sur les réponses de fil atterrit dans &lt;a href="https://github.com/barrydeen/wisp/pull/583">PR #583&lt;/a>, permettant aux utilisateurs de masquer le spam de réponse des comptes en dehors de leur graphe de suivi.&lt;/p>
&lt;h3 id="nostria-v3146-et-nospeak-113--refonte-des-notifications-et-redémarrage-ice">Nostria v3.1.46 et nospeak 1.1.3 : refonte des notifications et redémarrage 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> le 7 juin termine une série de trois versions qui a retravaillé le compteur de notifications pour compter uniquement les nouvelles notifications depuis la dernière vue, éliminant une inflation de longue date où le chargement d&amp;rsquo;anciennes notifications par défilement augmentait le compte du badge. &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.45">Nostria v3.1.45&lt;/a> a corrigé un bug de paiement partagé affectant les paiements Lightning et code QR et a abandonné une UI translucide précédemment prévue comme non viable sur le compositeur Android.&lt;/p>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.1.3">nospeak v1.1.3&lt;/a> le 4 juin ajoute le redémarrage ICE en état FAILED pour les appels vocaux 1-sur-1. Le comportement WebRTC standard abandonne un appel quand les candidats ICE expirent sans chemin alternatif ; le chemin de redémarrage ICE renégocie les candidats afin que l&amp;rsquo;appel récupère des changements de NAT ou de réseau transitoires. Les appels Android gardent maintenant l&amp;rsquo;écran allumé pendant les appels vidéo.&lt;/p>
&lt;h2 id="changements-non-publiés">Changements non publiés&lt;/h2>
&lt;h3 id="amethyst--41-prs-poursuivant-la-voie-nip-32--nip-f4--tor">Amethyst : 41 PRs poursuivant la voie NIP-32 / NIP-F4 / Tor&lt;/h3>
&lt;p>Amethyst a fusionné 41 PRs cette semaine sans couper une balise de version, en plus des 52 PRs de la semaine dernière et du travail sur l&amp;rsquo;étiquetage de hashtag &lt;a href="https://nostrcompass.org/fr/topics/nip-32/">NIP-32&lt;/a> et l&amp;rsquo;écran de podcast &lt;a href="https://nostrcompass.org/fr/topics/nip-f4/">NIP-F4&lt;/a> couverts dans Newsletter #25. La branche active continue à accumuler des fonctionnalités pour la prochaine sortie étiquetée, superposant du polissage sur les ajouts titres de la semaine dernière : découverte d&amp;rsquo;étiqueteurs de hashtag, écran de podcast, pistes musicales et playlists, watchdog d&amp;rsquo;auto-guérison Tor, signataires éphémères pour uploads anonymes, et zaps on-chain avec filtrage NIP-05. Le débit de PRs d&amp;rsquo;Amethyst reste le plus élevé de tout client Nostr, et la file d&amp;rsquo;attente non publiée est la feuille de route de facto pour ce que les autres clients Android Nostr devront égaler.&lt;/p>
&lt;h3 id="damus--suivi-de-relais-depuis-les-messages-ok-et-changelog-v117">Damus : suivi de relais depuis les messages OK et changelog v1.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3786">Damus PR #3786&lt;/a>, fusionnée le 3 juin, ajoute les messages &lt;code>OK&lt;/code> réussis d&amp;rsquo;un relais à la liste de relais post. Les builds Damus antérieurs peuplaient la liste seen-relays uniquement lors de la réception d&amp;rsquo;un message générique du relais, ce qui signifiait qu&amp;rsquo;un relais qui accusait le post mais ne livrait aucun événement en retour était invisible pour l&amp;rsquo;utilisateur. Le changement importe pour les utilisateurs qui veulent confirmer que leur post a atterri sur leur relais d&amp;rsquo;outbox préféré. &lt;a href="https://github.com/damus-io/damus/pull/3796">PR #3796&lt;/a> corrige un cycle &lt;code>AttributeGraph&lt;/code> sur Profile View, et &lt;a href="https://github.com/damus-io/damus/pull/3725">PR #3725&lt;/a> atterrit le changelog v1.17 avant la prochaine sortie étiquetée.&lt;/p>
&lt;h3 id="shopstr--publication-double-nip-34">Shopstr : publication double NIP-34&lt;/h3>
&lt;p>Le &lt;a href="https://relay.ngit.dev/npub1u350hpq840naxzkkle4gmdtvzanfxmjd9m9tytn5355aua7jh2cqgfuw39/shopstr.git">dépôt shopstr sur ngit&lt;/a> a été annoncé sur Nostr cette semaine comme dépôt git &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a>, rejoignant les dépôts suivis de ngit. Le dépôt GitHub du client shop reste la surface de développement principale ; l&amp;rsquo;annonce NIP-34 rend disponible un chemin parallèle de collaboration git-over-Nostr. C&amp;rsquo;est le deuxième grand projet marketplace Nostr à publier en double sur NIP-34 après &lt;a href="https://relay.ngit.dev/">Mostro&lt;/a>, et continue la migration progressive des métadonnées de projet sur le transport git de Nostr.&lt;/p>
&lt;h3 id="hermes-marmot--passerelle-dagent-ia-sur-mls">Hermes-Marmot : passerelle d&amp;rsquo;agent IA sur MLS&lt;/h3>
&lt;p>&lt;a href="https://github.com/notmandatory/hermes-marmot">hermes-marmot&lt;/a>, un plugin pour l&amp;rsquo;&lt;a href="https://github.com/NousResearch/hermes-agent">Hermes Agent&lt;/a>, connecte la surface de messagerie d&amp;rsquo;un agent IA à des groupes &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> (MLS-over-Nostr) en utilisant &lt;a href="https://github.com/marmot-protocol/mdk-python">mdk-python&lt;/a>, les bindings Python au Rust Marmot Development Kit. Le plugin permet à un utilisateur de DM un agent IA depuis n&amp;rsquo;importe quel client Nostr qui parle les messages MLS kind 445, y compris &lt;a href="https://whitenoise.chat">Whitenoise&lt;/a>. Les DMs entrants utilisent le déballage gift-wrap &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> via les bindings Python &lt;a href="https://github.com/rust-nostr/nostr">nostr-sdk&lt;/a>, et les welcomes entrants passent à travers &lt;code>UnwrappedGift.from_gift_wrap&lt;/code> à &lt;code>mdk.process_welcome&lt;/code> et &lt;code>mdk.accept_welcome&lt;/code>. Le contrôle d&amp;rsquo;accès passe par &lt;code>MARMOT_ALLOWED_USERS&lt;/code> (une liste blanche de npubs séparée par des virgules) ou &lt;code>MARMOT_ALLOW_ALL_USERS=true&lt;/code> pour un accès dev ouvert.&lt;/p>
&lt;p>Le dépôt est nouveau (dernière mise à jour le 27 mai) et petit. Son importance est architecturale : c&amp;rsquo;est le premier pont public entre un runtime d&amp;rsquo;agent LLM et un canal de messagerie Nostr chiffré par MLS, et la première utilisation en production de mdk-python au-delà de Whitenoise lui-même. Le modèle pointe vers une communication agent-à-agent où les deux endpoints détiennent des clés MLS et le relais ne voit que le chiffré.&lt;/p>
&lt;h2 id="mises-à-jour-nip-et-travail-de-spécification-de-protocole">Mises à jour NIP et travail de spécification de protocole&lt;/h2>
&lt;h3 id="nip-67-indice-de-complétude-eose-pr-2317-fusionné">NIP-67 indice de complétude EOSE (PR #2317) fusionné&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a> par mattn a fusionné le 6 juin, ajoutant &lt;a href="https://nostrcompass.org/fr/topics/nip-67/">NIP-67&lt;/a> au protocole. Le NIP étend le message relais &lt;code>EOSE&lt;/code> avec un troisième élément optionnel : &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;, &amp;quot;finish&amp;quot;]&lt;/code> signale que chaque événement stocké correspondant au filtre a été livré, tandis qu&amp;rsquo;un simple &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;]&lt;/code> ne porte aucune revendication de complétude. Un relais qui omet l&amp;rsquo;indice dit au client qu&amp;rsquo;il pourrait y en avoir plus ; un relais qui omet l&amp;rsquo;annonce NIP-67 dans NIP-11 conserve le comportement d&amp;rsquo;aujourd&amp;rsquo;hui sous l&amp;rsquo;heuristique legacy existante. Le changement est rétrocompatible dans les deux directions : les clients legacy ignorent l&amp;rsquo;élément final du tableau, et les relais legacy l&amp;rsquo;omettent.&lt;/p>
&lt;p>La motivation dans la spécification fusionnée est double. Premièrement, la perte silencieuse de données : un client demande les 500 dernières notes contre un relais avec un plafond interne de 300 événements, le relais retourne 300 événements, et le client (utilisant l&amp;rsquo;heuristique standard &lt;code>received &amp;lt; limit&lt;/code>) conclut que le résultat est complet. Les 201e à Ne notes correspondantes les plus anciennes restent sur le relais non lues, avec le client aveugle à ce fait. Deuxièmement, les allers-retours obligatoirement gaspillés : quand un relais plafonne les réponses à 300 événements, tout abonnement qui épuise le plafond nécessite un second &lt;code>REQ&lt;/code> avec &lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code> purement pour confirmer la complétude, même quand le filtre correspond exactement à 300 événements. Les deux modes de défaillance sont payés par chaque client sur chaque abonnement à plafond épuisé. L&amp;rsquo;indice &lt;code>&amp;quot;finish&amp;quot;&lt;/code> est une chaîne optionnelle sur un message existant et élimine les deux coûts.&lt;/p>
&lt;h3 id="extension-dautocomplétion-nip-50-pr-2357-fusionnée">Extension d&amp;rsquo;autocomplétion NIP-50 (PR #2357) fusionnée&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a> par Alex Gleason a fusionné le 6 juin, ajoutant un token &lt;code>autocomplete:true/false&lt;/code> à la recherche &lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a>. L&amp;rsquo;extension permet à un client de marquer une requête comme recherche typeahead afin que le relais utilise la correspondance de préfixe, avec la recherche full-text comme défaut pour les requêtes sans le token. Le relais de Ditto l&amp;rsquo;implémente pour les follow packs, les listes, et tout événement avec une balise &lt;code>title&lt;/code>, retournant les correspondances contre le préfixe du titre ; le chemin de recherche par défaut exécute le scoring full-text. Sans ce token, les UIs de style autocomplétion n&amp;rsquo;avaient aucun moyen de communiquer l&amp;rsquo;intention de recherche par préfixe et les relais devaient deviner à partir de la forme de la requête. Le token est un indice par recherche, pas une capacité à l&amp;rsquo;échelle du relais, donc un relais peut l&amp;rsquo;implémenter pour une classe d&amp;rsquo;événement (titres) sans revendiquer un support d&amp;rsquo;autocomplétion général.&lt;/p>
&lt;h3 id="alertes-durgence-et-diffusions-de-localisation-nip-gart-pr-2374">Alertes d&amp;rsquo;urgence et diffusions de localisation NIP-GART (PR #2374)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2374">PR #2374&lt;/a> par disinqa, ouverte le 9 juin, définit un format de câble préservant la vie privée sur Nostr pour les alertes d&amp;rsquo;urgence et les diffusions de localisation adressées à un groupe de destinataires de confiance. Le but de conception déclaré est de cacher l&amp;rsquo;identité de l&amp;rsquo;expéditeur, l&amp;rsquo;appartenance au groupe, et la charge utile aux opérateurs de relais tout en gardant les événements sûrs contre le replay et vérifiables par signature de bout en bout. Le numéro NIP est encore TBD, la proposition est un projet précoce. Le cas d&amp;rsquo;usage est le modèle standard d&amp;rsquo;alerte d&amp;rsquo;urgence : un utilisateur sous menace diffuse un ping de localisation que seul un groupe pré-partagé de contacts de confiance peut déchiffrer, avec le relais aveugle à l&amp;rsquo;expéditeur, l&amp;rsquo;ensemble des destinataires, et la charge utile. Les détails du format de câble vivent dans la PR et évolueront probablement à mesure que les mainteneurs révisent.&lt;/p>
&lt;h3 id="méthode-de-déconnexion-nip-46-pr-2373">Méthode de déconnexion NIP-46 (PR #2373)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a> par hzrd149, ouverte le 8 juin, ajoute une méthode &lt;code>logout&lt;/code> à &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> afin qu&amp;rsquo;un client puisse dire à un bunker explicitement que la session est terminée. Jusqu&amp;rsquo;à maintenant, la seule façon de terminer une session bunker était d&amp;rsquo;attendre le timeout de session ou d&amp;rsquo;arrêter d&amp;rsquo;utiliser la connexion, les deux laissant le bunker tenant l&amp;rsquo;état de session pour un client qui est parti. La proposition est courte (une nouvelle méthode) et est le genre de changement de nettoyage qui rend les intégrations bunker de longue durée plus propres.&lt;/p>
&lt;h3 id="proposition-hybride-relay-p2p-nip-95-circulée-en-tant-que-long-form">Proposition hybride relay-P2P NIP-95 circulée en tant que long-form&lt;/h3>
&lt;p>Une &lt;a href="https://github.com/nostr-protocol/nips">spécification NIP-95 long-form&lt;/a> a circulé comme post &lt;code>kind:30023&lt;/code> de npub &lt;code>91bea5cd9361504c409aaf459516988f68a2fcd482762fd969a7cdc71df4451c&lt;/code> le 4 juin sous le titre &lt;em>Protocolo Híbrido Relay-P2P via WebRTC&lt;/em>. Le document en portugais définit un protocole hybride pair-à-pair de relais où les clients Nostr se connectent directement les uns aux autres via WebRTC pour la messagerie en direct tout en continuant à utiliser les relais pour la récupération d&amp;rsquo;événements stockés et la livraison hors ligne. L&amp;rsquo;auteur a explicitement cadré la spécification comme « LLM-ready », fournissant des définitions de messages, des flux logiques, des schémas de données, et des règles d&amp;rsquo;état à un niveau de détail qui permet à un modèle IA de générer du code client ou serveur fonctionnel. La proposition n&amp;rsquo;a pas encore atterri comme PR NIP ; la circulation via &lt;code>kind:30023&lt;/code> est le précurseur habituel d&amp;rsquo;une pull request formelle nostr-protocol/nips.&lt;/p>
&lt;h3 id="nip-44-v3-gagne-un-second-signataire--clave-porte-la-spécification">NIP-44 v3 gagne un second signataire : Clave porte la spécification&lt;/h3>
&lt;p>Le &lt;a href="https://nostrcompass.org/fr/newsletters/2026-06-03-newsletter/#nip-44-v3-amber-implementation-ahead-of-spec">déploiement NIP-44 v3 d&amp;rsquo;Amber v6.2.0 de la semaine dernière&lt;/a> a été livré avant toute PR NIPs fusionnée, laissant v3 comme extension spécifique à Amber que d&amp;rsquo;autres clients devaient refléter pour interopérer. Ce cadrage d&amp;rsquo;implémentation unique a changé cette semaine. &lt;a href="https://github.com/DocNR/clave">Clave&lt;/a>, le signataire iOS remote NIP-46 basé sur push, a atterri un port NIP-44 v3 indépendant les 3 et 4 juin à travers huit commits. Les primitives cryptographiques sont livrées dans trois commits : &lt;a href="https://github.com/DocNR/clave/commit/99ca5a5aacb501d1666c489fcdea30187c7853fa">couche HKDF + clés ECDH&lt;/a>, &lt;a href="https://github.com/DocNR/clave/commit/8808cdca54d32b4ae57856bd4b07ed73a45e8e5c">l&amp;rsquo;algorithme de padding v3&lt;/a>, et une &lt;a href="https://github.com/DocNR/clave/commit/ae1f506a53cb2c8aa16523540dbe790876c1839e">API publique de haut niveau plus un Context de chiffrement&lt;/a>. En plus de ceux-ci, la surface NIP-46 suit dans le &lt;a href="https://github.com/DocNR/clave/commit/f37aa1afc8368862fc3ebac533408442349bfc38">câblage de dispatch RPC à l&amp;rsquo;intérieur de LightSigner&lt;/a> et un &lt;a href="https://github.com/DocNR/clave/commit/e51bcb49fc61cfa89b6030d61b203e046aeddb0a">schéma PendingRequest qui porte le contexte v3 (kind plus portée)&lt;/a>, afin que le signataire puisse enregistrer pour quel kind d&amp;rsquo;événement et cas d&amp;rsquo;usage la charge utile v3 a été approuvée.&lt;/p>
&lt;p>Clave diverge d&amp;rsquo;Amber sur la surface orientée utilisateur. Un &lt;a href="https://github.com/DocNR/clave/commit/0a8b7de63c1f2994a80a66bf139ec519fab12877">schéma d&amp;rsquo;octroi de permission avec paliers de sensibilité&lt;/a> permet aux utilisateurs d&amp;rsquo;octroyer le chiffrement v3 pour un kind d&amp;rsquo;événement et une portée particuliers à un niveau de sensibilité choisi. Lors de la première rencontre, &lt;a href="https://github.com/DocNR/clave/commit/2cf563cb15b0406f5e8aaa0b4e34b887ff1896a1">des invites d&amp;rsquo;approbation conscientes du contexte v3 avec une carte explicative unique&lt;/a> introduisent v3 aux utilisateurs. Le travail est dans main et est &lt;a href="https://github.com/DocNR/clave/commit/4bd0c26d7cf308386ef15e5d96ee5673d6db2d4a">câblé dans le projet Xcode&lt;/a> mais n&amp;rsquo;est pas publié ; le build étiqueté le plus récent est &lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build79">v0.2.0-build79&lt;/a> du 12 mai.&lt;/p>
&lt;p>Deux implémentations indépendantes atterrissent NIP-44 v3 dans les chemins de production avant que la PR NIPs ne fusionne, ce qui renforce le cas pour le format de câble sous-jacent que la PR de protocole formalisera. Les tests d&amp;rsquo;interop inter-implémentations deviennent maintenant le chemin vers la convergence de spécification, avec la surface d&amp;rsquo;approbation Android d&amp;rsquo;Amber et le modèle de palier de sensibilité iOS de Clave comme les deux points de référence. D&amp;rsquo;autres signataires remote câblant v3 (noauth de nsec.app est dormant depuis mai 2025, et d&amp;rsquo;autres bunkers n&amp;rsquo;ont pas annoncé de travail v3) resserreraient encore le consensus.&lt;/p>
&lt;h3 id="activité-nip-34--iris-adopte-la-pile-avec-un-nouveau-transport-hashtree">Activité NIP-34 : Iris adopte la pile avec un nouveau transport hashtree&lt;/h3>
&lt;p>Iris a publié des annonces de dépôt NIP-34 pour &lt;a href="https://njump.me/nevent1qqs8kmy7a9dn5awurlp9q26lsaetl7dc4wauzdl8ww68dzmn09e074gpzfmhxue69uhhgetdwqhxjunfwvh8gmc850du0">&lt;code>hashtree&lt;/code>&lt;/a> le 8 juin et &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>, et &lt;a href="https://njump.me/nevent1qqs0x98hpsv8vmrxvwm2rs9exxttrue5qv5p2n2sqjeylz2kgdmd7tgpzfmhxue69uhhgetdwqhxjunfwvh8gmca8783s">&lt;code>iris-chat-rs&lt;/code>&lt;/a> le 9 juin, annonçant des URLs de clone sous un nouveau schéma &lt;code>htree://&lt;/code> servi depuis &lt;code>wss://temp.iris.to&lt;/code>. Le transport hashtree est une alternative adressée par contenu aux clones routés GRASP, et ces quatre annonces sont ses premières utilisations publiques. Les dépôts portent des descriptions vides et les détails architecturaux émergent encore, mais le choix de publier via annonce NIP-34 (plutôt qu&amp;rsquo;un manifeste interne Iris personnalisé) signale qu&amp;rsquo;Iris s&amp;rsquo;engage envers la pile plus large NIP-34 git-over-Nostr.&lt;/p>
&lt;h2 id="nip-deep-dive--nip-67-indice-de-complétude-eose">NIP deep dive : NIP-67 (Indice de complétude EOSE)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-67/">NIP-67&lt;/a> ferme l&amp;rsquo;une des lacunes de correction les plus anciennes dans &lt;a href="https://nostrcompass.org/fr/topics/nip-01/">NIP-01&lt;/a>. La spécification originale définit &lt;code>EOSE&lt;/code> comme la frontière entre les événements stockés et les événements d&amp;rsquo;abonnement en direct pour un &lt;code>REQ&lt;/code>, mais elle n&amp;rsquo;a jamais spécifié si le relais avait fini de livrer toutes les correspondances stockées ou s&amp;rsquo;était arrêté en cours de route à cause d&amp;rsquo;un plafond interne. Chaque relais applique un plafond par abonnement (communément 300 à 1000 événements) indépendant du &lt;code>limit&lt;/code> du client, et les clients n&amp;rsquo;ont eu aucun moyen d&amp;rsquo;observer ce plafond.&lt;/p>
&lt;p>La solution de contournement standard était de comparer le compte reçu contre le &lt;code>limit&lt;/code> demandé. Si &lt;code>received &amp;lt; limit&lt;/code>, traiter le résultat comme complet ; sinon paginer avec &lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code>. Les deux branches sont cassées. La branche &lt;code>received &amp;lt; limit&lt;/code> tronque silencieusement : un client demandant 500 notes contre un relais plafonné à 300 voit 300 événements, conclut que le résultat est complet parce que &lt;code>300 &amp;lt; 500&lt;/code>, et ne récupère jamais le reste. Les événements retenus sur le relais ne peuvent pas signaler « plus disponible » à travers un message existant. La pagination comme seconde branche est gaspilleuse : un filtre qui correspond exactement au plafond nécessite un second &lt;code>REQ&lt;/code> pour confirmer la complétude, retournant zéro événement tout en consommant un scan de filtre complet sur le relais.&lt;/p>
&lt;p>Le correctif de NIP-67 est une chaîne optionnelle sur le message &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;] // explicite : tous les événements stockés livrés
[&amp;#34;EOSE&amp;#34;, &amp;#34;&amp;lt;sub_id&amp;gt;&amp;#34;] // aucune revendication de complétude
&lt;/code>&lt;/pre>&lt;p>Un relais qui annonce NIP-67 dans les &lt;code>supported_nips&lt;/code> &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> et émet un &lt;code>EOSE&lt;/code> simple dit au client qu&amp;rsquo;il y en a plus. Un relais qui omet l&amp;rsquo;annonce conserve le comportement d&amp;rsquo;aujourd&amp;rsquo;hui, et le client revient à l&amp;rsquo;heuristique existante. Les clients legacy ignorent l&amp;rsquo;élément final du tableau. La rétrocompatibilité tient dans les deux directions, sans nouveaux verbes ou kinds d&amp;rsquo;événements.&lt;/p>
&lt;p>Ce qui rend NIP-67 digne d&amp;rsquo;examen est la portée qu&amp;rsquo;il restreint délibérément. La spécification ne définit aucun curseur ou token de pagination, donc la pagination basée sur &lt;code>until&lt;/code> reste le mécanisme. Les plafonds de relais restent là où ils sont, et le NIP ne nécessite aucune exposition de ceux-ci. NIP-67 préserve le sens de &lt;code>EOSE&lt;/code> comme frontière stocké-vers-live et ajoute seulement un signal oui-ou-non à la frontière : « J&amp;rsquo;en ai plus pour vous » versus « c&amp;rsquo;est tout ». Cette surface minimale est pourquoi la PR a fusionné après une période de revue relativement courte pour une extension NIP-01, et pourquoi mattn note explicitement dans la PR que la traduction IA a été utilisée pour le texte anglais. Le changement est assez petit pour que l&amp;rsquo;incertitude de traduction n&amp;rsquo;importe pas.&lt;/p>
&lt;p>Exemple d&amp;rsquo;échange conscient de NIP-67 entre un client et un relais appliquant un plafond. Annonce NIP-11 du relais :&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>L&amp;rsquo;échange au niveau du câble qui suit :&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 messages EVENT...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;abc&amp;#34;] // pas de &amp;#34;finish&amp;#34; : plafond atteint, plus disponible
→ [&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 messages EVENT...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;def&amp;#34;, &amp;#34;finish&amp;#34;] // complète explicite
&lt;/code>&lt;/pre>&lt;p>La réponse de 178 événements aurait précédemment déclenché un troisième &lt;code>REQ&lt;/code> pour confirmer la complétude. Avec NIP-67, le client s&amp;rsquo;y arrête.&lt;/p>
&lt;p>NIP-67 est également notable comme amendement NIP-01 atterrissant avec un consensus rare. La plupart des changements NIP-01 attirent de longs fils de débat parce que la petite surface du protocole est porteuse pour chaque implémentation. NIP-67 a fusionné après une période de revue prolongée (environ sept semaines de l&amp;rsquo;ouverture à la fusion), suggérant que quand un changement NIP-01 est assez petit et le mode de défaillance assez concret (perte silencieuse de données, aller-retour gaspillé obligatoire), les mainteneurs du protocole sont disposés à étendre le vocabulaire des messages centraux.&lt;/p>
&lt;h2 id="nip-deep-dive--nip-50-recherche">NIP deep dive : NIP-50 (Recherche)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a> définit le champ de filtre &lt;code>search&lt;/code> dans les messages &lt;code>REQ&lt;/code>, permettant aux clients de demander à un relais de filtrer les événements par correspondance full-text contre une chaîne de requête. La spécification de base fusionnée est délibérément minimale : le champ &lt;code>search&lt;/code> est une chaîne, chaque relais décide de sa propre sémantique de recherche (quels champs sont indexés, comment fonctionne le scoring, si le stemming s&amp;rsquo;applique), et les relais annoncent le support NIP-50 dans leur document NIP-11. Les clients contrôlent l&amp;rsquo;algorithme de recherche uniquement à travers la chaîne de requête elle-même.&lt;/p>
&lt;p>Ce minimalisme est à la fois la force et la contrainte de NIP-50. La force est que n&amp;rsquo;importe quel relais peut implémenter la recherche à n&amp;rsquo;importe quel niveau de qualité : un scan de sous-chaîne de base satisfait la spécification, et un relais exécutant Elasticsearch ou Meilisearch la satisfait également. La contrainte est que les clients manquent d&amp;rsquo;un moyen d&amp;rsquo;exprimer l&amp;rsquo;intention de recherche. Une UI de typeahead de mention de profil veut la correspondance de préfixe contre les noms d&amp;rsquo;affichage ; une recherche de contenu full-text veut le scoring full-text tokenisé à travers le corps de la note. Le même champ &lt;code>search&lt;/code> porte les deux, et le relais doit deviner à partir de la forme de la requête.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a> ajoute le premier token d&amp;rsquo;extension NIP-50 : &lt;code>autocomplete:true&lt;/code> ou &lt;code>autocomplete:false&lt;/code> intégré dans la requête de recherche signale quel mode le client veut. Le relais de Ditto implémente le token pour les follow packs, les listes, et tout événement avec une balise &lt;code>title&lt;/code>, passant à la correspondance de préfixe quand &lt;code>autocomplete:true&lt;/code> est présent. Le token vit inline dans la requête (les champs de filtre séparés restent intacts), donc il voyage avec la chaîne de recherche et ne nécessite aucun bump de protocole de câble :&lt;/p>
&lt;pre tabindex="0">&lt;code>search: &amp;#34;fiat autocomplete:true&amp;#34;
&lt;/code>&lt;/pre>&lt;p>Les indices en forme de token comme celui-ci sont la façon dont NIP-50 a toujours géré les dialectes spécifiques au relais. Les relais supportaient déjà des tokens comme &lt;code>language:en&lt;/code> et &lt;code>domain:example.com&lt;/code>. Chacun reste spécifique au relais, chaque relais documentant son propre dialecte. La PR #2357 de NIP-50 élève &lt;code>autocomplete&lt;/code> d&amp;rsquo;un token privé au relais à un béni par la spécification, ouvrant la voie à une recherche consciente du typeahead à travers les relais.&lt;/p>
&lt;p>Exemple &lt;code>REQ&lt;/code> NIP-50 avec le token autocomplete, ciblant un relais qui indexe les titres de profil 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>Le REQ réel au niveau du câble :&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 relais qui ne reconnaît pas le token traite &lt;code>autocomplete:true&lt;/code> comme faisant partie de la chaîne de recherche littérale et revient à la correspondance full-text, retournant des résultats corrects (bien que classés différemment). La dégradation gracieuse rend le token sûr à inclure inconditionnellement pour les clients qui préfèrent la correspondance de préfixe quand disponible.&lt;/p>
&lt;p>La prochaine extension NIP-50 probable est le contrôle de classement par kind : un indice qui dit « classer par &lt;code>created_at&lt;/code> descendant » versus le score de pertinence par défaut. Plusieurs relais acceptent déjà &lt;code>sort:newest&lt;/code> comme token privé au relais, et le même chemin d&amp;rsquo;élévation qui a amené &lt;code>autocomplete&lt;/code> dans la spécification s&amp;rsquo;applique. La recherche reste l&amp;rsquo;une des rares primitives Nostr où les relais rivalisent sur la qualité des résultats ; la fiabilité de la livraison est la même à travers tous les relais conformes. Les tokens incrémentaux permettent aux clients d&amp;rsquo;exploiter cette compétition de qualité sans forcer les relais à livrer une nouvelle spécification lourde.&lt;/p></content:encoded></item><item><title>Nostr Compass #25</title><link>https://nostrcompass.org/fr/newsletters/2026-06-03-newsletter/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-06-03-newsletter/</guid><description>&lt;p>Amber 6.2.0 livre le chiffrement NIP-44 v3 avant la spécification. Mostro pose la fondation pour l&amp;rsquo;entiercement réglé en Cashu à travers huit PRs, enveloppant le Cashu Development Kit existant comme deuxième backend de règlement aux côtés de Lightning. Les podcasts NIP-F4 fusionnent après 27 mois de débat. fiatjaf ouvre une proposition contestée de découplage de clé NIP-17 qui rouvre l&amp;rsquo;argument architectural bunker-contre-Marmot. Amethyst livre l&amp;rsquo;étiquetage de hashtag NIP-32, un écran de podcast dédié et les zaps on-chain à travers 52 PRs non publiées.&lt;/p></description><content:encoded>&lt;p>Amber 6.2.0 livre le chiffrement NIP-44 v3 avant la spécification. Mostro pose la fondation pour l&amp;rsquo;entiercement réglé en Cashu à travers huit PRs, enveloppant le Cashu Development Kit existant comme deuxième backend de règlement aux côtés de Lightning. Les podcasts NIP-F4 fusionnent après 27 mois de débat. fiatjaf ouvre une proposition contestée de découplage de clé NIP-17 qui rouvre l&amp;rsquo;argument architectural bunker-contre-Marmot. Amethyst livre l&amp;rsquo;étiquetage de hashtag NIP-32, un écran de podcast dédié et les zaps on-chain à travers 52 PRs non publiées.&lt;/p>
&lt;h2 id="articles-principaux">Articles principaux&lt;/h2>
&lt;h3 id="amber-620--chiffrement-nip-44-v3-livré">Amber 6.2.0 : chiffrement NIP-44 v3 livré&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.0">Amber v6.2.0&lt;/a>, publié le 1er juin, ajoute le &lt;a href="https://github.com/greenart7c3/Amber/pull/448">support de chiffrement NIP-44 v3&lt;/a> avec un écran d&amp;rsquo;approbation dédié, un aperçu d&amp;rsquo;intent, un aperçu bunker, la journalisation d&amp;rsquo;historique, et l&amp;rsquo;auto-rejet pour les demandes invalides. La sortie enregistre également les &lt;a href="https://github.com/greenart7c3/Amber/commit/8b93340">autorités ContentProvider NIP-44 v3&lt;/a> afin que d&amp;rsquo;autres apps Android puissent demander le chiffrement v3 aux côtés du chemin v2 existant. NIP-44 lui-même est la spécification de charge utile chiffrée versionnée utilisée par les DMs privés &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a>, le trafic bunker NIP-46, et d&amp;rsquo;autres primitives Nostr ; v3 dans Amber est un opt-in aux côtés de v2, signalé par une méthode de signataire séparée afin que les clients côté récepteur puissent négocier l&amp;rsquo;algorithme explicitement. La PR NIPs correspondante n&amp;rsquo;a pas encore atterri, donc Amber déploie v3 avant le consensus de protocole, avec le format de câble et l&amp;rsquo;autorité ContentProvider enregistrés pour l&amp;rsquo;intégration client en aval.&lt;/p>
&lt;p>Les sessions NIP-46 acceptent maintenant automatiquement les demandes de ping à la connexion, supprimant l&amp;rsquo;invite au premier aller-retour après l&amp;rsquo;appairage. La méthode de signataire &lt;code>sign_message&lt;/code> a été entièrement supprimée après avoir été dépréciée et inutilisée.&lt;/p>
&lt;p>Parce qu&amp;rsquo;Amber est le signataire Android dominant, chaque client en aval qui veut v3 doit cibler le format de câble d&amp;rsquo;Amber jusqu&amp;rsquo;à ce que la PR NIPs atterrisse. Cela donne à Amber un mot implicite sur la spécification v3 finale jusqu&amp;rsquo;à ce que le protocole rattrape. L&amp;rsquo;échange est réel : v3 en production permet à Amber de rassembler des retours d&amp;rsquo;implémentation pour le NIP éventuel, au coût d&amp;rsquo;un point de référence à implémentation unique temporaire que d&amp;rsquo;autres clients doivent maintenant égaler.&lt;/p>
&lt;h3 id="mostro--intégration-dentiercement-cashu-via-cdk">Mostro : intégration d&amp;rsquo;entiercement Cashu via CDK&lt;/h3>
&lt;p>grunch a atterri huit PRs à travers MostroP2P cette semaine intégrant les primitives multisig P2PK existantes de Cashu (NUT-10 et NUT-11) comme deuxième backend de règlement aux côtés de Lightning sur l&amp;rsquo;échange Bitcoin P2P coordonné par Nostr. Les primitives cryptographiques sont celles de Cashu ; le travail est un échafaudage d&amp;rsquo;intégration et un nouveau trait de backend d&amp;rsquo;entiercement. &lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.12.0">Mostro core v0.12.0&lt;/a>, publié le 30 mai, ajoute les &lt;a href="https://github.com/MostroP2P/mostro-core/pull/150">types de protocole pour l&amp;rsquo;entiercement multisig 2-de-3&lt;/a>, les signatures P_M par preuve, et permet les événements d&amp;rsquo;entiercement via la validation de réponse. L&amp;rsquo;architecture est documentée dans &lt;a href="https://github.com/MostroP2P/mostro/pull/756">PR #756&lt;/a> et utilise des clés de trade par commande clarifiées dans &lt;a href="https://github.com/MostroP2P/mostro/pull/757">PR #757&lt;/a>.&lt;/p>
&lt;p>L&amp;rsquo;implémentation s&amp;rsquo;est déployée à travers six PRs de suivi sur une seule journée. &lt;a href="https://github.com/MostroP2P/mostro/pull/758">F2 (PR #758)&lt;/a> a ajouté la config, le mode d&amp;rsquo;entiercement, et le démarrage conditionnel. La tranche suivante, &lt;a href="https://github.com/MostroP2P/mostro/pull/760">F3 (PR #760)&lt;/a>, a défini un trait &lt;code>EscrowBackend&lt;/code> avec une implémentation Lightning et un stub Cashu, permettant à Mostro de commuter les backends de règlement sans changer la machine d&amp;rsquo;état de commande. &lt;a href="https://github.com/MostroP2P/mostro/pull/759">F4 (PR #759)&lt;/a> a enveloppé &lt;a href="https://github.com/cashubtc/cdk">CDK&lt;/a> (le Cashu Development Kit) pour les opérations de mint et de portefeuille. Le travail de base de données dans &lt;a href="https://github.com/MostroP2P/mostro/pull/761">F5 (PR #761)&lt;/a> a ajouté des verrous d&amp;rsquo;entiercement compare-and-swap et des requêtes de verrous actifs. &lt;a href="https://github.com/MostroP2P/mostro/pull/762">F6 (PR #762)&lt;/a> a construit un mint conteneurisé dans une tâche CI dédiée pour les tests d&amp;rsquo;entiercement de bout en bout. Le flux Mostro utilise déjà les DMs gift-wrapped NIP-59 pour la coordination de commandes sur le relais, donc l&amp;rsquo;entiercement Cashu s&amp;rsquo;insère comme deuxième option de règlement aux côtés de Lightning sans toucher au protocole de câble.&lt;/p>
&lt;h2 id="sorties">Sorties&lt;/h2>
&lt;h3 id="ngit-v250--fallback-grasp-et-fetches-git-paresseux">ngit v2.5.0 : fallback GRASP et fetches git paresseux&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.5.0">ngit v2.5.0&lt;/a> change le comportement par défaut de &lt;code>git push pr/&amp;lt;branch&amp;gt;&lt;/code> et &lt;code>ngit send&lt;/code> pour produire un kind PR pour les nouvelles propositions quand le dépôt a au moins un serveur GRASP enregistré. Auparavant, cela ne se déclenchait que pour les commits surdimensionnés de plus de 60 KB ou les commits contenant des submodules. Quand une PR ne peut pas être poussée vers les serveurs GRASP du dépôt, ngit revient maintenant au routage GRASP-06 via les serveurs déclarés. Le drapeau &lt;code>ngit send --git-server&lt;/code> ou &lt;code>git push -o git-server=&amp;lt;url&amp;gt;&lt;/code> permet aux contributeurs de cibler une URL git personnalisée ou un serveur GRASP explicitement.&lt;/p>
&lt;p>Les republications &lt;code>ngit init&lt;/code> préservent maintenant les balises inconnues des annonces existantes, afin que les balises ajoutées par une future version de ngit ou un outil tiers survivent à la republication. Un avertissement jaune liste les balises reportées, et &lt;code>--clean&lt;/code> les supprime à la demande. &lt;code>ngit pr apply&lt;/code>, &lt;code>ngit pr checkout&lt;/code>, et &lt;code>ngit pr list&lt;/code> consultent les serveurs git paresseusement et partagent un helper de fetch unique, afin que le checkout ne fetch plus inconditionnellement quand le commit est déjà local. &lt;code>ngit pr checkout&lt;/code> essaie également les URLs de clone fournies par le soumetteur depuis l&amp;rsquo;événement PR comme fallback quand les serveurs git déclarés du dépôt ne portent pas le tip de la PR, correspondant au comportement existant dans &lt;code>ngit pr apply&lt;/code>. ngit est l&amp;rsquo;implémentation de référence &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> pour la collaboration git sur Nostr, et v2.5.0 fait de GRASP le chemin de première classe pour les nouveaux contributeurs.&lt;/p>
&lt;h3 id="jumble-v2657--stripping-exif-et-compteurs-de-zap-validés">Jumble v26.5.7 : stripping EXIF et compteurs de zap validés&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.7">Jumble v26.5.7&lt;/a> ajoute deux changements qui affectent directement la vie privée de l&amp;rsquo;utilisateur et l&amp;rsquo;intégrité des données. Les identifiants de localisation et de caméra EXIF sont maintenant supprimés des uploads d&amp;rsquo;images avant qu&amp;rsquo;ils ne quittent le client, fermant une surface de fuite de métadonnées de longue date qui affectait chaque image postée depuis Jumble. Les compteurs de zap sont maintenant calculés uniquement à partir de reçus cryptographiquement validés, corrigeant les compteurs gonflés provenant d&amp;rsquo;événements de zap malformés qui permettaient aux attaquants d&amp;rsquo;exagérer les totaux de zap sur les notes. La sortie ajoute également la vérification d&amp;rsquo;identité d&amp;rsquo;expéditeur pour les DMs &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a>, fermant une surface d&amp;rsquo;usurpation où un expéditeur pouvait forger sa &lt;code>pubkey&lt;/code> dans le seal.&lt;/p>
&lt;h3 id="nostr-calendar-v160--rsvp-et-gestion-des-participants-en-double">nostr-calendar v1.6.0 : RSVP et gestion des participants en double&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> atterrit le flux RSVP de Formstr (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/169">PR #169&lt;/a>) et empêche les participants en double dans les invitations à un événement (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/168">PR #168&lt;/a>). L&amp;rsquo;option &lt;code>waitForAll&lt;/code> dans la fonction de publication par défaut est maintenant à false pour que l&amp;rsquo;UI ne se bloque pas sur les relais lents (&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> a livré les deux brouillons de proposition NIP de Formstr pour la planification de rendez-vous et les réservations.&lt;/p>
&lt;h3 id="sprout-036--sprout--mesh-llm-et-sections-de-canal">Sprout 0.3.6 : Sprout × mesh-llm et sections de canal&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.6">Sprout v0.3.6&lt;/a> est le titre d&amp;rsquo;une série de six sorties de v0.3.1 à v0.3.6 cette semaine. L&amp;rsquo;intégration in-process de Sprout × mesh-llm atterrit dans &lt;a href="https://github.com/block/sprout/pull/798">PR #798&lt;/a>, permettant à Sprout de servir et consommer des nœuds mesh-llm via l&amp;rsquo;admission de relais. Les sections de canal définies par l&amp;rsquo;utilisateur se synchronisent entre les appareils via Nostr dans &lt;a href="https://github.com/block/sprout/pull/792">PR #792&lt;/a>, et les sections de canal arrivent sur mobile avec la synchronisation relais dans &lt;a href="https://github.com/block/sprout/pull/800">PR #800&lt;/a>. Les notifications conscientes des fils avec des contrôles mute et follow mutables arrivent dans &lt;a href="https://github.com/block/sprout/pull/761">PR #761&lt;/a>.&lt;/p>
&lt;p>Les pièces jointes de type de fichier arbitraire avec cartes de téléchargement sont arrivées dans &lt;a href="https://github.com/block/sprout/pull/810">PR #810&lt;/a>, étendant Sprout au-delà des pièces jointes image uniquement. Mobile a gagné un onglet de fil social Pulse (&lt;a href="https://github.com/block/sprout/pull/772">PR #772&lt;/a>) et le polissage Pulse à travers les surfaces de fil, composition et filtre (&lt;a href="https://github.com/block/sprout/pull/796">PR #796&lt;/a>).&lt;/p>
&lt;h3 id="nostrbotkit-v050--chat-de-groupe-marmot-dans-un-framework-de-bot-rust">NostrBotKit v0.5.0 : chat de groupe Marmot dans un framework de 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>, publié le 24 mai sur Codeberg, ajoute le support &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> (MLS-over-Nostr, &lt;a href="https://github.com/nostr-protocol/nips/pull/2014">NIP-104&lt;/a>) au framework de bot Rust auto-hébergé. Quand &lt;code>marmot: true&lt;/code> est défini, le bot publie ses key packages MLS (kind 443, 30443, 10051), accepte les invitations de groupe automatiquement, et écoute les messages dans les groupes rejoints. Deux nouveaux types de commande, &lt;code>dm_marmot&lt;/code> et &lt;code>dm_marmot_npub&lt;/code>, permettent aux bots d&amp;rsquo;envoyer des messages dans des groupes Marmot nommés ou des chats Marmot 1:1 via des tâches cron ou des webhooks. Pour prévenir les boucles de rétroaction avec d&amp;rsquo;autres bots, les bots NostrBotKit ne répondent qu&amp;rsquo;aux messages explicitement adressés à eux via &lt;code>/command&lt;/code> ou &lt;code>@botname/command&lt;/code>. Les pièces jointes chiffrées utilisant MIP-04 sont automatiquement déchiffrées et re-uploadées via Blossom ou NIP-96, et la base de données d&amp;rsquo;état MLS est chiffrée avec une clé dérivée de la clé privée du bot. NostrBotKit est le premier framework Rust à livrer un support de bot NIP-104, ouvrant le déploiement de bots chiffrés par Marmot à un profil d&amp;rsquo;opérateur différent du chemin TypeScript existant.&lt;/p>
&lt;h3 id="noscrypt-v0114--sortie-de-bibliothèque-cryptographique-signée">noscrypt v0.1.14 : sortie de bibliothèque cryptographique signée&lt;/h3>
&lt;p>&lt;a href="https://github.com/vnuge/noscrypt/releases/tag/v0.1.14">noscrypt v0.1.14&lt;/a> est une sortie de sécurité de la bibliothèque cryptographique C utilisée par plusieurs clients Nostr pour les primitives secp256k1, NIP-04 et NIP-44. La sortie livre des &lt;a href="https://www.vaughnnugent.com/resources/software/modules/noscrypt">téléchargements signés PGP&lt;/a> vérifiables contre la clé publique du mainteneur. Les clients en aval qui empaquettent noscrypt devraient valider la signature avant l&amp;rsquo;intégration.&lt;/p>
&lt;h3 id="chama-v130--nouvel-entiercement-p2p-nostr-natif-avec-fedimint">Chama v1.3.0 : nouvel entiercement P2P Nostr-natif avec Fedimint&lt;/h3>
&lt;p>&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.3.0">Chama v1.3.0&lt;/a>, publié le 1er juin, est le titre d&amp;rsquo;une série de quatre sorties pour un nouveau client d&amp;rsquo;entiercement P2P Nostr-natif qui utilise l&amp;rsquo;ecash Fedimint et le partage de secret Shamir 2-de-3 pour le règlement. Le projet est livré sur &lt;a href="https://getchama.app">getchama.app&lt;/a> et fonctionne sans serveur. v1.3.0 introduit « heal that sticks » (rediffusion réussie et guérison de trade qui survivent aux redémarrages de session) et l&amp;rsquo;appariement de rails de paiement, où les Chamas orientées US font surface les rails de paiement US en premier. Le travail préparatoire pour les vitrines multi-unités a atterri à travers &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.11">v1.2.11&lt;/a> (schéma multi-unités) et &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.12">v1.2.12&lt;/a> (comptable de stock de vitrine + durcissement de récupération de pont Fedimint natif). Chama rejoint Mostro et Shopstr dans la catégorie marketplace Nostr, distinguée par son architecture sans serveur et son règlement d&amp;rsquo;entiercement basé sur Fedimint.&lt;/p>
&lt;h2 id="changements-non-publiés">Changements non publiés&lt;/h2>
&lt;h3 id="amethyst--étiquetage-de-hashtag-nip-32-écran-de-podcast-pistes-musicales">Amethyst : étiquetage de hashtag NIP-32, écran de podcast, pistes musicales&lt;/h3>
&lt;p>Amethyst a fusionné 52 PRs et 411 commits cette semaine sans couper une balise de sortie. Le plus grand ajout fonctionnel est &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a>, qui implémente l&amp;rsquo;étiquetage de hashtag &lt;a href="https://nostrcompass.org/fr/topics/nip-32/">NIP-32&lt;/a> et un fil de hashtag basé sur les étiquettes utilisant des événements kind 1985 avec des balises &lt;code>L&lt;/code> de namespace et &lt;code>l&lt;/code> d&amp;rsquo;étiquette. Cela remplace le mécanisme fragile de correspondance de texte &lt;code>#tag&lt;/code> par un modèle de découverte basé sur les étiqueteurs où les utilisateurs peuvent suivre des npubs d&amp;rsquo;étiqueteurs spécifiques comme ils suivent des créateurs de contenu. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> ajoute un écran de podcast dédié avec liste d&amp;rsquo;épisodes et lecteur en ligne, atterrissant dans les jours suivant la fusion de la spécification podcast &lt;a href="https://nostrcompass.org/fr/topics/nip-f4/">NIP-F4&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3071">PR #3071&lt;/a> ajoute un fil d&amp;rsquo;applications logicielles avec filtrage de liste de suivis, et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3067">PR #3067&lt;/a> ajoute le support des pistes musicales et playlists via les ensembles &lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a>.&lt;/p>
&lt;p>Les signataires éphémères pour les uploads de posts anonymes atterrissent dans &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3123">PR #3123&lt;/a>, permettant aux utilisateurs de poster anonymement sans exposer leur clé d&amp;rsquo;identité aux services d&amp;rsquo;upload. Un watchdog d&amp;rsquo;auto-guérison Tor avec des tests d&amp;rsquo;intégration contre Arti v2.3.0 arrive dans &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3053">PR #3053&lt;/a>, renforçant le routage Tor d&amp;rsquo;Amethyst pendant les pannes réseau transitoires. Les zaps on-chain et un filtre NIP-05 pour les utilisateurs revenant de Gemini atterrissent dans &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3052">PR #3052&lt;/a>, élargissant la surface de zap au-delà de Lightning aux paiements Bitcoin on-chain.&lt;/p>
&lt;h3 id="shopstr--validation-durl-daperçu-opengraph">Shopstr : validation d&amp;rsquo;URL d&amp;rsquo;aperçu OpenGraph&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/504">PR #504&lt;/a> valide les URLs d&amp;rsquo;aperçu OpenGraph avant de les rendre dans les annonces de marketplace, fermant une surface XSS potentielle où des vendeurs malveillants pourraient intégrer du contenu scripté via des métadonnées OG conçues. Les boutiques hébergées par Shopstr affichent des aperçus OG pour les liens externes, et les URLs non validées permettent à un attaquant d&amp;rsquo;injecter du contenu arbitraire dans l&amp;rsquo;UI de la boutique.&lt;/p>
&lt;h2 id="mises-à-jour-nip-et-travail-de-spécification-de-protocole">Mises à jour NIP et travail de spécification de protocole&lt;/h2>
&lt;h3 id="nip-f4-podcasts-fusionné-après-deux-ans">NIP-F4 (Podcasts) fusionné après deux ans&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1093">PR #1093&lt;/a> a fusionné le 28 mai, deux ans et trois mois après que fiatjaf ait ouvert le projet original. NIP-F4 définit les épisodes de podcast comme événements kind 54 avec des balises &lt;code>imeta&lt;/code> pour les métadonnées de fichier audio (URL, type mime, code de langue ISO, URLs de fallback, drapeau de service NIP-96, débit binaire, durée), une balise &lt;code>title&lt;/code>, des balises optionnelles &lt;code>image&lt;/code> et &lt;code>description&lt;/code>, et des balises &lt;code>t&lt;/code> pour les étiquettes de sujet. La spécification garde délibérément RSS comme source de vérité : les épisodes peuvent porter une balise &lt;code>i&lt;/code> référençant le GUID de podcast RSS, permettant aux clients Nostr de créer des liens vers les flux de podcast existants sans dupliquer l&amp;rsquo;hébergement audio. Le long débat dans le fil de la PR (avec le co-auteur podcast-namespace Dave Jones, Alex Gleason, et Mike Terenzio) s&amp;rsquo;est stabilisé sur un modèle de coexistence où Nostr fournit la couche sociale au-dessus de RSS tandis que RSS garde la couche de distribution. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> d&amp;rsquo;Amethyst atterrit l&amp;rsquo;écran de podcast dans les jours suivant la fusion de la spécification, et le travail du sélecteur de GIF de Jumble inclut également un échafaudage précoce de pièces jointes de podcast.&lt;/p>
&lt;h3 id="découplage-de-clé-nip-17-pr-2361">Découplage de clé NIP-17 (PR #2361)&lt;/h3>
&lt;p>fiatjaf a ouvert &lt;a href="https://github.com/nostr-protocol/nips/pull/2361">PR #2361&lt;/a> le 1er juin, proposant que NIP-17 sépare la clé d&amp;rsquo;identité de la clé de chiffrement. Les destinataires annoncent leur clé de chiffrement dans un nouvel événement kind 10044, et les expéditeurs utilisent cette clé annoncée (quand présente) pour le seal interne gift-wrap, ne revenant à la clé d&amp;rsquo;identité du destinataire que quand l&amp;rsquo;annonce est absente. La PR ajoute également une balise &lt;code>n&lt;/code> au seal portant la pubkey de chiffrement de l&amp;rsquo;expéditeur, afin que les récepteurs puissent dériver la bonne clé de conversation sans déchiffrement d&amp;rsquo;essai contre chaque clé retirée. La motivation déclarée est l&amp;rsquo;UX bunker : sous la conception actuelle, un utilisateur bunker doit faire l&amp;rsquo;aller-retour de chaque DM reçu à travers le signataire pour déchiffrer, puisque la clé de chiffrement est la clé d&amp;rsquo;identité détenue par le signataire. Le découplage permet au client de détenir la clé de chiffrement localement tout en gardant la clé d&amp;rsquo;identité dans le bunker pour les signatures.&lt;/p>
&lt;p>La proposition a attiré la revue la plus contestée de la semaine. Cody Tseng (Jumble) la soutient comme le chemin le plus facile vers l&amp;rsquo;interopérabilité DM inter-clients. Vitor Pamplona (Amethyst) objecte sur deux terrains : elle ajoute un nouveau secret de déchiffrement à long terme en dehors du bunker, et les clients qui ne la livrent pas échoueront silencieusement à déchiffrer les messages des clients qui la livrent, sans chemin de dégradation parce que la rupture est à la couche seal. Pamplona soutient que le problème est déjà correctement résolu par les key packages et la rotation d&amp;rsquo;époque de &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, et que rétrofitter la séparation de clé dans la spécification NIP-17 de base crée le genre d&amp;rsquo;échec d&amp;rsquo;interop que Marmot a mis deux ans à concevoir. Le contre-argument de fiatjaf a trois parties : le découplage est optionnel par destinataire, le correctif de balise n aborde la préoccupation de déchiffrement d&amp;rsquo;essai, et l&amp;rsquo;alternative est de garder l&amp;rsquo;UX bunker cassée pendant que Telegram mange le cas d&amp;rsquo;usage de messagerie. Le fil reste ouvert sans décision de fusion et est la discussion NIP la plus surveillée du trimestre.&lt;/p>
&lt;h3 id="flux-de-paiement-nip-silent-payments-pr-2362">Flux de paiement NIP-Silent Payments (PR #2362)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2362">silentius-satoshi a ouvert PR #2362&lt;/a> le 1er juin comme compagnon du projet NIP Nostr Silent Payments plus large (&lt;a href="https://github.com/nostr-protocol/nips/pull/2355">PR #2355&lt;/a>). Le NIP de flux de paiement définit kind 8352 pour les notifications de reçu de silent payment (livrées via gift wrap &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> afin que le lien de reçu ne soit pas publiquement observable) et kind 10353 pour un cache UTXO chiffré qui se synchronise entre les appareils pour le même portefeuille Silent Payments. La paire ensemble permet à un payeur de signaler un paiement à une adresse Silent Payments en utilisant des primitives Nostr-natives sans exposer le lien on-chain sur la couche relais ouverte.&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 a ouvert PR #2364&lt;/a> le 1er juin comme brouillon. Il introduit un transport packet-tree avec trois nouveaux kinds adressables : 39078 porte le manifeste, 39079 porte les tranches individuelles, et 39080 porte les demandes de réparation. La spécification définit un format de câble où les gros fichiers sont divisés en tranches adressables, avec des manifestes décrivant l&amp;rsquo;arbre des tranches et des demandes de réparation permettant aux récepteurs de demander les tranches manquantes. Le statut d&amp;rsquo;ébauche précoce s&amp;rsquo;applique, et la proposition n&amp;rsquo;a pas encore attiré de revue de mainteneur.&lt;/p>
&lt;h3 id="espaces-live-audiovidéo-nip-29-pr-2238">Espaces live audio/vidéo NIP-29 (PR #2238)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2238">PR #2238&lt;/a> a fusionné le 28 mai, étendant les groupes relais &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> avec le support d&amp;rsquo;espaces live audio et vidéo. Les groupes peuvent maintenant référencer une session d&amp;rsquo;espace live active, permettant aux événements de style &lt;a href="https://nostrcompass.org/fr/topics/nip-53/">NIP-53&lt;/a> live activity de s&amp;rsquo;ancrer dans un contexte de groupe NIP-29.&lt;/p>
&lt;h3 id="pistes-audio-multiples-vidéo-nip-71-pr-2255">Pistes audio multiples vidéo NIP-71 (PR #2255)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a> a fusionné le 28 mai, ajoutant des balises &lt;code>imeta&lt;/code> de piste audio aux événements vidéo NIP-71. Le nouveau format porte l&amp;rsquo;URL, le hash, le type mime, la balise de langue (avec ISO-639-1 plus drapeau de version originale), les URLs de fallback, le signal de service NIP-96, le débit binaire, et la durée. Cela permet le streaming audio uniquement (podcasts vidéo), la commutation de résolution avec audio stable, les pistes multilingues, et un stockage réduit quand les serveurs n&amp;rsquo;intègrent pas directement l&amp;rsquo;audio dans les fichiers vidéo. Les clients devraient vérifier la disponibilité de piste audio avant d&amp;rsquo;assumer un comportement à piste unique.&lt;/p>
&lt;h3 id="gift-wrap-éphémère-nip-59-pr-2245">Gift wrap éphémère NIP-59 (PR #2245)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a> a fusionné le 28 mai, ajoutant kind 21059 comme équivalent éphémère du gift wrap kind 1059 existant. La sémantique correspond au wrap standard NIP-59 mais suit les règles d&amp;rsquo;événement éphémère selon NIP-01 (les relais les abandonnent après la diffusion et ne les persistent pas). Cela permet aux apps de choisir la persistance selon les exigences : les indicateurs de saisie et les pings de présence bénéficient de l&amp;rsquo;éphémère, tandis que l&amp;rsquo;historique DM a besoin de persistance.&lt;/p>
&lt;h3 id="kind-spécifique-à-lapplication-nip-78-pr-2292">Kind spécifique à l&amp;rsquo;application NIP-78 (PR #2292)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2292">PR #2292&lt;/a> a fusionné le 28 mai, reclassant les données spécifiques à l&amp;rsquo;application NIP-78 comme kind adressable normal, abandonnant la plage séparée précédente. Cela simplifie la sémantique de remplaçabilité et aligne NIP-78 avec le modèle d&amp;rsquo;événement adressable utilisé par d&amp;rsquo;autres NIPs d&amp;rsquo;état d&amp;rsquo;application.&lt;/p>
&lt;h3 id="clarifications-nip-85-pr-2304">Clarifications NIP-85 (PR #2304)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a> a fusionné le 28 mai avec de petites améliorations au langage autour de plusieurs clés et relais par fournisseur de service dans les Trusted Assertions &lt;a href="https://nostrcompass.org/fr/topics/nip-85/">NIP-85&lt;/a>, clarifiant le chemin de rotation de clé d&amp;rsquo;opérateur pour les services d&amp;rsquo;assertion de relais.&lt;/p>
&lt;h3 id="gestion-de-connexion-de-relais-nip-01-en-une-ligne-pr-2307">Gestion de connexion de relais NIP-01 en une ligne (PR #2307)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2307">PR #2307&lt;/a> a fusionné le 28 mai, ajoutant une seule phrase à NIP-01 sur la façon dont les clients devraient gérer les durées de vie de connexion aux relais. Le correctif aborde une lacune de longue date où les clients différaient sur l&amp;rsquo;opportunité de garder les connexions WebSocket ouvertes après la récupération, menant à une perte silencieuse de messages sur les relais qui abandonnent les connexions inactives.&lt;/p>
&lt;h3 id="contrainte-de-chat-kind-9-nip-c7-pr-2310">Contrainte de chat kind 9 NIP-C7 (PR #2310)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a> a fusionné le 28 mai, restreignant les vues de chat NIP-C7 aux messages kind 9 uniquement. Cela sépare le chat éphémère des posts de timeline kind 1 dans les clients qui implémentent des surfaces de chat de style NIP-C7.&lt;/p>
&lt;h3 id="simplification-nip-55-pr-2363">Simplification NIP-55 (PR #2363)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2363">PR #2363&lt;/a> par greenart7c3, ouvert le 1er juin, simplifie la spécification d&amp;rsquo;application signataire Android. Vitor Pamplona a signé « Looks good » et fiatjaf a demandé si c&amp;rsquo;était prêt à fusionner. Le changement ouvre la voie à l&amp;rsquo;enregistrement d&amp;rsquo;autorité ContentProvider NIP-44 v3 qu&amp;rsquo;Amber a livré cette semaine.&lt;/p>
&lt;h3 id="nip-44-v3-implémentation-amber-avant-la-spécification">NIP-44 v3 (implémentation Amber avant la spécification)&lt;/h3>
&lt;p>Amber a livré NIP-44 v3 dans v6.2.0 avec huit commits implémentant la mise à niveau de chiffrement et l&amp;rsquo;enregistrement d&amp;rsquo;autorité ContentProvider, mais la PR de spécification du dépôt NIPs n&amp;rsquo;a pas encore atterri. NIP-44 lui-même définit un format de charge utile chiffrée versionnée utilisé à l&amp;rsquo;intérieur des événements signés ; le v2 existant (en production depuis 2024) utilise ECDH secp256k1, HKDF, padding, ChaCha20, HMAC-SHA256, et base64. Le format de câble v3 ajoute un nouvel octet de version (0x03) avant le nonce, permettant aux clients récepteurs de négocier l&amp;rsquo;algorithme explicitement. L&amp;rsquo;implémentation d&amp;rsquo;Amber inclut l&amp;rsquo;auto-rejet pour les demandes v3 invalides, un écran d&amp;rsquo;approbation dédié distinct des approbations v2, et la journalisation de texte-clair par direction pour l&amp;rsquo;historique. Jusqu&amp;rsquo;à ce que la PR NIPs fusionne, v3 reste comme extension spécifique à Amber. Traitez-la comme un signal prospectif, pas comme une signalisation stable à l&amp;rsquo;échelle du protocole.&lt;/p>
&lt;h2 id="nip-deep-dive--nip-32-étiquetage">NIP deep dive : NIP-32 (Étiquetage)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-32/">NIP-32&lt;/a> définit un moyen structuré pour tout acteur Nostr d&amp;rsquo;étiqueter des événements, pubkeys, relais, URLs, ou sujets en utilisant des événements adressables kind 1985 avec un vocabulaire d&amp;rsquo;étiquettes à namespace. La spécification introduit deux nouvelles balises : &lt;code>L&lt;/code> dénote un namespace d&amp;rsquo;étiquette, et &lt;code>l&lt;/code> dénote une étiquette dans ce namespace. Les balises cible d&amp;rsquo;étiquette (&lt;code>e&lt;/code>, &lt;code>p&lt;/code>, &lt;code>a&lt;/code>, &lt;code>r&lt;/code>, ou &lt;code>t&lt;/code>) spécifient ce qui est étiqueté. L&amp;rsquo;exigence de namespace empêche plusieurs systèmes d&amp;rsquo;étiquettes d&amp;rsquo;entrer en collision : une étiquette &lt;code>spam&lt;/code> dans &lt;code>nip28.moderation&lt;/code> porte une sémantique différente d&amp;rsquo;une étiquette &lt;code>spam&lt;/code> dans &lt;code>relay-report&lt;/code>.&lt;/p>
&lt;p>Le choix de conception qui rend NIP-32 utile au-delà de la modération est que les étiquettes sont des assertions, pas une vérité au niveau du protocole. Un événement kind 1985 dit seulement qu&amp;rsquo;un pubkey particulier a étiqueté une cible particulière dans un namespace particulier. Le modèle de confiance est délégué au client : chaque client choisit quels étiqueteurs honorer, quels namespaces lire, et quelle affordance UI donner à chaque étiquette. La même primitive porte les avertissements de contenu, l&amp;rsquo;attribution de licence, les balises de langue ISO-639-1 sur les notes kind 1, les balises géographiques ISO-3166-2, la classification de contenu, les suggestions de modération distribuée, et les scores de réputation.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a> d&amp;rsquo;Amethyst cette semaine est le plus grand déploiement à ce jour. Il ajoute l&amp;rsquo;étiquetage de hashtag via NIP-32 et un fil de hashtag basé sur les étiquettes, permettant aux utilisateurs de parcourir par étiquettes assignées par des étiqueteurs de confiance. Le mécanisme de correspondance de texte &lt;code>#tag&lt;/code> antérieur qui pilotait initialement la découverte de hashtag sur Nostr reste comme fallback pour les notes non étiquetées. Le modèle hashtag-comme-étiquette signifie que la même note peut être découvrable sous plusieurs étiquettes assignées par différents étiqueteurs, et les utilisateurs peuvent mute ou booster des étiqueteurs spécifiques sans affecter les notes sous-jacentes.&lt;/p>
&lt;p>L&amp;rsquo;auto-étiquetage est également supporté. Un auteur peut attacher directement des balises &lt;code>L&lt;/code> et &lt;code>l&lt;/code> à ses propres notes kind 1 pour déclarer la langue, l&amp;rsquo;emplacement et le sujet. Une note étiquetée &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> s&amp;rsquo;auto-identifie comme anglaise et peut être filtrée par des clients conscients de la langue sans infrastructure d&amp;rsquo;étiquetage tierce.&lt;/p>
&lt;p>Exemple d&amp;rsquo;événement d&amp;rsquo;étiquette NIP-32 étiquetant une note kind 1 comme anglaise et lui assignant une balise de modération :&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>Le déploiement Amethyst combiné avec le récent travail sur les Trusted Relay Assertions suggère que NIP-32 devient le substrat standard pour tout modèle « assertion pilotée par l&amp;rsquo;utilisateur sur une cible » sur Nostr. Le prochain test est de savoir si les étiqueteurs eux-mêmes développeront des hiérarchies de confiance : si les utilisateurs suivront des npubs d&amp;rsquo;étiqueteurs spécifiques comme ils suivent des créateurs de contenu.&lt;/p>
&lt;h2 id="nip-deep-dive--nip-f4-podcasts">NIP deep dive : NIP-F4 (Podcasts)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/F4.md">NIP-F4&lt;/a> a fusionné cette semaine, deux ans et trois mois après que fiatjaf ait ouvert le projet original (PR #1093). Le préfixe F est un simple numérotage hex : NIP-F0 à NIP-FF utilisent le même espace hex de 1 octet que NIP-0A à NIP-0D, avec la plage hex supérieure servant de dépassement maintenant que la plage décimale 01-99 se remplit. NIP-F4 définit comment les podcasts publient des épisodes et des métadonnées comme événements Nostr tout en gardant RSS comme couche complémentaire pour le fichier audio lui-même.&lt;/p>
&lt;p>Le choix architectural central est que chaque podcast est sa propre paire de clés Nostr. La spécification s&amp;rsquo;ouvre directement avec cela : « chaque podcast est sa propre paire de clés Nostr ». Cela permet aux podcasts de combiner leur présence de podcasting avec une présence normale de microblogging kind 0 / kind 1, et permet à un podcast de changer de propriété au fil du temps par transfert de clé ou signature partagée de style MuSig2. Quatre kinds d&amp;rsquo;événements portent la couche de publication :&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>kind:10154&lt;/code>&lt;/strong> : métadonnées de podcast remplaçables. Porte les balises &lt;code>title&lt;/code>, &lt;code>image&lt;/code>, &lt;code>description&lt;/code>, &lt;code>website&lt;/code> optionnelles, et des balises &lt;code>p&lt;/code> optionnelles marquant les auteurs avec un &lt;code>role&lt;/code> de &lt;code>host&lt;/code>, &lt;code>cohost&lt;/code>, ou &lt;code>editor&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10164&lt;/code>&lt;/strong> : contre-revendication d&amp;rsquo;auteur. L&amp;rsquo;exemple dans la spécification utilise kind &lt;code>10064&lt;/code> (une faute de frappe ouverte à la correction), mais le titre et le texte environnant l&amp;rsquo;identifient comme &lt;code>kind:10164&lt;/code>. Les utilisateurs listent les pubkeys de podcast dont ils sont auteurs, afin que les clients puissent vérifier les balises &lt;code>p&lt;/code> dans &lt;code>kind:10154&lt;/code> contre une revendication équivalente de l&amp;rsquo;auteur supposé. Sans cela, un podcast pourrait faussement étiqueter n&amp;rsquo;importe qui comme hôte.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:54&lt;/code>&lt;/strong> : événements d&amp;rsquo;épisode rédigés par la pubkey du podcast directement. Les balises incluent &lt;code>title&lt;/code>, &lt;code>image&lt;/code> optionnel, &lt;code>description&lt;/code>, et une ou plusieurs balises &lt;code>audio&lt;/code>. Chaque balise &lt;code>audio&lt;/code> est &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 spécification note « d&amp;rsquo;autres champs importants à spécifier ici plus tard après une découverte plus approfondie », et la forme fusionnée est délibérément minimale.&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10054&lt;/code>&lt;/strong> : une liste de podcasts favoris de style &lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a>, permettant aux utilisateurs de marquer quels podcasts ils suivent.&lt;/li>
&lt;/ul>
&lt;p>Le débat de fil autour de la fusion impliquait le co-auteur 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>, et &lt;a href="https://github.com/staab">staab&lt;/a>. Jones a argumenté fortement contre toute tentative de remplacer RSS : « Ça a été essayé plusieurs fois et échoue toujours », citant JSONfeed, XMPP, AMP, l&amp;rsquo;API Twitter, et la migration ratée de Spotify. Terenzio a recadré la proposition comme une couche sociale au-dessus de RSS, gardant RSS lui-même comme couche de distribution. fiatjaf a accepté de reculer et de laisser la proposition mûrir : « Je suis d&amp;rsquo;accord avec tout ce que vous avez dit mais je pense toujours qu&amp;rsquo;on peut y arriver, arrêtons ici pour un moment. » Deux ans plus tard, la spécification fusionnée atterrit plus près de la coexistence que du remplacement.&lt;/p>
&lt;p>Trois questions de conception restent explicites dans la spécification fusionnée :&lt;/p>
&lt;ul>
&lt;li>La faute de frappe &lt;code>kind:10164&lt;/code> (l&amp;rsquo;exemple montre &lt;code>10064&lt;/code>) doit être réconciliée avant que les clients puissent interopérer en toute sécurité.&lt;/li>
&lt;li>La découverte au niveau épisode sans liaison GUID RSS est laissée ouverte. La spécification fusionnée n&amp;rsquo;a pas de balise &lt;code>i&lt;/code>, pas de format &lt;code>podcast:item:guid&lt;/code>, et pas de mécanisme de pontage RSS. Les clients qui veulent ponter un catalogue RSS existant vers des événements kind 54 doivent définir la convention de pontage eux-mêmes.&lt;/li>
&lt;li>Le stub « autres champs importants » sur la définition &lt;code>kind:54&lt;/code> laisse le débit binaire, la durée, la langue, les pointeurs de transcription, les chapitres, et les métadonnées par segment comme territoire ouvert pour des propositions de suivi.&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a> d&amp;rsquo;Amethyst atterrit un écran de podcast dédié avec liste d&amp;rsquo;épisodes et lecteur en ligne dans les jours suivant la fusion, la première implémentation majeure de client. Jumble a livré un échafaudage précoce de pièces jointes de podcast aux côtés de son sélecteur de GIF. Wavlake reste la plus grande plateforme de podcast Nostr-native et devra décider s&amp;rsquo;il faut aligner ses événements de piste musicale kind 31337 existants avec le modèle d&amp;rsquo;épisode kind 54 de NIP-F4.&lt;/p>
&lt;p>Exemple d&amp;rsquo;événement d&amp;rsquo;épisode kind 54 NIP-F4, correspondant à l&amp;rsquo;ensemble minimal de balises de la spécification fusionnée :&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 est resté ouvert pendant 27 mois, bien au-dessus de la durée médiane d&amp;rsquo;ouverture pour les PRs NIPs fusionnées. Le prochain test pour NIP-F4 est de savoir si la faute de frappe kind 10164 est réconciliée, si les conventions de découverte d&amp;rsquo;épisode et de pontage RSS émergent des implémenteurs, et si les grands hôtes de podcast publient sous des paires de clés par podcast comme la spécification le recommande.&lt;/p></content:encoded></item><item><title>Nostr Compass #24</title><link>https://nostrcompass.org/fr/newsletters/2026-05-28-newsletter/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-05-28-newsletter/</guid><description>&lt;p>Amethyst v1.11.0 apporte une implémentation complète du calendrier NIP-52 avec rappels, splits de zap Bitcoin on-chain et support des réponses de groupe Marmot. White Noise v2026.5.22 livre les notifications push iOS via une Notification Service Extension, aux côtés de l&amp;rsquo;UX de blocage et d&amp;rsquo;un bouton d&amp;rsquo;ajout de membres. Vector v0.4.0 apporte une réécriture depuis zéro de vector-core, Tor en un clic avec des ponts, les signataires distants NIP-46, la synchronisation de groupe MLS en negentropy complet, et un serveur MCP de 21 outils pour agents IA. Applesauce v6.1.0 introduit les listes de relais de lookup NIP-51 (kind 10086) et un ensemble complet d&amp;rsquo;usines de git-cast NIP-34. MDK ajoute les messages éphémères NIP-40 sur iOS et Android via une surface UniFFI unifiée, et Mostro v0.17.4 ferme la boucle de caution anti-abus avec les paiements de caution slashée Phase 3 au gagnant. Notedeck fusionne la réconciliation negentropy NIP-77 complète pour les giftwraps et le backfill de fils, Cordn fait surface comme messager MLS médié par coordinateur qui échange une dépendance de disponibilité unique contre un ordonnancement d&amp;rsquo;époque plus serré et un modèle opérationnel plus simple, une implémentation de référence NIP-B0 appelée deepmarks livre un client de signets monétisé par curateurs, et l&amp;rsquo;équipe Formstr ouvre quatre propositions coordonnées de NIP de calendrier couvrant l&amp;rsquo;auto-retrait de participants, les événements privés, la récurrence et la planification de rendez-vous décentralisée.&lt;/p></description><content:encoded>&lt;p>Amethyst v1.11.0 apporte une implémentation complète du calendrier NIP-52 avec rappels, splits de zap Bitcoin on-chain et support des réponses de groupe Marmot. White Noise v2026.5.22 livre les notifications push iOS via une Notification Service Extension, aux côtés de l&amp;rsquo;UX de blocage et d&amp;rsquo;un bouton d&amp;rsquo;ajout de membres. Vector v0.4.0 apporte une réécriture depuis zéro de vector-core, Tor en un clic avec des ponts, les signataires distants NIP-46, la synchronisation de groupe MLS en negentropy complet, et un serveur MCP de 21 outils pour agents IA. Applesauce v6.1.0 introduit les listes de relais de lookup NIP-51 (kind 10086) et un ensemble complet d&amp;rsquo;usines de git-cast NIP-34. MDK ajoute les messages éphémères NIP-40 sur iOS et Android via une surface UniFFI unifiée, et Mostro v0.17.4 ferme la boucle de caution anti-abus avec les paiements de caution slashée Phase 3 au gagnant. Notedeck fusionne la réconciliation negentropy NIP-77 complète pour les giftwraps et le backfill de fils, Cordn fait surface comme messager MLS médié par coordinateur qui échange une dépendance de disponibilité unique contre un ordonnancement d&amp;rsquo;époque plus serré et un modèle opérationnel plus simple, une implémentation de référence NIP-B0 appelée deepmarks livre un client de signets monétisé par curateurs, et l&amp;rsquo;équipe Formstr ouvre quatre propositions coordonnées de NIP de calendrier couvrant l&amp;rsquo;auto-retrait de participants, les événements privés, la récurrence et la planification de rendez-vous décentralisée.&lt;/p>
&lt;h2 id="articles-principaux">Articles principaux&lt;/h2>
&lt;h3 id="amethyst-v1110--calendriers-splits-de-zap-on-chain-et-réponses-marmot">Amethyst v1.11.0 : calendriers, splits de zap on-chain, et réponses Marmot&lt;/h3>
&lt;p>Amethyst, le client Nostr pour Android maintenu par Vitor Pamplona, a livré &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> ajoute une implémentation d&amp;rsquo;événement de calendrier &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a> avec une UI dédiée et un système de rappels, afin que les événements de calendrier soient maintenant rendus dans leur propre catégorie de timeline, séparée de la vue générique long-form kind-30023. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3018">PR #3018&lt;/a> étend les zaps Bitcoin on-chain avec le support de split, distribuant une seule transaction Bitcoin à travers plusieurs destinataires selon la balise de zap-split existante, afin qu&amp;rsquo;un paiement on-chain se comporte de la même façon qu&amp;rsquo;un split Lightning. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a> ajoute un écran d&amp;rsquo;historique de transactions on-chain paginé qui fait surface chaque zap réglé avec le statut de confirmation de bloc.&lt;/p>
&lt;p>La messagerie de groupe gagne la parité avec le chat un-à-un : &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2995">PR #2995&lt;/a> ajoute le support des réponses pour les messages de groupe &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>/MLS, afin que les fils à l&amp;rsquo;intérieur des groupes chiffrés soient maintenant rendus avec la même UI de référence parent que les notes publiques. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2984">PR #2984&lt;/a> durcit la validation des reçus de zap &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a> en vérifiant que le fournisseur LNURL correspond au lud16 déclaré du destinataire, fermant une classe de contrefaçon où un LNURL tiers pourrait forger un reçu pour un paiement qui n&amp;rsquo;a jamais atterri. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2968">PR #2968&lt;/a> accepte les dimensions à virgule flottante dans les balises &lt;code>imeta&lt;/code> &lt;a href="https://nostrcompass.org/fr/topics/nip-92/">NIP-92&lt;/a>, alignant Amethyst avec les clients qui publient des valeurs de densité de pixels fractionnaires depuis des appareils comme l&amp;rsquo;écran Retina iPhone. La sortie câble également les Payment Targets, un nouveau tip jar multi-rails d&amp;rsquo;événement remplaçable couvert dans la section protocole ci-dessous.&lt;/p>
&lt;h3 id="white-noise-v2026522--push-ios-ux-de-blocage-et-ajout-de-membres">White Noise v2026.5.22 : push iOS, UX de blocage, et ajout de membres&lt;/h3>
&lt;p>White Noise, le messager de groupe du protocole Marmot, a livré &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">v2026.5.22&lt;/a> avec les notifications push iOS comme fonctionnalité vedette. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/673">PR #673&lt;/a> implémente une Notification Service Extension (NSE) iOS qui déchiffre les messages MLS à l&amp;rsquo;intérieur du processus d&amp;rsquo;extension et les fait apparaître comme notifications système, afin que les utilisateurs iPhone n&amp;rsquo;aient plus besoin que l&amp;rsquo;app soit au premier plan pour recevoir des messages. La plomberie de token push Android route par le même pipeline backend, avec la NSE par plateforme gardant le chiffré hors du broker.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/676">PR #676&lt;/a> ajoute une UX complète de blocage et de déblocage avec des flux de confirmation et le filtrage de liste de contacts. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/679">PR #679&lt;/a> ajoute le bouton « Ajouter des membres » longuement demandé à l&amp;rsquo;écran d&amp;rsquo;informations de groupe, fermant une lacune UX où les admins de groupe devaient se rabattre sur les liens de partage. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/688">PR #688&lt;/a> introduit un écran de paramètres de notification iOS dédié, et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/687">PR #687&lt;/a> câble le partage-via-appui-long pour les médias et messages.&lt;/p>
&lt;h3 id="mdk-ajoute-les-messages-éphémères-nip-40-à-travers-les-plateformes">MDK ajoute les messages éphémères NIP-40 à travers les plateformes&lt;/h3>
&lt;p>Le Marmot Development Kit, le noyau Rust partagé utilisé par White Noise iOS, White Noise Android, et tout futur client Marmot, a fusionné &lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a> pour exposer la validation de messages éphémères et la gestion d&amp;rsquo;expiration &lt;a href="https://nostrcompass.org/fr/topics/nip-40/">NIP-40&lt;/a> via le pont UniFFI. La PR est la deuxième d&amp;rsquo;une série en trois parties. iOS et Android partagent maintenant une implémentation Rust de la logique d&amp;rsquo;expiration ; les règles de timing vivent dans un seul chemin de code audité consommé par les deux plateformes via UniFFI. &lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a> plafonne la longueur stockée des raisons d&amp;rsquo;échec de welcome et les assainit avant persistance, une passe de durcissement séparée qui complète la gestion d&amp;rsquo;événement welcome livrée la semaine dernière.&lt;/p>
&lt;p>Les messages éphémères dans MLS ne sont pas simplement une affordance UI. La balise d&amp;rsquo;expiration est publiée avec l&amp;rsquo;enveloppe de message chiffré, afin qu&amp;rsquo;un destinataire qui n&amp;rsquo;ouvre jamais le message ait toujours le chiffré sous-jacent expirer à la couche relais aux côtés de toute copie en cache dans le client récepteur. Avec MDK possédant le chemin de validation, le comportement reste cohérent à travers les clients : toute implémentation Marmot conforme applique la même sémantique d&amp;rsquo;expiration, donc un client honorant l&amp;rsquo;expiration tandis qu&amp;rsquo;un autre met en cache pour toujours cesse d&amp;rsquo;être un risque de portabilité.&lt;/p>
&lt;h3 id="mostro-v0174--phase-3-ferme-la-boucle-de-caution-slashée">Mostro v0.17.4 : Phase 3 ferme la boucle de caution slashée&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, le protocole d&amp;rsquo;échange Bitcoin peer-to-peer construit sur Nostr, a livré la Phase 3 de son déploiement de caution anti-abus dans &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> atterrit le flux de paiement pour les cautions slashées, prenant le collatéral confisqué du perdant et le distribuant au gagnant du litige. &lt;a href="https://github.com/MostroP2P/mostro/pull/743">PR #743&lt;/a> ajoute la Phase 3.5, un message de confirmation de paiement explicite au gagnant afin qu&amp;rsquo;il sache que les sats slashés se sont réglés, avec l&amp;rsquo;événement de confirmation arrivant sur la même session Nostr que la résolution du litige. Phase 2, couverte la semaine dernière, a introduit le slashing comme action admin ; Phase 3 est la différence entre menacer d&amp;rsquo;une pénalité et en appliquer une.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/746">PR #746&lt;/a> permet au démon de finaliser les litiges qui manquent d&amp;rsquo;une ligne de solveur, un cas limite qui bloquait auparavant la résolution des litiges legacy. &lt;a href="https://github.com/MostroP2P/mostro/pull/748">PR #748&lt;/a> tolère les taux null dans la réponse &lt;code>/exrates/BTC&lt;/code> de Yadio afin qu&amp;rsquo;une brève panne de Yadio ne casse plus le chemin de conversion fiat de Mostro. &lt;a href="https://github.com/MostroP2P/mostro/pull/745">PR #745&lt;/a> documente la spécification pour les fournisseurs de prix multi-sources, le travail préparatoire pour supprimer Yadio en tant que point unique de défaillance. Le client mobile Mostro a câblé le chemin de réclamation Phase 3 correspondant dans &lt;a href="https://github.com/MostroP2P/mobile/pull/596">PR #596&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-v610--relais-de-lookup-et-git-casts-nip-34">Applesauce v6.1.0 : relais de lookup et git casts NIP-34&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>, la boîte à outils Nostr modulaire qui alimente Coracle, noStrudel, et la pile de Pablo F7z, a publié &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.1.0">v6.1.0&lt;/a> à travers ses packages. La sortie ajoute le support de liste de relais de lookup &lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a> de première classe : les événements kind 10086 permettent à un utilisateur de signaler « demandez à ces relais si vous voulez me trouver », se situant aux côtés des listes d&amp;rsquo;outbox &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> comme primitive de découverte. Les applications construites sur &lt;code>applesauce-core&lt;/code> reçoivent un observable réactif &lt;code>User.lookupRelays$&lt;/code> et un chargeur correspondant dans &lt;code>applesauce-relay&lt;/code>.&lt;/p>
&lt;p>Les usines de git-cast &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> arrivent dans &lt;code>applesauce-factory&lt;/code>, donnant à chaque client construit avec Applesauce un chemin en une ligne pour publier des annonces de dépôt (kind 30617), des patchs (kind 1617), et des issues (kind 1621). Les propriétés réactives &lt;code>User.favoriteGitRepos$&lt;/code>, &lt;code>User.gitAuthors$&lt;/code>, et &lt;code>User.graspServers$&lt;/code> permettent aux applications de lister les dépôts suivis d&amp;rsquo;un utilisateur, les mainteneurs de dépôts, et les serveurs GRASP configurés directement depuis le même objet User. La sortie corrige également les méthodes manuelles du pool qui abandonnaient silencieusement les relais hors ligne dans &lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a>.&lt;/p>
&lt;h3 id="notedeck-fusionne-la-negentropy-nip-77-pour-les-giftwraps-et-le-backfill-de-fils">Notedeck fusionne la negentropy NIP-77 pour les giftwraps et le backfill de fils&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, le client de bureau multi-colonnes natif de Damus, a fusionné &lt;a href="https://github.com/damus-io/notedeck/pull/1459">PR #1459&lt;/a> le 25 mai pour câbler la réconciliation negentropy &lt;a href="https://nostrcompass.org/fr/topics/nip-77/">NIP-77&lt;/a> complète dans le chemin d&amp;rsquo;outbox partagé. La PR ajoute les trames client et relais NIP-77, les sessions negentropy locales au relais, et un traqueur d&amp;rsquo;historique complet d&amp;rsquo;outbox qui pilote la réconciliation d&amp;rsquo;ensemble local et les récupérations d&amp;rsquo;événements manquants. Les giftwraps de messages obtiennent la réconciliation negentropy afin que les enveloppes de messages privés puissent être récupérées depuis les relais de lecture du compte sélectionné. Les vues de fils ne sont plus plafonnées par la limite de réponse d&amp;rsquo;abonnement en direct. Dave PNS remplace son implémentation de negentropy locale à Dave par le chemin d&amp;rsquo;outbox partagé tout en préservant son comportement existant d&amp;rsquo;historique borné.&lt;/p>
&lt;p>Les abonnements en direct et la negentropy utilisent maintenant des filtres séparés. Un flux peut garder une petite requête en direct tout en émettant un filtre negentropy plus large pour réconcilier ce que le relais a déjà. La PR n&amp;rsquo;active intentionnellement pas la synchronisation negentropy large pour les timelines d&amp;rsquo;accueil ou de profil, ce qui changerait les caractéristiques de coût au démarrage à froid. La couverture de tests a été ajoutée pour la réconciliation, la livraison de giftwrap, le backfill de fils, la restauration Dave PNS, la commutation de compte, le re-ciblage de relais, les nouvelles tentatives de fetch, et le comportement du relais NIP-77.&lt;/p>
&lt;h3 id="vector-v040--réécriture-vector-core-tor-nip-46-mls-negentropy-complet-et-une-surface-dagent-mcp">Vector v0.4.0 : réécriture vector-core, Tor, NIP-46, MLS negentropy complet, et une surface d&amp;rsquo;agent MCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, le messager multiplateforme axé sur la vie privée construit sur les DMs NIP-17 et les groupes Marmot, a livré &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">v0.4.0&lt;/a> comme sa plus grande sortie à ce jour. Le titre est une réécriture de moteur depuis zéro : toute la logique de Vector vit maintenant dans un seul crate découplé, &lt;code>vector-core&lt;/code>, partagé entre le bureau, Android, et tout futur client, avec plus de 440 tests dans le noyau lui-même et la coque d&amp;rsquo;application débarrassée de milliers de lignes. La réécriture est un travail préparatoire pour une CLI Vector, des bots, et des SDKs qui pilotent le même code de protocole que la GUI.&lt;/p>
&lt;p>L&amp;rsquo;intégration Tor livre le routage de trafic en un clic et le support des ponts pour le contournement de censure. Le support multi-comptes atterrit avec un basculeur dans l&amp;rsquo;app. La connexion par signataire distant arrive via &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> avec l&amp;rsquo;appairage bunker par QR ou URI collée, afin que les utilisateurs puissent se connecter sans jamais exposer leur nsec. Supprimer-pour-tous fonctionne à la fois dans les DMs &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> et les chats de groupe &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, avec Vector gardant la clé de signature éphémère comme une divergence de spécification délibérée que les notes de sortie appellent explicitement : « une déviation des spécifications NIP-17/Marmot traditionnelles pour des contrôles de vie privée utilisateur améliorés ». La clé éphémère retenue donne aux clients Vector une preuve locale qu&amp;rsquo;une suppression a été sanctionnée par l&amp;rsquo;expéditeur original, mais cela signifie aussi que tout autre client touchant Vector voit une surface de vérifiabilité de suppression différente de celle des clients NIP-17/Marmot de base.&lt;/p>
&lt;p>La synchronisation de groupe MLS est maintenant entièrement réconciliée sur la negentropy &lt;a href="https://nostrcompass.org/fr/topics/nip-77/">NIP-77&lt;/a>, la même direction que Notedeck a prise pour les giftwraps et fils cette semaine. L&amp;rsquo;uploader Blossom bascule à travers plusieurs serveurs, apprend les capacités de chaque serveur, et synchronise la liste de serveurs entre les appareils. Les packs d&amp;rsquo;emoji personnalisés sont créables par l&amp;rsquo;utilisateur, partageables, et compatibles entre clients avec d&amp;rsquo;autres clients Nostr. La mémoire SQLite est passée d&amp;rsquo;environ 308MB à 5MB. Le panneau emoji s&amp;rsquo;ouvre depuis le cache disque et les shortcodes de style Discord (&lt;code>:smile:&lt;/code>) plus le classement de fréquence Unicode font surface le bon glyphe en premier.&lt;/p>
&lt;p>L&amp;rsquo;ajout le plus novateur est &lt;code>vector-agent&lt;/code>, un serveur MCP (Model Context Protocol) qui expose 21 outils afin que les agents IA puissent piloter Vector : envoyer des DMs, gérer des groupes, uploader des fichiers, éditer des profils. C&amp;rsquo;est le deuxième projet Nostr cette semaine (aux côtés de Shopstr) à livrer une surface MCP, et la première application de classe messager à le faire. Combiné avec AgentNoise (couvert la semaine dernière), le modèle de clients Nostr contrôlés par agent passe d&amp;rsquo;expériences ponctuelles à une direction de plateforme délibérée.&lt;/p>
&lt;h3 id="cordn-fait-surface-comme-messager-mls-médié-par-coordinateur">Cordn fait surface comme messager MLS médié par coordinateur&lt;/h3>
&lt;p>&lt;a href="https://cordn.net">Cordn&lt;/a> (client web à &lt;a href="https://cordn.net">cordn.net&lt;/a>, dépôts à &lt;a href="https://github.com/Cordn-msg/cordn">Cordn-msg/cordn&lt;/a> et &lt;a href="https://github.com/Cordn-msg/cordn-web">Cordn-msg/cordn-web&lt;/a>) est un nouveau messager MLS qui prend un tack architectural différent de Marmot. Là où &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> est entièrement basé sur les relais sans coordinateur privilégié (chaque membre du groupe écrit directement sur les relais et tout relais conforme peut porter le trafic), Cordn introduit un rôle de coordinateur par groupe implémenté comme service &lt;a href="https://nostrcompass.org/fr/topics/contextvm/">ContextVM&lt;/a>. Le coordinateur ordonne les commits MLS et gère la distribution des welcomes.&lt;/p>
&lt;p>L&amp;rsquo;argument de Cordn, énoncé sur sa page &lt;a href="https://cordn.net/why">/why&lt;/a>, est que MLS tel que déployé dans les messagers de production « n&amp;rsquo;est pas sans coordination » et que la « dissémination publique faiblement ordonnée » rend la convergence d&amp;rsquo;état de groupe « beaucoup plus difficile » sans un point de coordination fort. Une conception médiée par coordinateur fournit un avancement d&amp;rsquo;époque prévisible et une résolution simplifiée des commits concurrents. Les participants se connectent au coordinateur en utilisant des clés éphémères, donc le coordinateur apprend l&amp;rsquo;ID du groupe et le timing du trafic de commit mais pas quels pubkeys à long terme sont membres. Toute partie interrogeant les relais pour un groupe Marmot peut déjà voir la même surface : l&amp;rsquo;activité de groupe par ID de groupe, avec le timing inférable de l&amp;rsquo;arrivée d&amp;rsquo;événement. Cordn reconnaît également que « la confiance de disponibilité demeure » avec l&amp;rsquo;auto-hébergement : un coordinateur auto-hébergé évite la préoccupation de centralisation au niveau opérateur mais introduit un point unique de défaillance pour la vivacité du groupe. Marmot évite ce point unique en laissant l&amp;rsquo;ordonnancement à MLS lui-même (les époques et messages Commit gèrent l&amp;rsquo;ordonnancement à l&amp;rsquo;intérieur du protocole) et en distribuant les événements Welcome via un gift wrap &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a>, au coût de discipline côté admin : les admins doivent attendre l&amp;rsquo;accusé de réception du relais d&amp;rsquo;un Commit avant d&amp;rsquo;envoyer le Welcome correspondant, et les clients doivent réconcilier les commits concurrents quand la livraison du relais court avec une transition d&amp;rsquo;état.&lt;/p>
&lt;p>Le contraste vaut la peine d&amp;rsquo;être développé pour toute équipe choisissant une pile de messagerie privée. Marmot échange une certaine complexité d&amp;rsquo;implémentation pour un déploiement indépendant du relais sans acteur privilégié dans le chemin. Cordn échange une dépendance de disponibilité unique contre un ordonnancement plus serré et un modèle opérationnel plus simple. Les deux projets construisent sur &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> et utilisent Nostr comme couche d&amp;rsquo;identité et de transport. Le désaccord porte sur où vit le coût de coordination. Les dépôts cordn-msg montrent une cadence de commits régulière avec le service coordinateur implémenté sur ContextVM et la couche MLS construite sur &lt;code>ts-mls&lt;/code>.&lt;/p>
&lt;h3 id="deepmarks--signets-nip-b0-avec-publication-monétisée-par-curateurs">deepmarks : signets NIP-B0 avec publication monétisée par curateurs&lt;/h3>
&lt;p>&lt;a href="https://github.com/ostermayer/deepmarks-public">deepmarks-public&lt;/a> est un client de référence pour la spécification de signets &lt;a href="https://nostrcompass.org/fr/topics/nip-b0/">NIP-B0&lt;/a> proposée (kind 39701), avec une architecture à trois boîtes (curateur, indexeur, visualiseur) et un système de paliers financé par des zaps &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a> direct-au-curateur. Le client implémente NIP-B0, &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a>, &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>, NIP-57, &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, &lt;a href="https://nostrcompass.org/fr/topics/nip-98/">NIP-98&lt;/a>, &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a>, et Blossom BUD-01 et BUD-04 pour le stockage de fichiers. Un palier à vie de 21 000 sats convertit les lecteurs payants en destinataires récurrents de zap pour le curateur. Le curateur publie les événements de signets, l&amp;rsquo;indexeur les enrichit avec des métadonnées lisibles par machine, et le visualiseur rend le fil ; chaque rôle est un service déployable séparé.&lt;/p>
&lt;h2 id="sorties">Sorties&lt;/h2>
&lt;h3 id="amber-v610-ga--sauvegarde-chiffrée-par-compte">Amber v6.1.0 GA : sauvegarde chiffrée par compte&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong> est passée de &lt;code>v6.1.0-pre3&lt;/code> à la GA &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0">v6.1.0&lt;/a> cette semaine. &lt;a href="https://github.com/greenart7c3/Amber/pull/444">PR #444&lt;/a> livre la sauvegarde et restauration chiffrées pour la base de données de permissions d&amp;rsquo;application, et &lt;a href="https://github.com/greenart7c3/Amber/pull/446">PR #446&lt;/a> sépare la sauvegarde par compte, afin que les utilisateurs avec plusieurs identités Nostr puissent sauvegarder et restaurer chaque ensemble d&amp;rsquo;octrois d&amp;rsquo;app indépendamment. Le travail de signature PSBT couvert la semaine dernière est dans la coupe GA.&lt;/p>
&lt;h3 id="citrine--abonnements-par-relais-et-prévention-de-fuite-durl-onion">Citrine : abonnements par relais et prévention de fuite d&amp;rsquo;URL onion&lt;/h3>
&lt;p>&lt;strong>Citrine&lt;/strong>, le relais personnel sur appareil qui accompagne Amethyst, a livré deux correctifs ce cycle. &lt;a href="https://github.com/greenart7c3/Citrine/pull/157">PR #157&lt;/a> passe d&amp;rsquo;un abonnement global unique à des abonnements étiquetés par relais, afin que deux relais sources partageant un filtre &lt;code>kinds: [1]&lt;/code> n&amp;rsquo;entrent plus en collision côté agrégateur. &lt;a href="https://github.com/greenart7c3/Citrine/pull/162">PR #162&lt;/a> filtre les URLs de relais onion quand le proxy Tor sortant est désactivé, empêchant les adresses onion de fuir sur le chemin de routage clearnet.&lt;/p>
&lt;h3 id="angor-v0227-et-v0228--fiabilité-de-relais-et-reconnexion-boltz">Angor v0.2.27 et v0.2.28 : fiabilité de relais et reconnexion Boltz&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong> a livré &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.27">v0.2.27&lt;/a> et &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> corrige un bug de déduplication de relais où un seul relais était connecté à la fois, une régression qui dégradait silencieusement la fiabilité pour les projets avec plusieurs points de terminaison de relais. &lt;a href="https://github.com/block-core/angor/pull/876">PR #876&lt;/a> ajoute la logique de reconnexion WebSocket pour la surveillance de submarine-swap Boltz, afin qu&amp;rsquo;une brève déconnexion ne laisse plus un swap dans un état inconnu.&lt;/p>
&lt;h3 id="nostrord-v110--zaps-nip-57-et-distinction-de-rôle-nip-29">Nostrord v1.1.0 : zaps NIP-57 et distinction de rôle NIP-29&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong> a publié &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.1.0">v1.1.0&lt;/a> avec le support des zaps Lightning &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a> pour les messages et profils (&lt;a href="https://github.com/nostrord/nostrord/pull/98">PR #98&lt;/a>) et une distinction appropriée dans le fil d&amp;rsquo;activité entre les changements de rôle &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> et les ajouts de membres (&lt;a href="https://github.com/nostrord/nostrord/pull/92">PR #92&lt;/a>), qui se rendaient auparavant de manière identique et obscurcissaient qui avait été promu par rapport à qui avait été invité.&lt;/p>
&lt;h3 id="ぬるぬる-v15x--keystore-mls-sqlcipher-et-rattrapage-dépoque">ぬるぬる v1.5.x : keystore MLS SQLCipher et rattrapage d&amp;rsquo;époque&lt;/h3>
&lt;p>&lt;strong>ぬるぬる&lt;/strong> (nurunuru, par tami1A84), un client Nostr en langue japonaise qui implémente la messagerie de groupe MLS (kind 443) aux côtés de NIP-44, la recherche avancée NIP-50, NIP-55, et NIP-70, a livré cinq sorties cette semaine. &lt;a href="https://github.com/tami1A84/null--nostr/pull/184">PR #184&lt;/a> introduit le chiffrement SQLCipher pour le keystore MLS dans la couche rust-engine. &lt;a href="https://github.com/tami1A84/null--nostr/pull/187">PR #187&lt;/a> et &lt;a href="https://github.com/tami1A84/null--nostr/pull/188">PR #188&lt;/a> étendent SQLCipher à Android et iOS respectivement, avec une étape de purge du texte-clair legacy et des gardes CI. &lt;a href="https://github.com/tami1A84/null--nostr/pull/189">PR #189&lt;/a> et &lt;a href="https://github.com/tami1A84/null--nostr/pull/191">PR #191&lt;/a> ajoutent le rattrapage d&amp;rsquo;époque de pair MLS avec un cache de replay et une bannière de récupération sur les deux plateformes, afin qu&amp;rsquo;un client qui prend du retard sur les commits de groupe puisse récupérer sans perdre la conversation. ぬるぬる est un client Marmot construit sur &lt;code>mdk-core&lt;/code>, &lt;code>mdk-sqlite-storage&lt;/code>, et &lt;code>mdk-storage-traits&lt;/code> de &lt;code>marmot-protocol/mdk&lt;/code>, donc le travail SQLCipher et de rattrapage d&amp;rsquo;époque atterrit à l&amp;rsquo;intérieur du même runtime MDK que White Noise utilise.&lt;/p>
&lt;h3 id="bitcredit-core-v0510--correctif-de-propagation-de-bloc-ancré-à-nostr">Bitcredit Core v0.5.10 : correctif de propagation de bloc ancré à Nostr&lt;/h3>
&lt;p>&lt;strong>Bitcredit Core&lt;/strong> a publié &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.10">v0.5.10&lt;/a> avec un correctif pour un champ Nostr-node-id manquant pendant la propagation de bloc, qui cassait les flux de création d&amp;rsquo;entreprise qui incluaient l&amp;rsquo;upload d&amp;rsquo;identité. Bitcredit est un protocole e-bill qui utilise les identités Nostr comme racine de confiance pour les événements de propagation d&amp;rsquo;entreprise et de facture.&lt;/p>
&lt;h2 id="changements-non-publiés">Changements non publiés&lt;/h2>
&lt;p>&lt;strong>Jumble&lt;/strong> a ouvert &lt;a href="https://github.com/CodyTseng/jumble/pull/797">PR #797&lt;/a> pour la connexion Google via le signataire à seuil Pomegranate, permettant à un utilisateur de diviser sa clé Nostr entre plusieurs parties afin qu&amp;rsquo;aucun signataire unique ne détienne le secret complet. C&amp;rsquo;est un pas significatif au-delà des flux de bunker ou d&amp;rsquo;import de nsec : un utilisateur peut récupérer son compte même si une partie signataire est compromise, sans que cette partie ne détienne jamais la clé privée complète.&lt;/p>
&lt;p>&lt;strong>Shopstr&lt;/strong> a ouvert &lt;a href="https://github.com/shopstr-eng/shopstr/pull/492">PR #492&lt;/a> initialisant un serveur MCP (Model Context Protocol), avec &lt;a href="https://github.com/shopstr-eng/shopstr/pull/494">PR #494&lt;/a> construisant l&amp;rsquo;infrastructure de support (fetch de relais, analyseurs, validation, erreurs, déduplication, journalisation d&amp;rsquo;audit) et &lt;a href="https://github.com/shopstr-eng/shopstr/pull/472">PR #472&lt;/a> ajoutant une liste blanche de relais pour le gestionnaire de relais MCP. Cela fait de Shopstr le premier marketplace Nostr à s&amp;rsquo;exposer comme serveur MCP, afin que les agents IA puissent parcourir et agir sur les annonces NIP-99 comme un outil structuré.&lt;/p>
&lt;p>&lt;strong>Keydex&lt;/strong>, le coffre de partage de secret Shamir, a ouvert une migration substantielle dans &lt;a href="https://github.com/mplorentz/keydex/pull/226">PR #226&lt;/a> déplaçant les kinds personnalisés 1337-1345 vers la plage 713-721, aux côtés de &lt;a href="https://github.com/mplorentz/keydex/pull/239">PR #239&lt;/a> ajoutant AEAD sur les parts Shamir et &lt;a href="https://github.com/mplorentz/keydex/pull/234">PR #234&lt;/a> migrant vers l&amp;rsquo;arithmétique GF256. La migration de plage de kinds aligne Keydex avec la façon dont le dépôt NIPs alloue les kinds personnalisés, s&amp;rsquo;éloignant d&amp;rsquo;une plage auto-revendiquée.&lt;/p>
&lt;p>&lt;strong>Mill&lt;/strong> (&lt;a href="https://github.com/0ceanSlim/nostr-mill">nostr-mill&lt;/a>) est une nouvelle UI de signataire Nostr drop-in de &lt;a href="https://github.com/0ceanSlim">OceanSlim&lt;/a> (mainteneur du relais Go &lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>), livrée comme Web Component en une seule balise script sur &lt;a href="https://www.npmjs.com/package/nostr-mill">npm&lt;/a> et &lt;a href="https://cdn.jsdelivr.net/npm/nostr-mill/dist/mill.umd.js">jsDelivr&lt;/a>. Une seule balise &lt;code>&amp;lt;script&amp;gt;&lt;/code> donne à une app web les six points d&amp;rsquo;entrée de signataire communs derrière une UI unifiée : extension de navigateur &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a>, bunker &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (URL collée ou appairage QR avec relais spécifiables par l&amp;rsquo;utilisateur, inhabituel parmi les intégrations bunker in-page), Amber &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> via les intents Android, nsec chiffrée stockée dans &lt;code>sessionStorage&lt;/code> via AES-256-GCM avec PBKDF2, &lt;code>npub&lt;/code> en lecture seule, et génération de paire de clés dans le navigateur. Le composant est thémable via 29 propriétés CSS personnalisées portées au Shadow DOM et expose une petite API suivie en SemVer (&lt;code>MILL.open&lt;/code>, événements &lt;code>mill:connected&lt;/code> / &lt;code>mill:disconnected&lt;/code>, exports thème nommés). La motivation du mainteneur est que les flux de connexion bunker ont été réimplémentés une app web à la fois à travers Nostr. Consolider sur un composant partagé permet aux clients de converger sur la façon dont l&amp;rsquo;UX du signataire devrait se comporter, et transforme les flux optionnels (comme la connexion par clé déléguée via signataires à seuil, reflétant la connexion Google basée sur Pomegranate de Wisp couverte ci-dessus) en une surface réutilisable que toute app peut déposer. Mill est à npm v1.5.0, mainteneur unique, stade alpha, avec grain comme premier intégrateur planifié.&lt;/p>
&lt;p>&lt;strong>moStard&lt;/strong>, un fork Monero-first de &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> par &lt;a href="https://github.com/roguehashrate">roguehashrate&lt;/a>, a atteint &lt;a href="https://github.com/roguehashrate/moStard/releases">v1.0.1&lt;/a> cette semaine avec un ensemble de fonctionnalités réduit et une identité à thème Monero superposée sur la même pile Applesauce + worker-relay. Le travail de cette semaine a atterri le rendu pour les événements d&amp;rsquo;application logicielle kind 32267 de Zapstore (cartes d&amp;rsquo;incorporation dans la timeline montrant nom d&amp;rsquo;app, icône, captures d&amp;rsquo;écran, plateforme, licence, et un lien de lancement vers &lt;code>zapstore.dev/apps/&amp;lt;d-tag&amp;gt;&lt;/code>), les sondages via kind 20 et kind 21, les pourboires basés sur les Payment Targets NIP-A3 avec codes QR par méthode, le rendu markdown dans les notes, le support du sélecteur de GIF pour les claviers GIF externes, et les correctifs d&amp;rsquo;appairage de signataire Amber. Le cadrage Monero s&amp;rsquo;étend au flux de pourboire : les entrées NIP-A3 &lt;code>payto&lt;/code> pour les adresses &lt;code>monero&lt;/code> obtiennent des boutons de première classe dans la même UI aux côtés de &lt;code>lightning&lt;/code> et &lt;code>bitcoin&lt;/code>. Le client est mono-mainteneur et en stade alpha, mais le travail du 27 mai montre un constructeur tirant NIP-A3 des annonces de spécification de protocole de cette semaine directement dans un fork livrable en quelques jours.&lt;/p>
&lt;h2 id="mises-à-jour-nip-et-travail-de-spécification-de-protocole">Mises à jour NIP et travail de spécification de protocole&lt;/h2>
&lt;h3 id="pile-nip-de-calendrier--quatre-propositions-de-léquipe-formstr">Pile NIP de calendrier : quatre propositions de l&amp;rsquo;équipe Formstr&lt;/h3>
&lt;p>Ix2 (&lt;a href="https://github.com/geralt-debugs">@geralt-debugs&lt;/a>) a ouvert quatre PRs NIP coordonnées le 17 mai, toutes référençant l&amp;rsquo;implémentation &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> livrée déjà sous le même auteur. &lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a> propose kind 84 comme événement généralisé « auto-retrait de participant » : un participant balisé sur tout événement peut publier un kind 84 référençant l&amp;rsquo;original via des balises &lt;code>e&lt;/code>, &lt;code>a&lt;/code>, et &lt;code>k&lt;/code> pour signaler l&amp;rsquo;opt-out. Les relais doivent valider que le signataire du kind 84 apparaît dans une balise &lt;code>p&lt;/code> de l&amp;rsquo;événement référencé avant d&amp;rsquo;honorer le retrait, et une suppression kind 5 a toujours priorité. La PR généralise un modèle qui n&amp;rsquo;était auparavant décrit qu&amp;rsquo;à l&amp;rsquo;intérieur du contexte du calendrier NIP-52, donc kind 84 devient la façon standard pour les non-auteurs de se retirer de tout événement participant.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> est la fondation de la pile de calendrier : NIP-52E pour les événements de calendrier privés (kinds 32678 basé sur le temps, 32681 événement de jour, 32123 liste de calendrier privée, 31926 liste occupée, 1052 gift wrap, 52 rumeur) et NIP-52R pour les événements récurrents. Au cœur architectural se trouve le modèle de clé de visualisation : une paire de clés générée aléatoirement chiffre le contenu de l&amp;rsquo;événement avec NIP-44, et la moitié secrète (encodée bech32 comme &lt;code>nsec&lt;/code>) est gift-wrapped à chaque participant. Le signataire ne détient que la balise &lt;code>d&lt;/code> publique ; tout le reste vit dans le &lt;code>content&lt;/code> chiffré. Découpler le chiffrement de contenu de l&amp;rsquo;identité de cette manière signifie qu&amp;rsquo;éditer un événement ne nécessite pas de re-clé des destinataires. NIP-52R définit deux balises optionnelles sur les kinds 31923 et 31922 existants pour déclarer la récurrence en utilisant des valeurs RRULE RFC 5545 brutes, avec &lt;code>D&lt;/code> index de jour devenant optionnel quand RRULE est présent. La forward secrecy est explicitement absente : une clé de visualisation fuite révèle toutes les versions passées et futures de l&amp;rsquo;événement sous la même balise &lt;code>d&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a> construit sur NIP-52E avec une spécification de planification de rendez-vous décentralisée que la description de la PR appelle « une alternative drop-in à Calendly/Cal.com sans intermédiaire central. » Kind 31927 annonce une page de planification avec des fenêtres de disponibilité chiffrées ; kind 32680 est un enregistrement de récupération auto-chiffré côté hôte pour la clé de visualisation ; kinds 1057 et 1058 sont la demande et réponse de réservation gift-wrapped. Le mécanisme astucieux : le réservateur génère à la fois la balise &lt;code>d&lt;/code> et la clé de visualisation pour le futur événement privé avant d&amp;rsquo;envoyer la demande, afin que le réservateur puisse ajouter le rendez-vous à son propre calendrier immédiatement avec la bonne clé, et l&amp;rsquo;hôte n&amp;rsquo;a jamais à faire l&amp;rsquo;aller-retour d&amp;rsquo;une clé. Les réponses de réservation portent une balise &lt;code>status&lt;/code> non chiffrée sur l&amp;rsquo;enveloppe externe afin que les relais puissent filtrer sans déchiffrer.&lt;/p>
&lt;p>Une implémentation de référence est déjà en direct sur &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> et comme l&amp;rsquo;application Android Calendar sur Zapstore. &lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> ferme &lt;a href="https://github.com/nostr-protocol/nips/pull/2027">PR #2027&lt;/a> en sa faveur, consolidant une proposition antérieure de calendrier privé qui était ouverte depuis le début de l&amp;rsquo;année.&lt;/p>
&lt;h3 id="payment-targets-et-silent-payments">Payment Targets et Silent Payments&lt;/h3>
&lt;p>Deux propositions NIP supplémentaires ont circulé cette semaine dans des documents long-form &lt;code>kind:30023&lt;/code>.&lt;/p>
&lt;p>Une proposition &lt;strong>Payment Targets&lt;/strong> (NIP-A3 / payto) définit un événement remplaçable kind 10133 portant une ou plusieurs balises &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> qui correspondent aux URIs RFC 8905 &lt;code>payto:&lt;/code>. Les types supportés incluent bitcoin, lightning, ethereum, monero, nano, cashme, revolut, et venmo. L&amp;rsquo;intention est de standardiser un tip jar multi-rails qui complète (ne remplace pas) les zaps NIP-57 basés sur lud16. Amethyst v1.11.0 est le premier implémenteur ; les PRs fusionnées &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2953">#2953&lt;/a> et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3009">#3009&lt;/a> livrent la surface d&amp;rsquo;abonnement et d&amp;rsquo;observation, et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/3011">PR #3011&lt;/a> câble l&amp;rsquo;UI pour &lt;code>PaymentTargetsEvent&lt;/code>.&lt;/p>
&lt;p>Deux propositions Silent Payments concurrentes sont tombées de différents auteurs. La première variante dérive les clés de scan et de dépense de silent-payment BIP-352 de &lt;code>nsec&lt;/code> via des tweaks additifs publics, afin que tout expéditeur puisse construire une adresse &lt;code>sp1q...&lt;/code> depuis un &lt;code>npub&lt;/code> sans configuration. L&amp;rsquo;avertissement de l&amp;rsquo;auteur est explicite dans la spécification : « bscan et bspend DOIVENT être traités avec exactement le même soin que nsec », car la clé de scan révèle la nsec. Une deuxième variante prend l&amp;rsquo;approche inverse, ajoutant un champ &lt;code>sp_address&lt;/code> aux métadonnées de profil kind 0 contenant une adresse de silent-payment BIP-352 standard dont les clés sont gardées indépendantes de l&amp;rsquo;identité Nostr. La variante deux est structurellement plus sûre. Les deux propositions ont attiré un fil de revue réfléchi ; erskingardner (lead Marmot) a posté un &lt;a href="https://gist.github.com/trbouma/77648ebe1005b181b67d1c4b42c7f31d?permalink_comment_id=6167489#gistcomment-6167489">commentaire&lt;/a> détaillé sur le gist trbouma suivant la proposition. Sa préoccupation centrale est que la variante 1 dérive la clé privée de scan de &lt;code>nsec&lt;/code> plus un tweak calculable publiquement, ce qui signifie que quiconque détient la clé de scan (y compris un service de scan tiers auquel l&amp;rsquo;utilisateur doit déléguer en pratique) peut récupérer la &lt;code>nsec&lt;/code> complète en soustrayant ce tweak. La même clé qui vous permet de scanner les paiements entrants vous permet aussi de voler votre identité et tous les fonds qui en dérivent.&lt;/p>
&lt;p>Côté git-over-Nostr NIP-34, hzrd149 a publié 2 patchs à &lt;a href="https://gitworkshop.dev/npub1zafcms4xya5ap9zr7xxr0jlrtrattwlesytn2s42030lzu0dwlzqpd26k5/relay.ngit.dev/schemata">schemata&lt;/a>. &lt;a href="https://gitworkshop.dev/">gitworkshop.dev&lt;/a> lui-même a attiré deux rapports d&amp;rsquo;issue : l&amp;rsquo;un signalant que les sessions de connexion sont perdues au rafraîchissement de page lors de l&amp;rsquo;utilisation d&amp;rsquo;un signataire à distance NIP-46, l&amp;rsquo;autre demandant un style de lien distinct dans les aperçus README.&lt;/p>
&lt;h2 id="six-ans-de-mais-nostr">Six ans de mais Nostr&lt;/h2>
&lt;p>La dernière newsletter de mai 2026 prend du recul par rapport aux sorties de la semaine pour parcourir le mois de mai à travers l&amp;rsquo;histoire de Nostr. Chaque année avait un centre de gravité différent : 2021 était un seul commit, 2022 était la formation du dépôt NIPs lui-même, 2023 était l&amp;rsquo;explosion de la spécification de protocole, 2024 était le cycle de consolidation, 2025 était quand negentropy a été fusionné et le Notedeck de Damus est passé en Bêta, et 2026 est le mois couvert dans ce numéro et les trois précédents.&lt;/p>
&lt;h3 id="mai-2021">Mai 2021&lt;/h3>
&lt;p>Nostr avait six mois. Le seul code Nostr vivait dans &lt;a href="https://github.com/fiatjaf/nostr">fiatjaf/nostr&lt;/a> et le mois entier a produit exactement un commit, mais ce commit est devenu l&amp;rsquo;une des parties les plus utilisées du protocole. Le 22 mai, fiatjaf &lt;a href="https://github.com/fiatjaf/nostr/commit/9ee3a02">a réutilisé NIP-02&lt;/a> comme NIP de liste de contacts. Le message de commit se lit : « repurpose NIP-02 and add NIP authorship », et le crédit explicite va à &lt;a href="https://github.com/nostr-protocol/nostr/pull/16">PR #16&lt;/a> par arcbtc (Ben Arc de LNbits), ouverte le 9 février et fermée la veille du jour où fiatjaf a intégré l&amp;rsquo;idée dans NIP-02. Le pitch d&amp;rsquo;arcbtc était petit : un kind pour « envoyer la liste des followers aux relais » qui serait « utile pour restaurer les comptes et recommander des clés publiques à suivre ». fiatjaf l&amp;rsquo;a généralisé en un seul événement &lt;code>kind:3&lt;/code> dont les balises servent à trois fins à la fois. Elles sont une liste de suivis (le graphe social), un stockage de petnames (surnoms locaux pour les amis), et une source de recommandation de relais (quels relais un suivi utilise). Le même événement, remplaçable par auteur, est devenu la réponse canonique à « qui suit cette personne », « comment les appellent-ils », et « où lisent-ils ». Chaque client construit dans les cinq années suivantes lit &lt;code>kind:3&lt;/code>. La convention ajoutée dans le même commit, que chaque NIP nomme son auteur, est la raison pour laquelle chaque spécification a maintenant des mentions.&lt;/p>
&lt;h3 id="mai-2022">Mai 2022&lt;/h3>
&lt;p>Le mois où le dépôt NIPs est devenu un projet communautaire. Le 1er mai, fiatjaf &lt;a href="https://github.com/nostr-protocol/nips/commit/f25c7e6">a migré les spécifications&lt;/a> de &lt;code>fiatjaf/nostr&lt;/code> dans un dépôt dédié &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a> et le 2 mai a ajouté des &lt;a href="https://github.com/nostr-protocol/nips/commit/c053670">critères d&amp;rsquo;acceptation formels&lt;/a>. Deux jours plus tard, Robert C. Martin (Uncle Bob) a ouvert &lt;a href="https://github.com/nostr-protocol/nips/pull/1">PR #1&lt;/a>, la première pull request externe, proposant des conventions de fil pour les balises &lt;code>e&lt;/code> et &lt;code>p&lt;/code>. La PR était originellement numérotée NIP-13, puis &lt;a href="https://github.com/nostr-protocol/nips/commit/bd4a81a">renommée NIP-10&lt;/a> pour faire place à la preuve de travail. Trois des six premiers NIPs sont d&amp;rsquo;Uncle Bob : NIP-10 (marqueurs de fil), NIP-14 (&lt;a href="https://github.com/nostr-protocol/nips/commit/ebacbcc">la balise Subject&lt;/a>), et le commit du 21 mai qui a fixé &lt;a href="https://github.com/nostr-protocol/nips/commit/e22ea1a">&lt;code>kind:1&lt;/code> comme kind canonique de note de texte court&lt;/a>. Le 5 mai, William Casarin a fait ses premiers commits NIP : &lt;a href="https://github.com/nostr-protocol/nips/commit/d7a4aad">NIP-13 Proof of Work&lt;/a> et l&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/commit/ad1eb96">événement recommend-relay kind:2&lt;/a>. Le lendemain, fiatjaf a publié &lt;a href="https://github.com/nostr-protocol/nips/commit/37eb53e">NIP-07 &lt;code>window.nostr&lt;/code>&lt;/a>, vingt lignes de markdown qui définissaient l&amp;rsquo;interface de signataire d&amp;rsquo;extension de navigateur encore utilisée aujourd&amp;rsquo;hui. L&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/commit/57b86d2">avertissement CORS&lt;/a> de NIP-05 par David A. Harding et le &lt;a href="https://github.com/nostr-protocol/nips/commit/a4aea53">&lt;code>filter.limit&lt;/code>&lt;/a> de NIP-01 ont atterri la même semaine. nostr-tools a livré son &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/dc489bf">premier build ESM importable dans le navigateur&lt;/a> le 8 mai. Semisol a rédigé &lt;a href="https://github.com/nostr-protocol/nips/commit/a787093">NIP-15 (End Of Stored Events)&lt;/a> et &lt;a href="https://github.com/nostr-protocol/nips/commit/62fde6c">NIP-16 (plages de kinds d&amp;rsquo;événements)&lt;/a> en fin de mois, les documents qui gouvernent encore le comportement des relais aujourd&amp;rsquo;hui.&lt;/p>
&lt;h3 id="mai-2023">Mai 2023&lt;/h3>
&lt;p>L&amp;rsquo;explosion de la spécification de protocole. Soixante-quatre PRs NIP ont été ouvertes ce mois-là, avec plusieurs des propositions qui ont défini la surface de Nostr pour les deux années suivantes atterrissant toutes en 31 jours, et la plus grande annonce de financement que Nostr ait jamais reçue a atterri le 4 mai avec la &lt;a href="https://opensats.org/blog/opensats-receives-additional-funding-of-dollar10m-from-startsmall">subvention OpenSats de 10 millions de dollars de #startsmall de Jack Dorsey&lt;/a>, l&amp;rsquo;argent qui a soutenu chaque vague de subvention Nostr depuis. NIP-47 (Nostr Wallet Connect) a été &lt;a href="https://github.com/nostr-protocol/nips/pull/406">fusionné le 2 mai&lt;/a>, amenant la spécification wallet-connect d&amp;rsquo;Alby dans le protocole principal. Deux jours plus tard, Vitor Pamplona a &lt;a href="https://github.com/nostr-protocol/nips/pull/498">proposé NIP-53 Live Activities&lt;/a> avec des salles &lt;code>kind:30311&lt;/code> et messages de chat &lt;code>kind:1311&lt;/code>, la fondation pour chaque surface de livestream Nostr qui a suivi. Pablo Fernandez a ouvert &lt;a href="https://github.com/nostr-protocol/nips/pull/501">NIP-84 Highlights&lt;/a> le 5 mai et &lt;a href="https://github.com/nostr-protocol/nips/pull/530">NIP-89 Recommended Application Handlers&lt;/a> le 14 mai. v0l (Kieran Babich, auteur de Snort) a proposé &lt;a href="https://github.com/nostr-protocol/nips/commit/29f26e7">NIP-98 HTTP Auth&lt;/a> le 8 mai, la primitive d&amp;rsquo;authentification dont NIP-96 et Blossom ont tous deux dépendu plus tard. Jonathan Staab a proposé &lt;a href="https://github.com/nostr-protocol/nips/pull/532">NIP-32 Labels&lt;/a> le 15 mai, et &lt;a href="https://github.com/nostr-protocol/nips/pull/484">NIP-30 Custom Emoji&lt;/a> a été fusionné le même jour. Arthur Franca a proposé &lt;a href="https://github.com/nostr-protocol/nips/pull/547">NIP-96 HTTP File Storage Integration&lt;/a> le 21 mai. Deux jours plus tard, Vitor a ajouté les &lt;a href="https://github.com/nostr-protocol/nips/commit/e4937be">splits de zap à NIP-57&lt;/a> et verbiricha a ajouté les &lt;a href="https://github.com/nostr-protocol/nips/commit/0495931">brouillons long-form &lt;code>kind:30024&lt;/code> à NIP-23&lt;/a>, la spécification qui est devenue la fondation pour les workflows modernes de rédaction long-form Nostr dans Habla, YakiHonne, et Highlighter. fiatjaf a proposé &lt;a href="https://github.com/nostr-protocol/nips/pull/566">NIP-29 Simple Groups&lt;/a> le 25 mai.&lt;/p>
&lt;h3 id="mai-2024">Mai 2024&lt;/h3>
&lt;p>Le cycle de consolidation. Moins de propositions tape-à-l&amp;rsquo;œil, plus de livraison. &lt;a href="https://github.com/nostr-protocol/nips/pull/787">NIP-54 Decentralized Wikis&lt;/a> a fusionné le 2 mai avec des articles &lt;code>kind:30818&lt;/code> et des balises &lt;code>d&lt;/code> normalisées en casse. Trois jours plus tard, &lt;a href="https://github.com/nostr-protocol/nips/pull/1213">NIP-56&lt;/a> a été étendu afin que les rapports d&amp;rsquo;abus puissent signaler des menaces numériques (malware, phishing) aux côtés des catégories de contenu uniquement. Le 6 mai, les &lt;a href="https://github.com/nostr-protocol/nips/pull/1221">réactions NIP-25 ont été simplifiées&lt;/a> pour cesser d&amp;rsquo;inclure le fil de réponse entier comme balises &lt;code>e&lt;/code>. Arthur Franca a &lt;a href="https://github.com/nostr-protocol/nips/pull/1233">proposé NIP-22 Comment&lt;/a> le 12 mai, introduisant &lt;code>kind:1111&lt;/code> afin que les réponses à des événements non-&lt;code>kind:1&lt;/code> (articles, fichiers, produits) obtiennent un moyen structuré de faire des fils. Le 19 mai, fiatjaf a &lt;a href="https://github.com/nostr-protocol/nips/pull/1248">refondu NIP-46&lt;/a> pour abandonner NIP-04 entièrement et faire passer tout le trafic bunker au chiffrement NIP-44, le mouvement de dépréciation qui a façonné chaque implémentation bunker depuis. Le 20 mai, &lt;a href="https://github.com/nostr-protocol/nips/pull/923">NIP-71 Video Events&lt;/a> a fusionné avec &lt;code>kind:21&lt;/code> et &lt;code>kind:22&lt;/code>, et &lt;a href="https://github.com/nostr-protocol/nips/pull/1171">NIP-10&lt;/a> a ajouté l&amp;rsquo;argument pubkey optionnel sur les balises &lt;code>e&lt;/code> afin que les clients puissent résoudre les auteurs de fil sans d&amp;rsquo;abord récupérer l&amp;rsquo;événement référencé. &lt;a href="https://github.com/nostr-protocol/nips/pull/1175">NIP-35 Torrents&lt;/a> de Kieran Walsh a fusionné le 22 mai, et le 24 mai le README des NIPs a référencé pour la première fois &lt;a href="https://github.com/nostr-protocol/nips/pull/1251">CIP-01&lt;/a> comme proposition hors dépôt, signalant le début du modèle « NIPs comme l&amp;rsquo;un de plusieurs lieux de proposition ». Le 25 mai, une &lt;a href="https://github.com/nostr-protocol/nips/pull/1254">PR de nettoyage&lt;/a> a supprimé la balise &lt;code>aes-256-gcm&lt;/code> de NIP-71 avant que les implémentations en aval ne la figent. NIP-96 a ajouté &lt;a href="https://github.com/nostr-protocol/nips/pull/1262">&lt;code>list files&lt;/code> et abandonné l&amp;rsquo;exigence de transformation&lt;/a> le 27 mai. Le 28 mai, Jonathan Staab a proposé de &lt;a href="https://github.com/nostr-protocol/nips/pull/1259">relever la barre d&amp;rsquo;acceptation des NIP&lt;/a>.&lt;/p>
&lt;h3 id="mai-2025">Mai 2025&lt;/h3>
&lt;p>Le mois où &lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77 (Negentropy Syncing)&lt;/a> a fusionné le 27 mai, la spécification de fiatjaf et Doug Hoyte pour le protocole câble qui remplace les filtres REQ à force brute par un calcul de différence à coût logarithmique. C&amp;rsquo;était la même negentropy que strfry avait livrée deux ans plus tôt comme fonctionnalité côté relais, maintenant formalisée comme protocole client-relais, et l&amp;rsquo;&lt;a href="https://github.com/nostr-protocol/nips/pull/1939">entrée README&lt;/a> a atterri le même jour. La semaine précédente, &lt;a href="https://github.com/nostr-protocol/nips/pull/1897">NIP-23 long-form&lt;/a> a défini comment les documents HTML s&amp;rsquo;associent aux entités Nostr via une balise &lt;code>&amp;lt;link&amp;gt;&lt;/code> le 24 mai, la primitive canonical-web-copy. NIP-25 a ajouté les &lt;a href="https://github.com/nostr-protocol/nips/pull/1702">indices de relais cibles de réaction&lt;/a> le 22 mai et &lt;a href="https://github.com/nostr-protocol/nips/pull/1486">a abandonné la recommandation emoji-vers-like/dislike&lt;/a>, traitant les emojis comme des unités sémantiques distinctes. NIP-52 a été &lt;a href="https://github.com/nostr-protocol/nips/pull/1922">simplifié&lt;/a> le 14 mai pour se concentrer sur les kinds que les clients livraient en production, le trim qui a rendu les extensions de calendrier Formstr d&amp;rsquo;un an plus tard plus propres à greffer. Le 9 mai, les &lt;a href="https://github.com/nostr-protocol/nips/commit/873afc5fb823f58c3b7f29c5090f9c56172623f2">Follow Packs&lt;/a> (kind 39089 listes de suivi curatées) et les &lt;a href="https://github.com/nostr-protocol/nips/pull/1848">Favorite Relays&lt;/a> (une nouvelle liste remplaçable sous NIP-51) sont entrés dans le README le même jour. L&amp;rsquo;arc du Protocole Marmot n&amp;rsquo;avait pas encore commencé : seul le dépôt &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> existait (premier commit 9 septembre 2024), et mai 2025 était sa phase de prototype Svelte+Tauri, avec le &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/commit/b8e6754">commit du 14 mai&lt;/a> supprimant le code spécifique à Tauri alors que le projet pivotait vers son architecture actuelle. Le noyau Rust MDK dédié (12 septembre 2025), le dépôt de spécification Marmot (19 septembre 2025), et l&amp;rsquo;UI Flutter (2 décembre 2025) ont tous suivi cette année-là.&lt;/p>
&lt;h3 id="mai-2026">Mai 2026&lt;/h3>
&lt;p>Le mois couvert dans &lt;a href="https://nostrcompass.org/fr/newsletters/2026-05-06-newsletter/">Newsletter #21&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-05-13-newsletter/">#22&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-05-21-newsletter/">#23&lt;/a>, et ce numéro. Le fil déterminant est que MLS-on-Nostr atteint la production multi-client : &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.8.0">MDK 0.8.0&lt;/a> a livré les primitives leaf-index MIP-05 et les key packages adressables, suivi par &lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a> ajoutant la validation de messages éphémères NIP-40 sur iOS et Android via une surface UniFFI partagée. &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">White Noise v2026.5.22+25&lt;/a> a livré le push iOS via une Notification Service Extension qui déchiffre le chiffré MLS à l&amp;rsquo;intérieur du processus d&amp;rsquo;extension afin que le broker ne voie jamais le texte-clair, et deux nouveaux clients Marmot sont apparus : &lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (un client .NET/Avalonia de bureau et Android avec slots KeyPackage multi-appareils) et &lt;a href="https://cordn.net">Cordn&lt;/a> (une architecture MLS alternative utilisant un coordinateur par groupe sur ContextVM). Angor a migré sa messagerie chiffrée de NIP-04 à NIP-44 dans &lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a>, fermant l&amp;rsquo;arc de dépréciation qui s&amp;rsquo;est ouvert avec la &lt;a href="https://github.com/nostr-protocol/nips/pull/574">proposition NIP-44 de Paul Miller en mai 2023&lt;/a>. L&amp;rsquo;équipe Formstr a ouvert la plus grande soumission NIP coordonnée en mémoire récente le 17 mai, avec &lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a> pour l&amp;rsquo;auto-retrait de participants, &lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> pour les événements de calendrier privés et la récurrence (NIP-52E et NIP-52R), et &lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a> pour la planification de rendez-vous décentralisée, tous avec &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a> livrant déjà l&amp;rsquo;implémentation de référence. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">Amethyst v1.11.0&lt;/a> a rendu les événements de calendrier NIP-52 dans leur propre catégorie de timeline et a livré les splits de zap Bitcoin on-chain.&lt;/p>
&lt;hr>
&lt;p>Si vous voulez discuter, DM-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #23</title><link>https://nostrcompass.org/fr/newsletters/2026-05-21-newsletter/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-05-21-newsletter/</guid><description>&lt;p>Primal 3.5 livre une coque Android reconstruite, Amethyst ajoute les zaps Bitcoin onchain, White Noise gagne le rendu markdown et les liens profonds, Keycast passe un audit de sécurité, et AgentNoise vous permet de contrôler des agents de codage IA locaux via un chat chiffré par Marmot. Hostr lance une plateforme P2P de location d&amp;rsquo;hébergement sur Nostr avec quatre projets de NIPs couvrant les annonces, les réservations et l&amp;rsquo;entiercement basé sur EVM. Angor migre la messagerie chiffrée de NIP-04 vers NIP-44, Dart NDK ajoute NIP-77 et un signataire web, Alby js-sdk v8 livre une reconnexion multi-relais NWC native, et KeyChat corrige un trou de forward secrecy dans la suppression des préclés uniques Signal. Côté protocole, la caution anti-abus de Mostro atteint la Phase 2, Wisp livre les réponses privées et les réactions gift-wrapped, et une vague d&amp;rsquo;implémentation Namecoin NIP-05 touche une demi-douzaine de clients en une seule semaine.&lt;/p></description><content:encoded>&lt;p>Primal 3.5 livre une coque Android reconstruite, Amethyst ajoute les zaps Bitcoin onchain, White Noise gagne le rendu markdown et les liens profonds, Keycast passe un audit de sécurité, et AgentNoise vous permet de contrôler des agents de codage IA locaux via un chat chiffré par Marmot. Hostr lance une plateforme P2P de location d&amp;rsquo;hébergement sur Nostr avec quatre projets de NIPs couvrant les annonces, les réservations et l&amp;rsquo;entiercement basé sur EVM. Angor migre la messagerie chiffrée de NIP-04 vers NIP-44, Dart NDK ajoute NIP-77 et un signataire web, Alby js-sdk v8 livre une reconnexion multi-relais NWC native, et KeyChat corrige un trou de forward secrecy dans la suppression des préclés uniques Signal. Côté protocole, la caution anti-abus de Mostro atteint la Phase 2, Wisp livre les réponses privées et les réactions gift-wrapped, et une vague d&amp;rsquo;implémentation Namecoin NIP-05 touche une demi-douzaine de clients en une seule semaine.&lt;/p>
&lt;h2 id="articles-principaux">Articles principaux&lt;/h2>
&lt;h3 id="primal-35-pour-android">Primal 3.5 pour Android&lt;/h3>
&lt;p>Primal, le client social soutenu par sa propre infrastructure de relais de cache, a livré &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.9">3.5.9&lt;/a> cette semaine avec une coque d&amp;rsquo;application reconstruite. La refonte remplace la structure de navigation précédente par une nouvelle disposition et un nouvel écran Explorer, donnant à la surface de découverte principale sa propre maison dédiée. La sortie ajoute la lecture audio pour les aperçus de liens, afin que les fichiers audio intégrés dans les notes soient lus en ligne sans quitter le fil. Les badges de vérification NIP-05 s&amp;rsquo;affichent maintenant en ligne sur les profils, faisant apparaître la confirmation d&amp;rsquo;identité en un coup d&amp;rsquo;œil. Le filtrage des notifications a reçu une refonte, permettant aux utilisateurs de restreindre quels types d&amp;rsquo;événements atteignent leur liste de notifications. L&amp;rsquo;éditeur a gagné une meilleure gestion des liens d&amp;rsquo;événements, et la couche de base de données sous-jacente a reçu des correctifs de stabilité.&lt;/p>
&lt;h3 id="white-noise--markdown-liens-profonds-et-métadonnées-audio">White Noise : markdown, liens profonds et métadonnées audio&lt;/h3>
&lt;p>White Noise, l&amp;rsquo;application de messagerie de groupe chiffrée par Marmot construite sur Nostr et MLS (&lt;a href="https://www.rfc-editor.org/rfc/rfc9420">RFC 9420&lt;/a>), a eu l&amp;rsquo;une de ses semaines les plus occupées à ce jour à travers les dépôts frontend et backend.&lt;/p>
&lt;p>Sur le frontend, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/665">PR #665&lt;/a> ajoute le rendu markdown complet pour les messages de chat, afin que le gras, l&amp;rsquo;italique, les blocs de code et les liens s&amp;rsquo;affichent maintenant nativement dans la vue des messages. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/675">PR #675&lt;/a> active le flux quitter-le-groupe qui était précédemment bloqué pour les non-derniers-admins, et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/661">PR #661&lt;/a> ajoute le support natif des liens profonds pour les URI &lt;code>whitenoise://&lt;/code> et &lt;code>whitenoise-staging://&lt;/code> couvrant les utilisateurs, les chats et les paramètres, sans nécessiter aucune infrastructure de redirection HTTP.&lt;/p>
&lt;p>Sur le backend dans whitenoise-rs, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/835">PR #835&lt;/a> fait fonctionner correctement la rotation des key packages en réutilisant le slot &lt;code>d_tag&lt;/code> pour les publications kind:30443, activant la sémantique d&amp;rsquo;événement remplaçable NIP-33 afin que les rotations successives de key package remplacent l&amp;rsquo;événement précédent sur les relais, ne gardant que le key package actuel. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/833">PR #833&lt;/a> étend &lt;code>FileMetadata&lt;/code> avec des champs optionnels &lt;code>duration_ms&lt;/code> et &lt;code>waveform&lt;/code> pour les pièces jointes audio, coordonné avec &lt;a href="https://github.com/marmot-protocol/mdk/pull/300">PR #300&lt;/a> de MDK qui ajoute les mêmes champs aux balises média MIP-04. Un nouveau crate &lt;code>whitenoise-markdown&lt;/code> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/836">PR #836&lt;/a>) remplace l&amp;rsquo;analyseur de token nostr-sdk précédent par une bibliothèque de rendu markdown dédiée.&lt;/p>
&lt;p>La spécification Marmot elle-même a reçu un correctif de sécurité dans &lt;a href="https://github.com/marmot-protocol/marmot/pull/68">PR #68&lt;/a>, qui ferme un problème de sécurité en spécifiant explicitement HKDF-SHA256 pour les dérivations de clé d&amp;rsquo;image dans MIP-01, supprimant une ambiguïté qui pourrait mener à une divergence d&amp;rsquo;implémentation. Dans MDK, &lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a> assainit les raisons d&amp;rsquo;échec de welcome et plafonne la longueur stockée, fermant une constatation de sécurité distincte.&lt;/p>
&lt;h3 id="amethyst-v1100--zaps-bitcoin-onchain">Amethyst v1.10.0 : Zaps Bitcoin onchain&lt;/h3>
&lt;p>Amethyst a livré quatre sorties cette semaine, avec &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.10.0">v1.10.0&lt;/a> comme titre. La sortie ajoute le support des zaps Bitcoin onchain NIP-BC, permettant aux utilisateurs d&amp;rsquo;envoyer, recevoir et afficher des zaps réglés directement onchain via des transactions Bitcoin. Les sorties précédentes dans la série ont corrigé la détection de blob Blossom pour rejeter les noms de fichiers non conformes (&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.09.2">v1.09.2&lt;/a>), corrigé les règles ProGuard pour les builds de bureau, et fusionné la pull request &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2977">#2977&lt;/a> pour montrer les zappeurs Bitcoin onchain comme une ligne ₿ dédiée dans la galerie de réactions étendue. Un écran d&amp;rsquo;historique de transactions on-chain en cours avec pagination a atterri dans &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a>.&lt;/p>
&lt;h3 id="agentnoise--contrôler-des-agents-de-codage-via-white-noise">AgentNoise : contrôler des agents de codage via White Noise&lt;/h3>
&lt;p>&lt;a href="https://github.com/nvk/agentnoise">AgentNoise&lt;/a> par nvk est un helper de bureau natif en Rust qui vous permet d&amp;rsquo;utiliser un téléphone exécutant White Noise comme surface de contrôle pour des sessions d&amp;rsquo;agents de codage Codex et Claude locales. L&amp;rsquo;outil écoute un ou plusieurs chats White Noise, authentifie les expéditeurs via un flux PIN de premier appairage, et lance des agents de codage locaux via le lanceur configuré. Envoyer &lt;code>/claude &amp;lt;prompt&amp;gt;&lt;/code> depuis votre téléphone ouvre une nouvelle session de travail White Noise nommée d&amp;rsquo;après le nom d&amp;rsquo;hôte de la machine et un court résumé du prompt, puis diffuse les mises à jour de progression et la sortie finale de retour dans ce chat. Il est intentionnellement Rust-first et garde Node hors du chemin de pont de confiance. Le projet a atteint &lt;a href="https://github.com/nvk/agentnoise/releases/tag/v0.1.24">v0.1.24&lt;/a> cette semaine, ajoutant des réponses plus courtes lisibles par téléphone, des références de tâches par préfixe unique court, et un watcher de session local en opt-in. AgentNoise pilote les CLI &lt;code>wn&lt;/code> et &lt;code>wnd&lt;/code> de &lt;code>marmot-protocol/whitenoise-rs&lt;/code> en tant que sous-processus, donc il partage son transport Nostr avec le client White Noise lui-même.&lt;/p>
&lt;h3 id="audit-de-sécurité-keycast-terminé">Audit de sécurité Keycast terminé&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/keycast">Keycast&lt;/a>, le serveur de signature à distance NIP-46 orienté équipe qui stocke les clés privées Nostr chiffrées au repos dans SQLite, a terminé un audit de sécurité en mai 2026. La passe de durcissement a abordé les problèmes d&amp;rsquo;authentification, de permission, d&amp;rsquo;intégrité des données et de dépendances, et les résultats sont documentés dans &lt;a href="https://github.com/marmot-protocol/keycast/blob/master/AUDIT.md">AUDIT.md&lt;/a>. Les changements incluent : l&amp;rsquo;auth HTTP NIP-98 nécessite maintenant exactement une balise &lt;code>u&lt;/code> et une balise &lt;code>method&lt;/code>, rejette les horodatages périmés, et valide les hashes de &lt;code>payload&lt;/code> ; la liste blanche &lt;code>ALLOWED_PUBKEYS&lt;/code> est analysée exactement et appliquée côté serveur ; les politiques vides refusent par défaut les demandes de sign/encrypt/decrypt ; l&amp;rsquo;application des clés étrangères est activée sur les connexions SQLite ; et les routes d&amp;rsquo;application imbriquées telles que &lt;code>/teams/:id&lt;/code> sont protégées côté serveur. Une migration SQL normalise l&amp;rsquo;ancien JSON de permission allowed-kinds au démarrage. Le projet est encore en phase précoce et l&amp;rsquo;audit note des éléments résiduels avant de lui confier de vraies clés d&amp;rsquo;équipe.&lt;/p>
&lt;h3 id="scramble--client-marmot-pour-bureau-et-android">Scramble : client Marmot pour bureau et Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (anciennement OpenChat) est un client .NET/Avalonia de bureau et Android pour le &lt;a href="https://nostrcompass.org/fr/topics/marmot/">protocole Marmot&lt;/a>, implémentant les MIPs 00-04 : publication de KeyPackage (kind:30443), métadonnées de groupe avec l&amp;rsquo;extension MLS NostrGroupData, événements de welcome gift-wrapped NIP-59 (kind:444), messages chiffrés ChaCha20-Poly1305 (kind:445), et pièces jointes média chiffrées Blossom. Il est entièrement interopérable avec White Noise et tout autre client compatible Marmot.&lt;/p>
&lt;p>Le projet a livré 13 sorties cette semaine, avec le support multi-appareils comme fonctionnalité principale. Chaque appareil génère un slot KeyPackage unique (une balise &lt;code>d&lt;/code> sur kind:30443). Au démarrage, Scramble récupère les KeyPackages propres de l&amp;rsquo;utilisateur depuis les relais, détecte les IDs de slot des appareils pairs, et les ajoute automatiquement aux groupes MLS existants via le flux de commit en étapes. L&amp;rsquo;auto-ajout est restreint aux groupes où l&amp;rsquo;utilisateur actuel est admin ; les groupes non-admin sont sautés avec des instructions pour demander à l&amp;rsquo;admin du groupe. Une bannière de divulgation de forward secrecy informe les appareils nouvellement liés que les anciens messages ne sont pas disponibles. Une passe de réconciliation d&amp;rsquo;ID de slot (&lt;code>TryReconcileSlotId&lt;/code>) gère les appareils migrés depuis les versions pré-multi-appareils en comparant les octets de KeyPackage du relais avec le matériel de clé local pour adopter la bonne balise &lt;code>d&lt;/code>. La reconnexion du signataire externe pour les utilisateurs Amber et NIP-46 a également été corrigée : la garde &lt;code>IsConnected&lt;/code> qui bloquait la reconnexion automatique intégrée de &lt;code>ExternalSignerService&lt;/code> a été supprimée aux neuf sites d&amp;rsquo;appel dans &lt;code>NostrService&lt;/code>.&lt;/p>
&lt;h3 id="hostr--hébergement-locatif-p2p-sur-nostr">Hostr : hébergement locatif P2P sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://hostr.network">Hostr&lt;/a> (&lt;a href="https://github.com/sudonym-btc/hostr">source&lt;/a>) est une plateforme d&amp;rsquo;hébergement locatif peer-to-peer construite entièrement sur Nostr. Elle couvre le flux complet de style Airbnb (recherche et annonces de propriétés, négociation de réservations, et règlement des paiements) en utilisant quatre projets de NIPs que le projet développe en parallèle avec l&amp;rsquo;application.&lt;/p>
&lt;p>Le NIP d&amp;rsquo;hébergement étend les annonces classées &lt;a href="https://github.com/nostr-protocol/nips/blob/master/99.md">NIP-99&lt;/a> (kind:30402 actif, kind:30403 brouillon) avec des balises spécifiques à l&amp;rsquo;hébergement pour le type (&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>), les heures d&amp;rsquo;arrivée/départ, le séjour minimum, et les index de cellule géospatiale H3 pour la recherche basée sur la localisation à précision configurable. Le NIP de réservation définit un protocole complet de négociation et de cycle de vie : les événements de réservation remplaçables kind:32122 portent un ID de trade &lt;code>d&lt;/code>, une balise d&amp;rsquo;ancrage d&amp;rsquo;annonce &lt;code>a&lt;/code>, et des balises de participants &lt;code>p&lt;/code> avec les rôles (&lt;code>buyer&lt;/code>, &lt;code>seller&lt;/code>, &lt;code>escrow&lt;/code>) ; les rumeurs de messages structurés kind:1327 délivrent les contre-offres privées d&amp;rsquo;étape de négociation via des gift wraps NIP-59 afin que la négociation reste hors des relais publics ; les événements de transition en ajout uniquement kind:1326 créent une piste d&amp;rsquo;audit publique une fois qu&amp;rsquo;une réservation s&amp;rsquo;engage. La vie privée de l&amp;rsquo;acheteur est préservée via des clés Nostr temporaires par trade liées à l&amp;rsquo;identité réelle de l&amp;rsquo;acheteur via des balises &lt;code>participant_proof&lt;/code> chiffrées. Le NIP d&amp;rsquo;entiercement définit les publicités de service d&amp;rsquo;entiercement kind:30303 et les déclarations de confiance utilisateur kind:17388 ; l&amp;rsquo;implémentation de référence utilise des smart contracts EVM sur Rootstock, avec &lt;code>contractBytecodeHash&lt;/code> permettant aux clients de vérifier que le contrat déployé correspond à une implémentation auditée connue. Le NIP d&amp;rsquo;annonce de marketplace définit des balises génériques partagées entre tous les profils de marketplace NIP-99, y compris &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> et &lt;code>maxDisputePeriod&lt;/code>. Cette semaine, le projet a préparé sa soumission à l&amp;rsquo;app store et fusionné le support d&amp;rsquo;identité de client MCP pour l&amp;rsquo;automatisation orientée agent.&lt;/p>
&lt;p>Deux nouvelles entrées sont apparues sur la plateforme Shakespeare MiniApps cette semaine : &lt;a href="https://inkpress.shakespeare.wtf">InkPress&lt;/a>, un générateur de magazine IA qui publie du contenu structuré de style magazine en tant qu&amp;rsquo;événements Nostr, et &lt;a href="https://pressstr.shakespeare.wtf">PressStr&lt;/a>, une plateforme d&amp;rsquo;écriture et de publication pour la pile Soapbox.&lt;/p>
&lt;h2 id="livraison-cette-semaine">Livraison cette semaine&lt;/h2>
&lt;h3 id="ngit-v244">ngit v2.4.4&lt;/h3>
&lt;p>&lt;strong>ngit&lt;/strong> a livré &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.4">v2.4.4&lt;/a>, ajoutant &lt;code>ngit sync --trust-server&lt;/code> (&lt;code>-t&lt;/code>) pour les cas où un serveur git est en avance fast-forward sur l&amp;rsquo;état Nostr. Quand cette situation est détectée, sync signale les refs affectées et nécessite le drapeau pour signer et publier un événement d&amp;rsquo;état mis à jour ; un paramètre de configuration git &lt;code>nostr.trust-server-domains&lt;/code> fournit une liste blanche séparée par des points-virgules pour les serveurs qui devraient être approuvés automatiquement sans le drapeau.&lt;/p>
&lt;h3 id="amber-v610-pre3-ajoute-la-signature-psbt">Amber v6.1.0-pre3 ajoute la signature PSBT&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong> a publié &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre3">v6.1.0-pre3&lt;/a> avec une disposition améliorée pour les nouvelles connexions d&amp;rsquo;app, des correctifs de crash, et une option de sélection/désélection tout sur l&amp;rsquo;écran des permissions. &lt;a href="https://github.com/greenart7c3/Amber/pull/438">PR #438&lt;/a> ajoute le support de signature PSBT à travers les chemins basé sur Intent et basé sur relais NIP-46, permettant à Amber de signer des Partially Signed Bitcoin Transactions sans exposer la nsec à l&amp;rsquo;application demandeuse.&lt;/p>
&lt;h3 id="wisp-v110-livre-les-réponses-privées-et-abandonne-le-support-amber">Wisp v1.1.0 livre les réponses privées et abandonne le support Amber&lt;/h3>
&lt;p>&lt;strong>Wisp&lt;/strong> a publié &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.0">v1.1.0&lt;/a> avec les réponses privées via gift wrap NIP-17 (&lt;a href="https://github.com/barrydeen/wisp/pull/540">PR #540&lt;/a>), les réactions gift-wrapped et zaps DIP-03 sur les réponses privées (&lt;a href="https://github.com/barrydeen/wisp/pull/543">PR #543&lt;/a>), l&amp;rsquo;auto-traduction pour les notes (&lt;a href="https://github.com/barrydeen/wisp/pull/523">PR #523&lt;/a>), et une saisie fiat de style registre sur le dialogue de zap. &lt;a href="https://github.com/barrydeen/wisp/pull/541">PR #541&lt;/a> migre les zaps privés d&amp;rsquo;un schéma texte-clair de relais DM maison vers DIP-03 avec un routage de relais DM correct. Le même cycle de sortie a supprimé le support du signataire distant NIP-55 (&lt;a href="https://github.com/barrydeen/wisp/pull/531">PR #531&lt;/a>), abandonnant Amber et autres intégrations de signataires externes, et supprimé le relais local intégré (&lt;a href="https://github.com/barrydeen/wisp/pull/533">PR #533&lt;/a>). Wisp est un client social Nostr pour Android.&lt;/p>
&lt;h3 id="calendar-by-formstr-v154-corrige-le-gift-wrap-pour-les-nouveaux-participants">Calendar by Formstr v1.5.4 corrige le gift wrap pour les nouveaux participants&lt;/h3>
&lt;p>&lt;strong>Calendar by Formstr&lt;/strong> a livré &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.5.4">v1.5.4&lt;/a> (le dernier dans une séquence v1.5.2 → v1.5.4). &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/160">PR #160&lt;/a> corrige un bug où l&amp;rsquo;édition d&amp;rsquo;un événement de calendrier privé avec de nouveaux participants publiait l&amp;rsquo;événement mis à jour avec les nouveaux pubkeys dans les balises &lt;code>p&lt;/code> mais ne créait ni ne délivrait jamais les invitations gift wrap à ces participants, cassant le flux d&amp;rsquo;invitation pour les ajouts de dernière minute. &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/156">PR #156&lt;/a> ajoute la gestion des erreurs autour du déchiffrement d&amp;rsquo;événements privés afin que les clients ne lancent plus sur les événements indéchiffrables, et &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/138">PR #138&lt;/a> corrige les heures d&amp;rsquo;événements récurrents qui dérivaient entre fuseaux horaires.&lt;/p>
&lt;h3 id="applesauce-v610-ajoute-les-git-casts-nip-34-et-les-relais-de-lookup-nip-51">Applesauce v6.1.0 ajoute les git casts NIP-34 et les relais de lookup NIP-51&lt;/h3>
&lt;p>&lt;strong>Applesauce&lt;/strong> a publié &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.1.0">v6.1.0&lt;/a> à travers ses packages avec un support significatif de NIP-34 (git-over-Nostr) : applesauce-common ajoute de nouveaux casts &lt;code>GitRepository&lt;/code>, &lt;code>GitGraspList&lt;/code> et &lt;code>FavoriteGitRepos&lt;/code> plus des usines correspondantes, et expose les propriétés réactives &lt;code>User.favoriteGitRepos$&lt;/code>, &lt;code>User.gitAuthors$&lt;/code> et &lt;code>User.graspServers$&lt;/code> afin que les applications puissent lister les dépôts git suivis d&amp;rsquo;un utilisateur, les mainteneurs de dépôts et les serveurs GRASP configurés directement depuis le même objet User. La même sortie ajoute le support des listes de relais de lookup kind 10086 NIP-51, un ajout récent à la famille de listes de relais utilisé pour découvrir où trouver des données spécifiques. applesauce-core gagne &lt;code>replaceableAddress&lt;/code> sur &lt;code>EventCast&lt;/code> pour la recherche d&amp;rsquo;adresse remplaçable NIP-01, plus &lt;code>pointer&lt;/code>, &lt;code>kind&lt;/code>, et un helper &lt;code>getReplaceableAddressForEvent&lt;/code>, et ajoute une méthode &lt;code>timeline$()&lt;/code> sur le cast &lt;code>User&lt;/code> de base. &lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a> corrige les méthodes manuelles du pool qui abandonnaient silencieusement les relais hors ligne.&lt;/p>
&lt;h3 id="sprout-v0016-livre-le-binaire-sprig-et-le-protocole-huddle-v2">Sprout v0.0.16 livre le binaire Sprig et le protocole huddle v2&lt;/h3>
&lt;p>&lt;strong>Sprout&lt;/strong> par Block, un espace de travail d&amp;rsquo;équipe basé sur des relais Nostr auto-hébergé où les humains et les agents IA partagent les mêmes salles et journal d&amp;rsquo;événements, a livré &lt;a href="https://github.com/block/sprout/releases/tag/v0.0.16">v0.0.16&lt;/a> de l&amp;rsquo;application de bureau aux côtés de builds continus du nouveau binaire tout-en-un Sprig (&lt;a href="https://github.com/block/sprout/pull/605">PR #605&lt;/a>), qui rassemble le harnais ACP, l&amp;rsquo;agent et le MCP développeur dans un seul binaire de style busybox pour un déploiement facile. Le drapeau &lt;code>--no-memory&lt;/code> ajouté dans &lt;a href="https://github.com/block/sprout/pull/611">PR #611&lt;/a> permet aux opérateurs de désactiver l&amp;rsquo;injection de mémoire centrale NIP-AE pour le harnais ACP. Côté temps réel, &lt;a href="https://github.com/block/sprout/pull/609">PR #609&lt;/a> étend le protocole vocal huddle à un en-tête de trame v2 supportant jusqu&amp;rsquo;à 10 pairs simultanés.&lt;/p>
&lt;h3 id="nostrord-v103-ajoute-le-trousseau-os-et-le-multi-compte">Nostrord v1.0.3 ajoute le trousseau OS et le multi-compte&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong> a publié &lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.3">v1.0.3&lt;/a> avec un stockage de clés locales durci utilisant le trousseau OS et une phrase de passe de secours, le support multi-compte, et un code QR bunker cliquable qui ouvre l&amp;rsquo;application signataire sur Android.&lt;/p>
&lt;h3 id="angor-migre-vers-nip-44-et-livre-un-durcissement-de-sécurité">Angor migre vers NIP-44 et livre un durcissement de sécurité&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong>, l&amp;rsquo;application de crowdfunding Bitcoin construite sur Nostr et Taproot, a livré trois versions instables cette semaine (&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>, et &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.26">v0.2.26&lt;/a>) avec un ensemble de changements de durcissement de sécurité et d&amp;rsquo;intégration Nostr. &lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a> migre la messagerie chiffrée Nostr de NIP-04 vers NIP-44, remplaçant le schéma XOR déprécié par le chiffrement ChaCha20-Poly1305. &lt;a href="https://github.com/block-core/angor/pull/861">PR #861&lt;/a> permet les uploads de médias Blossom sans portefeuille sélectionné en utilisant une clé d&amp;rsquo;auth Nostr éphémère, débloquant les uploads pour les utilisateurs qui n&amp;rsquo;ont pas encore connecté de portefeuille. La série de sécurité a abordé plusieurs catégories durcies : &lt;a href="https://github.com/block-core/angor/pull/854">PR #854&lt;/a> ajoute la sécurité de type pour AngorKey et la protection mémoire des mnémoniques, &lt;a href="https://github.com/block-core/angor/pull/856">PR #856&lt;/a> applique une validation au niveau protocole pour les timelocks, les taux de frais, les seuils dust et les règles de pénalité, et &lt;a href="https://github.com/block-core/angor/pull/851">PR #851&lt;/a> applique un durcissement non-cassant à travers huit catégories de sévérité moyenne et basse. &lt;a href="https://github.com/block-core/angor/pull/859">PR #859&lt;/a> corrige la compatibilité GrapheneOS en activant la compilation AOT et en supprimant la génération de code à l&amp;rsquo;exécution, et &lt;a href="https://github.com/block-core/angor/pull/855">PR #855&lt;/a> empêche la perte de portefeuille sur swipe-kill Android en persistant l&amp;rsquo;état du portefeuille avant que l&amp;rsquo;OS ne termine le processus.&lt;/p>
&lt;h3 id="alby-js-sdk-v80-livre-la-reconnexion-multi-relais-nwc">Alby js-sdk v8.0 livre la reconnexion multi-relais NWC&lt;/h3>
&lt;p>&lt;strong>Alby js-sdk&lt;/strong> a publié la ligne v8.0 (&lt;a href="https://github.com/getAlby/js-sdk/releases/tag/v8.0.1">v8.0.1&lt;/a> à &lt;a href="https://github.com/getAlby/js-sdk/releases/tag/v8.0.3">v8.0.3&lt;/a>) avec le support d&amp;rsquo;abonnement multi-relais NWC. &lt;a href="https://github.com/getAlby/js-sdk/pull/516">PR #516&lt;/a> met à jour la dépendance nostr-tools et active la reconnexion automatique native à travers plusieurs relais, remplaçant l&amp;rsquo;approche de polling précédente par une logique de reconnexion native au relais. &lt;a href="https://github.com/getAlby/js-sdk/pull/542">PR #542&lt;/a> remplace tous les appels &lt;code>console.debug&lt;/code> par une interface de logger injectable afin que les développeurs d&amp;rsquo;application puissent router les diagnostics SDK à travers leur propre infrastructure de journalisation. La sortie abandonne le polyfill WebSocket, nécessitant Node.js 22 ou supérieur pour les consommateurs côté serveur. v8.0.2 a ajouté un correctif pour un bug d&amp;rsquo;import crypto utils qui cassait certains bundlers.&lt;/p>
&lt;h3 id="keychat-v1411-corrige-la-forward-secrecy">KeyChat v1.41.1 corrige la forward secrecy&lt;/h3>
&lt;p>&lt;strong>KeyChat&lt;/strong>, une application de messagerie qui combine le protocole Signal avec le transport de relais Nostr, a publié &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.41.1&amp;#43;6513">v1.41.1+6513&lt;/a>. Le correctif principal impose la forward secrecy en supprimant les préclés uniques Signal immédiatement après un déchiffrement réussi, fermant un trou où une préclé retenue pourrait être utilisée pour déchiffrer des messages passés si l&amp;rsquo;appareil était compromis plus tard. La sortie ajoute également un aperçu d&amp;rsquo;URL pour les messages consistant en un seul lien, centralise l&amp;rsquo;auto-téléchargement de médias sous un nouveau &lt;code>FileDownloadManager&lt;/code> avec un seuil automatique de 20 Mo, et refactorise la récupération d&amp;rsquo;infos de relais NIP-11 pour forcer le rafraîchissement au démarrage à froid afin que les configurations de frais de relais payants se chargent toujours correctement.&lt;/p>
&lt;h2 id="en-développement">En développement&lt;/h2>
&lt;p>&lt;strong>Citrine&lt;/strong> a fusionné &lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a> implémentant l&amp;rsquo;application de NIP-70 : le relais Android bloque maintenant les reposts qui intègrent du contenu d&amp;rsquo;événement protégé, comme la spécification l&amp;rsquo;exige. &lt;a href="https://github.com/greenart7c3/Citrine/pull/149">PR #149&lt;/a> ajoute des actions d&amp;rsquo;affichage et de copie pour plusieurs adresses de connexion, localhost, Wi-Fi local et Tor, depuis l&amp;rsquo;écran des paramètres du relais. &lt;a href="https://github.com/greenart7c3/Citrine/pull/141">PR #141&lt;/a> ajoute la gestion des défis AUTH NIP-42 via l&amp;rsquo;intégration d&amp;rsquo;un signataire externe avec Amber.&lt;/p>
&lt;p>&lt;strong>Mostro&lt;/strong> a atteint la Phase 2 de son déploiement de caution anti-abus. &lt;a href="https://github.com/MostroP2P/mostro/pull/737">PR #737&lt;/a> atterrit la logique de slash de caution dirigée par le solveur : les gestionnaires admin consomment maintenant la charge utile &lt;code>BondResolution&lt;/code> de mostro-core, permettant à un admin de slasher la caution de l&amp;rsquo;une ou l&amp;rsquo;autre partie lors de la résolution d&amp;rsquo;un litige. Phase 1.5, fusionnée dans &lt;a href="https://github.com/MostroP2P/mostro/pull/736">PR #736&lt;/a>, a introduit une action &lt;code>PayBondInvoice&lt;/code> dédiée et un statut &lt;code>WaitingTakerBond&lt;/code>, séparant le paiement de la caution anti-abus du taker du paiement de l&amp;rsquo;acheteur. Le client mobile a ajouté l&amp;rsquo;UX complète de Phase 1.5 dans &lt;a href="https://github.com/MostroP2P/mobile/pull/592">PR #592&lt;/a>. Mostro est un protocole d&amp;rsquo;échange Bitcoin peer-to-peer construit sur Nostr.&lt;/p>
&lt;p>&lt;strong>Damus&lt;/strong> a fusionné &lt;a href="https://github.com/damus-io/damus/pull/3773">PR #3773&lt;/a> restaurant l&amp;rsquo;indicateur de signal de relais, et &lt;a href="https://github.com/damus-io/damus/pull/3775">PR #3775&lt;/a> corrige les relais qui refusaient de se reconnecter après un échec de connexion initial.&lt;/p>
&lt;p>&lt;strong>rust-nostr&lt;/strong> a fusionné &lt;a href="https://github.com/rust-nostr/nostr/pull/1358">PR #1358&lt;/a> ajoutant des traits de finalisation d&amp;rsquo;événements et des constructeurs d&amp;rsquo;événements spécifiques à NIP, rendant plus facile la construction d&amp;rsquo;événements correctement typés pour des fonctions de protocole spécifiques. &lt;a href="https://github.com/rust-nostr/nostr/pull/1363">PR #1363&lt;/a> rétroporte un correctif garantissant que le signataire NIP-46 s&amp;rsquo;abonne aux notifications avant d&amp;rsquo;envoyer la réponse de connexion, fermant une condition de course où les messages client arrivant immédiatement après la connexion pouvaient être manqués.&lt;/p>
&lt;p>&lt;strong>dart-nostr&lt;/strong> a fusionné &lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">PR #44&lt;/a> ajoutant un résolveur de relais &lt;code>.bit&lt;/code> Namecoin et des enregistrements de pin TLSA, permettant aux applications Flutter de résoudre les URLs de relais &lt;code>wss://example.bit/&lt;/code> via DNS Namecoin vers leurs adresses WebSocket réelles.&lt;/p>
&lt;p>&lt;strong>Dart NDK&lt;/strong> (le kit de développement Nostr Dart/Flutter, maintenant à &lt;code>relaystr/ndk&lt;/code>) a fusionné &lt;a href="https://github.com/relaystr/ndk/pull/464">PR #464&lt;/a> implémentant NIP-77, le protocole de signature d&amp;rsquo;événement hors ligne. Côté signataire, &lt;a href="https://github.com/relaystr/ndk/pull/602">PR #602&lt;/a> et &lt;a href="https://github.com/relaystr/ndk/pull/601">PR #601&lt;/a> ajoutent un signataire d&amp;rsquo;événement spécifique au web et une abstraction &lt;code>PlatformEventVerifier&lt;/code>, permettant aux applications Flutter web d&amp;rsquo;utiliser le signataire de plateforme sans chemin de code séparé ; &lt;a href="https://github.com/relaystr/ndk/pull/604">PR #604&lt;/a> introduit une usine de signataire d&amp;rsquo;événement pour la sélection de signataire à l&amp;rsquo;exécution. &lt;a href="https://github.com/relaystr/ndk/pull/608">PR #608&lt;/a> ajoute &lt;code>getDmRelays()&lt;/code> pour récupérer la liste de relais DM NIP-17 d&amp;rsquo;un utilisateur (kind:10050), et &lt;a href="https://github.com/relaystr/ndk/pull/600">PR #600&lt;/a> corrige la préservation des champs signés NIP-46 afin que les signataires distants ne perdent pas de champs sur l&amp;rsquo;aller-retour.&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;application de document collaboratif nostr-native de Formstr hébergée à &lt;a href="https://pages.formstr.app">pages.formstr.app&lt;/a>, a fusionné quatre PRs cette semaine resserrant les flux de pièces jointes chiffrées et de gestion de documents. &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/37">PR #37&lt;/a> corrige les images manquantes dans les exports DOCX, HTML et PDF en incorporant les pièces jointes chiffrées : il récupère les blobs &lt;code>&amp;lt;encrypted-file&amp;gt;&lt;/code> depuis les serveurs Blossom, les déchiffre avec AES-GCM 256 bits en utilisant la clé et le nonce stockés, valide le type MIME de l&amp;rsquo;image, et les convertit en URLs de données base64 afin que les exports préservent les images qui n&amp;rsquo;existent sur Blossom que sous forme chiffrée. &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/39">PR #39&lt;/a> ajoute un mécanisme de recherche de document local, &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/38">PR #38&lt;/a> nettoie le flux de renommage, et &lt;a href="https://github.com/formstr-hq/nostr-docs/pull/40">PR #40&lt;/a> corrige la gestion des sauvegardes partagées.&lt;/p>
&lt;p>&lt;strong>Zap Cooking&lt;/strong> a fusionné &lt;a href="https://github.com/zapcooking/frontend/pull/396">PR #396&lt;/a>, la première phase d&amp;rsquo;une refonte du fil qui pose les primitives de rendu de fil sans aucun changement visible par l&amp;rsquo;utilisateur pour le moment. La PR introduit un analyseur de balises &lt;code>imeta&lt;/code> NIP-92 qui lit les slots &lt;code>url&lt;/code>, &lt;code>m&lt;/code> (MIME), &lt;code>dim&lt;/code> (dimensions), &lt;code>blurhash&lt;/code>, &lt;code>alt&lt;/code>, &lt;code>x&lt;/code> (hash de fichier) et &lt;code>fallback&lt;/code>, plus un décodeur blurhash canonique porté à la main (~200 LOC) qui produit des URLs de données PNG via canvas avec un fallback null SSR-safe. Quand les balises &lt;code>imeta&lt;/code> sont absentes, l&amp;rsquo;analyseur revient à extraire les URLs d&amp;rsquo;images et vidéos brutes du contenu de l&amp;rsquo;événement en utilisant les mêmes heuristiques que le fil actuel utilise déjà.&lt;/p>
&lt;p>&lt;strong>Nurunuru&lt;/strong> (ぬるぬる, &lt;code>tami1A84/null--nostr&lt;/code>), un client Nostr avec des variantes natives Android, iOS et Web partageant un moteur FFI Rust, a fusionné sa synchronisation Native → Web v1.5.0 dans &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">PR #176&lt;/a>. La synchronisation apporte plusieurs ajouts de fonctionnalités à la version Web qui ont déjà été livrés sur Android v1.4.9 et iOS 1.0.4 : le &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">NotificationModal&lt;/a> fait maintenant surface les notifications d&amp;rsquo;anniversaire, la détection de zap mutuel-suivi, et les notifications de réaction emoji personnalisée ; le sélecteur de réaction abandonne la ligne rapide de réactions Unicode par défaut et centre l&amp;rsquo;UX sur les emojis personnalisés ; le moteur de recommandation dans &lt;code>lib/recommendation.js&lt;/code> filtre les utilisateurs sans icônes ou noms d&amp;rsquo;affichage et priorise les entrées Following avec chargement Recommended en arrière-plan. L&amp;rsquo;entrée vocale est la seule fonctionnalité qui va dans l&amp;rsquo;autre direction : la version Web utilise déjà le streaming ElevenLabs Scribe, et v1.5.0 synchronise partiellement le côté Natif vers le &lt;code>SpeechRecognizer&lt;/code> standard OS (Android) et &lt;code>SFSpeechRecognizer&lt;/code> + &lt;code>AVAudioEngine&lt;/code> (iOS) tandis que l&amp;rsquo;intégration Scribe Natif complète est différée à v1.6.&lt;/p>
&lt;h2 id="travail-de-protocole-et-de-spécification">Travail de protocole et de spécification&lt;/h2>
&lt;p>&lt;strong>PR &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">#2251&lt;/a>&lt;/strong> resserre la spécification des événements protégés NIP-70 : il déclare maintenant explicitement que les reposts intégrant le contenu complet d&amp;rsquo;un événement protégé doivent être rejetés par les relais. NIP-70 définit la balise &lt;code>-&lt;/code> qui signale qu&amp;rsquo;un auteur de note ne consent pas à ce que sa note soit republiée. La spécification originale couvrait le comportement de filtrage du relais, mais laissait le cas de repost ambigu. Cette PR ferme cette lacune. &lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a> de Citrine implémente l&amp;rsquo;application côté relais cette même semaine.&lt;/p>
&lt;p>&lt;strong>PR &lt;a href="https://github.com/nostr-protocol/nips/pull/1653">#1653&lt;/a>&lt;/strong> propose un NIP Drafts pour sauvegarder et synchroniser les événements brouillons privés. La proposition utilise des événements remplaçables avec un statut &lt;code>draft&lt;/code> et un chiffrement NIP-44 vers la propre clé de l&amp;rsquo;auteur, permettant aux clients de sauvegarder des travaux en cours sur les relais sans que ces événements soient visibles par qui que ce soit d&amp;rsquo;autre. L&amp;rsquo;événement brouillon porte l&amp;rsquo;événement complet destiné à la publication en tant que contenu chiffré, y compris son kind et ses balises éventuels.&lt;/p>
&lt;p>&lt;strong>Snapshots (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>)&lt;/strong> est une proposition ouverte pour définir un événement de snapshot immuable pour préserver une version exacte d&amp;rsquo;un événement Nostr remplaçable. L&amp;rsquo;événement de snapshot porte le contenu complet de l&amp;rsquo;événement remplaçable à un moment donné, avec une balise &lt;code>a&lt;/code> le liant à l&amp;rsquo;adresse de l&amp;rsquo;événement remplaçable afin que toutes les versions historiques soient interrogeables ensemble. Cela permet aux observateurs d&amp;rsquo;inspecter l&amp;rsquo;état historique même après que les relais aient cessé de retenir les anciennes versions.&lt;/p>
&lt;p>&lt;strong>Vague Namecoin NIP-05 :&lt;/strong> Cette semaine a vu une poussée coordonnée pour ajouter la résolution NIP-05 &lt;code>.bit&lt;/code> aux clients Nostr. Le fil de discussion NIP a capturé des PRs open-source contre Aegis (&lt;a href="https://github.com/ZharlieW/Aegis/pull/14">#14&lt;/a>, qui ajoute la vérification au moment de la signature au signataire), nostter (&lt;a href="https://github.com/SnowCait/nostter/pull/2128">#2128&lt;/a>), et dart-nostr (&lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">#44&lt;/a>), aux côtés d&amp;rsquo;un projet de NIP upstream (&lt;a href="https://github.com/nostr-protocol/nips/pull/2349">PR #2349&lt;/a>). La PR Aegis est notable pour placer la vérification côté producteur : le signataire vérifie la chaîne Namecoin avant de signer tout événement kind:0 qui revendique une identité &lt;code>.bit&lt;/code> et avertit l&amp;rsquo;utilisateur en cas de non-correspondance, attrapant le problème avant que l&amp;rsquo;événement n&amp;rsquo;atteigne un relais.&lt;/p>
&lt;h2 id="nip-deep-dive--nip-07-windownostr-pour-les-navigateurs-web">NIP Deep Dive : NIP-07 (window.nostr pour les navigateurs web)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/07.md">NIP-07&lt;/a> définit l&amp;rsquo;interface &lt;code>window.nostr&lt;/code> que les extensions de navigateur exposent aux applications web. C&amp;rsquo;est l&amp;rsquo;interface de signataire la plus largement déployée sur le web, implémentée par des extensions incluant Alby, nos2x, Flamingo et horse.&lt;/p>
&lt;p>L&amp;rsquo;interface a deux méthodes requises et plusieurs optionnelles. &lt;code>window.nostr.getPublicKey()&lt;/code> retourne la clé publique de l&amp;rsquo;utilisateur sous forme de chaîne hex sans jamais exposer la clé privée à la page appelante. &lt;code>window.nostr.signEvent(event)&lt;/code> prend un événement partiel avec &lt;code>created_at&lt;/code>, &lt;code>kind&lt;/code>, &lt;code>tags&lt;/code> et &lt;code>content&lt;/code>, et retourne l&amp;rsquo;événement signé complet avec &lt;code>id&lt;/code>, &lt;code>pubkey&lt;/code> et &lt;code>sig&lt;/code> ajoutés. Le point clé est que la clé privée ne quitte jamais le contexte isolé de l&amp;rsquo;extension ; l&amp;rsquo;application web soumet un événement non signé et reçoit en retour un signé.&lt;/p>
&lt;p>Les méthodes optionnelles couvrent le chiffrement : &lt;code>window.nostr.nip04.encrypt&lt;/code> et &lt;code>window.nostr.nip04.decrypt&lt;/code> pour l&amp;rsquo;ancien schéma NIP-04 (maintenant déprécié), et &lt;code>window.nostr.nip44.encrypt&lt;/code> et &lt;code>window.nostr.nip44.decrypt&lt;/code> pour le schéma NIP-44 actuel. Les extensions qui supportent NIP-44 peuvent donc gérer à la fois le chiffrement de messages directs et toute autre application qui a besoin de chiffrement par clé pubkey sans que la page appelante voie la nsec.&lt;/p>
&lt;p>La spécification inclut également une recommandation aux auteurs d&amp;rsquo;extension : charger les scripts avec &lt;code>&amp;quot;run_at&amp;quot;: &amp;quot;document_end&amp;quot;&lt;/code> dans le manifeste de l&amp;rsquo;extension afin que &lt;code>window.nostr&lt;/code> soit disponible de manière synchrone au chargement de la page, évitant les conditions de course où un client vérifie &lt;code>window.nostr&lt;/code> avant que l&amp;rsquo;extension ne l&amp;rsquo;ait injecté.&lt;/p>
&lt;p>Un exemple clé de NIP-07 en action est le projet Keycast couvert ci-dessus. Le frontend web Keycast utilise NIP-07 pour signer les événements d&amp;rsquo;auth HTTP NIP-98 : l&amp;rsquo;application SvelteKit ne gère jamais la nsec de l&amp;rsquo;utilisateur directement. Elle appelle &lt;code>window.nostr.signEvent&lt;/code> pour produire l&amp;rsquo;en-tête d&amp;rsquo;auth, puis envoie cet en-tête à l&amp;rsquo;API Keycast. Cette architecture signifie que le matériel de clé reste dans l&amp;rsquo;extension du navigateur tout au long du flux complet de gestion des clés d&amp;rsquo;équipe.&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és-externes-dans-les-profils">NIP Deep Dive : NIP-39 (identités externes dans les profils)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/39.md">NIP-39&lt;/a> définit comment un utilisateur Nostr peut déclarer le contrôle d&amp;rsquo;identités de plateformes externes dans son profil. Chaque déclaration utilise une balise &lt;code>i&lt;/code> à l&amp;rsquo;intérieur d&amp;rsquo;un événement kind:10011, affirmant la propriété d&amp;rsquo;un compte spécifique sur une autre plateforme avec une preuve qui peut être vérifiée indépendamment.&lt;/p>
&lt;p>Chaque balise suit le format &lt;code>[&amp;quot;i&amp;quot;, &amp;quot;platform:identity&amp;quot;, &amp;quot;proof&amp;quot;]&lt;/code>, où &lt;code>platform:identity&lt;/code> combine le nom de la plateforme et le nom d&amp;rsquo;utilisateur avec un séparateur deux-points (&lt;code>github:semisol&lt;/code>, &lt;code>twitter:semisol_public&lt;/code>). &lt;code>proof&lt;/code> pointe vers un artefact vérifiable sur la plateforme elle-même.&lt;/p>
&lt;p>Pour GitHub, la preuve est un ID Gist. L&amp;rsquo;utilisateur crée un Gist public depuis son compte GitHub contenant le texte &lt;code>Verifying that I control the following Nostr public key: npub1...&lt;/code>. Un client vérifiant la revendication récupère &lt;code>https://gist.github.com/&amp;lt;identity&amp;gt;/&amp;lt;proof&amp;gt;&lt;/code> et vérifie que le Gist a été rédigé par le nom d&amp;rsquo;utilisateur GitHub revendiqué et contient le pubkey attendu. Pour Twitter, la preuve est un ID de tweet, pour Mastodon un ID de post, et pour Telegram une référence de message dans un groupe public.&lt;/p>
&lt;p>Le nom du fournisseur d&amp;rsquo;identité ne doit contenir que &lt;code>a-z&lt;/code>, &lt;code>0-9&lt;/code> et les caractères &lt;code>._-/&lt;/code>, et ne doit pas contenir &lt;code>:&lt;/code>. Les noms d&amp;rsquo;identité doivent être normalisés en minuscules, avec l&amp;rsquo;alias principal utilisé quand plusieurs existent.&lt;/p>
&lt;p>La discussion Namecoin &lt;code>.bit&lt;/code> NIP-05 qui se déroule cette semaine montre le rôle de NIP-39 dans la pile d&amp;rsquo;identité plus large : elle fournit un moyen standardisé, indépendant du relais, de croiser une clé Nostr avec une identité établie ailleurs, sans nécessiter d&amp;rsquo;autorité de vérification centrale. Un client peut vérifier indépendamment la preuve en récupérant un artefact public sur la plateforme nommée, et la preuve est liée au pubkey Nostr spécifique dans le texte du Gist ou du tweet, pas à un identifiant de plateforme générique.&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>C&amp;rsquo;est tout pour cette semaine. Si vous construisez quelque chose ou avez des nouvelles à partager, DM-nous sur Nostr ou trouvez-nous à &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/fr/newsletters/2026-05-13-newsletter/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-05-13-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire du développement du protocole Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Nostr VPN livre huit versions en sept jours, d&amp;rsquo;un flux de jumelage d&amp;rsquo;appareils repensé à un échange AEAD FIPS qui double environ le débit TCP. Marmot Protocol (la fondation de White Noise) livre une version frontend complétant la fonctionnalité de blocage des utilisateurs et 31 PR fusionnées dans MDK et le backend. Grain livre v0.6.0 avec quatre nouvelles implémentations NIP en un seul jalon. Citrine livre v3.0.0-pre1 avec Tor intégré et agrégation de relais. Amber livre v6.1.0-pre2 avec des améliorations du flux de connexion et de la signature. Alby Hub livre v1.22.2 avec une page IA et Agents et l&amp;rsquo;intégration Core Lightning. Mostro livre des cautions de preneur concurrentes et mostro-core v0.11.0. Jumble livre cinq versions avec l&amp;rsquo;historique de recherche récent et des corrections de persistance des données de compte. Nostrord livre trois versions avec des modales de partage de groupe et des paquets Arch Linux. Flotilla livre 1.8.0 avec des appels vidéo, le rendu d&amp;rsquo;e-mails et les mentions de salles. Calendar by Formstr livre v1.5.1 avec la planification de rendez-vous et la synchronisation du calendrier Android. Tamagostrich lance un Tamagotchi NIP-78 décentralisé avec des récompenses en sats.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire du développement du protocole Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Nostr VPN livre huit versions en sept jours, d&amp;rsquo;un flux de jumelage d&amp;rsquo;appareils repensé à un échange AEAD FIPS qui double environ le débit TCP. Marmot Protocol (la fondation de White Noise) livre une version frontend complétant la fonctionnalité de blocage des utilisateurs et 31 PR fusionnées dans MDK et le backend. Grain livre v0.6.0 avec quatre nouvelles implémentations NIP en un seul jalon. Citrine livre v3.0.0-pre1 avec Tor intégré et agrégation de relais. Amber livre v6.1.0-pre2 avec des améliorations du flux de connexion et de la signature. Alby Hub livre v1.22.2 avec une page IA et Agents et l&amp;rsquo;intégration Core Lightning. Mostro livre des cautions de preneur concurrentes et mostro-core v0.11.0. Jumble livre cinq versions avec l&amp;rsquo;historique de recherche récent et des corrections de persistance des données de compte. Nostrord livre trois versions avec des modales de partage de groupe et des paquets Arch Linux. Flotilla livre 1.8.0 avec des appels vidéo, le rendu d&amp;rsquo;e-mails et les mentions de salles. Calendar by Formstr livre v1.5.1 avec la planification de rendez-vous et la synchronisation du calendrier Android. Tamagostrich lance un Tamagotchi NIP-78 décentralisé avec des récompenses en sats.&lt;/p>
&lt;h2 id="actualités-principales">Actualités principales&lt;/h2>
&lt;h3 id="nostr-vpn-livre-huit-versions-culminant-en-v4010">Nostr VPN livre huit versions culminant en v4.0.10&lt;/h3>
&lt;p>Nostr VPN, le VPN mesh décentralisé basé sur Rust utilisant Nostr pour la découverte de pairs, a livré huit versions de v4.0.1 à v4.0.10 sur macOS, Linux, Windows et Android. Le changement phare dans v4.0.8 : l&amp;rsquo;AEAD est passé du backend logiciel RustCrypto chacha20poly1305 au ChaCha20-Poly1305 de BoringSSL dans ring 0.17, qui utilise NEON optimisé à la main sur aarch64 et AVX2/AVX-512 sur x86_64. Les benchmarks Docker sur matériel identique ont montré le débit TCP direct à 2 nœuds passer de 437 à 1097 Mbps. v4.0.9 a ajouté le batching sendmmsg(2) sur le chemin d&amp;rsquo;envoi UDP, poussant le TCP single-stream de 1066 à 1548 Mbps (1,45×). v4.0.10 a livré une refonte complète de l&amp;rsquo;interface utilisateur pour le jumelage d&amp;rsquo;appareils.&lt;/p>
&lt;h3 id="marmot--white-noise-livre-une-version-frontend-complétant-le-blocage-dutilisateurs-et-31-pr-fusionnées-dans-mdk-et-le-backend">Marmot / White Noise livre une version frontend complétant le blocage d&amp;rsquo;utilisateurs et 31 PR fusionnées dans MDK et le backend&lt;/h3>
&lt;p>White Noise a livré v2026.5.7+24 le 7 mai complétant l&amp;rsquo;ensemble de fonctionnalités de blocage. Un utilisateur bloqué est désormais masqué des invitations, des aperçus de chat, des fils de messages, des résultats de recherche et des notifications, et ses messages ne comptent plus dans les badges non lus. MDK a intégré la PR #258 avec le format wire de l&amp;rsquo;extension v3 et le schéma disappearing_message_secs, posant les bases des messages éphémères.&lt;/p>
&lt;h3 id="grain-v060-ajoute-nip-40-nip-50-nip-70-et-nip-45">Grain v0.6.0 ajoute NIP-40, NIP-50, NIP-70 et NIP-45&lt;/h3>
&lt;p>Grain a livré v0.6.0 le 6 mai avec quatre nouvelles implémentations NIP. L&amp;rsquo;expiration d&amp;rsquo;événements NIP-40 permet aux éditeurs de définir un horodatage d&amp;rsquo;expiration pour que le relais supprime les événements après leur expiration. La recherche plein texte NIP-50 permet aux clients d&amp;rsquo;émettre des filtres de recherche dans les messages REQ. Les événements protégés NIP-70 empêchent les relais de repartager des événements sans la permission explicite de l&amp;rsquo;auteur. Les requêtes de comptage NIP-45 permettent aux clients de demander à un relais de renvoyer un décompte des événements correspondants.&lt;/p>
&lt;h2 id="publications-de-la-semaine">Publications de la semaine&lt;/h2>
&lt;h3 id="citrine-v300-pre1-intègre-tor-et-lagrégation-de-relais">Citrine v3.0.0-pre1 intègre Tor et l&amp;rsquo;agrégation de relais&lt;/h3>
&lt;p>Citrine a livré v3.0.0-pre1 avec le support Tor intégré pour un accès aux relais préservant la confidentialité et l&amp;rsquo;agrégation de relais, où Citrine peut récupérer des événements depuis plusieurs relais amont et les servir aux clients locaux. La PR #139 ajoute le support NIP-77 (Negentropy Reconciliation) pour la synchronisation d&amp;rsquo;événements efficace basée sur la réconciliation d&amp;rsquo;ensembles.&lt;/p>
&lt;h3 id="amber-v610-pre2-améliore-le-flux-de-connexion-des-nouvelles-applications">Amber v6.1.0-pre2 améliore le flux de connexion des nouvelles applications&lt;/h3>
&lt;p>Amber a livré v6.1.0-pre2. Les principaux correctifs : la boîte de dialogue de signature se ferme maintenant correctement après avoir accepté une demande bunker, les demandes bunker malformées affichent un écran de demande invalide, et une limitation de débit est ajoutée pour les demandes de signature basées sur les intentions.&lt;/p>
&lt;h3 id="alby-hub-v1222-ajoute-la-page-ia-et-agents-et-le-support-core-lightning">Alby Hub v1.22.2 ajoute la page IA et Agents et le support Core Lightning&lt;/h3>
&lt;p>Alby Hub a livré v1.22.2. La nouvelle page IA et Agents expose les capacités Lightning et NWC d&amp;rsquo;Alby Hub aux agents IA et aux outils compatibles MCP. Core Lightning (CLN) est désormais un backend pris en charge aux côtés de LND et LDK.&lt;/p>
&lt;h3 id="mostro-livre-des-cautions-de-preneur-concurrentes-et-mostro-core-v0110">Mostro livre des cautions de preneur concurrentes et mostro-core v0.11.0&lt;/h3>
&lt;p>Mostro a fusionné 11 PR faisant avancer la fonctionnalité de caution de preneur. La PR #733 implémente des cautions de preneur concurrentes où plusieurs preneurs peuvent soumettre des factures de caution simultanément et le premier à verrouiller gagne. mostro-core a livré v0.11.0 avec la PR #144 ajoutant Action::PayBondInvoice et Status::WaitingTakerBond. mostro-cli a livré v0.15.0.&lt;/p>
&lt;h3 id="jumble-livre-cinq-versions-avec-la-recherche-récente-et-la-persistance-des-comptes">Jumble livre cinq versions avec la recherche récente et la persistance des comptes&lt;/h3>
&lt;p>Jumble a livré v26.5.2 à v26.5.6. v26.5.5 ajoute l&amp;rsquo;historique de recherche récent. Un bug de persistance critique est corrigé dans v26.5.6 : les comptes et les données en cache survivent désormais à un redémarrage complet de l&amp;rsquo;application.&lt;/p>
&lt;h3 id="nostrord-livre-des-modales-de-partage-de-groupe-le-téléversement-de-médias-et-des-paquets-arch-linux">Nostrord livre des modales de partage de groupe, le téléversement de médias et des paquets Arch Linux&lt;/h3>
&lt;p>Nostrord a livré v1.0.0, v1.0.1 et v1.0.2. v1.0.1 livre des paquets Arch Linux via AUR sous le nom nostrord-bin avec des artefacts signés PGP, un bouton de saut au dernier message, et le collage d&amp;rsquo;images/médias dans le chat. v1.0.2 ajoute le partage de groupe via la PR #49 avec une modale de partage générant à la fois un URI nostr:naddr et un lien nostrord.com/open/.&lt;/p>
&lt;h3 id="fips-v030-livre-une-portée-multiplateforme-la-découverte-de-pairs-nostr-et-une-passerelle-pour-les-lan-non-modifiés">FIPS v0.3.0 livre une portée multiplateforme, la découverte de pairs Nostr et une passerelle pour les LAN non modifiés&lt;/h3>
&lt;p>FIPS a livré v0.3.0, un jalon majeur passant de Linux uniquement à Linux, macOS, Windows et OpenWrt. Les nœuds publient désormais des annonces d&amp;rsquo;overlay signées en tant qu&amp;rsquo;événements remplaçables paramétrés kind:37195 sur des relais Nostr publics. Le même échange ring 0.17 ChaCha20-Poly1305 qui a alimenté le gain de débit de Nostr VPN arrive également dans FIPS v0.3.0.&lt;/p>
&lt;h3 id="camelus-v1101-livre-des-versions-bureau">Camelus v1.10.1 livre des versions bureau&lt;/h3>
&lt;p>Camelus a livré v1.10.1 avec des versions bureau Windows et Linux, élargissant sa distribution au-delà du mobile uniquement.&lt;/p>
&lt;h3 id="flotilla-180-livre-des-appels-vidéo-le-rendu-de-mails-et-les-mentions-de-salles">Flotilla 1.8.0 livre des appels vidéo, le rendu d&amp;rsquo;e-mails et les mentions de salles&lt;/h3>
&lt;p>Flotilla a livré 1.8.0. Les salles vocales prennent désormais en charge la vidéo : les participants peuvent activer leurs caméras ou partager leur écran en cours d&amp;rsquo;appel. Le rendu d&amp;rsquo;e-mails arrive via une mise à jour de la bibliothèque welshman. Les mentions de salles permettent aux utilisateurs de référencer d&amp;rsquo;autres salles et relais avec des liens inline cliquables.&lt;/p>
&lt;h3 id="calendar-by-formstr-livre-v151-avec-la-planification-de-rendez-vous-et-la-synchronisation-du-calendrier-android">Calendar by Formstr livre v1.5.1 avec la planification de rendez-vous et la synchronisation du calendrier Android&lt;/h3>
&lt;p>Calendar by Formstr a livré v1.5.0 le 10 mai et v1.5.1 le 11 mai. La planification de rendez-vous permet aux utilisateurs de créer des créneaux réservables. L&amp;rsquo;intégration du calendrier Android en lecture seule synchronise les événements Nostr avec le calendrier de l&amp;rsquo;appareil.&lt;/p>
&lt;h2 id="en-développement">En développement&lt;/h2>
&lt;h3 id="amethyst-ajoute-les-publications-programmées-les-règles-de-communauté-nip-9a-et-un-relay-local-bureau">Amethyst ajoute les publications programmées, les règles de communauté NIP-9A et un relay local bureau&lt;/h3>
&lt;p>Amethyst a fusionné 78 PR cette semaine. Les publications programmées arrivent dans la PR #2765. Une version bureau gagne un relay local intégré avec persistance des événements SQLite dans la PR #2841. Trois PR implémentent les règles de communauté NIP-9A : la PR #2798 valide les publications par rapport aux règles de communauté avant l&amp;rsquo;envoi, la PR #2799 ajoute un éditeur de règles NIP-9A structuré, et la PR #2800 ajoute un filtre de fil NIP-9A optionnel.&lt;/p>
&lt;h3 id="shopstr-ajoute-la-journalisation-daudit-mcp-et-la-sécurité-des-sessions">Shopstr ajoute la journalisation d&amp;rsquo;audit MCP et la sécurité des sessions&lt;/h3>
&lt;p>Shopstr a fusionné cinq PR. La journalisation d&amp;rsquo;audit pour la couche d&amp;rsquo;outils MCP arrive dans la PR #456. La sécurité des sessions se renforce dans la PR #477 avec l&amp;rsquo;épinglage de session à la clé API d&amp;rsquo;origine et l&amp;rsquo;éviction TTL.&lt;/p>
&lt;h3 id="dart-ndk-ajoute-le-support-web-et-la-vérification-des-signatures-de-sceau">Dart NDK ajoute le support web et la vérification des signatures de sceau&lt;/h3>
&lt;p>Dart NDK a fusionné six PR. Le support web arrive dans SembastCacheManager via la PR #571. La vérification des signatures de sceau arrive dans la PR #595 pour le flux NIP-59 Gift Wrap.&lt;/p>
&lt;h2 id="nouveaux-projets">Nouveaux projets&lt;/h2>
&lt;h3 id="tamagostrich-lance-un-tamagotchi-nip-78-décentralisé-avec-des-récompenses-en-sats">Tamagostrich lance un Tamagotchi NIP-78 décentralisé avec des récompenses en sats&lt;/h3>
&lt;p>Tamagostrich est un jeu d&amp;rsquo;animal de compagnie virtuel basé sur le navigateur lancé à l&amp;rsquo;IDENTITY Hackathon 2026 où un bébé autruche, Nori, évolue grâce à votre activité sociale Nostr. L&amp;rsquo;état de l&amp;rsquo;animal vit dans un événement NIP-78 kind:30078 pour la synchronisation multi-appareils. Les récompenses de jalons sont versées en sats via NIP-47 : 50 sats au niveau 5, 210 sats au niveau 10, et 420 sats au niveau maximum 21, envoyés à l&amp;rsquo;adresse lud16 de l&amp;rsquo;utilisateur.&lt;/p>
&lt;h2 id="travaux-sur-le-protocole-et-les-spécifications">Travaux sur le protocole et les spécifications&lt;/h2>
&lt;p>Cinq nouvelles propositions ont été ouvertes cette semaine :&lt;/p>
&lt;p>La PR #2331 propose NIP-9A : Verifiable Community Rules, introduisant kind:34551 pour des documents de règles de communauté cryptographiquement signés et lisibles par machine.&lt;/p>
&lt;p>La PR #2335 propose des Reservation Events pour les marchés Nostr, définissant kind:32122 (événements de réservation remplaçables paramétrés), kind:1326 (enregistrements d&amp;rsquo;audit de transition en ajout uniquement), et kind:32124 (avis post-transaction). La négociation est privée via des messages enveloppés NIP-59 Gift Wrap.&lt;/p>
&lt;p>La PR #2334 propose des Escrow Services pour les marchés Nostr utilisant kind:30303 pour que les opérateurs d&amp;rsquo;entiercement déclarent leur adresse de contrat EVM et leur grille tarifaire.&lt;/p>
&lt;p>La PR #2333 propose des Accommodation Listing Profiles pour NIP-99 Marketplace Listings, étendant NIP-99 avec des balises g d&amp;rsquo;index géospatial H3 pour les annonces de location courte durée.&lt;/p>
&lt;p>La PR #2332 propose NIP-BC : Onchain Zaps (kind 8333), exploitant l&amp;rsquo;identité directe entre les clés Nostr et les adresses Bitcoin Taproot. Le numéro de kind reflète NIP-57 : 9735 est le port P2P Lightning ; 8333 est le port P2P du mainnet Bitcoin.&lt;/p>
&lt;h2 id="nip-deep-dive--nip-78-données-spécifiques-aux-applications">NIP Deep Dive : NIP-78 (données spécifiques aux applications)&lt;/h2>
&lt;p>NIP-78 définit une façon standard pour les applications de stocker des données privées ou publiques arbitraires pour le compte d&amp;rsquo;un utilisateur en utilisant des événements Nostr. Le type d&amp;rsquo;événement principal est 30078, un événement remplaçable paramétré où le tag d est une chaîne d&amp;rsquo;identifiant définie par l&amp;rsquo;application. Une application donne à son emplacement de stockage un tag d unique et publie un événement 30078 avec le contenu JSON ou texte qu&amp;rsquo;elle doit persister. La motivation principale est la synchronisation multi-appareils sans serveur centralisé. Pour les données d&amp;rsquo;application privées, les événements NIP-78 peuvent chiffrer le champ de contenu en utilisant NIP-44 avant la publication. Les utilisateurs actuels incluent Tamagostrich (synchronisation de l&amp;rsquo;état de l&amp;rsquo;animal), Wisp (sauvegarde du portefeuille et paramètres de sécurité), NosPress (état d&amp;rsquo;orchestration CMS), et plusieurs implémentations de synchronisation des paramètres de clients Nostr.&lt;/p>
&lt;hr>
&lt;p>Sources principales :&lt;/p>
&lt;ul>
&lt;li>Spécification 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>Voir aussi : NIP-51 Lists, NIP-65 Relay List Metadata&lt;/p>
&lt;h2 id="nip-deep-dive--nip-98-http-auth">NIP Deep Dive : NIP-98 (HTTP Auth)&lt;/h2>
&lt;p>NIP-98 définit un schéma d&amp;rsquo;authentification HTTP permettant aux paires de clés Nostr d&amp;rsquo;autoriser les requêtes aux serveurs HTTP, éliminant les noms d&amp;rsquo;utilisateur, les mots de passe ou les tokens OAuth. Un client construit un événement Nostr de courte durée de type 27235, le signe avec sa clé privée, encode le JSON en base64, et l&amp;rsquo;envoie dans un en-tête HTTP Authorization: Nostr &lt;base64>. L&amp;rsquo;événement de type 27235 inclut la méthode HTTP dans un tag method, l&amp;rsquo;URL complète de la requête dans un tag u, et un horodatage created_at. Le serveur valide la signature, vérifie que la méthode et l&amp;rsquo;URL correspondent, et contrôle que l&amp;rsquo;horodatage est récent pour prévenir les attaques par rejeu. NIP-98 est utilisé dans Blossom (BUD-01) pour l&amp;rsquo;authentification des téléversements de blobs, Routstr pour le contrôle d&amp;rsquo;accès API par requête, Sprout pour l&amp;rsquo;authentification du transport git, et Alby Hub pour l&amp;rsquo;authentification de l&amp;rsquo;API d&amp;rsquo;administration.&lt;/p>
&lt;hr>
&lt;p>Sources principales :&lt;/p>
&lt;ul>
&lt;li>Spécification 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>Voir aussi : NIP-96 HTTP File Storage Integration&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Si vous construisez quelque chose ou avez des nouvelles à partager, envoyez-nous un DM sur Nostr ou retrouvez-nous sur nostrcompass.org.&lt;/p></content:encoded></item><item><title>Nostr Compass #21</title><link>https://nostrcompass.org/fr/newsletters/2026-05-06-newsletter/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-05-06-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire de Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Marmot Protocol livre MDK 0.8.0 avec les premiers primitives de notification MIP-05, des paquets de clés NIP-51 adressables et une revue de sécurité renforcée. LaWallet NWC livre v0.10.0, la plus grande version depuis le financement OpenSats, apportant un tableau de bord administrateur complet, un portefeuille utilisateur, un journal d&amp;rsquo;activité de bout en bout, et le nouveau schéma LightningAddress 1→N et NWCConnection. Amethyst effectue un sprint de stabilisation de Nests avec élimination des coupures audio lors du renouvellement JWT, des abonnements aux données de clés tenant compte du cycle de vie, une reconnexion relay keep-alive, et un indicateur animé du participant en train de parler. ngit livre v2.4.2 et v2.4.3 corrigeant la détection des serveurs GRASP pour les soumissions de PR et le filtrage des événements d&amp;rsquo;état multi-remote. GRAIN livre v0.5.4 avec un durcissement de production et une correction silencieuse de perte de données. Mostro Core livre v0.10.1 avec des artefacts de version signés PGP. Clave lance v0.2.0 avec la gestion multi-comptes sur iOS.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire de Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Marmot Protocol livre MDK 0.8.0 avec les premiers primitives de notification MIP-05, des paquets de clés NIP-51 adressables et une revue de sécurité renforcée. LaWallet NWC livre v0.10.0, la plus grande version depuis le financement OpenSats, apportant un tableau de bord administrateur complet, un portefeuille utilisateur, un journal d&amp;rsquo;activité de bout en bout, et le nouveau schéma LightningAddress 1→N et NWCConnection. Amethyst effectue un sprint de stabilisation de Nests avec élimination des coupures audio lors du renouvellement JWT, des abonnements aux données de clés tenant compte du cycle de vie, une reconnexion relay keep-alive, et un indicateur animé du participant en train de parler. ngit livre v2.4.2 et v2.4.3 corrigeant la détection des serveurs GRASP pour les soumissions de PR et le filtrage des événements d&amp;rsquo;état multi-remote. GRAIN livre v0.5.4 avec un durcissement de production et une correction silencieuse de perte de données. Mostro Core livre v0.10.1 avec des artefacts de version signés PGP. Clave lance v0.2.0 avec la gestion multi-comptes sur iOS.&lt;/p>
&lt;h2 id="actualités-principales">Actualités principales&lt;/h2>
&lt;h3 id="mdk-080-ajoute-les-primitives-de-notification-mip-05-et-les-paquets-de-clés-adressables">MDK 0.8.0 ajoute les primitives de notification MIP-05 et les paquets de clés adressables&lt;/h3>
&lt;p>MDK, la bibliothèque Rust principale du protocole Marmot, a livré v0.8.0 le 4 mai. Cette version embarque les premiers blocs de construction de notification MIP-05, fait passer les paquets de clés MIP-00 en événements adressables pour qu&amp;rsquo;un paquet de clés utilisateur puisse être remplacé sur place, améliore la compatibilité des groupes à versions mixtes, élargit la couverture UniFFI pour les bindings mobiles, et resserre les chemins de validation autour des actions d&amp;rsquo;administration, des commits, du stockage, des bornes de chiffrement et de la gestion des replays. Les primitives MIP-05 incluent des helpers d&amp;rsquo;index de feuille ajoutés dans la PR #235, qui donnent aux clients aval suffisamment d&amp;rsquo;informations pour livrer des notifications push par destinataire sans révéler la structure du groupe. La PR #273 restaure la publication de crates.io de mdk-core, et la PR #269 expose le module test_util derrière une fonctionnalité Cargo test-utils pour que les suites de tests clients externes puissent partager le harnais de test de Marmot.&lt;/p>
&lt;h3 id="lawallet-nwc-v0100-livre-le-monorepo-complet-et-le-portefeuille-utilisateur">LaWallet NWC v0.10.0 livre le monorepo complet et le portefeuille utilisateur&lt;/h3>
&lt;p>LaWallet NWC, l&amp;rsquo;implémentation NIP-47 Nostr Wallet Connect de l&amp;rsquo;équipe LaWallet, a livré v0.10.0 le 30 avril. C&amp;rsquo;est la plus grande version depuis que le projet a reçu un financement OpenSats. Elle embarque le monorepo complet, le tableau de bord administrateur intégral, un portefeuille utilisateur, un journal d&amp;rsquo;activité de bout en bout, une marque dynamique, et le nouveau schéma LightningAddress 1→N et NWCConnection. Le portefeuille utilisateur livré dans la PR #191 couvre l&amp;rsquo;intégration, l&amp;rsquo;accueil, l&amp;rsquo;envoi/réception, le scan, les devises, un fil d&amp;rsquo;activité et un cache hors ligne.&lt;/p>
&lt;h3 id="amethyst-stabilise-nests-avec-keep-alive-résilience-jwt-et-abonnements-de-cycle-de-vie">Amethyst stabilise Nests avec keep-alive, résilience JWT et abonnements de cycle de vie&lt;/h3>
&lt;p>Amethyst, le client Android riche en fonctionnalités, a poursuivi les travaux sur les salles audio NIP-53 Nests avec un sprint de stabilisation axé sur les modes de défaillance qui cassaient les appels en production. Le correctif de coupure audio dans la PR #2733 chevauche l&amp;rsquo;acquisition de nouveaux identifiants avec le flux actif lors du renouvellement JWT. Un nouveau mécanisme keep-alive dans la PR #2730 reconnecte les relais déconnectés sans nécessiter d&amp;rsquo;action manuelle de l&amp;rsquo;utilisateur, et la PR #2728 remplace l&amp;rsquo;ancien KeyDataSourceSubscription par LifecycleAwareKeyDataSourceSubscription. La PR #2724 ajoute un indicateur animé en anneau externe qui met en surbrillance le participant en train de parler lors des sessions multi-intervenants.&lt;/p>
&lt;h3 id="ngit-v242-et-v243-corrigent-la-détection-des-serveurs-grasp-et-les-événements-détat-multi-remote">ngit v2.4.2 et v2.4.3 corrigent la détection des serveurs GRASP et les événements d&amp;rsquo;état multi-remote&lt;/h3>
&lt;p>ngit, l&amp;rsquo;outil en ligne de commande et le plugin git pour la collaboration NIP-34, a livré v2.4.2 le 28 avril et v2.4.3 le 1er mai. v2.4.2 corrige une discordance de normalisation d&amp;rsquo;URL où repo_grasps contenait des noms d&amp;rsquo;hôtes normalisés mais la comparaison était effectuée par rapport aux URL de clone complètes. v2.4.3 corrige une ambiguïté d&amp;rsquo;événement d&amp;rsquo;état qui apparaissait lorsqu&amp;rsquo;un dépôt possède plusieurs remotes nostr:// partageant le même identifiant.&lt;/p>
&lt;h3 id="grain-v054-apporte-un-durcissement-de-production-et-corrige-une-perte-de-données-silencieuse">GRAIN v0.5.4 apporte un durcissement de production et corrige une perte de données silencieuse&lt;/h3>
&lt;p>GRAIN, le relais Nostr et la bibliothèque client basés sur Go, a livré v0.5.4 le 30 avril. La version regroupe six correctifs accumulés depuis v0.5.3, dont un bug de perte de données silencieuse dans le démarrage rapide Docker qui supprimait auparavant des événements lors du redémarrage du conteneur, et un bug de correction de la couche de stockage dans les lectures d&amp;rsquo;événements adressables.&lt;/p>
&lt;h3 id="mostro-core-v0101-ajoute-des-artefacts-de-version-signés-pgp">Mostro Core v0.10.1 ajoute des artefacts de version signés PGP&lt;/h3>
&lt;p>Mostro Core, la bibliothèque Rust fournissant des fonctionnalités pair à pair pour le démon Mostro, a livré v0.10.1 le 28 avril. Cette version ajoute des artefacts de version signés PGP et un flux de vérification de version pour que les empaqueteurs aval puissent confirmer la provenance des artefacts.&lt;/p>
&lt;h2 id="versions-publiées">Versions publiées&lt;/h2>
&lt;h3 id="clave-v020-lance-la-gestion-multi-comptes-sur-ios-avec-la-signature-nip-46-nostr-connect">Clave v0.2.0 lance la gestion multi-comptes sur iOS avec la signature NIP-46 (Nostr Connect)&lt;/h3>
&lt;p>Clave, l&amp;rsquo;application iOS de signature distante NIP-46, a livré v0.2.0 le 5 mai. La principale nouveauté introduit la gestion multi-comptes : Clave peut désormais gérer jusqu&amp;rsquo;à quatre comptes sur un seul appareil, avec un sélecteur en un appui et une isolation par compte. La PR #23 ajoute la plomberie iOS pour le multi-comptes, et la PR #22 ajoute un champ signer_pubkey à la charge utile APNs pour que l&amp;rsquo;appareil sache à quel compte appartient une demande de signature distante.&lt;/p>
&lt;h3 id="wisp-livre-des-travaux-de-stabilité-v103--v105">Wisp livre des travaux de stabilité v1.0.3 → v1.0.5&lt;/h3>
&lt;p>Wisp, le client Android, a livré v1.0.3, v1.0.4 et v1.0.5 le 4 mai avec des travaux de stabilité. La PR #506 ajoute Thumbhash pour les aperçus d&amp;rsquo;images floutées pendant le chargement des médias complets, et la PR #514 réduit les saccades lors du changement d&amp;rsquo;onglets inférieurs.&lt;/p>
&lt;h3 id="amber-610-pre1-livre-des-corrections-de-mise-en-page-et-de-stabilité">Amber 6.1.0-pre1 livre des corrections de mise en page et de stabilité&lt;/h3>
&lt;p>Amber, l&amp;rsquo;application de signature Android pour NIP-55 et NIP-46, a livré v6.1.0-pre1 avec une passe de mise en page sur le flux de connexion des nouvelles applications et plusieurs corrections de plantage. La PR #416 corrige la mise en page d&amp;rsquo;ActivityStatsBar et les problèmes de débordement de texte.&lt;/p>
&lt;h3 id="routstr-core-v043-améliore-le-paiement-les-remboursements-et-le-reporting-dutilisation">Routstr Core v0.4.3 améliore le paiement, les remboursements et le reporting d&amp;rsquo;utilisation&lt;/h3>
&lt;p>Routstr Core a livré v0.4.3 en pré-version le 1er mai avec des améliorations du traitement des paiements et remboursements, du suivi des coûts et du reporting d&amp;rsquo;utilisation.&lt;/p>
&lt;h3 id="nostria-v3137-à-v3141-ajoutent-les-signets-web-et-un-thème-automatique">Nostria v3.1.37 à v3.1.41 ajoutent les signets Web et un thème automatique&lt;/h3>
&lt;p>Nostria, le client Nostr multi-plateforme, a livré v3.1.37 à v3.1.41 avec la prise en charge des signets Web NIP-B0, un thème automatique suivant les paramètres de l&amp;rsquo;appareil, et la consultation de PDF dans l&amp;rsquo;application.&lt;/p>
&lt;h3 id="noornote-v089-corrige-lécran-vide-au-premier-lancement-sur-bureau">NoorNote v0.8.9 corrige l&amp;rsquo;écran vide au premier lancement sur bureau&lt;/h3>
&lt;p>NoorNote a livré v0.8.9 le 28 avril corrigeant un bug d&amp;rsquo;écran vide au premier lancement de l&amp;rsquo;application de bureau.&lt;/p>
&lt;h3 id="kubo-v034-à-v041-lancent-une-plateforme-vidéo-nostr-sécurisée-pour-les-enfants-avec-contrôles-parentaux-et-curation-web-of-trust">Kubo v0.3.4 à v0.4.1 lancent une plateforme vidéo Nostr sécurisée pour les enfants avec contrôles parentaux et curation Web of Trust&lt;/h3>
&lt;p>Kubo, une plateforme vidéo sécurisée pour enfants sur Nostr, a livré v0.3.4 à v0.4.1 les 4 et 5 mai. Chaque enfant dispose d&amp;rsquo;une paire de clés Nostr distincte et d&amp;rsquo;un fil centré sur la vidéo où les parents contrôlent les limites de temps (15 à 180 minutes par jour), les plages horaires autorisées et la visibilité des actions de publication.&lt;/p>
&lt;h2 id="changements-non-publiés">Changements non publiés&lt;/h2>
&lt;h3 id="sprout-livre-desktop-v004-et-v005-avec-lauthentification-dagent-nip-oa-et-le-sidecar-relay-de-jumelage">Sprout livre Desktop v0.0.4 et v0.0.5 avec l&amp;rsquo;authentification d&amp;rsquo;agent NIP-OA et le sidecar relay de jumelage&lt;/h3>
&lt;p>Sprout, le client Nostr de Block avec un relay intégré, a livré Desktop v0.0.4 le 5 mai et v0.0.5 le 6 mai. La PR #471 intègre l&amp;rsquo;authentification d&amp;rsquo;agent NIP-OA dans le flux d&amp;rsquo;adhésion NIP-43 du relay afin qu&amp;rsquo;un agent autonome puisse prouver qu&amp;rsquo;une clé publique humaine spécifique a autorisé ses actions. Un nouveau relay sidecar éphémère pour le jumelage d&amp;rsquo;appareils NIP-AB arrive dans la PR #467 sous la forme de sprout-pair-relay.&lt;/p>
&lt;h3 id="nostream-ajoute-la-prise-en-charge-du-relay-marmot-et-les-réactions-nip-25">nostream ajoute la prise en charge du relay Marmot et les réactions NIP-25&lt;/h3>
&lt;p>nostream, l&amp;rsquo;implémentation de relay Node.js, a fusionné la prise en charge du relay Marmot Protocol couvrant les MIPs 00 à 03 dans la PR #602, la prise en charge des réactions NIP-25 dans la PR #589, et la correspondance de préfixe geohash pour les filtres #g dans la PR #586.&lt;/p>
&lt;h3 id="strfry-ajoute-lobservabilité-par-connexion-et-réduit-le-plafond-nofiles">strfry ajoute l&amp;rsquo;observabilité par connexion et réduit le plafond nofiles&lt;/h3>
&lt;p>strfry, le relay Nostr en C++, a fusionné 14 PR ciblant l&amp;rsquo;observabilité. La PR #218 ajoute l&amp;rsquo;observabilité des sorties en attente par connexion et un plafond de contre-pression configurable. La PR #224 supprime les allocations de tas std::function du fanout du moniteur par événement.&lt;/p>
&lt;h3 id="damus-remplace-les-gif-tenor-par-un-proxy-purple-et-livre-une-interface-de-compaction">Damus remplace les GIF Tenor par un proxy Purple et livre une interface de compaction&lt;/h3>
&lt;p>Damus a fusionné la PR #3737 remplaçant l&amp;rsquo;intégration GIF Tenor par un proxy Damus Purple.&lt;/p>
&lt;h3 id="primal-android-peaufine-explore-les-alertes-et-le-badge-vérifié-nip-05">Primal Android peaufine Explore, les alertes et le badge vérifié NIP-05&lt;/h3>
&lt;p>Primal Android a fusionné la PR #1043 corrigeant un badge vérifié NIP-05 qui clignotait pour les utilisateurs avec des identifiants _@domaine.&lt;/p>
&lt;h3 id="alby-hub-ajoute-les-paiements-nwc-depuis-les-connexions-dapplications">Alby Hub ajoute les paiements NWC depuis les connexions d&amp;rsquo;applications&lt;/h3>
&lt;p>Alby Hub a fusionné la PR #2267 permettant les paiements depuis les connexions d&amp;rsquo;applications.&lt;/p>
&lt;h3 id="routstrd-auth--un-routstrd-dockerisé-pour-les-équipes-avec-authentification-nip-98-et-rbac-npub">routstrd-auth : un Routstrd Dockerisé pour les équipes avec authentification NIP-98 et RBAC npub&lt;/h3>
&lt;p>routstrd-auth, créé le 27 avril, est une variante Dockerisée de Routstrd pour les déploiements en équipe multi-utilisateurs avec contrôle d&amp;rsquo;accès basé sur les rôles via npub et authentification HTTP NIP-98.&lt;/p>
&lt;h3 id="routstrd-intègre-hermes-pour-les-clients-démons-et-le-mode-distant">Routstrd intègre Hermes pour les clients démons et le mode distant&lt;/h3>
&lt;p>Routstrd a fusionné la PR #22 ajoutant l&amp;rsquo;intégration avec Hermes Agent afin que le fichier de configuration de l&amp;rsquo;agent soit peuplé des fournisseurs de modèles et des clés API que Routstrd découvre via Nostr.&lt;/p>
&lt;h3 id="whitenoise-rs-livre-lisolation-de-base-de-données-par-compte-et-les-mises-à-niveau-de-propositions">whitenoise-rs livre l&amp;rsquo;isolation de base de données par compte et les mises à niveau de propositions&lt;/h3>
&lt;p>whitenoise-rs a fusionné la PR #796 déplaçant les tables de projection de messages dans des bases de données par compte, et la PR #791 ajoute des mises à niveau de propositions pour que les groupes puissent étendre les fonctionnalités avec de nouveaux types de propositions.&lt;/p>
&lt;h3 id="angor-0221-livre-des-flux-dapplication-compacts-et-un-durcissement-du-fournisseur-de-clés-et-du-changement-de-réseau">Angor 0.2.21 livre des flux d&amp;rsquo;application compacts et un durcissement du fournisseur de clés et du changement de réseau&lt;/h3>
&lt;p>Angor a livré 0.2.21 le 6 mai avec des améliorations de performances de conception mobile, des flux d&amp;rsquo;application compacts et un fournisseur de clés sécurisé.&lt;/p>
&lt;h2 id="nouvellement-suivis-et-découverts">Nouvellement suivis et découverts&lt;/h2>
&lt;h3 id="bitmacro-signer--un-bunker-nip-46-auto-hébergeable-avec-chiffrement-de-clé-côté-client">BitMacro Signer : un bunker NIP-46 auto-hébergeable avec chiffrement de clé côté client&lt;/h3>
&lt;p>BitMacro Signer est un outil de signature Nostr auto-hébergeable utilisant le modèle bunker NIP-46. Les clés sont chiffrées côté client avant stockage, de sorte que le serveur ne détient jamais le texte en clair.&lt;/p>
&lt;p>La découverte de dépôts NIP-34 a fait apparaître 26 nouvelles annonces de dépôts cette semaine, dont quatre se distinguent :&lt;/p>
&lt;h3 id="gnostr--une-implémentation-git-construite-directement-sur-nostr">gnostr : une implémentation git construite directement sur Nostr&lt;/h3>
&lt;p>gnostr est une implémentation git construite directement sur Nostr, livrant ses propres commandes d&amp;rsquo;arbre de travail en tant que client de contrôle de version natif Nostr construit de zéro.&lt;/p>
&lt;h3 id="nostr-archive--une-spécification-darchive-adressée-par-le-contenu-sur-nostr-et-blossom">nostr-archive : une spécification d&amp;rsquo;archive adressée par le contenu sur Nostr et Blossom&lt;/h3>
&lt;p>nostr-archive est une spécification provisoire et une implémentation de référence pour les archives adressées par le contenu sur Nostr et Blossom.&lt;/p>
&lt;h3 id="flower-cache--un-serveur-de-cache-blossom-local">flower-cache : un serveur de cache Blossom local&lt;/h3>
&lt;p>flower-cache est un serveur de cache Blossom local, utile pour les clients qui souhaitent un miroir local chaud de l&amp;rsquo;ensemble de blobs d&amp;rsquo;un serveur Blossom distant.&lt;/p>
&lt;h3 id="micro-vpn-ansible--des-playbooks-ansible-pour-le-déploiement-vpn-via-nip-34">micro-vpn-ansible : des playbooks Ansible pour le déploiement VPN via NIP-34&lt;/h3>
&lt;p>micro-vpn-ansible est une petite collection de playbooks Ansible pour déployer un micro VPN, hébergé en tant que dépôt NIP-34.&lt;/p>
&lt;h2 id="travaux-sur-le-protocole">Travaux sur le protocole&lt;/h2>
&lt;h3 id="mises-à-jour-nip">Mises à jour NIP&lt;/h3>
&lt;ul>
&lt;li>Un marché de hashrate sans courtier sur Nostr (proposition provisoire) : Un brouillon NIP anonyme arguant que les acteurs actuels du marché de hashrate sont des courtiers dépositaires qui vérifient l&amp;rsquo;identité des utilisateurs. Propose un marché de hashrate P2P sur des événements Nostr.&lt;/li>
&lt;li>Curated Feeds : une alternative plus simple aux flux DVM (proposition provisoire) : Argumente que les DVMs NIP-90 sont trop lourds pour la curation de flux simple ; propose des événements adressables minces avec des listes ordonnées d&amp;rsquo;identifiants d&amp;rsquo;événements à la place.&lt;/li>
&lt;li>Profile Colors : identité visuelle déterministe (proposition provisoire) : Nouveau brouillon NIP pour dériver des couleurs lisibles déterministes à partir d&amp;rsquo;une clé publique Nostr pour une identité visuelle cohérente entre les clients.&lt;/li>
&lt;li>NIPs Namecoin-Track : ancrage de l&amp;rsquo;identité, des relais, du TLS et de la réputation (cluster provisoire) : Un cluster de NIP provisoires déplaçant les pièces de la pile Nostr dans des enregistrements ancrés Namecoin.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive--nip-34-git-stuff">NIP Deep Dive : NIP-34 (git stuff)&lt;/h2>
&lt;p>NIP-34 définit des types d&amp;rsquo;événements pour héberger des dépôts git, des patches, des pull requests, des issues et des statuts de fusion sur des relais Nostr. Un dépôt est annoncé comme un événement adressable de type 30617. Les patches utilisent le type 1617 transportant la sortie git format-patch. Les pull requests utilisent le type 1618. Les issues utilisent le type 1621 avec du contenu markdown. Les événements de statut font passer un fil entre Open (1630), Applied/Merged ou Resolved (1631), Closed (1632) et Draft (1633). L&amp;rsquo;actualité NIP-34 cette semaine est la même que le lancement GitWorkshop v2 de la semaine dernière : le bouton de fusion de PR dans le navigateur fonctionne parce que les serveurs GRASP, ngit et le schéma d&amp;rsquo;URL clone nostr:// ferment ensemble la boucle sur une forge entièrement décentralisée.&lt;/p>
&lt;h2 id="nip-deep-dive--nip-53-live-activities">NIP Deep Dive : NIP-53 (Live Activities)&lt;/h2>
&lt;p>NIP-53 définit la surface d&amp;rsquo;événements standard pour les activités en direct sur Nostr : diffusions en direct, espaces de réunion persistants, événements de conférence programmés, présence des auditeurs et chat en direct. Une diffusion en direct est annoncée comme un événement adressable de type 30311. NIP-53 sépare la salle persistante de l&amp;rsquo;événement programmé qui s&amp;rsquo;y déroule : un Meeting Space de type 30312 définit une salle, et un Conference Event de type 30313 représente une réunion programmée ou en cours dans cette salle. La surface des activités en direct sur Nostr est intentionnellement légère : NIP-53 annonce l&amp;rsquo;activité, tandis que d&amp;rsquo;autres NIPs gèrent les préoccupations adjacentes comme les zaps (NIP-57), les objectifs de zap (NIP-75) et les enregistrements vidéo (NIP-71).&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Si vous construisez quelque chose ou avez des nouvelles à partager, envoyez-nous un DM sur Nostr ou retrouvez-nous sur nostrcompass.org.&lt;/p></content:encoded></item><item><title>Nostr Compass #20</title><link>https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/</guid><description>&lt;p>Bienvenue à nouveau sur Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#gitworkshop-livre-la-fusion-de-pr-dans-le-navigateur-le-suivi-de-depots-et-un-explorateur-git-econome-en-bande-passante">GitWorkshop&lt;/a> transforme git-over-Nostr en une surface de revue de code plus complète avec un bouton de fusion de PR dans le navigateur, les Étoiles et le suivi de dépôts, un explorateur git économe en bande passante, des commentaires de revue en ligne de kind &lt;code>1111&lt;/code>, et un état de notifications multi-appareils chiffré. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#routstrd-lance-un-routeur-local-pour-l-inference-sur-nostr">Routstrd&lt;/a> lance un démon local qui découvre les fournisseurs de modèles via des annonces Nostr de kind &lt;code>38421&lt;/code> et les paie avec Cashu. Les sorties étiquetées incluent &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#ngit-v242-corrige-la-detection-du-relais-grasp-pour-les-soumissions-de-pr">ngit v2.4.2&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#wisp-v100-sort-de-la-beta">Wisp v1.0.0&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#grain-v052-corrige-le-blocage-websocket-v053-poursuit-le-polissage">grain v0.5.2 et v0.5.3&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#mostro-core-v0100-et-mostro-mobile-v125-adoptent-la-double-cle-gift-wrap-nip-59">Mostro Core v0.10.0 et Mostro Mobile v1.2.5&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#marmot-ts-v050-livre-des-keypackages-adressables">marmot-ts v0.5.0&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#cruxcoach-v013-livre-une-sauvegarde-chiffree-des-donnees-d-escalade-avec-nostr-et-blossom">CruxCoach v0.1.3&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#meiso-v130-ajoute-les-sous-taches-les-pieces-jointes-blossom-et-l-etiquetage-nip-89">Meiso v1.3.0&lt;/a>, NoorNote, Nostria, Nostr Calendar, nos2x-fox, applesauce, nostr-double-ratchet et plus. Les changements non publiés couvrent &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#amethyst-fait-progresser-les-salles-audio-nests-avec-des-tests-d-interoperabilite-moq">Amethyst Nests&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#nostream-ajoute-le-support-de-la-liste-de-relais-nip-65-et-les-paiements-nwc">nostream NIP-65 et NWC&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#fips-ajoute-le-bootstrap-udpnat-base-sur-nostr">le bootstrap udp:nat basé sur Nostr de FIPS&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#strfry-ajoute-une-observabilite-par-connexion">l&amp;rsquo;observabilité de strfry&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#sprout-ajoute-l-attestation-de-proprietaire-et-le-support-multi-espaces-de-travail">les attestations de propriétaire de Sprout&lt;/a> et &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#zap-cooking-ajoute-les-packs-de-recettes-les-demandes-de-suppression-et-la-connexion-bunker">les packs de recettes de Zap Cooking&lt;/a>. Les nouveaux projets suivis incluent &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#nostrord-un-client-nip-29-construit-avec-kotlin-multiplatform-et-wasm">Nostrord&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#clave-apporte-la-signature-a-distance-nip-46-sur-ios-via-apns">Clave&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#treasures-geocaching-decentralise-sur-nostr">Treasures&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#smesh-v051-relais-nostr-client-et-signataire-auto-heberges-en-un-seul-stack">smesh&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#surveil-un-constructeur-de-deck-magic-the-gathering-sur-nostr">Surveil&lt;/a>, et &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#ajouts-plus-petits-fundstr-nod-city-deploy-nsite-to-pages-et-null-nostr">des ajouts plus petits&lt;/a>. La rétrospective de fin de mois couvre les avrils de Nostr de 2021 à 2026.&lt;/p></description><content:encoded>&lt;p>Bienvenue à nouveau sur Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#gitworkshop-livre-la-fusion-de-pr-dans-le-navigateur-le-suivi-de-depots-et-un-explorateur-git-econome-en-bande-passante">GitWorkshop&lt;/a> transforme git-over-Nostr en une surface de revue de code plus complète avec un bouton de fusion de PR dans le navigateur, les Étoiles et le suivi de dépôts, un explorateur git économe en bande passante, des commentaires de revue en ligne de kind &lt;code>1111&lt;/code>, et un état de notifications multi-appareils chiffré. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#routstrd-lance-un-routeur-local-pour-l-inference-sur-nostr">Routstrd&lt;/a> lance un démon local qui découvre les fournisseurs de modèles via des annonces Nostr de kind &lt;code>38421&lt;/code> et les paie avec Cashu. Les sorties étiquetées incluent &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#ngit-v242-corrige-la-detection-du-relais-grasp-pour-les-soumissions-de-pr">ngit v2.4.2&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#wisp-v100-sort-de-la-beta">Wisp v1.0.0&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#grain-v052-corrige-le-blocage-websocket-v053-poursuit-le-polissage">grain v0.5.2 et v0.5.3&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#mostro-core-v0100-et-mostro-mobile-v125-adoptent-la-double-cle-gift-wrap-nip-59">Mostro Core v0.10.0 et Mostro Mobile v1.2.5&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#marmot-ts-v050-livre-des-keypackages-adressables">marmot-ts v0.5.0&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#cruxcoach-v013-livre-une-sauvegarde-chiffree-des-donnees-d-escalade-avec-nostr-et-blossom">CruxCoach v0.1.3&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#meiso-v130-ajoute-les-sous-taches-les-pieces-jointes-blossom-et-l-etiquetage-nip-89">Meiso v1.3.0&lt;/a>, NoorNote, Nostria, Nostr Calendar, nos2x-fox, applesauce, nostr-double-ratchet et plus. Les changements non publiés couvrent &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#amethyst-fait-progresser-les-salles-audio-nests-avec-des-tests-d-interoperabilite-moq">Amethyst Nests&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#nostream-ajoute-le-support-de-la-liste-de-relais-nip-65-et-les-paiements-nwc">nostream NIP-65 et NWC&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#fips-ajoute-le-bootstrap-udpnat-base-sur-nostr">le bootstrap udp:nat basé sur Nostr de FIPS&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#strfry-ajoute-une-observabilite-par-connexion">l&amp;rsquo;observabilité de strfry&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#sprout-ajoute-l-attestation-de-proprietaire-et-le-support-multi-espaces-de-travail">les attestations de propriétaire de Sprout&lt;/a> et &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#zap-cooking-ajoute-les-packs-de-recettes-les-demandes-de-suppression-et-la-connexion-bunker">les packs de recettes de Zap Cooking&lt;/a>. Les nouveaux projets suivis incluent &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#nostrord-un-client-nip-29-construit-avec-kotlin-multiplatform-et-wasm">Nostrord&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#clave-apporte-la-signature-a-distance-nip-46-sur-ios-via-apns">Clave&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#treasures-geocaching-decentralise-sur-nostr">Treasures&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#smesh-v051-relais-nostr-client-et-signataire-auto-heberges-en-un-seul-stack">smesh&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#surveil-un-constructeur-de-deck-magic-the-gathering-sur-nostr">Surveil&lt;/a>, et &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#ajouts-plus-petits-fundstr-nod-city-deploy-nsite-to-pages-et-null-nostr">des ajouts plus petits&lt;/a>. La rétrospective de fin de mois couvre les avrils de Nostr de 2021 à 2026.&lt;/p>
&lt;h2 id="articles-principaux">Articles principaux&lt;/h2>
&lt;h3 id="gitworkshop-livre-la-fusion-de-pr-dans-le-navigateur-le-suivi-de-dépôts-et-un-explorateur-git-économe-en-bande-passante">GitWorkshop livre la fusion de PR dans le navigateur, le suivi de dépôts et un explorateur git économe en bande passante&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev">GitWorkshop&lt;/a>, la couche de collaboration web de Dan Conway pour &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> git-over-Nostr, a livré une sortie majeure cette semaine qui rapproche beaucoup le workflow de ce que les développeurs attendent de GitHub ou GitLab, tout en gardant les commentaires, les listes de dépôts et les notifications à l&amp;rsquo;intérieur d&amp;rsquo;événements Nostr signés.&lt;/p>
&lt;p>L&amp;rsquo;ajout phare est un bouton de fusion de PR dans le navigateur attendu depuis longtemps pour les dépôts utilisant des relais GRASP. La sortie ajoute également les Étoiles et le suivi de dépôts construits sur les réactions et les listes &lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a>, avec des ensembles de dépôts épinglés publiés en tant qu&amp;rsquo;événements de kind &lt;code>10617&lt;/code> qui pointent vers des annonces de dépôts de kind &lt;code>30617&lt;/code> via des balises &lt;code>a&lt;/code> ordonnées. Les pages de profil peuvent maintenant présenter une liste portable de dépôts.&lt;/p>
&lt;p>Un explorateur git économe en bande passante remplace le clone superficiel précédent dans le navigateur. Le nouvel explorateur s&amp;rsquo;appuie sur le protocole client/serveur git sous-jacent sur lequel GRASP se construit, il peut donc gérer de grands dépôts sans forcer le navigateur à récupérer un pack complet. La recherche couvre maintenant les noms d&amp;rsquo;utilisateur et les métadonnées de dépôt, alimentée par &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a> et une implémentation de relais &lt;code>ngit-indexer&lt;/code> qui découvre et synchronise les annonces de dépôts à travers le réseau. Un workflow de création de dépôt dans le navigateur complète le chemin de découverte et d&amp;rsquo;onboarding.&lt;/p>
&lt;p>L&amp;rsquo;outillage de revue est reconstruit autour d&amp;rsquo;un onglet Fichiers modifiés, d&amp;rsquo;un visualiseur de diff par patch, et d&amp;rsquo;un ensemble de nouvelles primitives expérimentales. Les commentaires de revue de code en ligne utilisent le kind &lt;code>1111&lt;/code>, construit sur &lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">NIP-22&lt;/a> : chaque commentaire pointe vers un chemin de fichier (balise &lt;code>f&lt;/code>), un SHA de commit (balise &lt;code>c&lt;/code>), et une plage de lignes sélectionnées (balise &lt;code>line&lt;/code>) afin qu&amp;rsquo;un client puisse rendre le commentaire à la bonne position dans un diff. Un deuxième niveau de primitives expérimentales est autorisé par l&amp;rsquo;auteur et les mainteneurs du dépôt et utilise les étiquettes &lt;a href="https://github.com/nostr-protocol/nips/blob/master/32.md">NIP-32&lt;/a> : renommer un sujet d&amp;rsquo;Issue ou de PR après soumission, ajouter des hashtags après soumission, épingler une CoverNote versionnée en haut d&amp;rsquo;une PR ou d&amp;rsquo;une Issue pour un résumé modifiable, et marquer les sous-fils de discussion de code en ligne comme résolus. Les événements Verdict et les blocs &lt;code>suggestion&lt;/code> restent en projet et n&amp;rsquo;ont pas encore été livrés.&lt;/p>
&lt;p>L&amp;rsquo;état des notifications entre appareils est également synchronisé via Nostr, mais avec une touche préservant la vie privée. GitWorkshop génère une paire de clés dédiée aux notifications, chiffre cette nsec et la stocke à l&amp;rsquo;intérieur d&amp;rsquo;un événement de kind &lt;code>30078&lt;/code>. La nsec des notifications signe ensuite les événements d&amp;rsquo;état de notification réels. L&amp;rsquo;indirection empêche le signataire principal de l&amp;rsquo;utilisateur d&amp;rsquo;être spammé avec des demandes fréquentes de chiffrement et déchiffrement pour chaque action de lecture ou d&amp;rsquo;archivage, et elle empêche les observateurs extérieurs de voir facilement quand un utilisateur touche à son état de notification. Un utilisateur peut synchroniser l&amp;rsquo;état de lecture et d&amp;rsquo;archivage entre les appareils ; les relais ne voient que des blobs chiffrés.&lt;/p>
&lt;h3 id="routstrd-lance-un-routeur-local-pour-linférence-sur-nostr">Routstrd lance un routeur local pour l&amp;rsquo;inférence sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/routstr/routstrd">Routstrd&lt;/a> est un nouveau démon TypeScript qui donne aux outils locaux un point de terminaison compatible OpenAI et route chaque requête vers un fournisseur &lt;a href="https://routstr.com">Routstr&lt;/a> concurrent. Le démon découvre les fournisseurs via des annonces Nostr de kind &lt;code>38421&lt;/code> définies dans la spécification RIP-02 de Routstr. Il note ensuite les fournisseurs selon le prix, la confiance et les performances récentes sous RIP-06 et envoie chaque requête à la meilleure option actuelle.&lt;/p>
&lt;p>Le paiement passe par un portefeuille Cashu local géré par cocod et alimenté avec Lightning. Cela donne au client un chemin de règlement dénommé en sats tout en gardant la découverte des fournisseurs publique et sans permission via les relais Nostr. Si un fournisseur échoue pendant une session, Routstrd peut se rabattre sur le nœud classé suivant. Le chemin d&amp;rsquo;installation est &lt;code>bun install -g routstrd&lt;/code>, suivi de &lt;code>routstrd onboard&lt;/code> pour la configuration du portefeuille et des relais.&lt;/p>
&lt;p>L&amp;rsquo;organisation &lt;a href="https://github.com/routstr">Routstr&lt;/a> plus large maintient le démon, le logiciel de nœud Python (&lt;code>routstr-core&lt;/code>), une UI de chat et les spécifications de protocole. Pour les utilisateurs, le port local devient l&amp;rsquo;interface stable : les outils compatibles OpenAI existants pointent vers Routstrd, tandis que le démon gère la découverte des fournisseurs, le routage et le paiement.&lt;/p>
&lt;h2 id="sorties-étiquetées">Sorties étiquetées&lt;/h2>
&lt;h3 id="ngit-v242-corrige-la-détection-du-relais-grasp-pour-les-soumissions-de-pr">ngit v2.4.2 corrige la détection du relais GRASP pour les soumissions de PR&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/DanConwayDev/ngit-cli">ngit&lt;/a> a livré &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.2">v2.4.2&lt;/a> avec un correctif pour la détection du serveur GRASP du dépôt, gardant la soumission de PR sur le chemin heureux lorsqu&amp;rsquo;une proposition utilise le kind PR. Notez que ngit utilise actuellement par défaut le kind &lt;code>Patch&lt;/code> pour la plupart des changements sauf s&amp;rsquo;ils sont volumineux ; le mainteneur travaille à changer le défaut. &lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.1">v2.4.1&lt;/a>, livré plus tôt dans la semaine, a corrigé les erreurs &lt;code>fatal&lt;/code> lors du clone et du fetch quand les données git d&amp;rsquo;une PR ouverte n&amp;rsquo;étaient pas disponibles sur les serveurs git spécifiés par le dépôt.&lt;/p>
&lt;h3 id="wisp-v100-sort-de-la-bêta">Wisp v1.0.0 sort de la bêta&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, un client Android Kotlin et Jetpack Compose axé sur le routage des relais, la vie privée et une petite UI native, a livré &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.0">v1.0.0&lt;/a> et enchaîné avec &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.2">v1.0.2&lt;/a>. Le jalon 1.0.0 rassemble le bascule de dénomination fiat Normie Mode, le fil Pour Vous, la configuration de groupe basée sur les relais &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> et la diffusion de listes de relais &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> couvertes dans &lt;a href="https://nostrcompass.org/fr/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 ajoute le support de taille de page 16 Ko d&amp;rsquo;Android 15, un onglet de scan QR dans le tiroir, un bouton de téléchargement pour les contrôles vidéo en ligne et des correctifs de performance de la liste de notifications.&lt;/p>
&lt;h3 id="grain-v052-corrige-le-blocage-websocket-v053-poursuit-le-polissage">grain v0.5.2 corrige le blocage WebSocket, v0.5.3 poursuit le polissage&lt;/h3>
&lt;p>&lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>, le relais Go de 0ceanSlim, a coupé &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.2">v0.5.2&lt;/a> comme correctif critique pour un blocage WebSocket introduit dans v0.5.0, puis a enchaîné avec &lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.3">v0.5.3&lt;/a>. Le blocage causait le figeage des connexions sous certains chemins de filtre et WebSocket, les opérateurs sur v0.5.1 ou v0.5.0 devraient donc mettre à niveau. grain suit toutes les catégories majeures d&amp;rsquo;événements Nostr, expose les informations de relais NIP-11, prend en charge le contrôle d&amp;rsquo;accès par liste blanche/noire, les limites de taux par kind, un tableau de bord web et une bibliothèque cliente Go ajoutée dans la ligne v0.5.x.&lt;/p>
&lt;h3 id="mostro-core-v0100-et-mostro-mobile-v125-adoptent-la-double-clé-gift-wrap-nip-59">Mostro Core v0.10.0 et Mostro Mobile v1.2.5 adoptent la double clé gift wrap NIP-59&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> ajoute le nouveau module gift-wrap &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> avec identité séparée et clés de trade. Le code de transport précédent utilisait une clé d&amp;rsquo;identité unique à la fois pour l&amp;rsquo;identité de trade et pour le gift wrapping. v0.10.0 sépare l&amp;rsquo;identité de trade stable de la clé de wrapping éphémère, afin que chaque trade puisse utiliser une nouvelle clé de transport tout en préservant l&amp;rsquo;identité nécessaire au protocole de trade. L&amp;rsquo;intégration du démon arrive via &lt;a href="https://github.com/MostroP2P/mostro/pull/718">Mostro PR #718&lt;/a>, et &lt;a href="https://github.com/MostroP2P/mostro-cli/pull/165">mostro-cli PR #165&lt;/a> apporte la même migration au client en ligne de commande.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.5">Mostro Mobile v1.2.5&lt;/a> est livré aux côtés du travail de protocole. &lt;a href="https://github.com/MostroP2P/mobile/pull/581">PR #581&lt;/a> permet aux preneurs de filtrer les offres selon l&amp;rsquo;âge du compte du maker, donnant aux utilisateurs un moyen d&amp;rsquo;éviter les comptes maker nouvellement créés dans le carnet d&amp;rsquo;ordres. &lt;a href="https://github.com/MostroP2P/mobile/pull/580">PR #580&lt;/a> corrige les étiquettes de rôle sur les détails des commandes annulées, et &lt;a href="https://github.com/MostroP2P/mobile/pull/576">PR #576&lt;/a> nettoie les boutons d&amp;rsquo;annulation coopérative.&lt;/p>
&lt;h3 id="marmot-ts-v050-livre-des-keypackages-adressables">marmot-ts v0.5.0 livre des KeyPackages adressables&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a> a coupé &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 première sortie planifiée avec changements incompatibles pour le client TypeScript &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/68">PR #68&lt;/a> ajoute le support des KeyPackages adressables : &lt;code>KeyPackageManager&lt;/code> peut maintenant gérer à la fois les événements KeyPackage legacy de kind &lt;code>443&lt;/code> et les nouveaux de kind &lt;code>30443&lt;/code>. La sortie supprime &lt;code>KeyPackageStore&lt;/code> et les classes de stockage d&amp;rsquo;état de groupe, en les remplaçant par des stockages clé-valeur génériques passés à &lt;code>KeyPackageManager&lt;/code> et &lt;code>MarmotGroup&lt;/code>. Elle déplace également la gestion des invitations et des groupes sur &lt;code>MarmotClient.invites&lt;/code> et &lt;code>MarmotClient.groups&lt;/code>, donc les intégrateurs directs ont besoin de changements de constructeur et de stockage avant la mise à niveau.&lt;/p>
&lt;h3 id="cruxcoach-v013-livre-une-sauvegarde-chiffrée-des-données-descalade-avec-nostr-et-blossom">CruxCoach v0.1.3 livre une sauvegarde chiffrée des données d&amp;rsquo;escalade avec Nostr et Blossom&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/CruxCoach/CruxCoach">CruxCoach&lt;/a> est une nouvelle application Android open source pour les grimpeurs de Kilter Board. La Kilter Board est un mur d&amp;rsquo;entraînement interactif dont les prises s&amp;rsquo;allument via Bluetooth pour afficher les voies. L&amp;rsquo;application a été lancée le 14 avril et a atteint &lt;a href="https://codeberg.org/CruxCoach/CruxCoach/releases/tag/v0.1.3">v0.1.3&lt;/a> le 26 avril.&lt;/p>
&lt;p>v0.1.3 ajoute la sauvegarde cloud chiffrée en opt-in. Le compte CruxCoach d&amp;rsquo;un utilisateur est une paire de clés Nostr, et la clé privée sert aussi d&amp;rsquo;entrée à la clé de chiffrement de sauvegarde locale. L&amp;rsquo;application chiffre les données d&amp;rsquo;escalade sur l&amp;rsquo;appareil et miroite le chiffré sur les serveurs de stockage Blossom (&lt;code>blossom.primal.net&lt;/code> et &lt;code>nostr.download&lt;/code>). Les actions de suppression distante appellent le chemin de nettoyage Blossom. Au-delà de la sauvegarde, CruxCoach utilise la signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> pour le support d&amp;rsquo;Amber, les DM privés &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> pour le contact avec le développeur dans l&amp;rsquo;application, les listes de relais &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> pour la découverte des relais, et la bibliothèque &lt;a href="https://github.com/vitorpamplona/quartz">Quartz&lt;/a> de Vitor Pamplona pour la plomberie Nostr. Les utilisateurs peuvent l&amp;rsquo;installer via Zapstore ou les APKs Codeberg directs.&lt;/p>
&lt;h3 id="meiso-v130-ajoute-les-sous-tâches-les-pièces-jointes-blossom-et-létiquetage-nip-89">Meiso v1.3.0 ajoute les sous-tâches, les pièces jointes Blossom et l&amp;rsquo;étiquetage NIP-89&lt;/h3>
&lt;p>&lt;a href="https://github.com/higedamc/meiso">Meiso&lt;/a> est un gestionnaire de tâches Flutter minimaliste pour Android qui stocke les tâches en tant que données d&amp;rsquo;application chiffrées &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> de kind &lt;code>30078&lt;/code> sur les relais Nostr. &lt;a href="https://github.com/higedamc/meiso/releases/tag/v1.3.0">v1.3.0&lt;/a>, publié le 6 avril, ajoute les sous-tâches avec des relations parent/enfant, des liens de tâches pour bloque/bloqué-par/lié-à/dupliqué-de, les pièces jointes image via les points de terminaison d&amp;rsquo;upload de fichier HTTP Blossom et &lt;a href="https://nostrcompass.org/fr/topics/nip-96/">NIP-96&lt;/a>, une balise &lt;code>client&lt;/code> d&amp;rsquo;application recommandée &lt;a href="https://github.com/nostr-protocol/nips/blob/master/89.md">NIP-89&lt;/a> sur les événements publiés, et un outil de synchronisation en ligne de commande Go. v1.3.0 corrige aussi le comportement des relais au démarrage à froid et la réutilisation du client Amber.&lt;/p>
&lt;h3 id="noornote-nostria-nostr-calendar-nos2x-fox-et-sorties-de-bibliothèques">NoorNote, Nostria, Nostr Calendar, nos2x-fox, et sorties de bibliothèques&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> a publié &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>, et &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.9">v0.8.9&lt;/a>. Ces sorties corrigent la gestion des clics sur les images et vidéos dans les reposts cités, ajoutent le support lightbox pour les images d&amp;rsquo;articles long-form, et corrigent l&amp;rsquo;écran de démarrage vide sur bureau. &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> a coupé &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>, et &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.31">v3.1.31&lt;/a>, ajoutant la compression d&amp;rsquo;image dans l&amp;rsquo;éditeur d&amp;rsquo;article, un bascule USD du portefeuille, des contrôles de carte promotionnelle, le support PDF et le polissage de la disposition 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> découple la publication d&amp;rsquo;événements de calendrier de la gestion de la liste de calendriers et corrige le suivi des invitations. &lt;a href="https://github.com/diegogurpegui/nos2x-fox/releases/tag/v1.19.0">nos2x-fox v1.19.0&lt;/a> ajoute des délais d&amp;rsquo;autorisation personnalisés pour les octrois de signature de navigateur Firefox NIP-07. &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.97">nostr-double-ratchet v0.0.97&lt;/a> livre de nouveaux binaires. &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> monte &lt;code>NostrSessionProvider&lt;/code> par défaut, et &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/535">nostr-tools PR #535&lt;/a> ajoute le support de l&amp;rsquo;analyse multi-relais pour les chaînes de wallet-connect NIP-47.&lt;/p>
&lt;p>Tard dans la semaine, &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre1">Amber v6.1.0-pre1&lt;/a> a livré une pré-version avec une meilleure disposition connect-new-app, des correctifs du dialogue de signataire, une gestion améliorée des permissions de notification, et une sélection de compte refactorisée. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.14">nostr-vpn v0.3.14&lt;/a> a coupé une nouvelle version avec des artefacts macOS Apple Silicon, Linux et Windows. &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.8">Bitcredit Core v0.5.7-hotfix-1 et v0.5.8&lt;/a> ont livré des correctifs consécutifs pour un problème de validation de bloc orphelin. &lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">Surveil v0.1.6&lt;/a> a apporté un polissage de l&amp;rsquo;UI mobile et une page À propos revue ; le projet lui-même est présenté &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-29-newsletter/#surveil-un-constructeur-de-deck-magic-the-gathering-sur-nostr">ci-dessous&lt;/a>.&lt;/p>
&lt;h3 id="applesauce-600-supprime-les-usines-dévénements-legacy-et-ajoute-lanalyse-duri-blossom">applesauce 6.0.0 supprime les usines d&amp;rsquo;événements legacy et ajoute l&amp;rsquo;analyse d&amp;rsquo;URI Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/applesauce">applesauce&lt;/a>, la boîte à outils Nostr TypeScript de hzrd149, a livré un train de sortie 6.0.0 à travers le monorepo. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.0.0">applesauce-core@6.0.0&lt;/a> supprime la classe legacy &lt;code>EventFactory&lt;/code> et les anciens helpers &lt;code>buildEvent&lt;/code>, &lt;code>modifyEvent&lt;/code> et &lt;code>createEvent&lt;/code>, poussant les appelants vers les nouvelles classes d&amp;rsquo;usine dans &lt;code>applesauce-core/factories&lt;/code> et &lt;code>applesauce-common&lt;/code>. Elle ajoute aussi la gestion des adresses IP et localhost à l&amp;rsquo;analyse de liens, les expressions régulières d&amp;rsquo;URI Blossom BUD-10, et de nouveaux helpers observables tels que &lt;code>timeoutWithIgnore&lt;/code>, &lt;code>combineLatestBy&lt;/code>, &lt;code>combineLatestByIndex&lt;/code> et &lt;code>combineLatestByKey&lt;/code>.&lt;/p>
&lt;p>Les sorties au niveau des packages complètent les pièces spécifiques à Nostr. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-content%406.0.0">applesauce-content@6.0.0&lt;/a> ajoute des nœuds URI Blossom BUD-10 pour le texte et le Markdown, donnant aux moteurs de rendu un moyen de première classe d&amp;rsquo;analyser les références Blossom dans le contenu. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.0.0">applesauce-actions@6.0.0&lt;/a> ajoute des classes d&amp;rsquo;usine de base pour les listes NIP-51 couvrant les relais, les utilisateurs et les éléments, rendant la construction de listes moins 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> expose &lt;code>WalletConnect.connectURI&lt;/code>, afin que les applications puissent accéder directement à un URI wallet-connect NIP-47 existant.&lt;/p>
&lt;h2 id="changements-non-publiés">Changements non publiés&lt;/h2>
&lt;h3 id="amethyst-fait-progresser-les-salles-audio-nests-avec-des-tests-dinteropérabilité-moq">Amethyst fait progresser les salles audio Nests avec des tests d&amp;rsquo;interopérabilité MoQ&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> a fusionné plusieurs PRs axées sur Nests cette semaine, en s&amp;rsquo;appuyant sur la pile de salle audio &lt;a href="https://datatracker.ietf.org/group/moq/about/">Media over QUIC&lt;/a> de la semaine dernière. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2622">PR #2622&lt;/a> ajoute un harnais d&amp;rsquo;interopérabilité inter-clients qui exerce le client MoQ Amethyst contre l&amp;rsquo;implémentation web de référence. L&amp;rsquo;objectif est d&amp;rsquo;attraper les divergences au niveau du fil entre Android/navigateur avant que les utilisateurs ne les rencontrent. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2625">PR #2625&lt;/a> améliore le focus sur l&amp;rsquo;orateur en picture-in-picture et le statut de connexion, tandis que &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2620">PR #2620&lt;/a> clarifie les avatars, l&amp;rsquo;état de mise en sourdine et l&amp;rsquo;état de parole dans la grille des participants. Tard dans la semaine, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2634">PR #2634&lt;/a> corrige le rembourrage IME et les encarts de fenêtre dans la vue Nest en plein écran et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2635">PR #2635&lt;/a> ajoute un filtrage de fraîcheur basé sur la présence au fil Nests. Séparément, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2627">PR #2627&lt;/a> supprime l&amp;rsquo;implémentation C secp256k1 personnalisée d&amp;rsquo;Amethyst et migre vers &lt;code>libschnorr256k1&lt;/code>.&lt;/p>
&lt;h3 id="nostream-ajoute-le-support-de-la-liste-de-relais-nip-65-et-les-paiements-nwc">nostream ajoute le support de la liste de relais NIP-65 et les paiements NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a> a fusionné trois PRs notables après le sprint de relais de 53 PRs de la semaine dernière. Le support des métadonnées de liste de relais &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> arrive dans &lt;a href="https://github.com/Cameri/nostream/pull/585">PR #585&lt;/a>, afin que le relais puisse indexer et servir les événements de liste de relais de kind &lt;code>10002&lt;/code>. Un processeur de paiements Nostr Wallet Connect suit dans &lt;a href="https://github.com/Cameri/nostream/pull/539">PR #539&lt;/a>, ajoutant un chemin de paiement au relais. Le nettoyage des connexions s&amp;rsquo;améliore dans &lt;a href="https://github.com/Cameri/nostream/pull/438">PR #438&lt;/a>, qui ferme un bug de connexion morte où les sockets avec des abonnements actifs n&amp;rsquo;étaient pas récupérés, causant une dérive des comptages d&amp;rsquo;abonnements sur les instances de longue durée.&lt;/p>
&lt;h3 id="fips-ajoute-le-bootstrap-udpnat-basé-sur-nostr">FIPS ajoute le bootstrap udp:nat basé sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, le Free Internetworking Peering System précédemment couvert dans &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a> et &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>, a fusionné &lt;a href="https://github.com/jmcorgan/fips/pull/53">PR #53&lt;/a> avec le bootstrap &lt;code>udp:nat&lt;/code> basé sur Nostr. Le changement permet aux nœuds de publier des annonces Nostr, d&amp;rsquo;échanger une signalisation offer/answer chiffrée, de découvrir les adresses publiques via STUN, d&amp;rsquo;effectuer un UDP hole punching, et de passer le socket poinçonné dans la pile de transport FIPS normale. L&amp;rsquo;implémentation lie les identités de charge utile de signal à l&amp;rsquo;expéditeur Nostr réel, interroge les relais DM et d&amp;rsquo;annonce configurés pour la recherche d&amp;rsquo;inbox, et annule les transferts de traversée adoptés en échec afin que les transports UDP orphelins ne restent pas actifs. C&amp;rsquo;est le travail d&amp;rsquo;annonce Nostr et de traversée NAT à suivre dans le dépôt canonique, &lt;code>jmcorgan/fips&lt;/code>.&lt;/p>
&lt;h3 id="strfry-ajoute-une-observabilité-par-connexion">strfry ajoute une observabilité par connexion&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> a fusionné &lt;a href="https://github.com/hoytech/strfry/pull/214">PR #214&lt;/a>, ajoutant une observabilité par connexion et des métriques au niveau de la connexion exportables via Prometheus. &lt;a href="https://github.com/hoytech/strfry/pull/204">PR #204&lt;/a> normalise les étiquettes Prometheus, et &lt;a href="https://github.com/hoytech/strfry/pull/215">PR #215&lt;/a> ajoute une section Intégrations Communautaires à la documentation couvrant les projets d&amp;rsquo;identité Namecoin construits sur strfry.&lt;/p>
&lt;h3 id="sprout-ajoute-lattestation-de-propriétaire-et-le-support-multi-espaces-de-travail">Sprout ajoute l&amp;rsquo;attestation de propriétaire et le support multi-espaces de travail&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, le client Nostr de Block, a fusionné &lt;a href="https://github.com/block/sprout/pull/406">PR #406&lt;/a> implémentant NIP-OA (Owner Attestation). La fonctionnalité donne à un agent autonome une preuve cryptographique qu&amp;rsquo;un pubkey humain spécifique a autorisé ses actions. &lt;a href="https://github.com/block/sprout/pull/409">PR #409&lt;/a> ajoute le support multi-espaces de travail à l&amp;rsquo;application de bureau, &lt;a href="https://github.com/block/sprout/pull/411">PR #411&lt;/a> ajoute l&amp;rsquo;autocomplétion &lt;code>#channel&lt;/code> à la composition mobile, et &lt;a href="https://github.com/block/sprout/pull/410">PR #410&lt;/a> ferme une fenêtre de course qui pouvait laisser tomber les messages de canal actif. &lt;a href="https://github.com/block/sprout/pull/413">PR #413&lt;/a> introduit NIP-RS pour la synchronisation d&amp;rsquo;état de lecture entre appareils, et les suivi &lt;a href="https://github.com/block/sprout/pull/420">PR #420&lt;/a> et &lt;a href="https://github.com/block/sprout/pull/422">PR #422&lt;/a> câblent cet état de lecture dans les badges non lus mobiles.&lt;/p>
&lt;h3 id="zap-cooking-ajoute-les-packs-de-recettes-les-demandes-de-suppression-et-la-connexion-bunker">Zap Cooking ajoute les packs de recettes, les demandes de suppression et la connexion bunker&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a> a fusionné une semaine productive de travail de publication de recettes. Les demandes de suppression &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a> pour les propres Recipe Packs d&amp;rsquo;un utilisateur arrivent dans &lt;a href="https://github.com/zapcooking/frontend/pull/367">PR #367&lt;/a>. La fiabilité de publication s&amp;rsquo;améliore via &lt;a href="https://github.com/zapcooking/frontend/pull/366">PR #366&lt;/a>, qui force chaque nouvelle recette sur le relais garden et ajoute une file d&amp;rsquo;attente de retry pour l&amp;rsquo;ensemble de recettes partagé. La publication en un clic de packs d&amp;rsquo;auteur arrive dans &lt;a href="https://github.com/zapcooking/frontend/pull/365">PR #365&lt;/a>, et &lt;a href="https://github.com/zapcooking/frontend/pull/331">PR #331&lt;/a> ajoute le support de connexion bunker &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="whitenoise-rs-chiffre-sa-base-de-données-locale">Whitenoise-rs chiffre sa base de données locale&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> a fusionné &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/758">PR #758&lt;/a>, ajoutant le chiffrement SQLCipher pour la base de données Whitenoise sur disque. Cela ferme une lacune de sécurité au repos de longue date pour la pile de démons Marmot. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/775">PR #775&lt;/a> expose les capacités requises du groupe, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/772">PR #772&lt;/a> migre les opérations média de groupe vers des &lt;code>MediaOps&lt;/code> détenus par session, et &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/773">PR #773&lt;/a> extrait un support &lt;code>SharedServices&lt;/code> dans le cadre du refactor des opérations de session. Côté mobile, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/577">whitenoise PR #577&lt;/a> active le redémarrage automatique au démarrage pour le service Android en premier plan, corrigeant le cas où le démon ne revenait pas après un redémarrage de l&amp;rsquo;appareil.&lt;/p>
&lt;h2 id="nouvellement-suivis-et-découverts">Nouvellement suivis et découverts&lt;/h2>
&lt;h3 id="nostrord--un-client-nip-29-construit-avec-kotlin-multiplatform-et-wasm">Nostrord : un client NIP-29 construit avec Kotlin Multiplatform et WASM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">Nostrord&lt;/a> est un nouveau client de chat de groupe &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> ciblant le cas d&amp;rsquo;usage de remplacement de Discord. Les groupes vivent sur les relais Nostr avec l&amp;rsquo;adhésion, les rôles, la modération et le contrôle d&amp;rsquo;accès appliqués par le relais, donc l&amp;rsquo;état du groupe est hébergé par le relais NIP-29 sélectionné. Le développeur du client ne contrôle pas de base de données d&amp;rsquo;application séparée pour ces groupes. L&amp;rsquo;application web fonctionne sur &lt;a href="https://web.nostrord.com">web.nostrord.com&lt;/a> et est construite avec Kotlin Multiplatform compilant vers WebAssembly, avec des builds natifs Android, iOS et desktop en développement. Nostrord est bénéficiaire d&amp;rsquo;une subvention &lt;a href="https://opensats.org">OpenSats&lt;/a> et interopère avec les mêmes relais NIP-29 utilisés par Flotilla, Chachi et 0xChat.&lt;/p>
&lt;h3 id="clave-apporte-la-signature-à-distance-nip-46-sur-ios-via-apns">Clave apporte la signature à distance NIP-46 sur iOS via APNs&lt;/h3>
&lt;p>&lt;a href="https://github.com/DocNR/clave">Clave&lt;/a> est un signataire à distance iOS en bêta qui signe les événements Nostr quand l&amp;rsquo;application n&amp;rsquo;est pas ouverte. La clé privée reste dans le trousseau iPhone. Quand un client envoie une demande de signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>, un proxy côté serveur délivre une Apple Push Notification, réveillant une Notification Service Extension pendant jusqu&amp;rsquo;à 30 secondes. Cette extension déchiffre la requête avec le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, signe avec la clé du trousseau et publie la réponse. L&amp;rsquo;enregistrement du token de l&amp;rsquo;appareil utilise l&amp;rsquo;auth HTTP &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> pour empêcher le détournement de token. Clave prend en charge l&amp;rsquo;appairage &lt;code>bunker://&lt;/code> et &lt;code>nostrconnect://&lt;/code>, les niveaux de confiance par client, les remplacements par kind, et a été testé avec Nostur et noStrudel.&lt;/p>
&lt;h3 id="treasures--géocaching-décentralisé-sur-nostr">Treasures : géocaching décentralisé sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/treasures">Treasures&lt;/a> est une plateforme de géocaching où les caches et découvertes sont des événements Nostr signés. Les créateurs de cache publient des événements adressables de kind &lt;code>37516&lt;/code> avec les coordonnées GPS. Les découvreurs enregistrent la découverte en scannant un code QR attaché à la cache physique ; le code encode le pubkey du créateur, la balise &lt;code>d&lt;/code> de la cache et une clé privée de vérification utilisée comme preuve de la visite physique. Les zaps &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a> peuvent circuler des découvreurs aux créateurs de caches, et l&amp;rsquo;application en direct est sur &lt;a href="https://treasures.to">treasures.to&lt;/a>.&lt;/p>
&lt;h3 id="smesh-v051--relais-nostr-client-et-signataire-auto-hébergés-en-un-seul-stack">smesh v0.5.1 : relais Nostr, client et signataire auto-hébergés en un seul stack&lt;/h3>
&lt;p>&lt;a href="https://git.smesh.lol/smesh/smesh">smesh&lt;/a> est une pile Nostr auto-hébergée écrite en Moxie, un langage personnalisé dérivé de Go et TinyGo par mleku. La pile livre un binaire de relais natif avec support HTTP, WebSocket, AUTH, recherche et Blossom ; &lt;code>sm3sh&lt;/code>, un client web compilé en modules ES ; et une extension de signature de navigateur avec signature de navigateur NIP-07 plus support de chiffrement NIP-04 et NIP-44. Le travail récent inclut la messagerie de groupe MLS (RFC 9420) dans v0.5.0, la réconciliation d&amp;rsquo;ensembles negentropy pour la synchronisation de relais, et un moteur de graphe Web of Trust. Le code vit sur la forge auto-hébergée de mleku à &lt;code>git.smesh.lol&lt;/code>, construite avec son propre outil &lt;code>git-web&lt;/code>. Le dépôt connexe &lt;a href="https://git.smesh.lol/smesh/gitea-nostr-auth">gitea-nostr-auth&lt;/a> est un pont OAuth2/OIDC pour Gitea : les utilisateurs s&amp;rsquo;authentifient avec un signataire de navigateur NIP-07, le pont découvre les relais via NIP-65, et Gitea reçoit des revendications d&amp;rsquo;identité OIDC standard.&lt;/p>
&lt;h3 id="surveil--un-constructeur-de-deck-magic-the-gathering-sur-nostr">Surveil : un constructeur de deck Magic: The Gathering sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/surveil">Surveil&lt;/a> est un client Nostr pour les joueurs de Magic: The Gathering qui permet aux utilisateurs de rechercher des cartes, de construire des decks, de scanner des cartes papier sur Android avec l&amp;rsquo;OCR ML Kit sur l&amp;rsquo;appareil, et de partager des decks à travers le réseau. Les decks sont publiés en tant qu&amp;rsquo;événements adressables de kind &lt;code>37381&lt;/code>, et la spécification de l&amp;rsquo;événement de deck est documentée dans le &lt;code>NIP.md&lt;/code> du projet. La couche sociale est construite à partir de primitives Nostr standard : commentaires en fil NIP-22 (kind &lt;code>1111&lt;/code>) portés sur chaque deck, réactions NIP-25 (kind &lt;code>7&lt;/code>), données de profil &lt;a href="https://github.com/nostr-protocol/nips/blob/master/78.md">NIP-78&lt;/a> (kind &lt;code>30078&lt;/code>) pour les accueils de joueurs, fils de suivi de kind &lt;code>3&lt;/code>, et forks qui portent une balise &lt;code>a&lt;/code> de retour au deck original. &lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">v0.1.6&lt;/a> a été livré cette semaine avec un polissage de l&amp;rsquo;UI mobile, des améliorations du compteur de vie, une page À propos revue, et une pastille de relais sur la bannière héros du deck. L&amp;rsquo;application web fonctionne partout où du HTML statique est servi, la version Android est livrée via &lt;a href="https://zapstore.dev">Zapstore&lt;/a>, et les événements de kind &lt;code>37381&lt;/code> sont également indexés nativement par &lt;a href="https://about.ditto.pub/reference">Ditto&lt;/a> comme decks Magic. Le dépôt est sur GitLab à &lt;a href="https://gitlab.com/chad.curtis/surveil">chad.curtis/surveil&lt;/a>.&lt;/p>
&lt;h3 id="ajouts-plus-petits--fundstr-nod-city-deploy-nsite-to-pages-et-null--nostr">Ajouts plus petits : Fundstr, Nod City, deploy-nsite-to-pages et null&amp;ndash;nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ritty65/Fundstr">Fundstr&lt;/a> est une plateforme de financement de créateurs sur Nostr utilisant l&amp;rsquo;ecash Cashu pour les promesses uniques et récurrentes, avec des définitions de paliers de créateurs et des DMs Nostr. &lt;a href="https://nod.city">Nod City&lt;/a> est un site d&amp;rsquo;évaluation de services Bitcoin où les avis sont des événements Nostr signés et les évaluateurs peuvent recevoir des zaps ; aucun dépôt de source publique n&amp;rsquo;a été trouvé. &lt;a href="https://github.com/Origami74/deploy-nsite-to-pages">deploy-nsite-to-pages&lt;/a> est une GitHub Action qui miroite un nsite vers GitHub Pages en utilisant &lt;code>nsyte download&lt;/code>, prenant en charge les nsites racine de kind &lt;code>15128&lt;/code> et nommés de kind &lt;code>35128&lt;/code>. &lt;a href="https://github.com/tami1A84/null--nostr">null&amp;ndash;nostr&lt;/a>, également découvert dans les données NIP-34 de cette semaine, est le client couvert dans la récente vague OpenSats sous le nom Nurunuru ; il prend en charge la messagerie de groupe MLS, Amber, la recherche NIP-50, les posts protégés NIP-70, les badges ProofMode et la distribution Zapstore.&lt;/p>
&lt;p>FIPS n&amp;rsquo;est pas un nouveau projet pour Compass. Il a été couvert dans &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a> et &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>. La base de données pointe maintenant vers le bon dépôt canonique, &lt;a href="https://github.com/jmcorgan/fips">jmcorgan/fips&lt;/a>, et la découverte NIP-34 de cette semaine a également fait surface des miroirs git-over-Nostr connexes tels que &lt;code>fips&lt;/code> et &lt;code>awesome-fips&lt;/code>.&lt;/p>
&lt;h2 id="travail-de-protocole">Travail de protocole&lt;/h2>
&lt;h3 id="mises-à-jour-nip">Mises à jour NIP&lt;/h3>
&lt;p>Propositions et discussions récentes dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnées cette semaine :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-34 dépôts git : suppression de l&amp;rsquo;extension de balise refs inutilisée&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a>) : Supprime une extension de balise &lt;code>refs&lt;/code> de &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> qui était définie mais inutilisée. Le nettoyage réduit l&amp;rsquo;ambiguïté d&amp;rsquo;implémentation pour les outils git-over-Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-34 dépôts git : suppression de la revendication NIP-09 incorrecte&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>) : Supprime une revendication incorrecte selon laquelle les événements de suppression &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a> peuvent réinitialiser l&amp;rsquo;état du dépôt. La suppression NIP-09 est une demande de suppression d&amp;rsquo;événement côté client, pas une machine d&amp;rsquo;état de dépôt. La correction empêche les implémenteurs NIP-34 de traiter les indices de suppression comme des réinitialisations de dépôt faisant autorité.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Travail ouvert et piloté par l&amp;rsquo;implémentation :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Commentaires de revue en ligne de kind &lt;code>1111&lt;/code> de GitWorkshop&lt;/strong> : Le kind de commentaire de revue de code en ligne est documenté dans le &lt;code>NIP.md&lt;/code> de GitWorkshop et est maintenant activement utilisé, mais il n&amp;rsquo;a pas encore été proposé comme NIP formel. Les événements Verdict (kind &lt;code>7321&lt;/code>) et les blocs &lt;code>suggestion&lt;/code> restent en projet et n&amp;rsquo;ont pas encore été livrés. Les retours d&amp;rsquo;implémentation de GitWorkshop et ngit détermineront si les formes deviennent un NIP autonome de revue git ou restent une convention d&amp;rsquo;application superposée sur NIP-34.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Noyau Nostr mail et Nostrmon&lt;/strong> : Deux nouveaux projets de NIPs personnalisés ont circulé cette semaine. &lt;a href="https://njump.me/57d11cdf2f9ed73f7f39d6a7a6012ee3d642584ab11887f96a031f7d00fd9697">Nostr mail core&lt;/a> propose le kind &lt;code>1301&lt;/code> pour le contenu d&amp;rsquo;e-mail RFC 2822, enveloppé avec NIP-59 pour la livraison privée et ponté vers l&amp;rsquo;e-mail legacy via des pubkeys de pont résolues par NIP-05. &lt;a href="https://njump.me/5e9a8cee19d464f5f0322518ac9ccaf2399c69da6572346b4fb12d36acb17a27">Nostrmon&lt;/a> esquisse des kinds d&amp;rsquo;événements adressables pour les régions, les cartes, les créatures, les PNJ, les sauvegardes de joueurs et les objets. Les deux restent des projets personnalisés, pas des NIPs fusionnés.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-67 : Indice de complétude EOSE&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a>) : La proposition continue d&amp;rsquo;itérer sur l&amp;rsquo;ajout d&amp;rsquo;un marqueur de complétude positif à &lt;code>EOSE&lt;/code>, permettant aux relais de distinguer « événements stockés entièrement livrés » des cas EOSE legacy où le relais ne fait aucune revendication de complétude.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="six-avrils-nostr">Six avrils Nostr&lt;/h2>
&lt;p>Avril offre une coupe transversale nette du chemin de développement de Nostr : le document de protocole en 2021, les premiers travaux clients en 2022, la vague d&amp;rsquo;applications post-Damus en 2023, la messagerie privée et le travail git-over-Nostr en 2024, Blossom et le nettoyage des listes de relais en 2025, et les subventions clientes axées sur l&amp;rsquo;adoption en 2026.&lt;/p>
&lt;h3 id="avril-2021--le-document-de-protocole-avant-le-dépôt-nips">Avril 2021 : le document de protocole avant le dépôt NIPs&lt;/h3>
&lt;p>Fiatjaf a publié l&amp;rsquo;article Nostr original, &lt;a href="https://fiatjaf.com/nostr.html">« Notes and Other Stuff Transmitted by Relays »&lt;/a>, le 20 novembre 2020. Ce premier texte contenait déjà la forme centrale qui définit encore le protocole : les utilisateurs signent des événements avec des clés, les publient sur des relais, et lisent depuis les relais qu&amp;rsquo;ils choisissent. Le &lt;a href="https://github.com/nostr-protocol/nostr/commits?since=2021-04-01&amp;amp;until=2021-04-30">journal de commits &lt;code>nostr-protocol/nostr&lt;/code>&lt;/a> ne montre aucun commit entre le 1er et le 30 avril. L&amp;rsquo;activité se trouve de chaque côté : les commits de mars 2021 ont ajouté les premiers liens « nostwitter » et un filtre &lt;code>kind&lt;/code>, tandis que mai 2021 a réutilisé NIP-02 et ajouté la paternité des NIP.&lt;/p>
&lt;p>En avril 2021, il n&amp;rsquo;y avait pas de marché client public, pas de réseau de relais visible, et pas de dépôt NIPs. Le protocole vivait encore comme un petit document et quelques expériences. Nostr n&amp;rsquo;était pas encore devenu un réseau social ou une plateforme de développement. C&amp;rsquo;était encore un modèle relais/clé/événement attendant sa première vague de contributeurs soutenue.&lt;/p>
&lt;h3 id="avril-2022--les-nips-vivaient-encore-dans-le-dépôt-principal">Avril 2022 : les NIPs vivaient encore dans le dépôt principal&lt;/h3>
&lt;p>Avril 2022 fut le dernier mois avant que les NIPs ne sortent du dépôt principal &lt;code>nostr-protocol/nostr&lt;/code>. Comme la scission n&amp;rsquo;avait pas encore eu lieu, le dépôt dédié &lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a> n&amp;rsquo;avait pas d&amp;rsquo;historique de pull requests en avril. Dans le dépôt principal, trois commits d&amp;rsquo;avril ont atterri : &lt;a href="https://github.com/nostr-protocol/nostr/commit/bae286312a233b971bee5429adda7aff41747eb8">« Update readme to add nip12 »&lt;/a> le 8 avril par goswami1999, &lt;a href="https://github.com/nostr-protocol/nostr/commit/4b9e9d123273ba8a5c70d77df46922070c11c11d">« add kinds list »&lt;/a> le 25 avril par jb55, et &lt;a href="https://github.com/nostr-protocol/nostr/commit/759997657f07e0344064228ffe5e93febe85d367">« add js formatting to sample code »&lt;/a> le 28 avril par steliosrammos.&lt;/p>
&lt;p>Le travail client commençait aussi à prendre forme. Les commits Damus d&amp;rsquo;avril 2022 ont ajouté le comportement précoce des salles de chat, la gestion des profils et les icônes d&amp;rsquo;application, tandis que nostr-tools devenait le chemin de bibliothèque JavaScript pour les premiers clients et expériences. Côté protocole, les requêtes de balise génériques NIP-12 ont donné à la recherche de balise une place documentée, la liste des kinds a fait progresser Nostr vers un modèle de registre, et de meilleurs exemples JavaScript ont rendu la spécification plus facile à implémenter pour les auteurs de clients et de bibliothèques. Le 1er mai, fiatjaf a déplacé les NIPs dans le dépôt dédié. Avril 2022 fut le dernier mois de l&amp;rsquo;ère originale mono-dépôt.&lt;/p>
&lt;h3 id="avril-2023--expansion-des-applications-post-damus">Avril 2023 : expansion des applications post-Damus&lt;/h3>
&lt;p>Avril 2023 est arrivé trois mois après que Damus a lancé sur l&amp;rsquo;App Store iOS le 31 janvier 2023, et après que Jack Dorsey ait publié sa clé publique Nostr. Le réseau venait d&amp;rsquo;absorber sa première grande vague de croissance publique. Les clients tels que Damus, Snort, Iris, Coracle et Amethyst étaient actifs, tandis que les opérateurs de relais apprenaient ce qu&amp;rsquo;un graphe social plus grand faisait aux hypothèses de bande passante, spam, recherche et modération.&lt;/p>
&lt;p>Avril 2023 a eu une PR NIPs fusionnée : &lt;a href="https://github.com/nostr-protocol/nips/pull/456">PR #456&lt;/a>, fusionnée le 17 avril, ajoutant des liens d&amp;rsquo;entités bech32 NIP-19 à la gestion d&amp;rsquo;URI NIP-21. Les commits environnants montrent la pression d&amp;rsquo;application derrière le travail de protocole. Avril 2023 a vu des travaux sur &lt;a href="https://github.com/nostr-protocol/nips/commit/8b39976e78f90fe766ad7149e250777cddacbb5e">NIP-45 COUNT&lt;/a>, les marqueurs de zap spécifiques à l&amp;rsquo;événement, &lt;a href="https://github.com/nostr-protocol/nips/commit/bf0a0da6a48b96467172414d8e41dc72b0ca379c">NIP-15 marketplace&lt;/a>, la sémantique de délégation de suppression NIP-26, les métadonnées de fichier NIP-94, la gestion des erreurs de wallet-connect NIP-47, et &lt;a href="https://github.com/nostr-protocol/nips/commit/e91ce3409e1ce8267fc07a21784d2538621267c3">NIP-30 emoji personnalisé&lt;/a>. La liste des contributeurs s&amp;rsquo;était élargie pour inclure fiatjaf, staab, pablof7z, Semisol, CodyTseng, sethforprivacy, mikedilger, AsaiToshiya, alexgleason, martindsq, frbittencourt et arkin0x.&lt;/p>
&lt;p>Damus, Snort, Iris, Coracle et Amethyst n&amp;rsquo;étaient plus des démos autour d&amp;rsquo;une spécification ; c&amp;rsquo;étaient des clients de production traitant l&amp;rsquo;onboarding, les fils, le spam, les zaps, les médias et la sélection de relais. Le travail de protocole d&amp;rsquo;avril 2023 se lit comme le backlog que ces clients ont créé : zaps, marketplaces, métadonnées de fichier, comptage, emoji et liens d&amp;rsquo;identité ont tous poussé la spécification au-delà des simples notes et suivis.&lt;/p>
&lt;h3 id="avril-2024--messagerie-privée-git-over-nostr-et-support-des-mainteneurs">Avril 2024 : messagerie privée, git-over-Nostr et support des mainteneurs&lt;/h3>
&lt;p>Avril 2024 a eu deux fusions de PR NIP. &lt;a href="https://github.com/nostr-protocol/nips/pull/1167">PR #1167&lt;/a>, fusionnée le 10 avril, a corrigé une terminologie confuse dans la signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>, où les clients et les signataires ont besoin d&amp;rsquo;un langage exact pour les actions demandées et autorisées. &lt;a href="https://github.com/nostr-protocol/nips/pull/1108">PR #1108&lt;/a>, fusionnée le 17 avril, a étendu les dépôts git &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> avec des événements de statut, des clarifications, des mainteneurs optionnels, des identifiants de dépôt et des balises de découvrabilité. Cette étape a rendu git-over-Nostr plus pratique pour ngit et plus tard GitWorkshop.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/commit/df30012430c88d49fb5b124992b04d5c61b6338b">NIP-17&lt;/a>, anciennement NIP-24, a atterri le 24 avril en tant que messages gift-wrapped scellés pour les DMs privés et les petits chats de groupe. Le travail sur les clients et bibliothèques a suivi : Amethyst, Primal, Gossip, nostr-tools, NDK et rust-nostr étaient tous actifs dans la même période.&lt;/p>
&lt;p>OpenSats a également annoncé un support à long terme pour les développeurs Nostr en avril 2024 : &lt;a href="https://opensats.org/blog/pablofz7-receives-lts-grant">PabloF7z&lt;/a> le 9 avril, &lt;a href="https://opensats.org/blog/stuart-bowman-receives-lts-grant">Stuart Bowman&lt;/a> le 12 avril, et &lt;a href="https://opensats.org/blog/hzrd149-receives-lts-grant">hzrd149&lt;/a> le 15 avril. Ces subventions ont déplacé le financement des subventions de projets isolés vers la maintenance soutenue des relais, bibliothèques et infrastructure client.&lt;/p>
&lt;h3 id="avril-2025--nettoyage-dense-des-nips-et-formalisation-de-blossom">Avril 2025 : nettoyage dense des NIPs et formalisation de Blossom&lt;/h3>
&lt;p>Avril 2025 fut le mois de protocole le plus dense de cette rétrospective, avec seize PRs NIPs fusionnées. Le mois a commencé avec &lt;a href="https://github.com/nostr-protocol/nips/pull/1846">PR #1846&lt;/a>, ajoutant les transactions et adresses blockchain à NIP-73, et &lt;a href="https://github.com/nostr-protocol/nips/pull/1865">PR #1865&lt;/a>, ajoutant les balises NIP-C0 à la table des balises standardisées. Il a continué avec &lt;a href="https://github.com/nostr-protocol/nips/pull/1801">PR #1801&lt;/a> et &lt;a href="https://github.com/nostr-protocol/nips/pull/1889">PR #1889&lt;/a>, améliorant tous deux les directives de republication de liste de relais de kind &lt;code>10002&lt;/code>, et &lt;a href="https://github.com/nostr-protocol/nips/pull/1879">PR #1879&lt;/a>, qui a rétréci et clarifié &lt;a href="https://nostrcompass.org/fr/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> a ajouté NIP-B7 pour l&amp;rsquo;interaction Blossom, donnant aux clients Nostr et aux serveurs Blossom une couche de coordination canonique après plus d&amp;rsquo;un an de pratique informelle. &lt;a href="https://github.com/nostr-protocol/nips/pull/1051">PR #1051&lt;/a> a déprécié &lt;a href="https://github.com/nostr-protocol/nips/blob/master/26.md">NIP-26&lt;/a>, la spécification de signature d&amp;rsquo;événement déléguée. NIP-26 avait été difficile à implémenter en toute sécurité et était devenu moins attractif à mesure que NIP-46 et d&amp;rsquo;autres modèles de signataire mûrissaient.&lt;/p>
&lt;p>Le reste du mois a combiné nettoyage et expansion d&amp;rsquo;application : &lt;a href="https://github.com/nostr-protocol/nips/pull/1882">PR #1882&lt;/a> a ajouté des champs politique de confidentialité et conditions d&amp;rsquo;utilisation à &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a>, &lt;a href="https://github.com/nostr-protocol/nips/pull/1849">PR #1849&lt;/a> a étendu les signets web de kind &lt;code>39701&lt;/code> sous NIP-B0, &lt;a href="https://github.com/nostr-protocol/nips/pull/1891">PR #1891&lt;/a> a ajouté ce kind de signet au README, et &lt;a href="https://github.com/nostr-protocol/nips/pull/1895">PR #1895&lt;/a> a ajouté les balises standardisées NIP-B0. OpenSats a annoncé sa &lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants">Onzième Vague de Subventions Nostr&lt;/a> le 16 avril, finançant Swae, HAMSTR, Vertex, Nostr Double Ratchet et Nostr Game Engine. Primal, Coracle, noStrudel, nostr-tools, NDK et rust-nostr livraient aussi pendant cette période, donc le nettoyage du protocole se situait à côté du travail actif sur les clients et bibliothèques.&lt;/p>
&lt;h3 id="avril-2026--durcissement-de-nip-34-badges-et-subventions-axées-sur-ladoption">Avril 2026 : durcissement de NIP-34, badges et subventions axées sur l&amp;rsquo;adoption&lt;/h3>
&lt;p>Avril 2026, le mois où ce numéro se termine, a eu quatre PRs NIPs fusionnées. La première fut &lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>, fusionnée le 1er avril, qui a changé les badges de profil &lt;a href="https://github.com/nostr-protocol/nips/blob/master/58.md">NIP-58&lt;/a> au kind &lt;code>10008&lt;/code> et ajouté les ensembles de badges de kind &lt;code>30008&lt;/code>, rendant l&amp;rsquo;attribution de badges et les collections de badges plus composables. Un deuxième changement de convivialité git-over-Nostr est arrivé dans &lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>, fusionnée le 10 avril, ajoutant la sémantique d&amp;rsquo;URL de clone &lt;code>nostr://&lt;/code> à &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a>. Les nettoyages du 25 avril, &lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a> et &lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>, ont supprimé un langage inutilisé et incorrect de NIP-34.&lt;/p>
&lt;p>Les commits connexes affinent les mêmes surfaces. Le 22 avril, fiatjaf a ajouté une liste de serveurs Blossom à NIP-51 et ajusté l&amp;rsquo;édition des métadonnées NIP-29 pour correspondre au comportement de style PUT de Flotilla. Le 26 avril, il a renommé NIP-5A pour plus de clarté. Avril 2026 s&amp;rsquo;est concentré sur rendre les surfaces de protocole déjà utilisées plus faciles à implémenter et plus difficiles à mal interpréter.&lt;/p>
&lt;p>OpenSats a annoncé sa &lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">Seizième Vague de Subventions Nostr&lt;/a> le 8 avril, soutenant Amethyst Desktop, Nostr Mail, Nostrord, Nurunuru (null&amp;ndash;nostr) et un renouvellement HAMSTR : clients de bureau, messagerie de type e-mail, UX de groupe, onboarding japonais et connectivité hors réseau.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Merci d&amp;rsquo;avoir lu Nostr Compass #20. &lt;a href="https://nostr.com">DM-nous sur Nostr&lt;/a> avec des conseils, corrections ou nouveaux projets à couvrir.&lt;/em>&lt;/p></content:encoded></item><item><title>Nostr Compass #19</title><link>https://nostrcompass.org/fr/newsletters/2026-04-22-newsletter/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-04-22-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> livre une grosse vague de travail autour de &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, des communautés &lt;a href="https://nostrcompass.org/fr/topics/nip-72/">NIP-72&lt;/a>, des objectifs de zap &lt;a href="https://nostrcompass.org/fr/topics/nip-75/">NIP-75&lt;/a> et des salons audio sur Media over QUIC. &lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> stabilise l&amp;rsquo;accès internet pay-per-use sur Nostr et Cashu avec &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> clôt une grosse semaine de travail relay autour de &lt;a href="https://nostrcompass.org/fr/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a>, de la compression et du durcissement des requêtes. &lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> publie une pile complète de signature, d&amp;rsquo;identité et d&amp;rsquo;API payante pour Nostr. &lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> poursuit la synchronisation native à Nostr de wallet Lightning, et les suites Formstr, StableKraft, Keep, topaz, WoT Relay et Flotilla complètent les sorties notables. Les deep dives de la semaine couvrent &lt;a href="https://nostrcompass.org/fr/topics/nip-72/">NIP-72&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> livre une grosse vague de travail autour de &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, des communautés &lt;a href="https://nostrcompass.org/fr/topics/nip-72/">NIP-72&lt;/a>, des objectifs de zap &lt;a href="https://nostrcompass.org/fr/topics/nip-75/">NIP-75&lt;/a> et des salons audio sur Media over QUIC. &lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> stabilise l&amp;rsquo;accès internet pay-per-use sur Nostr et Cashu avec &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> clôt une grosse semaine de travail relay autour de &lt;a href="https://nostrcompass.org/fr/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a>, de la compression et du durcissement des requêtes. &lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> publie une pile complète de signature, d&amp;rsquo;identité et d&amp;rsquo;API payante pour Nostr. &lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> poursuit la synchronisation native à Nostr de wallet Lightning, et les suites Formstr, StableKraft, Keep, topaz, WoT Relay et Flotilla complètent les sorties notables. Les deep dives de la semaine couvrent &lt;a href="https://nostrcompass.org/fr/topics/nip-72/">NIP-72&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a>.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="amethyst-livre-la-conformité-mip-de-marmot-les-communautés-nip-72-les-objectifs-de-zap-et-les-salons-audio-moq">Amethyst livre la conformité MIP de Marmot, les communautés NIP-72, les objectifs de zap et les salons audio MoQ&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> a fusionné 57 PRs cette semaine. Les thèmes dominants sont la conformité des groupes chiffrés &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, la prise en charge native des communautés modérées &lt;a href="https://nostrcompass.org/fr/topics/nip-72/">NIP-72&lt;/a>, les objectifs de zap &lt;a href="https://nostrcompass.org/fr/topics/nip-75/">NIP-75&lt;/a> sur les live streams &lt;a href="https://nostrcompass.org/fr/topics/nip-53/">NIP-53&lt;/a> et une nouvelle pile de salons audio reposant sur Media over QUIC.&lt;/p>
&lt;p>Sur Marmot, les &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2462">PR #2462&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2435">#2435&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2436">#2436&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2466">#2466&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2471">#2471&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2477">#2477&lt;/a> et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2493">#2493&lt;/a> ferment progressivement les écarts d&amp;rsquo;interop, de framing MLS, de KeyPackage Relay List et de validation cryptographique. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2488">PR #2488&lt;/a> ajoute aussi &lt;code>amy&lt;/code>, un CLI piloté depuis l&amp;rsquo;implémentation d&amp;rsquo;Amethyst pour les opérations de groupe Marmot et MLS. Côté communautés, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2468">PR #2468&lt;/a> ajoute la création et la modération de communautés &lt;a href="https://nostrcompass.org/fr/topics/nip-72/">NIP-72&lt;/a>. Côté live streaming, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2469">PR #2469&lt;/a> branche les objectifs de zap &lt;a href="https://nostrcompass.org/fr/topics/nip-75/">NIP-75&lt;/a> dans l&amp;rsquo;UI &lt;a href="https://nostrcompass.org/fr/topics/nip-53/">NIP-53&lt;/a>, et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2494">PR #2494&lt;/a> ajoute le transport MoQ et les salons audio en temps réel.&lt;/p>
&lt;h3 id="tollgate-v010-stabilise-laccès-internet-pay-per-use-sur-nostr-et-cashu">TollGate v0.1.0 stabilise l&amp;rsquo;accès internet pay-per-use sur Nostr et Cashu&lt;/h3>
&lt;p>&lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a> a publié &lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0&lt;/a> le 21 avril, premier snapshot tagué de ses spécifications d&amp;rsquo;accès réseau pay-per-use. Le protocole permet à un routeur WiFi, un switch Ethernet ou un partage Bluetooth de publier ses tarifs, d&amp;rsquo;accepter des tokens ecash &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> et de gérer des sessions prépayées sans comptes, sans abonnements et sans KYC.&lt;/p>
&lt;p>La release fixe trois couches : &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/TIP-01.md">TIP-01&lt;/a> pour les événements de base (Advertisement, Session, Notice), &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/TIP-02.md">TIP-02&lt;/a> pour les paiements Cashu, &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/HTTP-01.md">HTTP-01&lt;/a> à HTTP-03 pour l&amp;rsquo;interface HTTP, &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/NOSTR-01.md">NOSTR-01&lt;/a> pour le transport via relays Nostr et &lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/WIFI-01.md">WIFI-01&lt;/a> pour le medium WiFi captive portal. Le nouvel article de sujet &lt;a href="https://nostrcompass.org/fr/topics/tollgate/">TollGate&lt;/a> couvre toute cette pile plus en détail.&lt;/p>
&lt;h3 id="nostream-fusionne-53-prs-pour-nip-45-nip-62-la-compression-et-le-durcissement-des-requêtes">nostream fusionne 53 PRs pour NIP-45, NIP-62, la compression et le durcissement des requêtes&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>, l&amp;rsquo;implémentation relay TypeScript de Cameri, a fusionné 53 PRs en une semaine. &lt;a href="https://github.com/Cameri/nostream/pull/522">PR #522&lt;/a> ajoute le support &lt;code>COUNT&lt;/code> &lt;a href="https://nostrcompass.org/fr/topics/nip-45/">NIP-45&lt;/a>, &lt;a href="https://github.com/Cameri/nostream/pull/544">PR #544&lt;/a> ajoute &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> à la liste de fonctionnalités annoncées, &lt;a href="https://github.com/Cameri/nostream/pull/548">PR #548&lt;/a> étend le schéma de filtre aux tags majuscules &lt;code>#A&lt;/code> à &lt;code>#Z&lt;/code>, et &lt;a href="https://github.com/Cameri/nostream/pull/514">PR #514&lt;/a> ajoute gzip et xz pour l&amp;rsquo;import/export d&amp;rsquo;événements.&lt;/p>
&lt;p>&lt;a href="https://github.com/Cameri/nostream/pull/534">PR #534&lt;/a> ajoute un harness de benchmarks et optimise la traduction filtre-vers-SQL, &lt;a href="https://github.com/Cameri/nostream/pull/524">PR #524&lt;/a> corrige un bug de matching pubkey sur whitelist/blacklist, &lt;a href="https://github.com/Cameri/nostream/pull/553">PR #553&lt;/a> durcit &lt;code>upsertMany&lt;/code> en cas d&amp;rsquo;égalité de &lt;code>created_at&lt;/code>, &lt;a href="https://github.com/Cameri/nostream/pull/493">PR #493&lt;/a> limite la confiance dans &lt;code>X-Forwarded-For&lt;/code> aux proxies déclarés, et &lt;a href="https://github.com/Cameri/nostream/pull/557">PR #557&lt;/a> amène le relay à une parité complète avec &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a>.&lt;/p>
&lt;h2 id="sorties">Sorties&lt;/h2>
&lt;h3 id="primal-android-livre-un-onglet-explore-la-vérification-nip-05-et-un-lecteur-audio">Primal Android livre un onglet Explore, la vérification NIP-05 et un lecteur audio&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> a poussé 11 PRs fusionnées après la refonte du flux de la semaine dernière. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1021">PR #1021&lt;/a> ajoute un onglet Explore construit autour des utilisateurs populaires, des follow packs et de flux curés, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1015">PR #1015&lt;/a> ajoute un éditeur de flux alimenté par le DSL Advanced Search de Primal, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/994">PR #994&lt;/a> ajoute l&amp;rsquo;UI de vérification &lt;a href="https://github.com/nostr-protocol/nips/blob/master/05.md">NIP-05&lt;/a>, et &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/997">PR #997&lt;/a> embarque un lecteur audio in-feed. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1018">PR #1018&lt;/a> ajoute aussi le pairing &lt;code>nostr-connect&lt;/code> &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> depuis le scanner QR du wallet.&lt;/p>
&lt;h3 id="strfry-ajoute-des-métriques-prometheus-sur-le-chemin-décriture-et-corrige-lenveloppe-auth-nip-42">strfry ajoute des métriques Prometheus sur le chemin d&amp;rsquo;écriture et corrige l&amp;rsquo;enveloppe AUTH NIP-42&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> a livré une série d&amp;rsquo;améliorations destinées aux opérateurs. &lt;a href="https://github.com/hoytech/strfry/pull/194">PR #194&lt;/a> ajoute un exporter dédié de métriques Prometheus sur le chemin d&amp;rsquo;écriture et &lt;a href="https://github.com/hoytech/strfry/pull/197">PR #197&lt;/a> journalise les bytes échangés par connexion ainsi que les ratios de compression. &lt;a href="https://github.com/hoytech/strfry/pull/192">PR #192&lt;/a> rend configurable à l&amp;rsquo;exécution la limite de tags de filtre. &lt;a href="https://github.com/hoytech/strfry/pull/201">PR #201&lt;/a> corrige enfin les réponses d&amp;rsquo;échec AUTH &lt;a href="https://github.com/nostr-protocol/nips/blob/master/42.md">NIP-42&lt;/a> pour utiliser l&amp;rsquo;enveloppe &lt;code>OK&lt;/code> prévue par la spécification au lieu de &lt;code>NOTICE&lt;/code>.&lt;/p>
&lt;h3 id="shopstr-durcit-la-sécurité-de-ses-vitrines-à-travers-13-prs">Shopstr durcit la sécurité de ses vitrines à travers 13 PRs&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> a fusionné 13 PRs dominées par des correctifs de sécurité. &lt;a href="https://github.com/shopstr-eng/shopstr/pull/434">PR #434&lt;/a> ferme un trou de JavaScript stocké dans les liens de vitrines, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/417">PR #417&lt;/a> échappe le rendu HTML des policies de boutique, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/418">PR #418&lt;/a> corrige une API de suppression d&amp;rsquo;événements en cache accessible sans auth, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/433">PR #433&lt;/a> exige une authentification pour lire les messages en cache, et plusieurs autres PRs corrigent SSRF, revalidation de remises et robustesse de file de publication.&lt;/p>
&lt;h3 id="nostria-v3126-à-v3128-ajoutent-la-lecture-de-musique-en-arrière-plan-sur-android">Nostria v3.1.26 à v3.1.28 ajoutent la lecture de musique en arrière-plan sur Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> a livré six versions cette semaine, de &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.22">v3.1.22&lt;/a> à &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.28">v3.1.28&lt;/a>. La nouveauté principale de &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.26">v3.1.26&lt;/a> est la lecture musicale en arrière-plan sur Android avec contrôles média dans la barre de notifications et sur l&amp;rsquo;écran verrouillé. &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.27">v3.1.27&lt;/a> et &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.28">v3.1.28&lt;/a> durcissent cette nouvelle surface de service média.&lt;/p>
&lt;h3 id="wisp-v0180-beta-ajoute-le-mode-normie-le-flux-for-you-et-la-configuration-de-groupe-nip-29">Wisp v0.18.0-beta ajoute le mode Normie, le flux For You et la configuration de groupe NIP-29&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> a livré &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.18.0-beta">v0.18.0-beta&lt;/a> le 16 avril. &lt;a href="https://github.com/barrydeen/wisp/pull/462">PR #462&lt;/a> ajoute un mode Normie qui affiche les montants en fiat dans toute l&amp;rsquo;application, &lt;a href="https://github.com/barrydeen/wisp/pull/464">PR #464&lt;/a> revoit l&amp;rsquo;onboarding, &lt;a href="https://github.com/barrydeen/wisp/pull/469">PR #469&lt;/a> ajoute un flux For You, &lt;a href="https://github.com/barrydeen/wisp/pull/471">PR #471&lt;/a> ajoute la configuration de groupes &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> et &lt;a href="https://github.com/barrydeen/wisp/pull/478">PR #478&lt;/a> corrige la séquence AUTH &lt;a href="https://github.com/nostr-protocol/nips/blob/master/42.md">NIP-42&lt;/a> avant les événements de groupe.&lt;/p>
&lt;h3 id="noornote-v084-ajoute-les-posts-programmés-et-les-zaps-sur-live-stream">NoorNote v0.8.4 ajoute les posts programmés et les zaps sur live stream&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a> a livré &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.4">v0.8.4&lt;/a> et &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.5">v0.8.5&lt;/a>. La nouveauté principale est un add-on de posts programmés : l&amp;rsquo;application remet un événement déjà signé à un relay opéré par NoorNote, qui le publie à l&amp;rsquo;heure prévue sans que la clé privée quitte l&amp;rsquo;appareil. La même release ajoute les zaps en un geste depuis les cartes de live streams &lt;a href="https://nostrcompass.org/fr/topics/nip-53/">NIP-53&lt;/a>.&lt;/p>
&lt;h3 id="topaz-v002-livre-un-relay-nostr-pour-android">topaz v0.0.2 livre un relay Nostr pour Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a>, nouveau relay Nostr de &lt;a href="https://github.com/fiatjaf">fiatjaf&lt;/a> qui tourne directement sur téléphone Android, a publié &lt;a href="https://github.com/fiatjaf/topaz/releases/tag/v0.0.2">v0.0.2&lt;/a> le 17 avril. Le projet est encore très étroit en surface mais livre déjà l&amp;rsquo;essentiel : un relay fonctionnel dans un package Android installable.&lt;/p>
&lt;h3 id="stablekraft-v100-livre-sa-première-release-pwa-stable-musique-et-podcast">StableKraft v1.0.0 livre sa première release PWA stable musique-et-podcast&lt;/h3>
&lt;p>&lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a> est une PWA Next.js pour découvrir, organiser et streamer de la musique récupérée depuis des flux de podcasts, avec Nostr pour l&amp;rsquo;auth et les fonctions sociales, et Lightning pour le V4V. L&amp;rsquo;application atteint &lt;a href="https://github.com/ChadFarrow/stablekraft-app/releases/tag/v1.0.0">v1.0.0&lt;/a> le 18 avril. La même semaine, l&amp;rsquo;ingestion des feeds a été durcie avec un cache OPML de 15 minutes et une suppression de XML illégal, puis la fenêtre de reparse nocturne a été réduite de 720 heures à 24 heures.&lt;/p>
&lt;h3 id="niplock-livre-un-gestionnaire-de-mots-de-passe-basé-sur-nip-17">NipLock livre un gestionnaire de mots de passe basé sur NIP-17&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a> est un gestionnaire de mots de passe qui stocke et synchronise les identifiants entre appareils via des messages directs gift-wrapped &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a>. Chaque entrée est un DM NIP-17 envoyé de la clé de l&amp;rsquo;utilisateur à elle-même, ce qui permet la réplication vers n&amp;rsquo;importe quel appareil authentifié avec la même clé. La signature fonctionne avec un &lt;code>nsec&lt;/code> brut, des extensions navigateur comme &lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a> ou &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> via &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>.&lt;/p>
&lt;h3 id="flotilla-budabit-polit-sa-surface-de-dépôt-nip-34">flotilla-budabit polit sa surface de dépôt NIP-34&lt;/h3>
&lt;p>Le fork communautaire Budabit de &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>, a livré plusieurs correctifs de son workflow git-over-nostr &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a>. Les changements restaurent les contrôles de discussion de dépôt, gardent les onglets épinglés visibles sur les pages de détail, chargent les annonces de dépôts depuis les relays GRASP enregistrés et maintiennent le statut des patchs appliqués par les mainteneurs synchronisé.&lt;/p>
&lt;h3 id="rx-nostr-372-à-374-ajoutent-un-vérificateur-par-défaut-et-des-arguments-constructeur-optionnels">rx-nostr 3.7.2 à 3.7.4 ajoutent un vérificateur par défaut et des arguments constructeur optionnels&lt;/h3>
&lt;p>&lt;a href="https://github.com/penpenpng/rx-nostr">rx-nostr&lt;/a> a livré &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> et &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> ajoute un vérificateur Schnorr par défaut, et &lt;a href="https://github.com/penpenpng/rx-nostr/pull/195">PR #195&lt;/a> rend optionnels les arguments de &lt;code>createRxNostr()&lt;/code> pour des intégrations plus rapides.&lt;/p>
&lt;h3 id="keep-android-v100-livre-des-builds-reproductibles-et-zéro-tracker">Keep Android v1.0.0 livre des builds reproductibles et zéro tracker&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, gestionnaire natif Nostr de mots de passe et de secrets, a livré &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.0.0">v1.0.0&lt;/a> le 21 avril. &lt;a href="https://github.com/privkeyio/keep-android/pull/241">PR #241&lt;/a> ajoute une recette de build reproductible, &lt;a href="https://github.com/privkeyio/keep-android/pull/248">PR #248&lt;/a> remplace Google ML Kit par ZXing, &lt;a href="https://github.com/privkeyio/keep-android/pull/252">PR #252&lt;/a> publie un scan Exodus Privacy montrant zéro tracker, et &lt;a href="https://github.com/privkeyio/keep-android/pull/256">PR #256&lt;/a> ajoute un manifeste &lt;code>zapstore.yaml&lt;/code>.&lt;/p>
&lt;h3 id="flotilla-173-et-174-ajoutent-lenveloppement-kind-9-pour-des-salons-nip-29-plus-riches">Flotilla 1.7.3 et 1.7.4 ajoutent l&amp;rsquo;enveloppement kind-9 pour des salons NIP-29 plus riches&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, client de groupes &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> de hodlbod, a livré &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.3">1.7.3&lt;/a> et &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.4">1.7.4&lt;/a>. Le changement protocolaire principal est l&amp;rsquo;enveloppement kind &lt;code>9&lt;/code> de contenus non orientés chat, annoncé dans &lt;a href="#ZgotmplZ">la note de release de hodlbod&lt;/a> et aligné avec &lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a>. Le même cycle ajoute aussi sondages, connexion &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> via Aegis, partages natifs, mentions de salon, brouillons et vidéo dans les appels.&lt;/p>
&lt;h3 id="wot-relay-v021-migre-son-eventstore-vers-lmdb">WoT Relay v0.2.1 migre son eventstore vers LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a> a livré &lt;a href="https://github.com/bitvora/wot-relay/releases/tag/v0.2.1">v0.2.1&lt;/a> le 22 avril. &lt;a href="https://github.com/bitvora/wot-relay/pull/97">PR #97&lt;/a> migre l&amp;rsquo;eventstore vers LMDB et retune les fetches bootstrap du web of trust, &lt;a href="https://github.com/bitvora/wot-relay/pull/99">PR #99&lt;/a> met à jour &lt;code>golang.org/x/crypto&lt;/code>, et &lt;a href="https://github.com/bitvora/wot-relay/pull/100">PR #100&lt;/a> ajuste l&amp;rsquo;URL logicielle et la version annoncées via &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a>.&lt;/p>
&lt;h3 id="suite-formstr--passe-sécurité-pollerama-i18n-de-forms-support-rrule-de-calendar">Suite Formstr : passe sécurité Pollerama, i18n de Forms, support RRULE de Calendar&lt;/h3>
&lt;p>La suite Formstr a fusionné 26 PRs réparties entre Pollerama, Formstr Forms et Nostr Calendar. &lt;a href="https://pollerama.fun">Pollerama&lt;/a> durcit la gestion des clés, expire les DMs en cache à la déconnexion, déplace la clé locale dans un stockage navigateur sécurisé et protège le parsing JSON des profils kind &lt;code>0&lt;/code>. &lt;a href="https://formstr.app">Formstr&lt;/a> ajoute le support des URLs audio et vidéo, introduit l&amp;rsquo;i18n web et livre un importeur Google Forms. &lt;a href="https://calendar.formstr.app">Nostr Calendar by Formstr&lt;/a> a livré &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.3.0">v1.3.0&lt;/a> et &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.4.0">v1.4.0&lt;/a> avec le support de RRULE multiples et personnalisés, l&amp;rsquo;interprétation UTC des dates flottantes et plusieurs améliorations de partage et de notifications sur &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a>.&lt;/p>
&lt;h3 id="aussi-livré--notedeck-nostrblue-cliprelay-captains-log">Aussi livré : notedeck, nostr.blue, cliprelay, Captain&amp;rsquo;s Log&lt;/h3>
&lt;p>Quelques clients ont livré des releases incrémentales sans fonctionnalité phare unique. &lt;a href="https://github.com/damus-io/notedeck">notedeck&lt;/a> a publié &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.4">v0.10.0-beta.4&lt;/a> avec des correctifs de rendu en colonnes et de pool de relays. &lt;a href="https://github.com/patrickulrich/nostr.blue/releases/tag/v0.8.6">nostr.blue v0.8.6&lt;/a> met à jour Dioxus et débloque Android. &lt;a href="https://github.com/tajava2006/cliprelay">cliprelay&lt;/a> a livré des builds desktop et Android pour le partage de presse-papiers entre appareils via Nostr, et &lt;a href="https://github.com/nodetec/comet">Captain&amp;rsquo;s Log&lt;/a> ajoute notamment la détection de liveness des relays de sync.&lt;/p>
&lt;h2 id="en-développement">En développement&lt;/h2>
&lt;h3 id="whitenoise-rs-se-refactorise-autour-de-vues-de-compte-à-portée-de-session">whitenoise-rs se refactorise autour de vues de compte à portée de session&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> a fusionné 15 PRs faisant progresser un refactor multi-phase depuis des singletons globaux vers des vues &lt;code>AccountSession&lt;/code> par compte. Le but est de casser un monolithe partagé en surfaces par compte plus simples à raisonner, tester et faire évoluer. Les phases récentes ont migré handles relay, brouillons et paramètres, opérations de messages, lecture et écriture de groupes, appartenance, notifications push, lectures de KeyPackage, création de groupes et, depuis &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/770">PR #770&lt;/a>, le dispatch d&amp;rsquo;événements côté session.&lt;/p>
&lt;h3 id="white-noise-ajoute-lui-de-blocagedéblocage-le-départ-de-groupe-et-les-notices-hors-ligne">White Noise ajoute l&amp;rsquo;UI de blocage/déblocage, le départ de groupe et les notices hors ligne&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> a ajouté les contrôles manquants de cycle de vie des groupes. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/578">PR #578&lt;/a> ajoute l&amp;rsquo;UI de block/unblock au-dessus du hook livré dans &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> et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/572">PR #572&lt;/a> branchent &lt;code>clear_chat&lt;/code>, &lt;code>delete_chat&lt;/code> et &lt;code>leave_and_delete_group&lt;/code> côté Rust, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/569">PR #569&lt;/a> et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/576">PR #576&lt;/a> ajoutent des notices hors ligne, et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/585">PR #585&lt;/a> restreint la suppression aux anciens KeyPackages hérités.&lt;/p>
&lt;h3 id="mdk-ajoute-le-support-des-invitations-entre-versions-mixtes-et-la-convergence-du-format-wire-selfupdate">MDK ajoute le support des invitations entre versions mixtes et la convergence du format wire SelfUpdate&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> a fusionné sept PRs autour de la compatibilité. &lt;a href="https://github.com/marmot-protocol/mdk/pull/261">PR #261&lt;/a> calcule &lt;code>RequiredCapabilities&lt;/code> comme le LCD des capacités des invités, débloquant les invitations entre Amethyst et White Noise. &lt;a href="https://github.com/marmot-protocol/mdk/pull/264">PR #264&lt;/a> fait converger le format wire de SelfUpdate, tandis que &lt;a href="https://github.com/marmot-protocol/mdk/pull/262">PR #262&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/256">PR #256&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/259">PR #259&lt;/a> et &lt;a href="https://github.com/marmot-protocol/mdk/pull/265">PR #265&lt;/a> durcissent le parsing, la validation et l&amp;rsquo;exposition d&amp;rsquo;état.&lt;/p>
&lt;h3 id="nostter-ajoute-le-chiffrement-nip-44-aux-listes-de-personnes-bookmarks-et-mutes">nostter ajoute le chiffrement NIP-44 aux listes de personnes, bookmarks et mutes&lt;/h3>
&lt;p>&lt;a href="https://github.com/SnowCait/nostter">nostter&lt;/a> a fusionné 10 PRs. &lt;a href="https://github.com/SnowCait/nostter/pull/2088">PR #2088&lt;/a>, &lt;a href="https://github.com/SnowCait/nostter/pull/2089">PR #2089&lt;/a> et &lt;a href="https://github.com/SnowCait/nostter/pull/2090">PR #2090&lt;/a> migrent respectivement mutes, bookmarks et listes de personnes vers le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, en s&amp;rsquo;éloignant de &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a>. &lt;a href="https://github.com/SnowCait/nostter/pull/2087">PR #2087&lt;/a> supprime un ancien chemin de migration kind-30000 devenu inutile.&lt;/p>
&lt;h3 id="zapcooking-livre-le-scoring-nourish-et-un-fil-de-commentaires-réutilisable">zap.cooking livre le scoring Nourish et un fil de commentaires réutilisable&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">zap.cooking&lt;/a> a fusionné 20 PRs. Les plus visibles ajoutent le module de scoring de recettes Nourish, refactorisent le module de commentaires vers un &lt;code>CommentThread&lt;/code> réutilisable, et améliorent l&amp;rsquo;upload média, l&amp;rsquo;onglet Replies du profil et la mise à l&amp;rsquo;échelle des recettes.&lt;/p>
&lt;h3 id="ridestr-extrait-un-coordinateur-partagé-pour-les-riders">ridestr extrait un coordinateur partagé pour les riders&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">ridestr&lt;/a> a fusionné 10 PRs, refactorisant ses écrans Compose et extrayant la logique protocolaire riders/drivers dans un module partagé &lt;code>:common&lt;/code> (&lt;a href="https://github.com/variablefate/ridestr/pull/70">PR #70&lt;/a>). &lt;a href="https://github.com/variablefate/ridestr/pull/60">PR #60&lt;/a> ajoute aussi un récepteur de ping de conducteur kind &lt;code>3189&lt;/code> pour le versant Roadflare de l&amp;rsquo;application.&lt;/p>
&lt;h3 id="blossom-ébauche-un-header-bud-01-sunset-pour-lexpiration-des-blobs">Blossom ébauche un header BUD-01 Sunset pour l&amp;rsquo;expiration des blobs&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a> a ouvert &lt;a href="https://github.com/hzrd149/blossom/pull/99">PR #99&lt;/a> pour ajouter un header &lt;code>Sunset&lt;/code> à BUD-01. L&amp;rsquo;idée est qu&amp;rsquo;un serveur puisse annoncer à l&amp;rsquo;avance le moment où il cessera de servir un blob, en s&amp;rsquo;appuyant sur la sémantique standard &lt;a href="https://www.rfc-editor.org/rfc/rfc8594.html">RFC 8594&lt;/a>.&lt;/p>
&lt;h2 id="nouveaux-projets">Nouveaux projets&lt;/h2>
&lt;h3 id="forgesworn-publie-une-boîte-à-outils-cryptographique-de-29-dépôts-pour-nostr">Forgesworn publie une boîte à outils cryptographique de 29 dépôts pour Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a> a publié 29 dépôts open source en cinq jours couvrant la signature, l&amp;rsquo;identité, les attestations, le web of trust et la découverte d&amp;rsquo;API payantes sur Nostr. La pile de signature s&amp;rsquo;ancre sur &lt;a href="https://github.com/forgesworn/nsec-tree">nsec-tree&lt;/a>, &lt;a href="https://github.com/forgesworn/heartwood">Heartwood&lt;/a>, &lt;a href="https://github.com/forgesworn/sapwood">Sapwood&lt;/a> et &lt;a href="https://github.com/forgesworn/heartwood-esp32">heartwood-esp32&lt;/a>. Côté identité, &lt;a href="https://github.com/forgesworn/signet">Signet&lt;/a> atteint &lt;a href="https://github.com/forgesworn/signet/releases/tag/v1.6.0">v1.6.0&lt;/a>, &lt;a href="https://github.com/forgesworn/nostr-attestations">nostr-attestations&lt;/a> définit un kind &lt;code>31000&lt;/code> pour les credentials et endorsements, et &lt;a href="https://github.com/forgesworn/nostr-veil">nostr-veil&lt;/a> construit un web of trust privé avec signatures de groupe LSAG.&lt;/p>
&lt;p>La partie monétisation couvre aussi les API payantes sur Lightning et Nostr avec &lt;a href="https://github.com/forgesworn/toll-booth">toll-booth&lt;/a>, &lt;a href="https://github.com/forgesworn/toll-booth-dvm">toll-booth-dvm&lt;/a>, &lt;a href="https://github.com/forgesworn/toll-booth-announce">toll-booth-announce&lt;/a>, &lt;a href="https://github.com/forgesworn/402-announce">402-announce&lt;/a> et &lt;a href="https://github.com/forgesworn/402-indexer">402-indexer&lt;/a>. L&amp;rsquo;ensemble est écrit en TypeScript et publié via &lt;a href="https://github.com/forgesworn/anvil">anvil&lt;/a>, un outil bash-only de supply chain durcie.&lt;/p>
&lt;h3 id="shockwallet-livre-une-synchronisation-lightning-native-à-nostr-et-des-connexions-multi-node">ShockWallet livre une synchronisation Lightning native à Nostr et des connexions multi-node&lt;/h3>
&lt;p>&lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a> est un wallet Lightning qui utilise Nostr comme transport pour se connecter à des nœuds Lightning auto-custodial. L&amp;rsquo;application se paire avec un ou plusieurs nœuds &lt;a href="https://github.com/shocknet/Lightning.Pub">Lightning.Pub&lt;/a> via un &lt;code>nprofile&lt;/code>, puis signe de bout en bout les autorisations de paiement entre le wallet et le nœud. &lt;a href="https://github.com/shocknet/wallet2/pull/608">PR #608&lt;/a> ajoute une nouvelle vue dashboard pour les canaux, accompagnée de &lt;a href="https://github.com/shocknet/wallet2/pull/606">PR #606&lt;/a> et &lt;a href="https://github.com/shocknet/wallet2/pull/607">PR #607&lt;/a>.&lt;/p>
&lt;p>ShockWallet utilise des événements de données spécifiques à l&amp;rsquo;application &lt;a href="https://nostrcompass.org/fr/topics/nip-01/">NIP-78&lt;/a> pour synchroniser l&amp;rsquo;état du wallet entre appareils, ce qui le place une couche en dessous de &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a>. En parallèle, l&amp;rsquo;équipe pousse aussi &lt;a href="https://github.com/shocknet/CLINK">CLINK&lt;/a>, un protocole de pairage de sessions basé sur Nostr.&lt;/p>
&lt;h3 id="les-issues-nostrability-migrent-vers-git-over-nostr-après-la-censure-github">Les issues Nostrability migrent vers git over Nostr après la censure GitHub&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/elsat@habla.news/nostrability/issues">Nostrability&lt;/a>, le tracker d&amp;rsquo;interop d&amp;rsquo;elsat pour les clients et relays Nostr, déplace son workflow d&amp;rsquo;issues vers git over Nostr après la fermeture de l&amp;rsquo;organisation Nostrability sur GitHub et deux semaines sans réponse du support GitHub. Le tracker vit désormais sur GitWorkshop/ngit.&lt;/p>
&lt;h3 id="nowhere-encode-des-sites-web-complets-dans-des-fragments-durl-et-route-les-commandes-via-nostr">nowhere encode des sites web complets dans des fragments d&amp;rsquo;URL et route les commandes via Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/5t34k/nowhere">nowhere&lt;/a> est un nouveau projet AGPL-3.0 de &lt;a href="https://github.com/5t34k">5t34k&lt;/a> qui sérialise un site entier dans le fragment d&amp;rsquo;URL après &lt;code>#&lt;/code>, le compresse puis l&amp;rsquo;encode en base64url. Comme les fragments ne sont pas envoyés au serveur, l&amp;rsquo;hôte qui livre la page ne voit jamais le contenu, et le site lui-même n&amp;rsquo;est jamais stocké sur un serveur. Les types nécessitant de la communication live utilisent des clés éphémères avec chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> sur des relays Nostr.&lt;/p>
&lt;h3 id="petites-nouvelles-surfaces--relaykit-et-brainstorm-search">Petites nouvelles surfaces : relayk.it et Brainstorm Search&lt;/h3>
&lt;p>Deux petits projets méritent une mention rapide. &lt;a href="https://relayk.it">relayk.it&lt;/a>, construit par &lt;a href="https://nostr.com/sam@relayk.it">sam&lt;/a> de l&amp;rsquo;équipe Soapbox, est un client de découverte de relays généré avec Shakespeare et entièrement exécuté dans le navigateur. &lt;a href="https://brainstorm.world">Brainstorm Search&lt;/a> se lance comme interface de recherche Nostr en page unique.&lt;/p>
&lt;h2 id="travail-sur-le-protocole-et-les-spécifications">Travail sur le protocole et les spécifications&lt;/h2>
&lt;h3 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h3>
&lt;p>Propositions et discussions récentes dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>PRs ouvertes et discussions :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/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>) : ajoute un troisième élément optionnel à &lt;code>EOSE&lt;/code> pour permettre à un relay d&amp;rsquo;indiquer qu&amp;rsquo;il a réellement livré tous les événements stockés correspondant au filtre.&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>) : propose un nouveau kind pour distribuer des applets interactives sur Nostr, à mi-chemin entre &lt;a href="https://nostrcompass.org/fr/topics/nip-5a/">NIP-5A&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-5c/">NIP-5C&lt;/a>.&lt;/li>
&lt;li>&lt;strong>NIP-29 : spécification des sous-groupes&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2319">PR #2319&lt;/a>) : étend &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> avec une hiérarchie de sous-groupes.&lt;/li>
&lt;li>&lt;strong>NIP-29 : permissions explicites sur le kind 39003&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2316">PR #2316&lt;/a>) : définit un schéma explicite de permissions par rôle.&lt;/li>
&lt;li>&lt;strong>NIP-11 : champ &lt;code>access_control&lt;/code> pour la découverte de relays fermés&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2318">PR #2318&lt;/a>) : permet d&amp;rsquo;annoncer le mode d&amp;rsquo;accès du relay et l&amp;rsquo;endpoint où demander l&amp;rsquo;autorisation.&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>) : poursuit son itération sur le shape kind &lt;code>10164&lt;/code>.&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>) : propose des attestations signées sur des agents et services autonomes sur Nostr, en particulier dans le contexte &lt;a href="https://nostrcompass.org/fr/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>) : poursuit l&amp;rsquo;itération sur le kind &lt;code>20411&lt;/code>, le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> par destinataire et la sémantique du tag &lt;code>ttl&lt;/code>.&lt;/li>
&lt;li>&lt;strong>PR de release marmot-ts 0.5.0&lt;/strong> (&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/70">PR #70&lt;/a>) : regroupe les premiers changements cassants du client Marmot TypeScript, notamment le support conjoint des KeyPackages kinds &lt;code>443&lt;/code> et &lt;code>30443&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="deep-dive-nip--nip-72-communautés-modérées">Deep Dive NIP : NIP-72 (communautés modérées)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/72.md">NIP-72&lt;/a> définit un modèle de communautés thématiques dans lequel les modérateurs curent une vue de lecture au-dessus d&amp;rsquo;écritures autrement ouvertes. Une communauté est définie par un événement adressable kind &lt;code>34550&lt;/code> contenant un slug &lt;code>d&lt;/code>, des tags &lt;code>name&lt;/code>, &lt;code>description&lt;/code>, &lt;code>image&lt;/code>, &lt;code>rules&lt;/code>, des tags &lt;code>p&lt;/code> marqués &lt;code>moderator&lt;/code> et, éventuellement, des tags &lt;code>relay&lt;/code> annotés &lt;code>author&lt;/code>, &lt;code>requests&lt;/code> ou &lt;code>approvals&lt;/code>.&lt;/p>
&lt;p>Les utilisateurs soumettent des posts en publiant un événement Nostr ordinaire et en ajoutant un tag &lt;code>a&lt;/code> pointant vers la coordonnée &lt;code>34550:&amp;lt;creator_pubkey&amp;gt;:&amp;lt;slug&amp;gt;&lt;/code>. L&amp;rsquo;approbation est un événement séparé kind &lt;code>4549&lt;/code> publié par un modérateur, qui référence la soumission par tag &lt;code>e&lt;/code>, l&amp;rsquo;auteur par tag &lt;code>p&lt;/code>, la communauté par tag &lt;code>a&lt;/code>, et embarque une copie stringifiée de la soumission dans &lt;code>content&lt;/code>. Ce modèle rend la modération transparente, forkable et révocable côté lecture, tout en gardant la publication ouverte à n&amp;rsquo;importe quel relay qui transporte les kinds nécessaires.&lt;/p>
&lt;h2 id="deep-dive-nip--nip-57-zaps">Deep Dive NIP : NIP-57 (Zaps)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/57.md">NIP-57&lt;/a> définit les zaps, c&amp;rsquo;est-à-dire l&amp;rsquo;association d&amp;rsquo;un paiement Lightning à une identité ou à un contenu Nostr avec publication d&amp;rsquo;un reçu vérifiable sur les relays. Le flux implique un client expéditeur, un endpoint LNURL destinataire, le paiement Lightning lui-même et un reçu kind &lt;code>9735&lt;/code> publié après paiement. La demande signée kind &lt;code>9734&lt;/code> déclare le &lt;code>p&lt;/code> tag du destinataire, un éventuel &lt;code>e&lt;/code> ou &lt;code>a&lt;/code> tag pour la cible, un tag &lt;code>amount&lt;/code>, une liste &lt;code>relays&lt;/code> et éventuellement un tag &lt;code>k&lt;/code>.&lt;/p>
&lt;p>Le point décisif est la validation. Un client sérieux doit vérifier que la signature du reçu correspond au &lt;code>nostrPubkey&lt;/code> annoncé dans la réponse LNURL, que le montant de la facture &lt;code>bolt11&lt;/code> correspond au &lt;code>amount&lt;/code> de la demande embarquée, que le hash de description de la facture s&amp;rsquo;engage sur cette demande et que le &lt;code>preimage&lt;/code> correspond au &lt;code>payment_hash&lt;/code> de la facture. Les zaps privés et anonymes ajoutent ensuite une couche de confidentialité, et &lt;a href="https://nostrcompass.org/fr/topics/nip-75/">NIP-75&lt;/a> réutilise ces reçus pour totaliser les objectifs de financement.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Si vous construisez quelque chose ou avez des nouvelles à partager, envoyez-nous un DM sur Nostr ou retrouvez-nous sur &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/fr/newsletters/2026-04-15-newsletter/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-04-15-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> fusionne 29 PRs autour de Tor desktop, d&amp;rsquo;une implémentation C secp256k1, des appels &lt;a href="https://nostrcompass.org/fr/topics/nip-ac/">NIP-AC&lt;/a> et du support multi-wallet &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a>. &lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> lance des notifications push natives à Nostr pour Android via les relays et les événements kind &lt;code>7741&lt;/code>. &lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> ajoute Reticulum pour transporter des événements Nostr sur un mesh LoRa sans connexion internet. &lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> livre &lt;a href="https://github.com/nostrnative/bloom/releases/tag/v0.1.0">v0.1.0&lt;/a> avec un serveur &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> auto-hébergé et un relay embarqué. &lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> lance une radio internet sur Nostr. &lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> démarre comme plateforme de bots auto-hébergée pour les chats de groupe &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> livre une série de releases avec audit de sécurité et refonte des performances, tandis que &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> repense sa mise en page du flux.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> fusionne 29 PRs autour de Tor desktop, d&amp;rsquo;une implémentation C secp256k1, des appels &lt;a href="https://nostrcompass.org/fr/topics/nip-ac/">NIP-AC&lt;/a> et du support multi-wallet &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a>. &lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> lance des notifications push natives à Nostr pour Android via les relays et les événements kind &lt;code>7741&lt;/code>. &lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a> ajoute Reticulum pour transporter des événements Nostr sur un mesh LoRa sans connexion internet. &lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> livre &lt;a href="https://github.com/nostrnative/bloom/releases/tag/v0.1.0">v0.1.0&lt;/a> avec un serveur &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> auto-hébergé et un relay embarqué. &lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> lance une radio internet sur Nostr. &lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> démarre comme plateforme de bots auto-hébergée pour les chats de groupe &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a> livre une série de releases avec audit de sécurité et refonte des performances, tandis que &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> repense sa mise en page du flux.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="amethyst-fusionne-tor-desktop-c-secp256k1-les-appels-webrtc-et-le-multi-wallet-nwc">Amethyst fusionne Tor desktop, C secp256k1, les appels WebRTC et le multi-wallet NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, le client Android maintenu par vitorpamplona, a fusionné 29 PRs cette semaine à travers la cryptographie, le réseau, les appels et l&amp;rsquo;infrastructure wallet. La plus grande modification, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2381">PR #2381&lt;/a>, ajoute le support de Tor sur desktop en embarquant un daemon kmp-tor avec un design fail-closed : si Tor est activé, toutes les connexions relay passent par le processus Tor embarqué, et l&amp;rsquo;application refuse de se connecter si Tor ne démarre pas.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2374">PR #2374&lt;/a> ajoute une implémentation secp256k1 en C avec bindings JNI pour la vérification de signature, avec GLV decomposition, encodage de point wNAF et SHA-256 accéléré matériellement sur x86_64 et ARM64. Le résultat annoncé est un gain de 2x à 3x sur la vérification des signatures Schnorr. La &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2202">PR #2202&lt;/a> aligne l&amp;rsquo;implémentation MLS en pur Kotlin sur RFC 9420 pour l&amp;rsquo;intégration &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, tandis que la série &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2203">PR #2203&lt;/a> à &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2211">PR #2211&lt;/a> construit un système complet d&amp;rsquo;appels voix et vidéo pour &lt;a href="https://nostrcompass.org/fr/topics/nip-ac/">NIP-AC&lt;/a>. Enfin, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1988">PR #1988&lt;/a> ajoute le support multi-wallet &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a>, et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2189">PR #2189&lt;/a> ajoute la conversion GIF-vers-MP4 avec réglage de qualité.&lt;/p>
&lt;h3 id="nstrfy-lance-des-notifications-push-natives-à-nostr-pour-android">nstrfy lance des notifications push natives à Nostr pour Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a> a été lancé le 13 avril avec trois releases de &lt;a href="https://github.com/vcavallo/nstrfy-android/releases/tag/v1.0.0">v1.0.0&lt;/a> à &lt;a href="https://github.com/vcavallo/nstrfy-android/releases/tag/v1.2.0">v1.2.0&lt;/a>. L&amp;rsquo;application est un fork de ntfy-android dans lequel le transport HTTP est remplacé par Nostr : au lieu de sonder un serveur, nstrfy s&amp;rsquo;abonne à des événements kind &lt;code>7741&lt;/code> sur des relays configurables et les affiche comme notifications Android natives.&lt;/p>
&lt;p>Le modèle de notification supporte à la fois les payloads en clair et les payloads chiffrés &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>. Quand le chiffrement est activé, nstrfy utilise &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> pour la signature via &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> ou un nsec local. L&amp;rsquo;application importe les listes de relays depuis le profil utilisateur via &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> et respecte l&amp;rsquo;expiration d&amp;rsquo;événements &lt;a href="https://nostrcompass.org/fr/topics/nip-40/">NIP-40&lt;/a>. Le projet compagnon &lt;a href="https://github.com/vcavallo/nstrfy.sh">nstrfy.sh&lt;/a> fournit en plus un CLI bash et un client web hébergé sur &lt;a href="https://nstrfy.sh">nstrfy.sh&lt;/a>.&lt;/p>
&lt;h3 id="hamstr-ajoute-reticulum-pour-nostr-sur-mesh-lora">HAMSTR ajoute Reticulum pour Nostr sur mesh LoRa&lt;/h3>
&lt;p>&lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a>, le projet qui envoie des événements Nostr et des zaps Lightning sur la radio amateur, a fusionné &lt;a href="https://github.com/LibertyFarmer/hamstr/pull/10">PR #10&lt;/a> le 12 avril pour ajouter &lt;a href="https://reticulum.network/">Reticulum&lt;/a> comme backend de transport mesh. Reticulum est un protocole mesh cryptographique qui fonctionne sur LoRa, HF, VHF/UHF, liaisons série et TCP/IP. Avec cet ajout, HAMSTR peut relayer des événements Nostr à travers un mesh de matériels RNode sans infrastructure internet.&lt;/p>
&lt;p>Les transports AX.25 Packet Radio et VARA HF restent disponibles. L&amp;rsquo;architecture zero-knowledge de HAMSTR signifie que le serveur relay ne voit jamais les clés privées, et sa conformité &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a> garantit que les zaps Lightning hors ligne apparaissent correctement dans des clients comme Amethyst et Primal. La même semaine, &lt;a href="https://github.com/LibertyFarmer/hamstr/pull/11">PR #11&lt;/a> a migré le frontend vers Svelte 5 et TailwindCSS v4.&lt;/p>
&lt;h2 id="sorties">Sorties&lt;/h2>
&lt;h3 id="bloom-v010-livre-un-serveur-blossom-auto-hébergé-et-un-relay">Bloom v0.1.0 livre un serveur Blossom auto-hébergé et un relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a> a livré sa première release, &lt;a href="https://github.com/nostrnative/bloom/releases/tag/v0.1.0">v0.1.0&lt;/a>, le 9 avril. Construit avec Tauri v2 et React 19, Bloom embarque un serveur média complet &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> et un relay Nostr dans une seule application desktop pour macOS, Windows et Linux. Les utilisateurs obtiennent un stockage de fichiers souverain avec adressage de contenu SHA-256, support des métadonnées de fichier &lt;a href="https://nostrcompass.org/fr/topics/nip-94/">NIP-94&lt;/a> et résolution du schéma d&amp;rsquo;URI &lt;code>blossom://&lt;/code> sans gérer eux-mêmes une infrastructure serveur.&lt;/p>
&lt;h3 id="wavefunc-v010-et-v011-lancent-une-radio-internet-nostr">WaveFunc v0.1.0 et v0.1.1 lancent une radio internet Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a> a livré &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.0">v0.1.0&lt;/a> et &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.1">v0.1.1&lt;/a> le 13 avril, se lançant comme annuaire et lecteur de radio internet basé sur Nostr. Le modèle de données s&amp;rsquo;appuie sur des kinds personnalisés : kind &lt;code>31237&lt;/code> pour les stations, kind &lt;code>30078&lt;/code> pour les favoris, kind &lt;code>1311&lt;/code> pour le live chat et kind &lt;code>1111&lt;/code> pour les commentaires de station. Le backend relay Khatru fournit le stockage SQLite et la recherche full-text Bluge avec support &lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;p>WaveFunc embarque aussi un wallet Cashu &lt;a href="https://nostrcompass.org/fr/topics/nip-60/">NIP-60&lt;/a> et le support nutzap. La release &lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.1">v0.1.1&lt;/a> ajoute des carrousels de genres, un popover de dons Lightning, la gestion des stations pour les utilisateurs authentifiés et une fiche Zapstore. Les builds sont disponibles sur macOS, Windows, Linux et Android via &lt;a href="https://wavefunc.live">wavefunc.live&lt;/a>.&lt;/p>
&lt;h3 id="snort-livre-v050-à-v053-avec-durcissement-sécurité-et-refonte-des-performances">Snort livre v0.5.0 à v0.5.3 avec durcissement sécurité et refonte des performances&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, le client web Nostr basé sur React, a livré trois releases de &lt;a href="https://github.com/v0l/snort/releases/tag/v0.5.0">v0.5.0&lt;/a> à &lt;a href="https://github.com/v0l/snort/releases/tag/v0.5.3">v0.5.3&lt;/a>. La version v0.5.0 est la plus importante : audit de sécurité, vraie vérification des signatures Schnorr, protection &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> contre les messages relay falsifiés, améliorations du chiffrement PIN et suppression de la confiance implicite dans la délégation NIP-26.&lt;/p>
&lt;p>Les gains de performance incluent une vérification batchée des signatures en WASM, des routes chargées paresseusement, un chargeur de profils prioritaire réécrit et des optimisations worker-relay. La release ajoute aussi l&amp;rsquo;affichage des factures kind &lt;code>7000&lt;/code> requises pour paiement pour les DVM &lt;a href="https://nostrcompass.org/fr/topics/nip-90/">NIP-90&lt;/a>. &lt;a href="https://github.com/v0l/snort/pull/620">PR #620&lt;/a> retravaille en parallèle le système de messagerie pour réduire le coût du calcul de listes de chat.&lt;/p>
&lt;h3 id="primal-android-livre-3021-et-repense-la-mise-en-page-du-flux">Primal Android livre 3.0.21 et repense la mise en page du flux&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> a livré &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.21">v3.0.21&lt;/a> avec des correctifs pour les votes zap de sondages, le partage multi-comptes du wallet et l&amp;rsquo;auto-reconnexion du signataire distant et du service wallet. Sept PRs fusionnées ont suivi : &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1008">PR #1008&lt;/a> unifie la mise en page de l&amp;rsquo;écran principal, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1010">PR #1010&lt;/a> introduit un nouveau design de cartes de flux, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1009">PR #1009&lt;/a> ajoute le support vidéo dans les cartes média, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1012">PR #1012&lt;/a> ajoute un champ compact pour les réponses rapides, et &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1013">PR #1013&lt;/a> repense les barres d&amp;rsquo;application.&lt;/p>
&lt;h3 id="nostria-v3119-à-v3121-ajoutent-la-génération-locale-dimages">Nostria v3.1.19 à v3.1.21 ajoutent la génération locale d&amp;rsquo;images&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> a livré trois releases de &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.19">v3.1.19&lt;/a> à &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.21">v3.1.21&lt;/a> avec plus de 80 commits. La nouveauté principale est la génération locale d&amp;rsquo;images avec Janus Pro accéléré par WebGPU, de sorte que les utilisateurs puissent générer des images sur l&amp;rsquo;appareil sans API externe. Les releases ajoutent aussi la génération d&amp;rsquo;images cloud, le chat multimodal, le support ONNX runtime, une bibliothèque de prompts et la gestion du cache AI.&lt;/p>
&lt;h3 id="tubestr-v103-livre-des-mises-à-jour-du-flux-et-du-studio">TubeStr v1.0.3 livre des mises à jour du flux et du studio&lt;/h3>
&lt;p>&lt;a href="https://github.com/Tubestr/tubestr-v2">TubeStr&lt;/a>, application privée de partage vidéo familial construite sur Nostr, a livré &lt;a href="https://github.com/Tubestr/tubestr-v2/releases/tag/v1.0.3">v1.0.3&lt;/a> le 13 avril. La release apporte des améliorations du flux et du studio. &lt;a href="https://github.com/Tubestr/tubestr-v2/pull/3">PR #3&lt;/a> revoit les écrans d&amp;rsquo;onboarding et &lt;a href="https://github.com/Tubestr/tubestr-v2/pull/2">PR #2&lt;/a> corrige une erreur d&amp;rsquo;export vidéo. L&amp;rsquo;application utilise NDK et MDK pour le partage média chiffré entre membres d&amp;rsquo;une famille.&lt;/p>
&lt;h2 id="en-développement">En développement&lt;/h2>
&lt;h3 id="botburrow-commence-comme-plateforme-de-bots-marmot">Botburrow commence comme plateforme de bots Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a> est un nouveau projet de l&amp;rsquo;équipe Marmot, démarré le 3 avril. Il s&amp;rsquo;agit d&amp;rsquo;une plateforme auto-hébergée de gestion de bots où chaque bot reçoit sa propre identité Nostr, rejoint des chats de groupe &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> via des messages Welcome et envoie ou reçoit des messages chiffrés de bout en bout. Le tableau de bord, construit avec Rails 8.1, communique avec un unique daemon whitenoise-rs (&lt;code>wnd&lt;/code>) via un socket Unix.&lt;/p>
&lt;p>Le projet expose déjà une couche importante de scripts et d&amp;rsquo;opérations : commandes, triggers et actions planifiées exécutent du code Ruby personnalisé, les scripts peuvent inspecter profils, appartenance aux groupes et invitations en attente via &lt;code>wnd&lt;/code>, et l&amp;rsquo;interface inclut une vue de chat live. Une &lt;a href="https://github.com/marmot-protocol/botburrow/commit/2ed012078eaab3c5b92dff16b87865c2e353bd80">image Docker&lt;/a> cible l&amp;rsquo;auto-hébergement sans configuration sur Umbrel et Start9.&lt;/p>
&lt;h3 id="nostr-archives-ajoute-un-relay-de-flux-tendances-et-la-résolution-dentités">Nostr Archives ajoute un relay de flux tendances et la résolution d&amp;rsquo;entités&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/nostrarchives-api">Nostr Archives&lt;/a>, la plateforme d&amp;rsquo;archivage et d&amp;rsquo;analytics à &lt;a href="https://nostrarchives.com">nostrarchives.com&lt;/a>, poursuit son développement côté &lt;a href="https://github.com/barrydeen/nostrarchives-api">API&lt;/a> en Rust et côté &lt;a href="https://github.com/barrydeen/nostrarchives-frontend">frontend&lt;/a> en Next.js 16. &lt;a href="https://github.com/barrydeen/nostrarchives-api/pull/118">PR #118&lt;/a> ajoute le filtrage par plage de temps au leaderboard client, &lt;a href="https://github.com/barrydeen/nostrarchives-api/pull/117">PR #117&lt;/a> ajoute des compteurs d&amp;rsquo;engagement sur les réponses, &lt;a href="https://github.com/barrydeen/nostrarchives-frontend/pull/85">PR #85&lt;/a> résout directement les entités Nostr depuis les chemins d&amp;rsquo;URL, et &lt;a href="https://github.com/barrydeen/nostrarchives-frontend/pull/86">PR #86&lt;/a> ajoute une page de documentation API.&lt;/p>
&lt;h3 id="damus-corrige-la-timeline-des-favoris">Damus corrige la timeline des favoris&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, le client iOS, a fusionné &lt;a href="https://github.com/damus-io/damus/pull/3708">PR #3708&lt;/a> qui réécrit &lt;code>subscribe_to_favorites()&lt;/code> avec filtrage sur place, reconstruction de la déduplication et persistance de l&amp;rsquo;onglet sélectionné.&lt;/p>
&lt;h3 id="nostur-ajoute-les-zaps-privés-et-laffichage-des-emoji-personnalisés">Nostur ajoute les zaps privés et l&amp;rsquo;affichage des emoji personnalisés&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, le client iOS, a poussé 10 commits cette semaine ajoutant le support des zaps privés, l&amp;rsquo;affichage des emoji personnalisés, un correctif de rendu &lt;code>.webp&lt;/code> animé et la détection du format audio des messages vocaux.&lt;/p>
&lt;h3 id="amber-livre-v601-à-v603-avec-sauvegarde-webdav-et-correctifs-de-reconnexion-relay">Amber livre v6.0.1 à v6.0.3 avec sauvegarde WebDAV et correctifs de reconnexion relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;application signataire Android &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>, a livré trois versions. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.1">v6.0.1&lt;/a> ajoute WebDAV et le partage vers Google Drive comme nouvelles options de sauvegarde, implémente un backoff exponentiel pour les reconnexions relay et met à jour Quartz. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.2">v6.0.2&lt;/a> ajoute une option d&amp;rsquo;index de compte lors de l&amp;rsquo;usage des seed words, et &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.3">v6.0.3&lt;/a> corrige un problème d&amp;rsquo;ID de requête vide lors de la réception d&amp;rsquo;intents.&lt;/p>
&lt;h3 id="plektos-v060-se-repense-avec-des-thèmes-ditto">Plektos v0.6.0 se repense avec des thèmes Ditto&lt;/h3>
&lt;p>&lt;a href="https://github.com/derekross/plektos">Plektos&lt;/a>, la plateforme décentralisée de meetups et d&amp;rsquo;événements construite sur &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a>, a livré &lt;a href="https://github.com/derekross/plektos/commit/7a691cdf089ceb7a8582dd5c0ee026830f2cdc77">v0.6.0&lt;/a> et &lt;a href="https://github.com/derekross/plektos/commit/3a6474ae380522d8ee1b3526423fcfc3328fd879">v0.6.1&lt;/a>. La mise à jour ajoute des thèmes communautaires de style Ditto avec upload d&amp;rsquo;images d&amp;rsquo;arrière-plan, configuration de la forme des avatars et refonte de l&amp;rsquo;UI. &lt;a href="https://github.com/derekross/plektos/pull/6">PR #6&lt;/a> traite une revue de code complète couvrant sécurité, architecture et UX.&lt;/p>
&lt;h3 id="shadow-ajoute-une-api-nostr-os-et-une-app-wallet-cashu">Shadow ajoute une API Nostr OS et une app wallet Cashu&lt;/h3>
&lt;p>&lt;a href="https://github.com/justinmoon/shadow">Shadow&lt;/a>, la plateforme runtime d&amp;rsquo;apps de Justin Moon, a poussé plus de 30 commits en deux jours. &lt;a href="https://github.com/justinmoon/shadow/commit/88cbda5131814d2730a2d892029932136db005df">Commit 88cbda5&lt;/a> ajoute une application wallet Cashu tournant dans le runtime Shadow, et &lt;a href="https://github.com/justinmoon/shadow/commit/865c415">Commit 865c415&lt;/a> ajoute une démo de lecteur de podcast. Le runtime expose &lt;code>Shadow.os.nostr&lt;/code> et &lt;code>Shadow.os.audio&lt;/code> comme API système de premier plan.&lt;/p>
&lt;h3 id="lief-corrige-la-connexion-amber-et-ajoute-zapstore">Lief corrige la connexion Amber et ajoute Zapstore&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/lief">Lief&lt;/a>, application Nostr d&amp;rsquo;écriture de lettres longues, a livré le build &lt;code>v2026.04.12&lt;/code>. La mise à jour corrige un problème de connexion au signataire &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> sur Android, simplifie le flux de nudge du signataire, met à jour la dépendance nostrify et ajoute l&amp;rsquo;intégration Zapstore.&lt;/p>
&lt;h3 id="espy-revoit-complètement-le-sélecteur-de-couleurs-et-corrige-la-connexion-amber">Espy revoit complètement le sélecteur de couleurs et corrige la connexion Amber&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/espy">Espy&lt;/a>, application sociale Nostr où les utilisateurs partagent des « moments couleur », a livré le build &lt;code>v2026.04.12&lt;/code>. La mise à jour remanie le sélecteur de couleurs avec un arc de saturation courbe, corrige des bugs de scintillement sur l&amp;rsquo;anneau de teinte et ajoute des personnages cachés. La release corrige aussi un problème de connexion Amber, simplifie le flux de nudge du signataire, met à jour nostrify et ajoute Zapstore.&lt;/p>
&lt;h3 id="jumble-ajoute-des-filtres-de-kind-par-flux-et-un-onglet-articles">Jumble ajoute des filtres de kind par flux et un onglet Articles&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a> a poussé 13 commits ajoutant le filtrage par kind dans chaque flux, un onglet Articles, la synchronisation du statut lu des notifications avec une option préservant la vie privée, un mode de masquage d&amp;rsquo;avatar et un correctif de race condition lors du changement de compte.&lt;/p>
&lt;h3 id="primal-web-livre-8-montées-de-version">Primal Web livre 8 montées de version&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-web-app">Primal Web&lt;/a> a livré les versions 3.0.93 à 3.0.101 en une semaine avec 21 commits. Le travail s&amp;rsquo;est concentré sur l&amp;rsquo;amélioration du chat de live stream, des correctifs sur les frontières de mentions, la pagination des bookmarks, la prévention des likes dupliqués et des correctifs du relay proxy.&lt;/p>
&lt;h2 id="travail-sur-le-protocole-et-les-spécifications">Travail sur le protocole et les spécifications&lt;/h2>
&lt;h3 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h3>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> (Git Stuff) : ajout des URL de clone &lt;code>nostr://&lt;/code>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>) : la spécification définit désormais trois formes d&amp;rsquo;URL &lt;code>nostr://&lt;/code> pour référencer des dépôts NIP-34 de manière lisible ou directement par naddr. Cela permet à des helpers &lt;code>git-remote-nostr&lt;/code> de résoudre un npub ou une adresse &lt;a href="https://github.com/nostr-protocol/nips/blob/master/05.md">NIP-05&lt;/a>, de découvrir les relays du dépôt puis de récupérer les données git. La PR resserre aussi le format du tag &lt;code>d&lt;/code> des identifiants de dépôt afin que ces URL produisent des URI valides.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et 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>) : propose un événement remplaçable kind &lt;code>10164&lt;/code> permettant aux créateurs de déclarer des passerelles de paiement, des modèles tarifaires et des règles d&amp;rsquo;abonnement pour l&amp;rsquo;accès à du contenu payant.&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>) : propose un manifeste gossipable kind &lt;code>10100&lt;/code> pour la transparence relay et un nouveau message relay-vers-client &lt;code>HORIZON&lt;/code> qui annonce la borne temporelle la plus ancienne que le relay conserve.&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>) : propose le kind &lt;code>20411&lt;/code> pour partager des données de géolocalisation chiffrées &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> avec des destinataires spécifiques.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-5c/">NIP-5C&lt;/a> (Scrolls) : mise à jour des programmes WASM&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>) : poursuit le travail sur la publication et l&amp;rsquo;exécution de binaires WASM distribués comme événements Nostr.&lt;/li>
&lt;li>&lt;strong>Support des gros payloads &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1907">PR #1907&lt;/a>) : propose d&amp;rsquo;étendre NIP-44 au-delà de la limite actuelle de 65 535 bytes, en particulier pour les usages comme la signature distante &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> de grosses contact lists kind &lt;code>3&lt;/code>.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-c7/">NIP-C7&lt;/a> : restreindre le kind 9 aux vues de chat&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a>) : ajoute une exigence selon laquelle les clients qui rendent une « vue chat » comme flux d&amp;rsquo;événements ordonnés ne doivent récupérer que des événements kind &lt;code>9&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="deep-dive-nip--nip-29-groupes-basés-sur-les-relays">Deep Dive NIP : NIP-29 (groupes basés sur les relays)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/29.md">NIP-29&lt;/a> définit un modèle de messagerie de groupe où le relay lui-même gère l&amp;rsquo;appartenance et la modération. Les groupes vivent sur un relay spécifique, identifié par une chaîne aléatoire, et le relay fait autorité pour décider qui peut écrire dans le groupe. C&amp;rsquo;est une architecture différente de &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> ou des chats de groupe &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> : ici, le relay peut lire les messages et la modération se fait au niveau du relay.&lt;/p>
&lt;p>Un groupe est identifié par le format &lt;code>&amp;lt;host&amp;gt;'&amp;lt;group-id&amp;gt;&lt;/code>, par exemple &lt;code>groups.nostr.com'abcdef&lt;/code>. Les événements envoyés dans le groupe portent un tag &lt;code>h&lt;/code> avec l&amp;rsquo;identifiant du groupe, et un tag &lt;code>previous&lt;/code> peut référencer les premiers 8 caractères hexadécimaux d&amp;rsquo;événements récents vus sur le même relay pour détecter les rediffusions hors contexte. L&amp;rsquo;appartenance se gère via des événements de modération dans la plage &lt;code>9000-9020&lt;/code>, comme les demandes d&amp;rsquo;adhésion kind &lt;code>9021&lt;/code>, les suppressions kind &lt;code>9001&lt;/code>, les changements de métadonnées kind &lt;code>9002&lt;/code> et les événements de rôles kind &lt;code>39003&lt;/code>.&lt;/p>
&lt;p>Les groupes peuvent être publics, fermés ou totalement ouverts, et la lecture comme l&amp;rsquo;écriture peuvent être contrôlées indépendamment. La spécification accepte aussi d&amp;rsquo;autres kinds que le chat : articles &lt;a href="https://nostrcompass.org/fr/topics/nip-23/">NIP-23&lt;/a>, événements calendrier &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a> ou lives &lt;a href="https://nostrcompass.org/fr/topics/nip-53/">NIP-53&lt;/a> peuvent tous participer au même espace de groupe. Pour des communautés publiques, ce modèle de confiance assumée côté relay est souvent suffisant ; pour la confidentialité de groupe, &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> ou &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> restent mieux adaptés.&lt;/p>
&lt;h2 id="deep-dive-nip--nip-90-data-vending-machines">Deep Dive NIP : 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> définit un protocole de calcul à la demande sur Nostr. Un client publie une demande de travail, des fournisseurs peuvent y répondre, et les résultats reviennent eux aussi comme événements Nostr. Les kinds &lt;code>5000-5999&lt;/code> sont réservés aux demandes de jobs, les kinds &lt;code>6000-6999&lt;/code> aux résultats et le kind &lt;code>7000&lt;/code> au feedback d&amp;rsquo;état.&lt;/p>
&lt;p>Une demande peut inclure des tags &lt;code>i&lt;/code> pour les entrées, &lt;code>param&lt;/code> pour les paramètres, &lt;code>output&lt;/code> pour le format de sortie attendu, &lt;code>bid&lt;/code> pour le plafond de paiement et des hints de relays pour le retour. Les fournisseurs peuvent demander un paiement avant exécution, publier des états &lt;code>processing&lt;/code> ou &lt;code>payment-required&lt;/code>, puis renvoyer un résultat du kind correspondant, toujours &lt;code>1000&lt;/code> au-dessus du kind de la demande. Le protocole supporte aussi le chaînage de jobs, ce qui permet d&amp;rsquo;enchaîner transcription, résumé et traduction sans couche d&amp;rsquo;orchestration séparée.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ou vous avez des nouvelles à partager ? Envoyez-nous un DM sur Nostr ou retrouvez-nous sur &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/fr/newsletters/2026-04-08-newsletter/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#amethyst-livre-arti-tor-integre-mls-et-marmot-en-pur-kotlin">v1.08.0&lt;/a> avec l&amp;rsquo;intégration d&amp;rsquo;Arti Tor et une interface Shorts repensée, tout en fusionnant des implémentations en pur Kotlin de &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> dans sa bibliothèque &lt;a href="https://nostrcompass.org/fr/topics/quartz/">Quartz&lt;/a>. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#nostur-v1270-ajoute-lenregistrement-video-et-les-reponses-privees">v1.27.0&lt;/a> avec enregistrement vidéo, profils GIF animés et réponses privées. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a> lance &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#shosho-v0150-lance-shows-et-un-carrousel-video-vertical">v0.15.0&lt;/a> avec Shows (informations de live personnalisées connectées à OBS) et un carrousel vidéo vertical de style TikTok. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#nymchat-abandonne-marmot-et-livre-des-chats-de-groupe-nip-17-renforces">abandonne Marmot et livre des chats de groupe NIP-17 renforcés&lt;/a> avec des clés éphémères rotatives. &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#nostr-vpn-livre-le-support-des-exit-nodes-et-le-packaging-umbrel">le support des exit nodes et le packaging Umbrel&lt;/a> à travers six versions. &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> passe à &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#amber-v600-pre1-ajoute-des-cles-de-signature-nip-46-par-connexion">v6.0.0-pre1&lt;/a> avec des clés de signature &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> par connexion et des mises à jour in-app via Zapstore. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> atteint &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-livre-lauto-update-via-zapstore">v0.10.0-beta&lt;/a> avec l&amp;rsquo;auto-update APK via Zapstore, et &lt;a href="https://nostrcompass.org/fr/topics/nip-58/">NIP-58&lt;/a> (Badges) reçoit une &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#mises-a-jour-des-nip">migration de kind&lt;/a>. Deux deep dives NIP couvrent &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) et &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing).&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#amethyst-livre-arti-tor-integre-mls-et-marmot-en-pur-kotlin">v1.08.0&lt;/a> avec l&amp;rsquo;intégration d&amp;rsquo;Arti Tor et une interface Shorts repensée, tout en fusionnant des implémentations en pur Kotlin de &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> dans sa bibliothèque &lt;a href="https://nostrcompass.org/fr/topics/quartz/">Quartz&lt;/a>. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#nostur-v1270-ajoute-lenregistrement-video-et-les-reponses-privees">v1.27.0&lt;/a> avec enregistrement vidéo, profils GIF animés et réponses privées. &lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a> lance &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#shosho-v0150-lance-shows-et-un-carrousel-video-vertical">v0.15.0&lt;/a> avec Shows (informations de live personnalisées connectées à OBS) et un carrousel vidéo vertical de style TikTok. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#nymchat-abandonne-marmot-et-livre-des-chats-de-groupe-nip-17-renforces">abandonne Marmot et livre des chats de groupe NIP-17 renforcés&lt;/a> avec des clés éphémères rotatives. &lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#nostr-vpn-livre-le-support-des-exit-nodes-et-le-packaging-umbrel">le support des exit nodes et le packaging Umbrel&lt;/a> à travers six versions. &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> passe à &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#amber-v600-pre1-ajoute-des-cles-de-signature-nip-46-par-connexion">v6.0.0-pre1&lt;/a> avec des clés de signature &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> par connexion et des mises à jour in-app via Zapstore. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> atteint &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-livre-lauto-update-via-zapstore">v0.10.0-beta&lt;/a> avec l&amp;rsquo;auto-update APK via Zapstore, et &lt;a href="https://nostrcompass.org/fr/topics/nip-58/">NIP-58&lt;/a> (Badges) reçoit une &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#mises-a-jour-des-nip">migration de kind&lt;/a>. Deux deep dives NIP couvrent &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) et &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing).&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="amethyst-livre-arti-tor-intègre-mls-et-marmot-en-pur-kotlin">Amethyst livre Arti Tor, intègre MLS et Marmot en pur Kotlin&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, le client Android maintenu par vitorpamplona, a livré quatre versions de &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.3">v1.07.3&lt;/a> à &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.08.0">v1.08.0&lt;/a> et a fusionné un gros lot de travail non encore publié dans sa bibliothèque &lt;a href="https://nostrcompass.org/fr/topics/quartz/">Quartz&lt;/a> (le module Nostr Kotlin Multiplatform partagé). La version phare est v1.08.0 « Arti Tor », qui migre la connectivité Tor de l&amp;rsquo;application depuis la bibliothèque Tor en C vers &lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>, l&amp;rsquo;implémentation Rust du Tor Project. La migration corrige des crashes aléatoires qui survenaient avec les anciens bindings Tor en C. Arti est le remplaçant de long terme du Tor Project pour le codebase en C, réécrit depuis zéro en Rust pour la sûreté mémoire et les async I/O.&lt;/p>
&lt;p>La version v1.07.3 a repensé l&amp;rsquo;interface Shorts, en remplaçant le design paginé par des flux bord à bord pour les images, les shorts et les vidéos longues. La même version a migré les badges vers le kind &lt;code>10008&lt;/code> et les bookmarks vers le kind &lt;code>10003&lt;/code>, en s&amp;rsquo;alignant sur la migration de kind &lt;a href="https://nostrcompass.org/fr/topics/nip-58/">NIP-58&lt;/a> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#mises-a-jour-des-nip">fusionnée cette semaine&lt;/a>. v1.07.4 a corrigé un problème de gestion de secret Nostr Wallet Connect, et v1.07.5 a corrigé un crash lors du téléversement d&amp;rsquo;images.&lt;/p>
&lt;p>Sur &lt;code>main&lt;/code> mais pas encore dans une release taguée, l&amp;rsquo;équipe a écrit une implémentation complète en Kotlin de &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> et du protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, supprimant le besoin de bindings natifs vers des bibliothèques C/Rust. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2147">PR #2147&lt;/a> ajoute la couche centrale de messagerie de groupe MLS de Marmot, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2149">PR #2149&lt;/a> ajoute l&amp;rsquo;interface de chat de groupe, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2146">PR #2146&lt;/a> ajoute les processeurs de messages entrants et sortants avec un gestionnaire d&amp;rsquo;abonnements, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2141">PR #2141&lt;/a> ajoute la persistance d&amp;rsquo;état de groupe MLS et la gestion de rotation des KeyPackage, &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2150">PR #2150&lt;/a> ajoute une suite de tests MLS complète avec une signature GroupInfo améliorée, et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2158">PR #2158&lt;/a> ajoute le suivi du statut de publication des KeyPackage. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2166">PR #2166&lt;/a> ajoute une implémentation secp256k1 en pur Kotlin pour les opérations cryptographiques Nostr, remplaçant la dépendance à la bibliothèque C native. Combiné à l&amp;rsquo;implémentation MLS en Kotlin, &lt;a href="https://nostrcompass.org/fr/topics/quartz/">Quartz&lt;/a> peut exécuter la signature Nostr et la messagerie de groupe Marmot sans aucun binding natif, ce qui ouvre la voie à des cibles Kotlin Multiplatform, y compris iOS.&lt;/p>
&lt;p>L&amp;rsquo;équipe construit aussi le support de &lt;a href="https://nostrcompass.org/en/topics/nip-ac/">NIP-AC&lt;/a> (P2P Voice and Video Calls) : &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a> ajoute une suite de tests complète pour la machine d&amp;rsquo;état d&amp;rsquo;appel NIP-AC, et &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a> empêche d&amp;rsquo;anciennes offres d&amp;rsquo;appel de se redéclencher après un redémarrage de l&amp;rsquo;application.&lt;/p>
&lt;h3 id="nostur-v1270-ajoute-lenregistrement-vidéo-et-les-réponses-privées">Nostur v1.27.0 ajoute l&amp;rsquo;enregistrement vidéo et les réponses privées&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>, le client Nostr iOS, a livré &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/v1.27.0">v1.27.0&lt;/a> le 2 avril. La version ajoute l&amp;rsquo;enregistrement vidéo in-app avec découpe avant téléversement, de sorte que les utilisateurs puissent capturer de courts clips, les raccourcir et les publier sans quitter le client. Le support des GIFs animés s&amp;rsquo;étend aux photos de profil et de bannière, avec aussi l&amp;rsquo;ajout du rendu WebP animé. Une nouvelle intégration Shortcuts permet aux utilisateurs d&amp;rsquo;envoyer des posts Nostr depuis les automatisations Apple Shortcuts. La version ajoute aussi les réponses privées et corrige des problèmes de compatibilité DM qui affectaient la livraison des messages entre Nostur et d&amp;rsquo;autres clients.&lt;/p>
&lt;h3 id="shosho-v0150-lance-shows-et-un-carrousel-vidéo-vertical">Shosho v0.15.0 lance Shows et un carrousel vidéo vertical&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>, l&amp;rsquo;application de live streaming Nostr, a livré &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.0">v0.15.0&lt;/a> et &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.1">v0.15.1&lt;/a> le 7 avril. La fonctionnalité phare est Shows : les streamers peuvent préparer des informations d&amp;rsquo;émission personnalisées avant de passer en direct et connecter leur show à OBS ou à n&amp;rsquo;importe quel encodeur externe. Cela sépare les métadonnées « qu&amp;rsquo;est-ce que je diffuse » de l&amp;rsquo;acte de passer en direct, de sorte que les streamers puissent préparer titres, descriptions et produits avant de commencer la diffusion. La même version ajoute un carrousel vidéo vertical de style TikTok pour parcourir lives, clips et replays dans un flux plein écran, ainsi que Quick Add pour publier des clips vidéo et ajouter des produits directement depuis une page de profil. v0.15.1 corrige un bug où le clavier masquait le champ de saisie du chat de live.&lt;/p>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;h3 id="notedeck-v0100-beta-livre-lauto-update-via-zapstore">Notedeck v0.10.0-beta livre l&amp;rsquo;auto-update via Zapstore&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, le client desktop et mobile de l&amp;rsquo;équipe Damus, a livré &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.1">v0.10.0-beta.1&lt;/a> et &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.2">v0.10.0-beta.2&lt;/a> comme préreleases de test pour l&amp;rsquo;auto-update APK. &lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a> ajoute l&amp;rsquo;auto-update APK via l&amp;rsquo;updater Nostr/Zapstore sur Android, en prolongeant &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-18-newsletter/#notedeck-moves-release-discovery-onto-nostr">le travail de découverte de mises à jour natif à Nostr de la Newsletter #14&lt;/a>. Le flux de mise à jour découvre les nouvelles releases via des événements Nostr publiés sur des relays, puis télécharge l&amp;rsquo;APK depuis l&amp;rsquo;endroit où le développeur l&amp;rsquo;héberge (GitHub releases, Blossom CDN ou autres sources), vérifie le hash SHA-256 contre l&amp;rsquo;événement Nostr signé, puis l&amp;rsquo;installe. &lt;a href="https://github.com/damus-io/notedeck/pull/1438">PR #1438&lt;/a> corrige un bug d&amp;rsquo;écran d&amp;rsquo;accueil où les boutons Login et CreateAccount revenaient immédiatement en arrière, et &lt;a href="https://github.com/damus-io/notedeck/pull/1424">PR #1424&lt;/a> corrige un débordement de texte dans la vue de session Agentium AI.&lt;/p>
&lt;h3 id="amber-v600-pre1-ajoute-des-clés-de-signature-nip-46-par-connexion">Amber v6.0.0-pre1 ajoute des clés de signature NIP-46 par connexion&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;application signataire &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), a livré &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.0-pre1">v6.0.0-pre1&lt;/a> le 4 avril. Le changement le plus important est l&amp;rsquo;ajout de clés de signature par connexion pour le protocole bunker &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (Nostr Remote Signing). Au lieu d&amp;rsquo;utiliser une seule paire de clés pour toutes les connexions bunker, Amber génère désormais une clé distincte pour chaque client connecté. Si la connexion d&amp;rsquo;un client est compromise, l&amp;rsquo;attaquant ne peut pas usurper le signataire auprès des autres clients.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/pull/377">PR #377&lt;/a> ajoute la vérification et l&amp;rsquo;installation de mises à jour in-app via Zapstore, rejoignant &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta-livre-lauto-update-via-zapstore">Notedeck&lt;/a> dans l&amp;rsquo;adoption d&amp;rsquo;une distribution d&amp;rsquo;apps native à Nostr. &lt;a href="https://github.com/greenart7c3/Amber/pull/375">PR #375&lt;/a> gère les échecs AndroidKeyStore proprement en affichant un avertissement aux utilisateurs au lieu de crasher, et &lt;a href="https://github.com/greenart7c3/Amber/pull/371">PR #371&lt;/a> ajoute un nettoyage de base de données avec limites de taille et troncature de contenu pour empêcher une croissance de stockage non bornée. La prérelease reprend aussi la liste blanche d&amp;rsquo;auth relay &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> et la connexion par phrase mnémonique de récupération du &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#amber-v502-through-v504">cycle v5.0.x couvert la semaine dernière&lt;/a>.&lt;/p>
&lt;h3 id="nostria-livre-une-application-mobile-native">Nostria livre une application mobile native&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, le client Nostr cross-platform maintenu par SondreB, a publié une application mobile native pour Android avec huit versions de &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.11">v3.1.11&lt;/a> à &lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.18">v3.1.18&lt;/a>. La nouveauté la plus importante est le support natif d&amp;rsquo;un signataire local pour des signataires comme &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> et Aegis. Des &lt;a href="https://www.nostria.app/download">installeurs desktop&lt;/a> pour Linux, macOS et Windows sont aussi disponibles. &lt;a href="https://github.com/nostria-app/nostria/pull/610">PR #610&lt;/a> réduit la pression mémoire du flux avec des limites runtime adaptatives et un nettoyage des URLs d&amp;rsquo;aperçu. v3.1.14 corrige l&amp;rsquo;intégration avec Brainstorm, un fournisseur &lt;a href="https://nostrcompass.org/fr/topics/web-of-trust/">Web of Trust&lt;/a>. v3.1.15 se concentre sur des améliorations musicales. La nouvelle application Android est disponible sur &lt;a href="https://zapstore.dev/apps/app.nostria">Zapstore&lt;/a>.&lt;/p>
&lt;h3 id="divine-108-livre-des-téléversements-reprenables-et-des-dms">diVine 1.0.8 livre des téléversements reprenables et des DMs&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, le client vidéo short-form, a livré &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.8">1.0.8&lt;/a> avec 87 PRs fusionnées. Les téléversements reprenables permettent aux créateurs de reprendre des téléversements interrompus morceau par morceau au lieu de repartir de zéro sur une connexion instable. La version ajoute des réglages de qualité vidéo et de bitrate, le double tap pour liker, et des améliorations des DMs. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2722">PR #2722&lt;/a> ajoute un plugin caméra macOS pour la capture vidéo desktop, et &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2820">PR #2820&lt;/a> migre le système de notifications vers une architecture BLoC avec enrichissement et regroupement. L&amp;rsquo;équipe a aussi remplacé les stickers et illustrations de catégories générés par AI par des 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-ajoute-le-floutage-des-notes-sensibles-et-lauth-nip-42">Manent v1.3.0 ajoute le floutage des notes sensibles et l&amp;rsquo;auth NIP-42&lt;/h3>
&lt;p>&lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>, l&amp;rsquo;application privée de notes chiffrées et de stockage de fichiers, a livré &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.3.0">v1.3.0&lt;/a> le 2 avril. Les utilisateurs peuvent maintenant marquer des notes comme sensibles afin de les flouter dans la vue liste, ce qui garde le contenu privé caché lors d&amp;rsquo;un défilement occasionnel. La version ajoute aussi le support &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> (Authentication of Clients to Relays), permettant à Manent de s&amp;rsquo;authentifier auprès des relays qui l&amp;rsquo;exigent avant d&amp;rsquo;accepter les événements. Manent stocke toutes les données chiffrées sur les relays Nostr à l&amp;rsquo;aide de la paire de clés de l&amp;rsquo;utilisateur, donc le support NIP-42 élargit l&amp;rsquo;ensemble des relays qu&amp;rsquo;il peut utiliser pour le stockage.&lt;/p>
&lt;h3 id="wisp-v0170-à-v0173-ajoutent-les-zaps-sur-live-stream-et-la-sauvegarde-du-portefeuille">Wisp v0.17.0 à v0.17.3 ajoutent les zaps sur live stream et la sauvegarde du portefeuille&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, le client Nostr Android, a livré six versions de &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.2-beta">v0.16.2-beta&lt;/a> à &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.3-beta">v0.17.3-beta&lt;/a> avec 44 PRs fusionnées. La version v0.17.0 ajoute des invites de sécurité pour la sauvegarde du portefeuille et des améliorations UX pour les zaps. &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.1-beta">v0.17.1&lt;/a> ajoute la visibilité du chat de live stream à travers les plateformes et la fonctionnalité de zap sur live stream. &lt;a href="https://github.com/barrydeen/wisp/pull/423">PR #423&lt;/a> ajoute l&amp;rsquo;auto-search des profils, une animation de succès de zap et des améliorations du statut utilisateur. &lt;a href="https://github.com/barrydeen/wisp/pull/426">PR #426&lt;/a> corrige un crash out-of-memory dans &lt;code>computeId&lt;/code> pour des événements avec de grandes listes de tags. Les versions v0.16.x avaient ajouté l&amp;rsquo;autocomplétion des shortcodes emoji, des améliorations de l&amp;rsquo;interface de chat de groupe et le filtrage des utilisateurs bloqués sur tous les chemins de notification.&lt;/p>
&lt;h3 id="mostro-livre-des-deep-links-des-taux-de-change-nostr-et-un-correctif-de-paiement-en-double">Mostro livre des deep links, des taux de change Nostr et un correctif de paiement en double&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, l&amp;rsquo;échange Bitcoin pair à pair construit sur Nostr, a connu cette semaine des mises à jour à la fois sur son daemon serveur et son client mobile. Côté serveur, &lt;a href="https://github.com/MostroP2P/mostro/pull/692">PR #692&lt;/a> empêche que des écritures d&amp;rsquo;ordres obsolètes causent des paiements en double, un bug qui pouvait conduire à payer deux fois un vendeur pour la même transaction. &lt;a href="https://github.com/MostroP2P/mostro/pull/693">PR #693&lt;/a> utilise des mises à jour ciblées pour les écritures &lt;code>dev_fee&lt;/code> au lieu d&amp;rsquo;écrasements complets d&amp;rsquo;ordres.&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, le client Flutter, a livré &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.3">v1.2.3&lt;/a> le 3 avril. La version gère les deep links provenant de différentes instances Mostro, de sorte que les utilisateurs puissent toucher des liens qui routent vers le bon serveur d&amp;rsquo;échange. &lt;a href="https://github.com/MostroP2P/mobile/pull/498">PR #498&lt;/a> détecte les DMs admin et de litige dans le pipeline de notifications en arrière-plan, et l&amp;rsquo;application récupère désormais les taux de change depuis Nostr avec un fallback HTTP/cache. &lt;a href="https://github.com/MostroP2P/mobile/pull/560">PR #560&lt;/a> corrige un bug bloquant la connexion relay qui empêchait l&amp;rsquo;application d&amp;rsquo;atteindre les relays dans certaines conditions réseau.&lt;/p>
&lt;h3 id="unfiltered-v1012-ajoute-les-hashtags-et-les-commentaires">Unfiltered v1.0.12 ajoute les hashtags et les commentaires&lt;/h3>
&lt;p>&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>, un client Nostr centré sur le contenu image-first, a livré &lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.12">v1.0.12&lt;/a>. &lt;a href="https://github.com/dmcarrington/unfiltered/pull/69">PR #69&lt;/a> ajoute le support des hashtags et &lt;a href="https://github.com/dmcarrington/unfiltered/pull/72">PR #72&lt;/a> ajoute la possibilité d&amp;rsquo;écrire et d&amp;rsquo;afficher des commentaires sur les posts. &lt;a href="https://github.com/dmcarrington/unfiltered/pull/71">PR #71&lt;/a> corrige des problèmes de navigation avec plusieurs images par post.&lt;/p>
&lt;h3 id="primal-android-livre-le-partage-multi-comptes-du-portefeuille-et-lauto-reconnexion-du-signataire-distant">Primal Android livre le partage multi-comptes du portefeuille et l&amp;rsquo;auto-reconnexion du signataire distant&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal&lt;/a>, le client Nostr Android, a livré une version le 7 avril. La mise à jour ajoute le partage multi-comptes du portefeuille et un menu overflow avec suppression du portefeuille dans Dev Tools. Le signataire distant se reconnecte désormais automatiquement lors des pertes de connexion, et le service portefeuille a gagné sa propre logique d&amp;rsquo;auto-reconnexion. Les correctifs incluent le fait que les votes zap de sondage n&amp;rsquo;apparaissent plus comme Top Zaps, la prévention des crashes sur option de sondage vide, le masquage du solde du portefeuille quand aucun portefeuille n&amp;rsquo;existe, et le mapping des types de WalletException vers des codes d&amp;rsquo;erreur dans les réponses NWC.&lt;/p>
&lt;h3 id="titan-v010-lance-un-navigateur-natif-nsite-avec-enregistrement-de-noms-sur-bitcoin">Titan v0.1.0 lance un navigateur natif &lt;code>nsite://&lt;/code> avec enregistrement de noms sur Bitcoin&lt;/h3>
&lt;p>&lt;a href="https://github.com/btcjt/titan">Titan&lt;/a>, un navigateur desktop natif pour le web Nostr, a livré &lt;a href="https://github.com/btcjt/titan/releases/tag/v0.1.0">v0.1.0&lt;/a> le 7 avril. Titan résout les URLs &lt;code>nsite://&lt;/code> en recherchant des noms lisibles par l&amp;rsquo;humain enregistrés sur Bitcoin, en interrogeant les relays Nostr pour les événements de contenu du site, puis en rendant les pages récupérées depuis des serveurs &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>. Le résultat est une expérience de navigation web sans DNS, sans certificats TLS et sans hébergeurs. Les noms sont enregistrés via une &lt;a href="https://npub1hmq6xuqnplk5lw0h3700cujmx5gymqn5wrn42u6432r6ntzumezqc3marw.nsite.lol/register">interface web&lt;/a> liée à des transactions Bitcoin. La version initiale est livrée sous forme de &lt;code>.dmg&lt;/code> macOS (ARM, avec support Rosetta 2 pour Intel) et inclut le support d&amp;rsquo;un environnement de développement Nix.&lt;/p>
&lt;h3 id="bikel-v150-livre-un-service-davant-plan-natif-pour-les-téléphones-de-googlés">Bikel v1.5.0 livre un service d&amp;rsquo;avant-plan natif pour les téléphones de-Googlés&lt;/h3>
&lt;p>&lt;a href="https://github.com/Mnpezz/bikel">Bikel&lt;/a>, un tracker cycliste décentralisé qui transforme les trajets en données d&amp;rsquo;infrastructure publique via Nostr, a livré &lt;a href="https://github.com/Mnpezz/bikel/releases/tag/v1.5.0">v1.5.0&lt;/a> le 4 avril. La version migre depuis Expo TaskManager dépendant de GMS vers un service d&amp;rsquo;avant-plan natif personnalisé, garantissant un suivi fiable des trajets en arrière-plan sur LineageOS, GrapheneOS et d&amp;rsquo;autres variantes Android de-Googlées. Le Bikel Bot a reçu une architecture dual-pocket avec collecte eCash autonome via des Cashu nutzaps. v1.4.3 et v1.4.2 corrigent la synchronisation du suivi en arrière-plan pour les environnements Android non standard, et l&amp;rsquo;application ajoute des bascules de points de carte pour les racks à vélos OSM.&lt;/p>
&lt;h3 id="sprout-ajoute-le-support-de-nip-01-nip-23-et-nip-33">Sprout ajoute le support de NIP-01, NIP-23 et NIP-33&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>, une plateforme de communication de Block avec relay Nostr intégré, a livré &lt;a href="https://github.com/block/sprout/releases/tag/desktop/v0.1.0-rc7">desktop/v0.1.0-rc7&lt;/a> le 6 avril. Cette semaine, l&amp;rsquo;équipe a ajouté le support des articles kind &lt;code>30023&lt;/code> &lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a> (Long-form Content), des événements remplaçables paramétrés &lt;a href="https://nostrcompass.org/en/topics/nip-33/">NIP-33&lt;/a> avec remplacement indexé par tag &lt;code>d&lt;/code>, et des text notes kind &lt;code>1&lt;/code> et follow lists kind &lt;code>3&lt;/code> &lt;a href="https://nostrcompass.org/fr/topics/nip-01/">NIP-01&lt;/a>/&lt;a href="https://nostrcompass.org/en/topics/nip-02/">NIP-02&lt;/a>. La version ajoute aussi un système de thèmes IDE adaptatifs avec 54 thèmes, des améliorations UX de workflow et d&amp;rsquo;historique d&amp;rsquo;exécution d&amp;rsquo;agents, ainsi qu&amp;rsquo;un nettoyage de la sidebar membres.&lt;/p>
&lt;h3 id="mesh-llm-v0560-livre-un-protocole-de-configuration-distribué">mesh-llm v0.56.0 livre un protocole de configuration distribué&lt;/h3>
&lt;p>&lt;a href="https://github.com/michaelneale/mesh-llm">mesh-llm&lt;/a>, un système d&amp;rsquo;inférence LLM distribué qui utilise des paires de clés Nostr pour l&amp;rsquo;identité des nœuds, a livré &lt;a href="https://github.com/michaelneale/mesh-llm/releases/tag/v0.56.0">v0.56.0&lt;/a> le 7 avril. La version ajoute un protocole de configuration distribué avec une sémantique de propriété, une quantification asymétrique du cache KV (clés Q8_0 avec valeurs Q4) pour réduire l&amp;rsquo;usage mémoire, le stockage dans l&amp;rsquo;OS keychain pour les keystores d&amp;rsquo;identité, un streaming de chat fluide avec mise en file des messages, et des correctifs pour la mise en page fullscreen et le découpage du cache KV avec flash attention.&lt;/p>
&lt;h3 id="nostr-vpn-livre-le-support-des-exit-nodes-et-le-packaging-umbrel">Nostr VPN livre le support des exit nodes et le packaging Umbrel&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a>, un VPN pair à pair qui utilise les relays Nostr pour le signalement et WireGuard pour les tunnels chiffrés, a livré six versions de &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.0">v0.3.0&lt;/a> à &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.6">v0.3.6&lt;/a> cette semaine. Le cycle v0.3.x ajoute le support des exit nodes sur Windows et macOS, permettant à des pairs de router le trafic internet via d&amp;rsquo;autres nœuds du réseau. La propagation des invitations et des alias se synchronise désormais sur Nostr, de sorte que les utilisateurs puissent partager l&amp;rsquo;accès réseau sans coordination hors bande. Les versions ajoutent le packaging Umbrel pour un déploiement auto-hébergé, le NAT punch-through en utilisant des endpoints publics mémorisés, le nettoyage automatique des exit nodes obsolètes, et une spécification de protocole publiée. Le projet a aussi stabilisé la gestion des routes macOS avec des routes par défaut auto-réparatrices et une réparation de l&amp;rsquo;underlay, et a ajouté une build Android via Tauri. Des builds sont disponibles pour macOS (Apple Silicon et Intel), Linux (AppImage et .deb), Windows et Android.&lt;/p>
&lt;h3 id="nymchat-abandonne-marmot-et-livre-des-chats-de-groupe-nip-17-renforcés">Nymchat abandonne Marmot et livre des chats de groupe NIP-17 renforcés&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>, le client de chat capable de MLS, a livré 14 versions de &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/3.56.261">v3.56.261&lt;/a> à &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.274">v3.58.274&lt;/a>. Le changement le plus significatif est un pivot protocolaire : &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.57.261">v3.57.261&lt;/a> a ajouté des chats de groupe MLS Marmot, mais &lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.268">v3.58.268&lt;/a> est revenu à &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> parce que le support multi-appareils de Marmot n&amp;rsquo;est pas encore terminé, ce qui causait des problèmes de synchronisation de l&amp;rsquo;état des chats de groupe entre appareils. v3.58.271 introduit des chats de groupe NIP-17 renforcés avec des clés éphémères rotatives pour tous les messages, conçues pour prévenir les attaques de timing et de corrélation. La semaine a aussi apporté un système d&amp;rsquo;amis avec contrôle granulaire des paramètres (&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.262">v3.58.262&lt;/a>), la synchronisation des messages de groupe MLS dans les paramètres applicatifs chiffrés, et plusieurs correctifs de connectivité relay.&lt;/p>
&lt;h3 id="nak-v0195-ajoute-blossom-multi-serveur-et-la-publication-outbox">nak v0.19.5 ajoute Blossom multi-serveur et la publication outbox&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, la boîte à outils Nostr en ligne de commande de fiatjaf, a livré &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.5">v0.19.5&lt;/a>. La commande &lt;code>blossom&lt;/code> accepte désormais plusieurs flags &lt;code>--server&lt;/code> pour téléverser vers plusieurs serveurs &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> en un seul appel. Une nouvelle commande &lt;code>key&lt;/code> complète les clés partielles en les left-padding avec des zéros. La commande &lt;code>event&lt;/code> gagne un flag &lt;code>--outbox&lt;/code> pour publier des événements via le modèle outbox, et &lt;code>fetch&lt;/code> sort maintenant avec un code d&amp;rsquo;erreur quand aucun événement n&amp;rsquo;est renvoyé.&lt;/p>
&lt;h2 id="en-développement">En développement&lt;/h2>
&lt;h3 id="white-noise-ajoute-des-aperçus-thumbhash-et-un-pont-denregistrement-push">White Noise ajoute des aperçus thumbhash et un pont d&amp;rsquo;enregistrement push&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, la messagerie privée construite sur le protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, a fusionné cinq PRs. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/549">PR #549&lt;/a> remplace les aperçus d&amp;rsquo;images blurhash par thumbhash, un algorithme plus récent qui produit des images placeholder plus nettes avec une charge utile plus petite (généralement moins de 30 bytes contre environ 50-100 bytes pour blurhash) tout en conservant le ratio d&amp;rsquo;aspect et la distribution de couleurs de l&amp;rsquo;image d&amp;rsquo;origine. Blurhash est conservé comme fallback pour les anciens contenus. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/548">PR #548&lt;/a> met à jour whitenoise-rs et ajoute le pont d&amp;rsquo;enregistrement push &lt;a href="https://nostrcompass.org/fr/topics/mip-05/">MIP-05&lt;/a>, connectant &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#marmot-moves-keypackages-to-addressable-events-and-tightens-push-notifications">le travail sur la spécification des notifications push de la semaine dernière&lt;/a> au client. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/493">PR #493&lt;/a> ajoute une pagination à curseur pour les messages de chat, remplaçant l&amp;rsquo;ancienne stratégie de chargement par une approche pilotée par le scroll.&lt;/p>
&lt;h3 id="route96-ajoute-une-configuration-dynamique-des-labels-et-un-nettoyage-zéro-egress">Route96 ajoute une configuration dynamique des labels et un nettoyage zéro-egress&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, le serveur média &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> de v0l, a fusionné trois PRs. &lt;a href="https://github.com/v0l/route96/pull/80">PR #80&lt;/a> ajoute la configuration dynamique des modèles de labels via l&amp;rsquo;API d&amp;rsquo;administration, permettant aux opérateurs de changer de modèles de classification de contenu sans redémarrer le serveur. &lt;a href="https://github.com/v0l/route96/pull/82">PR #82&lt;/a> ajoute les champs de configuration de labels à l&amp;rsquo;interface d&amp;rsquo;administration. &lt;a href="https://github.com/v0l/route96/pull/79">PR #79&lt;/a> ajoute une politique de nettoyage de fichiers zéro-egress qui supprime automatiquement les fichiers qui n&amp;rsquo;ont jamais été téléchargés, afin de réduire les coûts de stockage pour les opérateurs.&lt;/p>
&lt;h3 id="snort-livre-du-durcissement-de-sécurité-et-des-factures-de-paiement-dvm">Snort livre du durcissement de sécurité et des factures de paiement DVM&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, le client web, a livré deux versions cette semaine avec un audit de sécurité complet. Les correctifs incluent la vérification des signatures Schnorr, la protection &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> contre la falsification de messages relay (empêchant des attaquants d&amp;rsquo;injecter des requêtes de signature via des relays compromis), des améliorations du chiffrement du PIN, et la suppression de la confiance de délégation NIP-26. Les gains de performances viennent d&amp;rsquo;une vérification Schnorr batchée en WASM, de routes chargées paresseusement, de traductions précompilées et de l&amp;rsquo;élimination d&amp;rsquo;une double vérification par événement. &lt;a href="https://github.com/v0l/snort/pull/618">PR #618&lt;/a> ajoute l&amp;rsquo;affichage de factures kind &lt;code>7000&lt;/code> &lt;a href="https://nostrcompass.org/en/topics/nip-90/">NIP-90&lt;/a> (Data Vending Machine) requérant paiement, de sorte que lorsqu&amp;rsquo;un DVM répond avec une exigence de paiement, Snort rend la facture Lightning directement dans le flux.&lt;/p>
&lt;h3 id="damus-améliore-la-compaction-lmdb">Damus améliore la compaction LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, le client iOS, a fusionné &lt;a href="https://github.com/damus-io/damus/pull/3719">PR #3719&lt;/a> ajoutant une compaction LMDB automatique planifiée, empêchant la base de données locale de croître sans borne au fil du temps. &lt;a href="https://github.com/damus-io/damus/pull/3663">PR #3663&lt;/a> améliore BlurOverlayView pour lui donner un aspect protecteur plutôt que cassé.&lt;/p>
&lt;h3 id="captains-log-ajoute-lindexation-des-tags-et-la-synchronisation-des-notes">Captain&amp;rsquo;s Log ajoute l&amp;rsquo;indexation des tags et la synchronisation des notes&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/captains-log">Captain&amp;rsquo;s Log&lt;/a> (Comet), l&amp;rsquo;outil d&amp;rsquo;écriture long-form natif à Nostr de Nodetec, a fusionné quatre PRs cette semaine. &lt;a href="https://github.com/nodetec/captains-log/pull/156">PR #156&lt;/a> ajoute l&amp;rsquo;indexation des tags et le support de synchronisation entre les notes, &lt;a href="https://github.com/nodetec/captains-log/pull/157">PR #157&lt;/a> refactorise la synchronisation des notes et la gestion des tags, et &lt;a href="https://github.com/nodetec/captains-log/pull/159">PR #159&lt;/a> corrige la synchronisation des notes mises à la corbeille afin que les notes supprimées restent supprimées sur tous les appareils.&lt;/p>
&lt;h3 id="relatr-v02x-repense-le-système-de-plugins-avec-une-marketplace-de-validateurs-native-à-nostr">Relatr v0.2.x repense le système de plugins avec une marketplace de validateurs native à Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a>, un moteur de scoring &lt;a href="https://nostrcompass.org/fr/topics/web-of-trust/">Web of Trust&lt;/a> qui calcule des classements de confiance à partir de la distance dans le graphe social et de validateurs configurables, a livré la famille v0.2.x avec une refonte complète de son système de plugins. Les validateurs sont désormais écrits en Elo, un langage d&amp;rsquo;expressions fonctionnelles portable forké pour supporter des capacités multi-étapes orchestrées par l&amp;rsquo;hôte (requêtes Nostr, lookups de graphe social, résolution NIP-05). Les plugins sont publiés comme événements Nostr kind &lt;code>765&lt;/code>, rendant leur distribution native au réseau relay. Une nouvelle &lt;a href="https://relatr.net">plugin marketplace&lt;/a> permet aux opérateurs de découvrir, installer et pondérer des validateurs depuis le navigateur, avec un CLI (&lt;code>relo&lt;/code>) pour l&amp;rsquo;écriture et la publication locales. L&amp;rsquo;architecture est sandboxée : les plugins ne peuvent invoquer que les capacités que l&amp;rsquo;hôte fournit explicitement, de sorte qu&amp;rsquo;un validateur malveillant ne peut pas sortir de son périmètre défini. Les instances Relatr peuvent maintenant être gérées depuis le site web, avec une visibilité complète sur les plugins qui composent l&amp;rsquo;algorithme de scoring et sur leurs pondérations individuelles.&lt;/p>
&lt;h3 id="shopstr-améliore-la-navigation-mobile-et-le-contrôle-daccès">Shopstr améliore la navigation mobile et le contrôle d&amp;rsquo;accès&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, la marketplace native à Nostr pour acheter et vendre avec Bitcoin, a poussé 158 commits cette semaine à travers son application principale et le projet compagnon &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>. Les correctifs incluent des améliorations de mise en page mobile pour les communautés, la fermeture des menus à la navigation et la fermeture automatique des menus déroulants. Les routes protégées ne peuvent plus être atteintes par URL directe sans connexion, et la logique de matching des slugs gère désormais correctement plusieurs correspondances exactes.&lt;/p>
&lt;h3 id="pollerama-ajoute-des-notifications-la-recherche-de-films-et-une-nouvelle-interface-de-notation">Pollerama ajoute des notifications, la recherche de films et une nouvelle interface de notation&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-polls">Pollerama&lt;/a>, une application de sondages, enquêtes et notation sociale construite sur Nostr, a ajouté des notifications de fil, une fonctionnalité de recherche de films et une refonte de l&amp;rsquo;interface de notation. La version corrige aussi des problèmes de chargement du flux et augmente les versions de dépendances.&lt;/p>
&lt;h3 id="purser-construit-un-daemon-de-paiement-natif-à-nostr-avec-chiffrement-marmot">Purser construit un daemon de paiement natif à Nostr avec chiffrement Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/EthnTuttle/purser">Purser&lt;/a>, un daemon de paiement natif à Nostr conçu comme remplaçant de Zaprite, a fusionné neuf PRs cette semaine pour construire son architecture centrale. Le projet utilise &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> MLS via MDK pour la messagerie chiffrée entre commerçants et clients, avec Strike et Square comme fournisseurs de paiement. Cette semaine ont atterri le chargement de configuration et de catalogue, la validation du schéma des messages, la couche de communication MDK, les implémentations des fournisseurs Strike et Square, un moteur de polling, une limitation anti-spam, la persistance des paiements en attente et le pipeline de traitement des commandes. Les 99 tests exercent maintenant de vraies opérations MLS mdk-core après que l&amp;rsquo;équipe a retiré le mock MLS au profit d&amp;rsquo;un chiffrement réel en mode local.&lt;/p>
&lt;h3 id="vector-refactorise-les-pièces-jointes-dm-et-ajoute-lédition-de-profil">Vector refactorise les pièces jointes DM et ajoute l&amp;rsquo;édition de profil&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, la messagerie Nostr centrée sur la confidentialité construite avec Tauri, a fusionné &lt;a href="https://github.com/VectorPrivacy/Vector/pull/55">PR #55&lt;/a> refactorisant le frontend. Le déchiffrement et la sauvegarde des pièces jointes DM ont été déplacés vers la bibliothèque vector-core, et l&amp;rsquo;application supporte maintenant l&amp;rsquo;édition de profil. Le flag d&amp;rsquo;annulation d&amp;rsquo;upload est correctement câblé via TauriSendCallback, et les callbacks inutilisés d&amp;rsquo;aperçu de pièces jointes ont été nettoyés.&lt;/p>
&lt;h2 id="travail-sur-le-protocole-et-les-spécifications">Travail sur le protocole et les spécifications&lt;/h2>
&lt;h3 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h3>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-58/">NIP-58&lt;/a> (Badges) : les Profile Badges passent au kind 10008, les Badge Sets au kind 30008&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>) : migre les Profile Badges du kind &lt;code>30008&lt;/code> vers le kind &lt;code>10008&lt;/code> (un événement remplaçable, un par pubkey) et introduit le kind &lt;code>30008&lt;/code> pour les Badge Sets. Auparavant, les Profile Badges utilisaient le même kind (&lt;code>30008&lt;/code>) que les définitions de badges, ce qui en faisait des événements remplaçables paramétrés indexés par un tag &lt;code>d&lt;/code>. Le nouveau kind &lt;code>10008&lt;/code> est un événement remplaçable simple : un par pubkey, sans besoin de tag &lt;code>d&lt;/code>. Les clients interrogent un seul événement remplaçable par utilisateur au lieu de scanner des événements remplaçables paramétrés. Amethyst v1.07.3 embarque déjà cette migration.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> (Git Stuff) : ajout de follow lists liées à git&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2130">PR #2130&lt;/a>) : ajoute des conventions de follow lists pour le suivi des dépôts et des issues NIP-34. Les utilisateurs publient des ensembles de follow kind &lt;code>30000&lt;/code> avec des tags &lt;code>d&lt;/code> comme &lt;code>git-repos&lt;/code> ou &lt;code>git-issues&lt;/code> contenant des références de tag &lt;code>a&lt;/code> vers les dépôts (kind &lt;code>30617&lt;/code>) qu&amp;rsquo;ils veulent suivre. Les clients peuvent s&amp;rsquo;abonner à ces follow sets pour afficher l&amp;rsquo;activité des dépôts dans le flux d&amp;rsquo;un utilisateur, de manière similaire au fonctionnement des contact lists kind &lt;code>3&lt;/code> pour les pubkeys.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&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>) : étend le NIP-100 original (implémenté par 0xChat) avec trois changements : migration vers le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> enveloppé dans des gift wraps &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> pour éliminer les fuites de métadonnées, workflow WebRTC spécifié pour l&amp;rsquo;établissement d&amp;rsquo;appels audio et vidéo (offer, answer, ICE candidates), et modèle d&amp;rsquo;appel de groupe en mesh où chaque pair établit une connexion WebRTC directe avec chaque autre pair. La spécification n&amp;rsquo;est pas rétrocompatible avec NIP-100. Amethyst construit déjà contre elle, avec une suite de tests de machine d&amp;rsquo;état d&amp;rsquo;appel (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a>) et la gestion des offres d&amp;rsquo;appel obsolètes (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a>) livrées cette semaine.&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>) : propose des conventions pour la signature à seuil &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a> (Flexible Round-Optimized Schnorr Threshold) sur Nostr. FROST permet à un groupe de signataires de contrôler collectivement une identité Nostr où n&amp;rsquo;importe quels membres t-of-n peuvent signer des événements sans reconstruire la clé privée complète. Le NIP définit comment coordonner les rounds de signature, distribuer les key shares et publier des événements signés à seuil, en s&amp;rsquo;appuyant sur le travail du signataire Igloo du &lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#igloo-signer-11">projet 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>) : définit un protocole &lt;code>postMessage&lt;/code> pour des applications web sandboxées (« napplets ») tournant dans des iframes et communiquant avec une application hôte (« shell »). Le shell fournit à la napplet la signature Nostr, l&amp;rsquo;accès relay et le contexte utilisateur via une API de messages structurée, tandis que la sandbox iframe empêche l&amp;rsquo;accès direct aux clés. Cela étend le modèle d&amp;rsquo;hébergement de sites web statiques de &lt;a href="https://nostrcompass.org/en/topics/nip-5a/">NIP-5A&lt;/a> vers des applications interactives capables de lire et d&amp;rsquo;écrire des événements Nostr. Le NIP est en développement actif avec une implémentation runtime fonctionnelle.&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>) : renommé depuis l&amp;rsquo;ancienne proposition NIP-A5. Définit des conventions pour publier et découvrir des programmes WebAssembly sur Nostr. Les binaires WASM sont stockés comme événements Nostr, et les clients peuvent les télécharger puis les exécuter dans un runtime sandboxé. Une &lt;a href="https://nprogram.netlify.app/">demo app&lt;/a> montre des scrolls s&amp;rsquo;exécutant dans le navigateur, avec des programmes exemples publiés comme événements Nostr que n&amp;rsquo;importe quel client peut récupérer et exécuter.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) : clarifications&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a>) : resserre le langage de la spécification autour de multiples clés et relays par fournisseur de services, en clarifiant comment les clients doivent gérer des assertions provenant de fournisseurs opérant à travers plusieurs pubkeys ou endpoints relay.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-24/">NIP-24&lt;/a> (Extra Metadata Fields) : &lt;code>published_at&lt;/code> pour les événements remplaçables&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2300">PR #2300&lt;/a>) : généralise le tag &lt;code>published_at&lt;/code> depuis &lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a> (Long-form Content) à tous les événements remplaçables et adressables. Le tag est seulement destiné à l&amp;rsquo;affichage : si &lt;code>published_at&lt;/code> égale &lt;code>created_at&lt;/code>, les clients affichent l&amp;rsquo;événement comme « créé » à ce moment-là ; s&amp;rsquo;ils diffèrent (parce que l&amp;rsquo;événement a été mis à jour), les clients peuvent l&amp;rsquo;afficher comme « mis à jour » à la place. Cela permet aux profils kind &lt;code>0&lt;/code> d&amp;rsquo;afficher des dates « joined at » et à d&amp;rsquo;autres événements remplaçables de préserver leur timestamp de publication d&amp;rsquo;origine à travers les mises à jour. Une proposition complémentaire &lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2302">PR #2302&lt;/a>) ajoute le même tag aux événements de listes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) : kind de gift wrap éphémère&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a>) : ajoute le kind &lt;code>21059&lt;/code> comme contrepartie éphémère au gift wrap kind &lt;code>1059&lt;/code> existant. Les événements éphémères (kinds &lt;code>20000&lt;/code>-&lt;code>29999&lt;/code>) suivent la sémantique &lt;a href="https://nostrcompass.org/fr/topics/nip-01/">NIP-01&lt;/a> : les relays ne sont pas censés les stocker et peuvent les supprimer après livraison. Cela permet aux applications d&amp;rsquo;envoyer des messages gift-wrapped qui disparaissent des relays une fois livrés, réduisant les besoins de stockage pour la messagerie à fort volume tout en conservant le même modèle de chiffrement à trois couches que les DMs &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> classiques.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="opensats-annonce-sa-seizième-vague-de-subventions-nostr">OpenSats annonce sa seizième vague de subventions Nostr&lt;/h3>
&lt;p>&lt;a href="https://opensats.org">OpenSats&lt;/a> a annoncé sa &lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">seizième vague de subventions Nostr&lt;/a> le 8 avril, finançant quatre premières subventions et un renouvellement. &lt;a href="https://github.com/vitorpamplona/amethyst/tree/main/desktopApp">Amethyst Desktop&lt;/a> reçoit un financement pour que le contributeur Robert Nagy construise une application desktop autonome au-dessus des modules &lt;a href="https://nostrcompass.org/fr/topics/quartz/">Quartz&lt;/a> et Commons, apportant l&amp;rsquo;ensemble des fonctionnalités du client Android à des interfaces pilotées à la souris avec connexions relay persistantes. &lt;a href="https://github.com/nogringo/nostr-mail">Nostr Mail&lt;/a> reçoit un financement pour construire un système email complet sur Nostr en utilisant des événements kind &lt;code>1301&lt;/code> enveloppés dans des gift wraps &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a>, avec un client Flutter et des serveurs de pont SMTP pour la compatibilité Gmail/Outlook. &lt;a href="https://github.com/Nostrord/nostrord">Nostrord&lt;/a> reçoit un financement pour un client de groupe basé sur relay &lt;a href="https://nostrcompass.org/en/topics/nip-29/">NIP-29&lt;/a> en Kotlin Multiplatform avec messagerie de groupe, modération et fils à la Discord. &lt;a href="https://github.com/tami1A84/null--nostr">Nurunuru&lt;/a> reçoit un financement pour construire une version iOS native du client Nostr japonais inspirée de l&amp;rsquo;interface familière de LINE, avec connexion biométrique basée sur passkey pour l&amp;rsquo;onboarding. HAMSTR a reçu un renouvellement de subvention (financé pour la première fois lors de la &lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants#hamstr">onzième vague&lt;/a>).&lt;/p>
&lt;h2 id="deep-dive-nip--nip-17-private-direct-messages">Deep Dive NIP : 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> définit le standard actuel des messages directs privés sur Nostr. Il remplace l&amp;rsquo;ancien schéma &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages), qui laissait fuiter des métadonnées (expéditeur, destinataire et timestamps étaient tous visibles sur les relays) et utilisait une construction de chiffrement plus faible. NIP-17 combine &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) pour le chiffrement avec &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) pour la protection des métadonnées, créant un système à trois couches où les relays ne peuvent pas voir qui parle avec qui.&lt;/p>
&lt;p>Le protocole utilise trois kinds d&amp;rsquo;événements empilés les uns dans les autres. La couche la plus interne est le message réel, un événement kind &lt;code>14&lt;/code> non signé :&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;événement kind &lt;code>14&lt;/code> est volontairement non signé (&lt;code>sig&lt;/code> vide). La spécification présente cela comme une forme de déni plausible, mais en pratique cette protection reste limitée. Le seal kind &lt;code>13&lt;/code> qui enveloppe la rumor est signé avec la vraie clé de l&amp;rsquo;expéditeur. Un destinataire peut montrer ce seal signé à un tiers, prouvant que l&amp;rsquo;expéditeur a communiqué avec lui, même sans révéler le contenu du message. Avec des preuves à divulgation nulle de connaissance, un destinataire peut prouver le contenu exact du message sans révéler sa propre clé privée. La rumor non signée ressemble à une lettre non signée placée dans une enveloppe signée : la signature de l&amp;rsquo;enveloppe relie l&amp;rsquo;expéditeur au contenu. Un véritable déni exigerait une authentification symétrique (comme les HMACs de Signal), ce qui est incompatible avec le modèle relay décentralisé de Nostr où les messages doivent être auto-authentifiants. Les véritables forces de NIP-17 sont la confidentialité des métadonnées et le secret du contenu, pas le déni plausible.&lt;/p>
&lt;p>Ce message non signé est ensuite enveloppé dans un seal kind &lt;code>13&lt;/code>, signé par l&amp;rsquo;expéditeur réel et chiffré avec &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> pour le destinataire :&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>Le seal n&amp;rsquo;a pas de tags, donc même déchiffré il ne révélerait pas le destinataire. Le seal est signé avec la vraie clé de l&amp;rsquo;expéditeur, ce qui permet au destinataire d&amp;rsquo;authentifier le message en vérifiant que le &lt;code>pubkey&lt;/code> du seal correspond au &lt;code>pubkey&lt;/code> du kind &lt;code>14&lt;/code> interne.&lt;/p>
&lt;p>Le seal est ensuite enveloppé dans un gift wrap kind &lt;code>1059&lt;/code>, signé avec une clé aléatoire jetable et adressé au destinataire :&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>Le &lt;code>pubkey&lt;/code> du gift wrap est une clé aléatoire générée uniquement pour ce message, et &lt;code>created_at&lt;/code> est randomisé jusqu&amp;rsquo;à deux jours dans le passé. C&amp;rsquo;est la couche la plus externe que les relays voient réellement : un message provenant d&amp;rsquo;un pubkey inconnu adressé au destinataire, avec un timestamp qui ne reflète pas le moment réel d&amp;rsquo;envoi. Le timestamp randomisé protège contre les analyses a posteriori d&amp;rsquo;événements stockés, mais un adversaire activement connecté aux relays peut quand même observer quand le gift wrap apparaît pour la première fois, donc cette défense se limite aux observateurs passifs qui interrogent plus tard les données relay. Parce que le pubkey est aléatoire et que le timestamp est faux, les relays ne peuvent pas déterminer l&amp;rsquo;expéditeur réel. Pour lire le message, le destinataire déchiffre le gift wrap en utilisant sa propre clé et le pubkey aléatoire, trouve le seal à l&amp;rsquo;intérieur, déchiffre le seal en utilisant sa propre clé et le pubkey de l&amp;rsquo;expéditeur présent dans le seal, puis trouve le message kind &lt;code>14&lt;/code> à l&amp;rsquo;intérieur.&lt;/p>
&lt;p>NIP-17 ne fournit pas de forward secrecy. Tous les messages sont chiffrés à l&amp;rsquo;aide de la paire de clés Nostr statique (via la dérivation de clés de NIP-44 à partir des clés de l&amp;rsquo;expéditeur et du destinataire). Si une clé privée est compromise, chaque message passé et futur chiffré pour cette clé peut être déchiffré. C&amp;rsquo;est un compromis délibéré : comme le chiffrement dépend seulement du nsec, un utilisateur qui sauvegarde son nsec peut récupérer tout son historique de messages depuis n&amp;rsquo;importe quel relay qui stocke encore les gift wraps. Des protocoles comme MLS (utilisé par &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>) fournissent la forward secrecy via une rotation du matériel de clé, mais au prix d&amp;rsquo;exiger une synchronisation d&amp;rsquo;état et de rendre impossible la récupération de l&amp;rsquo;historique après rotation des clés.&lt;/p>
&lt;p>NIP-17 définit aussi le kind &lt;code>15&lt;/code> pour les messages de fichiers chiffrés, qui ajoute les tags &lt;code>file-type&lt;/code>, &lt;code>encryption-algorithm&lt;/code>, &lt;code>decryption-key&lt;/code> et &lt;code>decryption-nonce&lt;/code> afin que le destinataire puisse déchiffrer un fichier joint chiffré avec AES-GCM avant téléversement vers un serveur Blossom. Le kind &lt;code>10050&lt;/code> est utilisé pour publier la liste des relays DM préférés de l&amp;rsquo;utilisateur, afin que les expéditeurs sachent où livrer les gift wraps. L&amp;rsquo;ensemble des tags &lt;code>pubkey&lt;/code> + &lt;code>p&lt;/code> dans un message définit un salon de chat ; ajouter ou retirer un participant crée un nouveau salon avec un historique propre.&lt;/p>
&lt;p>Les implémentations couvrent la plupart des grands clients. &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> utilise NIP-17 pour toute la messagerie one-on-one. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> utilise NIP-17 pour ses DMs 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>, et &lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a> implémentent tous NIP-17 comme protocole DM principal. La spécification supporte aussi les messages éphémères en définissant un tag &lt;code>expiration&lt;/code> dans le gift wrap.&lt;/p>
&lt;h2 id="deep-dive-nip--nip-46-nostr-remote-signing">Deep Dive NIP : 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> définit un protocole permettant de séparer la clé privée de l&amp;rsquo;utilisateur de l&amp;rsquo;application cliente. Au lieu de coller un nsec dans une web app, l&amp;rsquo;utilisateur exécute un signataire distant (aussi appelé « bunker ») qui détient la clé privée et répond aux requêtes de signature via les relays Nostr. Le client ne voit jamais la clé privée. Cela réduit la surface d&amp;rsquo;attaque : un client compromis peut demander des signatures, mais ne peut pas extraire la clé elle-même.&lt;/p>
&lt;p>Le protocole utilise le kind &lt;code>24133&lt;/code> à la fois pour les requêtes et les réponses, chiffrées avec &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads). Un client génère une &lt;code>client-keypair&lt;/code> jetable pour la session et communique avec le signataire distant via des messages chiffrés NIP-44 tagués avec les pubkeys respectifs. Voici une requête de signature d&amp;rsquo;un client vers un signataire distant :&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>Le &lt;code>content&lt;/code> chiffré contient une structure de type 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>Le signataire distant déchiffre la requête, la présente à l&amp;rsquo;utilisateur pour approbation (ou l&amp;rsquo;auto-approuve selon les permissions configurées), signe l&amp;rsquo;événement avec la clé privée de l&amp;rsquo;utilisateur, puis renvoie l&amp;rsquo;événement signé dans une réponse :&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>Les connexions peuvent être initiées depuis n&amp;rsquo;importe quel côté. Un signataire distant fournit une URL &lt;code>bunker://&lt;/code> contenant son pubkey et les informations relay. Un client fournit une URL &lt;code>nostrconnect://&lt;/code> avec son pubkey client, ses relays et un secret de vérification de connexion. Le paramètre &lt;code>secret&lt;/code> empêche l&amp;rsquo;usurpation de connexion : seule la partie qui a reçu l&amp;rsquo;URL hors bande peut terminer le handshake.&lt;/p>
&lt;p>Huit méthodes sont définies : &lt;code>connect&lt;/code> pour établir la session, &lt;code>sign_event&lt;/code> pour signer des événements, &lt;code>get_public_key&lt;/code> pour apprendre le pubkey de l&amp;rsquo;utilisateur, &lt;code>ping&lt;/code> pour le keepalive, &lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code> pour l&amp;rsquo;ancien chiffrement, &lt;code>nip44_encrypt&lt;/code>/&lt;code>nip44_decrypt&lt;/code> pour le chiffrement actuel, et &lt;code>switch_relays&lt;/code> pour la gestion des relays. La migration relay est gérée par le signataire distant, qui peut déplacer la connexion vers de nouveaux relays au fil du temps sans casser la session.&lt;/p>
&lt;p>Les clients demandent des capacités spécifiques au moment de la connexion via un système de permissions. Une chaîne de permissions comme &lt;code>nip44_encrypt,sign_event:1,sign_event:14&lt;/code> demande l&amp;rsquo;accès au chiffrement NIP-44 et l&amp;rsquo;accès à la signature pour les événements kind &lt;code>1&lt;/code> et kind &lt;code>14&lt;/code> seulement. Le signataire distant peut accepter, rejeter ou modifier ces permissions. Cela signifie qu&amp;rsquo;un client web pour lire et publier des notes peut n&amp;rsquo;obtenir que la permission &lt;code>sign_event:1&lt;/code>, tandis qu&amp;rsquo;un client DM peut aussi obtenir &lt;code>sign_event:14&lt;/code> et &lt;code>nip44_encrypt&lt;/code>.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> implémente NIP-46 sur Android, et sa &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-08-newsletter/#amber-v600-pre1-ajoute-des-cles-de-signature-nip-46-par-connexion">v6.0.0-pre1&lt;/a> de cette semaine ajoute des clés de signature par connexion pour isoler les clients. &lt;a href="https://github.com/nicktee/nsecapp">nsec.app&lt;/a> (anciennement Nostr Connect) fournit un bunker web. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> inclut &lt;code>BunkerSigner&lt;/code> pour les clients JavaScript, et &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 de la semaine dernière&lt;/a> a ajouté &lt;code>skipSwitchRelays&lt;/code> pour une gestion manuelle des relays. Le protocole supporte aussi les défis d&amp;rsquo;auth : lorsqu&amp;rsquo;un signataire distant a besoin d&amp;rsquo;une authentification supplémentaire (mot de passe, biométrie ou token matériel), il répond avec une &lt;code>auth_url&lt;/code> que le client ouvre dans un navigateur pour que l&amp;rsquo;utilisateur termine l&amp;rsquo;opération.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ou avez des nouvelles à partager ? Envoyez-nous un DM sur Nostr ou retrouvez-nous sur &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/fr/newsletters/2026-04-01-newsletter/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#amethyst-ships-pinned-notes-relay-management-and-request-to-vanish">v1.07.0&lt;/a> avec notes épinglées, gestion des relays via &lt;a href="https://nostrcompass.org/fr/topics/nip-86/">NIP-86&lt;/a>, et support &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> Request to Vanish. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#nip-5a-merges-bringing-static-websites-to-nostr">NIP-5A&lt;/a> (Static Websites) fusionne dans le dépôt NIPs, définissant la manière d&amp;rsquo;héberger des sites web sous des paires de clés Nostr en utilisant le stockage &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#flotilla-v170-adds-voice-rooms-and-email-login">v1.7.0&lt;/a> avec salons vocaux, connexion email/mot de passe et DMs proof-of-work. &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> corrige le churn relay dans &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#white-noise-fixes-relay-churn-and-expands-client-controls">v2026.3.23&lt;/a>, &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> lance sa &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#nospeak-launches-as-a-10-private-messenger">1.0.0&lt;/a> comme messagerie chiffrée sans inscription. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#nymchat-ships-marmot-powered-group-chats">adopte Marmot&lt;/a> pour les groupes MLS chiffrés avec repli NIP-17. &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a> atteint &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a> avec listes de calendriers privées et import ICS, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> ajoute &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#amber-v502-through-v504">la récupération par phrase mnémonique et une liste blanche d&amp;rsquo;auth relay NIP-42&lt;/a>, et la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#marmot-moves-keypackages-to-addressable-events-and-tightens-push-notifications">spécification Marmot&lt;/a> déplace les KeyPackages vers des événements adressables tout en resserrant le formatage des notifications push MIP-05.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#amethyst-ships-pinned-notes-relay-management-and-request-to-vanish">v1.07.0&lt;/a> avec notes épinglées, gestion des relays via &lt;a href="https://nostrcompass.org/fr/topics/nip-86/">NIP-86&lt;/a>, et support &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> Request to Vanish. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#nip-5a-merges-bringing-static-websites-to-nostr">NIP-5A&lt;/a> (Static Websites) fusionne dans le dépôt NIPs, définissant la manière d&amp;rsquo;héberger des sites web sous des paires de clés Nostr en utilisant le stockage &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>. &lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#flotilla-v170-adds-voice-rooms-and-email-login">v1.7.0&lt;/a> avec salons vocaux, connexion email/mot de passe et DMs proof-of-work. &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> corrige le churn relay dans &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#white-noise-fixes-relay-churn-and-expands-client-controls">v2026.3.23&lt;/a>, &lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a> lance sa &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#nospeak-launches-as-a-10-private-messenger">1.0.0&lt;/a> comme messagerie chiffrée sans inscription. &lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#nymchat-ships-marmot-powered-group-chats">adopte Marmot&lt;/a> pour les groupes MLS chiffrés avec repli NIP-17. &lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a> atteint &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a> avec listes de calendriers privées et import ICS, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> ajoute &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#amber-v502-through-v504">la récupération par phrase mnémonique et une liste blanche d&amp;rsquo;auth relay NIP-42&lt;/a>, et la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#marmot-moves-keypackages-to-addressable-events-and-tightens-push-notifications">spécification Marmot&lt;/a> déplace les KeyPackages vers des événements adressables tout en resserrant le formatage des notifications push MIP-05.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="amethyst-ships-pinned-notes-relay-management-and-request-to-vanish">Amethyst ships pinned notes, relay management, and Request to Vanish&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, le client Android maintenu par vitorpamplona, a livré six versions en trois jours, de &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.0">v1.07.0&lt;/a> à &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.5">v1.07.5&lt;/a>. L&amp;rsquo;ensemble principal de fonctionnalités couvre six surfaces protocolaires : notes épinglées, écran dédié aux sondages, support &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) pour demander la suppression complète d&amp;rsquo;événements aux relays, &lt;a href="https://nostrcompass.org/fr/topics/nip-86/">NIP-86&lt;/a> (Relay Management API) depuis le client, évaluations &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring) sur l&amp;rsquo;écran d&amp;rsquo;information relay, et affichage des informations de membres &lt;a href="https://nostrcompass.org/fr/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests).&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-86/">NIP-86&lt;/a> définit une interface JSON-RPC pour les opérateurs de relays, permettant aux clients d&amp;rsquo;envoyer des commandes d&amp;rsquo;administration comme bannir des pubkeys, autoriser des pubkeys et lister les utilisateurs bannis via une API standardisée. Amethyst expose désormais cela directement dans son interface de gestion relay, de sorte que les utilisateurs qui exploitent leurs propres relays peuvent les administrer depuis le même client qu&amp;rsquo;ils utilisent pour publier. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2039">PR #2039&lt;/a> remplace l&amp;rsquo;ancien dialogue d&amp;rsquo;entrée hexadécimale pour les pubkeys bannies et autorisées par un dialogue interactif de recherche d&amp;rsquo;utilisateurs.&lt;/p>
&lt;p>v1.07.2 a ajouté les téléversements du clavier GIF et corrigé une régression de signature où les réponses de rejet d&amp;rsquo;Amber étaient mal interprétées parce que les anciennes versions d&amp;rsquo;Amber renvoyaient une chaîne vide pour le champ &lt;code>rejected&lt;/code> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2042">PR #2042&lt;/a>). v1.07.5 corrige un crash de téléversement d&amp;rsquo;images. Les versions &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.2">v1.06.2&lt;/a> et &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.3">v1.06.3&lt;/a> plus tôt dans la semaine ont ajouté un sélecteur de type de sondage pour simple ou choix multiples, le drag-to-seek sur les barres de progression vidéo, et des améliorations pour la publication anonyme.&lt;/p>
&lt;h3 id="nip-5a-merges-bringing-static-websites-to-nostr">NIP-5A merges, bringing static websites to Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> (Static Websites) a fusionné via &lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>, définissant la manière d&amp;rsquo;héberger des sites web statiques sous des paires de clés Nostr. La spécification utilise deux kinds d&amp;rsquo;événements : le kind &lt;code>15128&lt;/code> pour un site racine, un par pubkey, et le kind &lt;code>35128&lt;/code> pour des sites nommés identifiés par un tag &lt;code>d&lt;/code>. Chaque manifeste associe des chemins d&amp;rsquo;URL à des hachages SHA256, avec des tags &lt;code>server&lt;/code> optionnels pointant vers des hôtes de stockage &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> où vivent les fichiers réels.&lt;/p>
&lt;p>Le modèle d&amp;rsquo;hébergement fonctionne ainsi : un auteur de site construit un site statique, téléverse les fichiers sur un ou plusieurs serveurs Blossom, puis publie un événement de manifeste signé qui associe les chemins à des hachages de contenu. Un serveur hôte reçoit les requêtes web, résout la pubkey de l&amp;rsquo;auteur depuis le sous-domaine, récupère le manifeste depuis la liste de relays &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> de l&amp;rsquo;auteur, puis sert les fichiers en téléchargeant les blobs correspondants depuis Blossom. Le site reste sous le contrôle de l&amp;rsquo;auteur parce que seule cette clé peut signer un manifeste mis à jour. Le serveur hôte est remplaçable car tout serveur qui comprend NIP-5A peut servir le même site à partir du même manifeste.&lt;/p>
&lt;p>La spécification s&amp;rsquo;appuie sur une infrastructure déjà existante. &lt;a href="https://github.com/lez/nsite">nsite&lt;/a>, l&amp;rsquo;implémentation de référence de serveur hôte NIP-5A construite par lez, et &lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>, l&amp;rsquo;interface de gestion de hzrd149, fonctionnaient déjà avant la fusion du NIP. La fusion rend officiels les kinds d&amp;rsquo;événements et les règles de résolution d&amp;rsquo;URL, donnant ainsi aux deuxièmes et troisièmes implémentations une cible stable.&lt;/p>
&lt;h3 id="white-noise-fixes-relay-churn-and-expands-client-controls">White Noise fixes relay churn and expands client controls&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, la messagerie privée construite sur le protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, a livré &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.3.23">v2026.3.23&lt;/a> le 25 mars. Le travail principal concerne la stabilité relay. La connexion n&amp;rsquo;attend plus la publication de chaque liste de relays avant d&amp;rsquo;avancer, parce que la publication des listes utilise maintenant une logique de quorum et retente le reste en arrière-plan. Les fetches et publications ponctuels utilisent des sessions relay éphémères ciblées au lieu de rester dans le pool longue durée, les sessions restaurées récupèrent leur chemin de refresh de groupe après le démarrage, et l&amp;rsquo;application expose désormais des diagnostics relay et l&amp;rsquo;inspection d&amp;rsquo;état relay via &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/495">PR #495&lt;/a> et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/502">PR #502&lt;/a>.&lt;/p>
&lt;p>La même version change aussi le comportement des conversations. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/468">PR #468&lt;/a> ajoute le threading de réponses NIP-C7 avec tags &lt;code>q&lt;/code> et références &lt;code>nostr:nevent&lt;/code>, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/471">PR #471&lt;/a> et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/512">PR #512&lt;/a> laissent les messages supprimés visibles comme placeholders supprimés au lieu de les retirer silencieusement, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/478">PR #478&lt;/a> ajoute un flux de signalement de bug in-app utilisant des rapports anonymes &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/486">PR #486&lt;/a> ajoute un chat de support directement dans le client. Les contrôles de messages côté utilisateur ont aussi atterri dans la même fenêtre : &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/532">PR #532&lt;/a> archive les chats, &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/541">PR #541&lt;/a> ajoute mute et unmute avec durées configurables, et &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/535">PR #535&lt;/a> ajoute les paramètres de notification. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/539">PR #539&lt;/a> est un travail préparatoire sur l&amp;rsquo;enregistrement push, connectant l&amp;rsquo;inscription APNs sur iOS et la détection Play Services sur Android pour que l&amp;rsquo;enregistrement puisse être construit par-dessus. Côté backend, le &lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> (Marmot Development Kit) a ajouté les primitives de notifications push MIP-05 et un constructeur de requêtes de notification (&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>), tandis que &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a> a ajouté la persistance de l&amp;rsquo;enregistrement des notifications push (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/688">PR #688&lt;/a>), des correctifs d&amp;rsquo;annulation de tâches en arrière-plan (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/696">PR #696&lt;/a>), et la récupération des key packages au démarrage (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/693">PR #693&lt;/a>).&lt;/p>
&lt;h3 id="nostr-vpn-reaches-v030-with-roster-sync-and-invite-v2">Nostr VPN reaches v0.3.0 with roster sync and invite v2&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#nostr-vpn-launches-as-a-tailscale-alternative">Suite à la couverture du lancement la semaine dernière&lt;/a>, &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>, le VPN pair à pair qui utilise les relays Nostr pour le signalement et WireGuard pour les tunnels chiffrés, a continué son rythme rapide de versions jusqu&amp;rsquo;à &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.3">v0.3.3&lt;/a>. Ce changement de version apporte deux breaking changes : le format d&amp;rsquo;invitation passe en v2 (0.3.0 peut toujours importer les invitations v1, mais les anciennes builds ne peuvent pas importer les invitations v2), et une synchronisation de roster signée par administrateur a été ajoutée au protocole de signalement. Les pairs de versions mixtes peuvent encore se connecter au niveau du mesh, mais les plus anciens ne participeront pas à la synchronisation du roster.&lt;/p>
&lt;p>L&amp;rsquo;ajout de la synchronisation du roster amorce le passage vers un réseau géré. Un nœud administrateur peut maintenant pousser les changements d&amp;rsquo;appartenance à tous les pairs, de sorte qu&amp;rsquo;ajouter ou retirer un appareil du mesh n&amp;rsquo;exige plus que chaque pair mette à jour sa configuration manuellement. Les versions v0.2.x durant la même semaine ont traité des problèmes de déploiement précis : &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.22">v0.2.22&lt;/a> à &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.28">v0.2.28&lt;/a> ont corrigé la gestion des services Windows, ajouté les scripts de build Android, et affiné le flux d&amp;rsquo;appairage LAN.&lt;/p>
&lt;h3 id="nospeak-launches-as-a-10-private-messenger">nospeak launches as a 1.0 private messenger&lt;/h3>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>, une messagerie privée construite sur Nostr, a livré sa version &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.0.0">1.0.0&lt;/a> le 27 mars. Le projet inclut des conversations individuelles et de groupe, la gestion des contacts, et une architecture auto-hébergeable. Les chats individuels utilisent &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), qui combine &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) avec &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) pour masquer l&amp;rsquo;expéditeur aux relays. Pour les médias, les fichiers sont chiffrés côté client avec AES-256-GCM avant téléversement vers des serveurs Blossom. La version est également livrée sous forme d&amp;rsquo;image conteneur pour l&amp;rsquo;auto-hébergement.&lt;/p>
&lt;h3 id="flotilla-v170-adds-voice-rooms-and-email-login">Flotilla v1.7.0 adds voice rooms and email login&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>, le client de type Discord de hodlbod pour &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> (Relay-based Groups) construit autour du modèle « relays as groups », a livré &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.0">v1.7.0&lt;/a> et &lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.1">v1.7.1&lt;/a> les 30 et 31 mars. La fonctionnalité phare est l&amp;rsquo;ajout de salons vocaux, contribuée par mplorentz. Les utilisateurs peuvent maintenant rejoindre des appels vocaux à l&amp;rsquo;intérieur des canaux de groupe, avec un dialogue d&amp;rsquo;entrée (&lt;a href="https://gitea.coracle.social/coracle/flotilla/pulls/109">PR #109&lt;/a>) qui leur permet de sélectionner un périphérique d&amp;rsquo;entrée audio et de choisir s&amp;rsquo;ils veulent rejoindre l&amp;rsquo;appel vocal ou seulement voir le chat texte. Le dialogue résout un problème UX de l&amp;rsquo;itération précédente : entrer dans un salon vocal activait auparavant le microphone de force, même si l&amp;rsquo;utilisateur voulait seulement lire les messages ou vérifier les paramètres du salon.&lt;/p>
&lt;p>La même version ajoute la connexion email/mot de passe comme alternative à l&amp;rsquo;authentification par clés Nostr, le proof-of-work sur les DMs, l&amp;rsquo;édition des DMs, la refonte de l&amp;rsquo;onboarding relay et des paramètres, la détection du support Blossom via &lt;code>supported_nips&lt;/code>, de meilleurs badges de notification, un fallback de notifications push Android, et des correctifs de téléversement de fichiers sur Android. v1.7.1 suit avec un correctif du fallback d&amp;rsquo;enregistrement pomade lors de l&amp;rsquo;utilisation d&amp;rsquo;un signataire hors ligne.&lt;/p>
&lt;p>Hodlbod construit aussi &lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>, un gestionnaire d&amp;rsquo;hébergement et tableau de bord pour les relays zooid, qui a enregistré 40 commits cette semaine en début de développement.&lt;/p>
&lt;h3 id="nymchat-ships-marmot-powered-group-chats">Nymchat ships Marmot-powered group chats&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a> (également connu sous le nom de NYM, Nostr Ynstant Messenger), le client de chat éphémère ponté avec Bitchat, a annoncé que tous les nouveaux chats de groupe utilisent désormais le protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> pour la messagerie MLS chiffrée. L&amp;rsquo;intégration utilise les kinds &lt;code>443&lt;/code>, &lt;code>444&lt;/code> et &lt;code>445&lt;/code> pour les key packages, les welcome messages et les messages de groupe, apportant forward secrecy, sécurité post-compromission et fuite de métadonnées nulle. Si un destinataire ne peut pas utiliser MLS, Nymchat se replie sur son ancien chemin de chat de groupe &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), toujours chiffré de bout en bout mais dépourvu des propriétés d&amp;rsquo;arbre à cliquet de MLS.&lt;/p>
&lt;p>Les séries v3.55 et v3.56 de cette semaine se sont concentrées sur les cas limites des chats de groupe : chargement sur de nouveaux appareils, comportement de départ, routage des notifications et compteurs de non-lu. Le même cycle a aussi corrigé une vulnérabilité XSS due à du HTML non échappé et ajouté le blocage de mots-clés et phrases étendu aux surnoms d&amp;rsquo;utilisateurs. Nymchat devient ainsi un client Marmot de plus rejoignant &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#white-noise-fixes-relay-churn-and-expands-client-controls">White Noise&lt;/a> et &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#openchat-v024-through-v030">OpenChat&lt;/a>, élargissant l&amp;rsquo;ensemble des applications capables d&amp;rsquo;échanger des messages de groupe MLS chiffrés sur le même protocole.&lt;/p>
&lt;h2 id="versions">Versions&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;application de calendrier décentralisée construite sur &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), a atteint &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.0.0">v1.0.0&lt;/a> le 29 mars. La version ajoute des listes de calendriers privées utilisant des événements Nostr chiffrés (kind &lt;code>32123&lt;/code>) avec auto-chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), de sorte que les utilisateurs puissent organiser leurs événements en collections privées sans exposer le regroupement aux relays. La même version ajoute la gestion des intentions ICS pour importer des données de calendrier depuis d&amp;rsquo;autres applications et des demandes d&amp;rsquo;invitation pour partager des événements entre utilisateurs.&lt;/p>
&lt;h3 id="amber-v502-through-v504">Amber v5.0.2 through v5.0.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;application signataire &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), a livré trois point releases : &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>, et &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.4">v5.0.4&lt;/a>. L&amp;rsquo;ajout le plus visible est la connexion par phrase mnémonique de récupération (&lt;a href="https://github.com/greenart7c3/Amber/pull/358">PR #358&lt;/a>), qui permet aux utilisateurs de restaurer leur signataire depuis une seed phrase BIP39 au lieu d&amp;rsquo;exiger la chaîne brute nsec ou ncryptsec. &lt;a href="https://github.com/greenart7c3/Amber/pull/357">PR #357&lt;/a> ajoute une liste blanche d&amp;rsquo;auth relay &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a>, afin que les utilisateurs puissent restreindre les relays autorisés à demander une authentification client. &lt;a href="https://github.com/greenart7c3/Amber/pull/353">PR #353&lt;/a> ajoute la sélection du périmètre de chiffrement pour les permissions de déchiffrement, permettant d&amp;rsquo;accorder un accès de déchiffrement NIP-04-only ou NIP-44-only au lieu d&amp;rsquo;une permission globale. v5.0.4 corrige un bug où le rejet ne respectait pas les permissions chiffrées et déchiffrées scopées et améliore les performances lors de la réception de multiples demandes 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>, le signataire cross-platform, a livré &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.4.0">v0.4.0&lt;/a> le 26 mars. La version ajoute des modes d&amp;rsquo;autorisation Full et Selective dans les Settings et corrige plusieurs problèmes de scan QR. Les commits suivants &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>, et &lt;a href="https://github.com/ZharlieW/Aegis/commit/e4f40b6f1f48c2dae1bb5e4246df26c26dba419e">e4f40b6&lt;/a> prolongent le même travail avec des contrôles de sélection par lots, des statistiques réutilisables de sélection en lot, des APIs de sélection set-all-groups, et des statistiques d&amp;rsquo;utilisation par permission sur la page des permissions applicatives.&lt;/p>
&lt;h3 id="schemata-v027-through-v030">Schemata v0.2.7 through v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/schemata">Schemata&lt;/a>, l&amp;rsquo;ensemble de définitions JSON Schema pour valider les kinds d&amp;rsquo;événements Nostr, a livré quatre versions de &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.7">v0.2.7&lt;/a> à &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.3.0">v0.3.0&lt;/a> avec 21 PRs fusionnées. La version v0.3.0 apporte des correctifs de cohérence de patterns à travers les URLs relay, les hex IDs, les types MIME et les chaînes BOLT-11 (&lt;a href="https://github.com/nostrability/schemata/pull/126">PR #126&lt;/a>), une centralisation des patterns d&amp;rsquo;URLs relay (&lt;a href="https://github.com/nostrability/schemata/pull/117">PR #117&lt;/a>), des schémas de types de base bech32 &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> (&lt;a href="https://github.com/nostrability/schemata/pull/118">PR #118&lt;/a>), et la validation des événements spell kind 777 (&lt;a href="https://github.com/nostrability/schemata/pull/125">PR #125&lt;/a>). Le pipeline de version publie désormais une note kind &lt;code>1&lt;/code> sur Nostr à chaque release (&lt;a href="https://github.com/nostrability/schemata/pull/120">PR #120&lt;/a>), de sorte que le projet s&amp;rsquo;annonce via le protocole qu&amp;rsquo;il valide. Schemata supporte maintenant une douzaine de langages au-delà du paquet canonique JS/TS : Rust, Go, Python, Kotlin, Java, Swift, Dart, PHP, C#/.NET, C++, Ruby et C.&lt;/p>
&lt;p>Aux côtés de Schemata, l&amp;rsquo;équipe a publié &lt;a href="https://github.com/nostrability/schemata-codegen">schemata-codegen&lt;/a>, un générateur de code expérimental qui prend une autre approche du même problème de validation. Là où les paquets validateurs de Schemata exigent une dépendance runtime à JSON Schema, schemata-codegen convertit directement les schémas en constructions natives typées selon le langage ciblé (tuples de tags typés, interfaces de kind, validateurs runtime), supprimant le besoin d&amp;rsquo;une bibliothèque de validation à l&amp;rsquo;exécution. Le document &lt;a href="https://github.com/nostrability/schemata-codegen/blob/main/CODEGEN-VS-VALIDATORS.md">codegen-vs-validators comparison&lt;/a> expose dans quels cas chaque approche convient.&lt;/p>
&lt;h3 id="bigbrotr-v650-through-v654">BigBrotr v6.5.0 through v6.5.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>, la plateforme d&amp;rsquo;analytique de relays, a livré cinq versions de &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.0">v6.5.0&lt;/a> à &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.4">v6.5.4&lt;/a>. La version v6.5.0 centralise la validation des URLs relay avec une fonction factory &lt;code>parse_relay_url()&lt;/code> et ajoute une vérification de longueur d&amp;rsquo;URL et une sanitation des chemins. L&amp;rsquo;infrastructure de monitoring a aussi reçu des correctifs : les événements d&amp;rsquo;annonce incluent maintenant des tags de localisation geohash (en suivant &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a>), et une protection par timeout a été ajoutée aux tests de métadonnées Geo/Net &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> qui n&amp;rsquo;avaient aucune échéance et pouvaient se bloquer indéfiniment. &lt;a href="https://github.com/BigBrotr/bigbrotr/pull/410">PR #410&lt;/a> met PostgreSQL à niveau de 16 vers 18, ce qui apporte le sous-système d&amp;rsquo;I/O asynchrone et un meilleur débit WAL au pipeline d&amp;rsquo;analytique relay.&lt;/p>
&lt;h3 id="vertex-lab-relay-adds-nip-50-profile-search">Vertex Lab relay adds NIP-50 profile search&lt;/h3>
&lt;p>&lt;a href="https://vertexlab.io">Vertex Lab&lt;/a>, l&amp;rsquo;équipe derrière &lt;a href="https://github.com/vertex-lab/npub.world">npub.world&lt;/a> et le moteur Web of Trust &lt;a href="https://vertexlab.io/docs">Vertex&lt;/a>, a annoncé que &lt;code>wss://relay.vertexlab.io&lt;/code> supporte maintenant &lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a> (Search) pour les requêtes de profils. NIP-50 étend le filtre standard &lt;code>REQ&lt;/code> de Nostr avec un champ &lt;code>search&lt;/code>, permettant aux clients d&amp;rsquo;envoyer des requêtes de recherche plein texte à des relays qui supportent l&amp;rsquo;indexation. Ajouter la recherche de profils à un relay qui sert déjà des données Web of Trust signifie que les clients connectés à &lt;code>relay.vertexlab.io&lt;/code> peuvent découvrir des utilisateurs par nom ou description sans service de recherche séparé.&lt;/p>
&lt;h3 id="hashtree-v0217-and-v0218-ship-webrtc-mesh-and-iris-desktop">Hashtree v0.2.17 and v0.2.18 ship WebRTC mesh and Iris Desktop&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/hashtree">Hashtree&lt;/a>, le système de stockage de blobs adressé par contenu de mmalmi qui publie des racines Merkle sur Nostr, a livré &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.17">v0.2.17&lt;/a> et &lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.18">v0.2.18&lt;/a> le 31 mars. Ces deux versions concluent un sprint de 30 commits ajoutant trois capacités distinctes. D&amp;rsquo;abord, la crate &lt;code>hashtree-webrtc&lt;/code> (renommée &lt;code>hashtree-network&lt;/code> dans v0.2.18) ajoute la distribution P2P de blobs basée sur WebRTC avec signalement mesh unifié à travers le CLI Rust, le harnais de simulation et le client TypeScript. Ensuite, le pipeline de release construit désormais des artefacts Windows (zip CLI et installeur Iris), apportant une couverture cross-platform à macOS, Linux et Windows. Enfin, les deux versions embarquent Iris Desktop 0.1.0, le client social Nostr de mmalmi, sous forme d&amp;rsquo;assets AppImage, .deb et installeur Windows aux côtés du CLI hashtree. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/">Hashtree a été couvert pour la première fois dans la Newsletter #10&lt;/a> lors de son lancement comme magasin compatible &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> basé sur le système de fichiers. La couche WebRTC est la première étape vers une distribution de contenu pair à pair sans dépendre de serveurs Blossom centralisés.&lt;/p>
&lt;h3 id="nostr-mail-client-v070-through-v072">Nostr Mail Client v0.7.0 through v0.7.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client">Nostr Mail Client&lt;/a>, le client de style mail en Flutter construit sur des identités Nostr, a livré &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.0">v0.7.0&lt;/a>, &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.1">v0.7.1&lt;/a>, et &lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.2">v0.7.2&lt;/a> en trois jours. Le travail produit visible était centré sur l&amp;rsquo;onboarding (&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/9">PR #9&lt;/a>) et l&amp;rsquo;édition de profil (&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/10">PR #10&lt;/a>), deux briques de base pour tout client essayant de présenter Nostr comme une boîte mail. Les point releases suivantes ont empaqueté ce travail dans de nouvelles builds Android et Linux.&lt;/p>
&lt;h3 id="wisp-v0140-through-v0161">Wisp v0.14.0 through v0.16.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, le client Nostr Android, a livré 13 versions supplémentaires de &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.14.0-beta">v0.14.0-beta&lt;/a> à &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a>. Le travail de cette semaine inclut des correctifs JSON rumor NIP-17 (&lt;a href="https://github.com/barrydeen/wisp/pull/385">PR #385&lt;/a>), des badges de repost sur les cartes galerie (&lt;a href="https://github.com/barrydeen/wisp/pull/383">PR #383&lt;/a>), des détails de réactions extensibles (&lt;a href="https://github.com/barrydeen/wisp/pull/382">PR #382&lt;/a>), des ensembles d&amp;rsquo;emojis persistants (&lt;a href="https://github.com/barrydeen/wisp/pull/381">PR #381&lt;/a>), et des contrôles d&amp;rsquo;autoplay vidéo (&lt;a href="https://github.com/barrydeen/wisp/pull/380">PR #380&lt;/a>). La plus récente &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a> corrige aussi les shortcodes d&amp;rsquo;emojis personnalisés avec tirets et les tags emoji manquants.&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> a livré &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.17">3.0.17&lt;/a> le 24 mars. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1000">PR #1000&lt;/a> mappe les types de WalletException vers des codes d&amp;rsquo;erreur dans les réponses NWC, donnant aux clients &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> une information d&amp;rsquo;échec structurée au lieu d&amp;rsquo;erreurs génériques. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/995">PR #995&lt;/a> corrige l&amp;rsquo;affichage des votes zap de sondages comme Top Zaps, et &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/998">PR #998&lt;/a> masque le solde portefeuille et les boutons d&amp;rsquo;action quand aucun portefeuille n&amp;rsquo;est configuré.&lt;/p>
&lt;h3 id="openchat-v024-through-v030">OpenChat v0.2.4 through v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, le client de chat basé sur Avalonia construit sur la pile &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, a livré six versions de &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.2.4">v0.2.4&lt;/a> à &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.3.0">v0.3.0&lt;/a> en quatre jours. L&amp;rsquo;historique de commits raconte l&amp;rsquo;histoire d&amp;rsquo;un client qui comble l&amp;rsquo;écart entre « Marmot fonctionne » et « quelqu&amp;rsquo;un peut réellement l&amp;rsquo;utiliser tous les jours ». L&amp;rsquo;auth relay &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> a atterri, suivie d&amp;rsquo;une interface de sélection de relays avec filtrage des événements dupliqués. Les messages vocaux ont gagné pause, reprise, seek et affichage du temps. Le chemin de signature a été durci : les connexions Amber ont été corrigées avec un format d&amp;rsquo;URI &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> mis à jour, le WebSocket se reconnecte automatiquement avant l&amp;rsquo;envoi des requêtes, et les requêtes Amber dupliquées sont maintenant détectées par vérification des réponses rejouées. Côté stockage, Linux et macOS ont reçu un stockage sécurisé AES-256-GCM avec clés adossées à des fichiers, et la récupération des métadonnées utilisateur utilise désormais la découverte relay &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> et met les résultats en cache dans une base 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>, le signataire à seuil &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a> iOS du projet FROSTR, a livré &lt;a href="https://github.com/FROSTR-ORG/igloo-ios-prototype/releases/tag/v1.1">v1.1&lt;/a> le 28 mars. Les signatures FROST (Flexible Round-Optimized Schnorr Threshold) permettent à un groupe de signataires de contrôler collectivement une paire de clés Nostr, où n&amp;rsquo;importe quels t-of-n participants peuvent signer un événement sans qu&amp;rsquo;aucune partie ne détienne à elle seule la clé privée complète. Igloo est l&amp;rsquo;une des premières implémentations mobiles de cette approche pour Nostr.&lt;/p>
&lt;h3 id="nak-v0193-and-v0194">nak v0.19.3 and v0.19.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, la boîte à outils Nostr en ligne de commande de fiatjaf, a livré &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.3">v0.19.3&lt;/a> et &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.4">v0.19.4&lt;/a> les 26 et 30 mars. Les deux versions corrigent des conditions de panic : &lt;a href="https://github.com/fiatjaf/nak/pull/118">PR #118&lt;/a> remplace &lt;code>strings.Split&lt;/code> par &lt;code>strings.Cut&lt;/code> pour prévenir un accès potentiel hors limites, et &lt;a href="https://github.com/fiatjaf/nak/pull/119">PR #119&lt;/a> empêche la même classe de panic dans le parsing des flags 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>, une extension Chrome pour l&amp;rsquo;enregistrement d&amp;rsquo;écran décentralisé et le partage sur Nostr, a livré &lt;a href="https://github.com/shawnyeager/flora-extension/releases/tag/v0.3.0">v0.3.0&lt;/a>. La version ajoute le partage privé chiffré de vidéos avec modes public, non listé et privé. Les enregistrements privés sont chiffrés avec AES-256-GCM et livrés aux destinataires via &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), de sorte que l&amp;rsquo;enregistrement ne touche jamais un serveur en clair.&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>, le client Nostr mobile, a livré &lt;a href="https://github.com/YakiHonne/mobile-app/releases/tag/YakiHonne-2.0.3">2.0.3&lt;/a> avec des avis sur les relays et des demandes d&amp;rsquo;adhésion, des réponses imbriquées étendues, la traduction automatique des notes, et le support multi-relays NWC.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&lt;/h2>
&lt;h3 id="zap-cooking-adds-zap-polls-and-branta-payment-verification">Zap Cooking adds zap polls and Branta payment verification&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, la plateforme de recettes et de contenu, a fusionné 11 PRs cette semaine centrées sur le contenu interactif et les flux de paiement. &lt;a href="https://github.com/zapcooking/frontend/pull/277">PR #277&lt;/a> ajoute les zap polls (kind 6969), où les utilisateurs votent en envoyant des sats et peuvent voir les listes de votants avec leurs photos de profil. &lt;a href="https://github.com/zapcooking/frontend/pull/274">PR #274&lt;/a> repense l&amp;rsquo;UX des sondages pour que l&amp;rsquo;interface de vote s&amp;rsquo;insère plus naturellement dans le flux.&lt;/p>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend/pull/276">PR #276&lt;/a> ajoute le scan QR par caméra au flux Send Payment et intègre &lt;a href="https://branta.pro/">Branta&lt;/a>, un service de vérification qui contrôle la légitimité d&amp;rsquo;une destination de paiement avant l&amp;rsquo;envoi. Branta vérifie les destinations de paiement contre le phishing, les échanges d&amp;rsquo;adresses et l&amp;rsquo;interception man-in-the-middle avant l&amp;rsquo;envoi. Dans l&amp;rsquo;implémentation de Zap Cooking, un nom de plateforme et un logo vérifiés par Branta apparaissent directement dans le flux de paiement, et les QR codes compatibles Branta peuvent transporter des paramètres &lt;code>branta_id&lt;/code> et &lt;code>branta_secret&lt;/code> pour que le portefeuille vérifie la destination à partir du code scanné lui-même.&lt;/p>
&lt;h3 id="divine-lays-groundwork-for-unified-search-and-hardens-video-delivery">diVine lays groundwork for unified search and hardens video delivery&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, le client vidéo short-form, a passé la semaine à resserrer la recherche, la navigation de flux, la récupération de lecture et le comportement de téléversement. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2540">PR #2540&lt;/a> pose les bases d&amp;rsquo;un écran de recherche unifié, avec des sections groupées pour Videos, People et Tags. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2623">PR #2623&lt;/a> durcit la pagination à travers les flux de profils, la boîte de réception, les notifications, les listes discover, les classic vines et les flux de recherche et de grille composable en les faisant passer sur un contrôleur de pagination partagé.&lt;/p>
&lt;p>La livraison vidéo a aussi reçu plusieurs correctifs concrets. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2643">PR #2643&lt;/a> retente les sources dérivées hébergées par Divine dans l&amp;rsquo;ordre et se replie sur le blob brut avant d&amp;rsquo;afficher une erreur de lecture, pour que des échecs transitoires sur une source ne cassent pas immédiatement la lecture. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2634">PR #2634&lt;/a> maintient les téléversements repris sur le chemin propriétaire Divine lorsque le capability probing échoue temporairement, réduisant les téléversements cassés causés par de courtes pannes réseau. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2637">PR #2637&lt;/a> modifie aussi la porte de contenu sensible pour que les vidéos ne soient strictement bloquées que pour les vrais labels d&amp;rsquo;avertissement, et non simplement pour les avertissements de contenu fournis par les créateurs.&lt;/p>
&lt;h3 id="shopstr-adds-custom-storefronts-and-milk-market-keeps-shipping-marketplace-work">Shopstr adds custom storefronts and Milk Market keeps shipping marketplace work&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, la marketplace basée sur Nostr, a fusionné &lt;a href="https://github.com/shopstr-eng/shopstr/pull/245">PR #245&lt;/a> ajoutant des vitrines personnalisées. Cela donne aux vendeurs une surface d&amp;rsquo;accueil plus distincte au lieu de forcer chaque annonce dans la même présentation générique.&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, une marketplace dédiée au lait, a poursuivi avec des optimisations de vitrines (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/18">PR #18&lt;/a>), la récupération de compte (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/17">PR #17&lt;/a>), les beef splits (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/15">PR #15&lt;/a>), et des correctifs de typage d&amp;rsquo;outils MCP (&lt;a href="https://github.com/shopstr-eng/milk-market/pull/16">PR #16&lt;/a>).&lt;/p>
&lt;h3 id="notedeck-adds-sound-effects-and-extends-its-updater-path-toward-android">Notedeck adds sound effects and extends its updater path toward Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, le client desktop de l&amp;rsquo;équipe Damus, a fusionné &lt;a href="https://github.com/damus-io/notedeck/pull/1412">PR #1412&lt;/a> ajoutant un sous-système d&amp;rsquo;effets sonores avec sons d&amp;rsquo;interaction UI via rodio, et &lt;a href="https://github.com/damus-io/notedeck/pull/1399">PR #1399&lt;/a> avec des mises à jour Agentium incluant un flag de titre CLI et des dossiers de sessions repliables. Une &lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a> ouverte propose l&amp;rsquo;auto-update APK via Nostr/Zapstore sur Android, construisant sur &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-18-newsletter/#notedeck-d%C3%A9place-la-d%C3%A9couverte-de-versions-sur-nostr">le travail d&amp;rsquo;updater natif Nostr de Notedeck depuis la Newsletter #14&lt;/a>.&lt;/p>
&lt;h3 id="nostria-adds-repost-relay-hints-and-nip-98-alignment">Nostria adds repost relay hints and NIP-98 alignment&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> a fusionné &lt;a href="https://github.com/nostria-app/nostria/pull/583">PR #583&lt;/a> ajoutant des indices de relay &lt;a href="https://nostrcompass.org/fr/topics/nip-18/">NIP-18&lt;/a> (Reposts) aux tags &lt;code>e&lt;/code> de repost pour les événements kind 6 et kind 16, &lt;a href="https://github.com/nostria-app/nostria/pull/582">PR #582&lt;/a> alignant l&amp;rsquo;auth HTTP Brainstorm (kind 27235) avec les tags requis &lt;a href="https://nostrcompass.org/fr/topics/nip-98/">NIP-98&lt;/a> (HTTP Auth), et &lt;a href="https://github.com/nostria-app/nostria/pull/576">PR #576&lt;/a> ajoutant des tests de validation de schémas Schemata. Le changement NIP-98 signifie que Nostria peut s&amp;rsquo;authentifier auprès de services externes en utilisant le même format d&amp;rsquo;auth HTTP que les autres clients.&lt;/p>
&lt;h3 id="nostr-doc-adds-desktop-packaging-and-offline-first-work">Nostr-Doc adds desktop packaging and offline-first work&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-docs">Nostr-Doc&lt;/a>, l&amp;rsquo;éditeur collaboratif de Form*, a connu une semaine chargée côté packaging et éditeur. &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/fcdc00a564c8d76f094c586b06efce07592a60e4">commit fcdc00a&lt;/a> ajoute une application desktop, &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/3977a8eb2e62b84a67de756c2776e14de8470927">commit 3977a8e&lt;/a> démarre le travail applicatif natif, et &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/413a030f5b47fb8e32a5dff81bcef557ad9b5869">commit 413a030&lt;/a> pousse l&amp;rsquo;application vers un comportement offline-first. Côté éditeur, &lt;a href="https://github.com/formstr-hq/nostr-docs/commit/1855ce86ee83ad504e14e47d9c339baffb114786">commit 1855ce8&lt;/a> ajoute l&amp;rsquo;enregistrement Ctrl+S, des avertissements de sauvegarde, des correctifs d&amp;rsquo;aperçu de liens et un rendu barré corrigé.&lt;/p>
&lt;h3 id="rust-nostr-optimizes-nip-21-parsing-and-adds-relay-side-nip-62-support">rust-nostr optimizes NIP-21 parsing and adds relay-side NIP-62 support&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> a fusionné huit PRs. La plus notable est &lt;a href="https://github.com/rust-nostr/nostr/pull/1308">PR #1308&lt;/a>, qui optimise le parsing des URI &lt;a href="https://github.com/nostr-protocol/nips/blob/master/21.md">NIP-21&lt;/a> dans &lt;code>PublicKey::parse&lt;/code> en l&amp;rsquo;alignant sur les performances du parsing bech32 standard. Auparavant, les URI NIP-21 prenaient environ deux fois plus de temps à parser que les clés bech32 brutes. Le projet a aussi quatre PRs ouvertes ajoutant un support &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) spécifique aux relays sur les backends mémoire, LMDB, SQLite et tests base de données (&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-adds-bunker-relay-control-and-fixes-nip-47-multi-relay-parsing">nostr-tools adds bunker relay control and fixes NIP-47 multi-relay parsing&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> a fusionné &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/530">PR #530&lt;/a> ajoutant &lt;code>skipSwitchRelays&lt;/code> à BunkerSignerParams pour une gestion manuelle des relays, et &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/529">PR #529&lt;/a> corrigeant le parsing des chaînes de connexion &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) pour supporter plusieurs relays comme la spécification l&amp;rsquo;autorise.&lt;/p>
&lt;h3 id="nostrability-integrates-sherlock-audit-data-and-publishes-schemata-overview">Nostrability integrates Sherlock audit data and publishes Schemata overview&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/nostrability">Nostrability&lt;/a>, le tracker d&amp;rsquo;interopérabilité des clients Nostr, a fusionné 14 PRs. &lt;a href="https://github.com/nostrability/nostrability/pull/306">PR #306&lt;/a> intègre les statistiques de scan Sherlock au tableau de bord. Sherlock est l&amp;rsquo;outil d&amp;rsquo;audit automatisé de Nostrability qui se connecte aux clients Nostr, capture les événements qu&amp;rsquo;ils publient, et valide chaque événement contre les définitions JSON Schema de Schemata pour détecter des violations de spécification. Le tableau de bord affiche désormais les taux d&amp;rsquo;échec de schémas par client (&lt;a href="https://github.com/nostrability/nostrability/pull/315">PR #315&lt;/a>) afin que les développeurs voient quels kinds d&amp;rsquo;événements leur client produit incorrectement. &lt;a href="https://github.com/nostrability/nostrability/pull/323">PR #323&lt;/a> revoit le workflow de publication sur Nostr pour que les annonces de release tournent comme un job séparé qui ne peut pas être annulé par des étapes CI précédentes.&lt;/p>
&lt;p>elsat a aussi publié &lt;a href="https://njump.me/naddr1qvzqqqr4gupzq96n3hp2vfmf6z2y8uvvxl97xk86kkalnqghx4p25lzl79c76a7yqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcqz4fnx4rkw3x57nrcwdn8zt22xd982jehfptsgqtrww">Schemata for nostr devs&lt;/a> le 30 mars, décrivant comment schemata, schemata-codegen et Sherlock s&amp;rsquo;articulent, et donnant les chiffres actuels de couverture : 179 schémas de kinds d&amp;rsquo;événements à travers 65 NIPs, 154 schémas de tags, 13 messages protocole et 310 événements exemples.&lt;/p>
&lt;h3 id="nalgorithm-adds-digest-generation-and-local-score-caching">Nalgorithm adds digest generation and local score caching&lt;/h3>
&lt;p>&lt;a href="https://github.com/jooray/nalgorithm">Nalgorithm&lt;/a>, un nouveau projet de flux Nostr classé par pertinence, a commencé son développement public cette semaine. &lt;a href="https://github.com/jooray/nalgorithm/commit/cf6c501e754ef95a1b4fecc1a76288471a101f43">commit cf6c501&lt;/a> pose l&amp;rsquo;application web initiale qui récupère des posts depuis les follows et les note selon un prompt de préférences défini par l&amp;rsquo;utilisateur. &lt;a href="https://github.com/jooray/nalgorithm/commit/8e931b6ae85d470e73603752134ff49b7ba4bb86">commit 8e931b6&lt;/a> ajoute un outil CLI de digest qui transforme les posts les mieux classés en résumé parlé, tandis que &lt;a href="https://github.com/jooray/nalgorithm/commit/4cb9c635489a9a3429e8d71f3861dc2a11624153">commit 4cb9c63&lt;/a> ajoute un cache de score basé sur fichier et une évolution incrémentale du prompt appris à partir des likes récents. &lt;a href="https://github.com/jooray/nalgorithm/commit/c2edfb8b89fadbe0028c3f5729bda7e23b2e3c03">commit c2edfb8&lt;/a> arrête aussi la mise en cache des scores de repli issus de batchs échoués, pour qu&amp;rsquo;un échec de scoring transitoire n&amp;rsquo;aplatisse pas définitivement le rang d&amp;rsquo;un post.&lt;/p>
&lt;h3 id="tenex-adds-rag-vector-store-and-targeted-mcp-startup">TENEX adds RAG vector store and targeted MCP startup&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, le framework d&amp;rsquo;agents natif Nostr qui relie des agents IA à des canaux Nostr via Telegram, a fusionné sept PRs cette semaine. &lt;a href="https://github.com/tenex-chat/tenex/pull/101">PR #101&lt;/a> ajoute une abstraction de vector store enfichable avec SQLite-vec, LanceDB et Qdrant, donnant aux agents de la retrieval-augmented generation sans verrouillage sur une seule base vectorielle. &lt;a href="https://github.com/tenex-chat/tenex/pull/102">PR #102&lt;/a> rend le démarrage MCP ciblé : seuls les serveurs MCP dont les outils sont réellement utilisés par un agent sont lancés, au lieu de démarrer tous les serveurs au premier run. &lt;a href="https://github.com/tenex-chat/tenex/pull/100">PR #100&lt;/a> ajoute un outil &lt;code>send_message&lt;/code> pour que les agents liés à des canaux Telegram puissent pousser des messages de manière proactive au lieu de seulement répondre aux messages entrants. &lt;a href="https://github.com/tenex-chat/tenex/pull/106">PR #106&lt;/a> évite un spawn de sous-processus qui déclenchait une pré-allocation mémoire Bun/JSC de 9 Go en lisant &lt;code>.git/HEAD&lt;/code> directement au lieu d&amp;rsquo;exécuter &lt;code>git branch&lt;/code>.&lt;/p>
&lt;h3 id="dart-ndk-moves-amber-signer-and-adds-alby-go-1-click">Dart NDK moves Amber signer and adds Alby Go 1-click&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/ndk">Dart NDK&lt;/a>, le kit de développement Flutter pour Nostr, a livré 11 PRs fusionnées. &lt;a href="https://github.com/relaystr/ndk/pull/525">PR #525&lt;/a> déplace le support du signataire Amber dans le paquet ndk_flutter, et &lt;a href="https://github.com/relaystr/ndk/pull/552">PR #552&lt;/a> ajoute une connexion portefeuille Alby Go en un clic à l&amp;rsquo;application exemple. &lt;a href="https://github.com/relaystr/ndk/pull/502">PR #502&lt;/a> ajoute un script install.sh pour le CLI, et &lt;a href="https://github.com/relaystr/ndk/pull/523">PR #523&lt;/a> retire la dépendance au vérifieur Rust au profit d&amp;rsquo;une gestion native des assets.&lt;/p>
&lt;h2 id="protocol-and-spec-work">Protocol and Spec Work&lt;/h2>
&lt;h3 id="marmot-moves-keypackages-to-addressable-events-and-tightens-push-notifications">Marmot moves KeyPackages to addressable events and tightens push notifications&lt;/h3>
&lt;p>La &lt;a href="https://github.com/marmot-protocol/marmot">spécification Marmot&lt;/a> a fusionné quatre PRs qui changent la manière dont le protocole gère le matériel de clé et l&amp;rsquo;appartenance de groupe. &lt;a href="https://github.com/marmot-protocol/marmot/pull/54">PR #54&lt;/a> migre les événements KeyPackage du &lt;code>kind:443&lt;/code> régulier vers le &lt;code>kind:30443&lt;/code> adressable avec tag &lt;code>d&lt;/code>, supprimant le besoin de suppression d&amp;rsquo;événements &lt;a href="https://nostrcompass.org/fr/topics/nip-09/">NIP-09&lt;/a> lors de la rotation des clés. Les événements adressables s&amp;rsquo;écrasent sur place, ce qui rend la rotation auto-contenue. &lt;a href="https://github.com/marmot-protocol/marmot/pull/57">PR #57&lt;/a> permet aux utilisateurs non-admin de commit des propositions SelfRemove (départ volontaire du groupe), et &lt;a href="https://github.com/marmot-protocol/marmot/pull/62">PR #62&lt;/a> exige des admins qu&amp;rsquo;ils abandonnent leur statut d&amp;rsquo;admin avant d&amp;rsquo;utiliser SelfRemove, empêchant un admin de disparaître tout en conservant des privilèges élevés.&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot/pull/61">PR #61&lt;/a> resserre le format des notifications push &lt;a href="https://nostrcompass.org/fr/topics/mip-05/">MIP-05&lt;/a>, rendant explicites l&amp;rsquo;encodage base64 en blob unique, le versionnage, le format filaire des tokens et l&amp;rsquo;usage de clés x-only. L&amp;rsquo;effet est une représentation filaire définie pour les blobs de tokens et les clés x-only à travers la spécification, les bibliothèques clientes et les backends applicatifs. L&amp;rsquo;implémentation de ces changements de spécification a atterri dans la pile White Noise cette semaine et est couverte dans &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#white-noise-fixes-relay-churn-and-expands-client-controls">la section White Noise v2026.3.23 ci-dessus&lt;/a>.&lt;/p>
&lt;h3 id="nip-updates">NIP Updates&lt;/h3>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&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>: Static Websites&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>) : Définit les événements manifeste kind &lt;code>15128&lt;/code> (site racine) et kind &lt;code>35128&lt;/code> (site nommé) pour héberger des sites web statiques sous des paires de clés Nostr en utilisant le stockage Blossom. Voir la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#nip-deep-dive-nip-5a-static-websites">deep dive plus bas&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-30/">NIP-30&lt;/a> (Custom Emoji) : autoriser les tirets dans les shortcodes&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2297">PR #2297&lt;/a>) : Met à jour la description des shortcodes pour inclure les tirets. Les shortcodes avec tirets sont utilisés en pratique depuis l&amp;rsquo;introduction du NIP, la spécification documente donc maintenant l&amp;rsquo;usage réel.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&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>) : Propose un format de messages structuré pour que les agents envoient des éléments d&amp;rsquo;interface interactifs via des DMs chiffrés, incluant des payloads typés &lt;code>text&lt;/code>, &lt;code>buttons&lt;/code>, &lt;code>card&lt;/code>, et &lt;code>table&lt;/code>. Le brouillon garde tout à l&amp;rsquo;intérieur du contenu JSON des messages directs &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a>. Il ne définit pas de nouveau kind d&amp;rsquo;événement et utilise un format simple de callback string pour les réponses aux boutons.&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>) : Propose un modèle relay hybride où les relays restent autoritaires mais peuvent aussi coordonner la distribution pair à pair des événements récents sur WebRTC. Le brouillon introduit des messages relay tels que &lt;code>PEER_REGISTER&lt;/code>, &lt;code>PEER_REQUEST&lt;/code>, et &lt;code>PEER_OFFER&lt;/code>, avec des clients stables agissant comme Super Peers et le relay comme nœud seed et repli.&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>) : Rouvre l&amp;rsquo;ancienne idée de zap-poll de NIP-69 maintenant que &lt;a href="https://github.com/nostr-protocol/nips/blob/master/88.md">NIP-88&lt;/a> (Polls) couvre les sondages gratuits. Le brouillon utilise les définitions de sondages kind &lt;code>6969&lt;/code> et les zaps kind &lt;code>9734&lt;/code> comme votes, ce qui en fait un système de sondage payant avec résistance économique aux Sybils. Il complète les sondages gratuits 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>) : Propose une convention où les zaps envoyés à la pubkey d&amp;rsquo;un relay ou d&amp;rsquo;un client sont affichés comme des notes promotionnelles spécialisées, transformant de fait les reçus de zap en surface publicitaire. Les opérateurs de relays et clients publieraient des profils avec &lt;code>lud16&lt;/code>, récupéreraient ces reçus, extrairaient le contenu embarqué dans les descriptions de zaps, et pourraient fixer des seuils minimum en sats pour réduire le 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>) : Propose le kind &lt;code>30085&lt;/code> comme événement remplaçable paramétré pour des attestations structurées de réputation sur des agents Nostr. Le brouillon évite un score global unique en rendant la réputation dépendante de l&amp;rsquo;observateur, ajoute une décroissance temporelle pour que les anciennes attestations s&amp;rsquo;effacent, supporte les notes négatives avec exigence de preuves, et esquisse des modèles de scoring pondéré simple et de diversité de graphe pour une meilleure résistance 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>) : Propose des événements adressables kind &lt;code>31402&lt;/code> pour annoncer des API HTTP payantes, avec Nostr gérant la découverte et HTTP 402 gérant le paiement. Le brouillon est tags-first afin que les relays puissent filtrer par méthodes de paiement, prix et capacités sans parser du JSON, et il autorise des schémas optionnels de requête et réponse pour que les clients ou agents puissent auto-générer les appels.&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>) : Propose de dériver une paire de clés Nostr à partir d&amp;rsquo;une signature ECDSA LNURL-auth combinée à un nonce aléatoire côté client. La formule de dérivation est &lt;code>nsec = SHA256(ecdsa_signature || nonce)&lt;/code>. Le serveur voit la signature ECDSA (inhérente au handshake LNURL-auth) mais ne voit jamais le nonce, et le navigateur génère le nonce mais ne contrôle pas la signature. Aucun des deux morceaux ne suffit seul à dériver le nsec. Le résultat visé est que le même portefeuille Lightning produise la même clé Nostr sur plusieurs appareils, avec le portefeuille comme ancre de récupération et sans qu&amp;rsquo;aucun serveur ne puisse reconstruire la clé privée.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> : documenter le champ rejected&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2290">PR #2290&lt;/a>) : Documente le champ &lt;code>rejected&lt;/code> pour les réponses de signataire basées sur intents, formalisant le comportement auquel &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#amethyst-ships-pinned-notes-relay-management-and-request-to-vanish">le correctif v1.07.x d&amp;rsquo;Amethyst&lt;/a> a dû s&amp;rsquo;adapter.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-5a-static-websites">NIP Deep Dive: NIP-5A (Static Websites)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a> définit la manière d&amp;rsquo;héberger des sites web statiques sous des paires de clés Nostr, en utilisant deux kinds d&amp;rsquo;événements et l&amp;rsquo;infrastructure de stockage de blobs existante pour transformer des événements signés en pages web servies. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">spécification&lt;/a> a été fusionnée le 25 mars via &lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>.&lt;/p>
&lt;p>Le modèle utilise le kind &lt;code>15128&lt;/code> pour un site racine, un par pubkey, et le kind &lt;code>35128&lt;/code> pour des sites nommés identifiés par un tag &lt;code>d&lt;/code>. Chaque manifeste associe des chemins d&amp;rsquo;URL absolus à des hachages SHA256. Voici un manifeste de site racine :&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>Le flux de service fonctionne en trois étapes. Un serveur hôte reçoit une requête HTTP, extrait la pubkey de l&amp;rsquo;auteur depuis le sous-domaine (soit un npub pour les sites racines, soit une pubkey encodée en base36 pour les sites nommés), récupère la liste de relays de l&amp;rsquo;auteur via &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a>, puis interroge le manifeste du site. Une fois le manifeste trouvé, le serveur résout le chemin demandé vers un hachage de contenu, télécharge le blob correspondant depuis le ou les serveurs Blossom listés dans les tags &lt;code>server&lt;/code>, puis le renvoie.&lt;/p>
&lt;p>Le format du sous-domaine DNS est fortement spécifié. Les sites racines utilisent le npub standard comme sous-domaine. Les sites nommés utilisent un encodage base36 de 50 caractères de la pubkey brute suivi de la valeur du tag &lt;code>d&lt;/code>, le tout dans un seul label DNS. Comme les labels DNS sont limités à 63 caractères et que l&amp;rsquo;encodage base36 prend toujours 50 caractères, le tag &lt;code>d&lt;/code> est limité à 13 caractères. La spécification exige aussi que les tags &lt;code>d&lt;/code> correspondent à &lt;code>^[a-z0-9-]{1,13}$&lt;/code> et ne se terminent pas par un tiret, pour éviter les ambiguïtés de résolution DNS.&lt;/p>
&lt;p>L&amp;rsquo;utilisation de hachages de contenu signifie qu&amp;rsquo;un même site peut être servi par différents serveurs hôtes, et que l&amp;rsquo;intégrité des fichiers est vérifiable sans faire confiance au serveur. Un serveur hôte n&amp;rsquo;a pas besoin de stocker lui-même les fichiers. Il les récupère à la demande depuis Blossom à partir des hachages présents dans le manifeste. Cela signifie que l&amp;rsquo;auteur contrôle ce qui est servi, le serveur Blossom stocke les fichiers bruts, et le serveur hôte se contente de relier les deux. Chacun de ces trois composants peut être remplacé indépendamment.&lt;/p>
&lt;p>Les implémentations existantes incluent &lt;a href="https://github.com/lez/nsite">nsite&lt;/a>, le serveur hôte qui résout les manifestes et sert les fichiers, et &lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>, une interface pour construire et publier les manifestes. La spécification a aussi ajouté un tag &lt;code>source&lt;/code> pour lier le dépôt du code source du site, et la mise à jour du README fusionnée séparément dans &lt;a href="https://github.com/nostr-protocol/nips/pull/2286">PR #2286&lt;/a> a enregistré les kinds &lt;code>15128&lt;/code> et &lt;code>35128&lt;/code> dans l&amp;rsquo;index des kinds 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> définit le kind &lt;code>62&lt;/code> comme une demande faite aux relays de supprimer tous les événements de la pubkey requérante. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/62.md">spécification&lt;/a> est motivée juridiquement : dans les juridictions avec un droit à l&amp;rsquo;oubli, disposer d&amp;rsquo;une demande de suppression standardisée et signée donne aux opérateurs de relays un signal clair sur lequel agir.&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 spécification sépare les demandes de vanish ciblées des demandes globales. Une demande ciblée inclut des tags &lt;code>relay&lt;/code> spécifiques identifiant quels relays doivent agir. Une demande globale utilise la chaîne littérale &lt;code>ALL_RELAYS&lt;/code> comme valeur du tag relay, demandant à tous les relays qui voient l&amp;rsquo;événement de supprimer tous les événements de cette pubkey. Les relays qui se conforment doivent aussi s&amp;rsquo;assurer que les événements supprimés ne puissent pas être re-diffusés dans le relay, rendant la suppression persistante.&lt;/p>
&lt;p>NIP-62 va au-delà de &lt;a href="https://nostrcompass.org/fr/topics/nip-09/">NIP-09&lt;/a> (Event Deletion) à la fois par sa portée et par son intention. NIP-09 permet de supprimer des événements individuels, et les relays MAY s&amp;rsquo;y conformer. NIP-62 demande la suppression de tout, et la spécification dit que les relays MUST s&amp;rsquo;y conformer si leur URL est taguée. Elle demande aussi aux relays de supprimer les événements &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) qui avaient p-tagué la pubkey requérante, ce qui signifie que les DMs entrants sont nettoyés en même temps que les propres événements de l&amp;rsquo;utilisateur. Publier une suppression NIP-09 contre une demande vanish NIP-62 n&amp;rsquo;a aucun effet : une fois qu&amp;rsquo;on vanish, on ne peut pas « dé-vanish » en supprimant la demande de vanish.&lt;/p>
&lt;p>Cette semaine, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-04-01-newsletter/#amethyst-ships-pinned-notes-relay-management-and-request-to-vanish">Amethyst v1.07.0&lt;/a> a livré le support NIP-62 côté client, permettant aux utilisateurs d&amp;rsquo;initier des demandes de vanish depuis l&amp;rsquo;application. Côté relay, &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> a quatre PRs ouvertes ajoutant le support NIP-62 aux backends mémoire, LMDB, SQLite et tests base de données (&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>). Le support côté client et côté relay avancent donc la même semaine.&lt;/p>
&lt;p>La conception du protocole soulève une tension pratique. La proposition de valeur de Nostr inclut la résistance à la censure, ce qui signifie que les relays ne devraient pas pouvoir empêcher la publication. NIP-62 introduit un cas où un relay MUST empêcher la re-publication depuis une pubkey spécifique. Les deux propriétés coexistent parce que la demande est auto-dirigée : on demande la suppression de ses propres événements, pas de ceux d&amp;rsquo;un tiers. La propriété de résistance à la censure reste intacte pour tout le monde sauf pour la personne qui a explicitement choisi de se retirer.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ou avez des nouvelles à partager ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) DM&lt;/a> ou retrouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #15</title><link>https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> enchaîne après sa version 3.0 orientée portefeuille avec &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#primal-adds-follow-packs-zap-enrichment-and-deep-links">Follow Packs, enrichissement zap et liens profonds &lt;code>primalconnect://&lt;/code>&lt;/a>. &lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a> publie une &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#bigbrotr-maps-exposed-private-keys-across-the-relay-network">analyse de fuite de nsec&lt;/a> portant sur 41 millions d&amp;rsquo;événements à travers 1 085 relays et trouve 16 599 clés privées valides, tandis que &lt;a href="https://npub.world">npub.world&lt;/a> intègre des avertissements de fuite sur les pages de profil la même semaine. Martti Malmi lance &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#nostr-vpn-launches-as-a-tailscale-alternative">nostr-vpn&lt;/a>, une alternative à Tailscale qui signale via les relays Nostr et établit des tunnels WireGuard, avec 11 versions en sept jours. L&amp;rsquo;équipe &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#open-source-doom-runs-peer-to-peer-over-nostr">open source un DOOM P2P&lt;/a> sur Nostr, &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">v0.2.0&lt;/a>, et &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a> s&amp;rsquo;étend à &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#nostrability-schemata-goes-multilingual">six langages&lt;/a> en une semaine.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> enchaîne après sa version 3.0 orientée portefeuille avec &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#primal-adds-follow-packs-zap-enrichment-and-deep-links">Follow Packs, enrichissement zap et liens profonds &lt;code>primalconnect://&lt;/code>&lt;/a>. &lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a> publie une &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#bigbrotr-maps-exposed-private-keys-across-the-relay-network">analyse de fuite de nsec&lt;/a> portant sur 41 millions d&amp;rsquo;événements à travers 1 085 relays et trouve 16 599 clés privées valides, tandis que &lt;a href="https://npub.world">npub.world&lt;/a> intègre des avertissements de fuite sur les pages de profil la même semaine. Martti Malmi lance &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#nostr-vpn-launches-as-a-tailscale-alternative">nostr-vpn&lt;/a>, une alternative à Tailscale qui signale via les relays Nostr et établit des tunnels WireGuard, avec 11 versions en sept jours. L&amp;rsquo;équipe &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#open-source-doom-runs-peer-to-peer-over-nostr">open source un DOOM P2P&lt;/a> sur Nostr, &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> livre &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">v0.2.0&lt;/a>, et &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a> s&amp;rsquo;étend à &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#nostrability-schemata-goes-multilingual">six langages&lt;/a> en une semaine.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="primal-adds-follow-packs-zap-enrichment-and-deep-links">Primal adds Follow Packs, zap enrichment, and deep links&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-18-newsletter/">Suite à la couverture de la 3.0.7 la semaine dernière&lt;/a>, &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> a consacré cette semaine au travail post-version autour de l&amp;rsquo;onboarding, de l&amp;rsquo;UX de composition et du contexte portefeuille. L&amp;rsquo;onboarding repensé introduit les Follow Packs (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/949">PR #949&lt;/a>), un bouton GIF natif rejoint l&amp;rsquo;éditeur de notes, un service d&amp;rsquo;enrichissement zap (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/979">PR #979&lt;/a>) annote les transactions du portefeuille avec leur contexte zap, et un protocole de lien profond &lt;code>primalconnect://&lt;/code> (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/969">PR #969&lt;/a>) permet la navigation entre applications.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> livre le même travail via TestFlight en parallèle, avec le changement de portefeuille (&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/191">PR #191&lt;/a>), l&amp;rsquo;implémentation des sondages et la refonte de l&amp;rsquo;onboarding dans la même fenêtre.&lt;/p>
&lt;h3 id="bigbrotr-maps-exposed-private-keys-across-the-relay-network">BigBrotr maps exposed private keys across the relay network&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>, la plateforme d&amp;rsquo;analytique de relays Nostr, a publié une &lt;a href="https://bigbrotr.com/blog/exposed-nsec-analysis/">analyse détaillée des clés privées exposées&lt;/a> sur le réseau de relays. L&amp;rsquo;étude a parcouru 41 millions d&amp;rsquo;événements sur 1 085 relays, à la recherche de chaînes nsec valides intégrées dans le contenu des événements, et a trouvé 16 599 clés privées valides. Le chiffre paraît alarmant jusqu&amp;rsquo;à ce qu&amp;rsquo;on filtre un bot nommé « Mr.nsec », qui représente 92 % des correspondances. Après retrait du trafic du bot, seuls 38 comptes réels totalisant plus de 21 000 abonnés avaient des clés exposées, et aucun ne montrait de signe de conscience que ses clés étaient publiques.&lt;/p>
&lt;p>L&amp;rsquo;équipe a construit un nsec-leak-checker comme service &lt;a href="https://nostrcompass.org/fr/topics/nip-90/">NIP-90&lt;/a> (Data Vending Machine), permettant aux utilisateurs de vérifier si leur clé privée apparaît quelque part dans l&amp;rsquo;ensemble de données scanné sans révéler la clé au vérificateur. &lt;a href="https://npub.world">npub.world&lt;/a> a intégré les données de fuite la même semaine, affichant des bannières d&amp;rsquo;avertissement sur les pages de profil où des clés exposées ont été détectées. La combinaison donne au réseau à la fois une interface programmatique pour les DVMs et les agents, et un avertissement lisible par l&amp;rsquo;humain pour les utilisateurs ordinaires. L&amp;rsquo;ensemble de données sous-jacent alimente aussi &lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.4.0">BigBrotr v6.4.0&lt;/a>, qui ajoute des vues matérialisées d&amp;rsquo;événements remplaçables et adressables ainsi qu&amp;rsquo;un correctif de délai d&amp;rsquo;inactivité du synchroniseur.&lt;/p>
&lt;h3 id="nostr-vpn-launches-as-a-tailscale-alternative">Nostr VPN launches as a Tailscale alternative&lt;/h3>
&lt;p>Martti Malmi (mmalmi), créateur d&amp;rsquo;Iris, a construit et livré &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>, un VPN pair à pair qui utilise les relays Nostr pour le signalement et WireGuard (via boringtun) pour les tunnels chiffrés. La motivation était directe : « Got annoyed by Tailscale requiring 3rd party accounts, so created Nostr VPN. » L&amp;rsquo;outil crée des réseaux maillés entre appareils en utilisant des paires de clés Nostr comme identité, sans serveur central de coordination.&lt;/p>
&lt;p>Le projet a livré 11 versions en sept jours, de &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.2">v0.2.2&lt;/a> à &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.13">v0.2.13&lt;/a>. Ce sprint a ajouté le support Windows, l&amp;rsquo;appairage LAN pour la découverte sur réseau local, et un sidecar Android pour les appareils mobiles. L&amp;rsquo;architecture est simple : deux appareils échangent les métadonnées de connexion via les relays Nostr, puis établissent un tunnel WireGuard direct. Nostr gère la découverte et le signalement de traversée NAT. WireGuard transporte le trafic réel. L&amp;rsquo;identité est une paire de clés Nostr.&lt;/p>
&lt;p>Malmi a aussi continué à pousser &lt;a href="https://github.com/mmalmi/nostr-double-ratchet">nostr-double-ratchet&lt;/a>, une bibliothèque de canal de messagerie sécurisée de type Signal, avec six versions de &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.86">v0.0.86&lt;/a> à &lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.93">v0.0.93&lt;/a> pendant la même semaine.&lt;/p>
&lt;h3 id="open-source-doom-runs-peer-to-peer-over-nostr">Open-source DOOM runs peer-to-peer over Nostr&lt;/h3>
&lt;p>L&amp;rsquo;équipe &lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a> a open sourcé une implémentation multijoueur pair à pair de DOOM qui utilise Nostr pour la découverte de pairs, &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> pour le chiffrement de bout en bout, et &lt;a href="https://github.com/n0-computer/iroh">Iroh&lt;/a>, la bibliothèque réseau QUIC de n0, pour le transport gossip. Le jeu est livré sous forme d&amp;rsquo;un fichier WebXDC de 4,2 Mo qui peut être envoyé dans des messages de chat, sans nécessiter de serveurs pour héberger ou coordonner une partie.&lt;/p>
&lt;p>L&amp;rsquo;approche technique remplace le netcode lockstep original de 1993 par un modèle hybride de synchronisation en temps réel. Les joueurs se découvrent via des requêtes relay Nostr, négocient les sessions via des canaux chiffrés Marmot, puis basculent sur la couche gossip QUIC d&amp;rsquo;Iroh pour le trafic de jeu à faible latence. La pile utilise Nostr pour la découverte, Marmot pour le chiffrement et Iroh pour le transport.&lt;/p>
&lt;p>Vector a aussi livré du durcissement de sécurité cette semaine. La version ajoute un coffre de clés renforcé en mémoire avec protections anti-debug et zeroize pour le matériel sensible, le blocage d&amp;rsquo;utilisateurs avec filtrage complet des DMs et messages de groupe, et des correctifs de canaux temps réel WebXDC pour les Mini Apps.&lt;/p>
&lt;h3 id="fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">FIPS v0.2.0 ships Tor transport, reproducible builds, and sidecar examples&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>, le Free Internetworking Peering System et projet de réseau maillé adjacent à Nostr, a livré &lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.2.0-rel">v0.2.0&lt;/a>. La version ajoute le support du transport Tor pour des liens maillés anonymisés, des builds reproductibles, un exemple sidecar qui se connecte via un relay Nostr, et la publication de versions Nostr dans le workflow de paquets OpenWrt. La version corrige aussi les pics de gigue post-rekey causés par les frames de drain-window. Le format filaire a changé depuis v0.1.0, donc les nœuds v0.1.0 existants ne peuvent pas interopérer avec v0.2.0 sans mise à niveau.&lt;/p>
&lt;h3 id="nostrability-schemata-goes-multilingual">Nostrability Schemata goes multilingual&lt;/h3>
&lt;p>Le projet &lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a>, qui maintient des définitions JSON Schema pour valider les kinds d&amp;rsquo;événements Nostr, est passé de JavaScript seul à six langages en une semaine. De nouveaux paquets ont été livrés pour Rust, Go, Dart, Swift et Python, chacun fournissant à la fois un paquet de données et un validateur. &lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.6">v0.2.6&lt;/a> a aussi ajouté 17 nouveaux schémas de kinds d&amp;rsquo;événements.&lt;/p>
&lt;p>Le &lt;a href="https://nostrability.github.io/nostrability/">tracker d&amp;rsquo;interopérabilité Nostrability&lt;/a> a reçu une refonte parallèle. Un nouvel onglet What&amp;rsquo;s New publie les mises à jour via un flux Atom et un événement Nostr, le filtrage par catégorie d&amp;rsquo;application permet aux visiteurs de cibler des types de clients précis, et le tracker détecte maintenant automatiquement les langages de programmation à partir des métadonnées des dépôts GitHub. Nostrability possède aussi désormais son propre npub, ce qui rend le projet lui-même découvrable via le protocole qu&amp;rsquo;il documente. Pour les auteurs de bibliothèques travaillant sur plusieurs langages, les paquets de schémas multi-langages signifient que les mêmes définitions de kinds d&amp;rsquo;événements sont disponibles comme imports natifs, au lieu d&amp;rsquo;obliger chaque projet à maintenir sa propre copie de schémas.&lt;/p>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;h3 id="amethyst-v1060-and-v1061">Amethyst v1.06.0 and v1.06.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, le client Android maintenu par vitorpamplona, a livré &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.0">v1.06.0&lt;/a> et &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.1">v1.06.1&lt;/a> le 23 mars. La fonctionnalité phare est le support des sondages en utilisant les données &lt;a href="https://nostrcompass.org/fr/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) pour le vote pondéré, avec des cartes de sondages et de zap polls repensées. Le nouveau rendu donne aux sondages standard et pondérés par zap une disposition visuelle plus propre. v1.06.1 suit avec des correctifs de crash liés aux modifications concurrentes qui résolvent des régressions de stabilité introduites dans le chemin de rendu des sondages.&lt;/p>
&lt;h3 id="amber-v500-and-v501">Amber v5.0.0 and v5.0.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;application signataire &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), a promu son travail de pré-version récent en 4.1.x vers la stable avec &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.0">v5.0.0&lt;/a> le 18 mars. Cette version stable embarque les changements d&amp;rsquo;auth relay &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a>, de Tor intégré, de permissions par type de contenu et de stockage chiffré du PIN couverts la semaine dernière. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.1">v5.0.1&lt;/a> retire ensuite la permission internet de la variante hors ligne, de sorte que cette build ne peut plus effectuer de requêtes réseau au niveau des permissions Android.&lt;/p>
&lt;h3 id="mostro-v0170-and-mostro-mobile-v122">Mostro v0.17.0 and Mostro Mobile v1.2.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, l&amp;rsquo;échange Bitcoin pair à pair construit sur Nostr, a livré &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.0">v0.17.0&lt;/a> le 18 mars. La version serveur poursuit le travail sur les litiges et les évaluations du cycle v0.16.x, en ajoutant des données de réputation commerciale plus complètes pour les acheteurs et vendeurs sous forme d&amp;rsquo;événements Nostr. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, le client Flutter, a suivi avec &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.2">v1.2.2&lt;/a> le 23 mars, maintenant l&amp;rsquo;interface mobile synchronisée avec les derniers changements du protocole.&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;application de streaming live Nostr, a livré &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.14.0">v0.14.0&lt;/a> le 19 mars avec le lancement de Shosho Shop. La version ajoute un onglet Shop sur les profils, Shop dans Browse, et un bouton In-Live Shop sur les lives et clips. Les notes de version indiquent que les « Nostr products » existants apparaissent automatiquement et que les acheteurs cliquent vers la page Plebeian Market du vendeur pour l&amp;rsquo;achat. Les notes de version de Shosho n&amp;rsquo;identifient pas le kind d&amp;rsquo;événement de listing, il n&amp;rsquo;est donc pas encore possible de confirmer si Shosho Shop lit les mêmes annonces &lt;a href="https://nostrcompass.org/fr/topics/nip-99/">NIP-99&lt;/a> que &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> prend explicitement en charge dans son 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 collection de paquets utilitaires de hzrd149 pour construire des applications Nostr, a livré &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core@5.2.0">v5.2.0&lt;/a> le 22 mars. La version s&amp;rsquo;étend sur six paquets. Le paquet SQLite corrige une collision de contrainte UNIQUE sur les tags d&amp;rsquo;événements qui provoquait des insertions dupliquées. Le paquet signers ajoute &lt;code>AndroidNativeSigner&lt;/code>, qui encapsule l&amp;rsquo;interface native de signataire Android &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> pour que les applications basées sur webview puissent utiliser une signature adossée au matériel sans code de pont personnalisé. Le paquet relay ajoute un champ &lt;code>challenge&lt;/code> aux objets d&amp;rsquo;état du relay et du pool, suivant l&amp;rsquo;état d&amp;rsquo;auth &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> pour que les applications puissent détecter quand un relay demande une authentification et répondre programmatiquement. Le paquet core gagne &lt;code>isEventPointerSame&lt;/code> et &lt;code>isAddressPointerSame&lt;/code> pour dédupliquer les références d&amp;rsquo;événements, et le paquet common ajoute &lt;code>user.blossomServers$&lt;/code> pour résoudre les serveurs médias Blossom d&amp;rsquo;un utilisateur. Applesauce alimente noStrudel, Satellite et plusieurs autres clients web, donc ces correctifs se propagent à travers toute la couche des clients web.&lt;/p>
&lt;h3 id="wisp-ships-16-releases-in-one-week">Wisp ships 16 releases in one week&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>, le client Nostr Android, a livré 16 versions de &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.9.3-beta">v0.9.3-beta&lt;/a> à &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.13.1-beta">v0.13.1-beta&lt;/a> cette semaine. Les ajouts de fonctionnalités incluent le support multi-comptes, un mode zen notifications pour réduire les interruptions, les brouillons et publications planifiées, des filtres de sécurité de contenu et une nouvelle icône flamme.&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;application privée de notes chiffrées et de stockage de fichiers, a livré &lt;a href="https://github.com/dtonon/manent/releases/tag/v1.2.0">v1.2.0&lt;/a> le 20 mars. La version ajoute la capture caméra directement depuis l&amp;rsquo;application, le redimensionnement d&amp;rsquo;image avant téléversement pour réduire les coûts de stockage, et le pinch-to-zoom pour examiner les images stockées. Manent stocke notes et fichiers chiffrés sur les relays Nostr à l&amp;rsquo;aide de la paire de clés de l&amp;rsquo;utilisateur, ce qui fait du téléphone ou de l&amp;rsquo;application desktop un client léger capable de reconstruire tout son état à partir des données des relays.&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>, le client vidéo court format, a livré &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.7">1.0.7&lt;/a> le 21 mars avec un watchdog de lecture vidéo qui relance automatiquement les vidéos bloquées. Après l&amp;rsquo;infrastructure de tests E2E et le chargement direct MP4 dans &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>, cette version cible le chemin d&amp;rsquo;échec restant de lecture : les vidéos qui s&amp;rsquo;arrêtent en milieu de flux sans lancer d&amp;rsquo;erreur.&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;extension de navigateur &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a> (Browser Extension Signer), a livré &lt;a href="https://github.com/getAlby/lightning-browser-extension/releases/tag/v3.14.2">v3.14.2&lt;/a> le 18 mars avec l&amp;rsquo;affichage de QR codes d&amp;rsquo;adresses Lightning et le support de signature Schnorr. Cet ajout Schnorr aligne l&amp;rsquo;extension de navigateur avec le schéma de signature secp256k1 que Nostr utilise nativement.&lt;/p>
&lt;h3 id="noornote-v065-through-v0611">NoorNote v0.6.5 through v0.6.11&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>, l&amp;rsquo;application de prise de notes, a livré sept versions de &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.5">v0.6.5&lt;/a> à &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.11">v0.6.11&lt;/a>. L&amp;rsquo;ajout principal est Follow Packs : des ensembles curatés de comptes que les utilisateurs peuvent parcourir et suivre en masse, similaires aux Twitter Lists mais conçus pour l&amp;rsquo;onboarding. Les utilisateurs peuvent créer, modifier et partager des Follow Packs avec des titres, descriptions et images de couverture personnalisés. La série met aussi à niveau la bibliothèque Nostr sous-jacente de NDK v2 à v3, ce qui apporte une meilleure gestion des connexions relay et des abonnements. Les picture notes et une expérience de connexion relay repensée complètent le cycle.&lt;/p>
&lt;h3 id="nak-v0191-and-v0192">nak v0.19.1 and v0.19.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, la boîte à outils Nostr en ligne de commande de fiatjaf pour interagir avec les relays, encoder et décoder les identifiants &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), signer des événements et interroger les données relay, a livré &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a> et &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.2">v0.19.2&lt;/a> les 17 et 20 mars. Ces deux point releases suivent l&amp;rsquo;ajout de l&amp;rsquo;interface forum de groupe de &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-18-newsletter/">v0.19.0&lt;/a>.&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;application de calendrier décentralisée construite sur &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), a livré &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.1">v0.2.1&lt;/a> le 20 mars. La version corrige un problème de modèle de notification qui affectait les rappels d&amp;rsquo;événements. Calendar stocke les événements sous forme d&amp;rsquo;événements Nostr kind 31922 (basés sur la date) et kind 31923 (basés sur l&amp;rsquo;heure), permettant à n&amp;rsquo;importe quel client Nostr d&amp;rsquo;afficher les données de calendrier s&amp;rsquo;il choisit de supporter ces kinds. L&amp;rsquo;application est construite par l&amp;rsquo;équipe Formstr, qui maintient aussi Formstr (formulaires décentralisés) et Pollerama (sondages).&lt;/p>
&lt;h3 id="nym-v350-through-v353">NYM v3.50 through v3.53&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">NYM&lt;/a>, le client de chat éphémère ponté avec Bitchat, a livré 28 versions de v3.50 à v3.53. La fonctionnalité la plus notable est Nymbot, un chatbot intégré qui répond aux mentions &lt;code>@nymbot&lt;/code> dans les canaux et fournit des fonctions de statut et de gestion des relays. Un « hardcore mode » génère une nouvelle paire de clés pour chaque message envoyé, rendant les fils de conversation non corrélables au niveau de l&amp;rsquo;identité. Le compromis est clair : on perd une identité persistante mais on gagne en anonymat par message. La couche proxy relay a aussi reçu du travail, avec des workers proxy relay shardés pour une meilleure connectivité, le support de canaux geohash et la tolérance au décalage d&amp;rsquo;horloge pour les nœuds aux horloges système imprécises.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&lt;/h2>
&lt;h3 id="ditto-adds-bluesky-bridge-and-wikipedia-integration">Ditto adds Bluesky bridge and Wikipedia integration&lt;/h3>
&lt;p>&lt;a href="https://github.com/soapbox-pub/ditto">Ditto&lt;/a>, le client social Nostr personnalisable de l&amp;rsquo;équipe Soapbox, a enregistré plus de 300 commits cette semaine à travers trois pistes fonctionnelles distinctes. La première est un pont Bluesky (19 commits) qui rend les publications Bluesky inline sous forme de fils complets de style flux, ajoute une navigation latérale vers une page de découverte Bluesky alimentée par le flux officiel Discover (whats-hot), et relie des boutons d&amp;rsquo;action pour commenter, partager, réagir et copier les liens. Lorsqu&amp;rsquo;un utilisateur répond à un post Bluesky depuis Ditto, la fenêtre de composition affiche un avertissement rappelant la nature inter-protocole de l&amp;rsquo;interaction. Les réactions de kind 17 &lt;a href="https://nostrcompass.org/fr/topics/nip-73/">NIP-73&lt;/a> (External Content IDs) alimentent ce modèle : un utilisateur Nostr réagit à un post Bluesky, et la réaction est stockée comme un événement Nostr standard référant l&amp;rsquo;identifiant de contenu externe. C&amp;rsquo;est le même motif NIP-73 qui pourrait faire le pont vers n&amp;rsquo;importe quel contenu externe, des posts Bluesky aux vidéos YouTube en passant par les pages web.&lt;/p>
&lt;p>La seconde piste est une intégration Wikipedia (9 commits). Ditto rend maintenant du contenu riche d&amp;rsquo;articles Wikipedia sur les pages de détail au lieu de simples aperçus de liens, ajoute l&amp;rsquo;autocomplétion de recherche avec miniatures d&amp;rsquo;articles, et fournit une page &lt;code>/wikipedia&lt;/code> qui récupère le contenu mis en avant depuis l&amp;rsquo;API Wikipedia. Les résultats Wikipedia et Archive.org apparaissent aussi dans la liste générale d&amp;rsquo;autocomplétion de recherche. La troisième piste concerne le support iOS via Capacitor, avec un script de build distant et la configuration de plateforme livrés en parallèle d&amp;rsquo;une refonte UI (55 commits) qui remplace les en-têtes flous par un nouveau design de navigation en arc à travers toute l&amp;rsquo;application. Ces 314 commits déplacent Ditto d&amp;rsquo;un client Nostr-only vers un agrégateur multi-protocole qui traite Bluesky et Wikipedia comme des sources de contenu de première classe aux côtés du flux Nostr.&lt;/p>
&lt;h3 id="pika-builds-a-nip-34-forge-ci-pipeline">Pika builds a NIP-34 forge CI pipeline&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;application de messagerie chiffrée basée sur Marmot, a fusionné 33 PRs cette semaine autour d&amp;rsquo;une forge &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> auto-hébergée avec CI avant fusion. La forge est une couche d&amp;rsquo;hébergement git qui reçoit les patches comme événements NIP-34, exécute les vérifications CI avant fusion, puis renvoie un statut structuré via des événements Nostr. &lt;a href="https://github.com/sledtools/pika/pull/701">PR #701&lt;/a> ajoute une CI pré-fusion et nocturne par lanes, où chaque chemin de code (Rust, TypeScript, builds Apple) s&amp;rsquo;exécute dans sa propre lane avec un statut indépendant de réussite ou d&amp;rsquo;échec. &lt;a href="https://github.com/sledtools/pika/pull/715">PR #715&lt;/a> déplace les agents CI gérés vers des conteneurs Incus OpenClaw pour l&amp;rsquo;isolation, et &lt;a href="https://github.com/sledtools/pika/pull/733">PR #733&lt;/a> ajoute un CLI &lt;code>ph forge&lt;/code> pour interagir avec la forge hébergée depuis la ligne de commande. Des PRs de support gèrent les permissions d&amp;rsquo;écriture du dépôt pour les fusions (&lt;a href="https://github.com/sledtools/pika/pull/736">PR #736&lt;/a>), les métadonnées CI structurées avec badges de statut en direct (&lt;a href="https://github.com/sledtools/pika/pull/722">PR #722&lt;/a>), la séparation des builds nocturnes Apple (&lt;a href="https://github.com/sledtools/pika/pull/738">PR #738&lt;/a>), et des correctifs d&amp;rsquo;authentification de forge et de lookup de branches (&lt;a href="https://github.com/sledtools/pika/pull/734">PR #734&lt;/a>). C&amp;rsquo;est l&amp;rsquo;un des premiers systèmes CI/CD opérationnels construits au-dessus des événements git NIP-34, amenant l&amp;rsquo;hébergement de code source basé sur Nostr au-delà du simple échange de patches vers le workflow merge-and-test que les développeurs attendent de GitHub ou GitLab.&lt;/p>
&lt;h3 id="nostria-adds-communities-code-snippets-and-voice-event-handling">Nostria adds communities, code snippets, and voice event handling&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, le client Nostr cross-platform maintenu par sondreb, a passé cette semaine à étendre la surface de l&amp;rsquo;application au-delà du filtrage Web of Trust couvert dans le numéro 14. L&amp;rsquo;ajout principal est une implémentation complète de &lt;a href="https://nostrcompass.org/fr/topics/nip-72/">NIP-72&lt;/a> (Moderated Communities) avec création de communautés, configuration des modérateurs et relays, suivi de l&amp;rsquo;approbation des publications avec aperçus d&amp;rsquo;images, et une page dédiée aux communautés avec onglets Posts et Moderators.&lt;/p>
&lt;p>La même période de travail ajoute aussi le rendu et l&amp;rsquo;édition de snippets de code avec éditeur à coloration syntaxique, le support des réponses à événements vocaux pour les conversations audio, les paramètres de relays de chat pour les messages directs, le partage de canaux via l&amp;rsquo;API Web Share, un système d&amp;rsquo;ancrage de la barre d&amp;rsquo;outils pour le lecteur multimédia, l&amp;rsquo;inscription intégrée au dernier service Brainstorm Web of Trust, les flux d&amp;rsquo;envoi et de réception d&amp;rsquo;argent dans les DMs utilisant NWC et des invoices BOLT-11, la gestion native des GIFs Nostr, et un chemin d&amp;rsquo;import RSS renforcé pour les musiciens capable de récupérer les répartitions Lightning existantes depuis les flux de podcasts.&lt;/p>
&lt;h3 id="nostr-vpn-rapid-iteration">nostr-vpn rapid iteration&lt;/h3>
&lt;p>Au-delà du &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#nostr-vpn-launches-as-a-tailscale-alternative">lancement initial&lt;/a>, l&amp;rsquo;historique de commits de &lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a> révèle les problèmes précis rencontrés lors du déploiement réel. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.3">v0.2.3&lt;/a> à &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.5">v0.2.5&lt;/a> ont ajouté le script d&amp;rsquo;installation initial et le CLI cross-platform. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.6">v0.2.6&lt;/a> et &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.7">v0.2.7&lt;/a> ont apporté le support Windows, ce qui a nécessité le quoting des chemins UAC pour les écritures de configuration et les mises à jour de configuration possédées par le daemon. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.8">v0.2.8&lt;/a> à &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.10">v0.2.10&lt;/a> ont corrigé les actions du service GUI Windows, la gestion des sous-processus CLI et la configuration des services à l&amp;rsquo;échelle de la machine. &lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.12">v0.2.12&lt;/a> a remplacé la découverte LAN par un appairage LAN temporisé, un flux initié par l&amp;rsquo;utilisateur où deux appareils sur le même réseau local s&amp;rsquo;appairent sans signalement relay. Le motif est celui d&amp;rsquo;un test terrain de phase précoce : chaque version cible un échec précis de déploiement, la base d&amp;rsquo;utilisateurs est assez petite pour itérer quotidiennement, et le développeur utilise l&amp;rsquo;outil lui-même entre les versions.&lt;/p>
&lt;h3 id="comet-automated-builds">Comet automated builds&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/comet">Comet&lt;/a> (anciennement Captain&amp;rsquo;s Log), l&amp;rsquo;outil long format natif Nostr de Nodetec, a produit plus de 40 builds alpha automatisés cette semaine. Comet est une application desktop pour écrire et publier des articles NIP-23 (Long-form Content), avec stockage local des brouillons, édition markdown et publication en un clic vers l&amp;rsquo;ensemble de relays de l&amp;rsquo;utilisateur. Le pipeline de build automatisé génère une version taguée pour chaque commit sur la branche main, ce qui rend le nombre brut de versions trompeur comme mesure de vitesse fonctionnelle. Ce que montrent ces 40 builds, c&amp;rsquo;est que l&amp;rsquo;application est en développement actif quotidien, chaque commit étant testé, empaqueté et rendu téléchargeable en quelques minutes.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> durant la fenêtre du 17 au 24 mars :&lt;/p>
&lt;p>Aucune fusion NIP n&amp;rsquo;a eu lieu entre le 18 et le 24 mars.&lt;/p>
&lt;p>&lt;strong>PRs ouvertes et discussions mises à jour pendant la fenêtre :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-AA: Autonomous Agents on Nostr&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2259">PR #2259&lt;/a>) : Propose des conventions pour les agents autonomes opérant sur le réseau Nostr. La PR définit comment les agents s&amp;rsquo;identifient, découvrent des services et se coordonnent avec d&amp;rsquo;autres agents et humains via des événements Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a> (Search) : extensions de tri&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2283">PR #2283&lt;/a>) : Ajoute des paramètres de tri aux requêtes de recherche NIP-50, notamment top, hot, zaps et new. Cela permettrait aux clients de demander des résultats classés aux relays qui supportent la recherche plein texte au lieu de trier côté client.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-A5: WASM Programs&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>) : Propose une convention pour publier et découvrir des programmes WebAssembly sur Nostr. Les binaires WASM pourraient être distribués comme événements Nostr, avec les relays comme couche de découverte pour du code exécutable portable.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-CF: Combine Forces interoperable napps&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2277">PR #2277&lt;/a>) : Définit une convention pour des applications Nostr interopérables (« napps ») capables de composer leurs fonctionnalités entre différents clients et services.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Snapshots NIP&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>) : Propose un mécanisme de snapshots d&amp;rsquo;état relay, pour la synchronisation et la sauvegarde des relays.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Checkpoints NIP&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2278">PR #2278&lt;/a>) : Propose des événements de checkpoints pour marquer un état relay connu comme bon, en complément de la proposition snapshots.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-58/">NIP-58&lt;/a> (Badges) : refonte des Badge Sets&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>) : Restructure la manière dont les collections de badges sont organisées et référencées.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document) : extensions&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2280">PR #2280&lt;/a>) : Ajoute des champs supplémentaires au document d&amp;rsquo;information relay pour des métadonnées relay plus riches et lisibles par machine.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="cinq-ans-de-mars-nostr">Cinq ans de mars Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#five-years-of-nostr-februaries">La newsletter du mois dernier&lt;/a> retraçait la progression des mois de février de Nostr, de la réécriture de NIP-01 (Basic Protocol Flow) à la vague Damus sur l&amp;rsquo;App Store, puis au réseau maillé et aux propositions d&amp;rsquo;agents. Cette rétrospective suit ce qui s&amp;rsquo;est passé chaque mois de mars de 2021 à 2026.&lt;/p>
&lt;h3 id="march-2021-two-commits">March 2021: Two Commits&lt;/h3>
&lt;p>Quatre mois après sa création, le mois de mars de Nostr a produit exactement deux commits dans le dépôt du protocole, tous deux le 4 mars. fiatjaf &lt;a href="https://github.com/nostr-protocol/nostr/commit/dcd8cc3">a ajouté des liens vers des instances nostwitter&lt;/a>, orientant les premiers visiteurs vers des déploiements fonctionnels, et &lt;a href="https://github.com/nostr-protocol/nostr/commit/54dfb46">a ajouté kind à la définition de filtre de base&lt;/a>. Ce second commit est révélateur : en mars 2021, on ne pouvait pas encore filtrer les événements Nostr par kind. Le protocole en était à ce niveau de primitivité. Deux ou trois relays servaient le réseau. Le groupe Telegram constituait l&amp;rsquo;unique canal de coordination. Le dépôt NIPs n&amp;rsquo;existait pas encore, les propositions protocole vivaient comme fichiers dans le dépôt principal nostr. fiatjaf était l&amp;rsquo;unique committer ce mois-là. Toute la production de mars 2021 de ce qui deviendrait un protocole supportant VPNs, jeux multijoueurs et réseau maillé cinq ans plus tard tient dans un seul diff git.&lt;/p>
&lt;h3 id="march-2022-pre-damus-building">March 2022: Pre-Damus Building&lt;/h3>
&lt;p>Le dépôt principal du protocole n&amp;rsquo;a reçu aucun commit en mars 2022. Le développement s&amp;rsquo;était entièrement déplacé vers les dépôts outils. &lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, le client web Vue.js de fiatjaf et à l&amp;rsquo;époque l&amp;rsquo;interface Nostr principale, a reçu 5 commits incluant le support de déploiement Docker et des correctifs d&amp;rsquo;affichage de noms &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a> (DNS-Based Verification) supprimant le préfixe &lt;code>_@&lt;/code> des badges de vérification. &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a> de Robert C. Martin, le client desktop Clojure, a enregistré 13 commits ou plus ajoutant threading, navigation clavier et fenêtre d&amp;rsquo;édition. L&amp;rsquo;auteur logiciel le plus célèbre construisant activement sur Nostr ce mois-là n&amp;rsquo;était pas un développeur crypto, mais la personne dont « Clean Code » s&amp;rsquo;est vendu à des millions d&amp;rsquo;exemplaires, écrivant un client Nostr en Clojure, un choix de langage qui dit tout sur la communauté des débuts : des programmeurs au caractère bien trempé construisant pour eux-mêmes.&lt;/p>
&lt;p>Le réseau relay s&amp;rsquo;était étendu à environ 15 relays avec une base d&amp;rsquo;utilisateurs active comptée en centaines. Damus n&amp;rsquo;existait pas encore et ne serait créé qu&amp;rsquo;en avril 2022. Nostream n&amp;rsquo;était pas non plus apparu. Le travail du mois relevait de l&amp;rsquo;infrastructure : rendre les outils existants plus fiables pour la petite communauté qui les utilisait déjà au quotidien.&lt;/p>
&lt;h3 id="march-2023-post-explosion-infrastructure">March 2023: Post-Explosion Infrastructure&lt;/h3>
&lt;p>Un mois après la vague Damus App Store et l&amp;rsquo;explosion au-delà de 300 000 clés publiques, mars 2023 a consisté à absorber la croissance. Le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> a fusionné 28 pull requests, le deuxième total mensuel le plus élevé de l&amp;rsquo;histoire du protocole. &lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a> (Lists) a été fusionné, donnant aux clients des collections structurées de follow, mute et bookmarks. &lt;a href="https://nostrcompass.org/fr/topics/nip-39/">NIP-39&lt;/a> (External Identities in Profiles) a été intégré, NIP-78 (Application-Specific Data) a fourni un kind de stockage généraliste pour les applications ayant besoin d&amp;rsquo;état privé, et une réécriture de &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a> (Lightning Zaps) (&lt;a href="https://github.com/nostr-protocol/nips/pull/392">PR #392&lt;/a>) a consolidé le flux zap et clarifié la terminologie. La PR la plus discutée du mois était une proposition alternative de gestion des mentions (&lt;a href="https://github.com/nostr-protocol/nips/pull/381">PR #381&lt;/a>) avec plus de 50 commentaires.&lt;/p>
&lt;p>Le nouveau projet le plus déterminant fut &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> (Nostr Development Kit), la bibliothèque TypeScript pour les connexions relay, la signature d&amp;rsquo;événements, le cache et la gestion des abonnements. pablof7z a fait le &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/09e5e03">commit initial&lt;/a> le 16 mars 2023, puis l&amp;rsquo;a réécrit de zéro 11 jours plus tard le 27 mars (« basically another initial commit »), et le support LNURL et zap fonctionnait au 31 mars. NDK est passé de rien à zap-capable en 15 jours. Cinq jours après la création de NDK, le 21 mars, l&amp;rsquo;équipe Alby a créé &lt;a href="https://github.com/getAlby/nostr-wallet-connect">NWC&lt;/a> (Nostr Wallet Connect), l&amp;rsquo;implémentation de référence de &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> qui connecte les portefeuilles Lightning aux applications Nostr. Les deux projets qui soutiendraient les trois années suivantes de développement web Nostr sont nés dans la même fenêtre de 30 jours. OpenSats n&amp;rsquo;avait pas encore lancé son fonds Nostr ; la première vague n&amp;rsquo;arriverait qu&amp;rsquo;en &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">juillet 2023&lt;/a>, quatre mois après la création de NDK.&lt;/p>
&lt;p>D&amp;rsquo;autres créations notables ce mois-là incluaient NostrGit, NostrChat, un projet nostr-signing-device par LNbits, et nostrmo. &lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a>, le client desktop Rust centré sur la sélection intelligente de relays, a livré trois versions. Le protocole était en mode construction, et les outils créés en mars 2023 sont encore utilisés trois ans plus tard.&lt;/p>
&lt;h3 id="march-2024-protocol-maturation">March 2024: Protocol Maturation&lt;/h3>
&lt;p>Mars 2024 a consisté à durcir le protocole pour un usage de long terme. Le dépôt NIPs a fusionné 12 pull requests. La plus significative fut &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> (Git Stuff), &lt;a href="https://github.com/nostr-protocol/nips/pull/997">PR #997&lt;/a>, fusionnée le 5 mars après plus de 130 commentaires et 44 jours de revue. Le fil de discussion est une capsule temporelle montrant la communauté débattant de la manière de construire un GitHub décentralisé. jb55 a tracé des parallèles avec &lt;code>git send-email&lt;/code>, Giszmo a proposé d&amp;rsquo;utiliser les hashes de commit racine pour la découverte inter-forks (« something GitHub doesn&amp;rsquo;t do and we could »), mikedilger a suggéré l&amp;rsquo;authentification signée par événements &lt;a href="https://nostrcompass.org/fr/topics/nip-98/">NIP-98&lt;/a> (HTTP Auth) au lieu des clés SSH, et fiatjaf a balayé sans détour le besoin de généralité du contrôle de version : « not for each version control system, just for git. No one uses the others. » Quelques heures après l&amp;rsquo;ouverture de la PR, fiatjaf avait déjà modifié nak, go-nostr et gitstr pour accepter des patches via Nostr. DanConwayDev, dont ngit était déjà bénéficiaire d&amp;rsquo;une subvention OpenSats, faisait partie des contributeurs les plus actifs de la discussion. Un champ bot pour les métadonnées de profil a aussi été fusionné, donnant aux clients un moyen lisible par machine de distinguer les comptes automatisés des comptes humains.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> a livré v0.85.0 avec support des événements git, articles wiki, rendu de données médicales et édition de contenu dans une seule version. &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> a atteint v0.10.0. &lt;a href="https://github.com/Spl0itable/nosflare">Nosflare&lt;/a>, un relay Nostr serverless tournant sur Cloudflare Workers, a prouvé que la logique relay pouvait tourner à l&amp;rsquo;edge. OpenSats a accordé une &lt;a href="https://opensats.org/blog/bruno-garcia-receives-lts-grant">subvention Long-Term Support à Bruno Garcia&lt;/a> pour des contributions continues au client Amethyst.&lt;/p>
&lt;h3 id="march-2025-infrastructure-expansion">March 2025: Infrastructure Expansion&lt;/h3>
&lt;p>Mars 2025 a produit 10 NIPs fusionnés. Le sujet central était &lt;a href="https://nostrcompass.org/fr/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>, fusionnée le 3 mars après un parcours de 25 mois. dskvr avait d&amp;rsquo;abord proposé la surveillance relay en février 2023, s&amp;rsquo;était entendu dire que cela pouvait se faire côté client, avait expliqué pourquoi se connecter à des milliers de relays à la fois était impraticable pour les clients individuels, avait traversé sept brouillons complets, construit des nœuds de monitoring sur huit régions géographiques (Nord-Est US, Brésil, US-Ouest, US-Est, Australie, Inde, Corée, Afrique du Sud), et attendu que l&amp;rsquo;outillage relay rattrape son retard. Au moment de la fusion, des implémentations existaient déjà dans nostr.watch, relaypag.es, monitorlizard, Snort, noStrudel et Jumble. Les données NIP-66 alimenteraient plus tard les benchmarks outbox de Nostrability &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#outbox-model-under-the-microscope">couverts dans la Newsletter #12&lt;/a>. NIP-C0 (Code Snippets) a aussi été fusionné (&lt;a href="https://github.com/nostr-protocol/nips/pull/1852">PR #1852&lt;/a>, 63 commentaires), ajoutant les événements kind 1337 pour partager du code source.&lt;/p>
&lt;p>Les premiers serveurs MCP pour Nostr sont apparus ce mois-là. &lt;a href="https://github.com/AustinKelsay/nostr-mcp-server">nostr-mcp-server&lt;/a> est apparu le 23 mars et &lt;a href="https://github.com/getAlby/nwc-mcp-server">nwc-mcp-server&lt;/a> le 14 mars, seulement quatre mois après l&amp;rsquo;annonce du Model Context Protocol par Anthropic en novembre 2024. Ces premiers ponts ont précédé le SDK &lt;a href="https://nostrcompass.org/fr/topics/contextvm/">ContextVM&lt;/a> complet et le travail ultérieur sur le commerce d&amp;rsquo;agents à la fin 2025 et au début 2026.&lt;/p>
&lt;p>&lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a> a livré v0.14.0. &lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>, le client web de hodlbod avec gestion de flux consciente des relays, a livré trois versions. OpenSats a annoncé sa &lt;a href="https://opensats.org/blog/10th-wave-of-nostr-grants">dixième vague de subventions Nostr&lt;/a>, poursuivant la chaîne de financement en place depuis mi-2023.&lt;/p>
&lt;h3 id="march-2026-convergence">March 2026: Convergence&lt;/h3>
&lt;p>&lt;em>L&amp;rsquo;activité de mars 2026 est tirée des numéros Nostr Compass &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/">#12&lt;/a> à &lt;a href="">#15&lt;/a> (ce numéro).&lt;/em>&lt;/p>
&lt;p>Mars 2026 est le mois où des fils jusqu&amp;rsquo;ici séparés convergent vers des systèmes opérationnels. Le &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#marmot-development-kit-ships-first-public-release">Marmot Development Kit&lt;/a> a livré sa première version publique avec médias chiffrés, liaisons multi-langages et une migration ChaCha20-Poly1305 qui a exigé des mises à jour coordonnées à travers la spécification, Rust et TypeScript. &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/#shopstr-and-milk-market-open-mcp-commerce-surfaces">Shopstr et Milk Market&lt;/a> ont ajouté des surfaces de commerce MCP pour des achats pilotés par agents. L&amp;rsquo;auth relay &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> a atterri simultanément dans &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 et OAuth Bunker, bouclant la boucle entre signataire, relay et logiciel bunker. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-18-newsletter/#notedeck-d%C3%A9place-la-d%C3%A9couverte-de-versions-sur-nostr">Notedeck&lt;/a> a livré des mises à jour logicielles natives Nostr via des événements de version &lt;a href="https://nostrcompass.org/fr/topics/nip-94/">NIP-94&lt;/a> (File Metadata).&lt;/p>
&lt;p>Cette semaine, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#bigbrotr-maps-exposed-private-keys-across-the-relay-network">BigBrotr&lt;/a> a scanné tout le réseau relay à la recherche de clés privées fuitées et a publié à la fois l&amp;rsquo;analyse et un vérificateur DVM. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#nostr-vpn-launches-as-a-tailscale-alternative">Nostr VPN&lt;/a> a prouvé que le modèle de clé de Nostr fonctionne pour l&amp;rsquo;infrastructure réseau, pas seulement pour les médias sociaux. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#open-source-doom-runs-peer-to-peer-over-nostr">DOOM&lt;/a> a montré que la découverte Nostr, le chiffrement Marmot et le transport QUIC peuvent faire tourner un jeu multijoueur en temps réel. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#amber-v500-and-v501">Amber&lt;/a> a bondi en v5.0.0. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-25-newsletter/#wisp-ships-16-releases-in-one-week">Wisp&lt;/a> a livré 16 versions en sept jours. Vingt-cinq versions taguées ou plus sont venues de projets majeurs en une seule semaine.&lt;/p>
&lt;p>Sept NIPs ont fusionné dans les 24 premiers jours du mois. Le protocole a ajouté le balisage Djot de &lt;a href="https://nostrcompass.org/fr/topics/nip-54/">NIP-54&lt;/a> (Wiki), des limites d&amp;rsquo;entrée pour &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), la logique de requêtes booléennes &lt;a href="https://nostrcompass.org/fr/topics/nip-91/">NIP-91&lt;/a> (AND Operator for Filters) et les assertions Web of Trust &lt;a href="https://nostrcompass.org/fr/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Les propositions ouvertes allaient des agents autonomes (NIP-AA) aux programmes WASM (NIP-A5) en passant par les extensions de tri de recherche pour &lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a>.&lt;/p>
&lt;h3 id="looking-ahead">Looking Ahead&lt;/h3>
&lt;p>Cinq mois de mars Nostr dessinent un arc clair. En 2021, une seule personne a fait deux commits dans un protocole qui ne pouvait pas encore filtrer les événements par kind. En 2023, NDK et NWC sont nés à cinq jours d&amp;rsquo;écart pour absorber l&amp;rsquo;explosion post-Damus. En 2024, un fil de PR de 141 commentaires débattait de la manière dont la collaboration git devait fonctionner sur un protocole social. En 2025, une spécification de monitoring relay patiemment réécrite sept fois en 25 mois a enfin été fusionnée. En 2026, quelqu&amp;rsquo;un s&amp;rsquo;est agacé de voir Tailscale exiger un compte et a construit un VPN avec des paires de clés Nostr, tandis que quelqu&amp;rsquo;un d&amp;rsquo;autre a livré un DOOM multijoueur qui découvre les pairs via des relays Nostr et chiffre la partie via Marmot. Le scan de 41 millions d&amp;rsquo;événements sur 1 085 relays par BigBrotr donne une mesure concrète de la croissance du réseau. La surface du protocole en mars 2026 aurait été méconnaissable pour le mars 2021, mais le modèle sous-jacent, des événements signés par des clés secp256k1 et distribués via des relays, n&amp;rsquo;a pas changé.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ou avez des nouvelles à partager ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) DM&lt;/a> ou retrouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #14</title><link>https://nostrcompass.org/fr/newsletters/2026-03-18-newsletter/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-03-18-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> implémente le support complet des méthodes &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect), &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> ajoute le support multi-relays dans &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> livre &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a> avec Tor intégré et des permissions de signature plus fines, et &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> supprime un chemin NWC keysend risqué dans &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> livre un updater signé dans &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> qui découvre les versions via des événements &lt;a href="https://nostrcompass.org/fr/topics/nip-94/">NIP-94&lt;/a> (File Metadata), tandis que &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> corrige l&amp;rsquo;état &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) obsolète, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a> révise ses résultats de benchmark avec des données corrigées, et &lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> teste les abonnements directs aux relays pour les DMs. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> livre &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> livre &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> continue de renforcer l&amp;rsquo;interopérabilité Marmot dans &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> consolide son runtime dans &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>, et &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ajoute le filtrage Web of Trust via &lt;a href="https://nostrcompass.org/fr/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Le dépôt NIPs fusionne le balisage Djot pour &lt;a href="https://nostrcompass.org/fr/topics/nip-54/">NIP-54&lt;/a> (Wiki) et un plafond de 5 000 caractères pour &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), tandis que les PRs ouvertes proposent un format de fichier &lt;code>.nostrkey&lt;/code> pour &lt;a href="https://nostrcompass.org/fr/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption), une clarification de la cohérence d&amp;rsquo;appartenance pour &lt;a href="https://nostrcompass.org/fr/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests), des conseils de suppression pour &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) et un URI d&amp;rsquo;intention de partage pour &lt;a href="https://nostrcompass.org/fr/topics/nip-222/">NIP-222&lt;/a>.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> implémente le support complet des méthodes &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect), &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> ajoute le support multi-relays dans &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> livre &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a> avec Tor intégré et des permissions de signature plus fines, et &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> supprime un chemin NWC keysend risqué dans &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> livre un updater signé dans &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> qui découvre les versions via des événements &lt;a href="https://nostrcompass.org/fr/topics/nip-94/">NIP-94&lt;/a> (File Metadata), tandis que &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> corrige l&amp;rsquo;état &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) obsolète, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a> révise ses résultats de benchmark avec des données corrigées, et &lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> teste les abonnements directs aux relays pour les DMs. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> livre &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> livre &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> continue de renforcer l&amp;rsquo;interopérabilité Marmot dans &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> consolide son runtime dans &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>, et &lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a> ajoute le filtrage Web of Trust via &lt;a href="https://nostrcompass.org/fr/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions). Le dépôt NIPs fusionne le balisage Djot pour &lt;a href="https://nostrcompass.org/fr/topics/nip-54/">NIP-54&lt;/a> (Wiki) et un plafond de 5 000 caractères pour &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities), tandis que les PRs ouvertes proposent un format de fichier &lt;code>.nostrkey&lt;/code> pour &lt;a href="https://nostrcompass.org/fr/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption), une clarification de la cohérence d&amp;rsquo;appartenance pour &lt;a href="https://nostrcompass.org/fr/topics/nip-43/">NIP-43&lt;/a> (Relay Access Metadata and Requests), des conseils de suppression pour &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) et un URI d&amp;rsquo;intention de partage pour &lt;a href="https://nostrcompass.org/fr/topics/nip-222/">NIP-222&lt;/a>.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="le-support-wallet-connect-sélargit-et-les-clients-de-portefeuille-resserrent-les-chemins-derreur">Le support Wallet Connect s&amp;rsquo;élargit, et les clients de portefeuille resserrent les chemins d&amp;rsquo;erreur&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, le client Android maintenu par vitorpamplona, a fusionné &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1828">PR #1828&lt;/a>, qui rapproche son implémentation &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> d&amp;rsquo;une couverture complète du protocole. Le patch ajoute &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>, les méthodes de hold invoices, le support keysend avec enregistrements TLV, la découverte de capacités via le kind &lt;code>13194&lt;/code>, et les événements de notification sur le kind &lt;code>23197&lt;/code> avec &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads). Cela donne au client une surface NWC bien plus large sans s&amp;rsquo;appuyer sur des extensions spécifiques à une application.&lt;/p>
&lt;p>La pile de portefeuilles environnante a évolué dans la même direction. &lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>, le nœud Lightning auto-hébergé et service de portefeuille derrière de nombreux déploiements NWC, a livré &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a> avec le support multi-relays et des flux de connexion et de swap simplifiés. &lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>, le portefeuille Lightning mobile, a fusionné &lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a> supprimant le support NWC keysend après avoir identifié un chemin silencieux de drainage de fonds dans ce flux, tout en corrigeant aussi la gestion des événements en attente et de l&amp;rsquo;activité Cashu. La connectivité des portefeuilles sur Nostr s&amp;rsquo;élargit, et les implémenteurs suppriment les flux difficiles à sécuriser.&lt;/p>
&lt;h3 id="notedeck-déplace-la-découverte-de-versions-sur-nostr">Notedeck déplace la découverte de versions sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Suite à la couverture de Notedeck la semaine dernière&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, le client desktop natif de l&amp;rsquo;équipe Damus, a livré &lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a> après avoir fusionné &lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a>. Le nouvel updater s&amp;rsquo;abonne aux événements de version signés de kind &lt;code>1063&lt;/code>, identifie la plateforme locale, télécharge le binaire référencé et vérifie son hachage SHA256 avant l&amp;rsquo;installation. Les métadonnées de version n&amp;rsquo;ont plus besoin de provenir de l&amp;rsquo;API GitHub ou d&amp;rsquo;un site web de projet. Une pubkey de confiance et une connexion relay suffisent.&lt;/p>
&lt;p>Le même patch ajoute un CLI &lt;code>notedeck-release&lt;/code> qui publie ces événements depuis les artefacts de version GitHub, ce qui signifie que le pipeline de publication dispose maintenant d&amp;rsquo;un chemin de publication natif Nostr ainsi que d&amp;rsquo;un chemin de découverte natif Nostr. Cela rapproche aussi le modèle de mise à jour Damus et Notedeck du flux de publication signée de Zapstore via relay : l&amp;rsquo;outillage &lt;code>zsp&lt;/code> de Zapstore gère déjà les artefacts logiciels comme événements kind &lt;code>1063&lt;/code> ou &lt;code>3063&lt;/code>, donc ce chemin n&amp;rsquo;est pas verrouillé sur un seul client ou un seul éditeur. Le reste du release candidate est du travail desktop pratique : colonnes de suivi, « View As User » pour les profils, support &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap), statistiques de notes en temps réel et gestion des limitations &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document), mais l&amp;rsquo;updater est la partie susceptible de survivre au-delà de ce seul cycle de version.&lt;/p>
&lt;h3 id="létat-des-relays-se-rapproche-du-comportement-en-temps-réel">L&amp;rsquo;état des relays se rapproche du comportement en temps réel&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> a fusionné &lt;a href="https://github.com/damus-io/damus/pull/3665">PR #3665&lt;/a>, remplaçant un identifiant d&amp;rsquo;événement de liste de relays obsolète par une requête directe à la base de données pour le dernier événement kind &lt;code>10002&lt;/code>. Quand l&amp;rsquo;ancienne valeur devenait obsolète, les opérations d&amp;rsquo;ajout et de suppression de relays pouvaient se rabattre sur des listes d&amp;rsquo;amorçage ou vieilles d&amp;rsquo;un an, ce qui faisait que certains changements de relays semblaient réussir tout en laissant l&amp;rsquo;état actif inchangé. &lt;a href="https://github.com/damus-io/damus/pull/3690">PR #3690&lt;/a> corrige un second chemin d&amp;rsquo;échec en supprimant l&amp;rsquo;état &lt;code>lock.mdb&lt;/code> obsolète durant la compaction LMDB pour que l&amp;rsquo;application ne plante pas avec &lt;code>SIGBUS&lt;/code> au prochain lancement.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a> a ouvert &lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/194">PR #194&lt;/a>, qui s&amp;rsquo;abonne directement aux relays d&amp;rsquo;écriture &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages) d&amp;rsquo;un partenaire de chat pendant qu&amp;rsquo;une conversation est ouverte, gardant le serveur de cache comme repli. &lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a> a ouvert &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a>, qui combine le scoring aléatoire de relays, le filtrage de disponibilité &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> depuis nostr.watch, et l&amp;rsquo;échantillonnage de Thompson pour passer la sélection de relays d&amp;rsquo;une heuristique fixe à une politique apprise. Les clients ont longtemps traité le choix de relay comme une donnée de configuration. De plus en plus d&amp;rsquo;applications le traitent maintenant comme un état en direct qui nécessite une logique de mesure et de réparation.&lt;/p>
&lt;h2 id="versions">Versions&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>, le client Android de Primal, a livré &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a> avec un nouveau cycle de sondages et de portefeuille. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/945">PR #945&lt;/a> ajoute le vote par sondage basé sur les zaps, &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/948">PR #948&lt;/a> pagine le chargement des votes pour que les sondages plus importants restent utilisables, et &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/965">PR #965&lt;/a> récupère les reçus de zap pour toutes les transactions. La même version tague aussi les événements supportés avec les métadonnées client &lt;a href="https://nostrcompass.org/fr/topics/nip-89/">NIP-89&lt;/a> (Recommended Application Handlers) dans &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/968">PR #968&lt;/a>, ce qui aide les clients en aval à attribuer les origines des événements plus proprement.&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/">Suite à la couverture d&amp;rsquo;Amber la semaine dernière&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, l&amp;rsquo;application de signature Android pour les flux &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application), a livré &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a>. La version s&amp;rsquo;appuie sur son récent travail d&amp;rsquo;authentification relay &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> avec plus de durcissement opérationnel : &lt;a href="https://github.com/greenart7c3/Amber/pull/327">PR #327&lt;/a> ajoute Tor intégré aux côtés du support Orbot, &lt;a href="https://github.com/greenart7c3/Amber/pull/324">PR #324&lt;/a> remplace les permissions de chiffrement grossières basées sur les NIP par des règles spécifiques au type de contenu, et &lt;a href="https://github.com/greenart7c3/Amber/pull/336">PR #336&lt;/a> supprime les permissions réseau de la variante hors ligne tandis que &lt;a href="https://github.com/greenart7c3/Amber/pull/335">PR #335&lt;/a> ajoute des vérifications CI pour le maintenir ainsi. &lt;a href="https://github.com/greenart7c3/Amber/pull/322">PR #322&lt;/a> déplace aussi le stockage du PIN vers un DataStore chiffré.&lt;/p>
&lt;p>Cette version resserre la frontière du signataire lui-même. C&amp;rsquo;est utile pour tout flux Android qui confie de vraies clés ou des décisions d&amp;rsquo;authentification relay à Amber, car la difficulté n&amp;rsquo;est pas seulement ce que le signataire peut faire. C&amp;rsquo;est aussi à quel point il peut être restreint.&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/">Suite à la couverture de Route96 la semaine dernière&lt;/a>, &lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, le serveur de médias qui supporte Blossom et &lt;a href="https://nostrcompass.org/fr/topics/nip-96/">NIP-96&lt;/a> (HTTP File Storage), a livré &lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>. La version déplace la configuration et l&amp;rsquo;état de la liste blanche dans la base de données avec rechargement à chaud et ajoute des politiques de rétention pour les fichiers froids ou vieillissants. Elle ajoute aussi un endpoint &lt;code>GET /user/files&lt;/code> plus riche ainsi que le suivi des statistiques de fichiers pour les téléchargements et le trafic sortant, ce qui donne aux opérateurs plus de visibilité sur l&amp;rsquo;utilisation de leur serveur de stockage.&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/">Suite à la couverture d&amp;rsquo;OpenChat la semaine dernière&lt;/a>, &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, le client de chat basé sur Avalonia construit sur la pile Marmot, a livré &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a> après une semaine de travail protocolaire rapide. &lt;a href="https://github.com/DavidGershony/openChat/commit/c33895d6b1a198f01b9b01a7be974bdce033fb9c">Commit c33895d&lt;/a> encapsule les événements Welcome dans un gift wrap &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> et supprime les anciens shims de normalisation de tags MIP-00, &lt;a href="https://github.com/DavidGershony/openChat/commit/2738ff428154f60f50debb8f2a53662d427b28f1">commit 2738ff4&lt;/a> complète l&amp;rsquo;audit de conformité MIP-02, et &lt;a href="https://github.com/DavidGershony/openChat/commit/8e470cf7945bced010168c8229d73d67db638b9f">commit 8e470cf&lt;/a> fait de même pour le chiffrement des messages de groupe MIP-03. &lt;a href="https://github.com/DavidGershony/openChat/commit/129ca37e264efaa2d1a8b04fe95cd72e5e212547">Commit 129ca37&lt;/a> consolide aussi la gestion NIP-44 sur l&amp;rsquo;implémentation partagée marmot-cs, réduisant le risque de dérive cryptographique côté client.&lt;/p>
&lt;h3 id="nak-v0190-et-v0191">nak v0.19.0 et v0.19.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>, la boîte à outils Nostr en ligne de commande de fiatjaf, a livré &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.0">v0.19.0&lt;/a> et &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a>. La série 0.19 ajoute une interface de forum de groupe dans &lt;a href="https://github.com/fiatjaf/nak/commit/5f4efdbc69a36fc80ea3f97b2cdee1db6a7c5b47">commit 5f4efdb&lt;/a>, passe les modifications de métadonnées de groupe à un flux de remplacement complet dans &lt;a href="https://github.com/fiatjaf/nak/commit/da0b75337198010687aceb6a07bbae67407faee3">commit da0b753&lt;/a>, et remplace l&amp;rsquo;ancien traitement &lt;code>no-text&lt;/code> par &lt;code>supported_kinds&lt;/code> dans &lt;a href="https://github.com/fiatjaf/nak/commit/bef67d35d259e0450debf0fd870e1a937a2406bf">commit bef67d3&lt;/a>. Pour les implémenteurs de groupes, cela garde le CLI aligné avec la direction que prennent les spécifications et clients de groupes.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&lt;/h2>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Suite à la couverture d&amp;rsquo;Amethyst la semaine dernière&lt;/a>, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, le client Android avec l&amp;rsquo;une des surfaces protocolaires les plus larges de Nostr, a continué à développer son travail sur les portefeuilles et les relays après le patch NIP-47. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1853">PR #1853&lt;/a> ajoute des requêtes COUNT &lt;a href="https://nostrcompass.org/fr/topics/nip-45/">NIP-45&lt;/a> (Event Counting) à travers les écrans de gestion des relays, pour que les utilisateurs puissent voir combien d&amp;rsquo;événements chaque relay détient réellement pour le flux d&amp;rsquo;accueil, les notifications, les DMs et les données d&amp;rsquo;index. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1849">PR #1849&lt;/a> ajoute les téléversements de fichiers chiffrés pour les chats &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), avec un chemin de repli pour les téléversements non chiffrés quand un hôte de stockage rejette la version chiffrée.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1791">PR #1791&lt;/a> apporte aussi la connexion complète au bunker desktop &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) avec un indicateur de heartbeat, ce qui compte parce que les échecs de signature à distance ressemblent souvent à des bugs aléatoires d&amp;rsquo;interface du côté de l&amp;rsquo;utilisateur. Le client montre si le signataire est en vie et quand il a répondu pour la dernière fois, tout en rendant évident quand la session en cours utilise 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>, le client multi-plateforme construit autour d&amp;rsquo;une pile local-first, a fusionné &lt;a href="https://github.com/nostria-app/nostria/pull/561">PR #561&lt;/a> ajoutant le filtrage Web of Trust pour les flux et les réponses de fils. La fonctionnalité utilise les données de rang du service de confiance existant et les expose à la fois comme filtre de flux et filtre de réponses, masquant les auteurs dont le rang ne dépasse pas le seuil tout en préservant la structure du fil quand des descendants de confiance sont présents. Cela donne aux utilisateurs une couche intermédiaire entre « montrer tout le monde » et la curation basée sur des listes codées en dur.&lt;/p>
&lt;p>La même semaine a aussi apporté &lt;a href="https://github.com/nostria-app/nostria/pull/563">PR #563&lt;/a>, qui ajoute le filtrage de contenu et le support des reposts sur la page de résumé. En dehors de la liste de PRs suivies, Nostria a aussi complété davantage sa surface pour utilisateurs avancés. Il supporte maintenant le dernier service Brainstorm Web of Trust avec inscription intégrée, ainsi que des flux d&amp;rsquo;envoi et de réception d&amp;rsquo;argent dans les DMs utilisant NWC et les invoices BOLT-11. Il ajoute aussi la gestion native de GIFs Nostr via le NIP emoji et un chemin d&amp;rsquo;import RSS renforcé pour les musiciens qui peut récupérer les répartitions Lightning existantes depuis les flux de podcasts. Nostria traite le classement, les médias, les paiements et la publication comme une seule surface d&amp;rsquo;application connectée.&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>, le client iOS maintenu par nostur-com, a ouvert &lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a> pour passer le routage outbox d&amp;rsquo;un plan fixe à une politique scorée. Le patch ajoute le scoring aléatoire de relays, le filtrage de disponibilité &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> avec un flux nostr.watch en cache, et l&amp;rsquo;échantillonnage de Thompson pour que les données de succès et d&amp;rsquo;échec des relays modifient les sélections futures. La conception conserve une soupape de sécurité quand trop de relays seraient filtrés et préserve les relays &lt;code>.onion&lt;/code>. C&amp;rsquo;est l&amp;rsquo;un des exemples actuels les plus clairs d&amp;rsquo;un client traitant la sélection de relays comme un système adaptatif.&lt;/p>
&lt;h3 id="nostrability-outbox">Nostrability Outbox&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/">Suite au précédent rapport de benchmark Outbox&lt;/a>, &lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a>, le projet de benchmark et d&amp;rsquo;analyse centré sur le routage client &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a>, a passé la semaine à resserrer ses propres affirmations. &lt;a href="https://github.com/nostrability/outbox/pull/35">PR #35&lt;/a> remplace les résultats d&amp;rsquo;échantillonnage de Thompson gonflés par un re-benchmark complet sur 1 511 exécutions et recommande la variante &lt;code>CG3&lt;/code> pour le routage de type NDK. &lt;a href="https://github.com/nostrability/outbox/pull/43">PR #43&lt;/a> ajoute des comparaisons de décroissance et de cas d&amp;rsquo;usage, corrige un bug d&amp;rsquo;empoisonnement de cache &lt;code>0 follows&lt;/code>, puis relance le jeu de données Telluride après avoir fixé les TTL de cache.&lt;/p>
&lt;p>Ce n&amp;rsquo;est pas du travail produit au sens habituel, mais c&amp;rsquo;est important pour les auteurs de clients car les chiffres du projet sont maintenant plus précis et moins flatteurs aux endroits où ils avaient précédemment surestimé. Le résultat corrigé reste utile. La sélection aléatoire continue de battre le routage purement déterministe dans les cas qui intéressent Outbox, l&amp;rsquo;apprentissage de type Thompson peut améliorer matériellement la couverture quand les clients persistent l&amp;rsquo;historique utile des relays, et le filtrage de disponibilité &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> réduit le temps perdu sur les relays morts. Le travail se transforme aussi en propositions d&amp;rsquo;implémentation concrètes, incluant &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>, et &lt;a href="https://github.com/hzrd149/applesauce/pull/54">applesauce #54&lt;/a> plus &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>, le backend Rust utilisé par White Noise et d&amp;rsquo;autres outils Marmot, a fusionné deux patchs de durcissement des frontières autour de la gestion des médias Blossom. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/637">PR #637&lt;/a> impose HTTPS sur les URLs Blossom et ajoute un timeout de téléversement, tandis que &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/642">PR #642&lt;/a> plafonne les téléchargements de blobs à &lt;code>100 MiB&lt;/code> pour empêcher les téléchargements de médias surdimensionnés de se transformer en chemin de déni de service. Pour un logiciel de messagerie privée, les URLs de médias sont l&amp;rsquo;une des interfaces les plus sensibles entre la logique applicative chiffrée et l&amp;rsquo;infrastructure réseau non fiable. Cette semaine, l&amp;rsquo;équipe a resserré cette frontière.&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 bibliothèque de protocole Rust, a fusionné &lt;a href="https://github.com/rust-nostr/nostr/pull/1280">PR #1280&lt;/a> ajoutant des constructeurs de commodité pour &lt;code>LocalRelayBuilderNip42&lt;/code>. Les nouveaux helpers de lecture et d&amp;rsquo;écriture donnent aux configurations de relays embarqués et de tests un moyen plus clair de transformer la politique d&amp;rsquo;authentification &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> en code. C&amp;rsquo;est un petit patch de bibliothèque, mais il compte pour les équipes construisant des relays locaux ou intégrés aux applications qui ont besoin de l&amp;rsquo;authentification activée sans répéter du code standard à chaque fois.&lt;/p>
&lt;h3 id="pika">Pika&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/">Suite à la couverture précédente de Pika&lt;/a>, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;application de messagerie basée sur Marmot, a livré &lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a> et &lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v1.1.1">pikachat-v1.1.1&lt;/a> avec un cycle de versions centré sur la convergence du runtime. &lt;a href="https://github.com/sledtools/pika/pull/542">PR #542&lt;/a> introduit une façade de runtime Marmot partagée pour le CLI et le sidecar, avec l&amp;rsquo;hôte de l&amp;rsquo;application migrant sur la même surface. &lt;a href="https://github.com/sledtools/pika/pull/556">PR #556&lt;/a> resserre le cycle de vie des agents OpenClaw et l&amp;rsquo;état de provisionnement, tandis que &lt;a href="https://github.com/sledtools/pika/pull/600">PR #600&lt;/a> ajoute la restauration depuis une sauvegarde et une sécurité de récupération plus stricte pour les environnements gérés.&lt;/p>
&lt;p>La surface utilisateur directe ici est plus petite que dans le dernier article sur Pika, mais le changement architectural est significatif. Regrouper la logique de groupe, média, appel et session derrière un seul runtime partagé réduit les chances que l&amp;rsquo;application et le démon divergent à mesure que la pile Marmot grandit.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-54/">NIP-54&lt;/a> (Wiki) : Passage d&amp;rsquo;Asciidoc à Djot&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>) : Le contenu wiki sur le kind &lt;code>30818&lt;/code> utilise maintenant Djot comme format de balisage canonique. Le texte fusionné ajoute un comportement explicite de wikilinks, des exemples de demandes de fusion pour le kind &lt;code>818&lt;/code>, des exemples de redirection pour le kind &lt;code>30819&lt;/code> et des exemples de normalisation non latine pour les tags &lt;code>d&lt;/code>. Cela donne aux implémenteurs une cible d&amp;rsquo;analyse plus propre qu&amp;rsquo;Asciidoc et supprime un chemin de spécification supplémentaire qui dépendait d&amp;rsquo;une chaîne d&amp;rsquo;outils centrée sur Ruby.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> (Bech32-Encoded Entities) : Ajout d&amp;rsquo;une limite d&amp;rsquo;entrée&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2264">PR #2264&lt;/a>) : La spécification recommande maintenant de plafonner les chaînes d&amp;rsquo;entités encodées Bech32 à 5 000 caractères. C&amp;rsquo;est un petit changement avec une vraie valeur pour les parseurs, car les chaînes NIP-19 apparaissent maintenant dans les flux QR, les liens profonds, les feuilles de partage et les entrées collées par les utilisateurs dans de nombreux clients.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Fichier de clé Nostr pour &lt;a href="https://nostrcompass.org/fr/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>) : Propose un format de fichier &lt;code>.nostrkey&lt;/code> pour l&amp;rsquo;export et l&amp;rsquo;import de clés chiffrées par mot de passe. S&amp;rsquo;il est fusionné, cela donnerait aux clients un chemin de sauvegarde basé sur des fichiers plus normal que la copie de chaînes &lt;code>ncryptsec&lt;/code> brutes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Cohérence de l&amp;rsquo;état d&amp;rsquo;appartenance pour &lt;a href="https://nostrcompass.org/fr/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>) : Ajoute une section clarifiant que les relays devraient maintenir un état d&amp;rsquo;appartenance autoritaire unique par pubkey. Cela simplifierait la logique des clients de groupe autour des changements d&amp;rsquo;appartenance et de l&amp;rsquo;historique rejoué.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Conseils de suppression pour &lt;a href="https://nostrcompass.org/fr/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>) : Propose un chemin concret pour l&amp;rsquo;édition et la suppression de messages privés via des événements de suppression encapsulés en gift wrap. Le travail est encore ouvert, mais les auteurs de clients ont besoin d&amp;rsquo;une réponse ici si NIP-17 doit remplacer complètement les anciens flux de DM.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>URI d&amp;rsquo;intention de partage pour &lt;a href="https://nostrcompass.org/fr/topics/nip-222/">NIP-222&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2266">PR #2266&lt;/a>) : Le brouillon standardiserait la manière dont les applications mobiles et desktop transmettent du contenu partagé à un client Nostr. C&amp;rsquo;est l&amp;rsquo;un des bords d&amp;rsquo;interopérabilité les plus rugueux dans les flux actuels d&amp;rsquo;application à application.&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/fr/topics/nip-94/">NIP-94&lt;/a> définit le kind &lt;code>1063&lt;/code> comme un événement de métadonnées de première classe pour un fichier. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/94.md">spécification&lt;/a> donne à l&amp;rsquo;événement son propre &lt;code>content&lt;/code> lisible par l&amp;rsquo;humain plus des tags lisibles par machine pour l&amp;rsquo;URL de téléchargement, le type MIME, les hachages, les dimensions, les aperçus, les replis et les indications de service de stockage. C&amp;rsquo;est important car le fichier devient interrogeable sur les relays comme son propre objet. Un client n&amp;rsquo;a pas besoin d&amp;rsquo;extraire les métadonnées du contenu environnant pour comprendre ce qu&amp;rsquo;est le fichier.&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>Les tags font plus de travail qu&amp;rsquo;il n&amp;rsquo;y paraît au premier abord. &lt;code>x&lt;/code> identifie le fichier servi, tandis que &lt;code>ox&lt;/code> identifie le fichier original avant toute transformation côté serveur. Les tags d&amp;rsquo;aperçu permettent aux clients de construire des index de fichiers navigables sans télécharger l&amp;rsquo;asset complet, et &lt;code>summary&lt;/code> peut porter un court extrait à côté. &lt;code>fallback&lt;/code> fournit une seconde source quand l&amp;rsquo;URL principale échoue, et &lt;code>service&lt;/code> indique le protocole de stockage derrière le fichier, comme &lt;a href="https://nostrcompass.org/fr/topics/nip-96/">NIP-96&lt;/a> ou un autre hôte. NIP-94 se situe donc en dessous de la publication sociale et au-dessus du stockage brut. Il décrit le fichier, pas la conversation autour du fichier.&lt;/p>
&lt;p>C&amp;rsquo;est pourquoi l&amp;rsquo;updater de Notedeck de cette semaine est intéressant. &lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a> utilise des événements signés de kind &lt;code>1063&lt;/code> pour la découverte de versions logicielles, puis vérifie le binaire téléchargé par rapport au SHA256 publié. La même forme d&amp;rsquo;événement peut décrire un artefact logiciel ou un téléversement de média. NIP-94 est assez ancien pour être stable, mais il a encore de la marge pour croître car de plus en plus de projets traitent les événements de métadonnées comme un transport pour les machines, pas seulement comme une décoration pour les personnes.&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/fr/topics/nip-54/">NIP-54&lt;/a> définit le kind &lt;code>30818&lt;/code> comme un événement d&amp;rsquo;article wiki. La &lt;a href="https://github.com/nostr-protocol/nips/blob/master/54.md">spécification&lt;/a> traite le tag &lt;code>d&lt;/code> comme le sujet normalisé de l&amp;rsquo;article et permet à plusieurs auteurs de publier des entrées pour le même sujet. Le corps de l&amp;rsquo;article vit dans &lt;code>content&lt;/code>, tandis que les tags gèrent l&amp;rsquo;identité normalisée, le titre d&amp;rsquo;affichage, les résumés et les références aux versions précédentes. Cela signifie que NIP-54 n&amp;rsquo;est pas seulement un format de contenu. C&amp;rsquo;est aussi un problème de récupération et de classement, car chaque client doit encore décider quelle version d&amp;rsquo;article afficher.&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>La fusion de cette semaine change le balisage canonique d&amp;rsquo;Asciidoc à Djot dans &lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>. C&amp;rsquo;est important pour les implémenteurs car Djot a une spécification autonome plus resserrée et une histoire de parseur plus simple à travers les langages. Le texte fusionné clarifie aussi comment les wikilinks de style référence se résolvent, comment les demandes de fusion utilisent le kind &lt;code>818&lt;/code>, comment les redirections utilisent le kind &lt;code>30819&lt;/code>, et comment la normalisation des tags &lt;code>d&lt;/code> devrait se comporter pour les écritures non latines. Ce sont les parties qui font que deux clients indépendants s&amp;rsquo;accordent sur quel article un lien pointe.&lt;/p>
&lt;p>NIP-54 se situe aussi dans un endroit inhabituel du protocole. Un client wiki a besoin du rendu de contenu, mais il a aussi besoin d&amp;rsquo;une politique de classement. Les réactions, les listes de relays, les listes de contacts et les signaux de déférence explicites alimentent tous la décision de quel article gagne pour un sujet donné. Le passage à Djot ne résout pas ce problème de classement, mais il supprime l&amp;rsquo;une des ambiguïtés de parseur qui se trouvaient en dessous. C&amp;rsquo;est pourquoi la fusion compte maintenant : le changement concerne moins un formatage de prose plus agréable et davantage la facilitation d&amp;rsquo;une implémentation cohérente du comportement wiki multi-client.&lt;/p>
&lt;p>Vous construisez quelque chose, ou vous voulez qu&amp;rsquo;on en parle ? Contactez-nous via &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> DM sur Nostr à &lt;code>npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923&lt;/code>.&lt;/p></content:encoded></item><item><title>Nostr Compass #13</title><link>https://nostrcompass.org/fr/newsletters/2026-03-11-newsletter/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-03-11-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> et &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> ajoutent des surfaces MCP pour le commerce piloté par agents, tandis que &lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> et &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> ajoutent le relay-auth &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> (Authentication of Clients to Relays) et le support des protected events à travers des logiciels d&amp;rsquo;application, de signer et de relay. &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> livre deux versions autour de l&amp;rsquo;étiquetage IA, des files de modération, du perceptual hashing et d&amp;rsquo;une documentation serveur lisible par machine. &lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, déjà en ligne sur le web, a publié sa première alpha Android puis a ajouté le support signer &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application). &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> ajoute l&amp;rsquo;inscription via &lt;a href="https://nostrcompass.org/fr/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption), &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> livre un travail de résolution &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a> (Domain Verification) fondé sur Namecoin, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> publie &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>, et le dépôt des NIPs fusionne &lt;a href="https://nostrcompass.org/fr/topics/nip-91/">NIP-91&lt;/a> (AND Operator for Filters) ainsi que des recommandations défensives pour &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring).&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> et &lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a> ajoutent des surfaces MCP pour le commerce piloté par agents, tandis que &lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> et &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a> ajoutent le relay-auth &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> (Authentication of Clients to Relays) et le support des protected events à travers des logiciels d&amp;rsquo;application, de signer et de relay. &lt;a href="https://github.com/v0l/route96">Route96&lt;/a> livre deux versions autour de l&amp;rsquo;étiquetage IA, des files de modération, du perceptual hashing et d&amp;rsquo;une documentation serveur lisible par machine. &lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>, déjà en ligne sur le web, a publié sa première alpha Android puis a ajouté le support signer &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application). &lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a> ajoute l&amp;rsquo;inscription via &lt;a href="https://nostrcompass.org/fr/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption), &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> livre un travail de résolution &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a> (Domain Verification) fondé sur Namecoin, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> publie &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>, et le dépôt des NIPs fusionne &lt;a href="https://nostrcompass.org/fr/topics/nip-91/">NIP-91&lt;/a> (AND Operator for Filters) ainsi que des recommandations défensives pour &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring).&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="shopstr-et-milk-market-ouvrent-des-surfaces-de-commerce-mcp">Shopstr et Milk Market ouvrent des surfaces de commerce MCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>, la marketplace pair à pair avec paiements Lightning et Cashu, a fusionné &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>), ajoutant un serveur MCP avec authentification par clé d&amp;rsquo;API pour la gestion des comptes agents. Le changement ajoute &lt;code>.well-known/agent.json&lt;/code> pour la découverte d&amp;rsquo;agents, des endpoints MCP d&amp;rsquo;onboarding et de statut, des routes de création de commande et de vérification de paiement, des outils dédiés à l&amp;rsquo;achat et à la lecture, ainsi qu&amp;rsquo;un écran de réglages pour les clés d&amp;rsquo;API. &lt;a href="https://github.com/shopstr-eng/shopstr/pull/236">PR #236&lt;/a> étend cela avec des actions côté vendeur pour les messages, les adresses, les mises à jour de commande et la sélection de spécifications produit. Un correctif de sécurité dans &lt;a href="https://github.com/shopstr-eng/shopstr/pull/235">PR #235&lt;/a> remplace le hachage SHA-256 des clés d&amp;rsquo;API en une seule itération par du PBKDF2 salé à 100 000 itérations.&lt;/p>
&lt;p>Les agents peuvent lire des listings &lt;a href="https://nostrcompass.org/fr/topics/nip-99/">NIP-99&lt;/a> (Classified Listings) et passer par le checkout en utilisant les flux de paiement existants de &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect) et &lt;a href="https://nostrcompass.org/fr/topics/nip-60/">NIP-60&lt;/a> (Cashu Wallet), sans scraper des pages ni reverse-engineerer le comportement du client.&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>, une marketplace alimentaire sur Nostr accessible sur &lt;a href="https://milk.market">milk.market&lt;/a>, a adopté la même base MCP et clé d&amp;rsquo;API dans &lt;a href="https://github.com/shopstr-eng/milk-market/commit/da6c0b499494b4e4861c4ff8a220e066c46285b3">le commit da6c0b4&lt;/a>. &lt;a href="https://github.com/shopstr-eng/milk-market/pull/10">PR #10&lt;/a> ajoute les commandes par abonnement, la modification d&amp;rsquo;adresse de livraison après achat, et la gestion des checkouts multi-marchands et multi-devises pour Stripe et d&amp;rsquo;autres chemins de paiement fiat. Une &lt;a href="https://github.com/shopstr-eng/milk-market/pull/11">PR #11&lt;/a> corrige ensuite un bug d&amp;rsquo;initialisation de base de données au démarrage, où la table des publications relay échouées n&amp;rsquo;était pas créée sur une installation neuve, ce qui provoquait des erreurs 500 au premier chargement. L&amp;rsquo;interface côté agent fonctionne avec un checkout natif Bitcoin sur Shopstr ou un checkout mixte fiat et Bitcoin sur Milk Market.&lt;/p>
&lt;h3 id="nip-42-relay-auth-à-travers-bunker-signer-et-relay">NIP-42 relay-auth à travers bunker, signer et 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/fr/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) qui relie des fournisseurs OAuth à la signature Nostr, a ajouté la connexion &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a> (Browser Extension Signer), la sélection automatique quand une seule identité existe, et le nettoyage des identités supprimées (&lt;a href="https://github.com/flox1an/oauth-bunker/commit/f0c7683cb2374fd9a3ebd1b186055da8abd2c2ff">commit f0c7683&lt;/a>). Lorsqu&amp;rsquo;une seule identité existe, le bunker la sélectionne maintenant automatiquement au lieu d&amp;rsquo;afficher un choix. Supprimer une identité retire aussi ses assignations et connexions orphelines. Le &lt;a href="https://github.com/flox1an/oauth-bunker/commit/6b8796c6c59c7d48dc1ede92d6de6bf54feb56cc">commit 6b8796c&lt;/a> ajoute une voie de configuration &lt;code>ALWAYS_ALLOWED_KINDS&lt;/code> pour les utilisateurs assignés, avec par défaut le kind &lt;code>30078&lt;/code> pour les données spécifiques à une application, afin que les identités déléguées puissent écrire dans ce stockage sans approbation événement par événement.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>, le principal signer &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> sur Android, a livré &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3-pre4">v4.1.3-pre4&lt;/a> dans une série de quatre pré-releases pendant la semaine. &lt;a href="https://github.com/greenart7c3/Amber/pull/317">PR #317&lt;/a> ajoute la gestion de l&amp;rsquo;authentification relay &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> pour les requêtes de kind &lt;code>22242&lt;/code>. L&amp;rsquo;implémentation ajoute une nouvelle colonne de base de données pour suivre les permissions spécifiques à un relay, avec un index unique sur &lt;code>(pkKey, type, kind, relay)&lt;/code>. Les utilisateurs voient un écran d&amp;rsquo;auth dédié où ils peuvent autoriser ou refuser par relay ou pour tous les relays via un scope wildcard &lt;code>*&lt;/code>, puis persister ce choix. Les permissions wildcard effacent toutes les entrées spécifiques à un relay pour un kind donné. &lt;a href="https://github.com/greenart7c3/Amber/pull/318">PR #318&lt;/a> poursuit en refactorant les écrans de requêtes multi-événements afin d&amp;rsquo;afficher les détails inline avec des cartes composables plutôt que de naviguer vers un écran séparé. La version met aussi à jour les relays de profil par défaut, ajoute un affichage des requêtes en bottom sheet et corrige un crash sur les appareils MediaTek en désactivant StrongBox keystore.&lt;/p>
&lt;p>Côté relay, &lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a> implémente la gestion NIP-42 pour les &lt;a href="https://nostrcompass.org/fr/topics/nip-70/">NIP-70&lt;/a> (Protected Events), et &lt;a href="https://github.com/hoytech/strfry/pull/176">PR #176&lt;/a> rejette les reposts qui embarquent des protected events.&lt;/p>
&lt;h3 id="notedeck-ajoute-les-limites-de-relay-nip-11-et-des-fonctionnalités-agentium">Notedeck ajoute les limites de relay NIP-11 et des fonctionnalités Agentium&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, le client desktop natif de l&amp;rsquo;équipe Damus, a fusionné 14 PRs cette semaine. &lt;a href="https://github.com/damus-io/notedeck/pull/1316">PR #1316&lt;/a> ajoute la récupération des limitations de relay &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document), de sorte que tous les relays outbox respectent maintenant &lt;code>max_message_length&lt;/code> et &lt;code>max_subscriptions&lt;/code> depuis le relay info document. L&amp;rsquo;implémentation inclut un traitement en background jobs, un backoff exponentiel avec jitter pour les tentatives de reconnexion, et des en-têtes HTTP Accept personnalisés. &lt;a href="https://github.com/damus-io/notedeck/pull/1312">PR #1312&lt;/a> corrige un bug où les DMs échouaient parfois à se charger après un changement de compte, et &lt;a href="https://github.com/damus-io/notedeck/pull/1333">PR #1333&lt;/a> ajoute un mécanisme de backoff à la communication multicast avec les relays pour éviter le spam de diffusion en cas d&amp;rsquo;erreurs.&lt;/p>
&lt;p>Le sous-système Agentium, l&amp;rsquo;UI d&amp;rsquo;agent de code intégrée à Notedeck, appelée en interne « Dave », a reçu le collage d&amp;rsquo;images depuis le presse-papiers, des configurations d&amp;rsquo;exécution nommées synchronisées entre appareils via des événements de kind &lt;code>31991&lt;/code>, &lt;a href="https://nostrcompass.org/fr/topics/nip-33/">NIP-33&lt;/a> (Parameterized Replaceable Events), un créateur de git worktree et un sélecteur de modèle pour choisir les backends par session (&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> intègre &lt;code>egui_kittest&lt;/code> pour des tests UI headless, et &lt;a href="https://github.com/damus-io/notedeck/pull/1339">PR #1339&lt;/a> ajoute une carte de tableau de bord suivant les nouvelles créations de listes de contacts par client. Une &lt;a href="https://github.com/damus-io/notedeck/pull/1314">PR #1314&lt;/a> encore ouverte porte la résolution Namecoin NIP-05 d&amp;rsquo;Amethyst dans Notedeck avec des requêtes ElectrumX, un routage Tor SOCKS5 et une intégration à la barre de recherche.&lt;/p>
&lt;h3 id="divine-livre-v106-avec-une-infrastructure-de-tests-e2e-et-limport-nip-49">diVine livre v1.0.6 avec une infrastructure de tests E2E et l&amp;rsquo;import NIP-49&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, le client vidéo court format en boucle qui restaure les archives Vine sur &lt;a href="https://divine.video">divine.video&lt;/a>, a livré &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.6">v1.0.6&lt;/a> avec 127 PRs fusionnées. La version ajoute l&amp;rsquo;import de compte &lt;a href="https://nostrcompass.org/fr/topics/nip-49/">NIP-49&lt;/a>, le support &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a> externe, la gestion multi-comptes, des builds macOS et Linux expérimentaux, ainsi qu&amp;rsquo;une bibliothèque de brouillons et de clips repensée, adossée au stockage local.&lt;/p>
&lt;p>Côté ingénierie, &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1928">PR #1928&lt;/a> ajoute une infrastructure complète de tests d&amp;rsquo;intégration E2E utilisant Patrol pour l&amp;rsquo;automatisation UI native face à une stack backend Docker, relay, API, Blossom, Postgres, Redis et ClickHouse. Cinq tests de parcours d&amp;rsquo;auth couvrent l&amp;rsquo;inscription, la vérification, la réinitialisation de mot de passe, l&amp;rsquo;expiration de session et le rafraîchissement de token. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2105">PR #2105&lt;/a> remplace le chargement vidéo HLS-first par du MP4 direct avec fallback HLS automatique, ce qui réduit les temps de chargement de 30 à 60 secondes à un niveau presque instantané. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2076">PR #2076&lt;/a> met en cache la réponse API du flux d&amp;rsquo;accueil dans SharedPreferences pour un affichage instantané au cold start. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2104">PR #2104&lt;/a> impose le masquage dans les flux des labels de contenu &lt;code>ai-generated&lt;/code>, et &lt;a href="https://github.com/divinevideo/divine-mobile/pull/2100">PR #2100&lt;/a> ajoute un réglage de sécurité pour n&amp;rsquo;afficher que les vidéos hébergées par diVine. La migration du cache de profils de Hive vers Drift continue à travers &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> et &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1903">PR #1903&lt;/a>, en remplaçant environ 1 074 lignes de code Hive par des DAOs Drift.&lt;/p>
&lt;h3 id="vector-v032-livre-la-synchronisation-negentropy-nip-77-et-des-améliorations-mls">Vector v0.3.2 livre la synchronisation negentropy NIP-77 et des améliorations MLS&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, une messagerie desktop axée sur la vie privée qui utilise le chiffrement de groupe MLS avec &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages) et &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads), a livré &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.2">v0.3.2&lt;/a>. Le changement principal est la negentropy NIP-77 pour la synchronisation de groupes MLS (&lt;a href="https://github.com/VectorPrivacy/Vector/commit/b06adf4af2673fb5ac5add01356999ea70628eac">commit b06adf4&lt;/a>), qui rattrape les messages manqués beaucoup plus vite grâce à un boot parallèle. La version ajoute aussi un moteur audio reconstruit avec support Linux complet, des spoilers d&amp;rsquo;image avec aperçus floutés, des hyperliens cliquables avec aperçus enrichis, des pings &lt;code>@mention&lt;/code> avec &lt;code>@everyone&lt;/code> pour les admins de groupe, l&amp;rsquo;autocomplétion des shortcodes emoji, la mise en sourdine de groupes, la réaction en un geste sur des réactions existantes, et des uploads de fichiers annulables. Vector filtre explicitement les événements de chat de groupe NIP-17 (&lt;a href="https://github.com/VectorPrivacy/Vector/commit/2179a51c0449b3a70663a1573195b7945adf58ba">commit 2179a51&lt;/a>), en utilisant MLS exclusivement pour le chiffrement de groupe.&lt;/p>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;h3 id="route96-v050-et-v051">Route96 v0.5.0 et v0.5.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>, un serveur média compatible Blossom et &lt;a href="https://nostrcompass.org/fr/topics/nip-96/">NIP-96&lt;/a> (HTTP File Storage), a livré &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.0">v0.5.0&lt;/a> et &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">v0.5.1&lt;/a>. v0.5.0 ajoute l&amp;rsquo;étiquetage IA automatisé, le backfill rétroactif des uploads non étiquetés, des files de modération pour les fichiers signalés, le rejet basé sur EXIF pour la vie privée, et la gestion de hash interdits.&lt;/p>
&lt;p>v0.5.1 ajoute des hashes perceptuels d&amp;rsquo;image, du locality-sensitive hashing pour retrouver des images similaires, des endpoints admin par lots, et un &lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">&lt;code>SKILL.md&lt;/code>&lt;/a> publié décrivant la surface API Blossom et NIP-96 du serveur pour les outils d&amp;rsquo;agents. &lt;a href="https://github.com/v0l/route96/pull/58">PR #58&lt;/a> déplace les workers en arrière-plan vers des tâches Tokio entièrement asynchrones, et &lt;a href="https://github.com/v0l/route96/commit/97b00a39e27b07053c2ad335dbf475bacba57bf8">le commit 97b00a3&lt;/a> ajoute un backoff pour éviter des hot loops.&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>, lecteur et éditeur long format disponible sur &lt;a href="https://samizdat.press">samizdat.press&lt;/a>, a livré son premier build Android dans &lt;a href="https://github.com/satsdisco/samizdat/releases/tag/v1.0.0-alpha">v1.0.0-alpha&lt;/a>. L&amp;rsquo;application s&amp;rsquo;ouvre sur une page Press curatée d&amp;rsquo;articles Nostr long format, avec navigation par onglets entre Press, Feed, Saved et Write. Le build Android ajoute un stockage natif des clés via chiffrement Android Keystore avec déverrouillage biométrique, gère les URI &lt;code>nostr:&lt;/code> et les deep links &lt;code>samizdat.press&lt;/code>, et prend en charge le handoff de signer via le sélecteur d&amp;rsquo;applications Android, Amber, Primal, etc., au lieu d&amp;rsquo;exiger un import direct de clé. Le pull-to-refresh, la gestion des safe areas sur différentes tailles d&amp;rsquo;écran, et les intégrations natives de partage, presse-papiers, haptique et écran de démarrage font maintenant partie de la shell Android plutôt que du wrapper web.&lt;/p>
&lt;p>&lt;a href="https://github.com/satsdisco/samizdat/commit/d17308f3c2e6020e14074fbb1c03a8f60f29a3e6">Le commit d17308f&lt;/a> ajoute la signature &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> basée sur intents pour les parcours Amber et Primal, et &lt;a href="https://github.com/satsdisco/samizdat/commit/e29dab84f7b58edd621f7b86ed7ca6458f965614">le commit e29dab8&lt;/a> remplace un contournement JavaScript bridge par un plugin Capacitor natif utilisant &lt;code>startActivityForResult&lt;/code>. L&amp;rsquo;application exige Android 7.0 ou plus, API 24, est distribuée sous forme d&amp;rsquo;APK debug dans cette alpha, et n&amp;rsquo;a toujours pas de notifications push. La publication dépend actuellement d&amp;rsquo;une application signer, tandis que la connexion par &lt;code>nsec&lt;/code> couvre la lecture locale et l&amp;rsquo;accès au compte.&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>, une application de calendrier décentralisée avec partage d&amp;rsquo;événements privés &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) disponible sur &lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a>, a livré &lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.0">v0.2.0&lt;/a> avec &lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/38">PR #38&lt;/a>. La version étend la gestion des événements récurrents pour &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a> (Calendar Events), allant au-delà des fondations mono-événement de la v0.1.0. Les changements sous-jacents touchent aussi le stockage local des événements, la gestion des signers et le plumbing des notifications Android. C&amp;rsquo;est la deuxième application active de l&amp;rsquo;organisation Formstr après la migration de dépôt du mois dernier.&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>, la plateforme d&amp;rsquo;échange Bitcoin pair à pair construite sur Nostr, a publié &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>. Les correctifs de restauration de session de litige (&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>) et de fermeture automatique (&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/">couverts la semaine dernière&lt;/a> sont inclus. Nouveau dans cette version : &lt;a href="https://github.com/MostroP2P/mostro/pull/625">PR #625&lt;/a> ajoute un champ &lt;code>days&lt;/code> aux événements d&amp;rsquo;évaluation utilisateur de kind &lt;code>38384&lt;/code>, &lt;a href="https://github.com/MostroP2P/mostro/pull/612">PR #612&lt;/a> ajoute une expiration à ces événements d&amp;rsquo;évaluation, et &lt;a href="https://github.com/MostroP2P/mostro/pull/614">PR #614&lt;/a> fait passer les événements de commande vers des réglages d&amp;rsquo;expiration configurés au lieu d&amp;rsquo;une fenêtre codée en dur de 24 heures. &lt;a href="https://github.com/MostroP2P/mostro/pull/622">PR #622&lt;/a> ajoute une vérification d&amp;rsquo;idempotence pour empêcher les paiements en double des frais de développement.&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>, le client Flutter pour l&amp;rsquo;échange P2P Mostro, a livré &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.1">v1.2.1&lt;/a> avec 11 nouvelles fonctionnalités et 11 corrections de bugs. La version ajoute le rendu multimédia chiffré dans le chat de litige (&lt;a href="https://github.com/MostroP2P/mobile/pull/514">PR #514&lt;/a>), la fermeture automatique de l&amp;rsquo;UI de litige quand les commandes atteignent un état terminal (&lt;a href="https://github.com/MostroP2P/mobile/pull/503">PR #503&lt;/a>), le scan QR pour l&amp;rsquo;import wallet NWC (&lt;a href="https://github.com/MostroP2P/mobile/commit/12eaee4d154fa31b07f82b96819de520e825aee6">commit 12eaee4&lt;/a>), des traductions françaises, et la gestion des notifications push FCM. &lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a> corrige un bug de padding de signature Schnorr en épinglant la dépendance bip340 à la 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>, le client de messagerie type Telegram avec support Cashu, a livré &lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.4-release">v1.5.4&lt;/a> centrée sur les correctifs Linux desktop : icônes de dock AppImage, rendu des emojis, gels des menus contextuels, et blocages UI sur répondre/copier. La version corrige aussi les problèmes d&amp;rsquo;upload d&amp;rsquo;image et l&amp;rsquo;intégration npub.cash. &lt;a href="https://github.com/0xchat-app/0xchat-app-main/pull/49">PR #49&lt;/a> élimine des rebuilds UI inutiles en supprimant un timer de polling de 3 secondes qui forçait des repaints glassmorphic sans rien faire, et débloque l&amp;rsquo;initialisation de connexion en lançant le chargement du cache d&amp;rsquo;événements en parallèle au lieu de bloquer le démarrage relay, contacts et canaux.&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>, un signer à seuil FROST pour Android avec support &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>, a livré &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.0">v0.6.0&lt;/a> et &lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.1">v0.6.1&lt;/a>. v0.6.0 ajoute une UI de coordination et gestion de descripteurs de wallet, un flux de sauvegarde/restauration avec authentification biométrique (&lt;a href="https://github.com/privkeyio/keep-android/pull/184">PR #184&lt;/a>), la récupération de &lt;code>nsec&lt;/code> à partir de threshold shares (&lt;a href="https://github.com/privkeyio/keep-android/pull/187">PR #187&lt;/a>), la génération cross-platform de cadres QR animés via Rust UniFFI (&lt;a href="https://github.com/privkeyio/keep-android/pull/188">PR #188&lt;/a>), et une piste d&amp;rsquo;audit de signature avec vérification de chaîne (&lt;a href="https://github.com/privkeyio/keep-android/pull/189">PR #189&lt;/a>). v0.6.1 remplace la licence AGPL-3.0 par 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>, la passerelle statique pour consulter du contenu Nostr sur &lt;a href="https://njump.me">njump.me&lt;/a>, a livré &lt;a href="https://github.com/fiatjaf/njump/releases/tag/v0.3.0">v0.3.0&lt;/a> avec un changement cassant dans le parsing des codes &lt;code>note1&lt;/code> et une mise à jour de la bibliothèque Nostr sous-jacente.&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>, une application décentralisée de signalement d&amp;rsquo;événements routiers utilisant Nostr, a livré sa première version démo &lt;a href="https://github.com/jooray/roadstr/releases/tag/v0.1.1">v0.1.1&lt;/a>. L&amp;rsquo;application affiche les événements routiers sur une carte utilisant les vector tiles d&amp;rsquo;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>, une application d&amp;rsquo;e-bills avec couche de transport Nostr et relay dédié sur &lt;a href="https://www.bit.cr/">bit.cr&lt;/a>, a livré &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> ajoute les champs &lt;code>payment_actions&lt;/code> et &lt;code>bill_state&lt;/code> à l&amp;rsquo;API pour l&amp;rsquo;état de paiement et d&amp;rsquo;acceptation, et &lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/pull/849">PR #849&lt;/a> corrige la gestion des adresses de signature pour les signers anonymes.&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>, une application de chat construite sur les bibliothèques .NET MLS et C# du protocole Marmot, a livré &lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.3">v0.1.0-alpha.3&lt;/a>. La version ajoute le support de signer externe pour Amber et les flux &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (&lt;a href="https://github.com/DavidGershony/openChat/commit/e568d979fe15eead19172f2eb6f8cf26ca845247">commit e568d97&lt;/a>), déplace la persistance de l&amp;rsquo;état MLS dans le service MLS pour éliminer les pertes de données dans la fenêtre de crash (&lt;a href="https://github.com/DavidGershony/openChat/commit/4720bc8625136a0d5b0e23322bc0c50cd80577e8">commit 4720bc8&lt;/a>), et publie des builds Windows, Linux et Android via un nouveau 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>, un copilot de trading Kotlin Multiplatform pour Nostr, a livré &lt;a href="https://github.com/turizspace/OpenSignal/releases/tag/v1.0.0">v1.0.0&lt;/a>. La version assemble des modules KMP partagés pour la logique métier, le rendu de graphiques, l&amp;rsquo;authentification et la publication Nostr, le support d&amp;rsquo;upload Blossom &lt;a href="https://nostrcompass.org/fr/topics/nip-96/">NIP-96&lt;/a>, et des hooks d&amp;rsquo;inférence IA fondés sur ONNX à travers les shells Desktop et Android. L&amp;rsquo;architecture publiée inclut aussi un service IA FastAPI pour l&amp;rsquo;analyse de captures d&amp;rsquo;écran de graphiques, des pipelines d&amp;rsquo;entraînement de modèles et un moteur de risque qui produit des plans de trade structurés avec sizing et avertissements. La connexion prend en charge soit des clés &lt;code>nsec&lt;/code> brutes, soit des signers externes, et le flux de sortie se termine par la publication d&amp;rsquo;un événement Nostr plutôt qu&amp;rsquo;une analyse locale uniquement.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&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;alternative à Google Forms sur Nostr, a fusionné &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>), ajoutant un flux d&amp;rsquo;inscription qui utilise des clés privées chiffrées &lt;a href="https://nostrcompass.org/fr/topics/nip-49/">NIP-49&lt;/a> (Private Key Encryption). Avant ce changement, les utilisateurs avaient besoin soit d&amp;rsquo;une extension de navigateur &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a>, soit de coller un &lt;code>nsec&lt;/code> brut pour utiliser Formstr. Le nouveau flux génère une paire de clés côté client, chiffre la clé privée avec un mot de passe choisi par l&amp;rsquo;utilisateur via le schéma scrypt + XChaCha20-Poly1305 de NIP-49, puis stocke la chaîne &lt;code>ncryptsec&lt;/code> obtenue. Les utilisateurs peuvent ensuite se reconnecter avec leur mot de passe sans installer d&amp;rsquo;extension signer. La gestion des clés reste côté client du début à la fin.&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, le client Android riche en fonctionnalités, a fusionné quatre PRs qui livrent le travail de résolution &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a> soutenu par Namecoin, lequel était &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">encore ouvert la semaine dernière&lt;/a>. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a> ajoute une vérification NIP-05 résistante à la censure via ElectrumX pour les identifiants &lt;code>.bit&lt;/code>, &lt;code>d/&lt;/code> et &lt;code>id/&lt;/code>. Quand Amethyst détecte l&amp;rsquo;un de ces suffixes dans un champ NIP-05, il interroge un serveur ElectrumX-NMC pour récupérer l&amp;rsquo;historique de transaction du nom, analyse le script &lt;code>NAME_UPDATE&lt;/code> de la dernière sortie pour en extraire la pubkey Nostr, et rejette les noms plus anciens que 36 000 blocs, la fenêtre d&amp;rsquo;expiration de Namecoin. Les connexions ElectrumX passent par SOCKS5 lorsque Tor est activé, avec sélection dynamique entre des endpoints clearnet et &lt;code>.onion&lt;/code>. Un cache LRU avec TTL d&amp;rsquo;une heure évite les requêtes blockchain répétées.&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1771">PR #1771&lt;/a> corrige des conditions de course et des erreurs de résolution dans ce flux. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1785">PR #1785&lt;/a> permet aux nouveaux utilisateurs d&amp;rsquo;importer une liste de suivis pendant l&amp;rsquo;inscription à partir d&amp;rsquo;identifiants NIP-05 ordinaires ou fondés sur Namecoin. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1786">PR #1786&lt;/a> ajoute des réglages de serveur ElectrumX personnalisés pour laisser les utilisateurs choisir le serveur chargé de leurs requêtes.&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>, une bibliothèque fournissant des méthodes utilitaires pour stocker des événements Nostr dans IndexedDB, a fusionné &lt;a href="https://github.com/hzrd149/nostr-idb/pull/6">PR #6&lt;/a> ajoutant le support des filtres de tags AND &lt;a href="https://nostrcompass.org/fr/topics/nip-91/">NIP-91&lt;/a>. Le changement ajoute une sémantique d&amp;rsquo;intersection à la logique de matching côté client pour que les requêtes IndexedDB puissent exiger toutes les valeurs de tag listées plutôt qu&amp;rsquo;une seule. &lt;a href="https://github.com/hzrd149/nostr-idb/pull/8">PR #8&lt;/a> met la bibliothèque à jour vers la dernière interface NIP-DB, puis un &lt;a href="https://github.com/hzrd149/nostr-idb/commit/b49b3d32c575ff8214dc3fb07675109c2a971972">commit b49b3d3&lt;/a> corrige un deadlock sur &lt;code>subscribe&lt;/code> et retire nostr-tools des dépendances de production.&lt;/p>
&lt;h3 id="pensieve">Pensieve&lt;/h3>
&lt;p>&lt;a href="https://github.com/andotherstuff/pensieve">Pensieve&lt;/a>, un indexeur Nostr orienté archive avec analytique ClickHouse, a fusionné &lt;a href="https://github.com/andotherstuff/pensieve/pull/8">PR #8&lt;/a> ajoutant l&amp;rsquo;application de TTL de cache par entrée et la coalescence des misses par clé pour réduire les pics CPU de l&amp;rsquo;API. Les endpoints de séries temporelles les plus coûteux, statistiques d&amp;rsquo;engagement, activité horaire et activité par kind, utilisent maintenant des TTL serveur de 10 minutes au lieu de déclencher des recomputations synchronisées en tempête.&lt;/p>
&lt;h3 id="blossom">Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>, le protocole et la stack serveur d&amp;rsquo;hébergement média décentralisé, a fusionné deux mises à jour d&amp;rsquo;autorisation BUD-11. &lt;a href="https://github.com/hzrd149/blossom/pull/91">PR #91&lt;/a> déplace l&amp;rsquo;autorisation optionnelle dans son propre BUD et clarifie le rôle des tags &lt;code>x&lt;/code> et &lt;code>server&lt;/code>. &lt;a href="https://github.com/hzrd149/blossom/pull/93">PR #93&lt;/a> nettoie le comportement d&amp;rsquo;auth spécifique aux endpoints et formalise l&amp;rsquo;en-tête &lt;code>X-SHA-256&lt;/code> pour la vérification d&amp;rsquo;upload. Les deux PRs consolident la logique d&amp;rsquo;auth dans BUD-11 et suppriment les ambiguïtés autour du hachage des requêtes pour l&amp;rsquo;upload, la suppression et les flux de gestion média.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt des NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/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>) : ajoute une sémantique d&amp;rsquo;intersection pour les filtres de tags, permettant aux relays de répondre à des requêtes qui exigent toutes les valeurs listées au lieu d&amp;rsquo;une seule. Cela réduit le post-filtrage côté client et la bande passante sur les requêtes riches en tags.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> (Relay Discovery and Liveness Monitoring) : mesures défensives&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">PR #2240&lt;/a>) : après le &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">travail de benchmark outbox couvert la semaine dernière&lt;/a>, la spécification ajoute maintenant des avertissements sur les chemins dégradés des données de monitoring relay. Les clients ne doivent pas exiger les événements de monitoring kind &lt;code>30166&lt;/code> pour fonctionner. Un moniteur peut se tromper, être obsolète ou malveillant. Les clients doivent croiser les sources et éviter de couper de larges portions du graphe de relays d&amp;rsquo;un utilisateur sur la base d&amp;rsquo;un seul flux.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-39/">NIP-39&lt;/a> (External Identities in Profiles) : nettoyage du registre kind 10011&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2256">PR #2256&lt;/a>) : ajoute directement la référence au kind &lt;code>10011&lt;/code> dans la spécification, en l&amp;rsquo;alignant sur l&amp;rsquo;implémentation d&amp;rsquo;Amethyst &lt;a href="https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/">couverte la semaine dernière&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-70/">NIP-70&lt;/a> (Protected Events) : rejeter les reposts qui embarquent des protected events&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a>) : si un relay applique NIP-70 sur l&amp;rsquo;événement d&amp;rsquo;origine mais accepte les reposts qui transportent le même contenu, le tag &lt;code>-&lt;/code> n&amp;rsquo;a pas d&amp;rsquo;effet pratique. Cette PR ajoute la règle selon laquelle les relays doivent aussi rejeter les reposts kind 6 et kind 16 d&amp;rsquo;événements protégés. &lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a> l&amp;rsquo;implémente déjà.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-71/">NIP-71&lt;/a> (Video Events) : pistes audio multiples&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a>) : ajoute des tags &lt;code>imeta&lt;/code> audio pour les pistes alternatives, variantes linguistiques et flux audio-only. Un client pourrait conserver un fichier vidéo stable tout en changeant la langue audio, ou servir l&amp;rsquo;audio comme piste séparée pour un contenu de type podcast.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> (Relay Information Document) et attributs de relay &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a>&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2257">PR #2257&lt;/a>) : ajoute un champ structuré &lt;code>attributes&lt;/code> aux relay information documents, offrant aux clients et outils de découverte des métadonnées lisibles par machine au-delà de la description en texte libre actuelle.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive--nip-49-private-key-encryption">NIP Deep Dive : NIP-49 (Private Key Encryption)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-49/">NIP-49&lt;/a> définit comment un client chiffre une clé privée avec un mot de passe et encode le résultat sous forme de chaîne bech32 &lt;code>ncryptsec&lt;/code>. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-11-newsletter/#formstr">Formstr&lt;/a> utilise NIP-49 dans son nouveau flux d&amp;rsquo;inscription.&lt;/p>
&lt;p>Le format n&amp;rsquo;est pas lié à un kind d&amp;rsquo;événement dédié. Un client part de la clé privée secp256k1 brute de 32 octets, dérive une clé symétrique à partir du mot de passe utilisateur avec scrypt, chiffre la clé avec XChaCha20-Poly1305, puis encapsule le résultat dans une chaîne bech32 &lt;code>ncryptsec&lt;/code>. Un flag d&amp;rsquo;un octet enregistre si la clé est connue comme ayant été manipulée de manière non sûre avant chiffrement.&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;événement JSON ci-dessus est un exemple au niveau application, pas une exigence de NIP-49. Le NIP standardise le format de clé chiffrée. Un client peut stocker la chaîne &lt;code>ncryptsec&lt;/code> localement, la synchroniser via un stockage spécifique à l&amp;rsquo;application, ou l&amp;rsquo;exporter comme chaîne de sauvegarde. Les mots de passe sont normalisés en Unicode NFKC avant la dérivation de clé afin que le même mot de passe déchiffre de manière cohérente entre clients et plateformes.&lt;/p>
&lt;p>Le flag de sécurité de clé sur un octet a trois valeurs définies : &lt;code>0x00&lt;/code> signifie que l&amp;rsquo;historique de manipulation de la clé est inconnu, &lt;code>0x01&lt;/code> signifie que la clé est connue pour avoir été manipulée de manière non sûre, par exemple collée en clair dans un formulaire web avant chiffrement, et &lt;code>0x02&lt;/code> signifie que la clé a été générée et chiffrée dans un contexte sûr sans jamais être exposée. Les clients peuvent utiliser cela pour afficher des avertissements lors de l&amp;rsquo;import de clés dont l&amp;rsquo;historique est connu comme non sûr.&lt;/p>
&lt;p>NIP-49 protège mieux les clés qu&amp;rsquo;un export &lt;code>nsec&lt;/code> en clair, mais le chiffrement n&amp;rsquo;est aussi fort que le mot de passe et le coût scrypt configuré. Des valeurs &lt;code>LOG_N&lt;/code> plus élevées compliquent le brute force offline mais ralentissent aussi les opérations légitimes de déchiffrement. La spécification met en garde contre la publication de clés chiffrées sur des relays publics, puisque les attaquants bénéficient de la collecte de ciphertext pour le cracking offline. À titre de comparaison, la signature distante &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> évite entièrement d&amp;rsquo;exposer les clés, tandis que la signature Android &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> garde les clés dans une application signer dédiée. NIP-49 occupe un autre créneau : la sauvegarde chiffrée portable pour les utilisateurs qui gèrent eux-mêmes leurs clés.&lt;/p>
&lt;p>Les implémentations incluent &lt;a href="https://github.com/formstr-hq/nostr-forms/pull/434">Formstr PR #434&lt;/a> pour l&amp;rsquo;inscription, &lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> pour la sauvegarde et la restauration &lt;code>ncryptsec&lt;/code>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-11-newsletter/#divine-livre-v106-avec-une-infrastructure-de-tests-e2e-et-limport-nip-49">diVine v1.0.6&lt;/a> pour l&amp;rsquo;import de compte, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-11-newsletter/#keep-v060">Keep v0.6.0&lt;/a> pour l&amp;rsquo;export de FROST shares, et des outils de gestion de clés comme &lt;a href="https://nsec.app">nsec.app&lt;/a> et &lt;a href="https://github.com/getAlby/hub">Alby&lt;/a>.&lt;/p>
&lt;h2 id="nip-deep-dive--nip-70-protected-events">NIP Deep Dive : NIP-70 (Protected Events)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-70/">NIP-70&lt;/a> définit les protected events. Quand un événement porte le tag &lt;code>[&amp;quot;-&amp;quot;]&lt;/code>, un relay doit le rejeter sauf si le relay exige une authentification &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> et que la pubkey authentifiée correspond à l&amp;rsquo;auteur de l&amp;rsquo;événement.&lt;/p>
&lt;p>Le flux d&amp;rsquo;auth NIP-42 fonctionne comme suit : le relay envoie un challenge &lt;code>AUTH&lt;/code> contenant une chaîne aléatoire, puis le client répond avec un événement kind &lt;code>22242&lt;/code> signé dont les tags incluent l&amp;rsquo;URL du relay et le challenge. Le relay vérifie la signature et contrôle que la pubkey de l&amp;rsquo;événement d&amp;rsquo;auth correspond à la pubkey de l&amp;rsquo;événement protégé en cours de publication. Si les pubkeys ne correspondent pas, le relay rejette l&amp;rsquo;événement avec le préfixe de message &lt;code>restricted&lt;/code>.&lt;/p>
&lt;p>Le contenu de l&amp;rsquo;événement peut malgré tout rester public. Le tag &lt;code>-&lt;/code> ne contrôle que qui peut publier l&amp;rsquo;événement sur un relay qui respecte ce tag. Cela couvre les flux semi-fermés de &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> (Simple Groups), les espaces relay réservés aux membres, et d&amp;rsquo;autres contextes où l&amp;rsquo;auteur veut limiter la redistribution via le graphe des relays. NIP-70 est une convention à tag unique, pas un nouveau kind d&amp;rsquo;événement, donc n&amp;rsquo;importe quel kind existant peut porter le 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>Même si un relay bloque la publication tierce de l&amp;rsquo;événement original, quelqu&amp;rsquo;un peut toujours republier le contenu dans un repost. &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a> traite ce problème en imposant aux relays de rejeter aussi les reposts kind 6 et kind 16 d&amp;rsquo;événements protégés. &lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a> ajoute la gestion NIP-42 pour les protected events, et &lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a> bloque les reposts qui embarquent du contenu protégé.&lt;/p>
&lt;p>NIP-70 contrôle le comportement des relays. Un destinataire peut toujours recopier le contenu ailleurs, et la spécification le dit explicitement. Le tag &lt;code>-&lt;/code> donne aux relays un signal lisible par machine leur permettant de refuser une republication. À titre de comparaison, &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) demande aux relays de supprimer des données après coup, tandis que NIP-70 empêche une publication non autorisée dès l&amp;rsquo;ingestion. Les deux sont complémentaires : un auteur peut marquer des événements comme protégés pour limiter leur diffusion, puis demander plus tard une suppression s&amp;rsquo;il souhaite que le contenu disparaisse des relays qui l&amp;rsquo;ont accepté.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ou vous avez des nouvelles à partager ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via DM &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a>&lt;/a> ou retrouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #12</title><link>https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Le &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> livre sa &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#le-marmot-development-kit-livre-sa-premi%c3%a8re-version-publique">première version publique&lt;/a> avec médias chiffrés et liaisons multi-langages. &lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> publie des &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#le-mod%c3%a8le-outbox-sous-le-microscope">benchmarks du modèle outbox&lt;/a> à travers 14 algorithmes de sélection de relays. &lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> passe de la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#wisp-passe-de-lalpha-%c3%a0-la-b%c3%aata">première alpha à la bêta&lt;/a> en huit jours avec Tor et la signature &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application). &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#mises-%c3%a0-jour-des-nip">NIP-91&lt;/a> (filtres AND) est fusionné. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a> apporte la synchronisation negentropy avec des gains de performance de 15x. Ce numéro inclut également la rétrospective Cinq ans de févriers Nostr, retraçant le protocole depuis une réécriture de spécification desservant trois relays jusqu&amp;rsquo;à l&amp;rsquo;explosion de Damus sur l&amp;rsquo;App Store, en passant par le réseau maillé et les propositions d&amp;rsquo;agents IA.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Le &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> livre sa &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#le-marmot-development-kit-livre-sa-premi%c3%a8re-version-publique">première version publique&lt;/a> avec médias chiffrés et liaisons multi-langages. &lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> publie des &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#le-mod%c3%a8le-outbox-sous-le-microscope">benchmarks du modèle outbox&lt;/a> à travers 14 algorithmes de sélection de relays. &lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> passe de la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#wisp-passe-de-lalpha-%c3%a0-la-b%c3%aata">première alpha à la bêta&lt;/a> en huit jours avec Tor et la signature &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (Android Signer Application). &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#mises-%c3%a0-jour-des-nip">NIP-91&lt;/a> (filtres AND) est fusionné. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a> apporte la synchronisation negentropy avec des gains de performance de 15x. Ce numéro inclut également la rétrospective Cinq ans de févriers Nostr, retraçant le protocole depuis une réécriture de spécification desservant trois relays jusqu&amp;rsquo;à l&amp;rsquo;explosion de Damus sur l&amp;rsquo;App Store, en passant par le réseau maillé et les propositions d&amp;rsquo;agents IA.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="le-modèle-outbox-sous-le-microscope">Le modèle outbox sous le microscope&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a> a publié une série de benchmarks du modèle outbox testant la capacité de différents algorithmes de sélection de relays à récupérer des événements depuis le réseau décentralisé de relays. Le projet a fusionné 16 PRs et 76 commits en dix jours, produisant ce qui constitue probablement l&amp;rsquo;analyse empirique la plus approfondie des stratégies d&amp;rsquo;implémentation de &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) à ce jour.&lt;/p>
&lt;p>Les benchmarks testent 14 algorithmes de sélection de relays contre des listes d&amp;rsquo;abonnements réelles à travers 15 clients et bibliothèques dans cinq langages. Une approche de base consistant à interroger uniquement les relays populaires récupère environ 26 % des événements. La couverture ensembliste gloutonne avec échantillonnage de Thompson atteint 80-90 % de rappel. L&amp;rsquo;ajout d&amp;rsquo;une variante sensible à la latence utilisant l&amp;rsquo;escompte hyperbolique et le suivi de latence EWMA des relays a fait passer la complétude de 62-80 % à 72-96 % à la marque des 2 secondes sur six profils de test.&lt;/p>
&lt;p>Le filtrage des relays morts via &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> (Relay Monitoring) s&amp;rsquo;est avéré déterminant. Le pré-filtrage des candidats relays contre les données de disponibilité de &lt;a href="https://nostr.watch">nostr.watch&lt;/a> a éliminé 40-64 % des relays morts et doublé les taux de succès des relays de 30 % à 75-85 %. Les temps de chargement de flux ont chuté de 39 % (de 40 secondes à 24 secondes sur 10 profils). Une simulation de course EOSE a montré qu&amp;rsquo;attendre EOSE plus une période de grâce de 200 ms améliorait la complétude par rapport à l&amp;rsquo;arrêt au premier relay ayant terminé.&lt;/p>
&lt;p>Pour les clients ne pouvant pas entièrement réécrire leur routage de relays, une approche d&amp;rsquo;« enrichissement outbox hybride » ajoute des requêtes outbox par auteur en plus des relays d&amp;rsquo;application codés en dur existants. Cette approche hybride a atteint 80 % de rappel d&amp;rsquo;événements sur un an contre les 26 % de base, offrant un chemin de migration pour les clients avec des architectures de relays héritées.&lt;/p>
&lt;h3 id="contextvm-ouvre-un-nip-pour-mcp-et-livre-les-gift-wraps-éphémères">ContextVM ouvre un NIP pour MCP et livre les Gift Wraps éphémères&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a>, le protocole faisant le pont entre Nostr et le &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>, a ouvert deux propositions dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> cette semaine. &lt;a href="https://github.com/nostr-protocol/nips/pull/2246">PR #2246&lt;/a> formalise CVM comme une convention pour transporter les messages MCP JSON-RPC sur Nostr en utilisant des événements éphémères de kind 25910. &lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a> étend &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> (Gift Wrap) avec un kind éphémère (21059) qui suit la sémantique éphémère de &lt;a href="https://nostrcompass.org/fr/topics/nip-01/">NIP-01&lt;/a> (Basic Protocol Flow), permettant aux relays de supprimer les messages encapsulés après livraison.&lt;/p>
&lt;p>La convention de gift wrap éphémère a été livrée sous forme de &lt;a href="https://docs.contextvm.org/spec/ceps/cep-19/">CEP-19&lt;/a> dans la famille de versions ContextVM SDK v0.6.x. L&amp;rsquo;&lt;a href="https://github.com/ContextVM/sdk">implémentation du SDK&lt;/a> ajoute une énumération &lt;code>GiftWrapMode&lt;/code> avec trois paramètres : OPTIONAL (accepter les deux kinds et détecter automatiquement la capacité du pair), EPHEMERAL (kind 21059 uniquement) et PERSISTENT (kind 1059 uniquement). Pour les appels d&amp;rsquo;outils IA, le mode éphémère évite de stocker le trafic intermédiaire requête-réponse sur les relays, réduisant à la fois les coûts de stockage et l&amp;rsquo;exposition de la vie privée.&lt;/p>
&lt;p>De nouveaux serveurs MCP publics sont apparus sur le réseau provenant d&amp;rsquo;opérateurs indépendants, notamment un serveur de requêtes Wolfram Alpha. L&amp;rsquo;équipe ContextVM a publié CEP-15 (schéma d&amp;rsquo;outils communs) et CEP-17 (publication de liste de relays serveur) aux côtés du cycle de versions v0.6.x.&lt;/p>
&lt;h3 id="le-marmot-development-kit-livre-sa-première-version-publique">Le Marmot Development Kit livre sa première version publique&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a> (Marmot Development Kit), la bibliothèque Rust alimentant la messagerie chiffrée par &lt;a href="https://nostrcompass.org/fr/topics/mls/">Marmot&lt;/a> à travers &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> et &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, a livré &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.6.0">v0.6.0&lt;/a> comme première version publique. Plus de 200 PRs ont été fusionnées dans cette version, avec six nouveaux contributeurs.&lt;/p>
&lt;p>La version inclut le support de médias chiffrés (MIP-04) avec dérivation de graine HKDF (MIP-01 v2), la résolution déterministe des courses de commits (MIP-03), le stockage local chiffré, la validation d&amp;rsquo;autorisation administrateur pour les commits et propositions Marmot, et le support GREASE pour l&amp;rsquo;extensibilité du protocole. Les liaisons sont fournies pour Kotlin, Python, Ruby et Windows aux côtés de la compilation croisée Android. La bibliothèque passe à OpenMLS 0.8.0 avec des correctifs d&amp;rsquo;avis de sécurité et un type &lt;code>Secret&amp;lt;T&amp;gt;&lt;/code> qui met à zéro les valeurs sensibles en mémoire.&lt;/p>
&lt;p>Un changement de protocole compagnon (&lt;a href="https://github.com/marmot-protocol/marmot/pull/48">MIP-03&lt;/a>) a remplacé le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (Encrypted Payloads) par ChaCha20-Poly1305 pour les messages de kind 445. NIP-44 exigeait une entrée de chaîne UTF-8 selon sa spécification, rendant impossible le passage de bytes bruts de messages Marmot à travers les bibliothèques Nostr TypeScript standard. Le remplacement dérive les clés directement du secret exporteur Marmot. Ce changement cassant a nécessité des mises à jour coordonnées à travers la &lt;a href="https://github.com/marmot-protocol/marmot/pull/48">spécification de base&lt;/a>, &lt;a href="https://github.com/marmot-protocol/mdk/pull/208">MDK&lt;/a> et le &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;implémentation TypeScript maintenue par hzrd149, a fusionné quatre PRs avec des changements cassants d&amp;rsquo;API. Une &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/52">mise à jour omnibus&lt;/a> a ajouté un gestionnaire de paquets de clés pour le cycle de vie créer/publier/rotation, une méthode de commodité &lt;code>sendChatMessage&lt;/code>, l&amp;rsquo;aperçu d&amp;rsquo;invitation sans rejoindre (&lt;code>readInviteGroupInfo&lt;/code>), l&amp;rsquo;auto-mise à jour pour les rotations de secret de transmission, et la journalisation de débogage structurée. Les APIs de déchiffrement de groupe ont été renommées de &lt;code>readGroupMessage&lt;/code> à &lt;code>decryptGroupMessage&lt;/code> avec des variantes de résultats plus riches (processed/skipped/rejected/unreadable). gzuuus a contribué au nettoyage des exemples avec le support de relays NIP-65 et la gestion de paquets de clés de dernier recours selon MIP-00.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise CLI&lt;/a> (&lt;code>wn&lt;/code>), le backend Rust alimentant à la fois l&amp;rsquo;application mobile et le nouveau TUI, a fusionné 16 PRs en dix jours. La gestion du cycle de vie du signataire a gagné en sécurité d&amp;rsquo;annulation grâce à un gardien de portée RAII (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/538">PR #538&lt;/a>), corrigeant une classe de bugs où les opérations avortées pouvaient laisser fuir l&amp;rsquo;état du signataire. La connexion bloque maintenant lorsque les listes de relays requises (kind 10002/10050/10051) sont manquantes (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/515">PR #515&lt;/a>), et les abonnements giftwrap se rabattent sur les relays &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> lorsque les listes inbox sont absentes (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/518">PR #518&lt;/a>). Un mode de débogage (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/528">PR #528&lt;/a>) expose les requêtes de base de données et l&amp;rsquo;inspection de l&amp;rsquo;arbre de cliquet MLS en sortie JSON. D&amp;rsquo;autres correctifs ont traité la récupération d&amp;rsquo;abonnements après ré-enregistrement du signataire, le timing de rattrapage des messages de bienvenue, la validation des filtres de relay et les limites de rayon de recherche d&amp;rsquo;utilisateurs.&lt;/p>
&lt;p>Marmot a connu une expansion significative au-delà de la pile Rust principale cette semaine. &lt;a href="https://github.com/marmot-protocol/wn-tui">White Noise TUI&lt;/a>, une interface en terminal pour la pile de messagerie White Noise, a été lancé le 3 mars. Il encapsule le CLI &lt;code>wn&lt;/code> comme sous-processus et rend sa sortie JSON via une architecture unidirectionnelle inspirée d&amp;rsquo;Elm, fournissant la navigation multi-conversations avec indicateurs de non-lu, la création de groupes et la recherche de membres, le streaming de messages en temps réel et les réactions emoji depuis le terminal.&lt;/p>
&lt;p>&lt;a href="https://github.com/DavidGershony">DavidGershony&lt;/a> a publié une pile C# Marmot complète reflétant l&amp;rsquo;architecture en couches de la chaîne d&amp;rsquo;outils Rust. &lt;a href="https://github.com/DavidGershony/dotnet-mls">dotnet-mls&lt;/a> implémente les primitives cryptographiques MLS RFC 9420 en C#. &lt;a href="https://github.com/DavidGershony/marmot-cs">marmot-cs&lt;/a> s&amp;rsquo;appuie dessus pour ajouter le transport par relays Nostr, fonctionnant comme un équivalent C# de MDK. &lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>, une application desktop multiplateforme construite avec .NET 9 et Avalonia UI, lie les deux en un client de chat fonctionnel avec DMs NIP-44, chiffrement de groupe Marmot, signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) et indicateurs de statut multi-relays.&lt;/p>
&lt;p>&lt;a href="https://github.com/zerosats/mdk-pwa-reference">MDK PWA Reference&lt;/a> fournit un modèle Progressive Web App pour construire des applications chiffrées par Marmot, avec un support expérimental pour la participation d&amp;rsquo;agents IA dans les chats de groupe et les paiements Bitcoin via l&amp;rsquo;infrastructure de portefeuille Arkade.&lt;/p>
&lt;h3 id="wisp-passe-de-lalpha-à-la-bêta">Wisp passe de l&amp;rsquo;alpha à la bêta&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a> est un nouveau client Nostr Android qui est passé de la &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.1.0-alpha">première alpha&lt;/a> le 24 février à &lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.3.4-beta">v0.3.4-beta&lt;/a> le 3 mars, produisant 19 versions, 115 PRs fusionnées et 276 commits en huit jours.&lt;/p>
&lt;p>La trajectoire des fonctionnalités couvre un terrain que la plupart des clients mettent des mois à atteindre. v0.1.0 a été livré avec le support du modèle de relays outbox/inbox et des flux d&amp;rsquo;intégration. Dès v0.1.3, le client disposait de la signature basée sur les intents &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> pour Amber, d&amp;rsquo;un proxy Tor SOCKS5 intégré pour la connectivité aux relays &lt;code>.onion&lt;/code>, et de &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect). v0.2.0 a été promu en bêta avec le filtrage par liste de silence et le support d&amp;rsquo;emoji personnalisés, tandis que v0.2.4 a ajouté les superpositions d&amp;rsquo;avertissement de contenu. La série v0.3.x a introduit la preuve de travail &lt;a href="https://nostrcompass.org/fr/topics/nip-13/">NIP-13&lt;/a> pour les notes, le minage PoW en arrière-plan avec paramètres persistants, le stockage de relays &lt;code>.onion&lt;/code> et les notifications de fils silenciés.&lt;/p>
&lt;p>La traduction sur appareil via Google ML Kit fonctionne localement sans accès réseau après le téléchargement initial du modèle. Une visualisation interactive du graphe social utilise une simulation physique velocity Verlet à environ 30 fps avec navigation par pincement pour zoomer et inspection de profil.&lt;/p>
&lt;h2 id="versions">Versions&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;application de messagerie chiffrée par Marmot, a livré &lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.1">v0.3.1&lt;/a> avec des améliorations de gestion de groupes et un travail sur les performances. Les groupes multi-administrateurs, les invitations en masse, l&amp;rsquo;invitation par npub et les avatars de groupe étendent les fonctionnalités de collaboration. Les notifications en arrière-plan Android supportent maintenant les actions Répondre et Marquer comme lu en ligne.&lt;/p>
&lt;p>La synchronisation déterministe basée sur &lt;a href="https://nostrcompass.org/fr/topics/negentropy/">Negentropy&lt;/a> récupère l&amp;rsquo;historique complet des conversations, y compris les messages manqués pendant les périodes hors ligne. La voix-vers-texte a été reconstruite avec accélération GPU sur Android. La gestion des pièces jointes a été remaniée avec progression du téléchargement, états de réessai, compression et envoi de répertoire, et indicateurs de progression en direct partout. Les performances se sont améliorées de plus de 15x sur le temps de démarrage, le traitement d&amp;rsquo;images, la lecture audio et la réactivité générale de l&amp;rsquo;UI. La taille d&amp;rsquo;installation de l&amp;rsquo;application a diminué de plus d&amp;rsquo;un tiers, avec le frontend réduit d&amp;rsquo;environ la moitié. Le support Android ARM 32 bits a été ajouté.&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>, le nœud Lightning auto-hébergé avec support Nostr Wallet Connect (&lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a>), a livré &lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.5">v1.21.5&lt;/a>. Un second relay a été ajouté à la configuration NWC par défaut, améliorant la fiabilité lors des redémarrages de relays. Un correctif pour les données de zap invalides dans la liste de transactions résout un problème d&amp;rsquo;affichage avec les événements &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a> (Lightning Zaps) malformés. Les nouvelles entrées du magasin d&amp;rsquo;applications incluent Alby CLI et 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>, le client de messagerie Nostr basé sur le texte, a livré trois versions sur la période. &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.0">v0.12.0&lt;/a> a ajouté un verrou d&amp;rsquo;application par PIN avec clavier à 4 chiffres et plus de 15 nouvelles traductions linguistiques incluant le bengali, le thaï, le vietnamien, l&amp;rsquo;hindi, l&amp;rsquo;arabe, l&amp;rsquo;hébreu, l&amp;rsquo;ourdou, le turc, le japonais, le chinois, le coréen, le néerlandais, le polonais, le russe et le persan avec support RTL. &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.1">v0.12.1&lt;/a> a introduit un thème Cypher avec fonds noir pur et accents cyan, plus la génération de poster vidéo Android. &lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.2">v0.12.2&lt;/a> a ajouté l&amp;rsquo;export de chat et Voir le profil dans les menus de contacts.&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>, le relay personnel Android de greenart7c3, a livré &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre2">v2.0.0-pre2&lt;/a> avec des améliorations de performance du relay grâce à de nouveaux index de base de données et des coroutines Kotlin restructurées. Chaque application web hébergée démarre maintenant sur son propre port. La recherche plein texte et un écran d&amp;rsquo;événements repensé avec expansion des événements complètent les changements.&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>, une application de prise de notes basée sur Nostr, a livré 8 versions de &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.0">v0.5.0&lt;/a> à &lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.7">v0.5.7&lt;/a>. Le lancement v0.5.0 sur Android a ajouté le support du signataire Amber &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> et la publication de notes &lt;a href="https://nostrcompass.org/fr/topics/nip-71/">NIP-71&lt;/a> (Video Events). Une page d&amp;rsquo;accueil redessinée en v0.5.1 incluait des aperçus de la timeline publique et a réduit l&amp;rsquo;APK à 15 Mo. Le Relay Browser en v0.5.2 permet aux utilisateurs de parcourir les timelines publiques des relays via des URLs partageables, aux côtés du téléchargement de médias et des réactions emoji personnalisées &lt;a href="https://nostrcompass.org/fr/topics/nip-30/">NIP-30&lt;/a>. Les versions suivantes jusqu&amp;rsquo;à v0.5.7 ont traité les conditions de course de synchronisation dans le système collaboratif de partage de notes « tribes ».&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;application d&amp;rsquo;appels vocaux et vidéo Nostr, a livré &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.1-release">v0.5.1&lt;/a> avec le support des messages vocaux, une expérience desktop optimisée avec entrée de groupe, les favoris de contacts sur desktop, les notes et filtrage de contacts, les options d&amp;rsquo;export et de nettoyage de données, et le support d&amp;rsquo;accessibilité des tailles de police système.&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;application de streaming en direct Nostr, a livré &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.13.0">v0.13.0&lt;/a> avec les téléchargements de replays MP4 depuis les menus de cartes de stream et &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a> (DNS-Based Verification) pour les profils. L&amp;rsquo;éditeur RTMP a migré vers l&amp;rsquo;API Expo Modules. Les performances de streaming sur les connexions à faible bande passante se sont améliorées, et les crashs sur les anciens appareils et le streaming iOS vers &lt;a href="https://zap.stream">Zap.Stream&lt;/a> sont corrigés.&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> a livré &lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v2.0.0">v2.0.0&lt;/a> avec des tailles de tampon WebSocket configurables, permettant aux applications de gérer des événements Nostr plus volumineux sans troncature. Le changement de version majeure reflète des changements cassants de l&amp;rsquo;API de connexion.&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> a livré &lt;a href="https://github.com/hardran3/Prism/releases/tag/1.1.0">1.1.0&lt;/a> avec le support de contenu long format (articles kind 30023) et un éditeur Markdown pour composer directement dans l&amp;rsquo;application, suivi d&amp;rsquo;une version de correction de bugs &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 plateforme de financement participatif Bitcoin, a livré &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.6">v0.2.6&lt;/a> avec l&amp;rsquo;intégration Boltz et un flux d&amp;rsquo;investissement en 1 clic. Les types d&amp;rsquo;investissement et de financement de projet fonctionnent tous deux de bout en bout sur testnet. L&amp;rsquo;équipe note que l&amp;rsquo;UI est complète à environ 70 %.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&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 : Opérateur AND pour les filtres&lt;/a>&lt;/strong> : Ajoute la sémantique de filtre AND pour les tableaux de tags dans les abonnements aux relays. Actuellement, spécifier plusieurs valeurs dans un filtre de tag (par exemple, plusieurs tags &lt;code>p&lt;/code>) correspond aux événements contenant l&amp;rsquo;une d&amp;rsquo;entre elles. NIP-91 permet aux clients d&amp;rsquo;exiger que les événements correspondent simultanément à toutes les valeurs de tags spécifiées, réduisant la bande passante et permettant des opérations d&amp;rsquo;index plus rapides. Plusieurs implémentations de relays existent déjà, dont nostr-rs-relay, satellite-node, worker-relay et applesauce. Anciennement numéroté 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 : Adresse d&amp;rsquo;ensemble d&amp;rsquo;emoji dans les tags&lt;/a>&lt;/strong> : Les tags d&amp;rsquo;emoji personnalisés dans &lt;a href="https://nostrcompass.org/fr/topics/nip-30/">NIP-30&lt;/a> peuvent maintenant inclure une adresse optionnelle d&amp;rsquo;ensemble d&amp;rsquo;emoji. Cliquer sur un emoji dans un client peut ouvrir l&amp;rsquo;ensemble auquel il appartient pour la mise en signet ou la navigation. Originaire du 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 : Ajout de unallowpubkey et unbanpubkey&lt;/a>&lt;/strong> : Deux nouvelles commandes administrateur pour le chat de groupe &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a>. &lt;code>unallowpubkey&lt;/code> retire une pubkey de la liste autorisée sans la bannir. &lt;code>unbanpubkey&lt;/code> lève un bannissement sans ré-ajouter la pubkey à la liste des membres. Auparavant, le seul moyen de retirer quelqu&amp;rsquo;un de la liste autorisée le bannissait également, et débannir nécessitait de ré-ajouter l&amp;rsquo;utilisateur comme membre.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&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> (ouvert le 27 février) : Proposés par purrgrammer, les spells sont des requêtes Nostr sauvegardées portables publiées comme événements de kind 777. Un spell encode un filtre REQ ou COUNT dans des tags structurés (&lt;code>k&lt;/code> pour les kinds, &lt;code>authors&lt;/code> pour les pubkeys, &lt;code>tag&lt;/code> pour les filtres de tags arbitraires) avec des variables d&amp;rsquo;exécution : &lt;code>$me&lt;/code> se résout en la pubkey de l&amp;rsquo;utilisateur connecté, &lt;code>$contacts&lt;/code> s&amp;rsquo;étend à la liste d&amp;rsquo;abonnements kind 3 de l&amp;rsquo;utilisateur. Les horodatages relatifs (&lt;code>7d&lt;/code>, &lt;code>2w&lt;/code>, &lt;code>1mo&lt;/code>) permettent aux spells de définir des fenêtres temporelles glissantes sans dates codées en dur. Déjà implémenté dans &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> et &lt;a href="https://github.com/purrgrammer/grimoire">Grimoire&lt;/a>, les spells permettent aux utilisateurs de créer, partager et s&amp;rsquo;abonner à des flux curatés qui voyagent entre les clients.&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 éphémère (kind 21059)&lt;/a>&lt;/strong> (ouvert le 27 février) : Ajoute une variante éphémère des gift wraps &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a>. Le kind 21059 suit la sémantique éphémère NIP-01, de sorte que les relays suppriment les événements après livraison. Proposé par ContextVM pour le transport MCP où la persistance des messages n&amp;rsquo;est pas nécessaire.&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 sur Nostr&lt;/a>&lt;/strong> (ouvert le 27 février) : Spécifie comment transporter les messages Model Context Protocol sur Nostr en utilisant des événements éphémères de kind 25910 avec des tags &lt;code>p&lt;/code> et &lt;code>e&lt;/code> pour l&amp;rsquo;adressage et la corrélation. Intentionnellement minimaliste, déférant les détails du protocole à la &lt;a href="https://docs.contextvm.org">spécification 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 : Espaces audio/vidéo en direct&lt;/a>&lt;/strong> (ouvert le 25 février, brouillon) : Brouillon de fiatjaf étendant les groupes &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> avec l&amp;rsquo;audio et la vidéo en direct. La proposition ajoute des tags optionnels &lt;code>livekit&lt;/code> et &lt;code>no-text&lt;/code> aux événements de métadonnées de groupe. Lorsqu&amp;rsquo;un utilisateur veut rejoindre un espace vocal, le client demande un JWT au relay à &lt;code>/.well-known/nip29/livekit/{groupId}&lt;/code>. Le relay vérifie l&amp;rsquo;appartenance au groupe et émet un jeton avec la pubkey hex de l&amp;rsquo;utilisateur comme claim &lt;code>sub&lt;/code>, qui est transmis à &lt;a href="https://livekit.io/">LiveKit&lt;/a> pour le transport média. L&amp;rsquo;accès au salon vocal hérite du modèle de permissions existant du groupe, de sorte que les règles d&amp;rsquo;appartenance côté relay régissent qui peut parler. En cours de test dans Pyramid et Chachi.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2235">Propriété collaborative d&amp;rsquo;événements&lt;/a>&lt;/strong> (ouvert le 24 février) : pablof7z propose un événement pointeur (kind 39382) qui déclare un espace collaboratif en listant les pubkeys des copropriétaires dans les tags &lt;code>p&lt;/code> et un kind d&amp;rsquo;événement cible dans un tag &lt;code>k&lt;/code>. Tout propriétaire listé peut publier des événements de ce kind avec le même tag &lt;code>d&lt;/code>, et les clients résolvent l&amp;rsquo;état actuel en interrogeant tous les propriétaires et en prenant l&amp;rsquo;événement le plus récent. L&amp;rsquo;attribution de co-auteur ne s&amp;rsquo;affiche que lorsqu&amp;rsquo;un tag &lt;code>a&lt;/code> vérifiable référence le pointeur et que l&amp;rsquo;auteur apparaît dans ses tags &lt;code>p&lt;/code>, empêchant les revendications usurpées. Cela permet des pages wiki partagées et des ressources co-écrites sans attribuer le contrôle à une seule paire de clés.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2234">NIP-09 : Suppression en cascade des reposts&lt;/a>&lt;/strong> (ouvert le 24 février) : Lorsqu&amp;rsquo;un auteur original supprime une note, les relays devraient également supprimer tout repost de kind 6 ou kind 16 le référençant. Motivé par des préoccupations de vie privée : les reposts peuvent préserver des informations accidentellement divulguées après que l&amp;rsquo;auteur supprime la source. Le changement est uniquement côté relay, ne nécessitant aucune modification des clients.&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> (ouvert le 23 février) : Ajoute une méthode &lt;code>peekPublicKey()&lt;/code> aux extensions de navigateur &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a>. Contrairement à &lt;code>getPublicKey()&lt;/code>, elle retourne la pubkey actuelle sans demander la confirmation de l&amp;rsquo;utilisateur, permettant la connexion automatique silencieuse lorsque l&amp;rsquo;utilisateur a activé la connexion automatique.&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> (ouvert le 28 février, brouillon) : Définit quatre kinds d&amp;rsquo;événements adressables (30300-30303) pour la publication structurée de livres sur Nostr. Un événement Cover contient les métadonnées racines incluant le titre, l&amp;rsquo;image de couverture, la licence via les labels &lt;a href="https://nostrcompass.org/fr/topics/nip-32/">NIP-32&lt;/a> (Labeling) et le code de langue. Un événement Index associe chaque chapitre à sa position en utilisant l&amp;rsquo;indexation fractionnelle base62, permettant aux auteurs d&amp;rsquo;insérer de nouveaux chapitres entre les existants sans renumérotation. Les événements Chapter agissent comme des en-têtes structurels avec des images optionnelles, tandis que les événements Episode portent la prose elle-même plafonnée à 30 000 caractères avec des tags d&amp;rsquo;images positionnés. Les critiques utilisent les Zaps sur les événements Cover avec la description du Zap comme texte de critique.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">NIP-54 : Passage d&amp;rsquo;Asciidoc à Djot&lt;/a>&lt;/strong> (ouvert le 26 février) : Suite au &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-31-newsletter/">correctif d&amp;rsquo;internationalisation du d-tag&lt;/a> en décembre, cette PR propose de remplacer le format de balisage Asciidoc du wiki &lt;a href="https://nostrcompass.org/fr/topics/nip-54/">NIP-54&lt;/a> par &lt;a href="https://djot.net/">Djot&lt;/a>, ajoutant une section de justification et des exemples de wikilinks pour les scripts non latins.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">NIP-66 : Mesures défensives&lt;/a>&lt;/strong> (ouvert le 26 février) : Basé sur les enseignements des benchmarks &lt;a href="https://nostrcompass.org/fr/newsletters/2026-03-04-newsletter/#le-mod%c3%a8le-outbox-sous-le-microscope">nostrability/outbox&lt;/a>, ajoute des avertissements explicites pour les cas limites de &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a>. Une &lt;a href="https://github.com/nostr-protocol/nips/pull/2241">PR #2241&lt;/a> compagnon définit des tags de sortie pour SSL, géolocalisation, réseau et vérifications de connectivité.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-C1 : Preuves d&amp;rsquo;identité cryptographiques&lt;/strong> (entrée wiki, kind 30817) : Propose des événements de kind 30509 qui lient cryptographiquement les certificats de signature APK aux profils Nostr. La preuve fonctionne en signant un message canonique contenant la pubkey Nostr avec la clé privée du certificat (supportant ECDSA, RSA PKCS1v15, Ed25519 et d&amp;rsquo;autres algorithmes standard), puis en publiant la signature dans un événement de kind 30509 signé avec la clé Nostr. Les vérificateurs peuvent confirmer que la personne contrôlant le certificat de signature d&amp;rsquo;une application Android contrôle aussi la pubkey Nostr revendiquant sa publication. Les preuves expirent après un an par défaut et peuvent être explicitement révoquées. Implémenté dans la chaîne d&amp;rsquo;outils &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-31402 : Registre SARA Revenue Share Offering&lt;/strong> (entrée wiki, kind 30817) : Définit des événements adressables de kind 31402 pour publier des offres Simple Autonomous Revenue Agreement (SARA) sur les relays Nostr. Les émetteurs annoncent des conditions de partage de revenus réglées par Lightning incluant le pourcentage de part de pool, le déclencheur de paiement, le seuil en sats, la durée du terme et la tarification par paliers. Les agents et les humains peuvent découvrir les offres à travers les relays et s&amp;rsquo;abonner de manière autonome sans plateforme centrale. Le numéro de kind reflète le kind 30402 (L402 Service Registry, publié par le même auteur comme entrée wiki compagnon) puisque SARA représente le volet retour de la relation de paiement L402.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="prs-ouvertes-et-mises-à-jour-de-projets">PRs ouvertes et mises à jour de projets&lt;/h2>
&lt;h3 id="damus--nip-89frtopicsnip-89-recommended-application-handlers">Damus : &lt;a href="https://nostrcompass.org/fr/topics/nip-89/">NIP-89&lt;/a> (Recommended Application Handlers)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3337">PR #3337&lt;/a> implémente le support du tag client NIP-89 pour &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>. L&amp;rsquo;application émet maintenant un tag client sur tous les chemins de publication (application principale, extension de partage, surligneur, brouillons) et affiche « via ClientName » à côté des horodatages lorsque d&amp;rsquo;autres applications incluent leurs tags. Un bouton Confidentialité dans les paramètres d&amp;rsquo;Apparence permet aux utilisateurs de désactiver l&amp;rsquo;émission du tag. &lt;a href="https://github.com/damus-io/damus/pull/3652">PR #3652&lt;/a> ajoute une section Stockage dans les Paramètres avec un graphique circulaire interactif détaillant l&amp;rsquo;utilisation disque du cache NostrDB et Kingfisher avec support d&amp;rsquo;export.&lt;/p>
&lt;p>Ouverte : &lt;a href="https://github.com/damus-io/damus/pull/3657">PR #3657&lt;/a> ajoute le repli de relay &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> pour les notes citées. Lorsqu&amp;rsquo;un &lt;code>nevent&lt;/code> en ligne inclut une pubkey d&amp;rsquo;auteur mais pas d&amp;rsquo;indices de relay et que la note est absente du pool de l&amp;rsquo;utilisateur, Damus récupère la liste de relays kind 10002 de l&amp;rsquo;auteur et réessaie depuis ses relays d&amp;rsquo;écriture.&lt;/p>
&lt;h3 id="amethyst--nip-39frtopicsnip-39-external-identities-nip-c0-nip-66frtopicsnip-66">Amethyst : &lt;a href="https://nostrcompass.org/fr/topics/nip-39/">NIP-39&lt;/a> (External Identities), NIP-C0, &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a>&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> a fusionné une vague d&amp;rsquo;implémentations NIP à travers 28 PRs. Les revendications d&amp;rsquo;identité externe se publient maintenant comme événements dédiés de kind 10011 sous &lt;a href="https://nostrcompass.org/fr/topics/nip-39/">NIP-39&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1747">PR #1747&lt;/a>), séparant l&amp;rsquo;identité sociale des métadonnées kind 0 avec repli rétrocompatible. Le support de fragments de code via NIP-C0 (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1744">PR #1744&lt;/a>) ajoute des événements de kind 1337 avec des accesseurs pour le langage, l&amp;rsquo;extension, l&amp;rsquo;environnement d&amp;rsquo;exécution, la licence et les dépendances. L&amp;rsquo;implémentation de monitoring de relays &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1742">PR #1742&lt;/a>) couvre les deux kinds d&amp;rsquo;événements avec analyse complète des tags pour les métriques RTT, le type de réseau, les NIPs supportés et le geohash.&lt;/p>
&lt;p>Les DMs chiffrés sont arrivés sur Amethyst Desktop (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1710">PR #1710&lt;/a>) avec une disposition de chat en panneau divisé supportant à la fois &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> (Encrypted Direct Messages) et &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages). Un nouvel écran de flux de relay (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1733">PR #1733&lt;/a>) permet aux utilisateurs de parcourir les publications d&amp;rsquo;un relay spécifique avec fonctionnalité d&amp;rsquo;abonnement/désabonnement. Ouverte : la vérification NIP-05 résistante à la censure (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a>) ajoute un chemin de vérification parallèle pour les identifiants &lt;code>.bit&lt;/code> qui se résout contre la blockchain Namecoin au lieu du HTTP DNS. Lorsqu&amp;rsquo;Amethyst détecte un suffixe &lt;code>.bit&lt;/code> dans un champ NIP-05, il interroge un serveur ElectrumX-NMC pour l&amp;rsquo;historique des transactions du nom, analyse le script &lt;code>NAME_UPDATE&lt;/code> depuis la dernière sortie pour extraire la pubkey Nostr, et rejette les noms plus anciens que 36 000 blocs (fenêtre d&amp;rsquo;expiration de Namecoin). Les connexions ElectrumX passent par SOCKS5 lorsque Tor est activé, avec sélection dynamique de serveurs entre les points de terminaison clearnet et &lt;code>.onion&lt;/code>. Un cache LRU avec un TTL d&amp;rsquo;une heure empêche les requêtes blockchain répétées.&lt;/p>
&lt;h3 id="notedeck--architecture-outbox">Notedeck : architecture outbox&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1303">PR #1303&lt;/a> migre &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> de la gestion ad-hoc de pool de relays vers un modèle outbox centralisé avec abonnements scopés par compte. Le module Messages publie maintenant une liste de relays DM par défaut si aucune n&amp;rsquo;existe et route les DMs vers les relays préférés des destinataires selon le kind 10050.&lt;/p>
&lt;h3 id="pika--profils-par-groupe-et-flux-de-tutoriels">Pika : profils par groupe et flux de tutoriels&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, l&amp;rsquo;application de messagerie chiffrée par Marmot disponible sur iOS et Android avec une version desktop, a gagné les profils par groupe (&lt;a href="https://github.com/sledtools/pika/pull/368">PR #368&lt;/a>). Les utilisateurs peuvent maintenant définir un nom d&amp;rsquo;affichage et une photo distincts pour chaque chat de groupe, ainsi qu&amp;rsquo;une biographie personnalisée. Ces profils se publient comme événements kind 0 chiffrés à l&amp;rsquo;intérieur du groupe Marmot, invisibles pour quiconque en dehors, avec repli sur le profil Nostr global de l&amp;rsquo;utilisateur lorsqu&amp;rsquo;aucun profil spécifique au groupe n&amp;rsquo;est défini. Lorsque de nouveaux membres rejoignent, l&amp;rsquo;administrateur rediffuse tous les profils de groupe stockés et chaque membre republie le sien lors du commit. Les photos de profil sont chiffrées en média Marmot avant le téléversement Blossom. La PR inclut 16 nouveaux tests unitaires et expose la fonctionnalité à la fois via une commande CLI (&lt;code>update-group-profile&lt;/code>) et l&amp;rsquo;UI.&lt;/p>
&lt;p>Une nouvelle application web &lt;code>pika-news&lt;/code> (&lt;a href="https://github.com/sledtools/pika/pull/401">PR #401&lt;/a>) surveille les PRs GitHub de Pika et génère automatiquement des guides tutoriels pas à pas à partir des diffs de PR, les publiant comme pages rendues côté serveur avec authentification &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a>. Les utilisateurs peuvent discuter de tutoriels spécifiques en temps réel via un chat authentifié par Nostr.&lt;/p>
&lt;h3 id="divine--widgets-intégrables-et-réponses-vidéo">diVine : widgets intégrables et réponses vidéo&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, la plateforme de partage vidéo native Nostr, a fusionné 132 PRs en dix jours. Les widgets iframe intégrables (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1843">PR #1843&lt;/a>) fournissent une page &lt;code>/embed?npub=...&lt;/code> autonome qui affiche le profil d&amp;rsquo;un utilisateur et ses dernières vidéos. La fonctionnalité de réponse vidéo (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1915">PR #1915&lt;/a>), contrôlée par un flag de fonctionnalité, utilise les commentaires Kind 1111 (&lt;a href="https://nostrcompass.org/fr/topics/nip-22/">NIP-22&lt;/a>) avec les métadonnées imeta &lt;a href="https://nostrcompass.org/fr/topics/nip-92/">NIP-92&lt;/a> (Media Attachments). Les filtres de contenu à trois voies inspirés de Bluesky (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1797">PR #1797&lt;/a>) offrent des contrôles Afficher/Avertir/Masquer sur 17 catégories d&amp;rsquo;avertissement de contenu &lt;a href="https://nostrcompass.org/fr/topics/nip-32/">NIP-32&lt;/a>.&lt;/p>
&lt;h3 id="strfry--validation-des-filtres-req">strfry : validation des filtres REQ&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry/pull/163">PR #163&lt;/a> ajoute la validation configurable des filtres REQ à &lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>, le relay Nostr C++. Les opérateurs peuvent définir le nombre maximum de filtres par REQ, la présence requise d&amp;rsquo;auteurs ou de tags, les listes blanches de kinds autorisés et les limites de kinds par filtre. La fonctionnalité cible les déploiements de relays NWC nécessitant une application stricte des filtres. Ouverte : &lt;a href="https://github.com/hoytech/strfry/pull/173">PR #173&lt;/a> ajoute la compression optionnelle zstd pour les charges utiles d&amp;rsquo;événements au moment de l&amp;rsquo;ingestion.&lt;/p>
&lt;h3 id="rust-nostr--nip-62frtopicsnip-62-request-to-vanish">rust-nostr : &lt;a href="https://nostrcompass.org/fr/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 bibliothèque Rust du protocole Nostr, a ajouté le support &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> (Request to Vanish) sur les trois backends de base de données : &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> et &lt;a href="https://github.com/rust-nostr/nostr/pull/1272">en mémoire&lt;/a>. L&amp;rsquo;implémentation LMDB inclut des options configurables pour activer ou désactiver l&amp;rsquo;application de &lt;a href="https://nostrcompass.org/fr/topics/nip-09/">NIP-09&lt;/a> et NIP-62 par déploiement.&lt;/p>
&lt;h3 id="ndk--événements-collaboratifs-et-timeout-nip-46">NDK : événements collaboratifs et timeout NIP-46&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a>, le Nostr Development Kit pour JavaScript/TypeScript, a fusionné &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/380">PR #380&lt;/a> introduisant &lt;code>NDKCollaborativeEvent&lt;/code> pour les documents collaboratifs multi-auteurs utilisant un événement pointeur adressable (kind 39382) qui définit les auteurs autorisés. Un timeout configurable pour &lt;code>NDKNip46Signer&lt;/code> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/381">PR #381&lt;/a>) empêche les opérations de signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> de rester bloquées indéfiniment lorsqu&amp;rsquo;un bunker ne répond pas.&lt;/p>
&lt;h3 id="tenex--catégorisation-dagents-et-filtrage-par-pubkey">TENEX : catégorisation d&amp;rsquo;agents et filtrage par pubkey&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, la plateforme d&amp;rsquo;orchestration d&amp;rsquo;agents IA native Nostr, a fusionné deux PRs liées à la sécurité. La catégorisation d&amp;rsquo;agents basée sur les rôles TIP-01 (&lt;a href="https://github.com/tenex-chat/tenex/pull/91">PR #91&lt;/a>) associe les catégories d&amp;rsquo;agents (principal, orchestrateur, travailleur, conseiller, auditeur) à des restrictions d&amp;rsquo;outils automatisées via une carte d&amp;rsquo;outils refusés. Le filtrage de pubkey en porte d&amp;rsquo;entrée (&lt;a href="https://github.com/tenex-chat/tenex/pull/87">PR #87&lt;/a>) garantit que seuls les événements provenant de pubkeys sur liste blanche ou signés par le backend sont routés aux côtés des agents connus ; les pubkeys inconnues sont silencieusement rejetées avec des spans OpenTelemetry pour l&amp;rsquo;audit.&lt;/p>
&lt;h3 id="zap-cooking--tableau-de-bord-dadhésion">Zap Cooking : tableau de bord d&amp;rsquo;adhésion&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>, la plateforme de partage de recettes basée sur Nostr, a fusionné 25 PRs et 85 commits en dix jours. Un tableau de bord d&amp;rsquo;adhésion (&lt;a href="https://github.com/zapcooking/frontend/pull/228">PR #228&lt;/a>) affiche le statut d&amp;rsquo;abonnement avec dates d&amp;rsquo;expiration et options de gestion/mise à niveau, réactive les portes de fonctionnalités pour les paliers Sous Chef et Zappy avec vérifications côté client et côté serveur, et standardise le nommage des paliers à travers 26 fichiers. Le chargement de messages de groupe en deux phases (&lt;a href="https://github.com/zapcooking/frontend/pull/227">PR #227&lt;/a>) fournit une récupération initiale rapide de 3 jours pour un affichage instantané suivie d&amp;rsquo;un remplissage en arrière-plan de 40 jours.&lt;/p>
&lt;p>Le stockage de mnémonique de portefeuille est passé du chiffrement dérivé de la pubkey au chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> vers soi-même (&lt;a href="https://github.com/zapcooking/frontend/pull/224">PR #224&lt;/a>), corrigeant une vulnérabilité où l&amp;rsquo;ancien schéma dérivait sa clé de &lt;code>SHA-256(pubkey)&lt;/code>, ce qui est effectivement non chiffré puisque les pubkeys sont publiques. Les portefeuilles existants sont silencieusement migrés au premier chargement. Le chat de groupe &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> a gagné des indicateurs de non-lu avec badges à point rouge et accès sur invitation uniquement avec codes d&amp;rsquo;invitation kind 9009 (&lt;a href="https://github.com/zapcooking/frontend/pull/213">PR #213&lt;/a>). Les aperçus de liens et les intégrations d&amp;rsquo;événements Nostr s&amp;rsquo;affichent maintenant dans les DMs et les messages de groupe (&lt;a href="https://github.com/zapcooking/frontend/pull/218">PR #218&lt;/a>). Une section de sauvegarde Nostr dans les Paramètres (&lt;a href="https://github.com/zapcooking/frontend/pull/210">PR #210&lt;/a>) stocke les abonnements et les listes de silence via le stockage chiffré &lt;a href="https://nostrcompass.org/fr/topics/nip-78/">NIP-78&lt;/a> (Application-specific Data) avec versionnage rotatif à 3 emplacements. Les performances au démarrage se sont améliorées grâce aux services de notification différés, au rendu DOM paresseux via IntersectionObserver (réduisant les nœuds DOM d&amp;rsquo;environ 15 000 à environ 3 000 sur un flux de 200 événements) et aux TTL de cache outbox étendus (&lt;a href="https://github.com/zapcooking/frontend/pull/208">PR #208&lt;/a>). Un modal d&amp;rsquo;impression de recette personnalisable (&lt;a href="https://github.com/zapcooking/frontend/pull/205">PR #205&lt;/a>) permet aux utilisateurs de basculer les sections à inclure avec un aperçu en direct. L&amp;rsquo;intégration du &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>) ajoute des garde-fous de vérification pour les requêtes POST et GET.&lt;/p>
&lt;h3 id="keep--migration-détat-pilotée-par-rust">Keep : migration d&amp;rsquo;état pilotée par Rust&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>, le gestionnaire de clés privées basé sur Nostr pour Android, a fusionné &lt;a href="https://github.com/privkeyio/keep-android/pull/178">PR #178&lt;/a>, supprimant quatre magasins de configuration Kotlin en faveur de l&amp;rsquo;état partagé piloté par Rust depuis la couche keep-mobile. Une boucle de polling de 10 secondes a été remplacée par un &lt;code>KeepStateCallback&lt;/code> push depuis Rust. &lt;a href="https://github.com/privkeyio/keep-android/pull/179">PR #179&lt;/a> ajoute la sauvegarde et la restauration chiffrées avec protection par phrase de passe.&lt;/p>
&lt;h3 id="mostro-mobile--chiffrement-du-chat-de-litige">Mostro Mobile : chiffrement du chat de litige&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, le client mobile pour la plateforme de trading Bitcoin P2P Mostro, a livré une migration en deux phases du chiffrement du chat de litige. La première étape (&lt;a href="https://github.com/MostroP2P/mobile/pull/495">PR #495&lt;/a>) passe de l&amp;rsquo;encapsulation spécifique à mostro au chiffrement à clé partagée dérivée de la pubkey de l&amp;rsquo;administrateur. S&amp;rsquo;appuyant sur cela, &lt;a href="https://github.com/MostroP2P/mobile/pull/501">PR #501&lt;/a> unifie le modèle de messages avec &lt;code>NostrEvent&lt;/code> et stocke les événements gift wrap chiffrés sur disque, cohérent avec le modèle de chat pair-à-pair. Un correctif de signature BIP-340 (&lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a>) surcharge la dépendance bip340 en 0.2.0, résolvant un bug de rembourrage &lt;code>bigToBytes()&lt;/code> qui causait 1-2 % de signatures Schnorr invalides et 100 % d&amp;rsquo;échecs pour les clés dont la clé publique commence par &lt;code>0x00&lt;/code>. Les Détails de commande affichent maintenant des libellés de statut lisibles au lieu de valeurs brutes du protocole, localisés en anglais, espagnol, italien et français (&lt;a href="https://github.com/MostroP2P/mobile/pull/502">PR #502&lt;/a>). HalCash a été ajouté et SEPA retiré comme méthode de paiement (&lt;a href="https://github.com/MostroP2P/mobile/pull/493">PR #493&lt;/a>), puisque les transferts SEPA peuvent dépasser 24 heures (SEPA Instant reste).&lt;/p>
&lt;p>Côté serveur, &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> a corrigé la restauration de session de litige pour inclure le champ initiateur (&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>) et ferme maintenant automatiquement les litiges actifs lorsqu&amp;rsquo;un vendeur libère les fonds, publiant un événement Nostr de règlement pour que les clients administrateurs voient la résolution (&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>).&lt;/p>
&lt;h2 id="cinq-ans-de-févriers-nostr">Cinq ans de févriers Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-28-newsletter/#five-years-of-nostr-januaries">La newsletter du mois dernier&lt;/a> a retracé les jalons de janvier de Nostr depuis les premiers développements jusqu&amp;rsquo;à l&amp;rsquo;explosion de Damus, puis l&amp;rsquo;infrastructure de sécurité en 2026. Cette rétrospective couvre ce qui s&amp;rsquo;est passé chaque février de 2021 à 2026.&lt;/p>
&lt;h3 id="février-2021--la-réécriture">Février 2021 : la réécriture&lt;/h3>
&lt;p>Trois mois après sa création, le février de Nostr a produit le changement précoce le plus déterminant du protocole. Les 14 et 15 février, fiatjaf &lt;a href="https://github.com/nostr-protocol/nostr/commit/33a1a70">a réécrit NIP-01&lt;/a>, remplaçant le format de message original par le modèle EVENT/REQ/CLOSE que le protocole utilise encore. Avant cette réécriture, les clients et relays communiquaient via une structure plus simple. La séparation de la publication d&amp;rsquo;événements (EVENT) de la gestion des abonnements (REQ/CLOSE) a permis le filtrage côté relay qui allait s&amp;rsquo;avérer essentiel pour le passage à l&amp;rsquo;échelle.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> est arrivé le même mois, ajoutant les messages directs chiffrés utilisant des secrets partagés dérivés de l&amp;rsquo;échange de clés Diffie-Hellman sur secp256k1. Son chiffrement était basique (AES-256-CBC) et serait plus tard remplacé par la cryptographie auditée de &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, mais il a donné à la poignée d&amp;rsquo;utilisateurs précoces leur premier canal de communication privée sur le protocole.&lt;/p>
&lt;p>L&amp;rsquo;outillage s&amp;rsquo;est élargi avec &lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a>, un client en ligne de commande Go pour l&amp;rsquo;interaction avec les relays depuis le terminal, et futurepaul a démarré &lt;a href="https://github.com/futurepaul/nostr-rs">nostr-rs&lt;/a>, une implémentation Rust précoce. Le réseau entier fonctionnait sur deux ou trois relays, coordonné via un &lt;a href="https://t.me/nostr_protocol">groupe Telegram&lt;/a>, avec environ sept contributeurs actifs.&lt;/p>
&lt;h3 id="février-2022--une-dynamique-croissante">Février 2022 : une dynamique croissante&lt;/h3>
&lt;p>Le &lt;a href="https://news.ycombinator.com/item?id=29749061">post Hacker News&lt;/a> du 31 décembre 2021 a continué d&amp;rsquo;attirer des développeurs en février. Le dépôt &lt;a href="https://github.com/nostr-protocol/nostr">nostr-protocol/nostr&lt;/a> (le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> formel n&amp;rsquo;existerait pas avant mai 2022) a reçu six pull requests en février, incluant NIP-13 (Proof of Work) de vinliao, NIP-14 (Reputation) de fiatjaf, NIP-15 (Resource Relations) de Cameri et &lt;a href="https://github.com/nostr-protocol/nostr/pull/75">NIP-17&lt;/a> (Git Updates Over Nostr) de melvincarvalho. Le numéro NIP a été ensuite réattribué à Private Direct Messages ; la collaboration git sur Nostr a continué séparément via ce qui est devenu &lt;a href="https://gitworkshop.dev">gitworkshop.dev&lt;/a>.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/scsibug/nostr-rs-relay">nostr-rs-relay&lt;/a> de Greg Heartsfield a été le cheval de bataille du mois avec 34 commits et trois versions. La version 0.5.0 du 12 février a ajouté les limites de publication pour les utilisateurs vérifiés &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a>. Les versions 0.5.1 et 0.5.2 ont suivi au cours des deux semaines suivantes, et le relay gérait la majeure partie du trafic du réseau à lui seul.&lt;/p>
&lt;p>Robert C. Martin (Uncle Bob) construisait &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>, un client desktop Clojure, enregistrant 69 commits entre le 18 janvier et la fin février. Son implication a attiré l&amp;rsquo;attention de la communauté élargie du génie logiciel. L&amp;rsquo;extension de navigateur &lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a> de fiatjaf a livré le support de déchiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> et les politiques de préférence de relay en février, implémentant l&amp;rsquo;interface &lt;code>window.nostr&lt;/code> (&lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a>) que les clients web utilisent encore pour la délégation de clés.&lt;/p>
&lt;p>&lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, encore le client web principal, a gagné l&amp;rsquo;enregistrement de gestionnaire de protocole &lt;code>web+nostr&lt;/code> le 13 février, une tentative précoce de liens profonds entre applications Nostr. &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> a renforcé la validation NIP-05. &lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a> a ajouté le support des DMs chiffrés NIP-04 et l&amp;rsquo;analyse NIP-12 (Generic Tag Queries) à travers 11 commits. Le réseau fonctionnait sur environ 7-15 relays avec une base d&amp;rsquo;utilisateurs actifs probablement dans les quelques centaines. Damus et Nostream n&amp;rsquo;existaient pas encore et n&amp;rsquo;apparaîtraient pas avant avril 2022.&lt;/p>
&lt;h3 id="février-2023--lattention-internationale">Février 2023 : l&amp;rsquo;attention internationale&lt;/h3>
&lt;p>Février 2023 a apporté à Nostr sa plus grande vague d&amp;rsquo;attention publique. &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, le client iOS de William Casarin, avait été &lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">approuvé sur l&amp;rsquo;App Store d&amp;rsquo;Apple le 31 janvier&lt;/a> après des rejets répétés. Le 1er février, il a atteint le top 10 aux États-Unis dans la catégorie Réseaux sociaux. Deux jours plus tard, le 2 février, &lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Apple a retiré Damus de l&amp;rsquo;App Store chinois&lt;/a> apparemment à la demande de l&amp;rsquo;Administration du cyberespace de Chine.&lt;/p>
&lt;p>Les grands médias incluant TechCrunch et CoinDesk ont couvert le retrait, amplifiant la notoriété de l&amp;rsquo;application et du protocole. Les clés publiques uniques avec métadonnées sur nostr.directory ont dépassé 300 000 le 3 février. Tous les relays étaient opérés par des passionnés payant de leur poche, et l&amp;rsquo;infrastructure s&amp;rsquo;est empressée de gérer la charge. Environ 289 relays étaient suivis début février, un nombre qui a continué de grimper.&lt;/p>
&lt;p>Le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> a enregistré 29 pull requests fusionnées ce mois-là, le plus haut total mensuel de l&amp;rsquo;histoire du protocole à ce moment. &lt;a href="https://github.com/nostr-protocol/nips/pull/224">NIP-57&lt;/a> (Lightning Zaps) et &lt;a href="https://github.com/nostr-protocol/nips/pull/220">NIP-23&lt;/a> (Long-form Content) ont tous deux été fusionnés le 13 février, ajoutant les micropaiements Bitcoin et étendant Nostr au-delà des publications courtes en une seule journée. &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> (Relay List Metadata) avait été fusionné une semaine plus tôt le 7 février, permettant le modèle outbox qui a suivi. &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (Nostr Connect) et &lt;a href="https://nostrcompass.org/fr/topics/nip-58/">NIP-58&lt;/a> (Badges) ont également été intégrés avant la fin du mois.&lt;/p>
&lt;p>La Human Rights Foundation &lt;a href="https://hrf.org/devfund2023q1">a accordé 50 000 $ à William Casarin pour le développement de Nostr et Damus&lt;/a> le 21 février, l&amp;rsquo;une des premières subventions institutionnelles à un projet Nostr. OpenSats n&amp;rsquo;avait pas encore lancé son fonds Nostr (cela viendrait en &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">juillet 2023&lt;/a>).&lt;/p>
&lt;h3 id="février-2024--la-durabilité-du-protocole">Février 2024 : la durabilité du protocole&lt;/h3>
&lt;p>Février 2024 a déplacé l&amp;rsquo;attention de la croissance vers la durabilité du protocole. &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (Private Direct Messages), ouvert depuis le mois de juillet précédent, travaillait vers un remplacement du vieillissant chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> en utilisant la cryptographie auditée de &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> et l&amp;rsquo;encapsulation gift wrap de &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a>. NIP-04 fuyait les métadonnées vers les opérateurs de relays, qui pouvaient voir les paires expéditeur-destinataire. NIP-17 masque l&amp;rsquo;identité de l&amp;rsquo;expéditeur derrière des paires de clés jetables et a été fusionné au printemps après un dernier tour de revue en mars.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> (Simple Groups) &lt;a href="https://github.com/nostr-protocol/nips/pull/566">a été fusionné le 28 février&lt;/a> après des mois de discussion, définissant comment les relays peuvent héberger des chats de groupe modérés avec rôles d&amp;rsquo;administrateur et contrôle d&amp;rsquo;accès. &lt;a href="https://nostrcompass.org/fr/topics/nip-92/">NIP-92&lt;/a> (tags imeta) a été fusionné le 1er février, standardisant comment les clients attachent les dimensions d&amp;rsquo;image et les aperçus blurhash aux événements médias.&lt;/p>
&lt;p>Le 16 février, le dépôt NIPs a ajouté &lt;a href="https://github.com/nostr-protocol/nips/commit/62c48eff">BREAKING.md&lt;/a>, un fichier suivant les changements rétro-incompatibles de la spécification du protocole. Sa création a reconnu que Nostr avait atteint un niveau de maturité où les changements cassants nécessitaient une documentation formelle.&lt;/p>
&lt;p>Vingt-deux pull requests ont été fusionnées ce mois-là. &lt;a href="https://github.com/cashubtc/npubcash-server">npub.cash&lt;/a> a été lancé comme service d&amp;rsquo;adresse Lightning permettant à n&amp;rsquo;importe quelle npub de recevoir des paiements sans faire tourner un serveur. Un &lt;a href="https://arxiv.org/abs/2402.05709">article académique&lt;/a> publié le 8 février a constaté que 95 % des relays gratuits ne pouvaient pas couvrir les coûts opérationnels par les dons, avec 35 % des relays payants facturant des frais d&amp;rsquo;admission inférieurs à 1 000 sats (environ 0,45 $ à l&amp;rsquo;époque).&lt;/p>
&lt;h3 id="février-2025--la-croissance-de-linfrastructure">Février 2025 : la croissance de l&amp;rsquo;infrastructure&lt;/h3>
&lt;p>Février 2025 a produit 28 pull requests fusionnées dans le dépôt NIPs. Un NIP &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">Right to Vanish&lt;/a> a été fusionné le 19 février, définissant comment les utilisateurs peuvent demander la suppression de leurs données aux relays en réponse aux questions réglementaires sur la portabilité des données et le contrôle utilisateur.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-60/">NIP-60&lt;/a> (Cashu Wallet) et NIP-61 (Nutzaps) ont reçu des mises à jour de simplification, rationalisant le format de stockage de jetons ecash. Un déploiement de q-tag (quote tag) s&amp;rsquo;est poursuivi à travers plusieurs NIPs, standardisant comment les événements référencent d&amp;rsquo;autres événements pour la citation et le threading.&lt;/p>
&lt;p>Les versions de clients ont marqué une progression régulière. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> v0.3.0 alpha a été livré le dernier jour de janvier, avec une adoption se poursuivant en février. Primal v2.1 a suivi le 7 février, et &lt;a href="https://github.com/0ceanSlim/grain">GRAIN&lt;/a> v0.3.0, une implémentation de relay en Go, est sorti le 21 février.&lt;/p>
&lt;p>NOSTRLDN v5 a réuni la communauté Nostr londonienne pour son cinquième meetup. Un pont DVMCP a connecté les Data Vending Machines de Nostr (&lt;a href="https://nostrcompass.org/fr/topics/nip-90/">NIP-90&lt;/a>) au Model Context Protocol, préfigurant le travail d&amp;rsquo;intégration d&amp;rsquo;agents IA arrivé le mois suivant.&lt;/p>
&lt;h3 id="février-2026--au-delà-des-réseaux-sociaux">Février 2026 : au-delà des réseaux sociaux&lt;/h3>
&lt;p>&lt;em>L&amp;rsquo;activité de février 2026 est tirée des numéros de Nostr Compass &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/">#8&lt;/a> à &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/">#11&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Février 2026 a produit la gamme la plus large de développement de couche applicative en un seul mois Nostr. &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> a livré sa &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/#mostro-ships-first-public-beta">première bêta publique&lt;/a> pour le trading Bitcoin pair-à-pair décentralisé, et &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> a atteint la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/#zapstore-v100">version 1.0 stable&lt;/a> après des mois en release candidate. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a> a livré la messagerie en temps réel chiffrée par &lt;a href="https://nostrcompass.org/fr/topics/mls/">Marmot&lt;/a> avec le support du signataire Amber et plus de 160 améliorations fusionnées.&lt;/p>
&lt;p>Des propositions concurrentes d&amp;rsquo;agents IA de pablof7z (NIP-AE pour les flux de travail d&amp;rsquo;agents, NIP-AD pour les annonces de serveurs MCP) et joelklabo (AI Agent Messages) sont arrivées aux côtés d&amp;rsquo;une &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#mises-%C3%A0-jour-des-nip">proposition de coordination d&amp;rsquo;agents DVM&lt;/a> étendant &lt;a href="https://nostrcompass.org/fr/topics/nip-90/">NIP-90&lt;/a>. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#contextvm-mcp-sur-nostr">ContextVM&lt;/a> a livré des améliorations du SDK connectant le Model Context Protocol au transport Nostr. &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#burrow-messagerie-mls-pour-agents-ia">Burrow&lt;/a> a ajouté la messagerie chiffrée par &lt;a href="https://nostrcompass.org/fr/topics/mls/">Marmot&lt;/a> pour les agents IA et les humains, étendant l&amp;rsquo;infrastructure d&amp;rsquo;identité et de relays de Nostr à la communication machine-à-machine.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#fips-r%C3%A9seau-maill%C3%A9-natif-nostr">FIPS&lt;/a> a livré une implémentation Rust fonctionnelle du réseau maillé natif Nostr, utilisant les paires de clés secp256k1 comme identités de nœuds avec un routage agnostique au transport sur UDP, Ethernet, Bluetooth ou radio LoRa. Sa conception a montré que le modèle de clés de Nostr s&amp;rsquo;étend au-delà des réseaux sociaux vers l&amp;rsquo;infrastructure de réseau physique.&lt;/p>
&lt;p>&lt;a href="https://opensats.org/blog/fifteenth-wave-of-nostr-grants">OpenSats a annoncé sa quinzième vague de subventions Nostr&lt;/a>, finançant des projets incluant ContextVM et Nostube. Les changements de protocole incluaient le support des factures en attente &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> pour Nostr Wallet Connect et le HyperLogLog &lt;a href="https://nostrcompass.org/fr/topics/nip-45/">NIP-45&lt;/a> (Counting Results) pour l&amp;rsquo;estimation de comptage côté relay. La découvrabilité de fournisseurs de services &lt;a href="https://nostrcompass.org/fr/topics/nip-85/">NIP-85&lt;/a> (Trusted Assertions) pour le scoring de &lt;a href="https://nostrcompass.org/fr/topics/web-of-trust/">Web of Trust&lt;/a> a également été fusionnée. &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> a commencé une refonte complète de l&amp;rsquo;API tandis que Nostria 3.0 et &lt;a href="https://github.com/FROSTR-ORG">Frostr&lt;/a> (iOS TestFlight) ont tous deux été livrés. La couche de cache local de &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> a traité la disponibilité des médias à travers les relays.&lt;/p>
&lt;h3 id="perspectives">Perspectives&lt;/h3>
&lt;p>Cinq févriers d&amp;rsquo;histoire du protocole montrent une progression constante du travail fondamental vers la diversification de la couche applicative, avec l&amp;rsquo;afflux d&amp;rsquo;utilisateurs de 2023 comme point de bascule. En 2021, sept contributeurs travaillaient sur trois relays. En 2026, le même protocole supportait le réseau maillé et des propositions d&amp;rsquo;agents autonomes fonctionnant sur une infrastructure de production.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ou avez des actualités à partager ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> DM&lt;/a> ou retrouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #11</title><link>https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a> apporte la messagerie en temps réel et le support du signataire Amber avec plus de 160 améliorations fusionnées. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a> corrige les problèmes de lecture vidéo et ajoute des événements de visionnage Kind 22236 pour les analyses des créateurs. &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> et &lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a> livrent des mises à jour. &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> livre une implémentation Rust fonctionnelle du réseau maillé natif Nostr. Notecrumbs reçoit des correctifs de stabilité pour les aperçus de liens damus.io. &lt;a href="https://contextvm.org">ContextVM&lt;/a> fait le pont entre Nostr et le Model Context Protocol. Parmi les nouveaux projets : &lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> pour la messagerie chiffrée MLS entre agents IA et humains, et &lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> pour le coffre-fort et la gestion d&amp;rsquo;identité dans le navigateur. Les approfondissements portent sur la signature Android NIP-55 et la synchronisation de portefeuille Cashu NIP-60.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a> apporte la messagerie en temps réel et le support du signataire Amber avec plus de 160 améliorations fusionnées. &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a> corrige les problèmes de lecture vidéo et ajoute des événements de visionnage Kind 22236 pour les analyses des créateurs. &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>, &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> et &lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a> livrent des mises à jour. &lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> livre une implémentation Rust fonctionnelle du réseau maillé natif Nostr. Notecrumbs reçoit des correctifs de stabilité pour les aperçus de liens damus.io. &lt;a href="https://contextvm.org">ContextVM&lt;/a> fait le pont entre Nostr et le Model Context Protocol. Parmi les nouveaux projets : &lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> pour la messagerie chiffrée MLS entre agents IA et humains, et &lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> pour le coffre-fort et la gestion d&amp;rsquo;identité dans le navigateur. Les approfondissements portent sur la signature Android NIP-55 et la synchronisation de portefeuille Cashu NIP-60.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="améliorations-de-stabilité-pour-notecrumbs">Améliorations de stabilité pour Notecrumbs&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs">Notecrumbs&lt;/a>, l&amp;rsquo;API Nostr et le serveur web qui alimente les aperçus de liens damus.io, a reçu une série de correctifs traitant des problèmes de fiabilité.&lt;/p>
&lt;p>Un &lt;a href="https://github.com/damus-io/notecrumbs/commit/3f201f63ea49">correctif de concurrence&lt;/a> a remplacé le mécanisme de déduplication des requêtes en vol par des canaux watch. Deux appelants demandant la même note pouvaient tous deux devenir récupérateurs, menant à un interblocage lorsque l&amp;rsquo;un terminait avant que l&amp;rsquo;autre ne s&amp;rsquo;abonne à la notification. Grâce aux canaux watch avec opérations atomiques, un seul récupérateur s&amp;rsquo;exécute tandis que les autres attendent le résultat.&lt;/p>
&lt;p>La &lt;a href="https://github.com/damus-io/notecrumbs/commit/b0d0bf5a2f17">limitation de débit&lt;/a> implémente une défense à deux niveaux contre le martèlement des relays. Lorsque les utilisateurs accèdent de manière répétée à la même note, le système débonde maintenant les requêtes aux relays avec une fenêtre de refroidissement de 5 minutes. Cette protection s&amp;rsquo;étend à tous les types &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> et aux flux de profils, empêchant le spam proportionnel vers les relays lors d&amp;rsquo;un trafic intense.&lt;/p>
&lt;p>Un ensemble d&amp;rsquo;&lt;a href="https://github.com/damus-io/notecrumbs/commit/38670b3972b6">améliorations de performance&lt;/a> a déplacé les récupérations de données secondaires vers des tâches tokio en arrière-plan. Désormais les pages se rendent instantanément avec des données en cache au lieu de bloquer sur des timeouts de relays séquentiels qui pouvaient s&amp;rsquo;additionner jusqu&amp;rsquo;à 7,5 secondes. Une mise à niveau vers nostrdb 0.10.0 a accompagné ces correctifs.&lt;/p>
&lt;h3 id="contextvm--mcp-sur-nostr">ContextVM : MCP sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a> est une suite d&amp;rsquo;outils faisant le pont entre Nostr et le &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> (MCP). De récents commits ont introduit la nouvelle spécification &lt;a href="https://docs.contextvm.org/spec/ceps/cep-8/">CEP-8&lt;/a> permettant les paiements, et ont fait avancer les améliorations du &lt;a href="https://github.com/ContextVM/sdk">SDK&lt;/a> tout au long de février.&lt;/p>
&lt;p>Le SDK fournit des transports client et serveur TypeScript pour MCP sur Nostr. Avec ce SDK, les développeurs peuvent exposer des serveurs MCP à travers le réseau Nostr et les clients peuvent s&amp;rsquo;y connecter. Agissant comme un bus de messages aveugle, les relays routent simplement les événements chiffrés de manière aveugle. Une couche proxy permet aux clients sans support Nostr natif de se connecter. La bibliothèque gère la gestion des relays et la signature cryptographique pour l&amp;rsquo;authentification des événements. Elle fonctionne dans les environnements Node.js et navigateur.&lt;/p>
&lt;p>&lt;a href="https://github.com/ContextVM/cvmi">CVMI&lt;/a> fournit une CLI pour la découverte de serveurs et l&amp;rsquo;invocation de méthodes. &lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a> calcule des scores de confiance personnalisés à partir de la distance du graphe social combinée à la validation de profil.&lt;/p>
&lt;p>ContextVM se positionne comme une couche de pont : les serveurs MCP existants gagnent l&amp;rsquo;interopérabilité Nostr tout en maintenant leurs transports conventionnels.&lt;/p>
&lt;h3 id="white-noise-documente-la-recherche-dutilisateurs-décentralisée">White Noise documente la recherche d&amp;rsquo;utilisateurs décentralisée&lt;/h3>
&lt;p>Un &lt;a href="https://blog.jgmontoya.com/2026/02/22/user-search.html">article de blog de jgmontoya&lt;/a> détaille comment &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a> gère la recherche d&amp;rsquo;utilisateurs à travers le réseau de relays décentralisé.&lt;/p>
&lt;p>La distribution de profils crée le défi : contrairement aux messageries centralisées avec des bases de données unifiées, les profils Nostr se dispersent sur des dizaines de relays sans index central. White Noise résout cela grâce à une architecture producteur-consommateur fonctionnant en parallèle.&lt;/p>
&lt;p>Un processus producteur étend continuellement le graphe social vers l&amp;rsquo;extérieur depuis les abonnements de l&amp;rsquo;utilisateur, récupérant les listes d&amp;rsquo;abonnements à des distances croissantes et mettant en file d&amp;rsquo;attente les pubkeys découvertes pour la résolution de profil. Le consommateur résout les correspondances à travers cinq niveaux de plus en plus coûteux : table d&amp;rsquo;utilisateurs locale (plus rapide), profils en cache de recherches précédentes, relays connectés, listes de relays utilisateur selon &lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> et requêtes directes vers les relays déclarés par l&amp;rsquo;utilisateur (plus lent).&lt;/p>
&lt;p>Prenant environ 3 secondes, les recherches à froid sont nettement plus lentes que les recherches chaudes depuis le cache qui descendent à environ 10 millisecondes. Pour les nouveaux utilisateurs sans graphes sociaux établis, le système injecte des nœuds d&amp;rsquo;amorçage bien connectés pour assurer la fonctionnalité de recherche. L&amp;rsquo;appartenance à un groupe fournit un signal social implicite aux côtés des abonnements explicites.&lt;/p>
&lt;p>L&amp;rsquo;instrumentation s&amp;rsquo;est avérée critical pour l&amp;rsquo;optimisation, note l&amp;rsquo;auteur. Sans métriques, les améliorations n&amp;rsquo;étaient que des suppositions.&lt;/p>
&lt;h3 id="fips--réseau-maillé-natif-nostr">FIPS : réseau maillé natif Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a> (Free Internetworking Peering System) est une implémentation Rust fonctionnelle d&amp;rsquo;un réseau maillé auto-organisé qui utilise les paires de clés Nostr (secp256k1) comme identités de nœuds. La &lt;a href="https://github.com/jmcorgan/fips/blob/master/docs/design/fips-intro.md">documentation de conception&lt;/a> accompagne le code fonctionnel.&lt;/p>
&lt;p>Le protocole répond à l&amp;rsquo;indépendance d&amp;rsquo;infrastructure : les nœuds se découvrent automatiquement sans serveurs centraux ni autorités de certification. Un arbre couvrant fournit un routage basé sur les coordonnées tandis que les filtres bloom propagent les informations d&amp;rsquo;accessibilité, permettant aux nœuds de prendre des décisions de transfert avec seulement une connaissance locale. Grâce à l&amp;rsquo;agnosticisme de transport, le même protocole fonctionne sur UDP, Ethernet, Bluetooth, radio LoRa ou tout support capable de datagrammes.&lt;/p>
&lt;p>Deux couches de chiffrement protègent le trafic. Pour la couche liaison, le chiffrement (pattern Noise IK) sécurise la communication saut par saut entre voisins avec authentification mutuelle et secret parfait de transmission. Au niveau session, le chiffrement (pattern Noise XK) fournit une protection de bout en bout contre les routeurs intermédiaires, où seule la destination peut déchiffrer la charge utile. Cela reflète la façon dont TLS protège le trafic HTTP même lors de la traversée de réseaux non fiables.&lt;/p>
&lt;p>Utilisant un arbre couvrant greedy embedding pour le routage, l&amp;rsquo;architecture attribue à chaque nœud des coordonnées basées sur sa position par rapport à la racine de l&amp;rsquo;arbre et au parent. Routant de manière avide vers les coordonnées plus proches de la destination, les paquets bénéficient de filtres bloom annonçant les points d&amp;rsquo;accès accessibles. Lorsque le routage avide échoue (minima locaux), les nœuds peuvent se rabattre sur des chemins basés sur l&amp;rsquo;arbre.&lt;/p>
&lt;p>Incluant déjà le transport UDP avec découverte par filtre bloom, l&amp;rsquo;implémentation Rust progresse rapidement. Le travail futur cible l&amp;rsquo;intégration de relays Nostr pour l&amp;rsquo;amorçage de pairs.&lt;/p>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;p>Cette semaine a apporté des versions à travers l&amp;rsquo;infrastructure de relays et les applications clientes, avec de nouveaux projets entrant également dans l&amp;rsquo;espace.&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>, le relay personnel tout-en-un regroupant quatre fonctions de relay avec un serveur média &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>, a livré &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0">v1.2.0&lt;/a>. Cette version va au-delà du stade RC &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/#haven-v120-rc3">couvert la semaine dernière&lt;/a>.&lt;/p>
&lt;p>Le support multi-npub permet à une seule instance HAVEN de servir plusieurs identités Nostr via whitelisting, avec une nouvelle fonctionnalité de blacklisting pour le contrôle d&amp;rsquo;accès. Réécrit entièrement, un système de sauvegarde utilise le format JSONL portable, avec une commande &lt;code>haven restore&lt;/code> pour importer des notes depuis des fichiers JSONL. L&amp;rsquo;intégration de stockage cloud ajoute les flags &lt;code>--to-cloud&lt;/code> et &lt;code>--from-cloud&lt;/code> pour la gestion des sauvegardes distantes.&lt;/p>
&lt;p>Parmi les améliorations de &lt;a href="https://nostrcompass.org/fr/topics/web-of-trust/">Web of Trust&lt;/a> : des niveaux de profondeur configurables pour les calculs de confiance et des intervalles de rafraîchissement automatique de 24 heures avec optimisation sans verrou réduisant la surcharge mémoire. Complétant la version, la configuration de user-agent pour les requêtes de relays et les paramètres de timeout Blastr configurables s&amp;rsquo;ajoutent à l&amp;rsquo;exportation de données vers JSONL compressé.&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;application de messagerie chiffrée basée sur &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> implémentant le protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, a livré &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">v0.3.0&lt;/a> avec plus de 160 améliorations fusionnées.&lt;/p>
&lt;p>Cette version apporte la messagerie en temps réel via des connexions en streaming au lieu du polling, de sorte que les messages arrivent instantanément. Avec le support Amber (&lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>), les clés privées n&amp;rsquo;ont jamais besoin de toucher l&amp;rsquo;application. Fonctionnant maintenant avec suivi de la progression du téléversement et des emplacements réservés blurhash lors du chargement, le partage d&amp;rsquo;images s&amp;rsquo;améliore grandement. L&amp;rsquo;affichage plein écran supporte le pincement pour zoomer.&lt;/p>
&lt;p>Recevant des améliorations de fiabilité avec des listes de conversations montrant les noms d&amp;rsquo;expéditeur et le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> assurant le secret parfait de transmission, la messagerie de groupe progresse également. S&amp;rsquo;étendant vers l&amp;rsquo;extérieur depuis les abonnements jusqu&amp;rsquo;à quatre degrés de séparation avec des résultats en streaming au fur et à mesure de leur découverte, la recherche d&amp;rsquo;utilisateurs devient plus puissante.&lt;/p>
&lt;p>Un changement cassant réinitialise toutes les données locales lors de la mise à niveau en raison des changements du protocole Marmot et du passage au stockage local chiffré. Avant de mettre à niveau, sauvegardez vos clés nsec.&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>, le client vidéo courte en boucle construit sur les archives Vine restaurées, a livré &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">1.0.5&lt;/a> avec d&amp;rsquo;importants correctifs de lecture vidéo et un nouveau système d&amp;rsquo;analyse décentralisé.&lt;/p>
&lt;p>Plusieurs problèmes de lecture vidéo ont dominé les correctifs. Pause fantôme résolue. Audio double entre vidéos éliminé. Flash noir entre miniatures et premières frames corrigé. Crashs de lecteur disposé tous résolus. Gérant maintenant le flux Home pour une lecture cohérente, un lecteur vidéo poolé remplace l&amp;rsquo;ancien système.&lt;/p>
&lt;p>Permettant les analyses de créateurs et les recommandations, la version introduit des événements de visionnage éphémères Kind 22236. Suivant les sources de trafic (accueil, variantes de découverte, profil, partage, recherche) et les comptages de boucles tout en filtrant les auto-vues, le système fournit des métriques utiles. Corrigées avec des URLs Blossom canoniques construites côté client selon la spécification BUD-01, les fuites de chemins de fichiers locaux dans les tags imeta d&amp;rsquo;événements Nostr disparaissent.&lt;/p>
&lt;p>Côté signataire distant &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>, plusieurs améliorations arrivent. Connexions de relays parallélisées implémentées. Support d&amp;rsquo;URL de rappel ajouté. Reconnectant les connexions WebSocket lors de la reprise de l&amp;rsquo;application après approbation du signataire, Android fonctionne mieux.&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>, le client Nostr web axé sur la gestion de relays et la modération par &lt;a href="https://nostrcompass.org/fr/topics/web-of-trust/">Web of Trust&lt;/a>, a livré &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.30">0.6.30&lt;/a> avec support des miniatures vidéo, améliorant la navigation média dans les flux.&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>, le client Nostr iOS, a livré &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.26.0">v1.26.0&lt;/a> avec une nouvelle section de flux Live Streams et un écran Paramètres repensé. Pouvant maintenant être hébergés sur des serveurs média Blossom, les GIFs réduisent la dépendance aux services centralisés. Fournissant une sauvegarde lorsque Tenor devient indisponible, l&amp;rsquo;intégration de GIFs Klipy aide. Complétant les changements visibles par l&amp;rsquo;utilisateur, des en-têtes d&amp;rsquo;année dans les conversations DM et l&amp;rsquo;affichage du comptage de mentions s&amp;rsquo;ajoutent.&lt;/p>
&lt;p>Cette semaine a également apporté des mises à jour pour les outils de développement et les applications CLI.&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>, le couteau suisse en ligne de commande pour Nostr de fiatjaf, a livré &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.5">v0.18.5&lt;/a> avec une nouvelle sous-commande &lt;code>nak profile&lt;/code> pour récupérer et afficher les profils utilisateur. Supportant maintenant les noms &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a> dans les URIs &lt;code>nostr://&lt;/code>, la commande &lt;code>git clone&lt;/code> permet le clonage de dépôts par identifiants lisibles par l&amp;rsquo;humain.&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>, la messagerie chiffrée &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> pour iOS, Android et desktop construite sur le protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, a livré &lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v0.5.3">v0.5.3&lt;/a>. Ajoutant le téléversement de fichiers et le support de glisser-déposer de médias à l&amp;rsquo;application desktop, aux côtés des correctifs de déploiement Cloudflare Workers, les commits récents améliorent l&amp;rsquo;expérience.&lt;/p>
&lt;p>Utilisant un noyau Rust qui possède toute la logique métier tandis qu&amp;rsquo;iOS (SwiftUI) et Android (Kotlin) agissent comme des couches UI fines rendant des instantanés d&amp;rsquo;état, Pika adopte une architecture claire. Fournissant l&amp;rsquo;implémentation MLS, MDK (Marmot Development Kit) sert de base. Notant un statut alpha et mettant en garde contre l&amp;rsquo;utilisation pour des charges de travail sensibles, le projet reste expérimental.&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 plateforme de covoiturage décentralisée avec paiements Cashu, a livré &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.6">v0.2.6&lt;/a>. Corrigeant des problèmes d&amp;rsquo;accessibilité TalkBack et résolvant des bugs où les conducteurs disparaissaient de la liste à proximité lors du changement de méthodes de paiement ou où les comptages de conducteurs sélectionnés ne se mettaient pas à jour lorsque les conducteurs passaient hors ligne, cette version améliore la stabilité.&lt;/p>
&lt;p>Devenant Broadcast RoadFlare avec des correctifs pour les échecs silencieux sur les installations de conducteurs fraîches, la fonctionnalité Send to All évolue. Implémentant l&amp;rsquo;escrow HTLC pour les paiements de trajet sans confiance et la synchronisation de portefeuille &lt;a href="https://nostrcompass.org/fr/topics/nip-60/">NIP-60&lt;/a> sur les appareils, Ridestr progresse techniquement.&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;application de partage de photos de type Instagram pour Android, a livré &lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.6">v1.0.6&lt;/a> avec recherche d&amp;rsquo;utilisateurs améliorée et reconnexion automatique de relay toutes les 60 secondes.&lt;/p>
&lt;p>Construit avec Kotlin et Jetpack Compose, Unfiltered utilise des liaisons rust-nostr et des serveurs compatibles Blossom pour l&amp;rsquo;hébergement d&amp;rsquo;images. Gérant la gestion sécurisée des clés, l&amp;rsquo;intégration Amber (&lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>) protège les utilisateurs. Montrant les publications des comptes suivis en ordre chronologique sans algorithmes ni publicités, l&amp;rsquo;application reste fidèle à l&amp;rsquo;esprit Nostr.&lt;/p>
&lt;p>Deux nouveaux projets de messagerie et de signature ont également été lancés cette semaine.&lt;/p>
&lt;h3 id="burrow--messagerie-mls-pour-agents-ia">Burrow : messagerie MLS pour agents IA&lt;/h3>
&lt;p>&lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a> est une messagerie implémentant le protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> pour la communication chiffrée MLS sans numéros de téléphone ni serveurs centralisés. Humains et agents IA peuvent tous participer.&lt;/p>
&lt;p>Gérant l&amp;rsquo;intégration avec les systèmes automatisés, un daemon CLI Rust pur avec mode de sortie JSONL sert les besoins programmatiques. Couvrant Android, iOS, Linux, macOS et Windows, une application Flutter multiplateforme sert les utilisateurs humains. Chiffrant aux côtés des messages, les pièces jointes média restent protégées, et WebRTC gère les appels audio et vidéo avec des serveurs TURN configurables.&lt;/p>
&lt;p>Superposant le chiffrement MLS sur l&amp;rsquo;infrastructure Nostr, Burrow utilise des paires de clés Nostr (secp256k1) pour l&amp;rsquo;identité tandis que les KeyPackages MLS publient comme événements kind 443. Pour les messages, le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> produit des événements kind 445. Utilisant le gift-wrapping &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a>, les invitations de bienvenue protègent les métadonnées.&lt;/p>
&lt;p>Permettant la participation d&amp;rsquo;agents IA avec accès complet aux outils, l&amp;rsquo;intégration &lt;a href="https://openclaw.ai">OpenClaw&lt;/a> ouvre de nouvelles possibilités. Gérant les permissions de contacts et de groupes avec journalisation d&amp;rsquo;audit, les listes de contrôle d&amp;rsquo;accès assurent la sécurité. Positionnant Burrow pour les scénarios de messagerie agent-à-agent et agent-à-humain nécessitant un chiffrement de niveau Signal sur une infrastructure décentralisée, cette combinaison de fonctionnalités est puissante.&lt;/p>
&lt;h3 id="extension-nostria-signer">Extension Nostria Signer&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a> est une extension de navigateur basée sur Chromium fournissant un coffre-fort et une gestion d&amp;rsquo;identité pour les utilisateurs Nostr.&lt;/p>
&lt;p>Permettant aux utilisateurs d&amp;rsquo;organiser les identités pour différents contextes, plusieurs coffres contenant plusieurs comptes offrent de la flexibilité. Incluant le support des langues RTL, l&amp;rsquo;internationalisation est complète. Fonctionnant à la fois comme extension de navigateur et Progressive Web App, la construction avec Angular et TypeScript (79,2 % de la base de code) assure une bonne maintenabilité.&lt;/p>
&lt;p>Implémentant &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a> pour la signature d&amp;rsquo;extension de navigateur, Nostria Signer permet aux clients Nostr web de demander des signatures d&amp;rsquo;événements sans accéder directement aux clés privées. Gérant les mises à jour distribuées via le Chrome Web Store, la migration automatique de portefeuille facilite la vie des utilisateurs. Restant également possible pour les utilisateurs avancés, le chargement depuis le dossier &lt;code>dist/extension&lt;/code> offre une alternative.&lt;/p>
&lt;p>Soulignant le statut expérimental, les développeurs insistent : les utilisateurs doivent gérer leurs propres phrases de récupération secrètes puisque les développeurs ne peuvent pas restaurer l&amp;rsquo;accès aux clés perdues.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&lt;/h2>
&lt;h3 id="formstr-migre-vers-une-nouvelle-organisation">Formstr migre vers une nouvelle organisation&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;alternative à Google Forms sur Nostr, a migré son dépôt de &lt;code>abh3po/nostr-forms&lt;/code> vers l&amp;rsquo;organisation &lt;code>formstr-hq&lt;/code>. Continuant le développement au nouvel emplacement, ce bénéficiaire de subvention OpenSats progresse.&lt;/p>
&lt;h3 id="prs-ouvertes-notables">PRs ouvertes notables&lt;/h3>
&lt;p>Travail en cours à travers les projets Nostr :&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Modèle Outbox Damus&lt;/strong> (&lt;a href="https://github.com/damus-io/damus/pull/3602">PR #3602&lt;/a>) : Plan d&amp;rsquo;implémentation pour le modèle de relay gossip/outbox sur iOS. Améliorant la livraison de messages en publiant vers les relays où les destinataires lisent réellement, ce changement architectural est significatif.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Notifications multiplateforme Notedeck&lt;/strong> (&lt;a href="https://github.com/damus-io/notedeck/pull/1296">PR #1296&lt;/a>) : Système de notifications natif pour le client desktop Damus couvrant Android FCM, macOS et Linux.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Mise à niveau Cashu v3 NDK&lt;/strong> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/370">PR #370&lt;/a>) : Met à jour l&amp;rsquo;intégration de portefeuille du Nostr Development Kit vers 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>) : Envoi et réception d&amp;rsquo;ecash hors ligne pour le portefeuille Lightning Zeus.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Livraison numérique chiffrée Shopstr&lt;/strong> (&lt;a href="https://github.com/shopstr-eng/shopstr/pull/231">PR #231&lt;/a>) : Ajoute la livraison chiffrée pour les biens numériques avec support de poids dynamique pour les articles physiques.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés cette semaine :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">Découvrabilité du fournisseur de services NIP-85&lt;/a>&lt;/strong> : Incluant maintenant des conseils sur la façon dont les clients découvrent les fournisseurs d&amp;rsquo;assertions de confiance, la spécification &lt;a href="https://nostrcompass.org/fr/topics/nip-85/">NIP-85&lt;/a> s&amp;rsquo;améliore. Lorsqu&amp;rsquo;un client a besoin de scores de &lt;a href="https://nostrcompass.org/fr/topics/web-of-trust/">Web of Trust&lt;/a> ou d&amp;rsquo;autres métriques calculées, il peut interroger les relays pour les annonces kind 30085 des fournisseurs que l&amp;rsquo;utilisateur suit déjà ou en qui il a confiance.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2229">NIP-29 supprime les groupes non gérés&lt;/a>&lt;/strong> : Abandonnant le support des groupes non gérés (où tout membre pouvait ajouter d&amp;rsquo;autres), la spécification de chat de groupe &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> se simplifie. Nécessitant maintenant une gestion côté relay avec des rôles d&amp;rsquo;administrateur explicites, tous les groupes NIP-29 deviennent plus contrôlables. Simplifiant les implémentations et réduisant les vecteurs de spam, ce changement améliore la sécurité.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2231">NIP-11 supprime les champs dépréciés&lt;/a>&lt;/strong> : N&amp;rsquo;incluant plus les champs dépréciés &lt;code>software&lt;/code> et &lt;code>version&lt;/code>, les documents d&amp;rsquo;information de relay &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> se nettoient. Devant retirer ceux-ci de leurs réponses, les implémentations s&amp;rsquo;alignent.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2227">NIP-39 déplace les tags d&amp;rsquo;identité&lt;/a>&lt;/strong> : Déplacées des profils kind 0 vers des événements dédiés kind 30382, les revendications d&amp;rsquo;identité externe (tags &lt;code>i&lt;/code> &lt;a href="https://nostrcompass.org/fr/topics/nip-39/">NIP-39&lt;/a> pour GitHub, Twitter, etc.) changent d&amp;rsquo;emplacement. Séparant la vérification d&amp;rsquo;identité des métadonnées de profil, ce changement clarifie les responsabilités.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Progression des NIP d&amp;rsquo;agents IA :&lt;/strong>&lt;/p>
&lt;p>Continuant un développement actif, quatre NIP axés sur l&amp;rsquo;IA progressent. Depuis &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/#ai-agent-nips-arrive">la couverture de la semaine dernière&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> (mis à jour le 19 février) : Définissant l&amp;rsquo;identité d&amp;rsquo;agent avec kind 4199 pour les définitions d&amp;rsquo;agent et kind 4201 pour le prompting (nudges), cette spec structure les agents. Pouvant référencer des métadonnées de fichier &lt;a href="https://nostrcompass.org/fr/topics/nip-94/">NIP-94&lt;/a> pour des descriptions étendues, les agents gagnent en expressivité.&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> (mis à jour le 18 février) : Standardisant la messagerie conversationnelle avec sept kinds d&amp;rsquo;événements éphémères (25800-25806) pour le statut, les deltas en streaming, les prompts, les réponses, les appels d&amp;rsquo;outils, les erreurs et l&amp;rsquo;annulation, cette spec couvre beaucoup. Permettant aux agents d&amp;rsquo;annoncer les modèles et capacités supportés, les événements AI Info kind 31340 facilitent la découverte.&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> (ouvert le 18 février) : Étendant &lt;a href="https://nostrcompass.org/fr/topics/nip-90/">NIP-90&lt;/a> pour les flux de travail d&amp;rsquo;agents autonomes, cette proposition ajoute beaucoup. Heartbeats pour la découverte d&amp;rsquo;agents. Revues de tâches pour le suivi de qualité. Escrow de données pour l&amp;rsquo;engagement de résultats. Chaînes de flux de travail pour les pipelines multi-étapes. Enchère en essaim pour la sélection de fournisseurs compétitifs. Fonctionnant sur 2020117.xyz, une implémentation de référence existe.&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> (ouvert le 12 février) : Standardisant l&amp;rsquo;annonce de serveurs Model Context Protocol et de compétences sur Nostr, cette spec trouve déjà un usage. Déjà utilisée sur la plateforme TENEX, l&amp;rsquo;adoption commence.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Autres PRs ouvertes :&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> : Définissant comment les clients prouvent l&amp;rsquo;identité et les permissions aux fournisseurs de services sur Nostr, cette spec aborde l&amp;rsquo;autorisation.&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> : Proposant d&amp;rsquo;intégrer Webxdc (applications web décentralisées) avec les événements Nostr, alexgleason explore de nouvelles directions.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="approfondissement-nip--nip-55-android-signer-application">Approfondissement NIP : NIP-55 (Android Signer Application)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/55.md">NIP-55&lt;/a> définit comment les clients Nostr Android demandent des opérations cryptographiques à des applications de signature dédiées. Ajoutant tous deux le support Amber cette semaine, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a> et &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered v1.0.6&lt;/a> justifient un examen du protocole de signature Android.&lt;/p>
&lt;p>&lt;strong>Canaux de communication :&lt;/strong>&lt;/p>
&lt;p>Permettant la signature inter-applications via deux mécanismes, NIP-55 offre de la flexibilité. Fournissant une approbation manuelle de l&amp;rsquo;utilisateur avec feedback visuel pour les opérations ponctuelles, les Intents conviennent aux actions explicites. Permettant la signature automatisée lorsque les utilisateurs accordent des permissions persistantes, les Content Resolvers autorisent les applications à signer en arrière-plan sans invites répétées.&lt;/p>
&lt;p>Utilisant le schéma URI personnalisé &lt;code>nostrsigner:&lt;/code>, la communication reste simple. Un client initie le contact avec :&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>Opérations supportées :&lt;/strong>&lt;/p>
&lt;p>La spec définit sept méthodes cryptographiques. Signature d&amp;rsquo;événement (&lt;code>sign_event&lt;/code>). Récupération de clé publique (&lt;code>get_public_key&lt;/code>). Opérations de chiffrement et déchiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a>. Opérations de chiffrement et déchiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>. Déchiffrement d&amp;rsquo;événement zap (&lt;code>decrypt_zap_event&lt;/code>).&lt;/p>
&lt;p>&lt;strong>Modèle de permissions :&lt;/strong>&lt;/p>
&lt;p>Appelant &lt;code>get_public_key&lt;/code> une fois pour établir une relation de confiance, les clients reçoivent le nom de paquet du signataire et la pubkey de l&amp;rsquo;utilisateur. Imposant que les clients sauvegardent ces valeurs et n&amp;rsquo;appellent jamais &lt;code>get_public_key&lt;/code> à nouveau, la spec empêche les attaques de fingerprinting.&lt;/p>
&lt;p>Pouvant approuver une fois ou accorder se souvenir de mon choix pour les opérations en arrière-plan, les utilisateurs contrôlent les permissions pour les requêtes de signature. Retournant un statut rejected et empêchant les invites répétées si les utilisateurs rejettent systématiquement les opérations, le signataire protège l&amp;rsquo;expérience utilisateur.&lt;/p>
&lt;p>&lt;strong>Implémentations :&lt;/strong>&lt;/p>
&lt;p>Servant de signataire NIP-55 principal pour Android, &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a> domine. Parmi les clients supportant NIP-55 : &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise&lt;/a>, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered&lt;/a> et d&amp;rsquo;autres. Ne pouvant pas recevoir directement les réponses du signataire et devant utiliser des URLs de rappel ou des opérations de presse-papiers, les applications web ont des contraintes.&lt;/p>
&lt;p>&lt;strong>Relation avec d&amp;rsquo;autres NIP de signature :&lt;/strong>&lt;/p>
&lt;p>Complétant &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a> (extensions de navigateur) et &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (signature à distance sur relays), NIP-55 s&amp;rsquo;intègre dans un écosystème. Là où NIP-07 gère les navigateurs de bureau et NIP-46 gère la signature inter-appareils, NIP-55 fournit une intégration Android native avec latence minimale.&lt;/p>
&lt;h2 id="approfondissement-nip--nip-60-cashu-wallet">Approfondissement NIP : NIP-60 (Cashu Wallet)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/60.md">NIP-60&lt;/a> définit comment les portefeuilles ecash &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> stockent l&amp;rsquo;état sur les relays Nostr, permettant la synchronisation de portefeuille inter-applications. Utilisant NIP-60 pour la synchronisation de portefeuille sur les appareils, &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr v0.2.6&lt;/a> justifie un examen du protocole.&lt;/p>
&lt;p>&lt;strong>Kinds d&amp;rsquo;événements :&lt;/strong>&lt;/p>
&lt;p>Utilisant quatre types d&amp;rsquo;événements, NIP-60 structure l&amp;rsquo;état du portefeuille. Stockant la configuration du portefeuille incluant les URLs de mint et une clé privée dédiée pour recevoir les paiements ecash P2PK, le kind remplaçable 17375 contient les paramètres essentiels. Contenant des preuves cryptographiques non dépensées, les événements de jetons (kind 7375) gardent les fonds. Enregistrant les transactions pour la transparence de l&amp;rsquo;utilisateur, l&amp;rsquo;historique de dépenses (kind 7376) aide au suivi. Suivant les quotes de paiement de mint, un kind optionnel 7374 complète l&amp;rsquo;ensemble.&lt;/p>
&lt;p>&lt;strong>Architecture du portefeuille :&lt;/strong>&lt;/p>
&lt;p>Vivant sur les relays et le rendant accessible à travers les applications, l&amp;rsquo;état du portefeuille se décentralise. Contenant des références chiffrées aux mints Cashu et une clé privée spécifique au portefeuille séparée de l&amp;rsquo;identité Nostr de l&amp;rsquo;utilisateur, l&amp;rsquo;événement de portefeuille d&amp;rsquo;un utilisateur sépare les préoccupations. Gérant les opérations ecash tandis que la clé Nostr gère les fonctions sociales, cette séparation de la clé de portefeuille compte.&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>Gestion des preuves :&lt;/strong>&lt;/p>
&lt;p>Étant des instruments au porteur qui deviennent invalides une fois dépensés, les preuves Cashu nécessitent une gestion soigneuse. Gérant cela via un mécanisme de roulement, NIP-60 maintient la cohérence. Lors de la dépense, les clients créent un nouvel événement de jeton avec les preuves non dépensées restantes et suppriment l&amp;rsquo;original via &lt;a href="https://nostrcompass.org/fr/topics/nip-09/">NIP-09&lt;/a>. Allant dans un champ &lt;code>del&lt;/code> pour le suivi d&amp;rsquo;état, les IDs de jetons détruits restent traçables.&lt;/p>
&lt;p>Devant périodiquement valider les preuves contre les mints pour détecter les credentials précédemment dépensés, les clients maintiennent la sécurité. Étant permis avec plusieurs événements de jetons par mint, la flexibilité existe. Aidant les utilisateurs à suivre les transactions même s&amp;rsquo;ils sont optionnels, les événements d&amp;rsquo;historique de dépenses améliorent l&amp;rsquo;expérience.&lt;/p>
&lt;p>&lt;strong>Modèle de sécurité :&lt;/strong>&lt;/p>
&lt;p>Utilisant le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, toutes les données sensibles restent protégées. N&amp;rsquo;apparaissant jamais en clair, la clé privée du portefeuille demeure secrète. Stockant des blobs chiffrés sans comprendre leurs contenus, les relays ne peuvent pas violer la vie privée. Restant privé même sur des relays non fiables, l&amp;rsquo;état du portefeuille bénéficie d&amp;rsquo;une architecture zero-knowledge.&lt;/p>
&lt;p>&lt;strong>Implémentations :&lt;/strong>&lt;/p>
&lt;p>Supportant NIP-60, plusieurs portefeuilles adoptent le standard. &lt;a href="https://github.com/gandlafbtc/nutsack">Nutsack&lt;/a> implémente. &lt;a href="https://github.com/cashubtc/eNuts">eNuts&lt;/a> également. Utilisant NIP-60 pour la synchronisation inter-appareils et permettant aux utilisateurs de recharger sur desktop et de dépenser depuis mobile sans transferts manuels, les clients comme &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr&lt;/a> démontrent la valeur.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ou avez des actualités à partager ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> DM&lt;/a> ou retrouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #10</title><link>https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Une couche de cache local Blossom prend forme à mesure que des projets indépendants convergent vers l&amp;rsquo;accès hors ligne aux médias sur Android. Alby lance un &lt;a href="https://sandbox.albylabs.com">bac à sable NWC pour développeurs&lt;/a> permettant de construire et tester des intégrations Nostr Wallet Connect sans risquer de vrais fonds. Des propositions concurrentes pour la communication d&amp;rsquo;agents IA sur Nostr arrivent la même semaine de deux auteurs différents. fiatjaf supprime les champs inutilisés de &lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>, retirant les politiques de rétention, codes pays, politiques de confidentialité et tags de préférence communautaire que les opérateurs de relay n&amp;rsquo;ont jamais adoptés. &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a> fusionne les conseils de découverte de fournisseurs de services pour les Trusted Assertions. Un nouveau tag &lt;code>D&lt;/code> dans &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a> active l&amp;rsquo;indexation des événements de calendrier à la granularité journalière. Parmi les nouveaux projets : &lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> pour la distribution décentralisée de tuiles cartographiques, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> pour la messagerie chiffrée MLS, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> pour la signature à seuil FROST sur Android, &lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> pour le stockage adressé par contenu avec intégration Nostr, et &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> pour partager du contenu vers Nostr depuis n&amp;rsquo;importe quelle application Android. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fusionne 11 PRs NWC ajoutant le support double portefeuille et le cycle de vie automatique du service. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> livre un &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">portefeuille Lightning intégré&lt;/a> via l&amp;rsquo;intégration NWC. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> prépare sa sortie sur l&amp;rsquo;App Store Android tandis que HAVEN atteint &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a> avec le support multi-npub et la sauvegarde cloud. Les approfondissements de cette semaine portent sur le système Trusted Assertions de NIP-85 pour déléguer les calculs de Web of Trust à des fournisseurs de services, et sur le protocole Événements de Calendrier de NIP-52 suite à sa mise à jour d&amp;rsquo;indexation à la granularité journalière.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Une couche de cache local Blossom prend forme à mesure que des projets indépendants convergent vers l&amp;rsquo;accès hors ligne aux médias sur Android. Alby lance un &lt;a href="https://sandbox.albylabs.com">bac à sable NWC pour développeurs&lt;/a> permettant de construire et tester des intégrations Nostr Wallet Connect sans risquer de vrais fonds. Des propositions concurrentes pour la communication d&amp;rsquo;agents IA sur Nostr arrivent la même semaine de deux auteurs différents. fiatjaf supprime les champs inutilisés de &lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>, retirant les politiques de rétention, codes pays, politiques de confidentialité et tags de préférence communautaire que les opérateurs de relay n&amp;rsquo;ont jamais adoptés. &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a> fusionne les conseils de découverte de fournisseurs de services pour les Trusted Assertions. Un nouveau tag &lt;code>D&lt;/code> dans &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a> active l&amp;rsquo;indexation des événements de calendrier à la granularité journalière. Parmi les nouveaux projets : &lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> pour la distribution décentralisée de tuiles cartographiques, &lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> pour la messagerie chiffrée MLS, &lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> pour la signature à seuil FROST sur Android, &lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> pour le stockage adressé par contenu avec intégration Nostr, et &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> pour partager du contenu vers Nostr depuis n&amp;rsquo;importe quelle application Android. &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> fusionne 11 PRs NWC ajoutant le support double portefeuille et le cycle de vie automatique du service. &lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a> livre un &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">portefeuille Lightning intégré&lt;/a> via l&amp;rsquo;intégration NWC. &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> prépare sa sortie sur l&amp;rsquo;App Store Android tandis que HAVEN atteint &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a> avec le support multi-npub et la sauvegarde cloud. Les approfondissements de cette semaine portent sur le système Trusted Assertions de NIP-85 pour déléguer les calculs de Web of Trust à des fournisseurs de services, et sur le protocole Événements de Calendrier de NIP-52 suite à sa mise à jour d&amp;rsquo;indexation à la granularité journalière.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="une-couche-de-cache-local-blossom-émerge">Une couche de cache local Blossom émerge&lt;/h3>
&lt;p>Plusieurs projets indépendants convergent vers le même problème : l&amp;rsquo;accès hors ligne aux médias &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> sur les appareils mobiles.&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Morganite">Morganite&lt;/a>, une nouvelle application Android de greenart7c3 (le développeur derrière &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a> et &lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>), implémente un cache côté client pour les médias Blossom. Les utilisateurs peuvent accéder aux images et fichiers précédemment consultés sans connexion réseau.&lt;/p>
&lt;p>&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a> a livré &lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a> avec l&amp;rsquo;étiquetage d&amp;rsquo;images, les opérations de miroir/tag/suppression en masse, le filtrage par étiquette et type de fichier, ainsi que le support initial du cache Blossom local. Aerith est une interface de gestion pour les utilisateurs qui stockent des médias sur plusieurs serveurs Blossom et ont besoin d&amp;rsquo;organiser et de mettre en miroir leurs blobs.&lt;/p>
&lt;p>Un nouveau &lt;a href="https://github.com/hzrd149/blossom/blob/master/implementations/local-blossom-cache.md">guide d&amp;rsquo;implémentation du cache local&lt;/a> dans la spécification Blossom documente le stockage de blobs côté client, tandis que &lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> (du même développeur qu&amp;rsquo;Aerith) ajoute l&amp;rsquo;intégration de téléversement Blossom à son flux de partage vers Nostr sur Android. Quatre projets indépendants ont convergé vers le même problème cette semaine : une application de cache dédiée, un gestionnaire de médias, une spécification de référence et un outil de partage avec intégration Blossom, tous implémentant un stockage local persistant au-delà du simple téléversement et récupération.&lt;/p>
&lt;h3 id="bac-à-sable-nwc-dalby-pour-les-développeurs">Bac à sable NWC d&amp;rsquo;Alby pour les développeurs&lt;/h3>
&lt;p>&lt;a href="https://sandbox.albylabs.com">Alby&lt;/a> a lancé un environnement bac à sable pour les développeurs qui construisent avec &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">Nostr Wallet Connect (NIP-47)&lt;/a>. Le bac à sable fournit un service de portefeuille NWC hébergé où les développeurs peuvent créer des connexions de test et envoyer des paiements simulés sans connecter un vrai portefeuille Lightning, tout en observant le cycle complet requête/réponse des événements NWC en temps réel. Les développeurs génèrent une chaîne de connexion &lt;code>nostr+walletconnect://&lt;/code> depuis le bac à sable et la transmettent à leur client. Le bac à sable affiche alors les événements de requête kind 23194 et de réponse kind 23195 résultants au fur et à mesure qu&amp;rsquo;ils transitent entre le client et le service de portefeuille.&lt;/p>
&lt;p>Cela abaisse la barrière pour les nouvelles intégrations NWC. Auparavant, les tests nécessitaient soit un portefeuille Lightning personnel, soit un service NWC auto-hébergé. Le bac à sable abstrait tout cela, donnant aux développeurs une boucle de rétroaction immédiate pour implémenter les méthodes &lt;code>pay_invoice&lt;/code>, &lt;code>get_balance&lt;/code>, &lt;code>make_invoice&lt;/code>, &lt;code>lookup_invoice&lt;/code> et &lt;code>list_transactions&lt;/code> contre un point d&amp;rsquo;accès NWC en direct.&lt;/p>
&lt;h3 id="des-nip-pour-les-agents-ia-arrivent">Des NIP pour les agents IA arrivent&lt;/h3>
&lt;p>Des propositions pour la communication d&amp;rsquo;agents IA sur Nostr sont apparues à quelques jours d&amp;rsquo;intervalle, abordant le problème sous des angles différents.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX : AI Agent Messages&lt;/a> de joelklabo définit un protocole complet pour l&amp;rsquo;interaction d&amp;rsquo;agents IA : kinds d&amp;rsquo;événements pour les prompts, réponses, deltas en streaming, mises à jour de statut, télémétrie d&amp;rsquo;outils, erreurs, annulations et découverte de capacités. Un événement de découverte &lt;code>ai.info&lt;/code> (kind 31340, remplaçable) permet aux agents d&amp;rsquo;annoncer leurs modèles supportés, outils avec schémas, support du streaming et limites de débit. La proposition de joelklabo inclut la corrélation d&amp;rsquo;exécutions via l&amp;rsquo;ID de prompt, la gestion de sessions, la réconciliation de flux avec ordonnancement par séquence, et des conseils &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> pour la confidentialité des métadonnées.&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE : Agents&lt;/a> de pablof7z adopte une approche différente, définissant des kinds pour l&amp;rsquo;instanciation d&amp;rsquo;agents : définitions et leçons. Ce sont les types d&amp;rsquo;événements que pablof7z utilise dans &lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>, le système d&amp;rsquo;apprentissage autonome construit sur Nostr. Une proposition complémentaire, &lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD : MCP Server and Skill Announcements&lt;/a>, également de pablof7z, définit des événements pour annoncer les serveurs &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> et les compétences sur Nostr. Les commentaires &lt;a href="https://nostrcompass.org/fr/topics/nip-22/">NIP-22&lt;/a> sont supportés, permettant à la communauté de discuter et d&amp;rsquo;évaluer les serveurs MCP directement sur Nostr.&lt;/p>
&lt;p>NIP-XX couvre la communication complète entre agents tandis que NIP-AE et NIP-AD traitent de l&amp;rsquo;identité et de la découverte d&amp;rsquo;outils. Ces propositions pourraient converger vers un standard unifié ou coexister comme des couches complémentaires.&lt;/p>
&lt;h2 id="versions">Versions&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>, le relay personnel tout-en-un qui regroupe quatre fonctions de relay avec un serveur média &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>, a atteint &lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a>. Cette version candidate ajoute le support de plusieurs npubs, permettant à une seule instance HAVEN de servir plusieurs identités Nostr. Les RC précédents ont ajouté les flags &lt;code>--from-cloud&lt;/code> et &lt;code>--to-cloud&lt;/code> pour la sauvegarde cloud (RC2) et corrigé un bug de double comptage dans le Web of Trust (RC1).&lt;/p>
&lt;h3 id="mostro-mobile-v120--portefeuille-lightning-intégré">Mostro Mobile v1.2.0 : portefeuille Lightning intégré&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>, le client mobile pour la plateforme d&amp;rsquo;échange Bitcoin P2P &lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> (&lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/#mostro-livre-sa-premi%C3%A8re-b%C3%AAta-publique">v1.1.0 couvert la semaine dernière&lt;/a>), a livré &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">v1.2.0&lt;/a> avec un portefeuille Lightning intégré grâce à l&amp;rsquo;intégration complète de &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NWC (NIP-47)&lt;/a>. Les acheteurs et vendeurs n&amp;rsquo;ont plus besoin de changer d&amp;rsquo;application pour gérer les factures. L&amp;rsquo;application détecte les hold invoices pour les vendeurs et les paie automatiquement via le portefeuille connecté, tandis que les acheteurs bénéficient de la génération automatique de factures. Cette version fait suite à &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.1%2B1">v1.1.1&lt;/a> publiée plus tôt dans la semaine, qui a ajouté le support multi-nœud Mostro avec un registre curé d&amp;rsquo;instances de confiance, la récupération des métadonnées kind 0 pour l&amp;rsquo;affichage des nœuds, la gestion de nœuds personnalisés par pubkey, et le basculement automatique lorsqu&amp;rsquo;un nœud sélectionné est hors ligne.&lt;/p>
&lt;p>Côté serveur, &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.2">Mostro v0.16.2&lt;/a> a atterri avec des correctifs pour les paiements de frais de développement en double, la limitation de débit sur le point d&amp;rsquo;accès RPC de validation de mot de passe, et le nettoyage correct des litiges lors d&amp;rsquo;annulations coopératives.&lt;/p>
&lt;p>Un nouveau projet compagnon, &lt;a href="https://github.com/MostroP2P/mostro-skill">mostro-skill&lt;/a>, permet aux agents d&amp;rsquo;échanger sur Mostro via 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>, le gestionnaire d&amp;rsquo;images &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>, a livré &lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a> avec des étiquettes d&amp;rsquo;images pour organiser les médias, les opérations de miroir/tag/suppression en masse sur plusieurs serveurs, le filtrage par étiquette et type de fichier, ainsi que le support initial du cache local. Voir la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/#une-couche-de-cache-local-blossom-%c3%a9merge">section Actualités&lt;/a> pour le contexte sur la tendance plus large du cache local.&lt;/p>
&lt;h3 id="mapnolia--tuiles-cartographiques-décentralisées-sur-nostr">Mapnolia : tuiles cartographiques décentralisées sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a> est un nouveau serveur de données géospatiales qui découpe les archives de tuiles cartographiques &lt;a href="https://github.com/protomaps/PMTiles">PMTiles&lt;/a> en régions géographiques et les annonce sur Nostr pour une découverte décentralisée. Il publie des événements remplaçables paramétrés kind 34444 vers les relays Nostr contenant un index complet des fragments de tuiles cartographiques avec les métadonnées de couches, les régions géohash, les références de fichiers et les détails du serveur &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;p>Les clients découvrent et récupèrent les données cartographiques via le réseau Nostr plutôt que des serveurs de tuiles centralisés, les événements d&amp;rsquo;annonce portant suffisamment de métadonnées pour ne demander que les régions géographiques nécessaires aux serveurs Blossom listés. Mapnolia est le premier projet à apporter la distribution de données géospatiales sur Nostr, ouvrant des possibilités pour des applications cartographiques capables de fonctionner hors ligne.&lt;/p>
&lt;h3 id="pika--messagerie-chiffrée-basée-sur-marmot">Pika : messagerie chiffrée basée sur Marmot&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a> est une nouvelle application de messagerie chiffrée de bout en bout pour iOS et Android utilisant le protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a>, qui superpose &lt;a href="https://nostrcompass.org/fr/topics/mls/">Messaging Layer Security (MLS)&lt;/a> sur les relays Nostr. L&amp;rsquo;architecture sépare les préoccupations en un noyau Rust (&lt;code>pika_core&lt;/code>) gérant l&amp;rsquo;état MLS et le chiffrement/déchiffrement des messages sur les relays Nostr, avec des interfaces utilisateur natives légères en SwiftUI (iOS) et Kotlin (Android). L&amp;rsquo;état circule de façon unidirectionnelle : l&amp;rsquo;UI envoie des actions à l&amp;rsquo;acteur Rust, qui modifie l&amp;rsquo;état et émet des instantanés avec des numéros de révision vers l&amp;rsquo;UI via les liaisons UniFFI et JNI.&lt;/p>
&lt;p>Pika rejoint un champ croissant de messageries MLS-sur-Nostr aux côtés de &lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>, &lt;a href="https://github.com/VectorPrivacy">Vector&lt;/a> et &lt;a href="https://0xchat.com">0xchat&lt;/a>. Toutes utilisent les relays Nostr comme couche de transport pour le texte chiffré MLS, empêchant les opérateurs de relay de lire le contenu des messages. Pika utilise le Marmot Development Kit (MDK) pour son implémentation MLS et nostr-sdk pour la connectivité aux relays.&lt;/p>
&lt;h3 id="keep--signature-à-seuil-frostfrtopicsfrost-pour-android">Keep : signature à seuil &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a> pour Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a> est une nouvelle application Android pour la signature à seuil &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a> où aucun appareil unique ne détient la clé privée complète. Elle implémente &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (signataire Android) et &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (signature à distance), de sorte que les clients Nostr compatibles peuvent demander des signatures tandis que le matériel de clé reste distribué sur plusieurs appareils. Les configurations par défaut sont 2-sur-3 et 3-sur-5, bien que tout seuil t-sur-n soit supporté.&lt;/p>
&lt;p>La cérémonie de génération de clés distribuées (DKG) de Keep s&amp;rsquo;exécute sur les relays Nostr en utilisant des kinds d&amp;rsquo;événements personnalisés : kind 21101 pour les annonces de groupe, kind 21102 pour les polynômes d&amp;rsquo;engagement du tour 1 (diffusés publiquement), et kind 21103 pour les parts secrètes du tour 2 (chiffrement point-à-point &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> entre participants). Le scalaire de clé privée du groupe n&amp;rsquo;est jamais calculé ni assemblé nulle part durant le DKG. Chaque appareil ne détient que sa part d&amp;rsquo;évaluation polynomiale, et n&amp;rsquo;importe quelles t parts peuvent produire une signature Schnorr valide via un protocole en deux tours commit-puis-signer. La signature de 64 octets résultante est indiscernable d&amp;rsquo;une signature Schnorr à signataire unique. En coulisse, Keep utilise le crate &lt;code>frost-secp256k1-tr&lt;/code> de la Zcash Foundation avec tweaking Taproot, de sorte que la clé publique de groupe fonctionne directement comme un npub Nostr.&lt;/p>
&lt;p>Keep rejoint la famille de projets &lt;a href="https://frostr.org">Frostr&lt;/a> aux côtés d&amp;rsquo;&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> et &lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo for iOS&lt;/a>, élargissant les options de gestion de clés à seuil sur Nostr.&lt;/p>
&lt;h3 id="prism--partager-nimporte-quoi-vers-nostr-depuis-android">Prism : partager n&amp;rsquo;importe quoi vers Nostr depuis Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a> est une nouvelle application Android (Kotlin/Jetpack Compose, API 26+) qui s&amp;rsquo;enregistre comme cible de partage système, permettant aux utilisateurs de publier du texte, des URLs, des images et des vidéos vers Nostr depuis n&amp;rsquo;importe quelle application de leur téléphone. Les URLs partagées passent par un extracteur de paramètres de suivi avant d&amp;rsquo;être composées en notes. Prism récupère les métadonnées OpenGraph pour générer des aperçus de liens enrichis et rend les références Nostr natives (&lt;code>note1&lt;/code>, &lt;code>nevent1&lt;/code>) inline.&lt;/p>
&lt;p>Le moteur de planification utilise une approche hybride &lt;code>AlarmManager&lt;/code>/&lt;code>WorkManager&lt;/code> pour contourner les optimisations de batterie Android : AlarmManager gère le timing précis du réveil tandis que les tâches WorkManager expéditives assurent la livraison, avec une relance à backoff exponentiel pour les scénarios hors ligne. Les téléversements de médias passent par des serveurs &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> configurables avec génération de miniatures pour les images et les frames vidéo. Toute la signature d&amp;rsquo;événements est déléguée aux signataires externes &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> comme &lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a>, avec un support multi-compte pour basculer entre les identités. Prism supporte également les publications &lt;a href="https://nostrcompass.org/fr/topics/nip-84/">NIP-84 (Highlights)&lt;/a>. Du même développeur qu&amp;rsquo;&lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/#aerith-v02">Aerith&lt;/a>.&lt;/p>
&lt;h3 id="hashtree--stockage-adressé-par-contenu-avec-intégration-nostr">Hashtree : stockage adressé par contenu avec intégration Nostr&lt;/h3>
&lt;p>&lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a> est un système de stockage de blobs adressé par contenu basé sur le système de fichiers qui publie les racines Merkle sur Nostr pour créer des adresses mutables npub/chemin. Le système utilise un « stockage muet » fonctionnant avec tout magasin clé-valeur, découpant le contenu en blocs de 2 Mo optimisés pour les téléversements &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>. Contrairement à BitTorrent, aucun calcul actif de preuves Merkle n&amp;rsquo;est nécessaire — il suffit de stocker et de récupérer les blobs par hash.&lt;/p>
&lt;p>L&amp;rsquo;intégration Nostr permet des URLs de dépôt git comme &lt;code>htree://npub.../nom-depot&lt;/code> pour cloner des dépôts, avec des commandes comme &lt;code>htree publish mydata &amp;lt;hash&amp;gt;&lt;/code> pour publier des hashes de contenu vers les adresses &lt;code>npub.../mydata&lt;/code>. Le CLI complet supporte les modes de stockage chiffré (par défaut) et public, l&amp;rsquo;épinglage de contenu, la publication vers les serveurs Blossom et la gestion des identités Nostr. Chaque élément stocké est soit des octets bruts soit un nœud d&amp;rsquo;arbre, fournissant une base pour la distribution de contenu décentralisée via le réseau de relays Nostr.&lt;/p>
&lt;h3 id="espy--capture-de-palettes-de-couleurs-sur-shakespeare">Espy : capture de palettes de couleurs sur Shakespeare&lt;/h3>
&lt;p>&lt;a href="https://espy.you">Espy&lt;/a>, construit sur la plateforme &lt;a href="https://soapbox.pub/tools/shakespeare/">Shakespeare&lt;/a>, permet aux utilisateurs de capturer des palettes de couleurs à partir de photos et de les partager comme événements Nostr. Shakespeare est un créateur d&amp;rsquo;applications propulsé par l&amp;rsquo;IA qui authentifie les utilisateurs via les extensions de navigateur NIP-07 et fournit une connectivité relay Nostr intégrée, de sorte que les développeurs livrent des applications sans implémenter leur propre gestion de clés ou pool de relays. Espy extrait les couleurs dominantes de la prise de vue de l&amp;rsquo;appareil photo en cartes de palettes partageables, découvrables via les flux 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>, le client Nostr style Discord de hodlbod qui organise les relays comme des groupes, a livré &lt;a href="https://gitea.coracle.social/coracle/flotilla/releases/tag/1.6.4">1.6.4&lt;/a>. La famille de projets Coracle a migré de GitHub vers une &lt;a href="https://gitea.coracle.social/coracle">instance Gitea auto-hébergée&lt;/a>. Cette version ajoute les notifications push via NIP-9a et un flux de réception de portefeuille, ainsi que les annonces classifiées et le support d&amp;rsquo;URL d&amp;rsquo;espace. Les améliorations d&amp;rsquo;interface incluent les modales nettoyées et la gestion des notifications. La mise en sourdine des salles et les encoches de zone de sécurité sur mobile complètent les changements, avec des correctifs pour les téléversements d&amp;rsquo;images Safari et les détails d&amp;rsquo;événements de calendrier.&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;application mobile de streaming en direct avec intégration Nostr, a livré &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.12.0">v0.12.0&lt;/a>. Cette version ajoute des Clips vidéo avec réponses dans le lecteur et intégration d&amp;rsquo;émojis personnalisés. La protection de fil bloque le spam de mentions indirectes, et une nouvelle fonctionnalité de partage QR permet aux utilisateurs d&amp;rsquo;échanger des profils hors ligne. Un nouveau mode de lecture horizontal donne aux flux une expérience de visionnage style Twitch, et l&amp;rsquo;écran de navigation présente maintenant les clips de créateurs aux côtés des flux en direct.&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>, une bibliothèque de traduction du web social qui convertit des données entre Nostr, Bluesky, ActivityPub et d&amp;rsquo;autres plateformes dans un format commun, a livré &lt;a href="https://github.com/snarfed/granary/releases/tag/v10.0">v10.0&lt;/a> avec des changements cassants. La version bascule les IDs ActivityStreams 1 par défaut de Nostr de bech32 vers hex et ajoute un support Nostr étendu incluant l&amp;rsquo;analyse des mentions &lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> et les tags d&amp;rsquo;articles. Une nouvelle option de sortie multiple à travers les convertisseurs permet aux développeurs de traduire entre protocoles en lot.&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 serveur &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> qui permet aux agents IA d&amp;rsquo;interagir avec le réseau Nostr, a livré &lt;a href="https://github.com/AustinKelsay/nostr-mcp-server/releases/tag/v3.0.0">v3.0.0&lt;/a>. Cette version majeure ajoute les actions sociales (abonnements, réactions, reposts, réponses) et la gestion des listes de relays avec le support &lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a> plus l&amp;rsquo;authentification optionnelle &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a>. La messagerie directe via &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> est également nouvelle. La version s&amp;rsquo;associe aux &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/#des-nip-pour-les-agents-ia-arrivent">propositions de NIP pour agents IA&lt;/a> de cette semaine comme outillage pratique pour les agents opérant sur 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>, le signataire Nostr multiplateforme, a livré &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.8">v0.3.8&lt;/a> avec le support multilingue de l&amp;rsquo;interface et un gestionnaire de mises à jour incrémentales pour son navigateur d&amp;rsquo;applications Nostr intégré. Le nouveau mécanisme de mise à jour effectue des diffs incrémentaux par rapport à l&amp;rsquo;état local, maintenant le répertoire d&amp;rsquo;applications web Nostr dans l&amp;rsquo;application à jour avec une utilisation de bande passante réduite. La version introduit également un cache de matériel de clés de 5 minutes pour réduire les allers-retours en base de données lors de la signature de plusieurs événements consécutifs.&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), une bibliothèque TypeScript pour le protocole Nostr, a livré &lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.1">v0.3.1&lt;/a>. La version ajoute des gardes de vérification de paquets s&amp;rsquo;assurant que tous les points d&amp;rsquo;entrée sont inclus dans les archives npm, avec application CI sur Node et Bun. &lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.0">v0.3.0&lt;/a> a été livré la même semaine.&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>, le relay Nostr Android de greenart7c3, a publié &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre1">v2.0.0-pre1&lt;/a> avec des améliorations de performance via des index de base de données optimisés et une meilleure gestion des coroutines Kotlin. La version améliore également le support pour l&amp;rsquo;hébergement d&amp;rsquo;applications web, chaque application fonctionnant désormais sur son propre port.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&lt;/h2>
&lt;h3 id="primal-android--expansion-de-linfrastructure-nwc">Primal Android : expansion de l&amp;rsquo;infrastructure NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> a fusionné 11 PRs liés à NWC cette semaine, poursuivant la construction &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/#primal-android-livre-le-chiffrement-nwc">commencée il y a deux semaines&lt;/a>. Ce lot ajoute le support NWC double portefeuille, le démarrage/arrêt automatique du service lié aux notifications backend, le routage des connexions par type de portefeuille, et un nettoyage correct des données lors de la suppression d&amp;rsquo;un portefeuille. Le service NWC gère maintenant son propre cycle de vie en fonction de l&amp;rsquo;état de connexion du portefeuille, réduisant l&amp;rsquo;intervention manuelle de l&amp;rsquo;utilisateur.&lt;/p>
&lt;h3 id="notedeck--préparation-pour-lapp-store-android">Notedeck : préparation pour l&amp;rsquo;App Store Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, le client Nostr multiplateforme de l&amp;rsquo;équipe &lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>, a fusionné la &lt;a href="https://github.com/damus-io/notedeck/pull/1287">préparation à la sortie sur l&amp;rsquo;App Store Android&lt;/a> cette semaine. La PR ajoute un plan de conformité UGC (User Generated Content) requis par Google Play, incluant un écran d&amp;rsquo;acceptation des Conditions d&amp;rsquo;utilisation, le blocage d&amp;rsquo;utilisateurs via les menus contextuels et les paramètres, la fonctionnalité &lt;a href="https://nostrcompass.org/fr/topics/nip-56/">NIP-56 (Signalement)&lt;/a> qui publie des événements de rapport aux relays, et une section Paramètres Contenu et Sécurité. Une infrastructure de build a été ajoutée pour générer des APK de publication signés et des AAB (Android App Bundles) via de nouvelles cibles Makefile. Un document EULA établit une exigence d&amp;rsquo;âge de 17 ans et des clauses de non-responsabilité spécifiques à Nostr concernant le contenu décentralisé. Les fonctionnalités de conformité elles-mêmes seront livrées dans des PRs de suivi ; cette fusion pose les bases de documentation et de signature.&lt;/p>
&lt;p>Du côté de Damus iOS, un correctif a atterri pour une &lt;a href="https://github.com/damus-io/damus/pull/3593">régression de spinner de chargement infini&lt;/a> où le spinner persistait indéfiniment après le chargement du contenu.&lt;/p>
&lt;h3 id="nostria--relays-de-découverte-et-correctifs-dm">Nostria : relays de découverte et correctifs DM&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>, le client Nostr multiplateforme axé sur l&amp;rsquo;échelle mondiale, a fusionné 9 PRs cette semaine. La plus notable ajoute l&amp;rsquo;&lt;a href="https://github.com/nostria-app/nostria/pull/460">auto-initialisation des Discovery Relays&lt;/a> pour la recherche de profils, donnant aux nouveaux utilisateurs une connectivité relay fonctionnelle sans configuration manuelle. D&amp;rsquo;autres correctifs traitent du &lt;a href="https://github.com/nostria-app/nostria/pull/466">retour à la ligne dans les zones de texte DM&lt;/a>, du &lt;a href="https://github.com/nostria-app/nostria/pull/479">remplissage du viewport en plein écran pour les vidéos&lt;/a>, de l&amp;rsquo;&lt;a href="https://github.com/nostria-app/nostria/pull/481">extraction de métadonnées d&amp;rsquo;articles dans les aperçus de reposts&lt;/a> et de la &lt;a href="https://github.com/nostria-app/nostria/pull/458">résolution d&amp;rsquo;URI nostr: dans les notifications&lt;/a>.&lt;/p>
&lt;h3 id="camelus--migration-vers-riverpod-v3">Camelus : migration vers Riverpod v3&lt;/h3>
&lt;p>&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>, le client Nostr basé sur Flutter, a fusionné 5 PRs cette semaine centrées sur une &lt;a href="https://github.com/camelus-hq/camelus/pull/158">migration vers l&amp;rsquo;API Riverpod v3&lt;/a> et une &lt;a href="https://github.com/camelus-hq/camelus/pull/159">refonte du flux générique&lt;/a>. Un &lt;a href="https://github.com/camelus-hq/camelus/pull/161">cache de notes intégrées&lt;/a> évite les récupérations redondantes depuis les relays pour les notes citées.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&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 : Découverte des fournisseurs de services&lt;/a>&lt;/strong> : vitorpamplona a ajouté des conseils sur la découverte par les clients des fournisseurs de services &lt;a href="https://nostrcompass.org/fr/topics/nip-56/">Trusted Assertions NIP-85&lt;/a>, incluant les hints de relay et les clés de service spécifiques aux algorithmes. Voir l&amp;rsquo;&lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/#approfondissement-nip--nip-85-trusted-assertions">approfondissement ci-dessous&lt;/a> pour une couverture complète.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11 : Nettoyage des informations relay&lt;/a>&lt;/strong> : fiatjaf a retiré &lt;code>privacy_policy&lt;/code>, le tableau &lt;code>retention&lt;/code>, &lt;code>relay_countries&lt;/code> et le bloc de préférences communautaires de &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a>. Les opérateurs de relay remplissaient rarement ces champs et les clients n&amp;rsquo;agissaient pas dessus.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52 : Tag de timestamp à granularité journalière&lt;/a>&lt;/strong> : staab a ajouté un tag &lt;code>D&lt;/code> obligatoire aux événements de calendrier basés sur l&amp;rsquo;heure &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a> (kind 31923) représentant le timestamp Unix à granularité journalière, calculé comme &lt;code>floor(unix_seconds / 86400)&lt;/code>. Plusieurs tags &lt;code>D&lt;/code> couvrent les événements multi-jours, permettant une indexation temporelle efficace sans analyser les timestamps complets.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">NIP-47 : Simplification&lt;/a>&lt;/strong> : La PR de simplification &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/">discutée dans le Compass #9&lt;/a> a fusionné cette semaine, retirant &lt;code>multi_pay_invoice&lt;/code> et &lt;code>multi_pay_keysend&lt;/code> de &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Voir le &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/#approfondissement-nip--nip-47-nostr-wallet-connect">Compass #8&lt;/a> pour l&amp;rsquo;approfondissement complet du protocole NWC.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&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 : Podcasts&lt;/a>&lt;/strong> : Couvert dans le &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/">Compass #8&lt;/a>, cette proposition de spécification de podcast a suscité une discussion animée cette semaine. staab a noté qu&amp;rsquo;au moins trois standards de podcast concurrents existent déjà dans la nature, et derekross a pointé vers une implémentation existante vieille de six mois avec des applications et podcasts actifs. La voie à suivre nécessite une convergence entre les implémentations avant qu&amp;rsquo;un numéro de NIP puisse être attribué.&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 propose un protocole complet de communication d&amp;rsquo;agents IA avec des kinds d&amp;rsquo;événements pour les prompts, réponses, streaming, télémétrie d&amp;rsquo;outils, erreurs et découverte de capacités. Voir la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-18-newsletter/#des-nip-pour-les-agents-ia-arrivent">section Actualités&lt;/a> pour la couverture de toutes les propositions IA de cette semaine.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1893">NIP-PNS : Stockage de notes privées&lt;/a>&lt;/strong> : Le système de notes privées de jb55 définit des événements kind 1080 pour stocker des notes personnelles chiffrées sur les relays sans révéler qui les a écrites. Le schéma dérive une paire de clés pseudonyme déterministe depuis le nsec de l&amp;rsquo;utilisateur via HKDF : &lt;code>pns_key = hkdf_extract(ikm=device_key, salt=&amp;quot;nip-pns&amp;quot;)&lt;/code>, puis génère une paire de clés secp256k1 à partir de cette clé dérivée. Une deuxième dérivation produit une clé de chiffrement symétrique : &lt;code>pns_nip44_key = hkdf_extract(ikm=pns_key, salt=&amp;quot;nip44-v2&amp;quot;)&lt;/code>. Les notes internes sont chiffrées avec &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> v2 en utilisant cette clé et publiées sous la pubkey pseudonyme, de sorte que les relays voient des événements kind 1080 d&amp;rsquo;une identité non liée à la clé principale de l&amp;rsquo;utilisateur. Contrairement aux gift wraps &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a>, PNS n&amp;rsquo;est pas spammable (la clé pseudonyme est déterministe, pas aléatoire) et ne porte aucune métadonnée publique (aucun tag &lt;code>p&lt;/code> nécessaire puisqu&amp;rsquo;il n&amp;rsquo;y a pas de destinataire). Cette semaine, jb55 a publié les résultats de l&amp;rsquo;implémentation de PNS dans le backend Rust de Notedeck (module &lt;code>enostr::pns&lt;/code>). Il a identifié que l&amp;rsquo;appel &lt;code>hkdf_extract&lt;/code> de la spec est ambigu car RFC 5869 HKDF comporte deux phases (Extract et Expand) qui produisent des sorties différentes, et la plupart des bibliothèques s&amp;rsquo;attendent aux deux. Il a précisé que &lt;code>pns_nip44_key&lt;/code> contourne l&amp;rsquo;accord de clés ECDH normal de NIP-44 et est utilisé directement comme clé de conversation — un détail que les implémenteurs doivent connaître car la plupart des bibliothèques NIP-44 utilisent ECDH par défaut. Il a également signalé une variable non définie dans l&amp;rsquo;implémentation de référence TypeScript. La PR, datant à l&amp;rsquo;origine d&amp;rsquo;avril 2025, est maintenant en cours d&amp;rsquo;implémentation active.&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 définit quatre kinds d&amp;rsquo;événements pour l&amp;rsquo;identité des agents sur Nostr, tirés de son travail sur &lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>. Le template de base est kind 4199 (Agent Definition), portant le titre, la description du rôle, les instructions système, les déclarations d&amp;rsquo;outils et la version. Les modificateurs comportementaux vivent dans kind 4201 (Agent Nudge), qui utilise les tags &lt;code>only-tool&lt;/code>, &lt;code>allow-tool&lt;/code> et &lt;code>deny-tool&lt;/code> pour le contrôle des capacités en exécution. Les agents publient ce qu&amp;rsquo;ils apprennent comme événements kind 4129 (Agent Lesson), catégorisés et liés à la définition parente via des tags &lt;code>e&lt;/code>, affinables via des fils de commentaires &lt;a href="https://nostrcompass.org/fr/topics/nip-22/">NIP-22&lt;/a>. La vérification de propriété utilise kind 14199, un événement remplaçable où les opérateurs humains listent les pubkeys de leurs agents, établissant une chaîne bidirectionnelle lorsque correspondant au tag &lt;code>p&lt;/code> du profil kind 0 de l&amp;rsquo;agent.&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 définit des événements pour annoncer les serveurs &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a> et les compétences individuelles sur Nostr. Les annonces de serveurs MCP portent l&amp;rsquo;URL du point d&amp;rsquo;accès du serveur et la version de protocole supportée aux côtés d&amp;rsquo;une liste d&amp;rsquo;outils disponibles avec leurs schémas d&amp;rsquo;entrée. Les commentaires &lt;a href="https://nostrcompass.org/fr/topics/nip-22/">NIP-22&lt;/a> sont supportés sur les annonces de serveurs, permettant à la communauté de discuter et d&amp;rsquo;évaluer les serveurs MCP directement sur Nostr.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2224">NIP-73 : Kind OSM&lt;/a>&lt;/strong> : DestBro propose d&amp;rsquo;ajouter les identifiants OpenStreetMap à &lt;a href="https://nostrcompass.org/fr/topics/nip-73/">NIP-73 (External Content IDs)&lt;/a>, qui standardise comment les événements Nostr référencent le contenu externe comme les livres (ISBN), films (ISAN), flux de podcasts (GUID), géohashes et URLs via les tags &lt;code>i&lt;/code> et &lt;code>k&lt;/code>. Le kind OSM proposé permettrait aux événements de référencer des entités cartographiques spécifiques (bâtiments, routes, parcs) par leur ID de nœud ou de voie OpenStreetMap, connectant le contenu Nostr à la base de données géographique ouverte.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2219">NIP-XX : Variantes d&amp;rsquo;images adaptatives&lt;/a>&lt;/strong> : woikos propose d&amp;rsquo;étendre les événements de métadonnées de fichier &lt;a href="https://nostrcompass.org/fr/topics/nip-94/">NIP-94&lt;/a> avec des tags pour des variantes d&amp;rsquo;images adaptatives à différentes résolutions. Les clients pourraient sélectionner la variante appropriée en fonction de la taille d&amp;rsquo;affichage et des conditions réseau, réduisant la bande passante pour les utilisateurs mobiles consultant des images haute résolution hébergées sur des serveurs &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="approfondissement-nip--nip-85-trusted-assertions">Approfondissement NIP : 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> définit un système pour déléguer des calculs coûteux à des fournisseurs de services de confiance qui publient des résultats signés comme événements Nostr. Les scores de Web of Trust et les métriques d&amp;rsquo;engagement nécessitent le parcours de nombreux relays et le traitement de grands volumes d&amp;rsquo;événements — un travail impraticable sur les appareils mobiles. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2223">fusion&lt;/a> de cette semaine a ajouté des conseils sur le processus de découverte des fournisseurs par les clients.&lt;/p>
&lt;p>&lt;strong>Délégation :&lt;/strong>&lt;/p>
&lt;p>Le calcul du score de Web of Trust d&amp;rsquo;un utilisateur nécessite le parcours des graphes d&amp;rsquo;abonnements sur plusieurs sauts à travers de nombreux relays, et le comptage précis des followers implique la déduplication sur l&amp;rsquo;ensemble du réseau de relays. Les appareils mobiles et les clients de navigateur ne peuvent pas effectuer ces opérations, pourtant les résultats sont essentiels pour le filtrage du spam et le classement du contenu. NIP-85 comble cet écart en permettant aux utilisateurs de désigner des fournisseurs de confiance pour effectuer les calculs et publier les résultats comme événements Nostr standard.&lt;/p>
&lt;p>&lt;strong>Conception du protocole :&lt;/strong>&lt;/p>
&lt;p>NIP-85 utilise quatre kinds d&amp;rsquo;événements pour les assertions sur différents types de sujets. Les assertions utilisateur (kind 30382) portent le nombre de followers, les comptages de publications/réponses/réactions, les montants de zaps, le rang normalisé (0-100), les sujets courants et les heures d&amp;rsquo;activité :&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>Les assertions d&amp;rsquo;événements (kind 30383) évaluent des notes individuelles avec le nombre de commentaires, de citations, de reposts, de réactions et les données de zaps :&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>Pour les événements adressables (articles longs, pages wiki), le kind 30384 applique les mêmes métriques d&amp;rsquo;engagement sur toutes les versions collectivement. Le kind 30385 évalue les identifiants externes (livres, films, sites web, lieux, hashtags) référencés via &lt;a href="https://nostrcompass.org/fr/topics/nip-73/">NIP-73 (External Content IDs)&lt;/a>, qui standardise comment les événements Nostr référencent le contenu externe via les tags &lt;code>i&lt;/code> et &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>Chaque assertion est un événement adressable remplaçable où le tag &lt;code>d&lt;/code> contient le sujet : une pubkey, un ID d&amp;rsquo;événement, une adresse d&amp;rsquo;événement ou un identifiant NIP-73. Les fournisseurs de services signent ces événements avec leurs propres clés, et les clients les évaluent en fonction des relations de confiance.&lt;/p>
&lt;p>&lt;strong>Découverte des fournisseurs :&lt;/strong>&lt;/p>
&lt;p>Les utilisateurs déclarent quels fournisseurs d&amp;rsquo;assertions ils font confiance en publiant des événements kind 10040. Chaque entrée spécifie le type d&amp;rsquo;assertion avec la pubkey du fournisseur et le hint de relay, plus des variantes d&amp;rsquo;algorithme optionnelles :&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>Les utilisateurs peuvent chiffrer la liste de tags dans &lt;code>.content&lt;/code> en utilisant &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> pour garder leurs préférences de fournisseur privées. Les clients construisent une liste de fournisseurs en vérifiant quels fournisseurs font confiance à leurs comptes suivis, créant une couche de réputation décentralisée pour les fournisseurs d&amp;rsquo;assertions eux-mêmes.&lt;/p>
&lt;p>&lt;strong>Modèle de sécurité :&lt;/strong>&lt;/p>
&lt;p>Les fournisseurs doivent utiliser des clés de service différentes pour des algorithmes distincts, et une clé unique par utilisateur lorsque les algorithmes sont personnalisés, empêchant la corrélation croisée des requêtes entre utilisateurs. Chaque clé de service obtient un événement de métadonnées kind 0 décrivant le comportement de l&amp;rsquo;algorithme, donnant aux utilisateurs une transparence sur ce en quoi ils font confiance. Les événements d&amp;rsquo;assertion ne doivent être mis à jour que lorsque les données sous-jacentes changent réellement, évitant le trafic inutile sur les relays et permettant aux clients de mettre les résultats en cache avec confiance.&lt;/p>
&lt;p>&lt;strong>Adoption actuelle :&lt;/strong>&lt;/p>
&lt;p>NIP-85 formalise un modèle qui émergeait déjà de façon informelle. Le serveur cache de Primal calcule les métriques d&amp;rsquo;engagement et les scores de Web of Trust. &lt;a href="https://gitlab.com/soapbox-pub/antiprimal">Antiprimal&lt;/a>, couvert dans le &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/#antiprimal--passerelle-conforme-aux-standards-vers-le-cache-primal">Compass #9&lt;/a>, relie ces calculs aux clients Nostr standard en utilisant les kinds d&amp;rsquo;événements NIP-85. &lt;a href="https://nostr.band">Nostr.band&lt;/a> exploite le relay &lt;code>wss://nip85.nostr.band&lt;/code> référencé dans les propres exemples de la spec, servant des événements d&amp;rsquo;assertion pour les données de son index de recherche. Côté client, &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> (écrit par vitorpamplona, qui a également rédigé ce NIP) dispose d&amp;rsquo;un support expérimental des Trusted Assertions dans sa bibliothèque &lt;code>quartz&lt;/code>, analysant les événements d&amp;rsquo;assertion et les déclarations de fournisseurs de services. &lt;a href="https://vertexlab.io">Vertex&lt;/a> calcule des métriques similaires de Web of Trust mais &lt;a href="https://vertexlab.io/blog/dvms_vs_nip_85/">a choisi une approche différente&lt;/a>, utilisant une API directe plutôt que des événements NIP-85, citant le problème de découverte et la surcharge computationnelle des architectures basées sur les assertions. Avec NIP-85, tout client peut consommer des assertions de n&amp;rsquo;importe quel fournisseur via un format d&amp;rsquo;événement standard, et les fournisseurs se font concurrence sur la précision tandis que les utilisateurs choisissent en qui faire confiance.&lt;/p>
&lt;h2 id="approfondissement-nip--nip-52-événements-de-calendrier">Approfondissement NIP : NIP-52 (Événements de calendrier)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/52.md">NIP-52&lt;/a> définit les événements de calendrier sur Nostr, donnant aux clients un moyen standard de représenter et de découvrir des occurrences à des moments spécifiques ou entre des moments. La &lt;a href="https://github.com/nostr-protocol/nips/pull/1752">fusion du tag D&lt;/a> de cette semaine a ajouté l&amp;rsquo;indexation à la granularité journalière, complétant une pièce manquante dans l&amp;rsquo;infrastructure de requête de la spec.&lt;/p>
&lt;p>&lt;strong>Deux types d&amp;rsquo;événements :&lt;/strong>&lt;/p>
&lt;p>NIP-52 sépare les événements de calendrier en deux kinds selon la précision temporelle. Les événements basés sur la date (kind 31922) représentent les occurrences sur la journée entière comme les jours fériés ou les festivals multi-jours. Ils utilisent des chaînes de date ISO 8601 dans leurs tags &lt;code>start&lt;/code> et &lt;code>end&lt;/code> optionnel, sans considération de fuseau horaire :&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>Les événements basés sur l&amp;rsquo;heure (kind 31923) représentent des moments spécifiques avec des timestamps Unix dans leurs tags &lt;code>start&lt;/code> et &lt;code>end&lt;/code> optionnel, plus des identifiants de fuseau horaire IANA (&lt;code>start_tzid&lt;/code>, &lt;code>end_tzid&lt;/code>) pour l&amp;rsquo;affichage. Les deux kinds sont des événements remplaçables paramétrés, de sorte que les organisateurs mettent à jour les détails en publiant un nouvel événement avec le même tag &lt;code>d&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Calendriers et RSVP :&lt;/strong>&lt;/p>
&lt;p>Les événements kind 31924 définissent les calendriers comme des collections, référençant les événements via des tags &lt;code>a&lt;/code> pointant vers les événements kind 31922 ou 31923 par leurs coordonnées d&amp;rsquo;adresse :&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>Les utilisateurs peuvent maintenir plusieurs calendriers (personnel, professionnel, communautaire) et les clients peuvent s&amp;rsquo;abonner aux calendriers de pubkeys spécifiques. Les événements de calendrier peuvent inclure un tag &lt;code>a&lt;/code> référençant un calendrier pour demander leur inclusion, permettant une gestion collaborative des calendriers où plusieurs utilisateurs contribuent des événements aux calendriers qu&amp;rsquo;ils ne possèdent pas.&lt;/p>
&lt;p>Les RSVP utilisent le kind 31925, où les utilisateurs publient leur statut de présence avec un indicateur libre/occupé optionnel :&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>Les valeurs de &lt;code>status&lt;/code> valides sont « accepted », « declined », « tentative », et le tag &lt;code>fb&lt;/code> optionnel marque l&amp;rsquo;utilisateur comme libre ou occupé pour cette période. Les événements RSVP référencent le tag &lt;code>a&lt;/code> de l&amp;rsquo;événement de calendrier et portent le tag &lt;code>p&lt;/code> de l&amp;rsquo;organisateur, de sorte que le client de l&amp;rsquo;organisateur peut agréger les réponses à travers les relays.&lt;/p>
&lt;p>&lt;strong>L&amp;rsquo;ajout du tag D :&lt;/strong>&lt;/p>
&lt;p>Avant la fusion de cette semaine, les clients interrogeant des événements dans une plage de dates devaient récupérer tous les événements d&amp;rsquo;une pubkey ou d&amp;rsquo;un calendrier et filtrer côté client. Le nouveau tag &lt;code>D&lt;/code> obligatoire sur les événements basés sur l&amp;rsquo;heure (kind 31923) contient un timestamp Unix à granularité journalière calculé comme &lt;code>floor(unix_seconds / 86400)&lt;/code>. Les événements multi-jours portent plusieurs tags &lt;code>D&lt;/code>, un par jour. Les relays peuvent maintenant indexer les événements par jour et répondre à des requêtes filtrées efficacement, transformant ce qui était un problème de filtrage côté client en une recherche d&amp;rsquo;index côté 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>La valeur &lt;code>D&lt;/code> de &lt;code>20139&lt;/code> est égale à &lt;code>floor(1740067200 / 86400)&lt;/code>, plaçant cet événement le 20 février 2025. Les clients interrogeant pour « tous les événements de cette semaine » envoient un filtre avec la plage &lt;code>D&lt;/code> correspondante, et les relays ne retournent que les événements correspondants.&lt;/p>
&lt;p>&lt;strong>Décisions de conception :&lt;/strong>&lt;/p>
&lt;p>NIP-52 omet intentionnellement les événements récurrents. La spec laisse de côté les règles de récurrence (RRULE d&amp;rsquo;iCalendar), déléguant cette complexité aux clients. Un organisateur publie des événements individuels pour chaque occurrence, gardant le modèle de données côté relay simple. Les tags de participants portent des rôles optionnels (« host », « speaker », « attendee »), et les tags de localisation peuvent inclure des tags géohash &lt;code>g&lt;/code> pour les requêtes spatiales aux côtés des adresses lisibles par l&amp;rsquo;humain.&lt;/p>
&lt;p>&lt;strong>Implémentations :&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/zmeyer44/flockstr">Flockstr&lt;/a> est le principal client de calendrier construit sur NIP-52. &lt;a href="https://gitea.coracle.social/coracle/coracle">Coracle&lt;/a> affiche les événements de calendrier dans son flux social. L&amp;rsquo;ajout du tag &lt;code>D&lt;/code> cette semaine permet l&amp;rsquo;indexation temporelle côté relay que les deux clients peuvent utiliser pour réduire la bande passante lors des requêtes d&amp;rsquo;événements dans une plage de dates spécifique.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ou avez des actualités à partager ? Vous souhaitez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> DM&lt;/a> ou retrouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #9</title><link>https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Mostro livre sa première bêta publique après trois ans de développement, apportant le trading P2P de Bitcoin sur mobile via Nostr. OpenSats attribue sa seizième vague de subventions Bitcoin, avec Minibits Wallet recevant un renouvellement pour son portefeuille Cashu intégré à Nostr. &lt;strong>Zapstore atteint sa version stable 1.0&lt;/strong>, marquant la maturation du magasin d&amp;rsquo;applications Android décentralisé. Coracle 0.6.29 ajoute les topics et les commentaires sur les highlights. Igloo Desktop v1.0.3 livre un renforcement majeur de la sécurité pour la signature à seuil Frostr. Amber v4.1.2-pre1 migre vers l&amp;rsquo;architecture Flow. Angor atteint v0.2.5 avec la refonte de l&amp;rsquo;interface de financement et la configuration de serveur d&amp;rsquo;images NIP-96. NostrPress se lance comme outil convertissant les profils Nostr en blogs statiques. Antiprimal livre la passerelle conforme aux standards qui relie le serveur cache propriétaire de Primal aux NIP Nostr standards. Primal Android fusionne 18 PRs étendant l&amp;rsquo;infrastructure NWC avec le support double portefeuille, la journalisation d&amp;rsquo;audit et la méthode &lt;code>lookup_invoice&lt;/code>. diVine livre les flux vidéo API-first. Le SDK TypeScript Marmot extrait son application de chat de référence dans un dépôt autonome et commence la migration vers ts-mls v2. Le dépôt NIPs fusionne le comptage approximatif HyperLogLog pour NIP-45 et extrait les tags d&amp;rsquo;identité du kind 0. Plusieurs propositions de vitorpamplona commencent à alléger systématiquement les événements de métadonnées kind 0. Au niveau du protocole, on trouve Nostr Relay Connect pour la traversée NAT et Nostr Web Tokens pour les revendications web signées. En approfondissement, le nouveau comptage approximatif HyperLogLog de NIP-45 pour les métriques d&amp;rsquo;événements inter-relais et le protocole de stockage de fichiers HTTP NIP-96, désormais déprécié en faveur de Blossom, alors que certains projets gèrent la transition entre ces deux standards média.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Mostro livre sa première bêta publique après trois ans de développement, apportant le trading P2P de Bitcoin sur mobile via Nostr. OpenSats attribue sa seizième vague de subventions Bitcoin, avec Minibits Wallet recevant un renouvellement pour son portefeuille Cashu intégré à Nostr. &lt;strong>Zapstore atteint sa version stable 1.0&lt;/strong>, marquant la maturation du magasin d&amp;rsquo;applications Android décentralisé. Coracle 0.6.29 ajoute les topics et les commentaires sur les highlights. Igloo Desktop v1.0.3 livre un renforcement majeur de la sécurité pour la signature à seuil Frostr. Amber v4.1.2-pre1 migre vers l&amp;rsquo;architecture Flow. Angor atteint v0.2.5 avec la refonte de l&amp;rsquo;interface de financement et la configuration de serveur d&amp;rsquo;images NIP-96. NostrPress se lance comme outil convertissant les profils Nostr en blogs statiques. Antiprimal livre la passerelle conforme aux standards qui relie le serveur cache propriétaire de Primal aux NIP Nostr standards. Primal Android fusionne 18 PRs étendant l&amp;rsquo;infrastructure NWC avec le support double portefeuille, la journalisation d&amp;rsquo;audit et la méthode &lt;code>lookup_invoice&lt;/code>. diVine livre les flux vidéo API-first. Le SDK TypeScript Marmot extrait son application de chat de référence dans un dépôt autonome et commence la migration vers ts-mls v2. Le dépôt NIPs fusionne le comptage approximatif HyperLogLog pour NIP-45 et extrait les tags d&amp;rsquo;identité du kind 0. Plusieurs propositions de vitorpamplona commencent à alléger systématiquement les événements de métadonnées kind 0. Au niveau du protocole, on trouve Nostr Relay Connect pour la traversée NAT et Nostr Web Tokens pour les revendications web signées. En approfondissement, le nouveau comptage approximatif HyperLogLog de NIP-45 pour les métriques d&amp;rsquo;événements inter-relais et le protocole de stockage de fichiers HTTP NIP-96, désormais déprécié en faveur de Blossom, alors que certains projets gèrent la transition entre ces deux standards média.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="mostro-livre-sa-première-bêta-publique">Mostro livre sa première bêta publique&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>, la place d&amp;rsquo;échange Bitcoin pair-à-pair construite sur Nostr, a publié son &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">application mobile v1.1.0&lt;/a>, la première bêta publique du projet après trois ans de développement. L&amp;rsquo;application permet aux utilisateurs d&amp;rsquo;échanger du Bitcoin directement en utilisant Nostr pour la coordination, avec Lightning pour le règlement et aucun intermédiaire custodial.&lt;/p>
&lt;p>La version introduit les notifications push avec fiabilité améliorée en arrière-plan sur Android, un système de journalisation optionnel permettant aux utilisateurs de capturer et partager les données de diagnostic en cas de problème, la mise à jour de relais plus fluide via l&amp;rsquo;initialisation additive, et les raffinements UI Phase 2 avec le support de l&amp;rsquo;internationalisation. L&amp;rsquo;application est disponible sur &lt;a href="https://zapstore.dev">Zapstore&lt;/a> et en &lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">téléchargement direct GitHub&lt;/a>.&lt;/p>
&lt;p>Mostro rejoint Shopstr et Plebeian Market parmi les applications de commerce natives Nostr, avec la particularité de se concentrer sur la coordination d&amp;rsquo;échanges fiat-Bitcoin. Le &lt;a href="https://github.com/MostroP2P/mostro">daemon Mostro&lt;/a> sous-jacent gère l&amp;rsquo;appariement et la résolution de litiges via les relais Nostr.&lt;/p>
&lt;h3 id="seizième-vague-de-subventions-bitcoin-dopensats">Seizième vague de subventions Bitcoin d&amp;rsquo;OpenSats&lt;/h3>
&lt;p>&lt;a href="https://opensats.org/blog/sixteenth-wave-of-bitcoin-grants">OpenSats&lt;/a> a annoncé les subventions à 17 projets open-source. Le point pertinent ici : &lt;a href="https://github.com/minibits-cash/minibits_wallet">Minibits Wallet&lt;/a>, le portefeuille Android &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> avec le support d&amp;rsquo;événements de portefeuille &lt;a href="https://nostrcompass.org/fr/topics/nip-60/">NIP-60&lt;/a> et l&amp;rsquo;intégration nutzap, reçoit un renouvellement de subvention. Minibits utilise les événements Nostr pour stocker l&amp;rsquo;état ecash, rendant les sauvegardes de portefeuille portables entre appareils via la synchronisation par relay.&lt;/p>
&lt;h3 id="nostrpress--du-profil-nostr-au-blog-statique">NostrPress : du profil Nostr au blog statique&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>) est un nouvel outil qui convertit un profil Nostr en blog entièrement statique déployable partout. On publie les articles sur Nostr via n&amp;rsquo;importe quel client, et NostrPress génère un site web autonome à partir de ces événements, avec l&amp;rsquo;hébergement local de médias et les flux RSS.&lt;/p>
&lt;p>Construit avec Nunjucks et JavaScript, NostrPress produit un site libre de toute dépendance de plateforme. La sortie générée est du HTML/CSS brut hébergeable sur n&amp;rsquo;importe quel serveur de fichiers statiques, GitHub Pages, Netlify ou un VPS personnel. L&amp;rsquo;outil rejoint &lt;a href="https://github.com/nostrband/nostrsite">Npub.pro&lt;/a> et &lt;a href="https://github.com/servus-social/servus">Servus&lt;/a> parmi les options transformant du contenu Nostr en sites web traditionnels.&lt;/p>
&lt;h3 id="antiprimal--passerelle-conforme-aux-standards-vers-le-cache-primal">Antiprimal : passerelle conforme aux standards vers le cache 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 nouveau projet d&amp;rsquo;Alex Gleason et de l&amp;rsquo;équipe Soapbox, est la passerelle WebSocket qui relie le serveur cache propriétaire de Primal aux messages du protocole Nostr standard. Primal offre les fonctionnalités comme les statistiques d&amp;rsquo;événements, la recherche de contenu et les calculs de Web of Trust via &lt;code>wss://cache.primal.net/v1&lt;/code>, mais y accéder nécessite un format de message propriétaire avec un champ &lt;code>cache&lt;/code> non standard que les clients Nostr standards ne peuvent pas utiliser. Antiprimal traduit les requêtes NIP standards vers le format de Primal et convertit les réponses en retour.&lt;/p>
&lt;p>La passerelle supporte les requêtes COUNT &lt;a href="https://nostrcompass.org/fr/topics/nip-45/">NIP-45&lt;/a> (réactions, réponses, reposts, comptages de zaps, comptages de followers), la recherche &lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>, l&amp;rsquo;information relay &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> et les Trusted Assertions &lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> au service des données Web of Trust précalculées de Primal. Un bot compagnon publie les événements NIP-85 kind 30382 (statistiques utilisateur) et kind 30383 (engagement événement) vers les relais configurables. Le projet est construit en TypeScript sur Bun et utilise la bibliothèque Nostrify. Créé le 6 février, il compte 53 commits dans ses trois premiers jours de développement et est en ligne sur antiprimal.net.&lt;/p>
&lt;h3 id="ikaros--passerelle-de-messagerie-ia-sur-signal-et-nostr">Ikaros : passerelle de messagerie IA sur Signal et Nostr&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ikaros">Ikaros&lt;/a>, un nouveau projet de l&amp;rsquo;équipe Soapbox, est la passerelle de messagerie permettant aux agents IA de communiquer via Signal et les DM chiffrés Nostr. Le pont utilise l&amp;rsquo;&lt;a href="https://agentclientprotocol.org">Agent Client Protocol&lt;/a> (ACP) afin de connecter tout assistant de codage IA compatible ACP à de vrais réseaux de messagerie. Trois pull requests constituent la construction initiale du projet cette semaine.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/1">PR #1&lt;/a> implémente un adaptateur complet de DM chiffrés &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> avec support d&amp;rsquo;envoi/réception, mise en tampon avec vidage explicite à la complétion, formats de clé privée &lt;code>nsec&lt;/code> et hex, publication multi-relay avec reconnexion automatique, et un assistant de configuration interactif. L&amp;rsquo;adaptateur utilise nostr-tools v2.23.0 et met à jour le SDK ACP vers v0.14.1.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/2">PR #2&lt;/a> corrige la perte silencieuse de messages causée par un problème de concurrence de mise à jour de session : les notifications entrantes arrivant avant l&amp;rsquo;enregistrement d&amp;rsquo;une session dans la map étaient silencieusement perdues, et le correctif met ces notifications en tampon afin de les rejouer à la fin de l&amp;rsquo;enregistrement. La &lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/3">PR #3&lt;/a> ajoute les métadonnées de nom/UUID Signal aux interactions d&amp;rsquo;agent, afin que l&amp;rsquo;agent IA sache à qui il parle et dans quel groupe. Le projet ouvre un nouvel espace de conception : les agents IA adressables via DM Nostr qui sont aussi accessibles depuis Signal, et inversement.&lt;/p>
&lt;h3 id="campagne-dallègement-du-kind-0">Campagne d&amp;rsquo;allègement du Kind 0&lt;/h3>
&lt;p>vitorpamplona a ouvert cette semaine plusieurs PRs proposant l&amp;rsquo;extraction systématique de données du kind 0 (métadonnées utilisateur) vers les kinds d&amp;rsquo;événements dédiés. La campagne répond à un problème croissant : ces événements ont accumulé au fil du temps les champs que la plupart des clients n&amp;rsquo;utilisent pas, gonflant la taille de chaque récupération de profil.&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/2216">PR #2216&lt;/a> (fusionnée) déplace les tags d&amp;rsquo;identité (tags &lt;code>i&lt;/code>) du kind 0 vers un nouveau kind 10011, puisque l&amp;rsquo;adoption de ces tags a été minimale. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2213">PR #2213&lt;/a> propose de déplacer la vérification &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05&lt;/a> vers le kind 10008, ce qui permettrait aux utilisateurs d&amp;rsquo;avoir plusieurs identifiants NIP-05 et de filtrer par adresse NIP-05. La &lt;a href="https://github.com/nostr-protocol/nips/pull/2217">PR #2217&lt;/a> propose d&amp;rsquo;extraire les adresses Lightning (lud06/lud16) vers un nouveau kind, évitant que tous les utilisateurs de kind 0 ne transportent les champs liés aux zaps qui n&amp;rsquo;importent qu&amp;rsquo;aux clients avec intégration Lightning.&lt;/p>
&lt;p>Ces propositions ont relancé la discussion sur la question plus large de la structure du kind 0, incluant la &lt;a href="https://github.com/nostr-protocol/nips/pull/1770">PR #1770&lt;/a>, la proposition de longue date visant à remplacer le JSON stringifié dans le contenu du kind 0 par les tags structurés.&lt;/p>
&lt;h3 id="support-relay-de-nip-70--critique-pour-la-messagerie-chiffrée">Support relay de NIP-70 : critique pour la messagerie chiffrée&lt;/h3>
&lt;p>L&amp;rsquo;implémentation White Noise du protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> a &lt;a href="https://blog.jgmontoya.com/2026/02/10/nip70-relay-status.html">identifié un manque critique&lt;/a> dans le support par les relais de &lt;a href="https://github.com/nostr-protocol/nips/blob/master/70.md">NIP-70&lt;/a> (Protected Events) et &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> (Authentication). Ses tests ont révélé que de grands relais publics, incluant Damus, Primal et nos.lol, rejettent les événements protégés directement avec l&amp;rsquo;erreur &lt;code>blocked: event marked as protected&lt;/code> au lieu d&amp;rsquo;initier le défi d&amp;rsquo;authentification requis.&lt;/p>
&lt;p>Cela brise la fonctionnalité de sécurité clé : NIP-70 permet la suppression sécurisée de KeyPackages MLS expirés, empêchant les attaques de type &amp;laquo; capturer maintenant, déchiffrer plus tard &amp;raquo;. En l&amp;rsquo;absence de support relay, les protocoles de messagerie chiffrée ne peuvent pas protéger leurs utilisateurs contre la compromission future de clés. White Noise a désactivé NIP-70 par défaut en réponse, conservant un drapeau optionnel destiné à ceux disposant de relais compatibles.&lt;/p>
&lt;p>&lt;strong>Appel aux opérateurs de relais :&lt;/strong> Implémentez le flux d&amp;rsquo;authentification NIP-42 complet. Lorsqu&amp;rsquo;un événement protégé arrive, défiez le client de prouver sa propriété, puis acceptez l&amp;rsquo;écriture validée. Rejeter les événements protégés directement brise les garanties de sécurité du protocole dont dépendent les applications de messagerie chiffrée.&lt;/p>
&lt;h2 id="versions">Versions&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>), le client web de hodlbod, a livré &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.29">0.6.29&lt;/a>. La version ajoute l&amp;rsquo;affichage de topics et de commentaires sur les highlights kind 9802. Un nouvel élément de navigation donne un accès rapide aux listes curatées par l&amp;rsquo;utilisateur depuis l&amp;rsquo;interface principale. En interne, Coracle a été mis à jour vers la dernière version de Welshman, la bibliothèque Nostr partagée qui alimente la gestion de relais et le traitement d&amp;rsquo;événements de Coracle. La liste de relais par défaut a été rafraîchie, et le suivi d&amp;rsquo;erreurs Glitchtip a été retiré du code.&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;application de signature à seuil &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a> et de gestion de clés, a livré &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/releases/tag/v1.0.3">v1.0.3&lt;/a> avec un renforcement extensif de la sécurité. La version introduit la validation IPC, l&amp;rsquo;isolation Electron et les vérifications de relais sensibles au SSRF contre la falsification de requêtes côté serveur. Un nouveau flux d&amp;rsquo;intégration et d&amp;rsquo;importation de parts simplifie la distribution de clés, la planification de relais inclut désormais la normalisation et la fusion par priorité, et l&amp;rsquo;architecture API Electron basée sur le preload améliore la frontière de sécurité entre le renderer et le processus principal. Un système de maintien en vie du signataire assure la stabilité en session de signature à seuil, et les améliorations UX de récupération réduisent la friction de la restauration de clés.&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>, le signataire d&amp;rsquo;événements Android, a publié &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.2-pre1">v4.1.2-pre1&lt;/a> corrigeant l&amp;rsquo;affichage manquant du score de confiance de relais introduit dans v4.1.1, résolvant les problèmes d&amp;rsquo;analyse JSON propres aux requêtes de chiffrement/déchiffrement non-Nostr, et migrant le modèle de compte de LiveData vers Flow afin d&amp;rsquo;obtenir une gestion d&amp;rsquo;état plus prévisible. La version bascule aussi les secrets bunker vers les UUIDs complets et passe à Gradle plugin 9.&lt;/p>
&lt;h3 id="mostro-mobile-v110-et-daemon-v0161">Mostro Mobile v1.1.0 et Daemon v0.16.1&lt;/h3>
&lt;p>Voir la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/#mostro-livre-sa-premi%c3%a8re-b%c3%aata-publique">section Actualités ci-dessus&lt;/a> au sujet de la version mobile. Sur le serveur, le &lt;a href="https://github.com/MostroP2P/mostro">daemon Mostro&lt;/a> a livré &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.1">v0.16.1&lt;/a>, ajoutant la publication automatique de métadonnées NIP-01 kind 0 au démarrage (&lt;a href="https://github.com/MostroP2P/mostro/pull/575">PR #575&lt;/a>), de sorte que le daemon annonce son identité sur le réseau quand il se connecte. La version corrige aussi la documentation du calcul de frais de développement (&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>), le protocole de financement P2P décentralisé construit sur Bitcoin et Nostr, a livré &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.5">v0.2.5&lt;/a> avec trois PRs fusionnées. La &lt;a href="https://github.com/block-core/angor/pull/649">PR #649&lt;/a> redessine la section de gestion de fonds (V2), remplaçant la mise en page précédente par la nouvelle interface suivant les UTXOs individuels et les positions d&amp;rsquo;investissement. La &lt;a href="https://github.com/block-core/angor/pull/651">PR #651&lt;/a> révise l&amp;rsquo;InvoiceView avec les styles de boutons mis à jour, les dialogues fermables, la commande &amp;laquo; Copier l&amp;rsquo;adresse &amp;raquo;, le support de l&amp;rsquo;annulation de surveillance d&amp;rsquo;adresses et un flux d&amp;rsquo;investissement amélioré. La &lt;a href="https://github.com/block-core/angor/pull/652">PR #652&lt;/a> ajoute les serveurs d&amp;rsquo;images &lt;a href="https://nostrcompass.org/fr/topics/nip-96/">NIP-96&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">spec&lt;/a>) configurables dans les paramètres, permettant aux utilisateurs de choisir quel point d&amp;rsquo;accès de téléversement média gère les images et la documentation de leurs projets. La &lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.4">v0.2.4&lt;/a> a été livrée la semaine précédente.&lt;/p>
&lt;h3 id="ridestr-v022-et-v023">Ridestr v0.2.2 et v0.2.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>, la plateforme de covoiturage décentralisée &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/#ridestr-v020--version-roadflare">couverte la semaine dernière&lt;/a>, a poursuivi son itération rapide avec &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.2">v0.2.2&lt;/a> (Bridge Payment Hotfix) et &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.3">v0.2.3&lt;/a> suite à la v0.2.0 &amp;laquo; RoadFlare Release &amp;raquo;. Le hotfix v0.2.2 corrige un bug où les paiements bridge &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> inter-mints annulaient automatiquement les courses pendant que le paiement était encore en traitement ou allait finalement aboutir, empêchant l&amp;rsquo;annulation prématurée lors de règlements lents. La version corrige aussi le scintillement de l&amp;rsquo;UI et les zones tactiles cassées sur le bouton &amp;laquo; ma position &amp;raquo;. La v0.2.3 livre les corrections de bugs supplémentaires. Chaque version inclut les APK séparés, l&amp;rsquo;un Ridestr (application passager) et l&amp;rsquo;autre Drivestr (application conducteur).&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 bibliothèque d&amp;rsquo;aide PHP, a livré &lt;a href="https://github.com/nostrver-se/nostr-php/releases/tag/1.9.4">1.9.4&lt;/a> ajoutant la propriété &lt;code>timeout&lt;/code> configurable à la classe de requête (&lt;a href="https://github.com/nostrver-se/nostr-php/pull/106">PR #106&lt;/a>). Cela permet aux développeurs de définir les durées de timeout personnalisées lors de la connexion aux relais et lors de chaque requête de message, évitant les blocages indéfinis quand un relay ne répond pas ou est lent.&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>), le magasin d&amp;rsquo;applications Android construit sur Nostr, &lt;strong>a atteint son jalon de version stable 1.0&lt;/strong> cette semaine après plusieurs mois de release candidates.&lt;/p>
&lt;p>La version 1.0 inclut les améliorations de stabilité critiques : la gestion de l&amp;rsquo;état du bouton d&amp;rsquo;installation garantissant que Supprimer apparaît immédiatement après la fin de l&amp;rsquo;installation, les messages d&amp;rsquo;erreur conviviaux avec détails techniques extensibles, et un bouton &amp;laquo; Signaler un problème &amp;raquo; qui envoie les DM chiffrés via Nostr avec les clés éphémères. On trouve aussi un nouvel écran de mises à jour avec polling et suivi par lots, un meilleur watchdog de téléchargement destiné aux transferts bloqués, les limites de téléchargements concurrents dynamiques basées sur la performance de l&amp;rsquo;appareil, la synchronisation plus fréquente de paquets installés et la logique de comparaison de versions améliorée. L&amp;rsquo;équipe a corrigé un problème critique avec flutter_secure_storage et amélioré la gestion de cas limites du gestionnaire de paquets.&lt;/p>
&lt;p>Ce jalon représente la maturation de la première plateforme de distribution d&amp;rsquo;applications dédiée de Nostr, permettant aux développeurs de publier les applications Android directement aux utilisateurs, en dehors du contrôle centralisé de magasins d&amp;rsquo;applications.&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>, l&amp;rsquo;outil CLI en Go de l&amp;rsquo;équipe &lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a> qui remplace l&amp;rsquo;outillage de publication précédent afin de signer et téléverser les applications Android vers les relais Nostr, a publié &lt;a href="https://github.com/zapstore/zsp/releases/tag/v0.3.1">v0.3.1&lt;/a>. ZSP gère l&amp;rsquo;acquisition d&amp;rsquo;APK depuis GitHub, GitLab, Codeberg, F-Droid ou les fichiers locaux, puis analyse les métadonnées, signe les événements Nostr (via clé privée, bunker &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>, ou extension navigateur &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07&lt;/a>), et téléverse les artefacts vers les serveurs &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a>. Cette version ajoute un mode hors ligne complet destiné à la liaison de keystore en l&amp;rsquo;absence de connexion réseau, les en-têtes &lt;code>Content-Digest&lt;/code> sur les téléversements Blossom assurant la conformité au protocole, la correction de la détection d&amp;rsquo;APK arm64-v8a depuis les dépôts F-Droid, les corrections de paramètres de requête de fin sur GitLab, et le support complet de fichiers &lt;code>.env&lt;/code> dans la configuration.&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>, le client iOS Nostr, est passé à la version 1.17 (&lt;a href="https://github.com/damus-io/damus/pull/3606">PR #3606&lt;/a>). La version corrige un problème de RelayPool où les connexions se fermaient après la libération du bail éphémère (&lt;a href="https://github.com/damus-io/damus/pull/3605">PR #3605&lt;/a>), ce qui pouvait causer l&amp;rsquo;interruption inattendue d&amp;rsquo;abonnements. Elle résout aussi un bug où la timeline de favoris n&amp;rsquo;affichait pas d&amp;rsquo;événements lors du changement d&amp;rsquo;onglets (&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>, le couteau suisse Nostr en CLI, a livré &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a> avec trois corrections de stabilité : prévention d&amp;rsquo;un panic quand les tags de challenge AUTH sont nil ou trop courts, vérification d&amp;rsquo;erreurs du dateparser avant d&amp;rsquo;utiliser la valeur analysée, et gestion d&amp;rsquo;URLs de mint Cashu manquant le séparateur &lt;code>://&lt;/code>.&lt;/p>
&lt;h3 id="mi--relay-local-en-navigateur">Mi : relay local en navigateur&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>), un nouveau MiniApp &lt;a href="https://shakespeare.wtf">Shakespeare&lt;/a>, est un relay local en navigateur qui archive les événements Nostr d&amp;rsquo;un utilisateur dans IndexedDB. Mi récupère les profils (kind 0), les listes de contacts (kind 3), les listes de relais (kind 10002) et les événements de portefeuille depuis les relais connectés et stocke le tout localement, donnant un accès hors ligne à ses propres données. Construit avec React et 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>), la plateforme décentralisée d&amp;rsquo;activisme et de collecte de fonds de l&amp;rsquo;équipe Soapbox, a livré &lt;a href="https://gitlab.com/soapbox-pub/agora/-/releases/v1.0.2">v1.0.2&lt;/a> avec un APK Android disponible en téléchargement direct. C&amp;rsquo;est la première mention d&amp;rsquo;Agora dans Compass, le projet ayant été lancé le 17 janvier avec cette déclaration de mission : &amp;laquo; Rejoignez le mouvement mondial et envoyez votre soutien aux activistes sur le terrain internationalement. &amp;raquo;&lt;/p>
&lt;p>La plateforme s&amp;rsquo;articule autour de la carte du monde où l&amp;rsquo;on parcourt par pays, crée les &amp;laquo; actions &amp;raquo; géolocalisées (manifestations, campagnes, organisation communautaire) et en discute via les commentaires en fil. Tout le contenu se propage via les relais Nostr, de sorte qu&amp;rsquo;aucun serveur central ne peut être mis hors ligne afin de faire taire la coordination. Agora supporte plusieurs langues avec la parité de traduction imposée par la CI, intègre les serveurs média &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> aux téléversements et inclut la recherche, la navigation par hashtags avec bascule global/régional, les profils utilisateurs et les systèmes de réactions. La version v1.0.2 est le build Android actuel, disponible en téléchargement direct d&amp;rsquo;APK.&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>, le client Nostr 3D expérimental construit avec le moteur de jeu Bevy, a livré &lt;a href="https://codeberg.org/xonos/xonos/releases/tag/v0.1.6">v0.1.6&lt;/a>. xonos affiche les événements Nostr dans un environnement spatial 3D avec les capacités de synthèse vocale, explorant comment les données de protocole social pourraient fonctionner en dehors d&amp;rsquo;interfaces 2D conventionnelles.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&lt;/h2>
&lt;h3 id="primal-android-étend-linfrastructure-nwc">Primal Android étend l&amp;rsquo;infrastructure NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> a fusionné 18 PRs cette semaine, poursuivant la construction NWC &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/#primal-android-livre-le-chiffrement-nwc">commencée la semaine dernière&lt;/a>. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/883">PR #883&lt;/a> ajoute le support de connexions NWC à travers deux portefeuilles (Spark et externe), et la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/879">PR #879&lt;/a> implémente la méthode NWC &lt;code>lookup_invoice&lt;/code> vérifiant le statut de paiements.&lt;/p>
&lt;p>La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/880">PR #880&lt;/a> ajoute la journalisation d&amp;rsquo;audit requête-réponse NWC servant au débogage d&amp;rsquo;interactions portefeuille. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/877">PR #877&lt;/a> ajoute le support multi-comptes à &lt;code>PrimalNwcService&lt;/code>, permettant aux utilisateurs avec plusieurs profils de maintenir les connexions de portefeuille séparées. La &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/882">PR #882&lt;/a> implémente le nettoyage périodique de réservations de budget expirées, empêchant les réservations de paiement périmées de bloquer le portefeuille.&lt;/p>
&lt;p>Le travail sur l&amp;rsquo;UI inclut la refonte de l&amp;rsquo;écran de mise à niveau du portefeuille (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/889">PR #889&lt;/a>), la FAQ de mise à niveau du portefeuille (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/885">PR #885&lt;/a>), le réglage de l&amp;rsquo;adresse Lightning pendant l&amp;rsquo;intégration (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/888">PR #888&lt;/a>) et un correctif empêchant les transactions de zap d&amp;rsquo;apparaître comme paiements réguliers dans les types non-Lightning (&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/887">PR #887&lt;/a>).&lt;/p>
&lt;h3 id="divine-livre-les-flux-vidéo-api-first">diVine livre les flux vidéo API-first&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, le client vidéo courte, a fusionné 19 PRs cette semaine, s&amp;rsquo;orientant vers l&amp;rsquo;architecture API-first. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1468">PR #1468&lt;/a> introduit les flux vidéo API-first, et la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1466">PR #1466&lt;/a> ajoute les points d&amp;rsquo;accès API tendances, récents et accueil. La &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1433">PR #1433&lt;/a> indexe les contrôleurs vidéo spécifiques permettant un rendu efficace de flux.&lt;/p>
&lt;p>La gestion de profils s&amp;rsquo;est améliorée avec la &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1440">PR #1440&lt;/a> implémentant un pattern cache-plus-frais lors de la consultation de profils tiers, réduisant le temps de chargement tout en assurant la fraîcheur de données. L&amp;rsquo;équipe a aussi livré les corrections de notifications (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1437">PR #1437&lt;/a>), la refonte du flux de commentaires (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1431">PR #1431&lt;/a>) et le balayage d&amp;rsquo;onglets sur l&amp;rsquo;écran Notifications (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1388">PR #1388&lt;/a>).&lt;/p>
&lt;h3 id="white-noise--unification-du-trousseau-de-clés-et-recherche-dutilisateurs">White Noise : unification du trousseau de clés et recherche d&amp;rsquo;utilisateurs&lt;/h3>
&lt;p>Le backend &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise&lt;/a> du protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> a fusionné 4 PRs cette semaine. Deux PRs ont amélioré la gestion du trousseau de clés : la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/468">PR #468&lt;/a> rend l&amp;rsquo;identifiant du service de trousseau configurable via &lt;code>WhitenoiseConfig&lt;/code>, et la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/475">PR #475&lt;/a> unifie l&amp;rsquo;implémentation sur un seul crate &lt;code>keyring-core&lt;/code> avec les magasins natifs par plateforme, remplaçant le code fragmenté spécifique à chaque plateforme. Séparément, la &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/470">PR #470&lt;/a> ajoute la fonctionnalité de recherche d&amp;rsquo;utilisateurs.&lt;/p>
&lt;h3 id="marmot-ts-extrait-lapplication-de-chat-de-référence">Marmot TS extrait l&amp;rsquo;application de chat de référence&lt;/h3>
&lt;p>Le SDK TypeScript &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> (&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>) a fusionné la &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/40">PR #40&lt;/a>, retirant l&amp;rsquo;application de chat de référence intégrée et la transférant dans un dépôt autonome : &lt;a href="https://github.com/marmot-protocol/marmots-web-chat">marmots-web-chat&lt;/a>. Ce nouveau dépôt, créé le 6 février, est l&amp;rsquo;implémentation de référence du SDK TypeScript Marmot avec sa propre pipeline CI, la vue de chat à onglets et un système de build indépendant. La séparation permet au SDK de se concentrer sur les préoccupations de bibliothèque tandis que l&amp;rsquo;application de chat itère sur l&amp;rsquo;UX de façon indépendante.&lt;/p>
&lt;p>La PR ouverte &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/41">#41&lt;/a> migre marmot-ts vers ts-mls v2.0.0, apportant l&amp;rsquo;API redessinée avec les objets de contexte unifiés, de nouveaux utilitaires de gestion de messages (création d&amp;rsquo;événements, lecture, désérialisation), les helpers de métadonnées de key package et le support d&amp;rsquo;événements de suppression.&lt;/p>
&lt;h3 id="mises-à-jour-dalby-hub">Mises à jour d&amp;rsquo;Alby Hub&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a> a fusionné 5 PRs cette semaine. La &lt;a href="https://github.com/getAlby/hub/pull/2049">PR #2049&lt;/a> ajoute un Alby CLI à l&amp;rsquo;interface du magasin d&amp;rsquo;applications. La &lt;a href="https://github.com/getAlby/hub/pull/2033">PR #2033&lt;/a> corrige la gestion de données de zap invalides dans la liste de transactions, et la &lt;a href="https://github.com/getAlby/hub/pull/2046">PR #2046&lt;/a> retire la méthode &lt;code>ListTransactions&lt;/code> inutilisée de l&amp;rsquo;interface LNClient.&lt;/p>
&lt;h3 id="notedeck-livre-le-tableau-de-bord-et-agentium">Notedeck livre le tableau de bord et Agentium&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, le client multiplateforme Nostr de Damus, a fusionné 6 PRs cette semaine. La &lt;a href="https://github.com/damus-io/notedeck/pull/1247">PR #1247&lt;/a> ajoute un tableau de bord initial. La &lt;a href="https://github.com/damus-io/notedeck/pull/1293">PR #1293&lt;/a> introduit Agentium, un environnement de développement multi-agents qui transforme l&amp;rsquo;assistant IA Dave en un système avec deux modes IA et la gestion d&amp;rsquo;agents par scène. La &lt;a href="https://github.com/damus-io/notedeck/pull/1276">PR #1276&lt;/a> ajoute un composeur de messages multiligne avec les raccourcis clavier style Signal, et la &lt;a href="https://github.com/damus-io/notedeck/pull/1278">PR #1278&lt;/a> livre les améliorations de performance média. Parmi les PRs ouvertes à noter : &lt;a href="https://github.com/damus-io/notedeck/pull/1288">l&amp;rsquo;infrastructure outbox&lt;/a> et la &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34&lt;/a> &lt;a href="https://github.com/damus-io/notedeck/pull/1289">planification de l&amp;rsquo;application Git&lt;/a>.&lt;/p>
&lt;h3 id="agora-livre-la-refonte-majeure-de-lui">Agora livre la refonte majeure de l&amp;rsquo;UI&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora">Agora&lt;/a> a fusionné 7 PRs cette semaine aux côtés de sa version v1.0.2. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/106">PR #106&lt;/a> est la plus conséquente, fermant 11 tâches UI à travers paramètres, édition de profil, interactions carte, résultats de recherche, filtrage de commentaires et gestion de serveurs Blossom. La fusion a désactivé les boutons de réaction destinés aux utilisateurs non authentifiés (qui obtenaient auparavant un échec silencieux en essayant de réagir aux publications sur la carte), corrigé le défilement de la carte sur la ligne de date et ajouté le texte en gras correspondant dans les résultats de recherche.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/108">PR #108&lt;/a> ajoute le comptage de commentaires sous les publications du flux et sur les pages de fils. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/107">PR #107&lt;/a> ajoute le réessai automatique lors d&amp;rsquo;échecs de chargement d&amp;rsquo;événements avec un bouton de rechargement explicite quand toutes les tentatives sont épuisées. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/104">PR #104&lt;/a> change la navigation par hashtags afin d&amp;rsquo;utiliser par défaut la portée globale, puisque la portée par pays précédente retournait souvent zéro résultat.&lt;/p>
&lt;p>La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/109">PR #109&lt;/a> ajoute l&amp;rsquo;étape CI qui vérifie la parité de traductions à travers toutes les langues, faisant échouer le build si la moindre clé manque de valeur. La &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/110">PR #110&lt;/a> tronque les notes longues dans les flux afin de préserver le rythme de défilement, et la &lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/111">PR #111&lt;/a> corrige un problème de zoom mobile iOS lors de la rédaction de commentaires sur les actions, causé par de petites tailles de police.&lt;/p>
&lt;h3 id="clawstr-livre-un-cli-et-les-boutons-lightning-zap">Clawstr livre un CLI et les boutons Lightning Zap&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/clawstr">Clawstr&lt;/a>, la plateforme inspirée de Reddit où les agents IA créent et gèrent les communautés sur Nostr, a fusionné 3 PRs cette semaine. La &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/11">PR #11&lt;/a> remplace toutes les commandes nak manuelles dans la définition de compétences d&amp;rsquo;agents IA par le nouveau package &lt;code>@clawstr/cli&lt;/code> (&lt;code>npx -y @clawstr/cli@latest&lt;/code>), remplaçant la construction manuelle d&amp;rsquo;événements JSON par les commandes CLI et ajoutant les opérations de portefeuille (init, balance, zap, npc) et la recherche plein texte &lt;a href="https://nostrcompass.org/fr/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> ajoute la page de documentation &amp;laquo; For Humans &amp;raquo; et un composant &lt;code>ProfileZapDialog&lt;/code>. Le bouton de zap apparaît sur les pages de profil quand un utilisateur a configuré son adresse Lightning et fonctionne en dehors de toute connexion, utilisant LNURL-pay directement avec les montants prédéfinis en sats et l&amp;rsquo;affichage de QR code. La &lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/12">PR #12&lt;/a> documente la commande &lt;code>wallet sync&lt;/code>, expliquant comment les paiements vers les adresses Lightning sont retenus par NPC jusqu&amp;rsquo;à ce que les agents synchronisent explicitement leurs portefeuilles.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&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 : Réponse relay HyperLogLog&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/fr/topics/nip-45/">NIP-45 (Comptage d&amp;rsquo;événements)&lt;/a> supporte désormais le comptage approximatif HyperLogLog (HLL). Un relay peut retourner les valeurs de registres HLL de 256 octets aux côtés de réponses COUNT. En fusionnant ces registres de plusieurs relais, un client calcule la cardinalité approximative en évitant de télécharger les ensembles complets d&amp;rsquo;événements. Le cas d&amp;rsquo;utilisation principal concerne le comptage de followers et de réactions en évitant de dépendre d&amp;rsquo;un seul relay comme source faisant autorité. Même deux événements de réaction consomment plus de bande passante que la charge utile HLL de 256 octets. Avec les corrections HyperLogLog++, la précision s&amp;rsquo;améliore sur de petites cardinalités.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2216">NIP-39 : Tags d&amp;rsquo;identité déplacés du Kind 0&lt;/a>&lt;/strong> - Les tags de revendication d&amp;rsquo;identité &lt;a href="https://nostrcompass.org/fr/topics/nip-39/">NIP-39&lt;/a> (tags &lt;code>i&lt;/code>) ont été extraits du kind 0 vers un nouveau kind 10011 dédié. La raison : presque aucun client ne supporte ces tags, ils ajoutent donc du poids à chaque récupération de kind 0 en apportant peu de valeur. C&amp;rsquo;est la première d&amp;rsquo;une série de PRs d&amp;rsquo;extraction du kind 0 de vitorpamplona (voir la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/#campagne-dall%c3%a8gement-du-kind-0">section Actualités&lt;/a>).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&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 propose un protocole d&amp;rsquo;accès aux relais Nostr via un tunnel chiffré passant par un relay de rendez-vous public. Le mécanisme permet l&amp;rsquo;accès aux relais derrière NAT ou pare-feu, incluant les relais personnels fonctionnant sur un serveur domestique ou un appareil mobile. Le tunnel utilise les événements kind 24891/24892 avec le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> à travers un relay de rendez-vous qui ne peut pas déchiffrer le trafic. Application pratique : tout client Nostr peut exposer un stockage local (IndexedDB, SQLite) comme point d&amp;rsquo;accès relay destiné à la synchronisation inter-appareils. La sémantique NIP-01 standard (REQ, EVENT, CLOSE, COUNT) traverse le tunnel de façon transparente. Des implémentations de référence existent en Go (ORLY Relay) et 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 propose les Nostr Web Tokens, un format d&amp;rsquo;événement Nostr transmettant les revendications signées entre parties web, inspiré de JSON Web Tokens (JWTs). NWT peut représenter à la fois &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> (HTTP Auth) et &lt;a href="https://nostrcompass.org/fr/topics/blossom/">les événements d&amp;rsquo;autorisation Blossom&lt;/a>, donnant aux clients de la flexibilité sur la durée de validité de tokens. La bibliothèque de référence en Go est disponible. L&amp;rsquo;&lt;a href="https://github.com/pippellia-btc/nostr-web-tokens">explication vidéo&lt;/a> et la &lt;a href="https://github.com/pippellia-btc/nostr-web-tokens#comparisons">comparaison détaillée&lt;/a> avec NIP-98 et Blossom Auth sont liées dans la PR.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">Simplification de NIP-47&lt;/a>&lt;/strong> - rolznz propose de retirer les méthodes &lt;code>multi_&lt;/code> de &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>, qui étaient complexes à implémenter et n&amp;rsquo;ont pas gagné en adoption. La PR réduit aussi la duplication dans le chiffrement et la gestion de la rétrocompatibilité, nettoyant la spécification après &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/#mises-%C3%A0-jour-des-nip">l&amp;rsquo;ajout de factures de rétention la semaine dernière&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 : Déplacement vers un kind d&amp;rsquo;événement propre&lt;/a>&lt;/strong> - vitorpamplona propose de déplacer la vérification NIP-05 du kind 0 vers un nouveau kind 10008, permettant plusieurs identifiants NIP-05 par utilisateur et le filtrage par adresse NIP-05. Fait partie de la campagne d&amp;rsquo;allègement du 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 : Adresses Lightning depuis le Kind 0&lt;/a>&lt;/strong> - vitorpamplona propose d&amp;rsquo;extraire lud06/lud16 (adresses Lightning) du kind 0 vers un kind d&amp;rsquo;événement dédié par &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a>, poursuivant l&amp;rsquo;effort d&amp;rsquo;allègement du kind 0.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2165">Hyperpersonnalisation de profil&lt;/a>&lt;/strong> - fiatjaf propose les capacités de personnalisation de profil étendues au-delà de ce que le kind 0 supporte actuellement.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="approfondissement-nip--nip-45-comptage-dévénements-et-hyperloglog">Approfondissement NIP : NIP-45 (Comptage d&amp;rsquo;événements) et HyperLogLog&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-45/">NIP-45&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/45.md">spec&lt;/a>) définit comment un client peut demander aux relais de compter les événements correspondant à un filtre en évitant de transférer les événements eux-mêmes. La fusion cette semaine du &lt;a href="https://github.com/nostr-protocol/nips/pull/1561">support HyperLogLog&lt;/a> ajoute la structure de données probabiliste qui résout un problème fondamental : comment compter les éléments à travers plusieurs relais indépendants.&lt;/p>
&lt;p>&lt;strong>Le problème :&lt;/strong>&lt;/p>
&lt;p>Compter les événements sur un seul relay est simple : on envoie la requête COUNT, on reçoit un nombre en retour. Compter à travers le réseau est plus difficile. Si le relay A rapporte 50 réactions et le relay B en rapporte 40, le total n&amp;rsquo;est pas 90 car beaucoup d&amp;rsquo;événements existent sur les deux relais. En l&amp;rsquo;absence de téléchargement complet servant à dédupliquer, un client ne peut pas calculer le vrai comptage.&lt;/p>
&lt;p>&lt;strong>HyperLogLog :&lt;/strong>&lt;/p>
&lt;p>HyperLogLog (HLL) est un algorithme probabiliste qui estime le nombre d&amp;rsquo;éléments distincts dans un ensemble en utilisant une quantité fixe de mémoire. L&amp;rsquo;implémentation NIP-45 utilise 256 registres d&amp;rsquo;un octet chacun, consommant exactement 256 octets quel que soit le nombre d&amp;rsquo;événements comptés. L&amp;rsquo;algorithme fonctionne en examinant la représentation binaire de chaque ID d&amp;rsquo;événement et en suivant la position de zéros en tête. Un événement dont l&amp;rsquo;ID commence par beaucoup de zéros est statistiquement rare, donc son occurrence indique un grand ensemble.&lt;/p>
&lt;p>&lt;strong>Fonctionnement dans NIP-45 :&lt;/strong>&lt;/p>
&lt;p>Un relay répondant à la requête COUNT peut inclure un champ &lt;code>hll&lt;/code> contenant les valeurs de registres encodées en 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>Le client collecte les valeurs HLL de plusieurs relais et fusionne le tout en prenant la valeur maximale à chaque position de registre. Ce HLL fusionné représente l&amp;rsquo;union de tous les ensembles d&amp;rsquo;événements à travers les relais, gérant automatiquement la déduplication. L&amp;rsquo;estimation finale de cardinalité est calculée à partir de registres fusionnés.&lt;/p>
&lt;p>&lt;strong>Précision :&lt;/strong>&lt;/p>
&lt;p>Avec 256 registres, l&amp;rsquo;erreur standard est d&amp;rsquo;environ 5,2%. Un vrai comptage de 1 000 donnera typiquement une estimation entre 948 et 1 052. Avec de plus grands comptages, l&amp;rsquo;erreur relative reste constante : un vrai comptage de 100 000 s&amp;rsquo;estimera à environ 94 800-105 200. Grâce aux corrections HyperLogLog++, la précision s&amp;rsquo;améliore aussi sur de petites cardinalités (sous environ 200), où l&amp;rsquo;algorithme de base tend à surestimer.&lt;/p>
&lt;p>&lt;strong>Importance :&lt;/strong>&lt;/p>
&lt;p>Les métriques sociales (comptages de followers, de réactions, de reposts) sont au centre de tout client de médias sociaux. En l&amp;rsquo;absence de HLL, un client doit soit interroger un seul relay &amp;laquo; de confiance &amp;raquo; (centralisant le comptage), soit télécharger tous les événements de tous les relais (gaspillant la bande passante). HLL permet aux clients d&amp;rsquo;obtenir un bon comptage approximatif de plusieurs relais avec la surcharge totale de 256 octets par relay, quel que soit le comptage réel. Même deux événements de réaction consomment plus de bande passante qu&amp;rsquo;une charge utile HLL complète.&lt;/p>
&lt;p>La spécification fixe le nombre de registres à 256 dans un souci d&amp;rsquo;interopérabilité. Tous les relais produisent les valeurs HLL que tout client peut fusionner, quelle que soit l&amp;rsquo;implémentation de relay. Cette standardisation signifie qu&amp;rsquo;on peut implémenter le support HLL en une fois et bénéficier de chaque relay qui le supporte.&lt;/p>
&lt;p>&lt;strong>Statut actuel :&lt;/strong>&lt;/p>
&lt;p>La PR a été ouverte par fiatjaf et discutée pendant plusieurs mois avant d&amp;rsquo;être fusionnée cette semaine. Il faudra ajouter le calcul HLL aux gestionnaires COUNT dans les implémentations de relais, et la fusion HLL à la logique d&amp;rsquo;agrégation de comptages dans les clients.&lt;/p>
&lt;h2 id="approfondissement-nip--nip-96-stockage-de-fichiers-http-et-la-transition-vers-blossom">Approfondissement NIP : NIP-96 (Stockage de fichiers HTTP) et la transition vers Blossom&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-96/">NIP-96&lt;/a> (&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">spec&lt;/a>) définissait comment les clients Nostr téléversent, téléchargent et gèrent les fichiers sur les serveurs média HTTP. Désormais marqué comme &amp;laquo; non recommandé &amp;raquo; en faveur de &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> (hébergement média basé sur BUD), NIP-96 reste pertinent cette semaine car Angor v0.2.5 &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/#angor-v025">a ajouté la configuration de serveur NIP-96&lt;/a> et ZSP v0.3.1 &lt;a href="https://nostrcompass.org/fr/newsletters/2026-02-11-newsletter/#zsp-v031">téléverse vers les serveurs Blossom&lt;/a>, illustrant la transition de protocole en cours.&lt;/p>
&lt;p>&lt;strong>Fonctionnement de NIP-96 :&lt;/strong>&lt;/p>
&lt;p>Un client découvre la capacité d&amp;rsquo;un serveur de fichiers en récupérant &lt;code>/.well-known/nostr/nip96.json&lt;/code>, qui retourne l&amp;rsquo;URL de l&amp;rsquo;API, les types de contenu supportés, les limites de taille et les transformations média disponibles :&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>Le client téléverse via un POST &lt;code>multipart/form-data&lt;/code> vers l&amp;rsquo;URL de l&amp;rsquo;API avec un en-tête d&amp;rsquo;autorisation &lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> (un événement Nostr signé prouvant l&amp;rsquo;identité de celui qui téléverse). Le serveur retourne la structure de métadonnées de fichier &lt;a href="https://nostrcompass.org/fr/topics/nip-94/">NIP-94&lt;/a> contenant l&amp;rsquo;URL du fichier, les hashes SHA-256 originaux et transformés, le type MIME et les dimensions :&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>On télécharge via les requêtes GET vers &lt;code>&amp;lt;api_url&amp;gt;/&amp;lt;sha256-hash&amp;gt;&lt;/code>, avec les paramètres de requête optionnels activant les transformations côté serveur comme le redimensionnement d&amp;rsquo;images. La suppression passe par DELETE avec l&amp;rsquo;authentification NIP-98, et seul l&amp;rsquo;auteur original du téléversement peut supprimer ses fichiers. Un point d&amp;rsquo;accès de listing de fichiers retourne les résultats paginés de téléversements d&amp;rsquo;un utilisateur.&lt;/p>
&lt;p>Chaque utilisateur publie les événements kind 10096 déclarant ses serveurs de téléversement préférés, permettant aux clients de sélectionner automatiquement le bon serveur en l&amp;rsquo;absence de configuration manuelle.&lt;/p>
&lt;p>&lt;strong>Raisons de la dépréciation :&lt;/strong>&lt;/p>
&lt;p>NIP-96 liait les URLs de fichiers à un serveur spécifique. Si &lt;code>files.example.com&lt;/code> tombait en panne, chaque note Nostr référençant ses URLs perdait ses médias. Le serveur était l&amp;rsquo;adresse, et l&amp;rsquo;adresse était fragile.&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> (Blobs Stored Simply on Mediaservers) inverse cette logique en faisant du hash SHA-256 du contenu du fichier l&amp;rsquo;identifiant canonique. L&amp;rsquo;URL Blossom ressemble à &lt;code>https://blossom.example/&amp;lt;sha256&amp;gt;.png&lt;/code>, mais tout serveur Blossom hébergeant le même fichier le sert au même chemin de hash. Si un serveur disparaît, le client interroge un autre serveur demandant le même hash. L&amp;rsquo;adressage par contenu rend les données portables entre serveurs par défaut.&lt;/p>
&lt;p>Blossom simplifie aussi l&amp;rsquo;API. NIP-96 utilisait les téléversements de formulaires multipart avec les réponses JSON, les politiques de transformation et un point de découverte. Blossom utilise un simple PUT aux téléversements, GET aux téléchargements, et les événements Nostr signés à l&amp;rsquo;autorisation. La spécification Blossom est divisée en documents modulaires : BUD-01 couvre le protocole serveur, l&amp;rsquo;autorisation et la récupération, BUD-02 couvre le téléversement de blobs, BUD-03 couvre les serveurs utilisateurs, et BUD-04 couvre le mirroring entre serveurs.&lt;/p>
&lt;p>La dépréciation a eu lieu en septembre 2025 via la &lt;a href="https://github.com/nostr-protocol/nips/pull/2047">PR #2047&lt;/a>, qui a marqué NIP-96 comme &amp;laquo; non recommandé &amp;raquo; dans l&amp;rsquo;index de NIPs.&lt;/p>
&lt;p>&lt;strong>La transition en pratique :&lt;/strong>&lt;/p>
&lt;p>Nostr.build et void.cat supportaient NIP-96 et ont ajouté ou migré vers les points d&amp;rsquo;accès Blossom. Sur le plan client, la version v0.2.5 d&amp;rsquo;Angor cette semaine a ajouté la configuration de serveur NIP-96 applicable aux images de projets, tandis que la version v0.3.1 de ZSP téléverse les artefacts exclusivement vers les serveurs Blossom avec les en-têtes &lt;code>Content-Digest&lt;/code> assurant la conformité au protocole. Amethyst et Primal supportent les téléversements Blossom. La coexistence continuera probablement jusqu&amp;rsquo;à ce que toutes les implémentations NIP-96 restantes achèvent leur migration.&lt;/p>
&lt;p>&lt;strong>Ce qui perdure :&lt;/strong>&lt;/p>
&lt;p>Les événements de préférence de serveur kind 10096 restent utiles à la sélection de serveur Blossom. Les métadonnées de fichier NIP-94 (événements kind 1063) décrivent toujours les propriétés de fichiers quel que soit le protocole de téléversement qui a servi à les créer. Le hachage SHA-256 que NIP-96 utilisait aux URLs de téléchargement est devenu le fondement de l&amp;rsquo;adressage par contenu de Blossom. La conception de NIP-96 a éclairé ce que Blossom a simplifié : la leçon était que l&amp;rsquo;hébergement média sur un réseau décentralisé nécessite un stockage adressé par contenu afin de correspondre à la résistance à la censure de la couche relay.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Envoyez vos actualités et propositions de projets à couvrir via &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DM&lt;/a> ou trouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #8</title><link>https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-02-04-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> rust-nostr livre une refonte majeure de l&amp;rsquo;API avec 21 PRs révisant l&amp;rsquo;architecture du SDK. Nostria 3.0 lance avec la navigation à double volet, la gestion des listes et une refonte complète de l&amp;rsquo;interface. Vector ajoute l&amp;rsquo;accélération SIMD atteignant des gains de 65x à 184x et livre le support du protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> pour la messagerie de groupe chiffrée. Frostr apporte la signature à seuil sur iOS via TestFlight. Damus implémente les indices de relais &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19 (Entités encodées Bech32)&lt;/a> pour la découverte de contenu inter-relais. Primal Android ajoute le chiffrement NWC et les exports de transactions du portefeuille. nostr-tools et NDK reçoivent des améliorations de fiabilité. NIP-82 (Applications logicielles) s&amp;rsquo;étend pour couvrir 98% des plateformes d&amp;rsquo;appareils. Le dépôt NIPs fusionne le support des factures de rétention pour &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Les nouvelles propositions de protocole incluent NIP-74 pour les podcasts, NIP-DB pour les bases de données d&amp;rsquo;événements navigateur et une suite TRUSTed Filters pour la curation de contenu décentralisée. Les nouveaux projets incluent Instagram to Nostr v2 pour la migration de contenu, Pod21 lançant une place de marché d&amp;rsquo;impression 3D décentralisée, Clawstr introduisant des communautés gérées par agents IA, et Shosho et NosCall étendant les capacités de streaming en direct et d&amp;rsquo;appels vidéo.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> rust-nostr livre une refonte majeure de l&amp;rsquo;API avec 21 PRs révisant l&amp;rsquo;architecture du SDK. Nostria 3.0 lance avec la navigation à double volet, la gestion des listes et une refonte complète de l&amp;rsquo;interface. Vector ajoute l&amp;rsquo;accélération SIMD atteignant des gains de 65x à 184x et livre le support du protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> pour la messagerie de groupe chiffrée. Frostr apporte la signature à seuil sur iOS via TestFlight. Damus implémente les indices de relais &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19 (Entités encodées Bech32)&lt;/a> pour la découverte de contenu inter-relais. Primal Android ajoute le chiffrement NWC et les exports de transactions du portefeuille. nostr-tools et NDK reçoivent des améliorations de fiabilité. NIP-82 (Applications logicielles) s&amp;rsquo;étend pour couvrir 98% des plateformes d&amp;rsquo;appareils. Le dépôt NIPs fusionne le support des factures de rétention pour &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>. Les nouvelles propositions de protocole incluent NIP-74 pour les podcasts, NIP-DB pour les bases de données d&amp;rsquo;événements navigateur et une suite TRUSTed Filters pour la curation de contenu décentralisée. Les nouveaux projets incluent Instagram to Nostr v2 pour la migration de contenu, Pod21 lançant une place de marché d&amp;rsquo;impression 3D décentralisée, Clawstr introduisant des communautés gérées par agents IA, et Shosho et NosCall étendant les capacités de streaming en direct et d&amp;rsquo;appels vidéo.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="rust-nostr-livre-une-refonte-majeure-de-lapi">rust-nostr livre une refonte majeure de l&amp;rsquo;API&lt;/h3>
&lt;p>Le SDK &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> a subi une refonte architecturale significative cette semaine avec 21 PRs fusionnées introduisant des changements cassants à travers la bibliothèque. La refonte affecte les APIs principales sur lesquelles la plupart des développeurs Rust comptent.&lt;/p>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1245">PR #1245&lt;/a> redessine les APIs de notification, tandis que &lt;a href="https://github.com/rust-nostr/nostr/pull/1244">PR #1244&lt;/a> remplace &lt;code>RelayNotification::Shutdown&lt;/code> par &lt;code>RelayStatus::Shutdown&lt;/code> pour une gestion d&amp;rsquo;état plus propre. Les APIs de signataire s&amp;rsquo;alignent maintenant avec les autres patterns du SDK via &lt;a href="https://github.com/rust-nostr/nostr/pull/1243">PR #1243&lt;/a>. Les méthodes Client et Relay ont été nettoyées dans &lt;a href="https://github.com/rust-nostr/nostr/pull/1242">PR #1242&lt;/a>, et les options client utilisent maintenant un pattern builder (&lt;a href="https://github.com/rust-nostr/nostr/pull/1241">PR #1241&lt;/a>).&lt;/p>
&lt;p>Les APIs d&amp;rsquo;envoi de messages ont été redessinées dans &lt;a href="https://github.com/rust-nostr/nostr/pull/1240">PR #1240&lt;/a>, le désabonnement REQ dans &lt;a href="https://github.com/rust-nostr/nostr/pull/1239">PR #1239&lt;/a>, et la suppression de relais dans &lt;a href="https://github.com/rust-nostr/nostr/pull/1229">PR #1229&lt;/a>. Une &lt;a href="https://github.com/rust-nostr/nostr/pull/1246">PR ouverte #1246&lt;/a> ajoute le support des APIs bloquantes pour compléter la refonte.&lt;/p>
&lt;p>Les changements apportent de la cohérence au SDK mais nécessiteront un effort de migration de la part des projets existants. Les développeurs construisant sur rust-nostr devraient examiner attentivement le changelog avant de mettre à jour.&lt;/p>
&lt;h3 id="instagram-to-nostr-v2-permet-la-migration-de-contenu">Instagram to Nostr v2 permet la migration de contenu&lt;/h3>
&lt;p>Un nouvel outil permet aux créateurs de migrer leur contenu existant des plateformes centralisées vers Nostr. &lt;a href="https://github.com/primalpaul1/instagram-to-nostr-v2">Instagram to Nostr v2&lt;/a> supporte l&amp;rsquo;import depuis Instagram, TikTok, Twitter et Substack sans nécessiter l&amp;rsquo;accès aux clés privées de l&amp;rsquo;utilisateur.&lt;/p>
&lt;p>L&amp;rsquo;outil répond à une barrière d&amp;rsquo;intégration courante : les utilisateurs hésitants à repartir de zéro sur une nouvelle plateforme peuvent maintenant préserver leur historique de contenu. Il supporte également l&amp;rsquo;offre de comptes Nostr à de nouveaux utilisateurs ou la proposition de contenu à des comptes existants, le rendant utile pour aider les autres à transitionner vers le protocole.&lt;/p>
&lt;h3 id="pod21--réseau-dimpression-3d-décentralisé">Pod21 : Réseau d&amp;rsquo;impression 3D décentralisé&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>) connecte les opérateurs d&amp;rsquo;imprimantes 3D avec les acheteurs en utilisant Nostr pour la coordination de la place de marché. La plateforme inclut un bot DM compatible &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17 (Messages directs privés)&lt;/a> qui gère les interactions de la place de marché, permettant aux acheteurs de demander des impressions et de négocier avec les fabricants via des messages directs chiffrés.&lt;/p>
&lt;p>Les fabricants listent leur capacité et leurs capacités d&amp;rsquo;impression ; les acheteurs parcourent les annonces et initient les commandes via le bot. L&amp;rsquo;architecture suit un pattern similaire aux autres applications de commerce Nostr : découverte basée sur les relais, messagerie chiffrée pour la coordination des commandes et Lightning pour le règlement. Pod21 rejoint Ridestr et Shopstr comme applications Nostr coordonnant des transactions du monde réel via le protocole.&lt;/p>
&lt;h3 id="clawstr--réseau-social-dagents-ia">Clawstr : Réseau social d&amp;rsquo;agents IA&lt;/h3>
&lt;p>&lt;a href="https://github.com/clawstr/clawstr">Clawstr&lt;/a> se lance comme une plateforme inspirée de Reddit où des agents IA créent et gèrent des communautés sur Nostr. La plateforme permet aux agents autonomes d&amp;rsquo;établir des communautés thématiques, de curer le contenu et d&amp;rsquo;interagir avec les utilisateurs. Les communautés fonctionnent comme des subreddits mais avec des modérateurs et curateurs IA guidant les discussions. L&amp;rsquo;architecture utilise le protocole ouvert de Nostr pour les interactions agent-à-agent et agent-à-humain, établissant un nouveau modèle pour la formation de communautés sur les médias sociaux décentralisés.&lt;/p>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;h3 id="ridestr-v020--version-roadflare">Ridestr v0.2.0 : Version RoadFlare&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> a livré &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.0">v0.2.0&lt;/a>, baptisée la &amp;ldquo;Version RoadFlare&amp;rdquo;, introduisant les réseaux de covoiturage personnels. La fonctionnalité permet aux passagers d&amp;rsquo;ajouter leurs conducteurs favoris à un réseau de confiance. Les conducteurs approuvent les abonnés et partagent des localisations chiffrées, permettant aux passagers de voir quand les conducteurs de confiance sont en ligne et à proximité. Les demandes de trajet vont directement aux conducteurs connus.&lt;/p>
&lt;p>La fiabilité des paiements s&amp;rsquo;est améliorée avec la récupération automatique de séquestre, une meilleure synchronisation du portefeuille entre appareils et un traitement des paiements plus rapide via le polling progressif. &lt;a href="https://github.com/variablefate/ridestr/pull/37">PR #37&lt;/a> ajoute l&amp;rsquo;infrastructure Phase 5-6 supportant ces fonctionnalités. &lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.1">v0.2.1&lt;/a> a suivi avec des corrections pour les bugs de dialogue de paiement et le flux &amp;ldquo;Ajouter aux favoris&amp;rdquo; après trajet.&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>, le client multiplateforme de sondreb conçu pour l&amp;rsquo;échelle mondiale, a livré la version 3.0 avec une refonte complète de l&amp;rsquo;interface, un nouveau logo et des centaines de corrections. La version représente un cycle de développement intensif de six semaines.&lt;/p>
&lt;p>La navigation à double volet est le plus grand changement UX, permettant aux utilisateurs de bureau de réduire les changements de contexte lors des déplacements entre listes, détails et fils de discussion. Une nouvelle section Accueil fournit une vue d&amp;rsquo;ensemble de toutes les fonctionnalités disponibles, et tous les écrans partagent une barre d&amp;rsquo;outils, une mise en page et des fonctionnalités unifiées.&lt;/p>
&lt;p>La gestion des listes est la mise à jour de fonctionnalité la plus significative, intégrée dans toute l&amp;rsquo;application. Les utilisateurs peuvent gérer les listes de profils et filtrer le contenu dans n&amp;rsquo;importe quelle fonctionnalité : Streams, Musique ou Flux. Fatigué du spam dans les fils de discussion ? Filtrez par favoris pour ne voir que leurs réponses. Quick Zaps ajoute le zapping en un tap avec des valeurs configurables. Copier/Capture d&amp;rsquo;écran génère des captures d&amp;rsquo;écran pour le presse-papiers pour partager des événements n&amp;rsquo;importe où. Mots masqués filtre maintenant sur les champs de profil (name, display_name, NIP-05), permettant aux utilisateurs de bloquer tous les profils relayés avec un seul mot banni. Les paramètres sont devenus recherchables pour des changements de configuration plus rapides.&lt;/p>
&lt;p>La version ajoute le rendu des demandes de paiement BOLT11 et BOLT12, la sélection de taille de texte et de police, et la messagerie &amp;ldquo;Note-à-soi-même&amp;rdquo; dans la section Messages avec le rendu du contenu référencé comme les articles et événements. Le nouveau dialogue de partage permet un partage rapide par email, sites web ou messages directs vers plusieurs destinataires. Les fonctionnalités additionnelles incluent les ensembles d&amp;rsquo;emoji personnalisés, les Intérêts (listes de hashtags comme flux dynamiques), les Favoris, les Flux de relais publics et la personnalisation complète du menu incluant quelle option l&amp;rsquo;icône Nostria ouvre.&lt;/p>
&lt;p>Disponible sur Android, iOS, Windows et web sur &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 de bibliothèques &lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a> de hzrd149 a publié v5.1.0 pour tous les packages. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-signers%405.1.0">applesauce-signers&lt;/a> ajoute le support des méthodes &lt;code>switch_relays&lt;/code> et &lt;code>ping&lt;/code> sur les signataires distants Nostr Connect, utile pour gérer les connexions de signataires de manière programmatique. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-loaders%405.1.0">applesauce-loaders&lt;/a> introduit &lt;code>loadAsyncMap&lt;/code> pour le chargement asynchrone parallèle. &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-react%405.1.0">applesauce-react&lt;/a> ajoute des arguments de remplissage à &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> met à jour le mapping event-to-store pour gérer les chaînes directement sans nécessiter &lt;code>onlyEvents&lt;/code>.&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> (Nostr Army Knife) de fiatjaf a atteint &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a> avec des corrections de stabilité de mattn. La version prévient les panics quand les URLs de mint manquent le séparateur &lt;code>://&lt;/code>, valide les erreurs de dateparser avant d&amp;rsquo;utiliser les valeurs de date et gère les cas limites dans l&amp;rsquo;analyse des tags de challenge AUTH. Ces corrections défensives rendent le CLI plus résilient lors du traitement d&amp;rsquo;entrées malformées.&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>, le signataire de bureau multiplateforme, a livré &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.7">v0.3.7&lt;/a> ajoutant le support du navigateur d&amp;rsquo;applications Nostr avec la signature &lt;a href="https://nostrcompass.org/fr/topics/nip-07/">NIP-07 (Interface d&amp;rsquo;extension navigateur)&lt;/a>. La version enregistre les événements de chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04 (Messages directs chiffrés)&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44 (Chiffrement versionné)&lt;/a>, permettant aux utilisateurs de suivre quelles applications demandent des opérations de chiffrement. Le segment navigateur filtre maintenant par plateforme pour n&amp;rsquo;afficher que les applications 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;application de messagerie capable de fonctionner hors ligne utilisant Nostr et le mesh Bluetooth, a publié &lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.1">v1.5.1&lt;/a> avec un renforcement de la sécurité iOS. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/1012">PR #1012&lt;/a> valide les signatures d&amp;rsquo;événements Nostr avant le traitement, rejette les giftwraps et paquets intégrés invalides, plafonne les charges utiles surdimensionnées et bloque les IDs d&amp;rsquo;expéditeur BLE annonce usurpés. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/998">PR #998&lt;/a> corrige l&amp;rsquo;authentification mesh BLE iOS en liant les IDs d&amp;rsquo;expéditeur aux UUIDs de connexion, empêchant l&amp;rsquo;usurpation d&amp;rsquo;identité dans le réseau mesh. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/972">PR #972&lt;/a> ajoute la limitation du taux de notifications pour prévenir les inondations de découverte de pairs quand plusieurs appareils mesh sont à proximité.&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> a publié &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.39.2%2B6495">v1.39.2&lt;/a> ajoutant le support &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect via &lt;a href="https://github.com/keychat-io/keychat-app/pull/148">PR #148&lt;/a>. Les utilisateurs peuvent maintenant connecter des portefeuilles Lightning externes pour les paiements dans l&amp;rsquo;application de messagerie. La version ajoute également les notifications de bureau 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>, le client Flutter multiplateforme, a livré &lt;a href="https://github.com/haorendashu/nostrmo/releases/tag/3.5.0">v3.5.0&lt;/a> révisant son système de flux. La mise à jour remplace les flux fixes par des alternatives personnalisables : Flux général, Flux de mentions et Flux de relais, chacun configurable via de nouvelles pages d&amp;rsquo;édition. La version implémente le support du modèle outbox pour un meilleur routage des événements et étend la fonctionnalité de relais local avec des limites de taille configurables et le support des abonnements.&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;application de streaming en direct pour Nostr, a publié &lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.11.1">v0.11.1&lt;/a> avec des capacités d&amp;rsquo;enregistrement et VOD. La mise à jour ajoute des indicateurs de présence dans la salle montrant qui regarde les streams, des conversations de chat en fil pour une meilleure organisation des discussions et le support Nostr Connect sur iOS via &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>. Les streamers peuvent maintenant sauvegarder leurs diffusions pour une visualisation ultérieure tout en maintenant des interactions de chat en temps réel avec leur audience.&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;application d&amp;rsquo;appels audio et vidéo pour Nostr, a livré &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.0-release">v0.5.0&lt;/a> avec des groupes de contacts pour organiser les appels par catégorie, la gestion des relais pour l&amp;rsquo;optimisation des connexions et des paramètres de serveur ICE configurables pour une meilleure traversée NAT. La version ajoute également le support du mode sombre. NosCall utilise Nostr pour la signalisation et la coordination des appels, permettant des appels pair-à-pair sans serveurs centralisés.&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>, le client vidéo courte en boucle de rabble, a publié &lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.4">1.0.4&lt;/a> comme pré-version alpha Android avant sa soumission Zapstore. La version se concentre sur les tests de gestion des clés Nostr, incluant l&amp;rsquo;import nsec, la signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46 (Nostr Connect)&lt;/a> avec nsecBunker et Amber, et la gestion des URLs nostrconnect://. L&amp;rsquo;équipe sollicite des retours sur la compatibilité des relais et l&amp;rsquo;interopérabilité vidéo avec d&amp;rsquo;autres clients. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1265">PR #1265&lt;/a> corrige la gestion des chemins de fichiers iOS qui causait l&amp;rsquo;inutilisabilité des clips vidéo après les mises à jour de l&amp;rsquo;application en stockant des chemins relatifs au lieu de chemins absolus de conteneur. &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1251">PR #1251&lt;/a> corrige les problèmes de navigation lors de la visualisation des profils depuis les commentaires.&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> a livré &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.2">v0.12.2&lt;/a> comme version stable, consolidant les &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-28-newsletter/#zeus-v0122-beta---corrections-nwc">corrections NWC couvertes dans les éditions précédentes&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>) a lancé &lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo pour iOS&lt;/a> sur &lt;a href="https://testflight.apple.com/join/72hjQe3J">TestFlight&lt;/a>, étendant la signature à seuil aux appareils Apple. Frostr utilise les signatures FROST (Flexible Round-Optimized Schnorr Threshold) pour diviser les clés nsec en parts distribuées entre les appareils, permettant la signature k-sur-n avec tolérance aux pannes. Les utilisateurs rejoignant en &amp;ldquo;mode démo&amp;rdquo; participent à une expérience de signature à seuil 2-sur-2 en direct, démontrant les capacités de coordination en temps réel du protocole. La version iOS rejoint &lt;a href="https://github.com/FROSTR-ORG/igloo-android">Igloo pour Android&lt;/a> (v0.1.2), livrée en décembre avec le support &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55 (Signataire Android)&lt;/a> pour les demandes de signature inter-applications. Les deux clients mobiles complètent &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo desktop&lt;/a> et l&amp;rsquo;extension navigateur &lt;a href="https://github.com/FROSTR-ORG/frost2x">Frost2x&lt;/a>.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&lt;/h2>
&lt;h3 id="damus-implémente-les-indices-de-relais-nip-19">Damus implémente les indices de relais NIP-19&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a> a fusionné &lt;a href="https://github.com/damus-io/damus/pull/3477">PR #3477&lt;/a>, implémentant la consommation d&amp;rsquo;indices de relais &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> pour la récupération d&amp;rsquo;événements. La fonctionnalité permet de visualiser des notes sur des relais n&amp;rsquo;étant pas dans le pool configuré de l&amp;rsquo;utilisateur en extrayant les indices de &lt;a href="https://nostrcompass.org/fr/topics/nip-10/">NIP-10 (Fils de réponse)&lt;/a>, &lt;a href="https://nostrcompass.org/fr/topics/nip-18/">NIP-18 (Reposts)&lt;/a> et des références NIP-19. L&amp;rsquo;implémentation utilise des connexions de relais éphémères avec un nettoyage par comptage de références, évitant l&amp;rsquo;expansion permanente du pool de relais.&lt;/p>
&lt;p>Les corrections additionnelles incluent l&amp;rsquo;analyse des factures Lightning (&lt;a href="https://github.com/damus-io/damus/pull/3566">PR #3566&lt;/a>), le chargement de la vue portefeuille (&lt;a href="https://github.com/damus-io/damus/pull/3554">PR #3554&lt;/a>), le timing de la liste de relais (&lt;a href="https://github.com/damus-io/damus/pull/3553">PR #3553&lt;/a>) et le préchargement des profils pour réduire le &amp;ldquo;popping&amp;rdquo; visuel (&lt;a href="https://github.com/damus-io/damus/pull/3550">PR #3550&lt;/a>). Une &lt;a href="https://github.com/damus-io/damus/pull/3590">PR brouillon #3590&lt;/a> montre le support DM privé &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> en cours.&lt;/p>
&lt;h3 id="primal-android-livre-le-chiffrement-nwc">Primal Android livre le chiffrement NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a> a eu une semaine très active avec 18 PRs fusionnées axées sur l&amp;rsquo;infrastructure de portefeuille. L&amp;rsquo;application s&amp;rsquo;intègre maintenant avec Spark, le protocole Lightning auto-custodial de Lightspark. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a> ajoute le support du chiffrement NWC, tandis que &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/872">PR #872&lt;/a> envoie des événements info NWC quand les connexions s&amp;rsquo;établissent.&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/870">PR #870&lt;/a> permet l&amp;rsquo;export CSV pour les transactions du portefeuille, utile pour la comptabilité et les impôts. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/716">PR #716&lt;/a> ajoute un sélecteur de compte local dans l&amp;rsquo;éditeur de notes. Plusieurs corrections de restauration de portefeuille (&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>) traitent les cas limites pour les utilisateurs avec des configurations de portefeuille non-Spark.&lt;/p>
&lt;h3 id="le-sdk-typescript-marmot-ajoute-lhistorique-des-messages">Le SDK TypeScript Marmot ajoute l&amp;rsquo;historique des messages&lt;/h3>
&lt;p>L&amp;rsquo;implémentation TypeScript du protocole &lt;a href="https://github.com/marmot-protocol/marmot">Marmot&lt;/a> continue son développement. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR #38&lt;/a> par hzrd149 implémente la persistance de l&amp;rsquo;historique des messages avec pagination pour l&amp;rsquo;application de chat de référence, tandis que &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/39">PR #39&lt;/a> améliore l&amp;rsquo;ergonomie de la bibliothèque.&lt;/p>
&lt;p>Côté Rust, &lt;a href="https://github.com/marmot-protocol/mdk/pull/161">PR #161&lt;/a> implémente la gestion d&amp;rsquo;état récupérable pour préserver le contexte des messages en cas d&amp;rsquo;échec, et &lt;a href="https://github.com/marmot-protocol/mdk/pull/164">PR #164&lt;/a> passe à std::sync::Mutex pour éviter les panics tokio avec SQLite. Le backend whitenoise-rs ajoute &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/418">l&amp;rsquo;intégration 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">met à niveau vers MDK et nostr-sdk 0.44&lt;/a> (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/467">PR #467&lt;/a>) et introduit le streaming de notifications en temps réel via &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/460">PR #460&lt;/a> avec les types d&amp;rsquo;événements NewMessage et GroupInvite.&lt;/p>
&lt;h3 id="haven-ajoute-le-rafraîchissement-périodique-wot">HAVEN ajoute le rafraîchissement périodique WoT&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>, le relais personnel, a fusionné &lt;a href="https://github.com/bitvora/haven/pull/108">PR #108&lt;/a> ajoutant le rafraîchissement périodique &lt;a href="https://nostrcompass.org/fr/topics/web-of-trust/">Web of Trust&lt;/a>. La fonctionnalité assure que les scores de confiance restent à jour à mesure que les graphes sociaux des utilisateurs évoluent, améliorant la précision du filtrage de spam au fil du temps.&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 bibliothèque JavaScript principale, a reçu plusieurs améliorations cette semaine. Les commits incluent une &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/c2423f7f31853d97fef2e3d649204cec328e81d5">correction pour l&amp;rsquo;analyse des hashtags après les sauts de ligne&lt;/a> dans les mentions &lt;a href="https://nostrcompass.org/fr/topics/nip-27/">NIP-27 (Références de notes textuelles)&lt;/a>, &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/ab802c8dbe35d29feb732ba54e82a346c21c32e2">l&amp;rsquo;élagage automatique des objets relay cassés avec suivi d&amp;rsquo;inactivité&lt;/a> pour le nettoyage des connexions, &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/be9b91318fea6a0cb154b8734a15b50a4c1e7638">la suppression de la file de messages&lt;/a> pour l&amp;rsquo;optimisation des performances mono-thread et &lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/05b1fba5113182ac0aa3c72d1f511cd956a7c139">les exports de fichiers source&lt;/a> pour de meilleurs imports 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> a livré &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/26abea24726ed844fdd091744ac9f768f1a530a0">beta.71&lt;/a> avec une &lt;a href="https://github.com/nostr-dev-kit/ndk/commit/33e759508bc656dc45d3d77c741edf581af323f3">correction pour la reconnexion après les cycles veille/réveil de l&amp;rsquo;appareil et la gestion des connexions périmées&lt;/a>, traitant les problèmes de fiabilité pour les applications mobiles.&lt;/p>
&lt;h3 id="notedeck">Notedeck&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>, le client de bureau de l&amp;rsquo;équipe Damus, a une &lt;a href="https://github.com/damus-io/notedeck/pull/1279">PR ouverte #1279&lt;/a> ajoutant un visualiseur &lt;a href="https://nostrcompass.org/fr/topics/nip-34/">NIP-34 (Collaboration Git)&lt;/a>. Cela permettrait de parcourir les dépôts git, patches et issues publiés sur les relais Nostr directement dans le client, faisant de Notedeck un potentiel front-end pour les flux de travail basés sur ngit.&lt;/p>
&lt;h3 id="njump">njump&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/njump">njump&lt;/a>, la passerelle web Nostr, a ajouté le support de deux types d&amp;rsquo;événements &lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51 (Listes)&lt;/a> via &lt;a href="https://github.com/fiatjaf/njump/pull/152">PR #152&lt;/a>. La passerelle affiche maintenant les kind:30000 Follow Sets, qui sont des regroupements catégorisés d&amp;rsquo;utilisateurs que les clients peuvent afficher dans différents contextes, et les kind:39089 Starter Packs, qui sont des collections de profils curatées conçues pour le partage et le suivi en groupe. Ces ajouts permettent à njump d&amp;rsquo;afficher des listes curatées par la communauté quand les utilisateurs partagent des liens nevent.&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>, le client Android, a corrigé un bug empêchant le partage vidéo depuis la vue lecteur (&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1695">PR #1695&lt;/a>). L&amp;rsquo;option &amp;ldquo;Partager vidéo&amp;rdquo; n&amp;rsquo;apparaissait pas parce que le paramètre content n&amp;rsquo;était pas passé au composant des boutons de contrôle. Les utilisateurs peuvent maintenant partager du contenu vidéo Nostr vers d&amp;rsquo;autres applications directement depuis le lecteur. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1693">PR #1693&lt;/a> corrige les crashs de désérialisation Jackson JSON qui se produisaient lors de l&amp;rsquo;analyse de certains événements malformés.&lt;/p>
&lt;h3 id="jumble">Jumble&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, le client web axé sur la navigation des flux de relais, a ajouté les uploads de fichiers audio via le presse-papiers dans &lt;a href="https://github.com/CodyTseng/jumble/pull/743">PR #743&lt;/a>. Les utilisateurs peuvent maintenant coller des fichiers audio directement dans l&amp;rsquo;éditeur de post, qui les uploade vers les serveurs médias configurés et intègre l&amp;rsquo;URL dans la note. La fonctionnalité reflète la fonctionnalité existante de collage d&amp;rsquo;images.&lt;/p>
&lt;h3 id="flotilla">Flotilla&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/flotilla">Flotilla&lt;/a>, le client de communautés &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29 (Groupes basés sur les relais)&lt;/a> de hodlbod, a livré les notifications via &lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a>. La mise à jour refactorise le système d&amp;rsquo;alertes du polling basé sur les ancres vers les notifications pull locales pour le web et les notifications push pour le mobile. L&amp;rsquo;architecture implémente le standard NIP-9a proposé (voir &lt;a href="https://github.com/nostr-protocol/nips/pull/2194">PR #2194&lt;/a> ci-dessous), où les utilisateurs enregistrent des callbacks webhook avec les relais et reçoivent des charges utiles d&amp;rsquo;événements chiffrées quand les filtres correspondent.&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;application de formulaires native Nostr, a ajouté l&amp;rsquo;import de formulaires et le support des formulaires chiffrés dans &lt;a href="https://github.com/abh3po/nostr-forms/pull/422">PR #422&lt;/a>. Les utilisateurs peuvent maintenant importer des formulaires existants via un lien de réponse ou depuis d&amp;rsquo;autres instances Formstr. La fonctionnalité de chiffrement permet aux créateurs de formulaires de restreindre les réponses afin que seuls les destinataires désignés puissent lire les soumissions, utile pour les sondages collectant des informations sensibles.&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>), construit sur &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, a ajouté le partage de sondages par DM &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> via &lt;a href="https://github.com/abh3po/nostr-polls/pull/141">PR #141&lt;/a> et &lt;a href="https://github.com/abh3po/nostr-polls/pull/142">PR #142&lt;/a>. Les utilisateurs peuvent maintenant partager des sondages directement aux contacts via des messages directs chiffrés.&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 collection de schémas de vérification JSON pour les événements Nostr, a ajouté la couverture &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a> via &lt;a href="https://github.com/nostrability/schemata/pull/59">PR #59&lt;/a>. La mise à jour inclut les schémas pour les événements kind 13 (seal) et kind 1059 (gift wrap), complétant la couverture existante des schémas &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a>.&lt;/p>
&lt;h3 id="vector">Vector&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>, le messager de bureau axé sur la confidentialité utilisant &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a>, &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> pour le chiffrement sans métadonnées, a fusionné &lt;a href="https://github.com/VectorPrivacy/Vector/pull/39">PR #39&lt;/a> introduisant des optimisations de performance accélérées par SIMD. L&amp;rsquo;encodage hex s&amp;rsquo;exécute 65x plus vite, la génération d&amp;rsquo;aperçus d&amp;rsquo;images jusqu&amp;rsquo;à 38x plus vite et les recherches de messages 184x plus vite via l&amp;rsquo;indexation par recherche binaire. La PR ajoute les intrinsèques ARM64 NEON pour Apple Silicon et x86_64 AVX2/SSE2 avec détection runtime pour Windows et Linux. L&amp;rsquo;utilisation mémoire a chuté avec les structs de messages réduits de 472 à 128 octets et le stockage npub réduit de 99,6% grâce à l&amp;rsquo;internement.&lt;/p>
&lt;p>Vector v0.3.0 (décembre 2025) a intégré &lt;a href="https://github.com/marmot-protocol/mdk">MDK (Marmot Development Kit)&lt;/a> pour la messagerie de groupe basée sur le protocole MLS, apportant des groupes chiffrés de bout en bout avec confidentialité persistante au client. Le partage de fichiers MIP-04 gère maintenant les pièces jointes imeta pour les groupes MLS, conçu pour l&amp;rsquo;interopérabilité avec &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-28-newsletter/#marmot-protocol-updates">White Noise&lt;/a>. La version a également introduit une plateforme Mini Apps avec des jeux multijoueurs P2P basés sur WebXDC, un app store décentralisé appelé The Nexus, l&amp;rsquo;intégration du portefeuille PIVX pour les paiements in-app, l&amp;rsquo;édition de messages avec suivi complet de l&amp;rsquo;historique et une réduction de 4x de la mémoire pendant les uploads d&amp;rsquo;images.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&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 : Support des factures de rétention&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a> supporte maintenant les factures de rétention, permettant des flux de paiement avancés où les receveurs doivent explicitement régler ou annuler les paiements. La PR ajoute trois nouvelles méthodes RPC : &lt;code>make_hold_invoice&lt;/code> crée une facture de rétention en utilisant une préimage pré-générée et un hash de paiement, &lt;code>settle_hold_invoice&lt;/code> réclame le paiement en fournissant la préimage originale, et &lt;code>cancel_hold_invoice&lt;/code> rejette le paiement en utilisant son hash de paiement. Une nouvelle notification &lt;code>hold_invoice_accepted&lt;/code> se déclenche quand un payeur verrouille le paiement. Cela permet des cas d&amp;rsquo;usage comme le contenu pay-to-unlock, les systèmes de séquestre de place de marché et le gating de paiement. Les implémentations sont déjà en cours dans &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> et &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 : Exigence de minuscules&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/fr/topics/nip-05/">NIP-05 (Vérification de domaine)&lt;/a> exige maintenant explicitement les minuscules pour les clés publiques hex et les noms locaux dans le fichier &lt;code>nostr.json&lt;/code>. C&amp;rsquo;était implicite dans la spécification mais non déclaré, causant des problèmes d&amp;rsquo;interopérabilité quand certaines implémentations utilisaient des casses mixtes tandis que d&amp;rsquo;autres normalisaient en minuscules. Les clients validant les identifiants NIP-05 devraient maintenant rejeter toute réponse &lt;code>nostr.json&lt;/code> contenant des caractères majuscules dans les clés ou noms.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2205">NIP-73 : Codes pays&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/fr/topics/nip-73/">NIP-73 (Géotags)&lt;/a> supporte maintenant les codes pays ISO 3166 comme alternative aux geohashes. Les événements peuvent inclure des tags &lt;code>[&amp;quot;g&amp;quot;, &amp;quot;US&amp;quot;, &amp;quot;countryCode&amp;quot;]&lt;/code> pour indiquer la localisation au niveau du pays sans nécessiter de coordonnées précises. Cela permet le filtrage et la découverte de contenu basés sur le pays pour les applications où la localisation exacte est inutile ou indésirable. La PR a également ajouté un exemple de geohash manquant à la documentation de la spécification.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&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 : Applications logicielles&lt;/a>&lt;/strong> - franzap a annoncé une mise à jour majeure de cette spécification brouillon, qui définit comment les applications logicielles sont distribuées via Nostr en utilisant des événements release kind 30063. La mise à jour couvre maintenant environ 98% des plateformes d&amp;rsquo;appareils globalement, incluant macOS, Linux, Windows, FreeBSD, les environnements WASM, les extensions VS Code, les extensions Chrome et les Web Bundles/PWAs. L&amp;rsquo;équipe se concentre ensuite sur le support Android, PWA et iOS, invitant les développeurs à converger vers ce standard partagé. Zapstore prévoit de migrer vers le nouveau format dans les semaines à venir.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2211">NIP-74 : Podcasts&lt;/a>&lt;/strong> - Définit des événements adressables pour les émissions de podcast (kind 30074) et les épisodes (kind 30075). Les émissions incluent des métadonnées comme le titre, la description, les catégories et les images de couverture. Les épisodes référencent leur émission parente et incluent les URLs d&amp;rsquo;enclosure, les durées et les marqueurs de chapitres. La spécification s&amp;rsquo;intègre avec les standards de métadonnées Podcasting 2.0 et inclut des tags value pour la monétisation V4V (value-for-value) via Lightning. Des plateformes comme &lt;a href="https://transmit.fm">transmit.fm&lt;/a>, une plateforme de publication de podcasts native Nostr, peuvent publier directement sur les relais en utilisant ce format, permettant aux podcasteurs de distribuer du contenu sans intermédiaires.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2207">NIP-FR : Notes réservées aux amis&lt;/a>&lt;/strong> - Propose un mécanisme pour publier des notes visibles uniquement par une liste d&amp;rsquo;amis définie par l&amp;rsquo;utilisateur, en utilisant une clé symétrique partagée appelée ViewKey. L&amp;rsquo;auteur chiffre les notes (kind 2044) avec le ViewKey en utilisant NIP-44. Le ViewKey lui-même est distribué à chaque ami une seule fois via &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a>. Les amis possédant le ViewKey peuvent déchiffrer et lire les notes ; tous les autres ne voient que du texte chiffré. Lorsque l&amp;rsquo;auteur supprime un ami, le ViewKey est renouvelé : une nouvelle clé est générée et redistribuée à tous les amis restants via gift wrap, assurant que l&amp;rsquo;ami supprimé perde l&amp;rsquo;accès aux publications futures. Cette approche sépare le chiffrement du contenu (symétrique, efficace) de la distribution des clés (asymétrique, par ami), gardant le protocole léger tout en permettant une fonctionnalité de confidentialité fréquemment demandée.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/1a451c1581888215ae5c311d36c8a7c7d9e5e81f1f4010de4afaf7fcbd553e90">NIP-DB : Interface de base de données d&amp;rsquo;événements Nostr navigateur&lt;/a>&lt;/strong> (&lt;a href="https://github.com/hzrd149/nostr-bucket/blob/master/nip.md">spec&lt;/a>) - Propose une interface &lt;code>window.nostrdb&lt;/code> standard pour les extensions navigateur fournissant un stockage local d&amp;rsquo;événements Nostr. L&amp;rsquo;API inclut des méthodes pour ajouter des événements, requêter par ID ou filtre, compter les correspondances et s&amp;rsquo;abonner aux mises à jour. Les applications web peuvent utiliser cette interface pour lire depuis les événements mis en cache localement sans faire de requêtes aux relais, réduisant la bande passante et la latence. L&amp;rsquo;extension navigateur &lt;a href="https://github.com/hzrd149/nostr-bucket">nostr-bucket&lt;/a> de hzrd149 fournit une implémentation de référence, injectant l&amp;rsquo;interface dans tous les onglets du navigateur. Une &lt;a href="https://github.com/hzrd149/window.nostrdb.js">bibliothèque polyfill&lt;/a> compagnon implémente la même API en utilisant IndexedDB pour les environnements sans l&amp;rsquo;extension.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/237667820943d1c8bbe7ab7732623ae51b337f177776ece439d4a8be84708eb7">TRUSTed Filters&lt;/a>&lt;/strong> - Une suite de cinq propositions connexes pour la curation de contenu décentralisée, s&amp;rsquo;appuyant sur la merged &lt;a href="https://github.com/nostr-protocol/nips/pull/1534">PR Trusted Assertions #1534&lt;/a> de vitorpamplona. La spécification principale introduit les événements kind 17570 pour déclarer les préférences de fournisseur de confiance, permettant aux utilisateurs de spécifier quels services ils font confiance pour le filtrage et le classement des événements. Les fournisseurs de confiance publient des assertions (kind 37571), des statistiques (kind 37572) et des classements (kind 37573) auxquels les clients peuvent s&amp;rsquo;abonner. Le système utilise une architecture de plugins avec des tags W/w pour spécifier les types de filtres et les transformations. Cela permet aux opérations coûteuses en calcul comme la détection de spam, le scoring de réputation et le classement de contenu de s&amp;rsquo;exécuter sur une infrastructure dédiée tandis que les utilisateurs maintiennent le contrôle sur les fournisseurs auxquels ils font confiance. La suite inclut des spécifications séparées pour les préréglages de filtres, les classements d&amp;rsquo;utilisateurs, les événements de confiance et les définitions de plugins.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2194">NIP-9a : Notifications push&lt;/a>&lt;/strong> - hodlbod propose un standard pour les notifications push basées sur les relais utilisant des événements d&amp;rsquo;enregistrement kind 30390. Les utilisateurs créent un enregistrement contenant des filtres pour les événements qu&amp;rsquo;ils veulent recevoir et une URL de callback webhook. L&amp;rsquo;enregistrement est chiffré vers la pubkey du relais (depuis son champ &lt;code>self&lt;/code> NIP-11). Quand des événements correspondants se produisent, les relais POST vers le callback avec l&amp;rsquo;ID de l&amp;rsquo;événement (en clair pour la déduplication) et l&amp;rsquo;événement lui-même (chiffré NIP-44 vers l&amp;rsquo;utilisateur). Cette architecture permet aux relais de pousser les notifications tout en protégeant le contenu des événements des serveurs push intermédiaires. La &lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a> de Flotilla implémente ce standard.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/SigmaEnterprise/Catallax">Catallax&lt;/a>&lt;/strong> - Propose un protocole de travail contractuel décentralisé avec séquestre utilisant des événements kind 33400. Le système définit trois rôles : les arbitres annoncent leur disponibilité et leurs conditions, les patrons créent des tâches financées avec du Bitcoin séquestré, et les agents libres complètent le travail pour réclamer le paiement. Les arbitres résolvent les litiges quand nécessaire. Le protocole permet la coordination de travail freelance sans confiance où les fonds sont verrouillés jusqu&amp;rsquo;à ce que les livrables soient acceptés ou que l&amp;rsquo;arbitrage conclue.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="approfondissement-nip--nip-47-nostr-wallet-connect">Approfondissement NIP : NIP-47 (Nostr Wallet Connect)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> définit Nostr Wallet Connect (NWC), un protocole pour le contrôle à distance de portefeuille Lightning utilisant Nostr comme couche de communication. Avec l&amp;rsquo;ajout cette semaine du support des factures de rétention, NWC couvre maintenant la gamme complète des opérations Lightning.&lt;/p>
&lt;p>Le protocole fonctionne via un échange simple. Une application de portefeuille publie un événement &amp;ldquo;wallet info&amp;rdquo; (kind 13194) décrivant ses capacités. Les applications clientes envoient des requêtes chiffrées (kind 23194) demandant au portefeuille d&amp;rsquo;effectuer des opérations comme payer des factures, créer des factures ou vérifier les soldes. Le portefeuille répond avec des résultats chiffrés (kind 23195).&lt;/p>
&lt;p>NWC utilise le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> entre le client et le portefeuille, avec une paire de clés dédiée pour les opérations de portefeuille, la gardant séparée de l&amp;rsquo;identité principale de l&amp;rsquo;utilisateur. Cette séparation signifie que compromettre une connexion NWC n&amp;rsquo;expose pas l&amp;rsquo;identité Nostr de l&amp;rsquo;utilisateur.&lt;/p>
&lt;p>&lt;strong>Méthodes supportées :&lt;/strong>&lt;/p>
&lt;p>La spécification définit des méthodes pour les opérations Lightning principales : &lt;code>pay_invoice&lt;/code> envoie des paiements, &lt;code>make_invoice&lt;/code> génère des factures pour recevoir, &lt;code>lookup_invoice&lt;/code> vérifie le statut de paiement, &lt;code>get_balance&lt;/code> retourne le solde du portefeuille, et &lt;code>list_transactions&lt;/code> fournit l&amp;rsquo;historique des paiements. Le nouveau &lt;code>pay_keysend&lt;/code> fusionné permet les paiements sans factures, et &lt;code>hold_invoice&lt;/code> supporte les paiements conditionnels.&lt;/p>
&lt;p>&lt;strong>Exemples d&amp;rsquo;événements :&lt;/strong>&lt;/p>
&lt;p>Le service de portefeuille publie un événement info (kind 13194) annonçant ses capacités :&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 du service de portefeuille&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;horodatage 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 de l&amp;#39;événement&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;signature du service de portefeuille&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 envoie une requête chiffrée (kind 23194) pour payer une facture :&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 éphémère du client depuis le secret de l&amp;#39;URI de connexion&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 chiffré: {\&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 du service de portefeuille&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;horodatage 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 de l&amp;#39;événement&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;signature de la clé éphémère du 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>Le service de portefeuille répond (kind 23195) avec le résultat du paiement :&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 du service de portefeuille&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 chiffré: {\&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 éphémère du 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 de l&amp;#39;événement de requête&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;horodatage 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 de l&amp;#39;événement&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;signature du service de portefeuille&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 tag &lt;code>e&lt;/code> dans la réponse référence la requête originale, permettant aux clients de faire correspondre les réponses à leurs requêtes.&lt;/p>
&lt;p>&lt;strong>Factures de rétention :&lt;/strong>&lt;/p>
&lt;p>La &lt;a href="https://github.com/nostr-protocol/nips/pull/1913">PR #1913&lt;/a> de cette semaine a ajouté le support des factures de rétention, permettant des paiements de type séquestre. Contrairement aux factures standard où le destinataire réclame immédiatement le paiement en libérant la préimage, les factures de rétention permettent au destinataire de différer cette décision. Quand un payeur envoie vers une facture de rétention, les fonds se verrouillent le long de la route de paiement. Le destinataire choisit ensuite de régler (libérer la préimage et réclamer les fonds) ou d&amp;rsquo;annuler (rejeter le paiement, retournant les fonds au payeur). Si aucune action ne se produit, le paiement expire et les fonds retournent automatiquement. La PR ajoute trois méthodes NWC : &lt;code>make_hold_invoice&lt;/code>, &lt;code>settle_hold_invoice&lt;/code> et &lt;code>cancel_hold_invoice&lt;/code>, plus une notification &lt;code>hold_invoice_accepted&lt;/code>. Ce mécanisme alimente des applications comme le séquestre de covoiturage de Ridestr et la résolution de litiges de place de marché.&lt;/p>
&lt;p>&lt;strong>Implémentations actuelles :&lt;/strong>&lt;/p>
&lt;p>Les principaux portefeuilles supportent NWC : Zeus, Alby et Primal (depuis la &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a> de cette semaine) implémentent tous le support côté portefeuille. Côté client, Damus, Amethyst et la plupart des clients Nostr majeurs peuvent se connecter aux portefeuilles NWC pour le zapping et les paiements.&lt;/p>
&lt;p>Le protocole permet une séparation des préoccupations : les utilisateurs peuvent faire fonctionner leur portefeuille sur un appareil tout en interagissant avec Nostr depuis un autre, avec les relais Nostr servant de canal de communication. Cette architecture signifie que les clients mobiles n&amp;rsquo;ont pas besoin de détenir des fonds directement, améliorant la sécurité en gardant l&amp;rsquo;infrastructure de portefeuille séparée des clients sociaux.&lt;/p>
&lt;p>&lt;strong>Considérations de sécurité :&lt;/strong>&lt;/p>
&lt;p>Les connexions NWC devraient être traitées comme sensibles. Bien que le chiffrement protège le contenu des messages, la pubkey du portefeuille et le secret de connexion doivent être protégés. Les applications devraient permettre aux utilisateurs de révoquer les connexions et de définir des limites de dépenses. Le protocole supporte les restrictions de capacités, permettant aux portefeuilles de limiter les opérations qu&amp;rsquo;une connexion particulière peut effectuer.&lt;/p>
&lt;h2 id="approfondissement-nip--nip-59-gift-wrap">Approfondissement NIP : NIP-59 (Gift Wrap)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> définit un protocole pour encapsuler n&amp;rsquo;importe quel événement Nostr dans plusieurs couches de chiffrement, cachant l&amp;rsquo;identité de l&amp;rsquo;expéditeur aux relais et observateurs. Les propositions de cette semaine pour les notes réservées aux amis (NIP-FR) et les notifications push (NIP-9a) s&amp;rsquo;appuient toutes deux sur le gift wrapping, en faisant une primitive de confidentialité fondamentale à comprendre.&lt;/p>
&lt;p>&lt;strong>Les trois couches :&lt;/strong>&lt;/p>
&lt;p>Le gift wrapping utilise trois structures imbriquées :&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Rumor&lt;/strong> (événement non signé) : Le contenu original comme événement Nostr sans signature. Le rumor ne peut pas être envoyé directement aux relais car les relais rejettent les événements non signés.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Seal&lt;/strong> (kind 13) : Le rumor est chiffré en utilisant &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> et placé dans un événement kind 13. Le seal EST signé par la clé de l&amp;rsquo;auteur réel. C&amp;rsquo;est la preuve cryptographique de paternité.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gift Wrap&lt;/strong> (kind 1059) : Le seal est chiffré et placé dans un événement kind 1059 signé par une paire de clés aléatoire à usage unique. Le gift wrap inclut un tag &lt;code>p&lt;/code> pour le routage vers le destinataire.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Une idée fausse courante : La déniabilité&lt;/strong>&lt;/p>
&lt;p>La spécification mentionne que les rumors non signés fournissent la &amp;ldquo;déniabilité&amp;rdquo;, mais c&amp;rsquo;est trompeur. La couche seal EST signée par l&amp;rsquo;auteur réel. Quand le destinataire déchiffre le gift wrap puis le seal, il a une preuve cryptographique de qui a envoyé le message. Le destinataire pourrait même construire une preuve à divulgation nulle révélant l&amp;rsquo;identité de l&amp;rsquo;expéditeur sans exposer sa propre clé privée.&lt;/p>
&lt;p>Ce que le gift wrap fournit réellement est la &lt;strong>confidentialité de l&amp;rsquo;expéditeur vis-à-vis des observateurs&lt;/strong> : les relais et tiers ne peuvent pas déterminer qui a envoyé le message car ils ne voient que le gift wrap signé par une clé aléatoire. Mais le destinataire sait toujours, et peut le prouver.&lt;/p>
&lt;p>&lt;strong>Exemples d&amp;rsquo;événements :&lt;/strong>&lt;/p>
&lt;p>Voici la structure complète à trois couches de la spécification (envoyant &amp;ldquo;Tu vas à la fête ce soir ?&amp;rdquo;) :&lt;/p>
&lt;p>Le rumor (non signé, ne peut pas être publié aux relais) :&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;Tu vas à la fête ce soir ?&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>Le seal (kind 13, signé par l&amp;rsquo;auteur réel, contient le rumor chiffré) :&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>Le gift wrap (kind 1059, signé par une clé éphémère aléatoire, contient le seal chiffré) :&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>Remarquez : la &lt;code>pubkey&lt;/code> du seal est l&amp;rsquo;auteur réel (&lt;code>611df01...&lt;/code>), tandis que la &lt;code>pubkey&lt;/code> du gift wrap est une clé à usage unique aléatoire (&lt;code>18b1a75...&lt;/code>). Les relais ne voient que le gift wrap, donc ils ne peuvent pas attribuer le message à l&amp;rsquo;auteur réel.&lt;/p>
&lt;p>&lt;strong>Ce que chaque couche protège :&lt;/strong>&lt;/p>
&lt;p>Le rumor est non signé et ne peut pas être publié directement aux relais. Le seal est signé par l&amp;rsquo;auteur réel et prouve la paternité au destinataire. Le gift wrap est signé par une clé à usage unique aléatoire, cachant l&amp;rsquo;auteur réel aux relais et observateurs. Seul le destinataire peut déchiffrer à travers les deux couches pour atteindre le contenu original et vérifier la signature de l&amp;rsquo;auteur sur le seal.&lt;/p>
&lt;p>&lt;strong>Applications actuelles :&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17 (Messages directs privés)&lt;/a> utilise le gift wrap pour les DM chiffrés, remplaçant l&amp;rsquo;ancien schéma NIP-04. Le NIP-FR proposé (notes réservées aux amis) utilise le gift wrapping pour distribuer des ViewKeys aux amis, qui déchiffrent ensuite les notes chiffrées avec ces clés. NIP-9a (notifications push) chiffre les charges utiles de notification en utilisant les principes du gift wrap.&lt;/p>
&lt;p>&lt;strong>Protection des métadonnées :&lt;/strong>&lt;/p>
&lt;p>Les horodatages devraient être randomisés pour contrecarrer l&amp;rsquo;analyse temporelle. Les relais devraient exiger AUTH avant de servir les événements kind 1059 et ne les servir qu&amp;rsquo;au destinataire marqué. Lors de l&amp;rsquo;envoi à plusieurs destinataires, créez des gift wraps séparés pour chacun.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ? Vous avez des nouvelles à partager ? Vous voulez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via NIP-17 DM&lt;/a> ou trouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #7</title><link>https://nostrcompass.org/fr/newsletters/2026-01-28-newsletter/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-01-28-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Ridestr apporte le covoiturage décentralisé sur Nostr avec des paiements &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> et le partage de localisation chiffré. Pomade introduit la récupération par email pour les signataires multisig. Damus intègre &lt;a href="https://nostrcompass.org/fr/topics/negentropy/">negentropy&lt;/a> pour une synchronisation fiable des messages privés. L&amp;rsquo;application de bureau d&amp;rsquo;Amethyst ajoute la recherche, les favoris et les zaps. Amber v4.1.1 affiche les scores de confiance des relais. Marmot fusionne MIP-03 et construit une application de chat de référence en TypeScript. diVine ajoute l&amp;rsquo;authentification QR &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> et le support des mentions. De nouvelles propositions de NIP abordent la gestion des communautés, la synchronisation basée sur les séquences et le stockage de fichiers chiffrés. Nous revenons également sur cinq années de janvier Nostr, retraçant l&amp;rsquo;évolution du protocole depuis une poignée d&amp;rsquo;adopteurs précoces en 2021 jusqu&amp;rsquo;au lancement explosif de Damus sur l&amp;rsquo;App Store en 2023, en passant par l&amp;rsquo;écosystème de clients mature de 2025.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Ridestr apporte le covoiturage décentralisé sur Nostr avec des paiements &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> et le partage de localisation chiffré. Pomade introduit la récupération par email pour les signataires multisig. Damus intègre &lt;a href="https://nostrcompass.org/fr/topics/negentropy/">negentropy&lt;/a> pour une synchronisation fiable des messages privés. L&amp;rsquo;application de bureau d&amp;rsquo;Amethyst ajoute la recherche, les favoris et les zaps. Amber v4.1.1 affiche les scores de confiance des relais. Marmot fusionne MIP-03 et construit une application de chat de référence en TypeScript. diVine ajoute l&amp;rsquo;authentification QR &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> et le support des mentions. De nouvelles propositions de NIP abordent la gestion des communautés, la synchronisation basée sur les séquences et le stockage de fichiers chiffrés. Nous revenons également sur cinq années de janvier Nostr, retraçant l&amp;rsquo;évolution du protocole depuis une poignée d&amp;rsquo;adopteurs précoces en 2021 jusqu&amp;rsquo;au lancement explosif de Damus sur l&amp;rsquo;App Store en 2023, en passant par l&amp;rsquo;écosystème de clients mature de 2025.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="ridestr-apporte-le-covoiturage-décentralisé-sur-nostr">Ridestr apporte le covoiturage décentralisé sur Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> développe une application de covoiturage pair-à-pair entièrement construite sur Nostr, permettant des transactions directes entre conducteurs et passagers avec des paiements Bitcoin et &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a>. Le protocole utilise des types d&amp;rsquo;événements personnalisés (30173, 3173-3175, 30180/30181) pour coordonner les trajets tout en préservant la confidentialité grâce à la divulgation progressive de la localisation et au chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>.&lt;/p>
&lt;p>Le système fonctionne selon un flux soigneusement orchestré : les conducteurs diffusent leur disponibilité en utilisant des localisations encodées en geohash (précision d&amp;rsquo;environ 5 km) via des événements kind 30173, les passagers demandent des trajets avec des estimations de tarifs via kind 3173, et les paiements sont sécurisés par des tokens séquestrés HTLC avant le début du trajet. La confidentialité de la localisation est préservée grâce à la divulgation progressive, où les détails du point de prise en charge ne sont révélés qu&amp;rsquo;à l&amp;rsquo;arrivée des conducteurs et les destinations sont partagées après vérification du code PIN. Toutes les communications entre les parties utilisent le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> pour la confidentialité.&lt;/p>
&lt;p>Ridestr implémente la sécurité des paiements via un séquestre HTLC avec signatures P2PK. Lorsqu&amp;rsquo;un passager accepte l&amp;rsquo;offre d&amp;rsquo;un conducteur, il verrouille des tokens &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> avec un hash de paiement que seul le conducteur peut réclamer après la fin du trajet. Le protocole fonctionne actuellement avec une architecture à mint unique, exigeant que les passagers et les conducteurs utilisent le même mint &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a>. L&amp;rsquo;implémentation Android basée sur Kotlin gère la vérification des preuves et la récupération des preuves périmées via les vérifications d&amp;rsquo;état NUT-07.&lt;/p>
&lt;p>Ridestr s&amp;rsquo;attaque à des défis que la plupart des applications Nostr évitent : la coordination de localisation en temps réel, le séquestre de paiement avec résolution des litiges et les systèmes de réputation pour les interactions dans le monde physique. Le projet est en bêta et démontre que le modèle d&amp;rsquo;événements de Nostr peut supporter des places de marché de services pair-à-pair, pas seulement le partage de contenu.&lt;/p>
&lt;h3 id="pomade-lance-un-système-de-récupération-alpha-pour-les-signataires-multisig">Pomade lance un système de récupération Alpha pour les signataires Multisig&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a>, développé par hodlbod, s&amp;rsquo;appuie sur l&amp;rsquo;écosystème &lt;a href="https://github.com/FROSTR-ORG">FROSTR&lt;/a> existant pour fournir un service de signature à seuil axé sur la récupération. En utilisant les signatures &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a> (Flexible Round-Optimized Schnorr Threshold) via la bibliothèque @frostr/bifrost, Pomade ajoute des flux de récupération par email en plus de la cryptographie à seuil. Le système fragmente la clé secrète d&amp;rsquo;un utilisateur en utilisant le partage de secret de Shamir, distribuant les fragments entre plusieurs signataires indépendants avec un seuil configurable (2-sur-3, 3-sur-5, etc.).&lt;/p>
&lt;p>Le protocole fonctionne entièrement sur Nostr en utilisant un seul type d&amp;rsquo;événement (28350) avec des charges utiles chiffrées &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>. Lors de la signature, le client demande des signatures partielles à au moins &lt;code>threshold&lt;/code> signataires, puis les agrège en une signature Schnorr valide. Pour le chiffrement, les signataires collaborent pour dériver des secrets partagés via ECDH sans qu&amp;rsquo;aucune partie n&amp;rsquo;apprenne la clé complète.&lt;/p>
&lt;p>La récupération fonctionne via deux méthodes d&amp;rsquo;authentification : basée sur mot de passe (utilisant argon2id avec la pubkey du signataire comme sel) ou par OTP email. Pour prévenir les attaques MITM pendant la récupération OTP, chaque signataire génère son propre code de vérification avec un préfixe fourni par le client, exigeant que les utilisateurs s&amp;rsquo;authentifient indépendamment auprès de chaque signataire. Le protocole exige une preuve de travail sur les événements d&amp;rsquo;inscription (20+ bits selon &lt;a href="https://nostrcompass.org/fr/topics/nip-13/">NIP-13&lt;/a>) pour prévenir le spam.&lt;/p>
&lt;p>Le modèle de confiance est explicite : si &lt;code>threshold&lt;/code> signataires s&amp;rsquo;entendent, ils peuvent voler la clé. Les fournisseurs d&amp;rsquo;email bénéficient d&amp;rsquo;une confiance totale puisqu&amp;rsquo;ils peuvent intercepter les OTP. Les utilisateurs ne peuvent pas récupérer indépendamment leur clé secrète complète ; cela nécessite la coopération de &lt;code>threshold&lt;/code> signataires. Le protocole est conçu pour l&amp;rsquo;intégration de nouveaux utilisateurs non familiers avec la gestion des clés, avec la recommandation explicite que les utilisateurs migrent vers l&amp;rsquo;auto-conservation une fois à l&amp;rsquo;aise. Pomade avertit des potentiels « pertes de clés, vols, dénis de service ou fuites de métadonnées » étant donné son statut alpha non audité.&lt;/p>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;h3 id="damus-intègre-negentropy-pour-une-synchronisation-fiable-des-messages-privés">Damus intègre Negentropy pour une synchronisation fiable des messages privés&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/tree/v1.13">Damus v1.13&lt;/a> intègre l&amp;rsquo;implémentation negentropy &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-21-newsletter/#damus-ios-client---open-prs">que nous avions présentée comme PR ouverte la semaine dernière&lt;/a>. &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a> ajoute le support de base de &lt;a href="https://nostrcompass.org/fr/topics/negentropy/">negentropy&lt;/a> à la couche réseau, permettant la réconciliation d&amp;rsquo;ensembles avec les relais qui supportent le protocole. Une &lt;a href="https://github.com/damus-io/damus/pull/3547">PR #3547&lt;/a> complémentaire ajoute la synchronisation des messages privés par glissement vers le bas qui utilise negentropy pour récupérer les messages manquants lorsque les abonnements REQ standard échouent.&lt;/p>
&lt;p>L&amp;rsquo;implémentation suit une approche conservatrice : le chargement normal des messages privés continue inchangé, avec &lt;a href="https://nostrcompass.org/fr/topics/negentropy/">negentropy&lt;/a> disponible comme mécanisme de récupération lorsque les utilisateurs actualisent manuellement. Les tests automatisés démontrent la correction en générant un message privé avec un ancien horodatage que les requêtes standard manqueraient, puis en utilisant la synchronisation &lt;a href="https://nostrcompass.org/fr/topics/negentropy/">negentropy&lt;/a> pour le récupérer avec succès. Bien que le support de &lt;a href="https://nostrcompass.org/fr/topics/negentropy/">negentropy&lt;/a> nécessite des relais compatibles, l&amp;rsquo;implémentation gère gracieusement les environnements de relais mixtes en utilisant le protocole là où il est disponible.&lt;/p>
&lt;h3 id="amber-v411---scores-de-confiance-des-relais">Amber v4.1.1 - Scores de confiance des relais&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.1">Amber v4.1.1&lt;/a> intègre l&amp;rsquo;affichage des scores de confiance des relais (&lt;a href="https://github.com/greenart7c3/Amber/pull/289">PR #289&lt;/a>), implémentant les concepts d&amp;rsquo;évaluation des relais discutés dans &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-21-newsletter/#nip-updates">la couverture des attestations de confiance des relais de la semaine dernière&lt;/a>. Les scores de confiance apparaissent désormais sur la page Relais et pour les demandes de connexion NostrConnect, aidant les utilisateurs à évaluer la fiabilité des relais avant d&amp;rsquo;autoriser les connexions. La version inclut également une interface utilisateur login/événements/permissions redessinée et le support de la méthode &lt;code>switch_relays&lt;/code>. Les améliorations de performance mettent en cache les opérations du keystore, répondant aux rapports de temps de chargement de plus de 20 secondes sur les appareils plus anciens.&lt;/p>
&lt;h3 id="nak-v0182---intégration-mcp">nak v0.18.2 - Intégration MCP&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a> (Nostr Army Knife) de fiatjaf &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.2">v0.18.2&lt;/a> ajoute le support du &lt;a href="https://nostrify.dev/mcp">Model Context Protocol&lt;/a> via &lt;code>nak mcp&lt;/code>, permettant aux agents IA de rechercher des personnes sur Nostr, publier des notes, mentionner des utilisateurs et lire du contenu en utilisant le modèle outbox. La version introduit également un &lt;a href="https://github.com/fiatjaf/nak/blob/master/install.sh">installateur en une ligne&lt;/a> (&lt;code>curl -sSL https://raw.githubusercontent.com/fiatjaf/nak/master/install.sh | sh&lt;/code>) qui télécharge des binaires pré-compilés, éliminant le besoin de la chaîne d&amp;rsquo;outils Go pour les utilisateurs finaux. Le mode Bunker supporte maintenant les sockets Unix et &lt;code>switch_relays&lt;/code>.&lt;/p>
&lt;h3 id="zeus-v0122-beta---corrections-nwc">Zeus v0.12.2 Beta - Corrections NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus/releases">Zeus v0.12.2-beta1&lt;/a> intègre plusieurs corrections NWC répondant aux problèmes couverts dans &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-21-newsletter/#zeus-lightning-wallet-with-nostr-wallet-connect">la couverture de Zeus de la semaine dernière&lt;/a>.&lt;/p>
&lt;h2 id="mises-à-jour-des-projets">Mises à jour des projets&lt;/h2>
&lt;h3 id="amethyst-desktop---phase-2a-livrée">Amethyst Desktop - Phase 2A livrée&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a> a déployé la &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1676">Phase 2A de son application de bureau&lt;/a>, ajoutant la Recherche, les Favoris, les Zaps, les vues de Threads et le contenu long format (Lectures) à l&amp;rsquo;expérience de bureau. Une &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1683">PR #1683&lt;/a> complémentaire ajoute un retour transparent sur la diffusion des événements afin que les utilisateurs voient maintenant le statut en temps réel par relais lorsque leurs événements se propagent à travers le réseau, facilitant le diagnostic des problèmes de connectivité.&lt;/p>
&lt;h3 id="progression-de-notedeck--application-calendrier-et-perfectionnement-ux">Progression de Notedeck : Application Calendrier et perfectionnement UX&lt;/h3>
&lt;p>Le client de bureau &lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> de l&amp;rsquo;équipe Damus a fusionné le comportement de masquage automatique de la barre d&amp;rsquo;outils (&lt;a href="https://github.com/damus-io/notedeck/pull/1268">PR #1268&lt;/a>) qui répond à la vélocité de défilement pour plus d&amp;rsquo;espace d&amp;rsquo;écran sur les vues mobiles. Une &lt;a href="https://github.com/damus-io/notedeck/pull/1271">PR brouillon #1271&lt;/a> ajoute une application Calendrier &lt;a href="https://nostrcompass.org/fr/topics/nip-52/">NIP-52&lt;/a> complète avec des vues mois/semaine/jour/agenda, le support RSVP et les commentaires &lt;a href="https://nostrcompass.org/fr/topics/nip-22/">NIP-22&lt;/a> sur les événements de calendrier, actuellement sous feature flag pour les tests.&lt;/p>
&lt;h3 id="jumble-ajoute-le-mode-communauté">Jumble ajoute le mode Communauté&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>, le client web axé sur les relais, a ajouté le &lt;a href="https://github.com/CodyTseng/jumble/pull/738">mode communauté&lt;/a> et le support des &lt;a href="https://github.com/CodyTseng/jumble/pull/736">préréglages d&amp;rsquo;ensembles de relais via variables d&amp;rsquo;environnement&lt;/a>, facilitant le déploiement d&amp;rsquo;instances thématiques comme &lt;a href="https://nostr.moe/">nostr.moe&lt;/a>.&lt;/p>
&lt;h3 id="tableau-de-bord-des-commandes-shopstr">Tableau de bord des commandes Shopstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> a remplacé sa gestion des commandes par chat par un &lt;a href="https://github.com/shopstr-eng/shopstr/pull/219">Tableau de bord des commandes&lt;/a> dédié. La nouvelle interface fournit une vue centralisée pour que les marchands suivent le statut des commandes, marquent les messages comme lus et gèrent l&amp;rsquo;exécution sans faire défiler les fils de discussion. La mise à jour déprécie la mise en cache IndexedDB en faveur des API de statut de commande côté serveur et révise la façon dont les messages privés de commande sont tagués pour un meilleur filtrage.&lt;/p>
&lt;h3 id="formstr-ajoute-les-questions-en-grille">Formstr ajoute les questions en grille&lt;/h3>
&lt;p>&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>, l&amp;rsquo;application de formulaires native Nostr, a ajouté les &lt;a href="https://github.com/abh3po/nostr-forms/pull/419">questions en grille&lt;/a> et &lt;a href="https://github.com/abh3po/nostr-forms/pull/410">réécrit son SDK&lt;/a> avec le support de l&amp;rsquo;intégration. Une &lt;a href="https://github.com/abh3po/nostr-forms/pull/418">correction pour les signataires non-NIP-07&lt;/a> a résolu les problèmes pour les utilisateurs avec des signataires bunker ou locaux essayant de soumettre des formulaires avec leur identité.&lt;/p>
&lt;h3 id="nostr-tools-met-à-jour-les-dépendances-cryptographiques">nostr-tools met à jour les dépendances cryptographiques&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>, la bibliothèque JavaScript principale, &lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/520">a mis à jour vers @noble/curves v2.0.1&lt;/a>, répondant aux changements d&amp;rsquo;API cassants dans 27 fichiers et adoptant les dernières bibliothèques noble auditées. fiatjaf a également ajouté le support de &lt;code>switch_relays&lt;/code> à &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>, permettant aux clients bunker de changer dynamiquement les connexions de relais.&lt;/p>
&lt;h3 id="zeus-travaille-sur-les-avis-de-mint-nip-87">Zeus travaille sur les avis de mint NIP-87&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a> a une &lt;a href="https://github.com/ZeusLN/zeus/pull/3576">PR ouverte pour les avis de mint NIP-87&lt;/a>, permettant aux utilisateurs de découvrir et d&amp;rsquo;évaluer les mints &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> filtrés par les follows Nostr. Les avis incluent des notes étoilées et peuvent être soumis de manière anonyme ou avec le nsec de l&amp;rsquo;utilisateur.&lt;/p>
&lt;h3 id="camelus-intègre-le-support-complet-des-messages-privés">Camelus intègre le support complet des messages privés&lt;/h3>
&lt;p>&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>, un client Android basé sur Flutter construit avec Dart NDK pour des performances mobiles économes en batterie, a ajouté la messagerie directe complète avec plus de 20 commits cette semaine. La mise à jour inclut les catégories de chat, les dates des messages, l&amp;rsquo;interface d&amp;rsquo;envoi optimiste, la fonctionnalité note-à-soi-même et la gestion appropriée des relais de messages privés.&lt;/p>
&lt;h3 id="mises-à-jour-du-protocole-marmot">Mises à jour du protocole Marmot&lt;/h3>
&lt;p>La résolution déterministe des commits MIP-03 &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-21-newsletter/#marmot-protocol-white-noise-encrypted-group-chat-library">que nous avions couverte comme PR ouverte la semaine dernière&lt;/a> a maintenant été fusionnée. &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">MDK PR #152&lt;/a> garantit que tous les chats de groupe basés sur &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> convergent vers le même état lorsque plusieurs commits valides arrivent pour la même époque.&lt;/p>
&lt;p>Une &lt;a href="https://github.com/marmot-protocol/marmot/pull/28">PR spec #28&lt;/a> complémentaire ajoute les exigences de cycle de vie des init_key répondant aux lacunes des audits d&amp;rsquo;implémentation : le matériel de clé privée des messages Welcome doit être supprimé de manière sécurisée après traitement (zéroisation, nettoyage du stockage), et les nouveaux membres doivent effectuer des auto-mises à jour dans les 24 heures pour la confidentialité persistante.&lt;/p>
&lt;p>Le SDK TypeScript (&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>) construit une application de chat de référence. &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/37">PR #37&lt;/a> ajoute la création/liste de groupes, la gestion des paquets de clés avec les flux publier/diffuser/supprimer et les invitations par code QR. Une &lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR ouverte #38&lt;/a> par hzrd149 implémente la persistance de l&amp;rsquo;historique des messages avec pagination. Le backend whitenoise-rs a fusionné 15 PRs cette semaine incluant le support multilingue (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/455">PR #455&lt;/a>) et les références médias 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-ajoute-des-fonctionnalités-dintégration-nostr">diVine ajoute des fonctionnalités d&amp;rsquo;intégration Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>, l&amp;rsquo;application de vidéos courtes, poursuit son intégration rapide de Nostr.&lt;/p>
&lt;p>Les PRs ouvertes incluent l&amp;rsquo;authentification par code QR &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1019">PR #1019&lt;/a>) et la messagerie directe chiffrée &lt;a href="https://nostrcompass.org/fr/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;activité de cette semaine s&amp;rsquo;est concentrée sur le &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1098">support des mentions&lt;/a> convertissant les URI &lt;code>nostr:&lt;/code> et les @mentions en liens de profil cliquables, les &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1097">fallbacks d&amp;rsquo;avatars Classic Viners&lt;/a> utilisant les profils Nostr, et les outils d&amp;rsquo;édition vidéo incluant le &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1056">dessin&lt;/a>, les &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1053">filtres&lt;/a> et les &lt;a href="https://github.com/divinevideo/divine-mobile/pull/1050">stickers&lt;/a>.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnés :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1534">Attestations de confiance des relais&lt;/a>&lt;/strong> - La proposition pour standardiser le scoring de confiance des relais &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-21-newsletter/#nip-updates">que nous avons couverte la semaine dernière&lt;/a> a été fusionnée. La spécification définit des événements kind 30385 pour les attestations de confiance des relais avec un scoring sur la fiabilité, la qualité et l&amp;rsquo;accessibilité. Le débat menant à la fusion portait sur le fait de savoir si les scores de confiance devraient être « globaux » (calculés une fois pour tous les utilisateurs) ou « personnalisés » (relatifs au graphe social de chaque observateur). Les algorithmes de type PageRank comme le &lt;a href="https://trust.nostr.band/">Trust Rank de nostr.band&lt;/a> et &lt;a href="https://github.com/Pretty-Good-Freedom-Tech/graperank-nodejs">GrapeRank&lt;/a> résistent aux attaques sybil en divisant tout rang passé à travers des comptes factices par la taille de la ferme de bots.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PRs ouvertes et discussions :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Communikeys&lt;/strong> - Une &lt;a href="https://nostrhub.io">proposition complète&lt;/a> pour la gestion des communautés qui utilise les npubs existants comme identifiants de communauté au lieu d&amp;rsquo;approches basées sur les relais. N&amp;rsquo;importe quelle npub peut devenir une communauté en publiant un événement kind 10222 ; les publications ciblent les communautés via des événements kind 30222. Le contrôle d&amp;rsquo;accès utilise les badges &lt;a href="https://nostrcompass.org/fr/topics/nip-58/">NIP-58&lt;/a>, permettant la gestion déléguée des membres avec stockage à froid pour les clés de communauté.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2196">NIP-CF : Flux de changements&lt;/a>&lt;/strong> - Un brouillon proposant la synchronisation d&amp;rsquo;événements basée sur les séquences comme alternative aux filtres &lt;code>since&lt;/code> basés sur les horodatages. Le problème : la synchronisation Nostr standard utilisant les horodatages &lt;code>since&lt;/code> peut manquer des événements lorsque plusieurs événements partagent le même horodatage à la seconde près, les horloges du client et du relais dérivent l&amp;rsquo;une par rapport à l&amp;rsquo;autre, ou le checkpointing est imprécis. NIP-CF résout cela en faisant assigner par les relais des numéros de séquence croissants de manière monotone aux événements stockés, fournissant un ordre total strict. Les clients demandent les changements depuis un numéro de séquence spécifique et reçoivent les événements dans un ordre garanti, avec un checkpointing précis qui ne manque jamais d&amp;rsquo;événements. La proposition supporte également le mode live/continu où les abonnements restent ouverts après la synchronisation initiale pour les mises à jour en temps réel.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1947">NIP-XX : Synchronisation de fichiers chiffrés&lt;/a>&lt;/strong> - Un protocole définissant les kinds 30800 (fichiers chiffrés), 30801 (index de coffre) et 30802 (documents partagés) pour synchroniser du contenu chiffré entre appareils en utilisant les relais Nostr. Le protocole permet aux applications de prise de notes local-first de fournir une synchronisation chiffrée de bout en bout sans serveurs centralisés. Les contenus des fichiers, les chemins, les noms et la structure des dossiers sont tous chiffrés en utilisant l&amp;rsquo;auto-chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, de sorte que les relais stockent des blobs qu&amp;rsquo;ils ne peuvent pas lire. Les pièces jointes binaires comme les images utilisent des serveurs &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> avec chiffrement côté client. Le kind 30802 permet le partage de documents entre utilisateurs en chiffrant vers la clé publique du destinataire.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="cinq-années-de-janvier-nostr">Cinq années de janvier Nostr&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/fr/newsletters/2025-12-31-newsletter/#december-recap-five-years-of-nostr-decembers">La newsletter du mois dernier&lt;/a> a retracé les jalons de décembre de Nostr depuis la première version client de fiatjaf jusqu&amp;rsquo;au don catalyseur de Jack Dorsey. Cette rétrospective trace ce qui s&amp;rsquo;est passé chaque janvier de 2021 à 2025, en se concentrant sur les développements techniques vérifiés.&lt;/p>
&lt;h3 id="janvier-2021--développement-précoce">Janvier 2021 : Développement précoce&lt;/h3>
&lt;p>Le troisième mois de Nostr a vu la poursuite du développement de Branle, le client Vue.js de fiatjaf lancé en décembre 2020. Un petit groupe d&amp;rsquo;adopteurs précoces, probablement moins de 15 personnes, se coordonnait via le groupe Telegram &lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a> (créé le 16 novembre 2020), testant le protocole sur un ou deux relais expérimentaux. Le client en ligne de commande noscl fournissait une interaction basée sur le terminal.&lt;/p>
&lt;p>Les fondations techniques étaient déjà verrouillées : les utilisateurs identifiés par des clés publiques secp256k1, les posts signés cryptographiquement avec des signatures Schnorr, et les relais servant de stockage passif qui ne communiquent pas entre eux. C&amp;rsquo;était délibérément de la cryptographie native Bitcoin, un choix de conception qui façonnerait les modèles d&amp;rsquo;adoption des années plus tard.&lt;/p>
&lt;h3 id="janvier-2022--découverte-par-les-développeurs">Janvier 2022 : Découverte par les développeurs&lt;/h3>
&lt;p>Janvier 2022 s&amp;rsquo;est ouvert avec Nostr encore en effervescence après sa &lt;a href="https://news.ycombinator.com/item?id=29749061">première apparition sur Hacker News&lt;/a> (31 décembre 2021), qui a généré 110 points et 138 commentaires. Au moment de ce post, seulement environ sept relais alimentaient l&amp;rsquo;ensemble du réseau, les commentateurs notant que « le spam n&amp;rsquo;est pas encore un problème parce que nostr est super nouveau et personne ne l&amp;rsquo;utilise encore ». Robert C. Martin (« Uncle Bob ») avait soutenu Nostr comme potentiellement « la solution finale pour la communication sociale ». La discussion s&amp;rsquo;est poursuivie en janvier, avec des développeurs débattant de l&amp;rsquo;architecture des relais versus le vrai P2P, la résistance à la censure versus la modération, et si la simplicité pouvait passer à l&amp;rsquo;échelle.&lt;/p>
&lt;p>Le post HN a déclenché une vague de nouvelles implémentations. Uncle Bob lui-même a commencé &lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>, un client desktop Clojure, le 18 janvier. La bibliothèque &lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a> de fiatjaf (créée en janvier 2021) et le client en ligne de commande &lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a> fournissaient des outils Go, tandis que &lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a> offrait le support JavaScript. En décembre 2022, environ 800 profils avaient des bios. Branle restait le principal client web, recevant des mises à jour incluant l&amp;rsquo;import de clés privées et le support multi-relais. Les défis techniques étaient évidents : les clés hex de 64 caractères s&amp;rsquo;avéraient peu intuitives, les délais de messages frustraient les utilisateurs, et la communauté se demandait si l&amp;rsquo;architecture pouvait gérer le trafic à l&amp;rsquo;échelle de Twitter.&lt;/p>
&lt;h3 id="janvier-2023--lexplosion">Janvier 2023 : L&amp;rsquo;explosion&lt;/h3>
&lt;p>Janvier 2023 a transformé Nostr d&amp;rsquo;expérience en mouvement. Damus, le client iOS de William Casarin (jb55), a bataillé avec le processus d&amp;rsquo;approbation de l&amp;rsquo;App Store d&amp;rsquo;Apple. Rejeté le 1er janvier, rejeté à nouveau le 26 janvier, il a finalement été &lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">approuvé le 31 janvier&lt;/a>. Cette approbation a déclenché une cascade : Damus a immédiatement atteint la 10e place des Réseaux Sociaux aux États-Unis. Jack Dorsey l&amp;rsquo;a &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">qualifié&lt;/a> de « jalon pour les protocoles ouverts ».&lt;/p>
&lt;p>Huit jours plus tôt, le 23 janvier, &lt;a href="https://x.com/Snowden/status/1617623779626352640">Edward Snowden a annoncé&lt;/a> sa présence sur Nostr : « Une des choses cool à propos de Nostr&amp;hellip; au-delà de la résistance à la censure, c&amp;rsquo;est que vous n&amp;rsquo;êtes pas limité à 280 caractères ». Son soutien en tant que lanceur d&amp;rsquo;alerte de la NSA avait du poids dans les cercles soucieux de la vie privée, et les utilisateurs ont immédiatement commencé à lui envoyer des sats via Lightning.&lt;/p>
&lt;p>Les clients web ont fait la course pour intégrer l&amp;rsquo;afflux. &lt;a href="https://github.com/v0l/snort">Snort&lt;/a>, créé par kieran en décembre 2022, a émergé comme un client React riche en fonctionnalités ; le 13 janvier, Snort a intégré l&amp;rsquo;enregistrement NIP-05 via l&amp;rsquo;API Nostr Plebs, permettant aux nouveaux utilisateurs de revendiquer des identités lisibles par l&amp;rsquo;homme lors de l&amp;rsquo;intégration. &lt;a href="https://iris.to">Iris&lt;/a>, développé à temps plein par Martti Malmi (un contributeur précoce de Bitcoin qui a reçu la deuxième transaction Bitcoin jamais effectuée de Satoshi), offrait des interfaces web et mobiles avec des identités NIP-05 gratuites sur iris.to. &lt;a href="https://github.com/monlovesmango/astral">Astral&lt;/a>, construit par monlovesmango avec Quasar (Vue.js) comme fork de Branle, se concentrait sur la gestion des relais avec sa fonctionnalité de groupement de relais qui permettait aux utilisateurs d&amp;rsquo;organiser les relais en ensembles pour la publication et le filtrage. Les bêtas TestFlight pour les clients iOS se remplissaient en quelques heures, et Amethyst dominait Android.&lt;/p>
&lt;p>L&amp;rsquo;infrastructure s&amp;rsquo;est démêlée pour suivre le rythme. Tous les relais étaient exploités par des enthousiastes payant de leur poche. Les relais payants utilisant des micropaiements Lightning créaient un filtrage naturel du spam mais introduisaient une friction d&amp;rsquo;accès. &lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Damus a été retiré de l&amp;rsquo;App Store chinois&lt;/a> seulement deux jours après son approbation, apparemment sur demande du principal régulateur internet chinois.&lt;/p>
&lt;h3 id="janvier-2024--durcissement-du-protocole">Janvier 2024 : Durcissement du protocole&lt;/h3>
&lt;p>Janvier 2024 s&amp;rsquo;est concentré sur la standardisation du protocole et la construction de la communauté. &lt;a href="https://www.nostrphx.com/events">Nostr PHX&lt;/a> a lancé l&amp;rsquo;année avec un meetup le 5 janvier à Phoenix, rassemblant les cypherpunks locaux. C&amp;rsquo;était le premier de nombreux événements communautaires cette année-là incluant BTC Prague (juin), Nostriga à Riga (août) et Nostrasia.&lt;/p>
&lt;p>Le développement de protocole le plus significatif a été la fusion de &lt;a href="https://github.com/nostr-protocol/nips/pull/716">NIP-59 (Gift Wrap)&lt;/a> le 29 janvier, fournissant la protection des métadonnées pour les communications chiffrées. Gift Wrap s&amp;rsquo;appuie sur &lt;a href="https://github.com/paulmillr/nip44">le standard de chiffrement NIP-44&lt;/a> (qui avait été &lt;a href="https://cure53.de/audit-report_nip44-implementations.pdf">audité par Cure53&lt;/a> en décembre 2023) pour cacher l&amp;rsquo;identité de l&amp;rsquo;expéditeur aux relais. Le protocole enveloppe les messages chiffrés dans un événement externe signé par une paire de clés aléatoire à usage unique. Les relais ne voient que la pubkey jetable, tandis que la véritable identité de l&amp;rsquo;expéditeur est enfouie dans la charge utile chiffrée que seul le destinataire peut déchiffrer. Cela empêche les opérateurs de relais et les observateurs du réseau d&amp;rsquo;apprendre qui envoie des messages à qui. Les horodatages peuvent également être randomisés pour déjouer l&amp;rsquo;analyse temporelle.&lt;/p>
&lt;p>L&amp;rsquo;écosystème s&amp;rsquo;est étendu au-delà des réseaux sociaux. &lt;a href="https://plebeian.market">Plebeian Market&lt;/a> est devenu entièrement natif Nostr avec la conformité &lt;a href="https://nostrcompass.org/fr/topics/nip-15/">NIP-15&lt;/a>, permettant les paniers d&amp;rsquo;achat multi-étals et un navigateur d&amp;rsquo;étals pour découvrir les marchands. &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a> a émergé comme une place de marché sans permission facilitant le commerce Bitcoin. &lt;a href="https://zap.stream/">Zap.stream&lt;/a>, construit par kieran, a apporté le streaming en direct sur Nostr avec des paiements Lightning à 21 sats/minute. Les outils de développement ont mûri avec &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> fournissant des abstractions TypeScript et &lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> offrant des bindings Rust. &lt;a href="https://blog.zeusln.com/new-release-zeus-v0-8-1/">Zeus v0.8.1&lt;/a> a intégré l&amp;rsquo;import de contacts Nostr et LND persistant, posant les bases de l&amp;rsquo;intégration Nostr Wallet Connect dans les versions ultérieures.&lt;/p>
&lt;p>Pourtant, la durabilité de l&amp;rsquo;infrastructure &lt;a href="https://arxiv.org/abs/2402.05709">restait difficile&lt;/a>. La recherche académique de cette période a trouvé que 95% des relais peinaient à couvrir les coûts opérationnels, avec 20% connaissant des temps d&amp;rsquo;arrêt significatifs. Les frais d&amp;rsquo;admission pour les relais payants étaient en moyenne inférieurs à 1 000 sats (~0,45 $), insuffisants pour maintenir les opérations.&lt;/p>
&lt;p>&lt;em>Une note sur les arnaques : Le « Nostr Assets Protocol » et le token « $NOSTR » associé lancés autour de cette période &lt;a href="https://www.aicoin.com/en/article/377704">ont été publiquement dénoncés par fiatjaf&lt;/a> comme « 100% frauduleux » et « une arnaque par affinité » sans aucune connexion avec le protocole Nostr réel.&lt;/em>&lt;/p>
&lt;h3 id="janvier-2025--maturation-des-clients">Janvier 2025 : Maturation des clients&lt;/h3>
&lt;p>Janvier 2025 a vu la poursuite du développement des clients à travers l&amp;rsquo;écosystème. &lt;a href="https://www.nobsbitcoin.com/nostur-v1-17-0/">Nostur 1.17.0&lt;/a> a été livré le 13 janvier avec la synchronisation multi-appareils des états de lecture, le support de connexion multi-sig &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a> et des performances de base de données locale optimisées. Amethyst a poursuivi sa transition vers le modèle outbox, compilant automatiquement les ensembles de relais basés sur les listes de follows plutôt que de nécessiter une configuration manuelle.&lt;/p>
&lt;p>Les principaux clients ont commencé à s&amp;rsquo;éloigner de &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> pour les messages directs, migrant vers &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> et le proposé &lt;a href="https://nostrcompass.org/fr/topics/nip-104/">NIP-104&lt;/a> pour un chiffrement amélioré et une protection des métadonnées. Le modèle Gossip (communication outbox/inbox) a gagné en adoption alors que l&amp;rsquo;écosystème convergeait vers des modèles d&amp;rsquo;utilisation des relais plus efficaces. Les observateurs de l&amp;rsquo;industrie ont prédit que ce serait l&amp;rsquo;année où Nostr passerait de protocole de niche à reconnaissance grand public, avec une migration potentielle de plateforme très médiatisée qui pourrait doubler l&amp;rsquo;activité quotidienne.&lt;/p>
&lt;h3 id="janvier-2026--infrastructure-de-sécurité-et-de-signature">Janvier 2026 : Infrastructure de sécurité et de signature&lt;/h3>
&lt;p>Janvier 2026 a apporté des avancées significatives dans l&amp;rsquo;infrastructure de sécurité et de signature. &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">Primal Android 2.6.18&lt;/a> a intégré la signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> et le support de signataire local &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>, rejoignant Amber et Aegis comme hub de signature complet pour d&amp;rsquo;autres applications Android. &lt;a href="https://github.com/permissionlesstech/bitchat/pulls">Bitchat a complété un audit de sécurité Cure53&lt;/a>, la même firme qui a audité Signal et NIP-44, avec plus de 17 PRs corrigeant des découvertes critiques incluant l&amp;rsquo;effacement des secrets DH et des problèmes de sécurité des threads. Bitchat et Damus ont tous deux migré de C Tor vers Rust Arti pour une fiabilité améliorée et la sécurité mémoire.&lt;/p>
&lt;p>Le travail sur le protocole a continué avec la fusion de &lt;a href="https://github.com/nostr-protocol/nips/pull/1669">NIP-71&lt;/a> (événements vidéo adressables) et un NIP de cryptographie post-quantique ouvrant la discussion sur la protection future de Nostr contre les attaques quantiques. Le brouillon des Attestations de confiance des relais a proposé de standardiser le scoring de confiance des relais via des attestations signées. Le &lt;a href="https://github.com/marmot-protocol/mdk">protocole Marmot&lt;/a> a durci sa messagerie chiffrée basée sur &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a> avec 18 PRs fusionnées répondant aux découvertes d&amp;rsquo;audit.&lt;/p>
&lt;p>Les applications du monde réel se sont étendues avec &lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a> développant le covoiturage décentralisé utilisant le séquestre &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> et le chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, et &lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a> ajoutant des flux de récupération par email à la signature à seuil &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a>. Damus a intégré &lt;a href="https://nostrcompass.org/fr/topics/negentropy/">negentropy&lt;/a> pour une synchronisation fiable des messages privés, tandis que l&amp;rsquo;application de bureau d&amp;rsquo;Amethyst a atteint la Phase 2A avec la recherche, les favoris et les zaps.&lt;/p>
&lt;h3 id="perspectives">Perspectives&lt;/h3>
&lt;p>Six années de janvier révèlent l&amp;rsquo;évolution de Nostr du développement précoce (2021) à la découverte publique (2022) à la croissance explosive (2023) au durcissement du protocole (2024) à la maturation des clients (2025) à l&amp;rsquo;infrastructure de sécurité (2026). Le modèle est familier à quiconque a observé la croissance des protocoles ouverts : des années de construction silencieuse, une explosion soudaine quand les conditions s&amp;rsquo;alignent, puis le travail plus long pour rendre tout cela fiable. Ce qui a commencé avec sept relais et un fil Hacker News est maintenant une infrastructure auditée avec des applications réelles. La question pour 2027 : quand quelqu&amp;rsquo;un appellera un trajet, enverra un message chiffré ou récupérera une clé perdue en utilisant Nostr, saura-t-il même qu&amp;rsquo;il l&amp;rsquo;utilise ?&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ? Vous avez des nouvelles à partager ? Vous voulez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via NIP-17 DM&lt;/a> ou trouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #6</title><link>https://nostrcompass.org/fr/newsletters/2026-01-21-newsletter/</link><pubDate>Wed, 21 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-01-21-newsletter/</guid><description>&lt;p>Bon retour sur Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Bitchat remplace le Tor en C par l&amp;rsquo;implémentation Rust Arti pour une meilleure fiabilité et performance. nostrdb-rs gagne des requêtes fold en streaming qui permettent des opérations de base de données sans allocation. Listr reçoit une refonte majeure avec migration vers NDK 3 beta et maintenance assistée par IA après un an de dormance. Zeus livre 17 PR fusionnées axées sur les correctifs &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect pour le contrôle Lightning à distance) et les améliorations Cashu, tandis que Primal Android ajoute des flux de sauvegarde de portefeuille et le support &lt;a href="https://nostrcompass.org/fr/topics/nip-92/">NIP-92&lt;/a> (dimensions de média pour des ratios d&amp;rsquo;aspect corrects). Un nouveau NIP brouillon propose les &lt;a href="https://nostrcompass.org/fr/topics/trusted-relay-assertions/">Assertions de Relais de Confiance&lt;/a> pour une notation de confiance standardisée des relais.&lt;/p></description><content:encoded>&lt;p>Bon retour sur Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Bitchat remplace le Tor en C par l&amp;rsquo;implémentation Rust Arti pour une meilleure fiabilité et performance. nostrdb-rs gagne des requêtes fold en streaming qui permettent des opérations de base de données sans allocation. Listr reçoit une refonte majeure avec migration vers NDK 3 beta et maintenance assistée par IA après un an de dormance. Zeus livre 17 PR fusionnées axées sur les correctifs &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect pour le contrôle Lightning à distance) et les améliorations Cashu, tandis que Primal Android ajoute des flux de sauvegarde de portefeuille et le support &lt;a href="https://nostrcompass.org/fr/topics/nip-92/">NIP-92&lt;/a> (dimensions de média pour des ratios d&amp;rsquo;aspect corrects). Un nouveau NIP brouillon propose les &lt;a href="https://nostrcompass.org/fr/topics/trusted-relay-assertions/">Assertions de Relais de Confiance&lt;/a> pour une notation de confiance standardisée des relais.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="bitchat-adopte-rust-arti-pour-le-support-tor">Bitchat adopte Rust Arti pour le support Tor&lt;/h3>
&lt;p>Bitchat a migré du Tor en C vers &lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>, l&amp;rsquo;implémentation Rust du protocole Tor. &lt;a href="https://github.com/permissionlesstech/bitchat/pull/958">PR #958&lt;/a> supprime la dépendance au Tor en C et intègre Arti, apportant des garanties de sécurité mémoire et une fiabilité améliorée. Le changement élimine les tentatives de réveil en dormance qui causaient des redémarrages du service en premier plan, un problème persistant avec l&amp;rsquo;implémentation en C.&lt;/p>
&lt;p>&lt;strong>Ce que cela signifie pour les utilisateurs :&lt;/strong> Messagerie chiffrée plus stable avec moins de déconnexions, en particulier sur les appareils mobiles. L&amp;rsquo;implémentation Rust réduit les risques de plantage et la consommation de batterie due aux tentatives de reconnexion constantes.&lt;/p>
&lt;p>Arti est une réécriture complète de Tor en Rust, développée par le projet Tor pour offrir une meilleure sécurité grâce à la sûreté mémoire et une intégration plus facile dans les applications. Pour Bitchat, les propriétés de sûreté mémoire réduisent la surface d&amp;rsquo;attaque lors du traitement des messages chiffrés et des connexions relais. La migration fait suite au récent &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-13-newsletter/#bitchat-termine-laudit-de-s%C3%A9curit%C3%A9-cure53">audit de sécurité Cure53&lt;/a> de l&amp;rsquo;équipe (couvert dans la Newsletter #5), poursuivant leurs améliorations de sécurité.&lt;/p>
&lt;p>La PR introduit également une couverture de tests complète pour ChatViewModel et BLEService, supprime le code mort et stabilise la suite de tests. Les améliorations de fiabilité du maillage Bluetooth Low Energy accompagnent les changements Tor, traitant les échecs de transferts importants. Ensemble, ces changements améliorent la résilience de Bitchat pour les scénarios de réseau maillé hors ligne où Tor fournit la connectivité Internet aux côtés de la communication BLE locale.&lt;/p>
&lt;h3 id="listr-revitalisé-avec-maintenance-assistée-par-ia">Listr revitalisé avec maintenance assistée par IA&lt;/h3>
&lt;p>JeffG a annoncé une refonte majeure de &lt;a href="https://github.com/erskingardner/listr">Listr&lt;/a>, l&amp;rsquo;application de gestion de listes Nostr disponible sur &lt;a href="https://listr.lol">listr.lol&lt;/a>, après que le projet avait été en dormance pendant plus d&amp;rsquo;un an. Avec l&amp;rsquo;assistance IA, il a complété une mise à niveau complète incluant la migration vers &lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> 3 beta, les mises à jour vers les dernières versions de Svelte et Vite, et toutes les dépendances mises à jour. La refonte ajoute un support de première classe pour les packs de suivi, implémente la pagination pour les listes dépassant 50 éléments et corrige de nombreux bugs qui s&amp;rsquo;étaient accumulés pendant la période de dormance.&lt;/p>
&lt;p>&lt;strong>Ce que cela signifie pour les utilisateurs :&lt;/strong> Listr est de retour en ligne avec des performances améliorées et de nouvelles fonctionnalités pour gérer les listes de suivi, les collections de contenu et la curation de sujets. Le correctif de pagination rend les grandes listes réellement utilisables.&lt;/p>
&lt;p>JeffG a noté que sans l&amp;rsquo;assistance IA, ce travail de maintenance n&amp;rsquo;aurait probablement jamais eu lieu, empêchant le projet d&amp;rsquo;être abandonné. Listr permet la curation de contenu sur Nostr, permettant aux utilisateurs de créer, gérer et partager des listes de profils, sujets et ressources. La mise à niveau maintient l&amp;rsquo;application compatible avec les normes Nostr actuelles et les attentes des clients alors que la gestion des listes devient plus centrale pour la découverte de contenu sur le protocole.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnées :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> (Groupes basés sur les relais) - Clarification de la clé de relais (&lt;a href="https://github.com/nostr-protocol/nips/pull/2190">#2190&lt;/a> - fusionnée) clarifie que la clé de relais est l&amp;rsquo;URL du relais elle-même, pas une pubkey. La spécification indique maintenant explicitement &amp;ldquo;La clé de relais est l&amp;rsquo;URL WebSocket du relais (par ex., wss://groups.example.com)&amp;rdquo; pour éviter toute confusion. Cela affecte la façon dont les clients identifient quel relais héberge un groupe donné, garantissant que les groupes sont correctement attribués à leurs relais d&amp;rsquo;hébergement.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR ouvertes et discussions :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Assertions de Relais de Confiance&lt;/strong> - Un NIP brouillon propose de standardiser la notation de confiance des relais via des événements kind 30385 contenant des scores de confiance (0-100) calculés à partir des métriques &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> (découverte et surveillance de relais), de la réputation de l&amp;rsquo;opérateur et des rapports utilisateurs. La spécification divise la confiance en composantes de fiabilité (disponibilité, latence), qualité (TLS, documentation, vérification de l&amp;rsquo;opérateur) et accessibilité (juridiction, barrières, risque de surveillance). La vérification de l&amp;rsquo;opérateur inclut des signatures cryptographiques via &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> (documents d&amp;rsquo;information de relais), des enregistrements DNS TXT et des fichiers .well-known. Les utilisateurs déclarent les fournisseurs d&amp;rsquo;assertions de confiance via des événements kind 10385, permettant aux clients d&amp;rsquo;interroger plusieurs fournisseurs pour des perspectives diverses. La proposition complète la découverte &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> avec l&amp;rsquo;évaluation, aidant &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> (signature à distance/Nostr Connect) à évaluer la fiabilité des relais dans les URI de connexion.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Cryptographie post-quantique&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> (ouverte) continue d&amp;rsquo;évoluer depuis que la &lt;a href="https://nostrcompass.org/fr/newsletters/2026-01-13-newsletter/#mises-%C3%A0-jour-des-nip">Newsletter #5&lt;/a> a introduit la proposition pour des algorithmes résistants aux attaques quantiques. La discussion de cette semaine s&amp;rsquo;est concentrée sur les détails d&amp;rsquo;implémentation pour la crypto-agilité : comment les clients gèrent les signatures doubles pendant la migration, la rétrocompatibilité pour les anciens clients et les implications de performance des signatures résistantes quantiques plus grandes. Les contributeurs ont débattu de la nécessité de n&amp;rsquo;imposer que ML-DSA-44 ou de supporter plusieurs algorithmes (ML-DSA-44, Falcon-512, Dilithium) pour la flexibilité. Le consensus penche vers une approche progressive : signatures quantiques optionnelles initialement, devenant obligatoires seulement après un support client généralisé et l&amp;rsquo;émergence d&amp;rsquo;une menace quantique réelle.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="plongée-approfondie-dans-les-nip--nip-11-et-nip-66">Plongée approfondie dans les NIP : NIP-11 et NIP-66&lt;/h2>
&lt;p>Cette semaine, nous examinons deux NIP qui fonctionnent ensemble pour permettre la découverte et l&amp;rsquo;évaluation des relais : NIP-11 définit comment les relais se décrivent, et NIP-66 standardise comment nous mesurons le comportement des relais. Ensemble, ils forment la base des systèmes d&amp;rsquo;évaluation de la confiance des relais.&lt;/p>
&lt;h3 id="nip-11frtopicsnip-11--document-dinformation-de-relais">&lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> : Document d&amp;rsquo;information de relais&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/11.md">NIP-11&lt;/a> définit un document JSON que les relais servent via HTTP pour décrire leurs capacités, politiques et informations d&amp;rsquo;opérateur. Lorsqu&amp;rsquo;un client se connecte à &lt;code>wss://relay.example.com&lt;/code>, il peut récupérer &lt;code>https://relay.example.com&lt;/code> (en remplaçant &lt;code>wss://&lt;/code> par &lt;code>https://&lt;/code>) pour obtenir le document d&amp;rsquo;information du relais.&lt;/p>
&lt;p>Le document utilise la négociation de contenu HTTP standard avec l&amp;rsquo;en-tête &lt;code>Accept: application/nostr+json&lt;/code>. Cela permet aux relais de servir leur site web normal aux navigateurs tout en fournissant des métadonnées lisibles par machine aux clients Nostr. La réponse inclut le nom du logiciel de relais et la version, les informations de contact de l&amp;rsquo;opérateur (pubkey, email, contact alternatif), les NIP supportés et les paramètres opérationnels comme les exigences de paiement ou les restrictions de contenu.&lt;/p>
&lt;p>Important, les documents NIP-11 de base sont du JSON non signé servi via HTTPS, s&amp;rsquo;appuyant uniquement sur les certificats TLS pour l&amp;rsquo;authenticité. Cela signifie que quiconque contrôle le serveur web du relais peut modifier le document, rendant les déclarations de l&amp;rsquo;opérateur invérifiables. La proposition d&amp;rsquo;Assertions de Relais de Confiance répond à cette lacune en introduisant des attestations signées via le champ &lt;code>self&lt;/code> pubkey d&amp;rsquo;un relais, permettant une preuve cryptographique de l&amp;rsquo;identité de l&amp;rsquo;opérateur similaire à la façon dont les relais utilisent des événements signés pour les mécanismes d&amp;rsquo;authentification.&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 relais public à usage général&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;objet &lt;code>limitation&lt;/code> indique aux clients quelles contraintes le relais applique. &lt;code>max_message_length&lt;/code> limite la taille des trames WebSocket, &lt;code>max_subscriptions&lt;/code> limite le nombre d&amp;rsquo;abonnements REQ simultanés par connexion, &lt;code>max_filters&lt;/code> limite les filtres par REQ, et &lt;code>max_limit&lt;/code> restreint combien d&amp;rsquo;événements un seul filtre peut demander. Ces paramètres aident les clients à adapter leur comportement aux capacités des relais, évitant les déconnexions dues au dépassement des limites.&lt;/p>
&lt;p>Les informations de paiement apparaissent dans &lt;code>fees&lt;/code> et &lt;code>payments_url&lt;/code>. Les relais peuvent facturer pour l&amp;rsquo;admission (accès unique), l&amp;rsquo;abonnement (accès récurrent) ou la publication (frais par événement). Le &lt;code>payments_url&lt;/code> pointe vers les détails sur les méthodes de paiement, généralement des factures Lightning ou des coffres ecash. Les relais payants utilisent ces champs pour communiquer les tarifs avant que les clients tentent l&amp;rsquo;authentification.&lt;/p>
&lt;p>Le tableau &lt;code>supported_nips&lt;/code> permet aux clients de découvrir les capacités des relais. Si un relais liste &lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a>, les clients savent qu&amp;rsquo;ils peuvent envoyer des requêtes de recherche en texte intégral. Si &lt;a href="https://nostrcompass.org/fr/topics/nip-42/">NIP-42&lt;/a> apparaît, les clients doivent s&amp;rsquo;attendre à des défis d&amp;rsquo;authentification. Cette publicité déclarative des capacités permet une amélioration progressive : les clients peuvent utiliser des fonctionnalités avancées là où elles sont disponibles tout en se dégradant gracieusement sur les relais avec un support limité.&lt;/p>
&lt;p>Les informations sur l&amp;rsquo;opérateur renforcent la responsabilité. Le champ &lt;code>pubkey&lt;/code> identifie l&amp;rsquo;opérateur du relais sur Nostr, permettant la communication directe via les DM &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> ou les mentions publiques. L&amp;rsquo;email &lt;code>contact&lt;/code> fournit un repli hors protocole. Ensemble, ces champs aident les utilisateurs à joindre les opérateurs pour signaler des abus, demander l&amp;rsquo;accès ou résoudre des problèmes techniques.&lt;/p>
&lt;p>Les documents &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> sont auto-déclarés : les relais décrivent ce qu&amp;rsquo;ils prétendent supporter, pas nécessairement ce qu&amp;rsquo;ils font réellement. C&amp;rsquo;est là que NIP-66 devient important.&lt;/p>
&lt;h3 id="nip-66frtopicsnip-66--découverte-de-relais-et-surveillance-de-disponibilité">&lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> : Découverte de relais et surveillance de disponibilité&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/66.md">NIP-66&lt;/a> standardise la publication des données de surveillance de relais sur Nostr. Les services de surveillance testent en continu les relais pour la disponibilité, la latence, la conformité au protocole et les NIP supportés. Ils publient les résultats sous forme d&amp;rsquo;événements kind 30166, fournissant un état de relais en temps réel indépendant de l&amp;rsquo;auto-déclaration des relais.&lt;/p>
&lt;p>Les moniteurs vérifient la disponibilité des relais en se connectant et en envoyant des abonnements de test. Les mesures de latence suivent le temps de connexion, le temps de réponse d&amp;rsquo;abonnement et le délai de propagation d&amp;rsquo;événement. Les tests de conformité au protocole vérifient que le comportement du relais correspond aux spécifications, détectant les bugs d&amp;rsquo;implémentation ou les déviations intentionnelles. La vérification du support NIP va au-delà des déclarations &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> en testant réellement si les fonctionnalités annoncées fonctionnent correctement.&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>Le tag &lt;code>d&lt;/code> contient l&amp;rsquo;URL du relais, faisant de ceci un événement remplaçable paramétré. Chaque moniteur publie un événement par relais, mis à jour au fur et à mesure que les mesures changent. Plusieurs moniteurs peuvent suivre le même relais, fournissant redondance et validation croisée. Les clients interrogent plusieurs pubkeys de moniteurs pour obtenir des perspectives diverses sur la santé des relais.&lt;/p>
&lt;p>Les tags de temps d&amp;rsquo;aller-retour (rtt) mesurent la latence pour différentes opérations. &lt;code>rtt open&lt;/code> suit l&amp;rsquo;établissement de connexion WebSocket, &lt;code>rtt read&lt;/code> mesure le temps de réponse d&amp;rsquo;abonnement et &lt;code>rtt write&lt;/code> teste la vitesse de publication d&amp;rsquo;événement. Toutes les valeurs sont en millisecondes. Les clients utilisent ces métriques pour préférer les relais à faible latence pour les opérations sensibles au temps ou dé-prioriser les relais lents.&lt;/p>
&lt;p>Le tag &lt;code>nips&lt;/code> liste le support NIP réellement vérifié, pas seulement le support revendiqué. Les moniteurs testent chaque NIP en exerçant sa fonctionnalité. Si un relais revendique la recherche &lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a> dans son document &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> mais que les requêtes de recherche échouent, les moniteurs omettront NIP-50 de la liste vérifiée. Cela fournit une vérité terrain sur les capacités des relais.&lt;/p>
&lt;p>Les informations géographiques aident les clients à sélectionner des relais proches pour une meilleure latence et résistance à la censure. Le tag &lt;code>geo&lt;/code> contient le code pays, le nom du pays et la région. Le tag &lt;code>network&lt;/code> distingue les relais clearnet des services cachés Tor ou des points de terminaison I2P. Ensemble, ces tags permettent la diversité géographique : les clients peuvent se connecter à des relais dans plusieurs juridictions pour résister à la censure régionale.&lt;/p>
&lt;p>Les données de surveillance alimentent les sélecteurs de relais dans les clients, les sites web explorateurs et la proposition d&amp;rsquo;Assertions de Relais de Confiance. En combinant les documents &lt;a href="https://nostrcompass.org/fr/topics/nip-11/">NIP-11&lt;/a> auto-déclarés avec les données &lt;a href="https://nostrcompass.org/fr/topics/nip-66/">NIP-66&lt;/a> mesurées et les assertions de confiance calculées, l&amp;rsquo;écosystème évolue vers une sélection de relais informée plutôt que de s&amp;rsquo;appuyer sur des valeurs par défaut codées en dur ou des recommandations de bouche à oreille.&lt;/p>
&lt;h2 id="sorties">Sorties&lt;/h2>
&lt;h3 id="0xchat-v153---fonctionnalités-de-messagerie-améliorées">0xchat v1.5.3 - Fonctionnalités de messagerie améliorées&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> apporte des améliorations significatives au client de messagerie Nostr de style Telegram. La version corrige les problèmes de conformité &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> (application de signature Android) qui empêchaient la signature correcte des événements via des signataires externes comme Amber. La conformité totale signifie que 0xchat délègue maintenant correctement les opérations de signature, améliorant la sécurité en gardant les clés privées isolées.&lt;/p>
&lt;p>La mise à jour intègre à la fois FileDropServer et BlossomServer comme options de stockage de média par défaut, offrant aux utilisateurs une redondance pour les téléchargements de fichiers. &lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a> fournit un stockage adressable par contenu où les fichiers sont référencés par leurs hachages SHA-256, garantissant l&amp;rsquo;intégrité et permettant la déduplication sur le réseau. L&amp;rsquo;enregistrement automatique des brouillons pour Moments empêche la perte de données lors de la composition de contenu long, répondant aux plaintes des utilisateurs concernant les publications perdues lors des changements d&amp;rsquo;application ou des interruptions de connectivité.&lt;/p>
&lt;p>L&amp;rsquo;intégration du portefeuille Cashu reçoit un polissage avec un filtrage automatique des preuves qui supprime les jetons dépensés de la vue du portefeuille. Cela résout l&amp;rsquo;UX confuse où les utilisateurs voyaient des preuves invalides aux côtés de l&amp;rsquo;ecash valide, rendant les calculs de solde peu fiables. Le filtrage se fait côté client, maintenant la confidentialité tout en améliorant l&amp;rsquo;expérience de paiement pour les transactions pair-à-pair dans les discussions.&lt;/p>
&lt;h3 id="amber-v410-pré-versions---refonte-de-linterface">Amber v4.1.0 Pré-versions - Refonte de l&amp;rsquo;interface&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> à &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.0-pre3">v4.1.0-pre3&lt;/a> introduisent une interface repensée pour le signataire d&amp;rsquo;événements Android populaire. L&amp;rsquo;écran de connexion affiche maintenant clairement quelle application demande des permissions de signature, répondant à la confusion des utilisateurs concernant les flux d&amp;rsquo;autorisation. Le nouvel écran d&amp;rsquo;événements fournit une inspection détaillée des données que les applications veulent signer, permettant aux utilisateurs de prendre des décisions de sécurité éclairées avant d&amp;rsquo;approuver les opérations.&lt;/p>
&lt;p>La gestion des permissions reçoit une attention significative avec une interface remaniée montrant exactement quelles capacités chaque application connectée a été accordée. Les utilisateurs peuvent révoquer des permissions spécifiques sans se déconnecter entièrement, permettant un contrôle fin sur la délégation de signature. Les compteurs de relais refactorisés utilisant la bibliothèque quartz mise à jour fournissent des statistiques en temps réel sur le débit d&amp;rsquo;événements et les performances des relais. Les connexions bunker &lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">NIP-46&lt;/a> (Nostr Connect) affichent maintenant des messages d&amp;rsquo;erreur détaillés lorsque les connexions échouent, remplaçant les erreurs de délai d&amp;rsquo;attente cryptiques par des diagnostics exploitables.&lt;/p>
&lt;h2 id="changements-notables-de-code-et-de-documentation">Changements notables de code et de documentation&lt;/h2>
&lt;p>&lt;em>Ce sont des pull requests fusionnées et des développements en phase précoce qui méritent d&amp;rsquo;être suivis. Certains sont des fonctionnalités expérimentales qui peuvent évoluer avant la sortie.&lt;/em>&lt;/p>
&lt;h3 id="zeus-portefeuille-lightning-avec-nostr-wallet-connect">Zeus (Portefeuille Lightning avec Nostr Wallet Connect)&lt;/h3>
&lt;p>Zeus a fusionné 17 pull requests cette semaine, renforçant sa position en tant qu&amp;rsquo;implémentation &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect leader. Les correctifs les plus significatifs traitent les problèmes de cohérence des données et de conformité au protocole qui causaient des problèmes d&amp;rsquo;interopérabilité avec les clients Nostr.&lt;/p>
&lt;p>&lt;strong>Correctif de l&amp;rsquo;historique des transactions&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3542">PR #3542&lt;/a> résout un bug critique où les listes de transactions NWC affichaient des entrées incorrectes ou dupliquées. Le problème se produisait lorsque Zeus mettait en cache les données de transaction sans gérer correctement les mises à jour d&amp;rsquo;événements, amenant les utilisateurs à voir des transactions fantômes ou des paiements manquants. Le correctif implémente une déduplication d&amp;rsquo;événements appropriée et une invalidation de cache, garantissant que l&amp;rsquo;historique des transactions reflète avec précision l&amp;rsquo;état du nœud Lightning.&lt;/p>
&lt;p>&lt;strong>Conformité au protocole&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3548">PR #3548&lt;/a> traite les réponses &lt;code>getInfo&lt;/code> incomplètes qui cassaient la compatibilité avec les clients attendant une conformité NIP-47 complète. Certains clients Nostr plantaient lors de la réception de réponses partielles manquant de champs comme &lt;code>block_height&lt;/code> ou &lt;code>network&lt;/code>. La PR garantit que tous les champs requis retournent avec des valeurs par défaut sensées même lorsque l&amp;rsquo;implémentation Lightning sous-jacente ne les fournit pas, améliorant la compatibilité de Zeus dans l&amp;rsquo;écosystème.&lt;/p>
&lt;p>&lt;strong>Résilience de connexion&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3543">PR #3543&lt;/a> implémente des notifications de délai d&amp;rsquo;attente pour les connexions Nostr bloquées. Auparavant, les utilisateurs attendaient indéfiniment lorsque les connexions relais tombaient silencieusement. Maintenant Zeus affiche des messages de délai d&amp;rsquo;attente clairs après 30 secondes d&amp;rsquo;inactivité, permettant aux utilisateurs de réessayer ou de changer de relais. &lt;a href="https://github.com/ZeusLN/zeus/pull/3541">PR #3541&lt;/a> ajoute une validation backend pour empêcher l&amp;rsquo;activation NWC sur des implémentations Lightning incompatibles, détectant les erreurs de configuration avant qu&amp;rsquo;elles ne causent des plantages à l&amp;rsquo;exécution.&lt;/p>
&lt;p>&lt;strong>Condition de concurrence Cashu&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3531">PR #3531&lt;/a> corrige un bug de concurrence dans la gestion des jetons Cashu où des opérations de frappe simultanées pouvaient corrompre la base de données de jetons. La condition de concurrence se produisait lorsque plusieurs threads mettaient à jour les compteurs de jetons sans verrouillage approprié, résultant occasionnellement en soldes incorrects. Le correctif ajoute une protection mutex autour des sections critiques, garantissant des mises à jour atomiques de l&amp;rsquo;état des jetons.&lt;/p>
&lt;h3 id="primal-android-client">Primal Android (Client)&lt;/h3>
&lt;p>Primal Android a livré 12 PR fusionnées avec des améliorations significatives de la sécurité du portefeuille et du traitement des médias. L&amp;rsquo;implémentation de sauvegarde de portefeuille répond à l&amp;rsquo;une des fonctionnalités les plus demandées, tandis que le support NIP-92 améliore l&amp;rsquo;expérience visuelle dans toute l&amp;rsquo;application.&lt;/p>
&lt;p>&lt;strong>Système de sauvegarde de portefeuille&lt;/strong> - Une série de quatre 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>) implémente une fonctionnalité complète de sauvegarde de phrase de récupération. Les utilisateurs peuvent maintenant exporter leur mnémonique de 12 mots via un flux sécurisé qui empêche les captures d&amp;rsquo;écran, affiche l&amp;rsquo;état de sauvegarde dans le tableau de bord du portefeuille et guide les utilisateurs existants à travers la migration. L&amp;rsquo;implémentation suit les normes BIP-39 et inclut une validation pour empêcher les utilisateurs de perdre des fonds en raison d&amp;rsquo;un enregistrement incorrect de la phrase.&lt;/p>
&lt;p>&lt;strong>Dimensions de média (NIP-92)&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/718">PR #718&lt;/a> implémente le support &lt;a href="https://nostrcompass.org/fr/topics/nip-92/">NIP-92&lt;/a> pour des ratios d&amp;rsquo;aspect d&amp;rsquo;image et de vidéo corrects. Sans métadonnées de dimensions, les clients doivent télécharger les images pour déterminer leur taille, causant des sauts de mise en page au chargement du contenu. NIP-92 ajoute des tags &lt;code>dim&lt;/code> (comme &lt;code>[&amp;quot;dim&amp;quot;, &amp;quot;1920x1080&amp;quot;]&lt;/code>) aux événements de métadonnées de fichiers, permettant à Primal de réserver l&amp;rsquo;espace correct avant de télécharger les médias. Cela élimine les reflux gênants dans les galeries d&amp;rsquo;images et améliore les performances perçues.&lt;/p>
&lt;p>&lt;strong>Fiabilité du signataire distant&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/841">PR #841&lt;/a> corrige les problèmes de connexion &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> où les préfixes &lt;code>wss://&lt;/code> manquants causaient des échecs silencieux. La PR valide les URI de relais lors de la configuration de la connexion bunker, ajoutant automatiquement le préfixe de protocole lorsque les utilisateurs collent des domaines nus. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/843">PR #843&lt;/a> traite un bug de threading où de mauvaises conditions réseau causaient la publication de réponses comme notes racines, cassant le flux de conversation. Le correctif garantit que les ID d&amp;rsquo;événement parent persistent à travers les interruptions réseau.&lt;/p>
&lt;h3 id="protocole-marmot--white-noise-bibliothèque-de-discussion-de-groupe-chiffrée">Protocole Marmot : White Noise (Bibliothèque de discussion de groupe chiffrée)&lt;/h3>
&lt;p>White Noise, la bibliothèque Rust alimentant les discussions de groupe chiffrées du &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Protocole Marmot&lt;/a>, a fusionné six PR améliorant l&amp;rsquo;expérience utilisateur et la sécurité. Les changements rapprochent Marmot de la parité de fonctionnalités avec les applications de messagerie grand public tout en maintenant son architecture axée sur la confidentialité.&lt;/p>
&lt;p>&lt;strong>Accusés de réception de lecture&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/433">PR #433&lt;/a> et &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/436">#436&lt;/a> implémentent le suivi de lecture de messages pour les conversations de groupe. Le système stocke les positions de lecture par utilisateur par groupe dans un seul appareil, permettant des badges de comptage non lu. L&amp;rsquo;implémentation utilise des horodatages monotones pour suivre la dernière position de message lu pour chaque conversation. Cette fonctionnalité fondamentale permet des indicateurs d&amp;rsquo;interface utilisateur montrant les compteurs de messages non lus par conversation.&lt;/p>
&lt;p>&lt;strong>Épinglage de conversation&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/442">PR #442&lt;/a> ajoute l&amp;rsquo;épinglage de conversation persistant via un champ &lt;code>pin_order&lt;/code> dans la table de jonction &lt;code>accounts_groups&lt;/code> qui relie les comptes aux groupes. Les conversations épinglées maintiennent leur position en haut des listes de discussions indépendamment de l&amp;rsquo;activité des messages, correspondant aux attentes des utilisateurs de Signal et WhatsApp. L&amp;rsquo;implémentation utilise l&amp;rsquo;ordonnancement par entiers pour permettre des épingles illimitées avec un tri déterministe.&lt;/p>
&lt;p>&lt;strong>Résolution déterministe de commit (MIP-03)&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">PR #152&lt;/a> (ouverte) implémente la proposition d&amp;rsquo;amélioration Marmot 03, résolvant le problème critique des conditions de concurrence de commit dans les discussions de groupe distribuées. Lorsque plusieurs membres soumettent simultanément des changements d&amp;rsquo;état de groupe (ajout/suppression de membres, changement de permissions), les clients pouvaient diverger sur l&amp;rsquo;ordonnancement des commits, fragmentant le groupe en états incompatibles. MIP-03 introduit des instantanés d&amp;rsquo;époque et une sélection déterministe de gagnant : le commit avec l&amp;rsquo;horodatage &lt;code>created_at&lt;/code> le plus ancien gagne, avec l&amp;rsquo;ID d&amp;rsquo;événement lexicographique comme bris d&amp;rsquo;égalité. Cela permet à tous les clients de converger vers le même état via rollback et rejeu, maintenant la cohérence du groupe même pendant les partitions réseau.&lt;/p>
&lt;p>&lt;strong>Durcissement de sécurité&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/443">PR #443&lt;/a> empêche la copie inutile de secrets cryptographiques en utilisant des références dans &lt;code>resolve_group_image_path&lt;/code>. Cela réduit la fenêtre pour les attaques mémoire où les secrets pourraient être récupérés à partir d&amp;rsquo;allocations tas libérées. &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/438">PR #438&lt;/a> active le chiffrement de base de données SQLCipher via des paramètres de trousseau, protégeant l&amp;rsquo;historique des messages au repos. L&amp;rsquo;intégration du trousseau permet un stockage sécurisé des clés dans les trousseaux de plateforme plutôt que dans les fichiers de configuration.&lt;/p>
&lt;h3 id="nostrdb-rs-bibliothèque-de-base-de-données---pr-ouverte">nostrdb-rs (Bibliothèque de base de données) - PR ouverte&lt;/h3>
&lt;p>&lt;strong>Implémentation de requêtes en streaming&lt;/strong> - &lt;a href="https://github.com/damus-io/nostrdb-rs/pull/58">PR #58&lt;/a> (ouverte) propose des requêtes fold en streaming pour permettre des opérations de base de données sans allocation. L&amp;rsquo;implémentation ajoute des méthodes &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> et &lt;code>find_map&lt;/code> qui traiteraient les résultats de base de données un par un sans matérialiser des ensembles de résultats entiers en vecteurs. Cette approche réduirait la consommation de mémoire et permettrait une terminaison précoce pour les modèles de requête courants.&lt;/p>
&lt;p>L&amp;rsquo;implémentation technique expose les rappels de résultats de requête de bas niveau (&lt;code>ndb_query_visit&lt;/code>) en tant que visiteurs Rust avec état qui mappent les variantes &lt;code>ControlFlow&lt;/code> aux actions de visiteur C. Une fois fusionné, le code d&amp;rsquo;application se lira comme une logique d&amp;rsquo;itérateur tout en s&amp;rsquo;exécutant près de la couche de base de données. Par exemple, compter les notes correspondantes diffuserait à travers les résultats plutôt que de les collecter, et &lt;code>find_map&lt;/code> retournerait le premier résultat utile sans traiter les lignes restantes.&lt;/p>
&lt;p>nostrdb alimente Damus et Notedeck, clients iOS/macOS et de bureau respectivement. Les requêtes en streaming permettraient des modèles efficaces comme la pagination, le filtrage conditionnel et les vérifications d&amp;rsquo;existence. La PR modifie 3 fichiers avec +756 ajouts et -32 suppressions, une refactorisation substantielle de la couche de requête. Les utilisateurs d&amp;rsquo;applications basées sur nostrdb-rs verraient une utilisation mémoire réduite lors de la navigation dans de grandes chronologies ou de la recherche dans des bases de données d&amp;rsquo;événements étendues.&lt;/p>
&lt;h3 id="nak-outil-cli">nak (Outil CLI)&lt;/h3>
&lt;p>nak, l&amp;rsquo;outil en ligne de commande Nostr de fiatjaf, a fusionné six PR axées sur les améliorations du système de construction et les nouvelles fonctionnalités. &lt;a href="https://github.com/fiatjaf/nak/pull/91">PR #91&lt;/a> implémente une fonctionnalité de miroir Blossom, permettant à nak de servir de miroir pour les serveurs de média Blossom. &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> est un protocole de stockage de média adressable par contenu qui fonctionne aux côtés des événements Nostr.&lt;/p>
&lt;p>Les PR restantes traitent la compatibilité du système de construction sur les plateformes Windows, macOS et Linux, permettant le support du système de fichiers FUSE pour monter les événements Nostr comme répertoires locaux.&lt;/p>
&lt;h3 id="damus-client-ios---pr-ouvertes">Damus (Client iOS) - PR ouvertes&lt;/h3>
&lt;p>Damus a 11 PR ouvertes explorant des améliorations architecturales significatives. Bien que celles-ci n&amp;rsquo;aient pas encore fusionné, elles signalent des directions importantes pour le développement de clients Nostr iOS, en particulier autour de la confidentialité, de l&amp;rsquo;efficacité de synchronisation et de l&amp;rsquo;optimisation des données mobiles.&lt;/p>
&lt;p>&lt;strong>Intégration Tor&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3535">PR #3535&lt;/a> intègre le client Tor Arti directement dans Damus, permettant des connexions relais anonymes sans dépendances externes. Contrairement aux approches Orbot ou Tor Browser, l&amp;rsquo;intégration d&amp;rsquo;Arti fournit une intégration transparente avec le sandboxing iOS et les limites d&amp;rsquo;exécution en arrière-plan. L&amp;rsquo;implémentation Rust apporte la sûreté mémoire à l&amp;rsquo;anonymisation réseau, réduisant la surface d&amp;rsquo;attaque par rapport au Tor en C. Les utilisateurs pourraient basculer le mode Tor par relais ou globalement, le client gérant la gestion des circuits de manière transparente.&lt;/p>
&lt;p>&lt;strong>Protocole de synchronisation Negentropy&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a> implémente Negentropy, un protocole de réconciliation d&amp;rsquo;ensemble qui améliore radicalement l&amp;rsquo;efficacité de synchronisation. Au lieu de télécharger tous les événements depuis la dernière connexion, Negentropy échange des empreintes compactes (arbres Merkle) pour identifier exactement quels événements diffèrent entre le client et le relais. Pour les utilisateurs suivant des centaines de pubkeys, cela réduit la bande passante de synchronisation de mégaoctets à kilooctets. L&amp;rsquo;implémentation s&amp;rsquo;intègre avec RelayPool et SubscriptionManager, permettant une synchronisation efficace automatique sur tous les relais connectés.&lt;/p>
&lt;p>&lt;strong>Mode données réduites&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3549">PR #3549&lt;/a> ajoute des fonctionnalités de conservation de données cellulaires répondant aux retours des utilisateurs sur la consommation de bande passante. Le mode désactive le chargement automatique d&amp;rsquo;images, la pré-extraction vidéo et réduit les limites d&amp;rsquo;abonnement. Les utilisateurs sur connexions mesurées peuvent parcourir le contenu texte sans crainte de dépasser les plafonds de données. L&amp;rsquo;implémentation respecte les paramètres de mode données réduites iOS et fournit des contrôles granulaires pour différents types de médias.&lt;/p>
&lt;p>&lt;strong>Optimisations de base de données&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3548">PR #3548&lt;/a> retravaille le stockage d&amp;rsquo;instantané nostrdb pour des requêtes plus rapides et une utilisation disque réduite. L&amp;rsquo;optimisation change la façon dont les instantanés de base de données persistent sur disque, améliorant à la fois les performances de lecture et l&amp;rsquo;amplification d&amp;rsquo;écriture. Cela répond aux plaintes de décharge de batterie des utilisateurs avec de grandes bases de données d&amp;rsquo;événements.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ? Vous avez des nouvelles à partager ? Vous voulez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via DM NIP-17&lt;/a> ou trouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #5</title><link>https://nostrcompass.org/fr/newsletters/2026-01-13-newsletter/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-01-13-newsletter/</guid><description>&lt;p>Bon retour sur Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Bitchat fait l&amp;rsquo;objet d&amp;rsquo;un audit de sécurité professionnel par Cure53, la même entreprise qui a audité Signal et &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, avec plus de 17 PR déjà fusionnées corrigeant des découvertes critiques. &lt;a href="https://nostrcompass.org/fr/topics/nip-71/">NIP-71&lt;/a> est fusionnée, apportant des événements vidéo adressables au protocole. Un NIP sur la cryptographie post-quantique ouvre la discussion sur la protection de Nostr contre les attaques quantiques futures. Amethyst v1.05.0 propose des listes de favoris, des notes vocales et une version de bureau anticipée, tandis que Nostur v1.25.3 améliore les DM &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> avec des réactions et des réponses. Côté bibliothèques, rust-nostr étend le support de &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> aux backends SQLite et LMDB, et NDK corrige un bug de suivi des abonnements.&lt;/p></description><content:encoded>&lt;p>Bon retour sur Nostr Compass, votre guide hebdomadaire sur Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Bitchat fait l&amp;rsquo;objet d&amp;rsquo;un audit de sécurité professionnel par Cure53, la même entreprise qui a audité Signal et &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a>, avec plus de 17 PR déjà fusionnées corrigeant des découvertes critiques. &lt;a href="https://nostrcompass.org/fr/topics/nip-71/">NIP-71&lt;/a> est fusionnée, apportant des événements vidéo adressables au protocole. Un NIP sur la cryptographie post-quantique ouvre la discussion sur la protection de Nostr contre les attaques quantiques futures. Amethyst v1.05.0 propose des listes de favoris, des notes vocales et une version de bureau anticipée, tandis que Nostur v1.25.3 améliore les DM &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> avec des réactions et des réponses. Côté bibliothèques, rust-nostr étend le support de &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> aux backends SQLite et LMDB, et NDK corrige un bug de suivi des abonnements.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;h3 id="bitchat-termine-laudit-de-sécurité-cure53">Bitchat termine l&amp;rsquo;audit de sécurité Cure53&lt;/h3>
&lt;p>Bitchat, la messagerie chiffrée iOS combinant Nostr avec Cashu, a fait l&amp;rsquo;objet d&amp;rsquo;un audit de sécurité professionnel par Cure53, l&amp;rsquo;une des entreprises de sécurité les plus respectées du secteur. Cure53 a précédemment audité Signal, Mullvad VPN, et notamment la spécification de chiffrement &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> qui sous-tend la messagerie privée moderne sur Nostr.&lt;/p>
&lt;p>L&amp;rsquo;audit a révélé plus de 12 problèmes de sécurité (BCH-01-002 à BCH-01-013). L&amp;rsquo;équipe Bitchat a répondu avec plus de 17 pull requests. Les corrections clés incluent :&lt;/p>
&lt;p>&lt;strong>Effacement des secrets DH du protocole Noise&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">PR #928&lt;/a> corrige six emplacements où les secrets partagés Diffie-Hellman n&amp;rsquo;étaient pas effacés après l&amp;rsquo;accord de clés, restaurant les garanties de confidentialité persistante. Lorsque les secrets persistent en mémoire plus longtemps que nécessaire, un vidage mémoire ou une attaque par démarrage à froid pourrait compromettre les communications passées.&lt;/p>
&lt;p>&lt;strong>Vérification des signatures&lt;/strong> - Plusieurs PR renforcent les chemins de vérification cryptographique, garantissant que les contrôles d&amp;rsquo;authenticité des messages ne peuvent pas être contournés par des entrées malformées.&lt;/p>
&lt;p>&lt;strong>Sécurité des threads&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">PR #929&lt;/a> ajoute une synchronisation par barrière aux files d&amp;rsquo;accusés de réception dans NostrTransport, évitant les conditions de concurrence qui pourraient causer une corruption de données ou des plantages sous des volumes de messages élevés.&lt;/p>
&lt;p>&lt;strong>Sécurité mémoire&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">PR #920&lt;/a> optimise le dédoublonneur de messages pour de meilleures performances avec un débit de messages élevé tout en évitant l&amp;rsquo;épuisement de la mémoire.&lt;/p>
&lt;p>&lt;strong>Validation des entrées&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">PR #919&lt;/a> renforce l&amp;rsquo;analyse des chaînes hexadécimales pour éviter les plantages dus aux entrées malformées, un vecteur d&amp;rsquo;attaque courant pour les dénis de service.&lt;/p>
&lt;p>Bitchat gère l&amp;rsquo;ecash Cashu, rendant l&amp;rsquo;examen de sécurité professionnel essentiel. L&amp;rsquo;audit fait suite à l&amp;rsquo;audit du protocole &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Marmot&lt;/a> de l&amp;rsquo;année dernière et à l&amp;rsquo;audit NIP-44 qui a vérifié la couche de chiffrement.&lt;/p>
&lt;h2 id="nip-updates">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionnées :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-71/">NIP-71&lt;/a>&lt;/strong> - Événements vidéo adressables (&lt;a href="https://github.com/nostr-protocol/nips/pull/1669">#1669&lt;/a>) introduit les kinds 34235 (vidéo horizontale) et 34236 (vidéo verticale) comme événements adressables. Un tag &lt;code>d&lt;/code> requis fournit des identifiants uniques, permettant de mettre à jour les métadonnées vidéo sans republier l&amp;rsquo;événement entier. Un tag &lt;code>origin&lt;/code> optionnel permet de suivre les sources d&amp;rsquo;importation. Déjà implémenté dans Amethyst et nostrvine.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR ouvertes :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Cryptographie post-quantique&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> propose d&amp;rsquo;ajouter des algorithmes cryptographiques résistants aux attaques quantiques à Nostr. La spécification introduit ML-DSA-44 et Falcon-512 pour les signatures numériques, ciblant les « événements de très haute valeur » comme les applications et les autorités plutôt que les utilisateurs individuels. Bien que le chiffrement symétrique de &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> (ChaCha20) soit résistant aux attaques quantiques, son échange de clés utilise secp256k1 ECDH qui est vulnérable à l&amp;rsquo;algorithme de Shor. La proposition inclut ML-KEM pour l&amp;rsquo;accord de clés afin de combler cette lacune. Il s&amp;rsquo;agit d&amp;rsquo;une proposition à un stade précoce ouvrant la discussion sur l&amp;rsquo;agilité cryptographique pour la sécurité à long terme de Nostr.&lt;/li>
&lt;li>&lt;strong>BOLT12 pour NIP-47&lt;/strong> - Après 137 commentaires et une discussion approfondie, la communauté a décidé que les offres BOLT12 méritent leur propre spécification plutôt que d&amp;rsquo;étendre &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a>. Les offres BOLT12 apportent des améliorations significatives par rapport aux factures BOLT11, notamment la réutilisabilité, une meilleure confidentialité grâce aux chemins masqués et des informations optionnelles sur le payeur. Le nouveau NIP définira des méthodes comme &lt;code>make_offer&lt;/code>, &lt;code>pay_offer&lt;/code> et &lt;code>list_offers&lt;/code> pour les implémentations Nostr Wallet Connect.&lt;/li>
&lt;li>&lt;strong>NIP Audio Track&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/1043">PR #1043&lt;/a> propose les kinds 32100 pour les pistes musicales et 32101 pour les épisodes de podcast, donnant au contenu audio le même traitement de première classe que NIP-71 offre pour la vidéo. Actuellement, les plateformes audio comme Wavlake, Zapstr et Stemstr utilisent chacune des formats d&amp;rsquo;événements propriétaires, fragmentant l&amp;rsquo;écosystème. Un standard commun permettrait l&amp;rsquo;interopérabilité afin que les utilisateurs puissent découvrir et lire de l&amp;rsquo;audio depuis n&amp;rsquo;importe quel client compatible.&lt;/li>
&lt;li>&lt;strong>NIP-A3 Universal Payment Targets&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2119">PR #2119&lt;/a> propose des événements kind 10133 utilisant les URI &lt;code>payto:&lt;/code> RFC-8905 pour exposer les options de paiement sur plusieurs réseaux. Plutôt que de créer des kinds d&amp;rsquo;événements séparés pour Bitcoin, Lightning, Cashu ou les rails de paiement traditionnels, cette abstraction permet aux clients d&amp;rsquo;analyser des tags standardisés et d&amp;rsquo;invoquer des gestionnaires de paiement natifs. L&amp;rsquo;approche est pérenne puisque les nouvelles méthodes de paiement n&amp;rsquo;ont besoin que d&amp;rsquo;un schéma d&amp;rsquo;URI &lt;code>payto:&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="plongée-approfondie-dans-les-nip--nip-51-et-nip-65">Plongée approfondie dans les NIP : NIP-51 et NIP-65&lt;/h2>
&lt;p>Cette semaine, nous couvrons deux NIP qui stockent les préférences utilisateur : NIP-51 pour organiser le contenu, et NIP-65 pour organiser les connexions relay. Les deux utilisent des événements remplaçables, ce qui signifie que chaque nouvelle publication écrase la version précédente.&lt;/p>
&lt;h3 id="nip-51frtopicsnip-51--listes">&lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a> : Listes&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/51.md">NIP-51&lt;/a> définit plusieurs types de listes pour organiser les références aux événements, utilisateurs, hashtags et autres contenus. Amethyst v1.05.0 ajoute le support des favoris, ce qui en fait un bon moment pour comprendre comment fonctionnent les listes.&lt;/p>
&lt;p>La spécification définit plusieurs kinds de listes, chacun servant un objectif différent. Le kind 10000 est votre liste de mise en sourdine pour masquer les utilisateurs, fils de discussion ou mots. Le kind 10001 épingle les événements à mettre en avant sur votre profil. Le kind 30003 stocke les favoris, ce que Amethyst supporte maintenant. D&amp;rsquo;autres kinds gèrent les ensembles de suivi (30000), les collections d&amp;rsquo;articles sélectionnés (30004), les centres d&amp;rsquo;intérêt hashtag (30015) et les ensembles d&amp;rsquo;emojis personnalisés (30030).&lt;/p>
&lt;p>Les listes référencent le contenu via des tags. Une liste de favoris utilise des tags &lt;code>e&lt;/code> pour des événements spécifiques et des tags &lt;code>a&lt;/code> pour du contenu adressable comme les articles :&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>Le tag &lt;code>d&lt;/code> fournit un identifiant unique, vous permettant de maintenir plusieurs ensembles de favoris comme « saved-articles », « read-later » ou « favorites » sous le même kind.&lt;/p>
&lt;p>Les listes supportent à la fois les éléments publics et privés. Les éléments publics apparaissent dans le tableau des tags, visibles par quiconque récupère l&amp;rsquo;événement. Les éléments privés vont dans le champ &lt;code>content&lt;/code>, chiffrés en utilisant &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> pour vous-même. Cette structure duale vous permet de garder des favoris publics tout en attachant des notes privées, ou de maintenir une liste de mise en sourdine sans révéler qui vous avez mis en sourdine. Pour chiffrer pour vous-même, utilisez NIP-44 avec votre propre pubkey comme destinataire.&lt;/p>
&lt;p>Les kinds de la série 10000 sont remplaçables, ce qui signifie que les relays ne conservent qu&amp;rsquo;un seul événement par pubkey. La série 30000 est paramétrable et remplaçable, permettant un événement par combinaison de pubkey et de tag &lt;code>d&lt;/code>. Dans les deux cas, mettre à jour une liste signifie publier un remplacement complet ; vous ne pouvez pas envoyer de changements incrémentiels. Les clients doivent préserver les tags inconnus lors de la modification des listes pour éviter d&amp;rsquo;écraser les données ajoutées par d&amp;rsquo;autres applications.&lt;/p>
&lt;h3 id="nip-65-relay-list-metadata">&lt;a href="https://nostrcompass.org/fr/topics/nip-65/">NIP-65&lt;/a> : Métadonnées de liste de relays&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a> définit des événements kind 10002 qui annoncent quels relays un utilisateur préfère pour la lecture et l&amp;rsquo;écriture. Cela aide les autres utilisateurs et clients à trouver votre contenu.&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>Chaque tag &lt;code>r&lt;/code> contient une URL de relay et un marqueur optionnel. Un marqueur &lt;code>write&lt;/code> désigne votre boîte d&amp;rsquo;envoi : les relays où vous publiez votre contenu. Un marqueur &lt;code>read&lt;/code> désigne votre boîte de réception : les relays où vous vérifiez les mentions, réponses et tags. L&amp;rsquo;absence de marqueur indique les deux.&lt;/p>
&lt;p>Quand Alice veut trouver les publications de Bob, son client récupère le kind 10002 de Bob, extrait ses relays d&amp;rsquo;écriture (sa boîte d&amp;rsquo;envoi) et s&amp;rsquo;y abonne. Quand Alice répond à Bob, son client publie vers ses relays de lecture (sa boîte de réception) pour qu&amp;rsquo;il voie la mention. Ce routage conscient des relays est le « modèle outbox », et il distribue les utilisateurs sur de nombreux relays plutôt que de concentrer tout le monde sur quelques serveurs centraux.&lt;/p>
&lt;p>NIP-65 gère le routage du contenu public, mais les messages privés utilisent une liste séparée. &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> définit le kind 10050 pour les relays de boîte de réception DM, utilisant des tags &lt;code>relay&lt;/code> au lieu de tags &lt;code>r&lt;/code>. Lors de l&amp;rsquo;envoi d&amp;rsquo;un message privé à quelqu&amp;rsquo;un, les clients recherchent l&amp;rsquo;événement kind 10050 du destinataire et y publient le message emballé-cadeau chiffré. Cette séparation garde le routage des DM distinct du routage du contenu public, et permet aux utilisateurs de spécifier différents relays pour les communications privées et publiques.&lt;/p>
&lt;p>Le modèle outbox améliore la résistance à la censure puisqu&amp;rsquo;aucun relay unique n&amp;rsquo;a besoin de stocker ou de servir le contenu de tout le monde. Les clients maintiennent des connexions aux relays listés dans les événements NIP-65 de leurs utilisateurs suivis, se connectant dynamiquement à de nouveaux relays à mesure qu&amp;rsquo;ils découvrent de nouveaux comptes. NIP-65 complète les indices de relay trouvés dans d&amp;rsquo;autres NIP. Quand vous taguez quelqu&amp;rsquo;un avec &lt;code>[&amp;quot;p&amp;quot;, &amp;quot;pubkey&amp;quot;, &amp;quot;wss://hint.relay&amp;quot;]&lt;/code>, l&amp;rsquo;indice dit aux clients où chercher cette référence spécifique. NIP-65 fournit la liste autoritaire contrôlée par l&amp;rsquo;utilisateur, tandis que les indices offrent des raccourcis intégrés dans les événements individuels.&lt;/p>
&lt;p>Pour de meilleurs résultats, gardez votre liste de relays à jour car les entrées obsolètes vous rendent plus difficile à trouver. La spécification recommande deux à quatre relays par catégorie. Lister trop de relays surcharge chaque client qui veut récupérer votre contenu, ralentissant leur expérience et augmentant la charge réseau. Les clients mettent en cache les événements NIP-65 et les rafraîchissent périodiquement pour rester à jour lorsque les utilisateurs mettent à jour leurs préférences.&lt;/p>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;p>&lt;strong>Amethyst v1.05.0&lt;/strong> - Le client Android populaire &lt;a href="https://github.com/vitorpamplona/amethyst/releases">publie une mise à jour majeure&lt;/a> avec plusieurs fonctionnalités phares. Les listes de favoris kind 30003 de &lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a> permettent aux utilisateurs de sauvegarder des publications pour référence ultérieure, se synchronisant entre les clients compatibles. Les notes vocales fonctionnent maintenant dans les DM et les publications régulières avec visualisation de forme d&amp;rsquo;onde, sélection du serveur média et indicateurs de progression de téléchargement. Les scores de &lt;a href="https://nostrcompass.org/fr/topics/web-of-trust/">Web of Trust&lt;/a> sont maintenant visibles dans l&amp;rsquo;interface, aidant les utilisateurs à comprendre comment l&amp;rsquo;algorithme évalue les comptes par rapport à leur graphe social. La migration de base de données &lt;a href="https://nostrcompass.org/fr/topics/quartz/">Quartz&lt;/a> améliore les performances des requêtes dans le cadre du travail Kotlin Multiplatform financé par OpenSats. Une version de bureau anticipée amène Amethyst sur Windows, macOS et Linux via Compose Multiplatform, partageant le même code que l&amp;rsquo;application Android. De nouveaux flux d&amp;rsquo;intégration facilitent l&amp;rsquo;expérience pour les nouveaux utilisateurs Nostr.&lt;/p>
&lt;p>&lt;strong>Nostur v1.25.3&lt;/strong> - Le client iOS et macOS &lt;a href="https://github.com/nostur-com/nostur-ios-public/releases">se concentre sur la messagerie privée&lt;/a> avec des améliorations &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a>. Les conversations DM supportent maintenant les réactions et les réponses, apportant l&amp;rsquo;interactivité des publications publiques aux messages chiffrés. La vue de conversation a été retravaillée avec un meilleur threading pour que les échanges multi-messages soient plus faciles à suivre, et les horodatages affichent « il y a » dans la liste des DM pour un balayage rapide. Les utilisateurs de bureau obtiennent des dispositions multi-colonnes pour visualiser plusieurs flux ou conversations côte à côte. Le support du signataire distant &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> permet aux utilisateurs de garder leurs clés privées dans des applications de signature dédiées comme Amber ou nsec.app. Des corrections supplémentaires restaurent la fonctionnalité DM sur iOS 15 et iOS 16, résolvent les retards de notification et ajoutent la possibilité de configurer quels relays reçoivent les DM publiés.&lt;/p>
&lt;h2 id="changements-notables-de-code-et-documentation">Changements notables de code et documentation&lt;/h2>
&lt;p>&lt;em>Ce sont des pull requests ouvertes et des travaux à un stade précoce, parfaits pour obtenir des retours avant leur fusion. Si quelque chose attire votre attention, pensez à faire une revue ou à commenter !&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> corrige une vulnérabilité d&amp;rsquo;injection SQL dans l&amp;rsquo;application de relay personnel Android. Le problème permettait à des données d&amp;rsquo;événements malformées d&amp;rsquo;exécuter des requêtes de base de données arbitraires, un défaut sérieux pour toute application qui stocke et traite des entrées non fiables. La correction assainit correctement toutes les opérations de base de données en utilisant des requêtes paramétrées. Aucune version n&amp;rsquo;a encore été taguée, donc les utilisateurs devront attendre la prochaine version ou compiler depuis les sources. &lt;a href="https://github.com/greenart7c3/Citrine/pull/90">PR #90&lt;/a> optimise les performances de requête ContentProvider avec un filtrage et une pagination au niveau de la base de données, réduisant la latence lorsque des applications externes comme Amethyst accèdent à la base de données d&amp;rsquo;événements de Citrine via la couche de communication inter-processus d&amp;rsquo;Android.&lt;/p>
&lt;h3 id="rust-nostr-library">rust-nostr (Bibliothèque)&lt;/h3>
&lt;p>Le support de &lt;a href="https://nostrcompass.org/fr/topics/nip-62/">NIP-62&lt;/a> (requêtes de disparition) s&amp;rsquo;étend aux backends de base de données de rust-nostr. &lt;a href="https://github.com/rust-nostr/nostr/pull/1180">PR #1180&lt;/a>, fusionnée il y a deux semaines, a ajouté le support NIP-62 à SQLite, gérant les requêtes de disparition &lt;code>ALL_RELAYS&lt;/code> puisque la couche base de données ne connaît pas les URL de relay spécifiques. &lt;a href="https://github.com/rust-nostr/nostr/pull/1210">PR #1210&lt;/a> étend ceci au backend LMDB, garantissant que les requêtes de disparition sont persistées sur le disque et survivent aux redémarrages de relay. Une implémentation IndexedDB pour les environnements navigateur est également en cours. Ensemble, ces changements donnent aux développeurs un support NIP-62 cohérent à travers SQLite, LMDB et bientôt le stockage navigateur.&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> corrige un bug dans le système de suivi seenEvents. Le problème faisait que certains patterns d&amp;rsquo;abonnement marquaient incorrectement les événements comme déjà vus, conduisant à du contenu manqué lorsque les utilisateurs ouvraient de nouveaux abonnements ou se reconnectaient aux relays. La correction garantit que les événements sont suivis avec précision à travers les cycles de vie des abonnements, ce qui est particulièrement important pour les applications qui s&amp;rsquo;abonnent et se désabonnent dynamiquement en fonction de la navigation de l&amp;rsquo;utilisateur. NDK est passé à la version beta.70 avec cette correction incluse.&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> corrige un plantage au démarrage affectant les utilisateurs iOS 17. Le problème provenait d&amp;rsquo;un dépassement arithmétique dans &lt;code>NdbUseLock&lt;/code>, une classe de repli utilisée car les Swift Mutexes ne sont pas disponibles sur iOS 17. La correction remplace l&amp;rsquo;approche de synchronisation précédente par &lt;code>NSLock&lt;/code>, qui est disponible sur iOS 17 et gère correctement les conditions de concurrence restantes. Les utilisateurs iOS 18+ n&amp;rsquo;étaient pas affectés puisqu&amp;rsquo;ils ont accès à l&amp;rsquo;implémentation native Swift Mutex.&lt;/p>
&lt;p>Séparément, un lot d&amp;rsquo;améliorations pour les articles longs a été intégré via &lt;a href="https://github.com/damus-io/damus/pull/3509">PR #3509&lt;/a>. Des barres de progression de lecture suivent votre position dans les articles, les temps de lecture estimés apparaissent sur les aperçus, et le mode sépia avec des paramètres de hauteur de ligne ajustables offrent une lecture plus confortable. Le mode concentration masque automatiquement l&amp;rsquo;interface de navigation lors du défilement vers le bas et la restaure au toucher, réduisant l&amp;rsquo;encombrement visuel pour une lecture sans distraction. Plusieurs corrections traitent l&amp;rsquo;affichage des images dans le contenu markdown et garantissent que les articles s&amp;rsquo;ouvrent en haut plutôt qu&amp;rsquo;à mi-chemin.&lt;/p>
&lt;h3 id="zapstream-streaming-en-direct">Zap.stream (Streaming en direct)&lt;/h3>
&lt;p>L&amp;rsquo;intégration du chat YouTube et Kick relie les messages des plateformes de streaming externes à Nostr. Les streamers qui diffusent sur YouTube, Kick et Zap.stream peuvent maintenant voir tous les messages de chat dans une vue unifiée, avec les messages de chaque plateforme apparaissant aux côtés des commentaires Nostr natifs. Cela supprime un point de friction majeur pour les créateurs qui veulent utiliser Nostr pour le streaming mais ne peuvent pas abandonner leurs audiences sur les plateformes établies. L&amp;rsquo;intégration affiche de quelle plateforme chaque message provient et gère le flux d&amp;rsquo;authentification pour connecter les comptes externes.&lt;/p>
&lt;h3 id="chachi-groupes-nip-29">Chachi (Groupes NIP-29)&lt;/h3>
&lt;p>Le client de chat de groupe &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> a publié six PR fusionnées cette semaine. Une mise à jour de sécurité traite &lt;a href="https://github.com/purrgrammer/chachi/pull/89">CVE-2026-22029&lt;/a>, une vulnérabilité XSS dans react-router qui pourrait permettre des attaques de redirection ouverte ; la correction met à jour vers react-router-dom 6.30.0. &lt;a href="https://github.com/purrgrammer/chachi/pull/92">PR #92&lt;/a> ajoute le chargement paginé des messages pour les chats de groupe, de sorte que les longues conversations se chargent de manière incrémentielle plutôt que tout d&amp;rsquo;un coup. &lt;a href="https://github.com/purrgrammer/chachi/pull/91">PR #91&lt;/a> corrige plusieurs bugs NIP-29 incluant une condition de concurrence qui causait des noms de groupe vides au chargement initial et des listes de participants indéfinies qui plantaient les vues de membres. La couverture de traduction s&amp;rsquo;étend maintenant aux 31 langues supportées avec 1060 clés chacune.&lt;/p>
&lt;h3 id="0xchat-messagerie">0xchat (Messagerie)&lt;/h3>
&lt;p>Le client de messagerie style Telegram a amélioré la conformité &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> en sauvegardant correctement les noms de paquets des signataires lors de l&amp;rsquo;utilisation d&amp;rsquo;applications de signature externes, corrigeant les problèmes où l&amp;rsquo;application perdait la trace du signataire à utiliser après les redémarrages. La gestion des réponses NIP-17 inclut maintenant correctement le tag &lt;code>e&lt;/code> pour le threading, garantissant que les réponses apparaissent dans le bon contexte de conversation entre les clients. Des optimisations de performance traitent le lag de défilement dans les listes de messages, un point de douleur courant lors du chargement de longs historiques de chat. La sauvegarde automatique des brouillons empêche la perte de messages si vous naviguez ailleurs en cours de composition, et les options de stockage de fichiers incluent maintenant les endpoints FileDropServer et BlossomServer par défaut.&lt;/p>
&lt;h3 id="primal-ios">Primal (iOS)&lt;/h3>
&lt;p>Le support du signataire distant &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> arrive sur iOS via &lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/184">PR #184&lt;/a>, complétant le déploiement multiplateforme commencé avec Android il y a plusieurs semaines. Les utilisateurs peuvent maintenant garder leurs clés privées dans des services bunker dédiés comme nsec.app ou des instances nsecBunker auto-hébergées, se connectant via les relays Nostr pour signer les événements sans exposer les clés à l&amp;rsquo;application cliente. Cette séparation améliore la posture de sécurité pour les utilisateurs qui veulent utiliser les fonctionnalités de Primal tout en maintenant des pratiques de gestion de clés plus strictes. L&amp;rsquo;implémentation inclut le scan de code QR pour les URI de connexion bunker et gère le flux requête/réponse NIP-46 via des messages relay chiffrés.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ? Vous avez des nouvelles à partager ? Vous voulez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via DM NIP-17&lt;/a> ou trouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #4</title><link>https://nostrcompass.org/fr/newsletters/2026-01-07-newsletter/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2026-01-07-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire de l&amp;rsquo;écosystème du protocole Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Primal Android intègre la signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> et le support du signataire local &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>, en faisant un hub de signature complet pour les autres applications Android. L&amp;rsquo;équipe du &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Protocole Marmot&lt;/a> a répondu aux conclusions d&amp;rsquo;un audit de sécurité avec 18 PR fusionnées renforçant la messagerie chiffrée basée sur &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a>. Citrine atteint la v1.0 et Applesauce livre la v5.0 sur l&amp;rsquo;ensemble de sa suite de bibliothèques. TENEX développe la supervision des agents IA sur Nostr, et Jumble ajoute un pooling intelligent des relais. Une correction de la spec NIP-55 clarifie les champs de retour de &lt;code>nip44_encrypt&lt;/code>, et une PR &lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a> propose des extensions d&amp;rsquo;expressions de requête pour la recherche avancée. Dans notre analyse approfondie, nous expliquons &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> : pourquoi le chiffrement historique présente des failles de sécurité et comment le remplacement moderne les corrige.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire de l&amp;rsquo;écosystème du protocole Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Primal Android intègre la signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> et le support du signataire local &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>, en faisant un hub de signature complet pour les autres applications Android. L&amp;rsquo;équipe du &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Protocole Marmot&lt;/a> a répondu aux conclusions d&amp;rsquo;un audit de sécurité avec 18 PR fusionnées renforçant la messagerie chiffrée basée sur &lt;a href="https://nostrcompass.org/fr/topics/mls/">MLS&lt;/a>. Citrine atteint la v1.0 et Applesauce livre la v5.0 sur l&amp;rsquo;ensemble de sa suite de bibliothèques. TENEX développe la supervision des agents IA sur Nostr, et Jumble ajoute un pooling intelligent des relais. Une correction de la spec NIP-55 clarifie les champs de retour de &lt;code>nip44_encrypt&lt;/code>, et une PR &lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a> propose des extensions d&amp;rsquo;expressions de requête pour la recherche avancée. Dans notre analyse approfondie, nous expliquons &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> : pourquoi le chiffrement historique présente des failles de sécurité et comment le remplacement moderne les corrige.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;p>&lt;strong>Primal Android devient un hub de signature complet&lt;/strong> - La &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">version 2.6.18&lt;/a> ajoute à la fois la signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> et la signature locale &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>, transformant Primal en un signataire complet pour les autres applications Nostr. La signature à distance via NIP-46 permet aux utilisateurs de se connecter aux services bunker via les relais Nostr, gardant les clés entièrement hors de leur appareil. La signature locale via NIP-55 expose Primal comme un fournisseur de contenu Android, permettant aux applications comme Amethyst ou Citrine de demander des signatures sans jamais toucher à la clé privée. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/839">Plusieurs PR de suivi&lt;/a> ont corrigé des problèmes de compatibilité avec l&amp;rsquo;exigence de pubkey hexadécimale de la spec NIP-55, et amélioré l&amp;rsquo;analyse des URI &lt;code>nostrconnect://&lt;/code> malformées. La version inclut également la pré-mise en cache des médias pour un défilement plus fluide, des temps de chargement des fils améliorés et la pré-mise en cache des avatars.&lt;/p>
&lt;p>&lt;strong>Le Protocole Marmot renforce la sécurité après un audit&lt;/strong> - Le &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> (mdk), qui implémente la messagerie chiffrée de bout en bout basée sur MLS &lt;a href="https://nostrcompass.org/fr/topics/nip-104/">NIP-104&lt;/a>, a reçu d&amp;rsquo;importants correctifs de sécurité cette semaine. Dix-huit pull requests fusionnées ont traité les conclusions de l&amp;rsquo;audit, notamment : la &lt;a href="https://github.com/marmot-protocol/mdk/pull/97">vérification de hachage pour les images de groupe chiffrées&lt;/a> pour prévenir les attaques de substitution de blobs au niveau du stockage, la &lt;a href="https://github.com/marmot-protocol/mdk/pull/110">pagination des welcomes en attente&lt;/a> pour prévenir l&amp;rsquo;épuisement de la mémoire, la &lt;a href="https://github.com/marmot-protocol/mdk/pull/112">fuite d&amp;rsquo;ID de groupe MLS dans les messages d&amp;rsquo;erreur&lt;/a>, et l&amp;rsquo;&lt;a href="https://github.com/marmot-protocol/mdk/pull/98">application de l&amp;rsquo;encodage base64&lt;/a> pour les packages de clés. La &lt;a href="https://github.com/marmot-protocol/marmot/pull/20">spec Marmot elle-même a été mise à jour&lt;/a> avec le versionnement MIP-04 v2 et des améliorations de sécurité. Des PR actives continuent de traiter la réutilisation de nonce, la mise à zéro des secrets et les vecteurs de pollution du cache.&lt;/p>
&lt;p>&lt;strong>Nostrability suit le support des indications de relais&lt;/strong> - Un nouveau &lt;a href="https://github.com/nostrability/nostrability/issues/270">tracker de compatibilité des indications de relais&lt;/a> documente comment les clients construisent et consomment les indications de relais à travers l&amp;rsquo;écosystème. Le tracker révèle que bien que la plupart des clients construisent maintenant des indications selon &lt;a href="https://nostrcompass.org/fr/topics/nip-10/">NIP-10&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a>, la consommation varie largement : certains clients incluent des indications dans les événements sortants mais n&amp;rsquo;utilisent pas les indications entrantes pour la récupération. Six clients ont obtenu le statut &amp;ldquo;Full&amp;rdquo; pour une implémentation complète. Le tracker est utile pour les développeurs vérifiant l&amp;rsquo;interopérabilité et pour les utilisateurs se demandant pourquoi certains clients trouvent du contenu que d&amp;rsquo;autres ne peuvent pas trouver.&lt;/p>
&lt;p>&lt;strong>Nostria 2.0 livre une refonte des fonctionnalités multi-plateformes&lt;/strong> - Le client &lt;a href="https://nostria.app">Nostria&lt;/a> &lt;a href="#ZgotmplZ">a publié la version 2.0&lt;/a> le 30 décembre avec des ajouts significatifs sur iOS (TestFlight), Android (Play Store), Web et Windows. La version ajoute le support natif de la musique avec création de playlists, téléchargement de pistes, paiements aux artistes via zaps et un lecteur style WinAmp avec égaliseur fonctionnel. Le streaming en direct bénéficie de l&amp;rsquo;intégration de l&amp;rsquo;API de jeu montrant des métadonnées enrichies pendant les streams de gameplay. Une nouvelle fonctionnalité Résumé génère des digests d&amp;rsquo;activité horaires, quotidiens ou hebdomadaires sous forme de vues de timeline compressées. La section Découvrir offre des listes curatées pour trouver du contenu et des profils. La publication de médias est simplifiée avec la génération automatique de publications courtes pour la découvrabilité inter-clients. Les connexions aux signataires distants fonctionnent maintenant via scan de code QR sans configuration manuelle. La découverte de profils répond à un point douloureux courant de Nostr : lorsque les utilisateurs changent de relais sans emporter leurs métadonnées, Nostria localise leur profil et le republie sur leurs relais actuels. Les abonnés Premium bénéficient de l&amp;rsquo;intégration de chaînes YouTube, de Memos privés, de tableaux de bord analytiques et de sauvegardes automatiques de la liste de suivi avec options de fusion/restauration.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Fusionné :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Correction du champ de retour pour la méthode &lt;code>nip44_encrypt&lt;/code> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2184">#2184&lt;/a>). Les signataires Android doivent maintenant retourner le payload chiffré dans le champ &lt;code>signature&lt;/code> (comme &lt;code>nip44_decrypt&lt;/code>) plutôt que dans un champ séparé. Cela aligne la spec avec les implémentations existantes dans Amber et Primal.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>PR ouvertes :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-50/">NIP-50&lt;/a>&lt;/strong> - Extensions d&amp;rsquo;expressions de requête (&lt;a href="https://github.com/nostr-protocol/nips/pull/2182">#2182&lt;/a>) propose d&amp;rsquo;étendre la recherche NIP-50 avec des expressions de requête structurées. La PR ajoute des opérateurs comme &lt;code>kind:1&lt;/code>, &lt;code>author:npub1...&lt;/code>, et des combinaisons booléennes (&lt;code>AND&lt;/code>, &lt;code>OR&lt;/code>, &lt;code>NOT&lt;/code>), permettant des requêtes de recherche plus précises au-delà de la simple correspondance de texte. Cela permettrait aux clients de construire des interfaces de recherche avancées tout en maintenant la compatibilité ascendante avec les chaînes de recherche basiques.&lt;/li>
&lt;/ul>
&lt;h2 id="analyse-approfondie-des-nip--nip-04-et-nip-44">Analyse approfondie des NIP : NIP-04 et NIP-44&lt;/h2>
&lt;p>Cette semaine, nous couvrons les standards de chiffrement de Nostr : le NIP-04 historique que vous rencontrerez encore, et son remplacement moderne NIP-44 qui corrige des failles de sécurité critiques.&lt;/p>
&lt;h3 id="nip-04frtopicsnip-04--messages-directs-chiffrés-historique">&lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> : Messages directs chiffrés (historique)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/04.md">NIP-04&lt;/a> était la première tentative de Nostr pour la messagerie chiffrée, utilisant des événements kind 4. Bien que simple à implémenter, il présente des faiblesses de sécurité connues et est déprécié en faveur de NIP-44.&lt;/p>
&lt;p>&lt;strong>Comment ça fonctionne :&lt;/strong> NIP-04 utilise ECDH (Elliptic Curve Diffie-Hellman) pour dériver un secret partagé entre l&amp;rsquo;expéditeur et le destinataire, puis chiffre avec 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>Le flux de chiffrement :&lt;/p>
&lt;ol>
&lt;li>Calculer le point partagé : &lt;code>shared = ECDH(sender_privkey, recipient_pubkey)&lt;/code>&lt;/li>
&lt;li>Dériver la clé : &lt;code>key = SHA256(shared_x_coordinate)&lt;/code>&lt;/li>
&lt;li>Générer un IV aléatoire de 16 octets&lt;/li>
&lt;li>Chiffrer : &lt;code>ciphertext = AES-256-CBC(key, iv, plaintext)&lt;/code>&lt;/li>
&lt;li>Formater le contenu : &lt;code>base64(ciphertext)?iv=base64(iv)&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Problèmes de sécurité :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pas d&amp;rsquo;authentification :&lt;/strong> AES-CBC fournit la confidentialité mais pas l&amp;rsquo;intégrité. Un attaquant qui contrôle un relais pourrait modifier les bits du texte chiffré, causant des changements prévisibles au texte clair (attaques par inversion de bits).&lt;/li>
&lt;li>&lt;strong>IV en clair :&lt;/strong> Le vecteur d&amp;rsquo;initialisation est transmis avec le texte chiffré, et le mode CBC avec des IV prévisibles permet des attaques à texte clair choisi.&lt;/li>
&lt;li>&lt;strong>Pas de validation du padding :&lt;/strong> Les implémentations varient dans leur gestion du padding PKCS#7, permettant potentiellement des attaques par oracle de padding.&lt;/li>
&lt;li>&lt;strong>Exposition des métadonnées :&lt;/strong> La pubkey de l&amp;rsquo;expéditeur, la pubkey du destinataire et l&amp;rsquo;horodatage sont tous visibles par les relais.&lt;/li>
&lt;li>&lt;strong>Réutilisation de clé :&lt;/strong> Le même secret partagé est utilisé pour tous les messages entre deux parties, indéfiniment.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Pourquoi il existe encore :&lt;/strong> De nombreux anciens clients et relais ne supportent que NIP-04. Vous le rencontrerez lors d&amp;rsquo;interactions avec des systèmes héritage. Les signataires comme Amber et les applications comme Primal implémentent encore &lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code> pour la compatibilité ascendante.&lt;/p>
&lt;h3 id="nip-44frtopicsnip-44--chiffrement-versionné">&lt;a href="https://nostrcompass.org/fr/topics/nip-44/">NIP-44&lt;/a> : Chiffrement versionné&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/44.md">NIP-44&lt;/a> est le standard de chiffrement moderne, conçu pour corriger les failles bien connues de NIP-04. Un audit de sécurité Cure53 des implémentations NIP-44 a identifié 10 problèmes (incluant des attaques temporelles et des préoccupations de confidentialité persistante) qui ont été traités avant la finalisation de la spec. Il utilise ChaCha20-Poly1305 avec une dérivation de clé appropriée et un chiffrement authentifié.&lt;/p>
&lt;p>&lt;strong>Améliorations clés par rapport à NIP-04 :&lt;/strong>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Aspect&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">Chiffrement&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">Authentification&lt;/td>
 &lt;td style="text-align: left">Aucune&lt;/td>
 &lt;td style="text-align: left">MAC Poly1305&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Dérivation de clé&lt;/td>
 &lt;td style="text-align: left">SHA256(shared_x)&lt;/td>
 &lt;td style="text-align: left">HKDF avec sel&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Nonce&lt;/td>
 &lt;td style="text-align: left">IV 16 octets, patron réutilisé&lt;/td>
 &lt;td style="text-align: left">Nonce aléatoire 24 octets&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Padding&lt;/td>
 &lt;td style="text-align: left">PKCS#7 (fuite de longueur)&lt;/td>
 &lt;td style="text-align: left">Padding puissance de 2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Versionnement&lt;/td>
 &lt;td style="text-align: left">Aucun&lt;/td>
 &lt;td style="text-align: left">Octet de version préfixé&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Flux de chiffrement :&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Clé de conversation :&lt;/strong> Dériver une clé stable pour chaque paire expéditeur-destinataire :&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>Clés de message :&lt;/strong> Pour chaque message, générer un nonce aléatoire de 32 octets et dériver les clés de chiffrement/authentification :&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 du texte clair :&lt;/strong> Padding à la puissance de 2 suivante (minimum 32 octets) pour masquer la longueur du message :&lt;/p>
&lt;pre tabindex="0">&lt;code>padded = [length_u16_be] + [plaintext] + [zeros to next power of 2]
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Chiffrer et authentifier :&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>Formater le 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>Octet de version :&lt;/strong> Le premier octet (&lt;code>0x02&lt;/code>) indique la version de chiffrement. Cela permet des mises à niveau futures sans casser les messages existants. La version &lt;code>0x01&lt;/code> était un brouillon antérieur qui n&amp;rsquo;a jamais été largement déployé.&lt;/p>
&lt;p>&lt;strong>Déchiffrement :&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Décoder le base64, vérifier que l&amp;rsquo;octet de version est &lt;code>0x02&lt;/code>&lt;/li>
&lt;li>Extraire le nonce (octets 1-32), le texte chiffré et le MAC (derniers 32 octets)&lt;/li>
&lt;li>Dériver la clé de conversation en utilisant la clé privée du destinataire et la clé publique de l&amp;rsquo;expéditeur&lt;/li>
&lt;li>Dériver les clés de message à partir de la clé de conversation et du nonce&lt;/li>
&lt;li>Vérifier le MAC avant de déchiffrer (rejeter si invalide)&lt;/li>
&lt;li>Déchiffrer le texte chiffré, extraire le préfixe de longueur, retourner le texte clair sans padding&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Propriétés de sécurité :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Chiffrement authentifié :&lt;/strong> Le MAC Poly1305 garantit que toute altération est détectée avant le déchiffrement&lt;/li>
&lt;li>&lt;strong>Confidentialité persistante (partielle) :&lt;/strong> Chaque message utilise un nonce unique, donc compromettre un message ne révèle pas les autres. Cependant, compromettre une clé privée révèle toujours tous les messages passés (pas de ratcheting).&lt;/li>
&lt;li>&lt;strong>Masquage de longueur :&lt;/strong> Le padding en puissance de 2 obscurcit la longueur exacte du message&lt;/li>
&lt;li>&lt;strong>Résistance aux attaques temporelles :&lt;/strong> Comparaison à temps constant pour la vérification du MAC&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Utilisation en pratique :&lt;/strong> NIP-44 est la couche de chiffrement pour :&lt;/p>
&lt;ul>
&lt;li>Les messages directs privés &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> (à l&amp;rsquo;intérieur du gift wrap)&lt;/li>
&lt;li>La communication avec les signataires distants &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a>&lt;/li>
&lt;li>Le chiffrement seal &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a>&lt;/li>
&lt;li>Les messages de groupe &lt;a href="https://nostrcompass.org/fr/topics/nip-104/">Protocole Marmot&lt;/a>, où NIP-44 enveloppe le contenu chiffré MLS en utilisant une clé dérivée du secret exportateur MLS&lt;/li>
&lt;li>Toute application nécessitant un chiffrement sécurisé point-à-point&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Guide de migration :&lt;/strong> Les nouvelles applications devraient utiliser exclusivement NIP-44. Pour la compatibilité ascendante, vérifiez si le client d&amp;rsquo;un contact supporte NIP-44 (via les métadonnées d&amp;rsquo;application &lt;a href="https://nostrcompass.org/fr/topics/nip-89/">NIP-89&lt;/a> ou le support du relais) avant de revenir à NIP-04. Lors de la réception de messages, tentez d&amp;rsquo;abord le déchiffrement NIP-44, puis revenez à NIP-04 pour le contenu héritage.&lt;/p>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;p>&lt;strong>Primal Android v2.6.18&lt;/strong> - La &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">version complète&lt;/a> ajoute la signature à distance &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> et la signature locale &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>, transformant Primal en hub de signature pour les autres applications Android. Les améliorations de performance incluent la pré-mise en cache des médias, la pré-mise en cache des avatars et un chargement plus rapide des fils. Les corrections de bugs traitent les auto-mentions dans les bios, les crashs de la galerie média et les replis de titres de stream. Sur iOS, Primal utilise la lecture audio en arrière-plan pour garder l&amp;rsquo;application active pour recevoir les demandes de signature NIP-46 ; les utilisateurs peuvent changer le son ou le couper entièrement dans les paramètres.&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.6&lt;/strong> - La &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.6">dernière version&lt;/a> de la plateforme de trading Bitcoin P2P &lt;a href="https://nostrcompass.org/fr/topics/nip-69/">NIP-69&lt;/a> complète l&amp;rsquo;implémentation du fonds de développement avec les événements d&amp;rsquo;audit Phase 4. Les paiements de frais de développement sont maintenant suivis via des événements Nostr kind 38383 publiés après chaque paiement réussi, permettant la vérification et l&amp;rsquo;analyse par des tiers. Les calculs de montants ont été corrigés pour les messages acheteur/vendeur, et la logique de premium a été alignée avec l&amp;rsquo;implémentation de référence lnp2pbot.&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.5&lt;/strong> - Le signataire multi-plateforme &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.5">ajoute le mode sombre&lt;/a>, un affichage amélioré des icônes d&amp;rsquo;application et des mises en page UI plus propres. Les corrections de bugs traitent les conflits iCloud Private Relay sur iOS et les problèmes d&amp;rsquo;analyse d&amp;rsquo;événements. La version améliore également la façon dont le JSON d&amp;rsquo;événement est passé à la fonction de signature Rust.&lt;/p>
&lt;p>&lt;strong>Citrine v1.0.0&lt;/strong> - L&amp;rsquo;application relais Android &lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v1.0.0">atteint la 1.0&lt;/a>. Citrine vous permet d&amp;rsquo;exécuter un relais Nostr personnel directement sur votre appareil Android, utile pour le cache local, la sauvegarde ou comme compagnon NIP-55. Cette version ajoute un gestionnaire de rapports de crash, améliore l&amp;rsquo;efficacité des requêtes de base de données et met à jour les traductions via Crowdin.&lt;/p>
&lt;p>&lt;strong>Applesauce v5.0.0&lt;/strong> - La suite de bibliothèques TypeScript de hzrd149 &lt;a href="https://github.com/hzrd149/applesauce/releases">livre une version majeure&lt;/a> avec des changements cassants axés sur la correction et la simplicité. Le package core &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.0.0">vérifie maintenant les signatures d&amp;rsquo;événements par défaut&lt;/a> et renomme les méthodes de coordonnées pour utiliser une terminologie &amp;ldquo;address&amp;rdquo; plus claire (&lt;code>parseCoordinate&lt;/code> -&amp;gt; &lt;code>parseReplaceableAddress&lt;/code>). Le package relay &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-relay%405.0.0">réduit les tentatives par défaut de 10 à 3&lt;/a> et ignore les relais inaccessibles par défaut, plus ajoute &lt;code>createUnifiedEventLoader&lt;/code> pour une récupération d&amp;rsquo;événements plus simple. Le package wallet gagne la &lt;a href="https://nostrcompass.org/fr/topics/nip-87/">découverte de mint Cashu NIP-87&lt;/a>. Les dépendances directes à &lt;code>nostr-tools&lt;/code> ont été supprimées dans tous les packages, réduisant la taille du bundle et les conflits de versions.&lt;/p>
&lt;h2 id="changements-notables-de-code-et-de-documentation">Changements notables de code et de documentation&lt;/h2>
&lt;p>&lt;em>Ce sont des pull requests ouvertes et des travaux en phase initiale, parfaits pour obtenir des retours avant fusion. Si quelque chose attire votre attention, envisagez de réviser ou commenter !&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>Une série de PR améliore l&amp;rsquo;expérience des articles longs. Les &lt;a href="https://github.com/damus-io/damus/pull/3496">améliorations UX de lecture&lt;/a> ajoutent une barre de progression, un temps de lecture estimé, un mode sépia, une hauteur de ligne ajustable et un mode focus qui masque la navigation pendant le défilement. Les &lt;a href="https://github.com/damus-io/damus/pull/3489">corrections d&amp;rsquo;images&lt;/a> garantissent que les images dans le contenu markdown s&amp;rsquo;affichent avec les bons ratios d&amp;rsquo;aspect en pré-traitant les images autonomes comme éléments de niveau bloc. Les &lt;a href="https://github.com/damus-io/damus/pull/3497">cartes d&amp;rsquo;aperçu d&amp;rsquo;articles longs&lt;/a> remplacent le texte inline &lt;code>@naddr1...&lt;/code> par des cartes d&amp;rsquo;aperçu riches montrant le titre et les métadonnées de l&amp;rsquo;article. Une nouvelle &lt;a href="https://github.com/damus-io/damus/pull/3508">suite de tests d&amp;rsquo;intégration relais&lt;/a> ajoute 137 tests liés au réseau incluant la vérification du protocole &lt;a href="https://nostrcompass.org/fr/topics/nip-01/">NIP-01&lt;/a> et le comportement sous conditions réseau dégradées (simulation 3G).&lt;/p>
&lt;h3 id="bitchat-messagerie-chiffrée">Bitchat (Messagerie chiffrée)&lt;/h3>
&lt;p>Renforcement de la sécurité dans le messager Nostr+Cashu iOS. L&amp;rsquo;&lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">effacement des secrets DH du protocole Noise&lt;/a> corrige six emplacements où les secrets partagés n&amp;rsquo;étaient pas mis à zéro après l&amp;rsquo;accord de clé Diffie-Hellman, restaurant les garanties de confidentialité persistante. La &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">sécurité des threads pour les files d&amp;rsquo;accusés de réception&lt;/a> ajoute la synchronisation par barrière pour prévenir les conditions de course dans NostrTransport. L&amp;rsquo;&lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">optimisation du déduplicateur de messages&lt;/a> améliore les performances avec des volumes de messages élevés, et le &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">renforcement de l&amp;rsquo;analyse des chaînes hexadécimales&lt;/a> prévient les crashs dus à des entrées malformées.&lt;/p>
&lt;h3 id="frostr-signature-à-seuil">Frostr (Signature à seuil)&lt;/h3>
&lt;p>Le protocole de signature à seuil basé sur &lt;a href="https://nostrcompass.org/fr/topics/frost/">FROST&lt;/a> &lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/pull/62">a ajouté l&amp;rsquo;affichage de codes QR&lt;/a> pour les identifiants de groupe et les identifiants de partage pendant l&amp;rsquo;onboarding et dans l&amp;rsquo;interface du signataire. Cela facilite la configuration lors de la distribution des parts de clé sur plusieurs appareils, permettant aux utilisateurs de scanner les identifiants au lieu de copier manuellement de longues chaînes.&lt;/p>
&lt;h3 id="marmot-mdk-bibliothèque">Marmot mdk (Bibliothèque)&lt;/h3>
&lt;p>Au-delà des correctifs de sécurité mentionnés ci-dessus, des PR actives traitent les conclusions d&amp;rsquo;audit restantes : le &lt;a href="https://github.com/marmot-protocol/mdk/pull/109">type Secret&lt;T> pour la mise à zéro&lt;/a> introduit un type wrapper qui met automatiquement à zéro les données sensibles à la destruction, la &lt;a href="https://github.com/marmot-protocol/mdk/pull/111">pagination des requêtes de messages&lt;/a> prévient l&amp;rsquo;épuisement de la mémoire lors du chargement de l&amp;rsquo;historique de chat, et le &lt;a href="https://github.com/marmot-protocol/mdk/pull/102">stockage chiffré&lt;/a> ajoute le chiffrement au repos pour la base de données SQLite stockant l&amp;rsquo;état du groupe et les messages.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>Une semaine chargée de corrections de stabilité dans le client Android. L&amp;rsquo;&lt;a href="https://github.com/vitorpamplona/amethyst/commit/2c42796">analyse JSON tolérante&lt;/a> prévient les crashs dus aux événements malformés en rendant la sérialisation Kotlin plus indulgente. La validation des événements &lt;a href="https://github.com/vitorpamplona/amethyst/commit/40f9622">vérifie maintenant la taille du champ kind&lt;/a> avant traitement pour éviter les exceptions dues à des valeurs surdimensionnées. L&amp;rsquo;UI du score de confiance a reçu une icône plus petite pour réduire l&amp;rsquo;interférence visuelle, et la &lt;a href="https://github.com/vitorpamplona/amethyst/commit/69c53ac">journalisation des erreurs améliorée&lt;/a> aide à diagnostiquer les problèmes de connexion aux relais. Les mises à jour de traduction sont arrivées via Crowdin, et plusieurs avertissements SonarQube ont été traités.&lt;/p>
&lt;h3 id="tenex-agents-ia">TENEX (Agents IA)&lt;/h3>
&lt;p>Le framework d&amp;rsquo;agents IA natif Nostr a vu 81 commits cette semaine développant des capacités autonomes. Le nouveau &lt;a href="https://github.com/tenex-chat/tenex/pull/48">système de supervision des agents&lt;/a> implémente des heuristiques comportementales pour surveiller les actions des agents et intervenir si nécessaire. La &lt;a href="https://github.com/tenex-chat/tenex/commit/b244c10">transparence de délégation&lt;/a> ajoute la journalisation des interventions utilisateur aux transcriptions de délégation, permettant aux utilisateurs d&amp;rsquo;auditer ce que les agents ont fait en leur nom. Le &lt;a href="https://github.com/tenex-chat/tenex/pull/47">registre de fournisseurs LLM&lt;/a> a été modularisé pour une intégration plus facile de différents backends IA. Le support de conversation inter-projets permet aux agents de maintenir le contexte à travers plusieurs projets basés sur Nostr.&lt;/p>
&lt;h3 id="jumble-client-web">Jumble (Client Web)&lt;/h3>
&lt;p>Le client web axé sur les relais a ajouté plusieurs améliorations de l&amp;rsquo;expérience utilisateur. Le &lt;a href="https://github.com/CodyTseng/jumble/commit/695f2fe">pool de relais intelligent&lt;/a> gère intelligemment les connexions selon les patterns d&amp;rsquo;utilisation. Le &lt;a href="https://github.com/CodyTseng/jumble/commit/917fcd9">toggle de flux en direct&lt;/a> permet aux utilisateurs de basculer entre le streaming en temps réel et le rafraîchissement manuel. L&amp;rsquo;&lt;a href="https://github.com/CodyTseng/jumble/commit/d1b3a8c">affichage automatique des nouvelles notes&lt;/a> en haut fait remonter le contenu frais sans nécessiter de rechargement de page. Le &lt;a href="https://github.com/CodyTseng/jumble/commit/fd9f41c">cache persistant&lt;/a> pour le flux de suivi et les notifications améliore les temps de chargement lors des visites de retour. Les utilisateurs peuvent maintenant &lt;a href="https://github.com/CodyTseng/jumble/commit/53a67d8">changer les relais par défaut&lt;/a> via les paramètres.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ? Vous avez des nouvelles à partager ? Vous voulez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via DM NIP-17&lt;/a> ou trouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #3</title><link>https://nostrcompass.org/fr/newsletters/2025-12-31-newsletter/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2025-12-31-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur l&amp;rsquo;écosystème du protocole Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Alors que 2025 s&amp;rsquo;achève, nous revenons sur cinq années de jalons de décembre dans l&amp;rsquo;évolution de Nostr. De la première version client de fiatjaf en décembre 2020, au don décisif de 14 BTC de Jack Dorsey en décembre 2022, jusqu&amp;rsquo;à la prolifération des signers &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> et à l&amp;rsquo;accélération de cache 162x de NDK ce mois-ci, décembre a marqué de façon répétée des tournants pour le protocole. Ce numéro spécial retrace l&amp;rsquo;histoire technique de chaque mois de décembre, documentant la croissance du protocole, de deux relays expérimentaux à plus de 2 500 nœuds dans 50 pays. En plus : le module desktop d&amp;rsquo;Amethyst prend forme via Quartz, Notedeck gagne une messagerie, Citrine héberge des applications web et &lt;a href="https://nostrcompass.org/fr/topics/nip-54/">NIP-54&lt;/a> corrige l&amp;rsquo;internationalisation pour les écritures non latines.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, votre guide hebdomadaire sur l&amp;rsquo;écosystème du protocole Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Alors que 2025 s&amp;rsquo;achève, nous revenons sur cinq années de jalons de décembre dans l&amp;rsquo;évolution de Nostr. De la première version client de fiatjaf en décembre 2020, au don décisif de 14 BTC de Jack Dorsey en décembre 2022, jusqu&amp;rsquo;à la prolifération des signers &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> et à l&amp;rsquo;accélération de cache 162x de NDK ce mois-ci, décembre a marqué de façon répétée des tournants pour le protocole. Ce numéro spécial retrace l&amp;rsquo;histoire technique de chaque mois de décembre, documentant la croissance du protocole, de deux relays expérimentaux à plus de 2 500 nœuds dans 50 pays. En plus : le module desktop d&amp;rsquo;Amethyst prend forme via Quartz, Notedeck gagne une messagerie, Citrine héberge des applications web et &lt;a href="https://nostrcompass.org/fr/topics/nip-54/">NIP-54&lt;/a> corrige l&amp;rsquo;internationalisation pour les écritures non latines.&lt;/p>
&lt;h2 id="récapitulatif-de-décembre--cinq-années-de-décembres-nostr">Récapitulatif de décembre : cinq années de décembres Nostr&lt;/h2>
&lt;p>Nostr fête ses cinq ans cette année. fiatjaf a lancé le protocole le 7 novembre 2020, et chaque mois de décembre depuis a marqué une phase distincte de son évolution : de la preuve de concept au mouvement mondial, puis à l&amp;rsquo;écosystème de production. Il s&amp;rsquo;agit d&amp;rsquo;une rétrospective technique de décembre 2020 à décembre 2025, les années formatrices qui ont posé les fondations de Nostr et catalysé son moment de bascule.&lt;/p>
&lt;h3 id="décembre-2020--genèse">Décembre 2020 : genèse&lt;/h3>
&lt;p>Le premier mois complet d&amp;rsquo;existence de Nostr a vu fiatjaf publier &lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>, le premier client du protocole, construit avec Quasar (Vue.js) et absurd-sql pour le stockage local. fiatjaf avait déjà posé l&amp;rsquo;architecture de base : des utilisateurs identifiés par des clés publiques secp256k1, des messages tous signés cryptographiquement, et des relays servant de stockage passif sans communiquer entre eux. Un ou deux relays expérimentaux servaient une poignée d&amp;rsquo;adoptants précoces qui se coordonnaient dans le groupe Telegram &lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a>, lancé le 16 novembre. La &lt;a href="https://fiatjaf.com/nostr.html">documentation d&amp;rsquo;origine&lt;/a> décrivait « the simplest open protocol that is able to create a censorship-resistant global social network », une promesse qui demanderait encore deux années avant d&amp;rsquo;être prouvée.&lt;/p>
&lt;h3 id="décembre-2021--premiers-développements">Décembre 2021 : premiers développements&lt;/h3>
&lt;p>Le 31 décembre 2021, Nostr a atteint la &lt;a href="https://news.ycombinator.com/item?id=29749061">page d&amp;rsquo;accueil de Hacker News&lt;/a> avec 110 points et 138 commentaires, via une soumission de Cameri. Cela a marqué la première exposition significative du protocole auprès de la communauté de développeurs au sens large. Le réseau fonctionnait sur environ sept relays avec moins de 1 000 utilisateurs. Branle a reçu des mises à jour, dont l&amp;rsquo;import de clé privée le 31 décembre et le support multi-relays. Un client en ligne de commande, noscl, permettait une interaction via terminal. Les spécifications du protocole vivaient encore dans la documentation de fiatjaf, puisque le dépôt formel des &lt;a href="https://github.com/nostr-protocol/nips">NIPs&lt;/a> ne serait créé qu&amp;rsquo;en mai 2022. Le protocole était, selon les mots de fiatjaf, « a work in progress ».&lt;/p>
&lt;h3 id="décembre-2022--le-point-de-bascule">Décembre 2022 : le point de bascule&lt;/h3>
&lt;p>Décembre 2022 a transformé Nostr, d&amp;rsquo;expérience confidentielle en mouvement plus large. Le catalyseur est arrivé le 15 décembre, quand Jack Dorsey a donné &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> (environ 245 000 à 250 000 dollars) à fiatjaf après avoir découvert le protocole et déclaré qu&amp;rsquo;il représentait « 100 percent what we wanted from Bluesky, but it wasn&amp;rsquo;t developed from a company ». Le 16 décembre, fiatjaf a annoncé qu&amp;rsquo;il partageait les fonds avec le développeur de Damus William Casarin (jb55), et Dorsey a vérifié son compte Nostr (npub : &lt;code>npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m&lt;/code>). Ce financement a légitimé le projet du jour au lendemain.&lt;/p>
&lt;p>La même semaine, le chaos sur Twitter a accéléré l&amp;rsquo;adoption. Les 14 et 15 décembre ont vu la suspension de journalistes en vue du New York Times, de CNN et du Washington Post. Le 18 décembre, Twitter a &lt;a href="https://techcrunch.com/2022/12/18/twitter-wont-let-you-post-your-facebook-instagram-and-mastodon-handles/">annoncé des interdictions&lt;/a> visant les comptes faisant la promotion de Nostr, Mastodon et d&amp;rsquo;autres plateformes. La politique a été annulée dès le lendemain après un retour de bâton. Cet exode a poussé les utilisateurs à explorer des alternatives.&lt;/p>
&lt;p>Le développement du protocole s&amp;rsquo;est emballé. Le 16 décembre, &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> a été fusionné (&lt;a href="https://github.com/nostr-protocol/nips/pull/57">#57&lt;/a>), introduisant des identifiants encodés en bech32 (&lt;code>npub&lt;/code>, &lt;code>nsec&lt;/code>, &lt;code>note&lt;/code>, &lt;code>nprofile&lt;/code>, &lt;code>nevent&lt;/code>) qui rendaient les clés lisibles par des humains et faciles à distinguer. Le dépôt des NIPs a enregistré plus de 36 commits ce mois-là, y compris des mises à jour pour NIP-40 et NIP-07. Les clients se sont multipliés : Damus a rempli sa bêta TestFlight en quelques heures, Astral a forké Branle pour la création de profils, Snort a lancé un client web « fast, censorship-resistant », et Vitor Pamplona a commencé le développement d&amp;rsquo;Amethyst. Alby v1.22.1 « Kemble&amp;rsquo;s Cascade of Stars » est sorti le 22 décembre avec le support de NIP-19. Au 7 décembre, Nostr comptait environ 800 utilisateurs avec un profil. Quand Damus est arrivé sur l&amp;rsquo;App Store le 31 janvier 2023, les vannes se sont ouvertes, poussant la croissance à plus de 315 000 utilisateurs en juin 2023.&lt;/p>
&lt;h3 id="décembre-2023--maturation-de-lécosystème">Décembre 2023 : maturation de l&amp;rsquo;écosystème&lt;/h3>
&lt;p>Décembre 2023 a marqué un point d&amp;rsquo;inflexion critique pour la sécurité du protocole Nostr. Le 20 décembre, la &lt;a href="https://github.com/nostr-protocol/nips/pull/746">révision 3 de NIP-44 a été fusionnée&lt;/a> après un audit de sécurité indépendant de Cure53 (NOS-01) qui avait identifié 10 problèmes dans les implémentations TypeScript, Go et Rust, dont des attaques temporelles et des inquiétudes autour de la forward secrecy. La spécification mise à jour a remplacé le chiffrement défaillant de &lt;a href="https://nostrcompass.org/fr/topics/nip-04/">NIP-04&lt;/a> par ChaCha20 et HMAC-SHA256, posant la base cryptographique qui soutient désormais les DMs privés de &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> et le gift wrapping de &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a>. La même semaine, &lt;a href="https://opensats.org/blog/nostr-grants-december-2023">OpenSats a annoncé sa quatrième vague de grants&lt;/a> le 21 décembre, finançant sept projets dont Lume, noStrudel, ZapThreads et un audit indépendant de NIP-44. Cela faisait suite à la &lt;a href="https://opensats.org/blog/nostr-grants-july-2023">première vague de juillet 2023&lt;/a>, qui avait financé Damus, Coracle, Iris et d&amp;rsquo;autres, portant l&amp;rsquo;allocation totale du Nostr Fund à environ 3,4 millions de dollars sur 39 grants.&lt;/p>
&lt;p>Le mois a aussi mis en lumière les tensions de soutenabilité dans l&amp;rsquo;écosystème. Le 28 décembre, William Casarin (jb55) a &lt;a href="https://stacker.news/items/368863">écrit sur Stacker News&lt;/a> que 2024 serait « likely be the last year of Damus », expliquant que « nostr clients don&amp;rsquo;t make money » après que les restrictions d&amp;rsquo;Apple sur les zaps intégrés ont fortement limité le potentiel de revenus. L&amp;rsquo;équipe Damus avait auparavant rejeté un financement VC. Pendant ce temps, &lt;a href="https://github.com/getAlby/nostr-wallet-connect/releases/tag/0.4.1">Nostr Wallet Connect v0.4.1&lt;/a> est sorti le 26 décembre, étendant &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> avec les méthodes &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> et &lt;code>get_info&lt;/code>, posant les bases des intégrations wallet qui deviendraient standard dans les clients.&lt;/p>
&lt;h3 id="décembre-2024--avancée-du-protocole">Décembre 2024 : avancée du protocole&lt;/h3>
&lt;p>Décembre 2024 s&amp;rsquo;est ouvert avec le &lt;a href="https://damus.io/notedeck/">lancement alpha de Notedeck&lt;/a> le 30 novembre, le client desktop Rust de l&amp;rsquo;équipe Damus, avec interface multi-colonnes et support de plusieurs comptes. Construit pour Linux, macOS et Windows, avec Android prévu pour 2025, Notedeck a d&amp;rsquo;abord été livré aux abonnés Damus Purple et représentait une expansion stratégique au-delà d&amp;rsquo;iOS. Deux semaines plus tard, &lt;a href="https://opensats.org/blog/9th-wave-of-nostr-grants">OpenSats a annoncé sa neuvième vague de grants&lt;/a> le 16 décembre, finançant AlgoRelay, le premier relay algorithmique pour les flux personnalisés, Pokey, une application Android avec maillage Bluetooth pour internet restreint, Nostr Safebox (stockage de jetons &lt;a href="https://nostrcompass.org/fr/topics/nip-60/">NIP-60&lt;/a> &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a>) et LumiLumi, un client web léger et accessible, portant l&amp;rsquo;allocation totale du Nostr Fund à environ 9 millions de dollars, soit une hausse de 67 % sur un an.&lt;/p>
&lt;p>Le mois a vu une maturation importante des clients dans tout l&amp;rsquo;écosystème. &lt;a href="https://github.com/mikedilger/gossip/releases/tag/v0.13.0">Gossip 0.13.0&lt;/a> est arrivé le 23 décembre avec le support de File Metadata (&lt;a href="https://nostrcompass.org/fr/topics/nip-92/">NIP-92&lt;/a>/&lt;a href="https://nostrcompass.org/fr/topics/nip-94/">NIP-94&lt;/a>), l&amp;rsquo;intégration Blossom et la recherche de relays &lt;a href="https://nostrcompass.org/fr/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> est sorti le 12 décembre avec un onboarding retravaillé et l&amp;rsquo;intégration de nostr-editor. Le développement du protocole est resté actif avec 30 pull requests soumises entre le 9 et le 22 décembre, dont 10 fusionnées, y compris des réécritures de &lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> pour n&amp;rsquo;utiliser que le chiffrement NIP-44, ainsi que la poursuite des travaux sur &lt;a href="https://nostrcompass.org/fr/topics/nip-104/">NIP-104&lt;/a> pour un chiffrement à double cliquet de niveau Signal. Les statistiques réseau montraient plus de 224 000 événements quotidiens de trusted pubkeys, une multiplication par quatre d&amp;rsquo;une année sur l&amp;rsquo;autre des nouveaux profils avec listes de contacts, et une hausse de 50 % des événements d&amp;rsquo;écriture publique.&lt;/p>
&lt;h3 id="décembre-2025--expansion-de-lécosystème">Décembre 2025 : expansion de l&amp;rsquo;écosystème&lt;/h3>
&lt;p>Décembre 2025 a apporté une maturation continue du protocole et une expansion de l&amp;rsquo;écosystème. Le 21 décembre, &lt;a href="https://opensats.org/blog/fourteenth-wave-of-nostr-grants">OpenSats a annoncé sa quatorzième vague de grants Nostr&lt;/a>, finançant trois projets : YakiHonne, un client multi-plateforme avec portail créateur pour le contenu long format et intégration de paiements &lt;a href="https://nostrcompass.org/fr/topics/cashu/">Cashu&lt;/a> et Nutzaps, Quartz, la bibliothèque Kotlin Multiplatform de Vitor Pamplona qui alimente Amethyst et rendra possible une version iOS, et Nostr Feedz, l&amp;rsquo;intégration bidirectionnelle RSS-vers-Nostr de PlebOne. Des renouvellements de grants ont été attribués à Dart NDK et au nostr-relay de Mattn.&lt;/p>
&lt;p>L&amp;rsquo;évolution du protocole a continué avec &lt;a href="https://nostrcompass.org/fr/topics/nip-be/">NIP-BE&lt;/a>, la messagerie Bluetooth Low Energy, fusionné en novembre (&lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>), ce qui permet la synchronisation hors ligne entre appareils. &lt;a href="https://nostrcompass.org/fr/topics/nip-a4/">NIP-A4&lt;/a>, Public Messages, kind 24, a suivi plus tard dans le mois (&lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>), en définissant des messages destinés à l&amp;rsquo;écran de notification qui utilisent des tags &lt;code>q&lt;/code> pour éviter les complications de threading. &lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a> a reçu une clarification importante (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>), introduisant le tag &lt;code>hidden&lt;/code> pour des groupes réellement privés et intraçables. La spécification &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> a elle aussi été affinée (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>), pour corriger une erreur d&amp;rsquo;implémentation fréquente où des développeurs appelaient &lt;code>get_public_key&lt;/code> depuis des processus en arrière-plan.&lt;/p>
&lt;p>Côté client, &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#news">Primal Android est devenu un signer NIP-55 complet&lt;/a> grâce à huit PRs fusionnées implémentant &lt;code>LocalSignerContentProvider&lt;/code>, rejoignant Amber et Aegis parmi les options de signature Android. La &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#notable-code-and-documentation-changes">bibliothèque NDK a atteint des requêtes de cache 162x plus rapides&lt;/a>, passant d&amp;rsquo;environ 3 690 ms à environ 22 ms, en éliminant les écritures en double et les recherches inutiles dans le 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 a introduit &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/#news">Zapsnags&lt;/a> pour les ventes flash via zaps. White Noise a livré &lt;a href="https://nostrcompass.org/fr/topics/mip-05/">MIP-05&lt;/a>, des notifications push préservant la vie privée. Voir &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-17-newsletter/">Newsletter #1&lt;/a> et &lt;a href="https://nostrcompass.org/en/newsletters/2025-12-24-newsletter/">Newsletter #2&lt;/a> pour la couverture complète.&lt;/p>
&lt;hr>
&lt;p>Il y a cinq ans, fiatjaf publiait Branle pour une poignée d&amp;rsquo;utilisateurs répartis sur deux relays expérimentaux. Aujourd&amp;rsquo;hui, le protocole alimente plus de 140 clients, plus de 2 500 relays dans 50 pays, et un web of trust en croissance reliant des centaines de milliers de paires de clés. Le schéma de grandes sorties en décembre s&amp;rsquo;est poursuivi ce mois-ci avec la messagerie Bluetooth, la multiplication des signers Android et des grants d&amp;rsquo;infrastructure signalant des investissements durables dans les outils cross-platform.&lt;/p>
&lt;h2 id="actualités">Actualités&lt;/h2>
&lt;p>&lt;strong>Amethyst Desktop prend forme&lt;/strong> - Le grant Quartz de la quatorzième vague d&amp;rsquo;OpenSats produit déjà des résultats. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1625">PR #1625&lt;/a> crée un module &lt;code>:desktopApp&lt;/code> complet pour Amethyst en utilisant Compose Multiplatform, avec écrans de connexion et de flux global déjà fonctionnels sur Desktop JVM. L&amp;rsquo;architecture convertit le module &lt;code>:commons&lt;/code> en Kotlin Multiplatform avec une structure propre de source sets (&lt;code>commonMain&lt;/code>, &lt;code>jvmAndroid&lt;/code>, &lt;code>androidMain&lt;/code>, &lt;code>jvmMain&lt;/code>), ce qui permet de partager des composants UI entre Android et desktop tout en laissant les décisions spécifiques à chaque plateforme à leur cible respective. Cela pose les bases de la future version iOS via la même approche Kotlin Multiplatform.&lt;/p>
&lt;p>&lt;strong>Réponses vocales dans Amethyst&lt;/strong> - Cadeau de Noël signé davotoula : &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1622">PR #1622&lt;/a> ajoute des écrans dédiés aux réponses vocales avec visualisation de forme d&amp;rsquo;onde, possibilité de réenregistrer, sélection du serveur média et indicateurs de progression d&amp;rsquo;upload. Les utilisateurs peuvent maintenant répondre en audio aux messages vocaux racine comme aux réponses vocales.&lt;/p>
&lt;p>&lt;strong>Notedeck ajoute la messagerie&lt;/strong> - Notedeck, le client desktop de Damus, a gagné une fonctionnalité de messages dans &lt;a href="https://github.com/damus-io/notedeck/pull/1223">PR #1223&lt;/a>, élargissant son périmètre au-delà de la navigation dans la timeline vers la communication directe.&lt;/p>
&lt;p>&lt;strong>Citrine héberge des applications web&lt;/strong> - Citrine peut maintenant &lt;a href="https://github.com/greenart7c3/Citrine/pull/81">héberger des applications web&lt;/a>, transformant votre téléphone en serveur web Nostr local-first. Une autre &lt;a href="https://github.com/greenart7c3/Citrine/pull/85">PR #85&lt;/a> ajoute la reconnexion automatique et la diffusion d&amp;rsquo;événements quand la connectivité réseau revient, avec une couverture de tests complète à travers les niveaux d&amp;rsquo;API Android.&lt;/p>
&lt;p>&lt;strong>Registre d&amp;rsquo;outils développeur Nostrability&lt;/strong> - Le suivi &lt;a href="https://github.com/nostrability/nostrability/issues/264">Developer Kits &amp;amp; Tooling&lt;/a> maintient un registre sélectionné de SDKs, bibliothèques et outils de développement à travers les langages, dont TypeScript, Rust, Python, Go, Dart et Swift. Si vous débutez dans le développement Nostr, c&amp;rsquo;est un bon point de départ pour trouver la boîte à outils adaptée à votre stack.&lt;/p>
&lt;h2 id="mises-à-jour-des-nip">Mises à jour des NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt des NIPs&lt;/a> :&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-54/">NIP-54&lt;/a>&lt;/strong> - Correctif critique d&amp;rsquo;internationalisation pour la normalisation du d-tag wiki (&lt;a href="https://github.com/nostr-protocol/nips/pull/2177">#2177&lt;/a>). Les règles précédentes convertissaient tous les caractères non ASCII en &lt;code>-&lt;/code>, ce qui cassait la prise en charge du japonais, du chinois, de l&amp;rsquo;arabe, du cyrillique et d&amp;rsquo;autres écritures. La spécification mise à jour préserve les lettres UTF-8, n&amp;rsquo;applique les minuscules qu&amp;rsquo;aux caractères qui disposent d&amp;rsquo;une variante de casse, et inclut des exemples détaillés : &lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code> reste &lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code>, &lt;code>&amp;quot;Москва&amp;quot;&lt;/code> devient &lt;code>&amp;quot;москва&amp;quot;&lt;/code>, et des écritures mixtes comme &lt;code>&amp;quot;日本語 Article&amp;quot;&lt;/code> se normalisent en &lt;code>&amp;quot;日本語-article&amp;quot;&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="versions">Versions&lt;/h2>
&lt;p>&lt;strong>Zapstore 1.0-rc1&lt;/strong> - La boutique d&amp;rsquo;applications permissionless basée sur Nostr livre la &lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.0-rc1">première release candidate&lt;/a> de sa nouvelle architecture, avec rafraîchissement complet de l&amp;rsquo;UI, gestionnaire de paquets réécrit avec une meilleure gestion des erreurs, App Stacks pour la découverte curatée, écrans de profil repensés, vérification des mises à jour en arrière-plan et défilement infini dans les listes de versions.&lt;/p>
&lt;p>&lt;strong>KeyChat v1.38.1&lt;/strong> - L&amp;rsquo;application de messagerie chiffrée fondée sur MLS &lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.38.1%2B6489">ajoute le support UnifiedPush&lt;/a> pour les notifications push sur Android et Linux, ainsi qu&amp;rsquo;une authentification biométrique pour les opérations sensibles. Disponible sur Android, Windows, macOS et Linux.&lt;/p>
&lt;p>&lt;strong>Alby Go v2.0.0&lt;/strong> - Le compagnon mobile du wallet Lightning &lt;a href="https://github.com/getAlby/go/releases/tag/v2.0.0">livre une refonte visuelle&lt;/a> avec nouveau logo, palette de couleurs mise à jour, carnet d&amp;rsquo;adresses repensé et clavier de saisie des montants amélioré. BTC Map est maintenant accessible depuis l&amp;rsquo;écran d&amp;rsquo;accueil, et les descriptions de transactions apparaissent dans les notifications.&lt;/p>
&lt;p>&lt;strong>nak v0.17.4&lt;/strong> - L&amp;rsquo;outil Nostr en ligne de commande de fiatjaf est &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.4">sorti&lt;/a>, après le correctif de la restriction Linux LMDB dans v0.17.3 évoqué la semaine dernière.&lt;/p>
&lt;h2 id="changements-de-code-et-de-documentation-à-surveiller">Changements de code et de documentation à surveiller&lt;/h2>
&lt;p>&lt;em>Pull requests ouvertes et travaux encore précoces qui méritent d&amp;rsquo;être suivis.&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">Indices de relais NIP-19&lt;/a> implémente la consommation d&amp;rsquo;indices de relais pour la récupération d&amp;rsquo;événements. Quand des utilisateurs ouvrent des liens &lt;code>nevent&lt;/code>, &lt;code>nprofile&lt;/code> ou &lt;code>naddr&lt;/code>, Damus extrait désormais les indices de relais depuis les données TLV bech32 et se connecte à des relays éphémères pour récupérer du contenu absent du pool de relays de l&amp;rsquo;utilisateur. L&amp;rsquo;implémentation inclut un nettoyage avec comptage de références pour éviter les conditions de course lors de recherches simultanées. &lt;a href="https://github.com/damus-io/damus/pull/3474">Détection d&amp;rsquo;URL d&amp;rsquo;image&lt;/a> convertit automatiquement les URLs d&amp;rsquo;image collées en miniatures d&amp;rsquo;aperçu dans le compositeur, avec badge de position de carrousel pour plusieurs images. &lt;a href="https://github.com/damus-io/damus/pull/3473">Conversion de collage npub&lt;/a> transforme des chaînes &lt;code>npub&lt;/code> ou &lt;code>nprofile&lt;/code> collées en liens de mention avec résolution de profil asynchrone.&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1627">Cibles de paiement&lt;/a> ajoute une interface d&amp;rsquo;événement pour les partages de zap NIP-57, permettant aux posts de spécifier plusieurs destinataires se partageant les zaps entrants, utile pour les collaborations, le partage de revenus ou les pourboires au créateur comme à ses outils. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1624">Documentation de parité fonctionnelle Quartz&lt;/a> ajoute un tableau détaillé recensant les fonctionnalités implémentées sur Android, Desktop JVM et iOS, en signalant qu&amp;rsquo;iOS manque encore de cryptographie de base (&lt;code>Secp256k1Instance&lt;/code>), de sérialisation JSON et de structures de données.&lt;/p>
&lt;h3 id="notedeck-desktop">Notedeck (Desktop)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1226">Reconstruction des filtres de timeline&lt;/a> corrige un bug où des comptes non suivis continuaient d&amp;rsquo;apparaître dans les flux. Les filtres de timeline étaient construits une seule fois à partir de la liste de contacts et n&amp;rsquo;étaient jamais mis à jour. Le correctif ajoute un suivi &lt;code>contact_list_timestamp&lt;/code> et une méthode &lt;code>invalidate()&lt;/code> pour déclencher une reconstruction quand l&amp;rsquo;état de suivi change.&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">API ContentProvider&lt;/a> expose la base de données d&amp;rsquo;événements du relay local à d&amp;rsquo;autres applications Android via &lt;code>ContentResolver&lt;/code>. Contrairement à l&amp;rsquo;interface WebSocket, qui oblige les applications à maintenir une connexion persistante et à parler le protocole de relay Nostr, ContentProvider offre un accès direct et synchrone à la base via le mécanisme IPC natif d&amp;rsquo;Android. Les applications externes peuvent interroger les événements par ID, pubkey, kind ou plage de dates, insérer de nouveaux événements avec validation et supprimer des événements sans gérer de connexions socket.&lt;/p>
&lt;h3 id="rust-nostr-bibliothèque">rust-nostr (bibliothèque)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1183">Support NIP-40 au niveau relay&lt;/a> ajoute la gestion de l&amp;rsquo;expiration au niveau du relay builder. Les événements expirés sont désormais rejetés avant stockage et filtrés avant envoi aux clients, ce qui évite à chaque implémentation de base de données d&amp;rsquo;avoir à gérer elle-même les vérifications d&amp;rsquo;expiration.&lt;/p>
&lt;h3 id="nak-cli">nak (CLI)&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak/pull/91">Miroir Blossom&lt;/a> implémente une fonctionnalité de mirroring de blobs pour l&amp;rsquo;outil en ligne de commande.&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">Événements d&amp;rsquo;audit des frais de développement&lt;/a> ajoute des pistes d&amp;rsquo;audit transparentes pour les paiements au fonds de développement via des événements Nostr de kind 8383. L&amp;rsquo;implémentation publie des événements d&amp;rsquo;audit non bloquants après les paiements de frais réussis, avec détails de commande et hash de paiement, tout en excluant les pubkeys acheteur et vendeur pour préserver la vie privée.&lt;/p>
&lt;h3 id="mdk-marmot-development-kit">MDK (Marmot Development Kit)&lt;/h3>
&lt;p>Trois correctifs issus d&amp;rsquo;audit de sécurité ont été fusionnés : &lt;a href="https://github.com/marmot-protocol/mdk/pull/40">Vérification d&amp;rsquo;auteur&lt;/a> impose que les pubkeys des rumors correspondent aux identifiants d&amp;rsquo;expéditeur MLS afin d&amp;rsquo;empêcher l&amp;rsquo;usurpation. &lt;a href="https://github.com/marmot-protocol/mdk/pull/41">Liaison d&amp;rsquo;identité KeyPackage&lt;/a> vérifie que l&amp;rsquo;identité du credential correspond au signataire de l&amp;rsquo;événement. &lt;a href="https://github.com/marmot-protocol/mdk/pull/42">Validation des mises à jour admin&lt;/a> empêche les ensembles d&amp;rsquo;admins vides et l&amp;rsquo;assignation d&amp;rsquo;admins non membres.&lt;/p>
&lt;h3 id="shopstr-marketplace">Shopstr (marketplace)&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/217">Escrow sur facture HODL&lt;/a> implémente un système de paiement minimisant la confiance pour les biens physiques. L&amp;rsquo;architecture utilise &lt;code>makeHoldInvoice&lt;/code> d&amp;rsquo;Alby pour verrouiller les fonds de l&amp;rsquo;acheteur dans son propre wallet, avec règlement déclenché seulement après vérification de l&amp;rsquo;inventaire par le marchand. Le protocole d&amp;rsquo;échange passe par des DMs chiffrés &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> : l&amp;rsquo;acheteur envoie une demande de commande, le marchand répond avec une facture HODL, l&amp;rsquo;acheteur paie, les fonds sont verrouillés, le marchand confirme le stock et l&amp;rsquo;expédition, puis le règlement libère les fonds. Le support des paniers multi-marchands répartit les paiements entre vendeurs.&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">Mode de découverte par relay&lt;/a> ajoute un interrupteur pour masquer, sur certains relays, les posts d&amp;rsquo;utilisateurs suivis, ce qui permet des flux de découverte par langue, par exemple &lt;code>nostr.band/lang/*&lt;/code>. La fonctionnalité filtre les posts dont la pubkey d&amp;rsquo;auteur apparaît dans la liste de suivis de l&amp;rsquo;utilisateur, en persistant l&amp;rsquo;état de l&amp;rsquo;option par URL de relay dans localStorage.&lt;/p>
&lt;h3 id="white-noise-messagerie-chiffrée">White Noise (messagerie chiffrée)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/937">Réessai d&amp;rsquo;upload média&lt;/a> ajoute des options de réessai pour les uploads échoués. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/927">Avertissements sur l&amp;rsquo;édition de profil&lt;/a> alertent les utilisateurs à propos des changements de profil. Côté backend, &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/422">whitenoise-rs&lt;/a> corrige une condition de course lors de la création d&amp;rsquo;AccountGroup.&lt;/p>
&lt;h3 id="npubcash-service-dadresses-lightning">npub.cash (service d&amp;rsquo;adresses Lightning)&lt;/h3>
&lt;p>&lt;a href="https://github.com/cashubtc/npubcash-server/pull/40">Réécriture v3&lt;/a> migre le monorepo et le serveur vers Bun, ajoute le support SQLite, abandonne la compatibilité v1, implémente LUD-21 et ajoute des mises à jour temps réel des quotes de mint.&lt;/p>
&lt;h3 id="nostr-java-bibliothèque">nostr-java (bibliothèque)&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v1.1.1">v1.1.1&lt;/a> livre des refactorings de gestion WebSocket et une robustesse de tests améliorée à travers &lt;a href="https://github.com/tcheeric/nostr-java/pull/499">deux PRs&lt;/a>.&lt;/p>
&lt;h3 id="dépôt-nips">Dépôt NIPs&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2180">Migration Djot pour NIP-54&lt;/a> propose un changement séparé pour la spécification wiki : passer le format de contenu d&amp;rsquo;Asciidoc à Djot, un langage de balisage léger à la syntaxe plus propre. La PR introduit des liens en style référence pour les wikilinks, ce qui rend les renvois entre articles wiki plus lisibles dans le source. &lt;a href="https://github.com/nostr-protocol/nips/pull/2179">NIP-XX Quorum&lt;/a> introduit une gouvernance multi-signature à seuil pour les groupes Nostr en s&amp;rsquo;appuyant sur FROST, Flexible Round-Optimized Schnorr Threshold signatures. Un Quorum est un &lt;code>nsec&lt;/code> partagé entre ses membres dans un schéma T-sur-N où les membres peuvent se représenter eux-mêmes ou déléguer à un conseil de représentants. Quand le conseil change, l&amp;rsquo;ancien &lt;code>nsec&lt;/code> devient obsolète et un nouveau est distribué, l&amp;rsquo;acte final de tout conseil étant la signature de l&amp;rsquo;événement de transition de gouvernance. La spécification définit l&amp;rsquo;adhésion, publique ou privée, les élections et votes, y compris les motions de défiance, des « lois » éventuelles en langage naturel, et surtout des ontologies de quorum où des quorums peuvent être membres d&amp;rsquo;autres quorums, ce qui permet des structures hiérarchiques comme des localités rejoignant des entités régionales. Les cas d&amp;rsquo;usage vont du développement logiciel aux conseils d&amp;rsquo;administration, associations de copropriété et communautés modérées.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine et pour cette année. Vous construisez quelque chose ? Vous avez des nouvelles à partager ? Vous voulez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via DM &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a>&lt;/a> ou retrouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #2</title><link>https://nostrcompass.org/fr/newsletters/2025-12-24-newsletter/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2025-12-24-newsletter/</guid><description>&lt;p>Bon retour sur Nostr Compass, votre guide hebdomadaire de l&amp;rsquo;écosystème du protocole Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Trois implémentations de signers &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> reçoivent des mises à jour : Amber ajoute la mise en cache des performances, Aegis gagne le support des URI &lt;code>nostrsigner:&lt;/code>, et Primal Android les rejoint en tant que signer local complet. Shopstr introduit les « Zapsnags » pour les ventes flash via zaps. Mostro ajoute un fonds de développement. Quatre mises à jour NIP sont déployées, incluant les Messages Publics (kind 24) et des améliorations de confidentialité des groupes. Les requêtes de cache NDK accélèrent de 162x, Applesauce ajoute les réactions et le support de portefeuille NIP-60, et Tenex introduit l&amp;rsquo;architecture RAL pour la délégation d&amp;rsquo;agents IA. Dans notre analyse approfondie, nous expliquons &lt;a href="https://nostrcompass.org/fr/topics/nip-02/">NIP-02&lt;/a> (listes d&amp;rsquo;abonnements) et &lt;a href="https://nostrcompass.org/fr/topics/nip-10/">NIP-10&lt;/a> (threading des réponses), des spécifications fondamentales pour construire des timelines sociales et des conversations.&lt;/p></description><content:encoded>&lt;p>Bon retour sur Nostr Compass, votre guide hebdomadaire de l&amp;rsquo;écosystème du protocole Nostr.&lt;/p>
&lt;p>&lt;strong>Cette semaine :&lt;/strong> Trois implémentations de signers &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> reçoivent des mises à jour : Amber ajoute la mise en cache des performances, Aegis gagne le support des URI &lt;code>nostrsigner:&lt;/code>, et Primal Android les rejoint en tant que signer local complet. Shopstr introduit les « Zapsnags » pour les ventes flash via zaps. Mostro ajoute un fonds de développement. Quatre mises à jour NIP sont déployées, incluant les Messages Publics (kind 24) et des améliorations de confidentialité des groupes. Les requêtes de cache NDK accélèrent de 162x, Applesauce ajoute les réactions et le support de portefeuille NIP-60, et Tenex introduit l&amp;rsquo;architecture RAL pour la délégation d&amp;rsquo;agents IA. Dans notre analyse approfondie, nous expliquons &lt;a href="https://nostrcompass.org/fr/topics/nip-02/">NIP-02&lt;/a> (listes d&amp;rsquo;abonnements) et &lt;a href="https://nostrcompass.org/fr/topics/nip-10/">NIP-10&lt;/a> (threading des réponses), des spécifications fondamentales pour construire des timelines sociales et des conversations.&lt;/p>
&lt;h2 id="news">Actualités&lt;/h2>
&lt;p>&lt;strong>Primal Android devient un signer NIP-55&lt;/strong> - S&amp;rsquo;appuyant sur le &lt;a href="https://nostrcompass.org/fr/newsletters/2025-12-17-newsletter/#primal-android">support Nostr Connect de la semaine dernière&lt;/a>, Primal a implémenté des capacités complètes de signature locale à travers huit pull requests fusionnées. L&amp;rsquo;implémentation inclut un &lt;code>LocalSignerContentProvider&lt;/code> complet qui expose les opérations de signature aux autres applications Android via l&amp;rsquo;interface content provider d&amp;rsquo;Android, suivant la spécification &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>. L&amp;rsquo;architecture sépare proprement les responsabilités : &lt;code>SignerActivity&lt;/code> gère les flux d&amp;rsquo;approbation côté utilisateur, &lt;code>LocalSignerService&lt;/code> gère les opérations en arrière-plan, et un nouveau système de permissions permet aux utilisateurs de contrôler quelles applications peuvent demander des signatures. Cela fait de Primal une alternative viable à Amber pour les utilisateurs Android qui veulent garder leurs clés dans une seule application tout en utilisant d&amp;rsquo;autres pour différentes expériences Nostr.&lt;/p>
&lt;p>&lt;strong>Shopstr Zapsnags : Ventes flash via Lightning&lt;/strong> - La place de marché native Nostr a introduit les &lt;a href="https://github.com/shopstr-eng/shopstr/pull/211">« Zapsnags »&lt;/a>, une fonctionnalité de vente flash qui permet aux acheteurs d&amp;rsquo;acheter des articles directement depuis leur flux social avec un seul zap. L&amp;rsquo;implémentation filtre les notes kind 1 taguées avec &lt;code>#shopstr-zapsnag&lt;/code> et les affiche comme des cartes produit avec un bouton « Zap to Buy » au lieu du flux panier standard. Quand un acheteur zappe, le système génère une demande de paiement utilisant &lt;a href="https://nostrcompass.org/fr/topics/nip-57/">NIP-57&lt;/a>, interroge le reçu de zap kind 9735 pour confirmer le paiement, puis chiffre les informations de livraison en utilisant l&amp;rsquo;emballage cadeau &lt;a href="https://nostrcompass.org/fr/topics/nip-17/">NIP-17&lt;/a> avant de les envoyer en privé au vendeur. La fonctionnalité stocke les détails de l&amp;rsquo;acheteur localement pour les achats répétés et inclut un tableau de bord marchand pour créer des annonces de vente flash. C&amp;rsquo;est une combinaison astucieuse de primitives sociales, de paiement et de confidentialité qui démontre comment la conception composable de Nostr permet des modèles de commerce innovants.&lt;/p>
&lt;p>&lt;strong>Mostro introduit un fonds de développement&lt;/strong> - La plateforme de trading Bitcoin P2P &lt;a href="https://nostrcompass.org/fr/topics/nip-69/">NIP-69&lt;/a> a &lt;a href="https://github.com/MostroP2P/mostro/pull/555">implémenté des frais de développement configurables&lt;/a> pour soutenir une maintenance durable. Les opérateurs peuvent définir &lt;code>dev_fee_percentage&lt;/code> entre 10-100% des frais de trading Mostro (par défaut 30%), qui achemine automatiquement vers un fonds de développement à chaque trade réussi. L&amp;rsquo;implémentation ajoute trois colonnes de base de données (&lt;code>dev_fee&lt;/code>, &lt;code>dev_fee_paid&lt;/code>, &lt;code>dev_fee_payment_hash&lt;/code>) pour suivre les contributions et valide le pourcentage au démarrage du daemon. La documentation technique dans &lt;a href="https://github.com/MostroP2P/mostro/blob/main/docs/DEV_FEE.md">&lt;code>docs/DEV_FEE.md&lt;/code>&lt;/a> explique le système. Ce modèle opt-in permet aux opérateurs de soutenir le développement continu tout en maintenant une transparence totale sur l&amp;rsquo;allocation des frais.&lt;/p>
&lt;h2 id="nip-updates">Mises à jour NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Nouveaux NIPs :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-a4/">NIP-A4&lt;/a> (Messages Publics, kind 24)&lt;/strong> - Un nouveau kind pour les messages d&amp;rsquo;écran de notification conçu pour un support client large (&lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>). Contrairement aux conversations threadées, ces messages n&amp;rsquo;ont pas de concept d&amp;rsquo;historique de chat ou de chaînes de messages. Ils utilisent des tags &lt;code>q&lt;/code> (citations) plutôt que des tags &lt;code>e&lt;/code> pour éviter les complications de threading, les rendant idéaux pour des notifications publiques simples qui apparaissent dans le flux de notifications d&amp;rsquo;un destinataire sans créer d&amp;rsquo;état de conversation.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Changements significatifs :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> - Clarification majeure de la sémantique des groupes (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>). Le tag &lt;code>closed&lt;/code> signifie maintenant « incapable d&amp;rsquo;écrire » (lecture seule pour les non-membres), découplé des mécaniques d&amp;rsquo;adhésion. Un nouveau tag &lt;code>hidden&lt;/code> empêche les relais de servir les métadonnées ou événements de membres aux non-membres, permettant des groupes véritablement privés qui sont indécouverts sans invitation hors bande. Le tag &lt;code>private&lt;/code> contrôle la visibilité des messages tout en permettant des métadonnées publiques pour la découverte.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - Ajout du kind 30006 pour les ensembles d&amp;rsquo;images curées (&lt;a href="https://github.com/nostr-protocol/nips/pull/2170">#2170&lt;/a>), suivant le modèle de 30004 (articles) et 30005 (vidéos). Déjà implémenté dans Nostria.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Clarification de l&amp;rsquo;initiation de connexion pour les signers Android (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>). Les développeurs implémentant des sessions multi-utilisateurs utilisaient incorrectement &lt;code>get_public_key&lt;/code> en l&amp;rsquo;appelant depuis des processus en arrière-plan. La spécification mise à jour recommande de l&amp;rsquo;appeler seulement une fois lors de la connexion initiale, prévenant une erreur d&amp;rsquo;implémentation courante.&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-02-and-nip-10">Analyse approfondie NIP : NIP-02 et NIP-10&lt;/h2>
&lt;p>Cette semaine, nous couvrons deux NIPs essentiels pour les fonctionnalités sociales : comment les clients savent qui vous suivez et comment les conversations sont threadées.&lt;/p>
&lt;h3 id="nip-02frtopicsnip-02--liste-dabonnements">&lt;a href="https://nostrcompass.org/fr/topics/nip-02/">NIP-02&lt;/a> : Liste d&amp;rsquo;abonnements&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/02.md">NIP-02&lt;/a> définit les événements kind 3, qui stockent votre liste d&amp;rsquo;abonnements. Ce mécanisme simple alimente le graphe social qui rend les timelines possibles.&lt;/p>
&lt;p>&lt;strong>Structure :&lt;/strong> Un événement kind 3 contient des tags &lt;code>p&lt;/code> listant les clés publiques suivies :&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>Chaque tag &lt;code>p&lt;/code> a quatre positions : le nom du tag, la clé publique suivie (hex), une indication de relais URL optionnelle, et un « petname » optionnel (un surnom local). L&amp;rsquo;indication de relais dit aux autres clients où trouver les événements de cet utilisateur. Le petname vous permet d&amp;rsquo;assigner des noms mémorables aux contacts sans vous fier à leurs noms d&amp;rsquo;affichage auto-déclarés.&lt;/p>
&lt;p>&lt;strong>Comportement remplaçable :&lt;/strong> Le Kind 3 tombe dans la plage remplaçable (0, 3, 10000-19999), donc les relais ne gardent que la dernière version par clé publique. Quand vous suivez quelqu&amp;rsquo;un de nouveau, votre client publie un nouveau kind 3 complet contenant tous vos abonnements plus le nouveau. Cela signifie que les listes d&amp;rsquo;abonnements doivent être complètes à chaque fois ; vous ne pouvez pas publier de mises à jour incrémentales.&lt;/p>
&lt;p>&lt;strong>Construction des timelines :&lt;/strong> Pour construire un flux d&amp;rsquo;accueil, les clients récupèrent le kind 3 de l&amp;rsquo;utilisateur, extraient toutes les clés publiques des tags &lt;code>p&lt;/code>, puis s&amp;rsquo;abonnent aux événements kind 1 de ces auteurs :&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>Le relais renvoie les notes correspondantes, et le client les affiche. Les indications de relais dans le kind 3 aident les clients à savoir quels relais interroger pour chaque utilisateur suivi.&lt;/p>
&lt;p>&lt;strong>Petnames et identité :&lt;/strong> Le champ petname permet un schéma de nommage décentralisé. Plutôt que de faire confiance au nom qu&amp;rsquo;un utilisateur revendique dans son profil, vous pouvez assigner votre propre étiquette. Un client pourrait afficher « alice (Ma Sœur) » où « alice » vient de son profil kind 0 et « Ma Sœur » est votre petname. Cela fournit un contexte que les noms d&amp;rsquo;utilisateur globaux ne peuvent pas offrir.&lt;/p>
&lt;p>&lt;strong>Considérations pratiques :&lt;/strong> Parce que les événements kind 3 sont remplaçables et doivent être complets, les clients devraient préserver les tags inconnus lors de la mise à jour. Si un autre client a ajouté des tags que votre client ne comprend pas, écraser aveuglément perdrait ces données. Ajoutez les nouveaux abonnements plutôt que de reconstruire à partir de zéro.&lt;/p>
&lt;h3 id="nip-10frtopicsnip-10--threading-des-notes-textuelles">&lt;a href="https://nostrcompass.org/fr/topics/nip-10/">NIP-10&lt;/a> : Threading des notes textuelles&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/10.md">NIP-10&lt;/a> spécifie comment les notes kind 1 se référencent mutuellement pour former des fils de réponses. Comprendre ceci est essentiel pour construire des vues de conversation.&lt;/p>
&lt;p>&lt;strong>Le problème :&lt;/strong> Quand quelqu&amp;rsquo;un répond à une note, les clients doivent savoir : À quoi est-ce une réponse ? Quelle est la racine de la conversation ? Qui devrait être notifié ? NIP-10 répond à ces questions à travers les tags &lt;code>e&lt;/code> (références d&amp;rsquo;événements) et les tags &lt;code>p&lt;/code> (mentions de clés publiques).&lt;/p>
&lt;p>&lt;strong>Tags marqués (préféré) :&lt;/strong> Les clients modernes utilisent des marqueurs explicites dans les tags &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;Excellent point ! Je suis d&amp;#39;accord.&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>Le marqueur &lt;code>root&lt;/code> pointe vers la note originale qui a commencé le fil. Le marqueur &lt;code>reply&lt;/code> pointe vers la note spécifique à laquelle on répond. Si vous répondez directement à la racine, utilisez seulement &lt;code>root&lt;/code> (pas besoin de tag &lt;code>reply&lt;/code>). La distinction compte pour l&amp;rsquo;affichage : le &lt;code>reply&lt;/code> détermine l&amp;rsquo;indentation dans une vue de fil, tandis que &lt;code>root&lt;/code> regroupe toutes les réponses ensemble.&lt;/p>
&lt;p>&lt;strong>Règles de threading :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Réponse directe à la racine : Un tag &lt;code>e&lt;/code> avec marqueur &lt;code>root&lt;/code>&lt;/li>
&lt;li>Réponse à une réponse : Deux tags &lt;code>e&lt;/code>, un &lt;code>root&lt;/code> et un &lt;code>reply&lt;/code>&lt;/li>
&lt;li>Le &lt;code>root&lt;/code> reste constant tout au long du fil ; &lt;code>reply&lt;/code> change selon ce à quoi vous répondez&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Tags pubkey pour les notifications :&lt;/strong> Incluez des tags &lt;code>p&lt;/code> pour tous ceux qui devraient être notifiés. Au minimum, taguez l&amp;rsquo;auteur de la note à laquelle vous répondez. La convention est aussi d&amp;rsquo;inclure tous les tags &lt;code>p&lt;/code> de l&amp;rsquo;événement parent (pour que tout le monde dans la conversation reste dans la boucle), plus tous les utilisateurs que vous @mentionnez dans votre contenu.&lt;/p>
&lt;p>&lt;strong>Indications de relais :&lt;/strong> La troisième position dans les tags &lt;code>e&lt;/code> et &lt;code>p&lt;/code> peut contenir une URL de relais où cet événement ou le contenu de cet utilisateur pourrait être trouvé. Cela aide les clients à récupérer le contenu référencé même s&amp;rsquo;ils ne sont pas connectés au relais original.&lt;/p>
&lt;p>&lt;strong>Tags positionnels dépréciés :&lt;/strong> Les premières implémentations Nostr déduisaient le sens de la position des tags plutôt que des marqueurs : le premier tag &lt;code>e&lt;/code> était la racine, le dernier était la réponse, ceux du milieu étaient des mentions. Cette approche est dépréciée car elle crée de l&amp;rsquo;ambiguïté. Si vous voyez des tags &lt;code>e&lt;/code> sans marqueurs, ils proviennent probablement de clients plus anciens. Les implémentations modernes devraient toujours utiliser des marqueurs explicites.&lt;/p>
&lt;p>&lt;strong>Construction des vues de fil :&lt;/strong> Pour afficher un fil, récupérez l&amp;rsquo;événement racine, puis interrogez tous les événements avec un tag &lt;code>e&lt;/code> référençant cette racine :&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>Triez les résultats par &lt;code>created_at&lt;/code> et utilisez les marqueurs &lt;code>reply&lt;/code> pour construire la structure d&amp;rsquo;arbre. Les événements dont le &lt;code>reply&lt;/code> pointe vers la racine sont des réponses de premier niveau ; les événements dont le &lt;code>reply&lt;/code> pointe vers une autre réponse sont des réponses imbriquées.&lt;/p>
&lt;h2 id="releases">Sorties&lt;/h2>
&lt;p>&lt;strong>Zeus v0.12.0&lt;/strong> - S&amp;rsquo;appuyant sur le &lt;a href="https://nostrcompass.org/fr/newsletters/2025-12-17-newsletter/#zeus-lightning-wallet">support de paiements parallèles NWC de la semaine dernière&lt;/a>, la &lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.0">version majeure&lt;/a> du portefeuille Lightning livre un service Nostr Wallet Connect &lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> complet avec support de relais personnalisé et suivi de budget. Une &lt;a href="https://github.com/ZeusLN/zeus/pull/3455">correction de rechargement de budget&lt;/a> assure que les connexions utilisent les limites actuelles. &lt;a href="https://github.com/ZeusLN/zeus/pull/3460">La copie d&amp;rsquo;adresse Lightning&lt;/a> n&amp;rsquo;inclut plus le préfixe &lt;code>lightning:&lt;/code>, corrigeant les problèmes de collage dans les champs de profil Nostr.&lt;/p>
&lt;p>&lt;strong>Amber v4.0.6&lt;/strong> - Le signer Android &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a> &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.6">ajoute la mise en cache des performances&lt;/a> aux opérations de signature et améliore la gestion des erreurs lors du déchiffrement de contenu malformé. La fiabilité de connexion améliorée avec une logique de réessai pour les événements de connexion relais, et plusieurs corrections de crash adressent les cas limites autour des URI &lt;code>nostrconnect://&lt;/code> invalides et des interactions de l&amp;rsquo;écran de permissions.&lt;/p>
&lt;p>&lt;strong>nak v0.17.3&lt;/strong> - La &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.3">dernière version&lt;/a> de l&amp;rsquo;outil Nostr en ligne de commande restreint les builds LMDB à Linux, corrigeant les problèmes de compilation cross-platform.&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.4&lt;/strong> - Le signer Nostr cross-platform &lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.4">ajoute le support&lt;/a> du schéma URI &lt;code>nostrsigner:&lt;/code> défini dans &lt;a href="https://nostrcompass.org/fr/topics/nip-55/">NIP-55&lt;/a>, correspondant au flux de connexion d&amp;rsquo;Amber. Les données de relais local peuvent maintenant être importées et exportées pour la sauvegarde, et la version inclut des corrections de bugs pour les erreurs de socket relais et des améliorations UI pour l&amp;rsquo;interface du relais local.&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">Changements notables de code et documentation&lt;/h2>
&lt;p>&lt;em>Ce sont des pull requests ouvertes et du travail en phase précoce, parfaits pour obtenir des retours avant fusion. Si quelque chose attire votre attention, considérez la review ou les commentaires !&lt;/em>&lt;/p>
&lt;h3 id="damus">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3469">Persistance de la liste de mutes&lt;/a> corrige un problème où les listes de mutes étaient effacées au démarrage à froid. La correction ajoute des gardes pour prévenir les écrasements accidentels pendant l&amp;rsquo;initialisation de l&amp;rsquo;application. &lt;a href="https://github.com/damus-io/damus/pull/3457">Timing du flux de profil&lt;/a> élimine un délai d&amp;rsquo;environ 1 seconde avant que les profils en cache n&amp;rsquo;apparaissent. Précédemment, les vues attendaient le redémarrage des tâches d&amp;rsquo;abonnement ; maintenant &lt;code>streamProfile()&lt;/code> renvoie immédiatement les données en cache de NostrDB, supprimant la fenêtre où les clés publiques abrégées et les images placeholder s&amp;rsquo;affichaient.&lt;/p>
&lt;h3 id="white-noise">White Noise (Messagerie chiffrée)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/919">Streaming de messages en temps réel&lt;/a> remplace le mécanisme de polling précédent par une architecture basée sur les streams. Le nouveau &lt;code>ChatStreamNotifier&lt;/code> consomme directement le stream de messages du SDK Rust, maintenant l&amp;rsquo;ordre chronologique et gérant les mises à jour incrémentales efficacement. Les tests ont montré une amélioration significative de la réactivité. Une &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/921">API de liste de chats&lt;/a> ajoute &lt;code>get_chat_list&lt;/code> pour récupérer les résumés de conversation, et une &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/905">correction de tri stable&lt;/a> prévient les boucles de réordonnancement de messages en utilisant &lt;code>createdAt&lt;/code> avec l&amp;rsquo;ID de message comme critère de départage.&lt;/p>
&lt;h3 id="ndk">NDK (Bibliothèque)&lt;/h3>
&lt;p>Deux pull requests ont livré des améliorations dramatiques de performance du cache. &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/371">PR #371&lt;/a> a corrigé un bug où les événements lus depuis le cache SQLite étaient immédiatement réécrits, causant 100% d&amp;rsquo;écritures dupliquées au démarrage de l&amp;rsquo;application. La correction ajoute une garde &lt;code>fromCache&lt;/code> et implémente une vérification de doublons O(1) via un Set en mémoire. Pour les petits ensembles de résultats (&amp;lt;100 événements), le transfert JSON direct remplace le surcoût d&amp;rsquo;encodage binaire. &lt;a href="https://github.com/nostr-dev-kit/ndk/pull/372">PR #372&lt;/a> a supprimé les appels &lt;code>seenEvent&lt;/code> inutiles pour les événements en cache. La recherche dans le cache LRU coûtait 0.24-0.64ms par événement ; pour 5 700 événements en cache, cela ajoutait environ 1.4 secondes de surcoût. Résultat : les requêtes de cache sont passées d&amp;rsquo;environ 3 690ms à environ 22ms (162x plus rapide).&lt;/p>
&lt;h3 id="rust-nostr">rust-nostr (Bibliothèque)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1176">Support REQ multi-filtres&lt;/a> a été restauré après avoir été supprimé dans un refactoring précédent. Le SDK accepte à nouveau &lt;code>Vec&amp;lt;Filter&amp;gt;&lt;/code> pour les requêtes d&amp;rsquo;abonnement, permettant des requêtes efficaces qui combinent plusieurs conditions de filtre avec la logique OR. &lt;a href="https://github.com/rust-nostr/nostr/pull/1156">La provenance du relais&lt;/a> a été ajoutée aux méthodes &lt;code>stream_events*&lt;/code>, donc chaque événement streamé inclut maintenant le &lt;code>RelayUrl&lt;/code> dont il provient et un &lt;code>Result&lt;/code> indiquant le succès ou l&amp;rsquo;échec, utile pour suivre la fiabilité des relais et déboguer les problèmes de connexion. Une &lt;a href="https://github.com/rust-nostr/nostr/pull/1179">correction de sécurité&lt;/a> a supprimé la dépendance &lt;code>url-fork&lt;/code> suite à RUSTSEC-2024-0421, éliminant une vulnérabilité connue.&lt;/p>
&lt;h3 id="applesauce">Applesauce (Bibliothèque)&lt;/h3>
&lt;p>La bibliothèque TypeScript alimentant &lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a> a connu un développement significatif cette semaine. Les nouveaux modèles incluent un &lt;a href="https://github.com/hzrd149/applesauce">système de réactions&lt;/a> et le casting de groupes d&amp;rsquo;utilisateurs. Les fonctionnalités de portefeuille se sont étendues avec le support NIP-60, un onglet d&amp;rsquo;envoi et des outils de récupération de tokens améliorés. Une nouvelle propriété &lt;code>user.directMessageRelays$&lt;/code> expose la configuration des relais DM. Toutes les actions ont été refactorisées pour utiliser des interfaces async (supprimant les générateurs async), et des corrections de bugs ont adressé la restauration de contenu chiffré et les cas limites des filtres d&amp;rsquo;événements basés sur le temps.&lt;/p>
&lt;h3 id="tenex">Tenex (Agents IA)&lt;/h3>
&lt;p>Le &lt;a href="https://github.com/tenex-chat/tenex">système de coordination multi-agents&lt;/a> construit sur Nostr a introduit l&amp;rsquo;architecture RAL (Request-Action-Lifecycle) dans &lt;a href="https://github.com/pablof7z/tenex/pull/38">cinq PRs fusionnés&lt;/a>. RAL permet aux agents de se mettre en pause lors de la délégation de tâches et de reprendre quand les résultats arrivent, avec une persistance d&amp;rsquo;état limitée à la conversation. Les outils de délégation (&lt;code>delegate&lt;/code>, &lt;code>ask&lt;/code>, &lt;code>delegate_followup&lt;/code>, &lt;code>delegate_external&lt;/code>) publient maintenant des événements Nostr et retournent des signaux d&amp;rsquo;arrêt au lieu de bloquer. Le refactoring inclut la migration AI SDK v6, l&amp;rsquo;infrastructure de test VCR pour l&amp;rsquo;enregistrement déterministe des interactions LLM, et le support d&amp;rsquo;images multimodal.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ? Vous avez des nouvelles à partager ? Vous voulez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via DM NIP-17&lt;/a> ou trouvez-nous sur Nostr.&lt;/p></content:encoded></item><item><title>Nostr Compass #1</title><link>https://nostrcompass.org/fr/newsletters/2025-12-17-newsletter/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/fr/newsletters/2025-12-17-newsletter/</guid><description>&lt;p>Bienvenue dans Nostr Compass, une newsletter hebdomadaire dédiée à l&amp;rsquo;écosystème du protocole Nostr. Notre mission est de tenir les développeurs, opérateurs de relais et constructeurs informés des développements importants à travers le réseau. Nous documentons l&amp;rsquo;évolution du protocole avec précision technique, neutralité et profondeur, couvrant tout, des propositions NIP aux sorties de clients en passant par les meilleures pratiques d&amp;rsquo;implémentation.&lt;/p>
&lt;p>Nostr Compass s&amp;rsquo;inspire de &lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>, dont les années de travail dévoué à l&amp;rsquo;avancement des connaissances techniques de Bitcoin ont établi la norme pour les newsletters axées sur les protocoles. Nous sommes reconnaissants pour leur exemple et espérons apporter la même rigueur à l&amp;rsquo;écosystème Nostr.&lt;/p></description><content:encoded>&lt;p>Bienvenue dans Nostr Compass, une newsletter hebdomadaire dédiée à l&amp;rsquo;écosystème du protocole Nostr. Notre mission est de tenir les développeurs, opérateurs de relais et constructeurs informés des développements importants à travers le réseau. Nous documentons l&amp;rsquo;évolution du protocole avec précision technique, neutralité et profondeur, couvrant tout, des propositions NIP aux sorties de clients en passant par les meilleures pratiques d&amp;rsquo;implémentation.&lt;/p>
&lt;p>Nostr Compass s&amp;rsquo;inspire de &lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>, dont les années de travail dévoué à l&amp;rsquo;avancement des connaissances techniques de Bitcoin ont établi la norme pour les newsletters axées sur les protocoles. Nous sommes reconnaissants pour leur exemple et espérons apporter la même rigueur à l&amp;rsquo;écosystème Nostr.&lt;/p>
&lt;p>Ce numéro inaugural établit notre format hebdomadaire. Chaque mercredi, nous vous apporterons des mises à jour NIP, des notes de version, des points forts du développement et des conseils techniques. Que vous construisiez un client, gériez un relais ou contribuiez au protocole, Nostr Compass vise à être votre source fiable pour ce qui se passe dans l&amp;rsquo;écosystème.&lt;/p>
&lt;h2 id="quest-ce-que-nostr-">Qu&amp;rsquo;est-ce que Nostr ?&lt;/h2>
&lt;p>&lt;em>Comme c&amp;rsquo;est notre premier numéro, nous commençons par une introduction au fonctionnement de Nostr. Les lecteurs réguliers peuvent &lt;a href="https://nostrcompass.org/fr/newsletters/2025-12-17-newsletter/#actualit%c3%a9s">passer directement aux actualités&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Nostr (Notes and Other Stuff Transmitted by Relays) est un protocole décentralisé pour les réseaux sociaux et la messagerie. Contrairement aux plateformes traditionnelles, Nostr n&amp;rsquo;a pas de serveur central, pas d&amp;rsquo;entreprise qui le contrôle et pas de point unique de défaillance. Les utilisateurs possèdent leur identité grâce à des paires de clés cryptographiques, et le contenu circule via des serveurs relais indépendants que n&amp;rsquo;importe qui peut exploiter.&lt;/p>
&lt;p>&lt;strong>Comment ça fonctionne :&lt;/strong> Les utilisateurs génèrent une paire de clés (une clé privée appelée nsec et une clé publique appelée npub). La clé privée signe les messages appelés « événements », et la clé publique sert d&amp;rsquo;identité. Les événements sont envoyés aux relais, qui les stockent et les transmettent aux autres utilisateurs. Comme vous contrôlez vos clés, vous pouvez passer d&amp;rsquo;un client ou d&amp;rsquo;un relais à l&amp;rsquo;autre sans perdre votre identité ou vos abonnés.&lt;/p>
&lt;p>&lt;strong>Pourquoi c&amp;rsquo;est important :&lt;/strong> Nostr offre une résistance à la censure grâce à la diversité des relais (si un relais vous bannit, d&amp;rsquo;autres peuvent toujours servir votre contenu), la portabilité (votre identité fonctionne sur n&amp;rsquo;importe quelle application Nostr) et l&amp;rsquo;interopérabilité (tous les clients Nostr parlent le même protocole). Il n&amp;rsquo;y a pas d&amp;rsquo;algorithme décidant ce que vous voyez, pas de publicités et pas de collecte de données.&lt;/p>
&lt;p>&lt;strong>L&amp;rsquo;écosystème aujourd&amp;rsquo;hui :&lt;/strong> Nostr prend en charge le microblogging (comme Twitter/X), le contenu long format (comme Medium), les messages directs, les places de marché, le streaming en direct, et plus encore. Les clients incluent Damus (iOS), Amethyst (Android), Primal, Coracle et des dizaines d&amp;rsquo;autres. L&amp;rsquo;intégration du Lightning Network permet des paiements instantanés via les « zaps ». Le protocole continue d&amp;rsquo;évoluer grâce aux NIPs (Nostr Implementation Possibilities), des spécifications pilotées par la communauté qui étendent les fonctionnalités.&lt;/p>
&lt;h2 id="news">Actualités&lt;/h2>
&lt;p>&lt;strong>NIP-BE fusionné : Support Bluetooth Low Energy&lt;/strong> - Une nouvelle capacité significative &lt;a href="https://github.com/nostr-protocol/nips/pull/1979">a été intégrée au protocole&lt;/a>. &lt;a href="https://nostrcompass.org/fr/topics/nip-be/">NIP-BE&lt;/a> spécifie comment les applications Nostr peuvent communiquer et se synchroniser via Bluetooth Low Energy. Cela permet aux applications capables de fonctionner hors ligne de synchroniser les données entre appareils à proximité sans connectivité Internet. La spécification adapte les modèles de relais WebSocket aux contraintes du BLE, utilisant la compression DEFLATE et la messagerie fragmentée pour gérer les petites tailles MTU du BLE (20-256 octets). Les appareils négocient les rôles en fonction de la comparaison UUID, l&amp;rsquo;UUID le plus élevé devenant le serveur GATT.&lt;/p>
&lt;p>&lt;strong>MIP-05 : Notifications push préservant la vie privée&lt;/strong> - Le &lt;a href="https://nostrcompass.org/fr/topics/marmot/">Protocole Marmot&lt;/a> a publié &lt;a href="https://nostrcompass.org/fr/topics/mip-05/">MIP-05&lt;/a> (&lt;a href="https://github.com/marmot-protocol/mips/blob/main/mip-05.md">spécification&lt;/a>), une spécification pour les notifications push qui maintiennent la confidentialité. Les systèmes push traditionnels exigent que les serveurs connaissent les jetons d&amp;rsquo;appareil et les identités des utilisateurs ; MIP-05 résout ce problème en chiffrant les jetons d&amp;rsquo;appareil avec ECDH+HKDF et ChaCha20-Poly1305, utilisant des clés éphémères pour empêcher la corrélation. Un protocole de propagation à trois événements (kinds 447-449) synchronise les jetons chiffrés entre les membres du groupe, et les notifications utilisent l&amp;rsquo;emballage cadeau &lt;a href="https://nostrcompass.org/fr/topics/nip-59/">NIP-59&lt;/a> avec des jetons leurres pour masquer la taille des groupes. Cela permet à WhiteNoise et autres clients Marmot de délivrer des notifications en temps opportun sans compromettre la vie privée des utilisateurs.&lt;/p>
&lt;p>&lt;strong>Blossom BUD-10 : Nouveau schéma URI&lt;/strong> - Le protocole média &lt;a href="https://nostrcompass.org/fr/topics/blossom/">Blossom&lt;/a> obtient un schéma URI personnalisé via &lt;a href="https://nostrcompass.org/fr/topics/bud-10/">BUD-10&lt;/a> (&lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/10.md">spécification&lt;/a>). Le nouveau format &lt;code>blossom:&amp;lt;sha256&amp;gt;.ext&lt;/code> intègre le hash du fichier, l&amp;rsquo;extension, la taille, plusieurs indications de serveur et les clés publiques des auteurs pour la découverte de serveur &lt;a href="https://nostrcompass.org/fr/topics/bud-03/">BUD-03&lt;/a>. Cela rend les liens blob plus résilients que les URL HTTP statiques en permettant le basculement automatique entre serveurs.&lt;/p>
&lt;p>&lt;strong>Mises à jour de la place de marché Shopstr&lt;/strong> - La place de marché native Nostr a &lt;a href="https://github.com/shopstr-eng/shopstr/pull/202">implémenté Nostr Wallet Connect&lt;/a> (&lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a>) pour les paiements, &lt;a href="https://github.com/shopstr-eng/shopstr/pull/203">ajouté l&amp;rsquo;expiration des annonces&lt;/a> utilisant &lt;a href="https://nostrcompass.org/fr/topics/nip-40/">NIP-40&lt;/a>, et introduit les &lt;a href="https://github.com/shopstr-eng/shopstr/pull/210">codes de réduction&lt;/a> pour les vendeurs.&lt;/p>
&lt;h2 id="nip-updates">Mises à jour NIP&lt;/h2>
&lt;p>Changements récents dans le &lt;a href="https://github.com/nostr-protocol/nips">dépôt NIPs&lt;/a> :&lt;/p>
&lt;p>&lt;strong>Nouveaux NIPs :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-be/">NIP-BE&lt;/a>&lt;/strong> - Messagerie Bluetooth Low Energy et synchronisation d&amp;rsquo;appareils (&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/fr/topics/nip-63/">NIP-63&lt;/a>&lt;/strong> - Standard Paywall/Contenu Premium pour la gestion du contenu à accès restreint dans le protocole (&lt;a href="https://github.com/nostr-protocol/nips/pull/2156">#2156&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Changements significatifs :&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/fr/topics/nip-24/">NIP-24&lt;/a>&lt;/strong> - Ajout d&amp;rsquo;un tableau optionnel &lt;code>languages&lt;/code> aux métadonnées utilisateur Kind 0, permettant aux utilisateurs de spécifier plusieurs langues préférées en utilisant les tags IETF BCP 47 pour une meilleure découverte de contenu et correspondance de relais (&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/fr/topics/nip-69/">NIP-69&lt;/a>&lt;/strong> - Ajout du support d&amp;rsquo;expiration des ordres pour le trading P2P avec les tags &lt;code>expires_at&lt;/code> et &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/fr/topics/nip-59/">NIP-59&lt;/a>&lt;/strong> - Les événements Gift wrap peuvent maintenant être supprimés via les requêtes 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/fr/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - Suppression des tags hashtag et URL des signets génériques ; les hashtags utilisent maintenant le 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/fr/topics/nip-18/">NIP-18&lt;/a>&lt;/strong> - Amélioration des reposts génériques pour les événements remplaçables avec support du 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/fr/topics/nip-17/">NIP-17&lt;/a>&lt;/strong> - Formulation affinée et ajout du support de réaction kind 7 aux DMs (&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/fr/topics/nip-11/">NIP-11&lt;/a>&lt;/strong> - Ajout du champ &lt;code>self&lt;/code> pour l&amp;rsquo;identification de la clé publique du relais (&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">Analyse approfondie NIP : NIP-01 et NIP-19&lt;/h2>
&lt;p>Pour ce numéro inaugural, nous couvrons deux NIPs fondamentaux que chaque développeur Nostr devrait comprendre. Consultez nos pages thématiques pour &lt;a href="https://nostrcompass.org/fr/topics/nip-01/">NIP-01&lt;/a> et &lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a>.&lt;/p>
&lt;h3 id="nip-01--protocole-de-base">NIP-01 : Protocole de base&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-01/">NIP-01&lt;/a> définit le protocole de base. Tout dans Nostr se construit sur cette spécification.&lt;/p>
&lt;p>&lt;strong>Les événements&lt;/strong> sont le seul type d&amp;rsquo;objet. Chaque événement contient :&lt;/p>
&lt;ul>
&lt;li>&lt;code>id&lt;/code> : Hash SHA256 de l&amp;rsquo;événement sérialisé (l&amp;rsquo;identifiant unique de l&amp;rsquo;événement)&lt;/li>
&lt;li>&lt;code>pubkey&lt;/code> : La clé publique du créateur (hex 32 octets, secp256k1)&lt;/li>
&lt;li>&lt;code>created_at&lt;/code> : Horodatage Unix&lt;/li>
&lt;li>&lt;code>kind&lt;/code> : Entier catégorisant le type d&amp;rsquo;événement&lt;/li>
&lt;li>&lt;code>tags&lt;/code> : Tableau de tableaux pour les métadonnées&lt;/li>
&lt;li>&lt;code>content&lt;/code> : La charge utile (l&amp;rsquo;interprétation dépend du kind)&lt;/li>
&lt;li>&lt;code>sig&lt;/code> : Signature Schnorr prouvant que la clé publique a créé cet événement&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Les kinds&lt;/strong> déterminent comment les relais stockent les événements :&lt;/p>
&lt;ul>
&lt;li>Événements réguliers (1, 2, 4-44, 1000-9999) : Stockés normalement, toutes les versions conservées&lt;/li>
&lt;li>Événements remplaçables (0, 3, 10000-19999) : Seul le dernier par clé publique est conservé&lt;/li>
&lt;li>Événements éphémères (20000-29999) : Non stockés, juste transmis aux abonnés&lt;/li>
&lt;li>Événements adressables (30000-39999) : Dernier par combinaison clé publique + kind + tag &lt;code>d&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Le Kind 0 représente les métadonnées utilisateur (profil), le kind 1 est une note textuelle (le post de base), le kind 3 est la liste d&amp;rsquo;abonnements.&lt;/p>
&lt;p>&lt;strong>Kind 1 : Notes textuelles&lt;/strong> sont le cœur du Nostr social. Un événement kind 1 est un post court, similaire à un tweet. Le champ &lt;code>content&lt;/code> contient le texte du message (texte brut, bien que les clients rendent souvent le markdown). Les tags permettent les réponses, mentions et références :&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;Bonjour Nostr ! Découvrez le travail de @jb55 sur 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>Le tag &lt;code>e&lt;/code> avec le marqueur &amp;ldquo;reply&amp;rdquo; indique qu&amp;rsquo;il s&amp;rsquo;agit d&amp;rsquo;une réponse (voir &lt;a href="https://nostrcompass.org/fr/topics/nip-10/">NIP-10&lt;/a> pour les conventions de threading). Le tag &lt;code>p&lt;/code> mentionne un utilisateur, permettant aux clients de le notifier et d&amp;rsquo;afficher son nom au lieu de la clé publique brute. Les clients récupèrent l&amp;rsquo;événement kind 0 de l&amp;rsquo;utilisateur mentionné pour obtenir son nom d&amp;rsquo;affichage et son image.&lt;/p>
&lt;p>Pour construire une timeline, un client s&amp;rsquo;abonne aux événements kind 1 des clés publiques suivies : &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>. Le relais renvoie les notes correspondantes, et le client les affiche chronologiquement.&lt;/p>
&lt;p>&lt;strong>Les événements adressables&lt;/strong> (30000-39999) fonctionnent comme les événements remplaçables mais utilisent un tag &lt;code>d&lt;/code> comme identifiant supplémentaire. Le relais ne conserve que la dernière version de chaque combinaison clé publique + kind + tag d. Cela permet des articles modifiables, des fiches produits, ou tout cas où vous avez besoin de plusieurs éléments remplaçables par utilisateur.&lt;/p>
&lt;p>&lt;strong>Les tags&lt;/strong> sont des tableaux où le premier élément est le nom du tag. Les tags standards à une seule lettre (&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>) sont indexés par les relais pour une interrogation efficace. Par exemple, &lt;code>[&amp;quot;e&amp;quot;, &amp;quot;&amp;lt;event-id&amp;gt;&amp;quot;]&lt;/code> référence un autre événement, &lt;code>[&amp;quot;p&amp;quot;, &amp;quot;&amp;lt;pubkey&amp;gt;&amp;quot;]&lt;/code> référence un utilisateur.&lt;/p>
&lt;p>&lt;strong>La communication Client-Relais&lt;/strong> utilise des connexions WebSocket avec des tableaux JSON comme messages. Le premier élément identifie le type de message.&lt;/p>
&lt;p>Du client au relais :&lt;/p>
&lt;ul>
&lt;li>&lt;code>[&amp;quot;EVENT&amp;quot;, &amp;lt;event&amp;gt;]&lt;/code> - Publier un événement sur le relais&lt;/li>
&lt;li>&lt;code>[&amp;quot;REQ&amp;quot;, &amp;lt;sub-id&amp;gt;, &amp;lt;filter&amp;gt;, ...]&lt;/code> - S&amp;rsquo;abonner aux événements correspondant au(x) filtre(s)&lt;/li>
&lt;li>&lt;code>[&amp;quot;CLOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - Terminer un abonnement&lt;/li>
&lt;/ul>
&lt;p>Du relais au 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> - Livre un événement correspondant à votre abonnement&lt;/li>
&lt;li>&lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - « Fin des événements stockés » - le relais a envoyé toutes les correspondances historiques et n&amp;rsquo;enverra maintenant que les nouveaux événements à leur arrivée&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> - Accuse réception de l&amp;rsquo;acceptation ou du rejet d&amp;rsquo;un événement (et pourquoi)&lt;/li>
&lt;li>&lt;code>[&amp;quot;NOTICE&amp;quot;, &amp;lt;message&amp;gt;]&lt;/code> - Message lisible par l&amp;rsquo;humain du relais&lt;/li>
&lt;/ul>
&lt;p>Le flux d&amp;rsquo;abonnement : le client envoie &lt;code>REQ&lt;/code> avec un ID d&amp;rsquo;abonnement et un filtre, le relais répond avec des messages &lt;code>EVENT&lt;/code> correspondants, puis envoie &lt;code>EOSE&lt;/code> pour signaler qu&amp;rsquo;il a rattrapé l&amp;rsquo;historique. Après &lt;code>EOSE&lt;/code>, tout nouveau message &lt;code>EVENT&lt;/code> est en temps réel. Le client envoie &lt;code>CLOSE&lt;/code> quand il a terminé.&lt;/p>
&lt;p>&lt;strong>Les filtres&lt;/strong> spécifient quels événements récupérer. Un objet filtre peut inclure : &lt;code>ids&lt;/code> (IDs d&amp;rsquo;événements), &lt;code>authors&lt;/code> (clés publiques), &lt;code>kinds&lt;/code> (types d&amp;rsquo;événements), &lt;code>#e&lt;/code>/&lt;code>#p&lt;/code>/&lt;code>#t&lt;/code> (valeurs de tags), &lt;code>since&lt;/code>/&lt;code>until&lt;/code> (horodatages), et &lt;code>limit&lt;/code> (résultats max). Toutes les conditions dans un filtre utilisent la logique AND. Vous pouvez inclure plusieurs filtres dans un &lt;code>REQ&lt;/code>, et ils se combinent avec la logique OR - utile pour récupérer différents types d&amp;rsquo;événements en un seul abonnement.&lt;/p>
&lt;h3 id="nip-19--identifiants-encodés-en-bech32">NIP-19 : Identifiants encodés en Bech32&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/fr/topics/nip-19/">NIP-19&lt;/a> définit les formats conviviaux que vous voyez partout dans Nostr : npub, nsec, note, et plus encore. Ceux-ci ne sont pas utilisés dans le protocole lui-même (qui utilise l&amp;rsquo;hex), mais ils sont essentiels pour le partage et l&amp;rsquo;affichage.&lt;/p>
&lt;p>&lt;strong>Pourquoi bech32 ?&lt;/strong> Les clés hex brutes sont sujettes aux erreurs de copie et difficiles à distinguer visuellement. L&amp;rsquo;encodage Bech32 ajoute un préfixe lisible par l&amp;rsquo;humain et une somme de contrôle. Vous pouvez immédiatement distinguer un &lt;code>npub&lt;/code> (clé publique) d&amp;rsquo;un &lt;code>nsec&lt;/code> (clé privée) ou &lt;code>note&lt;/code> (ID d&amp;rsquo;événement).&lt;/p>
&lt;p>&lt;strong>Formats de base&lt;/strong> encodent des valeurs brutes de 32 octets :&lt;/p>
&lt;ul>
&lt;li>&lt;code>npub&lt;/code> - Clé publique (votre identité, peut être partagée)&lt;/li>
&lt;li>&lt;code>nsec&lt;/code> - Clé privée (gardez-la secrète, utilisée pour signer)&lt;/li>
&lt;li>&lt;code>note&lt;/code> - ID d&amp;rsquo;événement (référence un événement spécifique)&lt;/li>
&lt;/ul>
&lt;p>Exemple : La clé publique hex &lt;code>3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d&lt;/code> devient &lt;code>npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Identifiants partageables&lt;/strong> incluent des métadonnées utilisant l&amp;rsquo;encodage TLV (Type-Length-Value) :&lt;/p>
&lt;ul>
&lt;li>&lt;code>nprofile&lt;/code> - Profil avec indications de relais (aide les clients à trouver l&amp;rsquo;utilisateur)&lt;/li>
&lt;li>&lt;code>nevent&lt;/code> - Événement avec indications de relais, clé publique de l&amp;rsquo;auteur et kind&lt;/li>
&lt;li>&lt;code>naddr&lt;/code> - Référence d&amp;rsquo;événement adressable (clé publique + kind + tag d + relais)&lt;/li>
&lt;/ul>
&lt;p>Ceux-ci résolvent un problème clé : si quelqu&amp;rsquo;un partage un ID de note, comment savez-vous quel relais l&amp;rsquo;a ? Un &lt;code>nevent&lt;/code> regroupe l&amp;rsquo;ID de l&amp;rsquo;événement avec les relais suggérés, rendant le partage plus fiable.&lt;/p>
&lt;p>&lt;strong>Important :&lt;/strong> N&amp;rsquo;utilisez jamais les formats bech32 dans le protocole lui-même. Les événements, messages de relais et réponses NIP-05 doivent utiliser l&amp;rsquo;hex. Bech32 est purement pour les interfaces humaines : affichage, copier/coller, codes QR et URLs.&lt;/p>
&lt;h2 id="releases">Sorties&lt;/h2>
&lt;p>&lt;strong>Amber v4.0.4&lt;/strong> - L&amp;rsquo;application de signature Android corrige une NullPointerException, améliore les performances sur l&amp;rsquo;écran d&amp;rsquo;activité et ajoute des traductions pour certains types d&amp;rsquo;événements. La version précédente v4.0.3 avait ajouté une interface de chiffrement/déchiffrement remaniée, l&amp;rsquo;export/import de comptes, la gestion de relais par compte, le support ping bunker et les rapports de crash. &lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.4">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>Coracle 0.6.28&lt;/strong> - Version de correction de bugs pour le client web. Correction des flux de topics, de la gestion des images quand imgproxy est désactivé, et de la création de liens pour les sources de surlignage non-lien. &lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.28">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>Flotilla v1.6.2&lt;/strong> - Le client de communautés de style Discord corrige le défilement des modales et les problèmes de style. Les versions précédentes de ce cycle avaient ajouté des badges et sons optionnels pour les notifications, un rendu de liens amélioré, le scan de codes QR pour les liens d&amp;rsquo;invitation et une configuration de portefeuille simplifiée. &lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.6.2">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>nak v0.17.2&lt;/strong> - L&amp;rsquo;outil Nostr en ligne de commande a ajouté une nouvelle commande &lt;code>nip&lt;/code> pour la consultation rapide des références NIP, plus des corrections pour la gestion des dépôts git et le traitement des événements stdin. &lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.2">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>White Noise v0.2.1&lt;/strong> - Version majeure pour l&amp;rsquo;application de messagerie chiffrée basée sur MLS ajoutant le partage d&amp;rsquo;images via Blossom, la synchronisation en arrière-plan, les notifications push, la localisation en 8 langues et la gestion des membres de groupe. &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.2.1%2B14">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>Amethyst v1.04.2&lt;/strong> - Version fonctionnelle introduisant les listes/packs de suivi, de nouveaux filtres de timeline, une galerie d&amp;rsquo;images et la compression vidéo H.265 (fichiers 50% plus petits). Migration Kotlin Multiplatform terminée. &lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.04.2">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.5&lt;/strong> - Mise à jour de la plateforme de trading P2P avec support d&amp;rsquo;expiration des ordres NIP-69 et réponses améliorées de l&amp;rsquo;historique des trades. &lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.5">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>Nosflare v8.9.26&lt;/strong> - Relais Nostr serverless construit sur l&amp;rsquo;infrastructure Cloudflare. Cette version apporte un correctif critique adressant un bug qui pouvait causer des échecs de websocket, assurant des connexions plus stables pour les utilisateurs et applications qui dépendent du relais. &lt;a href="https://github.com/Spl0itable/nosflare/releases/tag/v8.9.26">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>Noscall v0.4.1&lt;/strong> - Application d&amp;rsquo;appels audio et vidéo sécurisés basée sur Nostr. Cette version améliore l&amp;rsquo;interface popup sur la page Me et corrige plusieurs problèmes connus, résultant en une meilleure stabilité et fiabilité des appels. &lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.4.1-release">Version&lt;/a>&lt;/p>
&lt;p>&lt;strong>Gitplaza v0.25.0&lt;/strong> - Client Nostr de bureau axé sur l&amp;rsquo;activité liée à Git. Cette version introduit un filtre de kind avancé pour le flux inbox, inclut les zaps réguliers dans les filtres et simplifie le formatage du texte des onglets. Les améliorations de performance optimisent le chargement de l&amp;rsquo;arbre des commentaires, réduisent les requêtes de base de données inutiles et utilisent des branches de commentaires en cache pour un affichage plus rapide. &lt;a href="https://codeberg.org/dluvian/gitplaza/releases/tag/v0.25.0">Version&lt;/a>&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">Changements notables de code et documentation&lt;/h2>
&lt;h3 id="damus">Damus (iOS)&lt;/h3>
&lt;p>Focus sur la stabilité avec des corrections de crash et d&amp;rsquo;interface : &lt;a href="https://github.com/damus-io/damus/pull/3377">correction du saut de curseur&lt;/a> pour la vue de composition, &lt;a href="https://github.com/damus-io/damus/pull/3366">refonte de l&amp;rsquo;interface NostrDB&lt;/a> utilisant les types Swift &lt;code>~Copyable&lt;/code> pour la sécurité des transactions, &lt;a href="https://github.com/damus-io/damus/pull/3341">stabilité de l&amp;rsquo;interface de thread&lt;/a> corrigeant la réinstanciation de la barre d&amp;rsquo;actions, &lt;a href="https://github.com/damus-io/damus/pull/3346">gel de la liste de mutes&lt;/a> dû aux cycles AttributeGraph, et &lt;a href="https://github.com/damus-io/damus/pull/3334">crash de profil&lt;/a> du nettoyage de transaction inter-thread. Ajout également de &lt;a href="https://github.com/damus-io/damus/pull/3293">AGENTS.md&lt;/a> avec des directives pour les agents de codage IA.&lt;/p>
&lt;h3 id="notedeck">Notedeck (Desktop/Mobile)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1191">Stockage sécurisé des clés&lt;/a> déplace nsec vers le magasin sécurisé du système d&amp;rsquo;exploitation avec migration automatique. &lt;a href="https://github.com/damus-io/notedeck/pull/1201">Filtrage des notes futures&lt;/a> cache les événements datés de plus de 24 heures dans le futur (anti-spam). &lt;a href="https://github.com/damus-io/notedeck/pull/1183">Copie de nevent&lt;/a> inclut maintenant les indications de relais. Aussi : &lt;a href="https://github.com/damus-io/notedeck/pull/1212">ajout rapide de colonne de profil&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck/pull/1208">navigation au clavier&lt;/a>, &lt;a href="https://github.com/damus-io/notedeck/pull/1210">optimisation du chargement média&lt;/a>.&lt;/p>
&lt;h3 id="amethyst">Amethyst (Android)&lt;/h3>
&lt;p>[&lt;a href="https://nostrcompass.org/fr/topics/nip-46/">NIP-46&lt;/a> signature distante](&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1555">https://github.com/vitorpamplona/amethyst/pull/1555&lt;/a>) support pour Nostr Connect. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1586">Organisation des signets&lt;/a> avec gestion des listes publiques/privées. &lt;a href="https://github.com/vitorpamplona/amethyst/pull/1596">Correction de compatibilité strfry&lt;/a> pour les cas limites d&amp;rsquo;analyse des infos de relais.&lt;/p>
&lt;h3 id="primal">Primal (Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/788">Deep links Nostr Connect&lt;/a> pour les URLs &lt;code>nostrconnect://&lt;/code>. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/787">Connexion distante&lt;/a> via scan QR pour les connexions bunker. &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/783">Correction de condition de course de connexion&lt;/a>.&lt;/p>
&lt;h3 id="white-noise">White Noise (Messagerie chiffrée)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/890">Correction de rétention des données d&amp;rsquo;application&lt;/a> désactive la sauvegarde automatique Android pour la confidentialité. &lt;a href="https://github.com/marmot-protocol/whitenoise/pull/861">Comportement de défilement du chat&lt;/a> préserve la position lors de la lecture de l&amp;rsquo;historique.&lt;/p>
&lt;h3 id="zeus">Zeus (Portefeuille Lightning)&lt;/h3>
&lt;p>[&lt;a href="https://nostrcompass.org/fr/topics/nip-47/">NIP-47&lt;/a> paiements parallèles](&lt;a href="https://github.com/ZeusLN/zeus/pull/3407">https://github.com/ZeusLN/zeus/pull/3407&lt;/a>) pour un débit de zaps en lot amélioré.&lt;/p>
&lt;h2 id="bonnes-pratiques-pour-développeurs">Bonnes pratiques pour développeurs&lt;/h2>
&lt;p>&lt;strong>Validez les événements Auth de manière défensive&lt;/strong> - go-nostr a corrigé un &lt;a href="https://github.com/nbd-wtf/go-nostr/pull/182">panic dans la validation NIP-42&lt;/a> quand le tag relay était manquant. Vérifiez toujours les tags requis avant d&amp;rsquo;y accéder, même dans les flux d&amp;rsquo;authentification où vous attendez des événements bien formés.&lt;/p>
&lt;p>&lt;strong>Limitez le débit selon l&amp;rsquo;état d&amp;rsquo;authentification&lt;/strong> - khatru a ajouté &lt;a href="https://github.com/fiatjaf/khatru/pull/57">la limitation de débit basée sur NIP-42&lt;/a>, permettant aux relais d&amp;rsquo;appliquer différentes limites pour les connexions authentifiées vs anonymes. Considérez des limites par paliers basées sur le statut d&amp;rsquo;authentification plutôt que des restrictions générales.&lt;/p>
&lt;p>&lt;strong>Utilisez la pagination par curseur pour les listes&lt;/strong> - Blossom a &lt;a href="https://github.com/hzrd149/blossom/pull/65">remplacé la pagination basée sur la date&lt;/a> par la pagination par curseur sur l&amp;rsquo;endpoint &lt;code>/list&lt;/code>. La pagination basée sur la date échoue quand les éléments partagent des horodatages ; les curseurs fournissent une itération fiable.&lt;/p>
&lt;p>&lt;strong>Validation de schéma pour les types d&amp;rsquo;événements&lt;/strong> - Le projet &lt;a href="https://github.com/nostrability/schemata">nostrability/schemata&lt;/a> fournit des schémas JSON pour valider les événements conformes aux NIP. Considérez l&amp;rsquo;intégration de la validation de schéma en développement pour attraper les événements malformés avant qu&amp;rsquo;ils n&amp;rsquo;atteignent les relais.&lt;/p>
&lt;hr>
&lt;p>C&amp;rsquo;est tout pour cette semaine. Vous construisez quelque chose ? Vous avez des nouvelles à partager ? Vous voulez que nous couvrions votre projet ? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">Contactez-nous via DM NIP-17&lt;/a> ou trouvez-nous sur Nostr.&lt;/p></content:encoded></item></channel></rss>