Bienvenue à nouveau sur Nostr Compass, votre guide hebdomadaire sur Nostr.

Cette semaine : GitWorkshop 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 1111, et un état de notifications multi-appareils chiffré. Routstrd lance un démon local qui découvre les fournisseurs de modèles via des annonces Nostr de kind 38421 et les paie avec Cashu. Les sorties étiquetées incluent ngit v2.4.2, Wisp v1.0.0, grain v0.5.2 et v0.5.3, Mostro Core v0.10.0 et Mostro Mobile v1.2.5, marmot-ts v0.5.0, CruxCoach v0.1.3, Meiso v1.3.0, NoorNote, Nostria, Nostr Calendar, nos2x-fox, applesauce, nostr-double-ratchet et plus. Les changements non publiés couvrent Amethyst Nests, nostream NIP-65 et NWC, le bootstrap udp:nat basé sur Nostr de FIPS, l’observabilité de strfry, les attestations de propriétaire de Sprout et les packs de recettes de Zap Cooking. Les nouveaux projets suivis incluent Nostrord, Clave, Treasures, smesh, Surveil, et des ajouts plus petits. La rétrospective de fin de mois couvre les avrils de Nostr de 2021 à 2026.

Articles principaux

GitWorkshop livre la fusion de PR dans le navigateur, le suivi de dépôts et un explorateur git économe en bande passante

GitWorkshop, la couche de collaboration web de Dan Conway pour NIP-34 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’intérieur d’événements Nostr signés.

L’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 NIP-51, avec des ensembles de dépôts épinglés publiés en tant qu’événements de kind 10617 qui pointent vers des annonces de dépôts de kind 30617 via des balises a ordonnées. Les pages de profil peuvent maintenant présenter une liste portable de dépôts.

Un explorateur git économe en bande passante remplace le clone superficiel précédent dans le navigateur. Le nouvel explorateur s’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’utilisateur et les métadonnées de dépôt, alimentée par NIP-50 et une implémentation de relais ngit-indexer 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’onboarding.

L’outillage de revue est reconstruit autour d’un onglet Fichiers modifiés, d’un visualiseur de diff par patch, et d’un ensemble de nouvelles primitives expérimentales. Les commentaires de revue de code en ligne utilisent le kind 1111, construit sur NIP-22 : chaque commentaire pointe vers un chemin de fichier (balise f), un SHA de commit (balise c), et une plage de lignes sélectionnées (balise line) afin qu’un client puisse rendre le commentaire à la bonne position dans un diff. Un deuxième niveau de primitives expérimentales est autorisé par l’auteur et les mainteneurs du dépôt et utilise les étiquettes NIP-32 : renommer un sujet d’Issue ou de PR après soumission, ajouter des hashtags après soumission, épingler une CoverNote versionnée en haut d’une PR ou d’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 suggestion restent en projet et n’ont pas encore été livrés.

L’é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’intérieur d’un événement de kind 30078. La nsec des notifications signe ensuite les événements d’état de notification réels. L’indirection empêche le signataire principal de l’utilisateur d’être spammé avec des demandes fréquentes de chiffrement et déchiffrement pour chaque action de lecture ou d’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’état de lecture et d’archivage entre les appareils ; les relais ne voient que des blobs chiffrés.

Routstrd lance un routeur local pour l’inférence sur Nostr

Routstrd 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 Routstr concurrent. Le démon découvre les fournisseurs via des annonces Nostr de kind 38421 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.

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’installation est bun install -g routstrd, suivi de routstrd onboard pour la configuration du portefeuille et des relais.

L’organisation Routstr plus large maintient le démon, le logiciel de nœud Python (routstr-core), une UI de chat et les spécifications de protocole. Pour les utilisateurs, le port local devient l’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.

Sorties étiquetées

ngit v2.4.2 corrige la détection du relais GRASP pour les soumissions de PR

ngit a livré v2.4.2 avec un correctif pour la détection du serveur GRASP du dépôt, gardant la soumission de PR sur le chemin heureux lorsqu’une proposition utilise le kind PR. Notez que ngit utilise actuellement par défaut le kind Patch pour la plupart des changements sauf s’ils sont volumineux ; le mainteneur travaille à changer le défaut. v2.4.1, livré plus tôt dans la semaine, a corrigé les erreurs fatal lors du clone et du fetch quand les données git d’une PR ouverte n’étaient pas disponibles sur les serveurs git spécifiés par le dépôt.

Wisp v1.0.0 sort de la bêta

Wisp, un client Android Kotlin et Jetpack Compose axé sur le routage des relais, la vie privée et une petite UI native, a livré v1.0.0 et enchaîné avec v1.0.2. 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 NIP-29 et la diffusion de listes de relais NIP-65 couvertes dans Newsletter #19. v1.0.2 ajoute le support de taille de page 16 Ko d’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.

grain v0.5.2 corrige le blocage WebSocket, v0.5.3 poursuit le polissage

grain, le relais Go de 0ceanSlim, a coupé v0.5.2 comme correctif critique pour un blocage WebSocket introduit dans v0.5.0, puis a enchaîné avec v0.5.3. 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’événements Nostr, expose les informations de relais NIP-11, prend en charge le contrôle d’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.

Mostro Core v0.10.0 et Mostro Mobile v1.2.5 adoptent la double clé gift wrap NIP-59

Mostro Core v0.10.0 ajoute le nouveau module gift-wrap NIP-59 avec identité séparée et clés de trade. Le code de transport précédent utilisait une clé d’identité unique à la fois pour l’identité de trade et pour le gift wrapping. v0.10.0 sépare l’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’identité nécessaire au protocole de trade. L’intégration du démon arrive via Mostro PR #718, et mostro-cli PR #165 apporte la même migration au client en ligne de commande.

Mostro Mobile v1.2.5 est livré aux côtés du travail de protocole. PR #581 permet aux preneurs de filtrer les offres selon l’âge du compte du maker, donnant aux utilisateurs un moyen d’éviter les comptes maker nouvellement créés dans le carnet d’ordres. PR #580 corrige les étiquettes de rôle sur les détails des commandes annulées, et PR #576 nettoie les boutons d’annulation coopérative.

marmot-ts v0.5.0 livre des KeyPackages adressables

marmot-ts a coupé @internet-privacy/marmot-ts@0.5.0, la première sortie planifiée avec changements incompatibles pour le client TypeScript Marmot. PR #68 ajoute le support des KeyPackages adressables : KeyPackageManager peut maintenant gérer à la fois les événements KeyPackage legacy de kind 443 et les nouveaux de kind 30443. La sortie supprime KeyPackageStore et les classes de stockage d’état de groupe, en les remplaçant par des stockages clé-valeur génériques passés à KeyPackageManager et MarmotGroup. Elle déplace également la gestion des invitations et des groupes sur MarmotClient.invites et MarmotClient.groups, donc les intégrateurs directs ont besoin de changements de constructeur et de stockage avant la mise à niveau.

CruxCoach v0.1.3 livre une sauvegarde chiffrée des données d’escalade avec Nostr et Blossom

CruxCoach est une nouvelle application Android open source pour les grimpeurs de Kilter Board. La Kilter Board est un mur d’entraînement interactif dont les prises s’allument via Bluetooth pour afficher les voies. L’application a été lancée le 14 avril et a atteint v0.1.3 le 26 avril.

v0.1.3 ajoute la sauvegarde cloud chiffrée en opt-in. Le compte CruxCoach d’un utilisateur est une paire de clés Nostr, et la clé privée sert aussi d’entrée à la clé de chiffrement de sauvegarde locale. L’application chiffre les données d’escalade sur l’appareil et miroite le chiffré sur les serveurs de stockage Blossom (blossom.primal.net et nostr.download). Les actions de suppression distante appellent le chemin de nettoyage Blossom. Au-delà de la sauvegarde, CruxCoach utilise la signature à distance NIP-46 pour le support d’Amber, les DM privés NIP-17 pour le contact avec le développeur dans l’application, les listes de relais NIP-65 pour la découverte des relais, et la bibliothèque Quartz de Vitor Pamplona pour la plomberie Nostr. Les utilisateurs peuvent l’installer via Zapstore ou les APKs Codeberg directs.

Meiso v1.3.0 ajoute les sous-tâches, les pièces jointes Blossom et l’étiquetage NIP-89

Meiso est un gestionnaire de tâches Flutter minimaliste pour Android qui stocke les tâches en tant que données d’application chiffrées NIP-44 de kind 30078 sur les relais Nostr. v1.3.0, 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’upload de fichier HTTP Blossom et NIP-96, une balise client d’application recommandée NIP-89 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.

NoorNote, Nostria, Nostr Calendar, nos2x-fox, et sorties de bibliothèques

NoorNote a publié v0.8.7, v0.8.8, et v0.8.9. 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’articles long-form, et corrigent l’écran de démarrage vide sur bureau. Nostria a coupé v3.1.29, v3.1.30, et v3.1.31, ajoutant la compression d’image dans l’éditeur d’article, un bascule USD du portefeuille, des contrôles de carte promotionnelle, le support PDF et le polissage de la disposition mobile.

Nostr Calendar v1.4.1 découple la publication d’événements de calendrier de la gestion de la liste de calendriers et corrige le suivi des invitations. nos2x-fox v1.19.0 ajoute des délais d’autorisation personnalisés pour les octrois de signature de navigateur Firefox NIP-07. nostr-double-ratchet v0.0.97 livre de nouveaux binaires. nostr-wot-sdk 0.9.0 monte NostrSessionProvider par défaut, et nostr-tools PR #535 ajoute le support de l’analyse multi-relais pour les chaînes de wallet-connect NIP-47.

Tard dans la semaine, Amber v6.1.0-pre1 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. nostr-vpn v0.3.14 a coupé une nouvelle version avec des artefacts macOS Apple Silicon, Linux et Windows. Bitcredit Core v0.5.7-hotfix-1 et v0.5.8 ont livré des correctifs consécutifs pour un problème de validation de bloc orphelin. Surveil v0.1.6 a apporté un polissage de l’UI mobile et une page À propos revue ; le projet lui-même est présenté ci-dessous.

applesauce 6.0.0 supprime les usines d’événements legacy et ajoute l’analyse d’URI Blossom

applesauce, la boîte à outils Nostr TypeScript de hzrd149, a livré un train de sortie 6.0.0 à travers le monorepo. applesauce-core@6.0.0 supprime la classe legacy EventFactory et les anciens helpers buildEvent, modifyEvent et createEvent, poussant les appelants vers les nouvelles classes d’usine dans applesauce-core/factories et applesauce-common. Elle ajoute aussi la gestion des adresses IP et localhost à l’analyse de liens, les expressions régulières d’URI Blossom BUD-10, et de nouveaux helpers observables tels que timeoutWithIgnore, combineLatestBy, combineLatestByIndex et combineLatestByKey.

Les sorties au niveau des packages complètent les pièces spécifiques à Nostr. applesauce-content@6.0.0 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’analyser les références Blossom dans le contenu. applesauce-actions@6.0.0 ajoute des classes d’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. applesauce-wallet-connect@6.0.0 expose WalletConnect.connectURI, afin que les applications puissent accéder directement à un URI wallet-connect NIP-47 existant.

Changements non publiés

Amethyst fait progresser les salles audio Nests avec des tests d’interopérabilité MoQ

Amethyst a fusionné plusieurs PRs axées sur Nests cette semaine, en s’appuyant sur la pile de salle audio Media over QUIC de la semaine dernière. PR #2622 ajoute un harnais d’interopérabilité inter-clients qui exerce le client MoQ Amethyst contre l’implémentation web de référence. L’objectif est d’attraper les divergences au niveau du fil entre Android/navigateur avant que les utilisateurs ne les rencontrent. PR #2625 améliore le focus sur l’orateur en picture-in-picture et le statut de connexion, tandis que PR #2620 clarifie les avatars, l’état de mise en sourdine et l’état de parole dans la grille des participants. Tard dans la semaine, PR #2634 corrige le rembourrage IME et les encarts de fenêtre dans la vue Nest en plein écran et PR #2635 ajoute un filtrage de fraîcheur basé sur la présence au fil Nests. Séparément, PR #2627 supprime l’implémentation C secp256k1 personnalisée d’Amethyst et migre vers libschnorr256k1.

nostream ajoute le support de la liste de relais NIP-65 et les paiements NWC

nostream 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 NIP-65 arrive dans PR #585, afin que le relais puisse indexer et servir les événements de liste de relais de kind 10002. Un processeur de paiements Nostr Wallet Connect suit dans PR #539, ajoutant un chemin de paiement au relais. Le nettoyage des connexions s’améliore dans PR #438, qui ferme un bug de connexion morte où les sockets avec des abonnements actifs n’étaient pas récupérés, causant une dérive des comptages d’abonnements sur les instances de longue durée.

FIPS ajoute le bootstrap udp:nat basé sur Nostr

FIPS, le Free Internetworking Peering System précédemment couvert dans Newsletter #6 et Newsletter #10, a fusionné PR #53 avec le bootstrap udp:nat basé sur Nostr. Le changement permet aux nœuds de publier des annonces Nostr, d’échanger une signalisation offer/answer chiffrée, de découvrir les adresses publiques via STUN, d’effectuer un UDP hole punching, et de passer le socket poinçonné dans la pile de transport FIPS normale. L’implémentation lie les identités de charge utile de signal à l’expéditeur Nostr réel, interroge les relais DM et d’annonce configurés pour la recherche d’inbox, et annule les transferts de traversée adoptés en échec afin que les transports UDP orphelins ne restent pas actifs. C’est le travail d’annonce Nostr et de traversée NAT à suivre dans le dépôt canonique, jmcorgan/fips.

strfry ajoute une observabilité par connexion

strfry a fusionné PR #214, ajoutant une observabilité par connexion et des métriques au niveau de la connexion exportables via Prometheus. PR #204 normalise les étiquettes Prometheus, et PR #215 ajoute une section Intégrations Communautaires à la documentation couvrant les projets d’identité Namecoin construits sur strfry.

Sprout ajoute l’attestation de propriétaire et le support multi-espaces de travail

Sprout, le client Nostr de Block, a fusionné PR #406 implémentant NIP-OA (Owner Attestation). La fonctionnalité donne à un agent autonome une preuve cryptographique qu’un pubkey humain spécifique a autorisé ses actions. PR #409 ajoute le support multi-espaces de travail à l’application de bureau, PR #411 ajoute l’autocomplétion #channel à la composition mobile, et PR #410 ferme une fenêtre de course qui pouvait laisser tomber les messages de canal actif. PR #413 introduit NIP-RS pour la synchronisation d’état de lecture entre appareils, et les suivi PR #420 et PR #422 câblent cet état de lecture dans les badges non lus mobiles.

Zap Cooking ajoute les packs de recettes, les demandes de suppression et la connexion bunker

Zap Cooking a fusionné une semaine productive de travail de publication de recettes. Les demandes de suppression NIP-09 pour les propres Recipe Packs d’un utilisateur arrivent dans PR #367. La fiabilité de publication s’améliore via PR #366, qui force chaque nouvelle recette sur le relais garden et ajoute une file d’attente de retry pour l’ensemble de recettes partagé. La publication en un clic de packs d’auteur arrive dans PR #365, et PR #331 ajoute le support de connexion bunker NIP-46.

Whitenoise-rs chiffre sa base de données locale

whitenoise-rs a fusionné PR #758, 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. PR #775 expose les capacités requises du groupe, PR #772 migre les opérations média de groupe vers des MediaOps détenus par session, et PR #773 extrait un support SharedServices dans le cadre du refactor des opérations de session. Côté mobile, whitenoise PR #577 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’appareil.

Nouvellement suivis et découverts

Nostrord : un client NIP-29 construit avec Kotlin Multiplatform et WASM

Nostrord est un nouveau client de chat de groupe NIP-29 ciblant le cas d’usage de remplacement de Discord. Les groupes vivent sur les relais Nostr avec l’adhésion, les rôles, la modération et le contrôle d’accès appliqués par le relais, donc l’é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’application séparée pour ces groupes. L’application web fonctionne sur web.nostrord.com 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’une subvention OpenSats et interopère avec les mêmes relais NIP-29 utilisés par Flotilla, Chachi et 0xChat.

Clave apporte la signature à distance NIP-46 sur iOS via APNs

Clave est un signataire à distance iOS en bêta qui signe les événements Nostr quand l’application n’est pas ouverte. La clé privée reste dans le trousseau iPhone. Quand un client envoie une demande de signature à distance NIP-46, un proxy côté serveur délivre une Apple Push Notification, réveillant une Notification Service Extension pendant jusqu’à 30 secondes. Cette extension déchiffre la requête avec le chiffrement NIP-44, signe avec la clé du trousseau et publie la réponse. L’enregistrement du token de l’appareil utilise l’auth HTTP NIP-98 pour empêcher le détournement de token. Clave prend en charge l’appairage bunker:// et nostrconnect://, les niveaux de confiance par client, les remplacements par kind, et a été testé avec Nostur et noStrudel.

Treasures : géocaching décentralisé sur Nostr

Treasures 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 37516 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 d de la cache et une clé privée de vérification utilisée comme preuve de la visite physique. Les zaps NIP-57 peuvent circuler des découvreurs aux créateurs de caches, et l’application en direct est sur treasures.to.

smesh v0.5.1 : relais Nostr, client et signataire auto-hébergés en un seul stack

smesh 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 ; sm3sh, 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’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 à git.smesh.lol, construite avec son propre outil git-web. Le dépôt connexe gitea-nostr-auth est un pont OAuth2/OIDC pour Gitea : les utilisateurs s’authentifient avec un signataire de navigateur NIP-07, le pont découvre les relais via NIP-65, et Gitea reçoit des revendications d’identité OIDC standard.

Surveil : un constructeur de deck Magic: The Gathering sur Nostr

Surveil 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’OCR ML Kit sur l’appareil, et de partager des decks à travers le réseau. Les decks sont publiés en tant qu’événements adressables de kind 37381, et la spécification de l’événement de deck est documentée dans le NIP.md du projet. La couche sociale est construite à partir de primitives Nostr standard : commentaires en fil NIP-22 (kind 1111) portés sur chaque deck, réactions NIP-25 (kind 7), données de profil NIP-78 (kind 30078) pour les accueils de joueurs, fils de suivi de kind 3, et forks qui portent une balise a de retour au deck original. v0.1.6 a été livré cette semaine avec un polissage de l’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’application web fonctionne partout où du HTML statique est servi, la version Android est livrée via Zapstore, et les événements de kind 37381 sont également indexés nativement par Ditto comme decks Magic. Le dépôt est sur GitLab à chad.curtis/surveil.

Ajouts plus petits : Fundstr, Nod City, deploy-nsite-to-pages et null–nostr

Fundstr est une plateforme de financement de créateurs sur Nostr utilisant l’ecash Cashu pour les promesses uniques et récurrentes, avec des définitions de paliers de créateurs et des DMs Nostr. Nod City est un site d’é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’a été trouvé. deploy-nsite-to-pages est une GitHub Action qui miroite un nsite vers GitHub Pages en utilisant nsyte download, prenant en charge les nsites racine de kind 15128 et nommés de kind 35128. null–nostr, é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.

FIPS n’est pas un nouveau projet pour Compass. Il a été couvert dans Newsletter #6 et Newsletter #10. La base de données pointe maintenant vers le bon dépôt canonique, jmcorgan/fips, et la découverte NIP-34 de cette semaine a également fait surface des miroirs git-over-Nostr connexes tels que fips et awesome-fips.

Travail de protocole

Mises à jour NIP

Propositions et discussions récentes dans le dépôt NIPs :

Fusionnées cette semaine :

  • NIP-34 dépôts git : suppression de l’extension de balise refs inutilisée (PR #2325) : Supprime une extension de balise refs de NIP-34 qui était définie mais inutilisée. Le nettoyage réduit l’ambiguïté d’implémentation pour les outils git-over-Nostr.

  • NIP-34 dépôts git : suppression de la revendication NIP-09 incorrecte (PR #2326) : Supprime une revendication incorrecte selon laquelle les événements de suppression NIP-09 peuvent réinitialiser l’état du dépôt. La suppression NIP-09 est une demande de suppression d’événement côté client, pas une machine d’é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é.

Travail ouvert et piloté par l’implémentation :

  • Commentaires de revue en ligne de kind 1111 de GitWorkshop : Le kind de commentaire de revue de code en ligne est documenté dans le NIP.md de GitWorkshop et est maintenant activement utilisé, mais il n’a pas encore été proposé comme NIP formel. Les événements Verdict (kind 7321) et les blocs suggestion restent en projet et n’ont pas encore été livrés. Les retours d’implémentation de GitWorkshop et ngit détermineront si les formes deviennent un NIP autonome de revue git ou restent une convention d’application superposée sur NIP-34.

  • Noyau Nostr mail et Nostrmon : Deux nouveaux projets de NIPs personnalisés ont circulé cette semaine. Nostr mail core propose le kind 1301 pour le contenu d’e-mail RFC 2822, enveloppé avec NIP-59 pour la livraison privée et ponté vers l’e-mail legacy via des pubkeys de pont résolues par NIP-05. Nostrmon esquisse des kinds d’é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.

  • NIP-67 : Indice de complétude EOSE (PR #2317) : La proposition continue d’itérer sur l’ajout d’un marqueur de complétude positif à EOSE, 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.

Six avrils Nostr

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’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’adoption en 2026.

Avril 2021 : le document de protocole avant le dépôt NIPs

Fiatjaf a publié l’article Nostr original, « Notes and Other Stuff Transmitted by Relays », 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’ils choisissent. Le journal de commits nostr-protocol/nostr ne montre aucun commit entre le 1er et le 30 avril. L’activité se trouve de chaque côté : les commits de mars 2021 ont ajouté les premiers liens « nostwitter » et un filtre kind, tandis que mai 2021 a réutilisé NIP-02 et ajouté la paternité des NIP.

En avril 2021, il n’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’était pas encore devenu un réseau social ou une plateforme de développement. C’était encore un modèle relais/clé/événement attendant sa première vague de contributeurs soutenue.

Avril 2022 : les NIPs vivaient encore dans le dépôt principal

Avril 2022 fut le dernier mois avant que les NIPs ne sortent du dépôt principal nostr-protocol/nostr. Comme la scission n’avait pas encore eu lieu, le dépôt dédié nostr-protocol/nips n’avait pas d’historique de pull requests en avril. Dans le dépôt principal, trois commits d’avril ont atterri : « Update readme to add nip12 » le 8 avril par goswami1999, « add kinds list » le 25 avril par jb55, et « add js formatting to sample code » le 28 avril par steliosrammos.

Le travail client commençait aussi à prendre forme. Les commits Damus d’avril 2022 ont ajouté le comportement précoce des salles de chat, la gestion des profils et les icônes d’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’ère originale mono-dépôt.

Avril 2023 : expansion des applications post-Damus

Avril 2023 est arrivé trois mois après que Damus a lancé sur l’App Store iOS le 31 janvier 2023, et après que Jack Dorsey ait publié sa clé publique Nostr. Le réseau venait d’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’un graphe social plus grand faisait aux hypothèses de bande passante, spam, recherche et modération.

Avril 2023 a eu une PR NIPs fusionnée : PR #456, fusionnée le 17 avril, ajoutant des liens d’entités bech32 NIP-19 à la gestion d’URI NIP-21. Les commits environnants montrent la pression d’application derrière le travail de protocole. Avril 2023 a vu des travaux sur NIP-45 COUNT, les marqueurs de zap spécifiques à l’événement, NIP-15 marketplace, 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 NIP-30 emoji personnalisé. La liste des contributeurs s’était élargie pour inclure fiatjaf, staab, pablof7z, Semisol, CodyTseng, sethforprivacy, mikedilger, AsaiToshiya, alexgleason, martindsq, frbittencourt et arkin0x.

Damus, Snort, Iris, Coracle et Amethyst n’étaient plus des démos autour d’une spécification ; c’étaient des clients de production traitant l’onboarding, les fils, le spam, les zaps, les médias et la sélection de relais. Le travail de protocole d’avril 2023 se lit comme le backlog que ces clients ont créé : zaps, marketplaces, métadonnées de fichier, comptage, emoji et liens d’identité ont tous poussé la spécification au-delà des simples notes et suivis.

Avril 2024 : messagerie privée, git-over-Nostr et support des mainteneurs

Avril 2024 a eu deux fusions de PR NIP. PR #1167, fusionnée le 10 avril, a corrigé une terminologie confuse dans la signature à distance NIP-46, où les clients et les signataires ont besoin d’un langage exact pour les actions demandées et autorisées. PR #1108, fusionnée le 17 avril, a étendu les dépôts git NIP-34 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.

NIP-17, 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.

OpenSats a également annoncé un support à long terme pour les développeurs Nostr en avril 2024 : PabloF7z le 9 avril, Stuart Bowman le 12 avril, et hzrd149 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.

Avril 2025 : nettoyage dense des NIPs et formalisation de Blossom

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 PR #1846, ajoutant les transactions et adresses blockchain à NIP-73, et PR #1865, ajoutant les balises NIP-C0 à la table des balises standardisées. Il a continué avec PR #1801 et PR #1889, améliorant tous deux les directives de republication de liste de relais de kind 10002, et PR #1879, qui a rétréci et clarifié NIP-65.

PR #1822 a ajouté NIP-B7 pour l’interaction Blossom, donnant aux clients Nostr et aux serveurs Blossom une couche de coordination canonique après plus d’un an de pratique informelle. PR #1051 a déprécié NIP-26, la spécification de signature d’é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’autres modèles de signataire mûrissaient.

Le reste du mois a combiné nettoyage et expansion d’application : PR #1882 a ajouté des champs politique de confidentialité et conditions d’utilisation à NIP-11, PR #1849 a étendu les signets web de kind 39701 sous NIP-B0, PR #1891 a ajouté ce kind de signet au README, et PR #1895 a ajouté les balises standardisées NIP-B0. OpenSats a annoncé sa Onzième Vague de Subventions Nostr 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.

Avril 2026 : durcissement de NIP-34, badges et subventions axées sur l’adoption

Avril 2026, le mois où ce numéro se termine, a eu quatre PRs NIPs fusionnées. La première fut PR #2276, fusionnée le 1er avril, qui a changé les badges de profil NIP-58 au kind 10008 et ajouté les ensembles de badges de kind 30008, rendant l’attribution de badges et les collections de badges plus composables. Un deuxième changement de convivialité git-over-Nostr est arrivé dans PR #2312, fusionnée le 10 avril, ajoutant la sémantique d’URL de clone nostr:// à NIP-34. Les nettoyages du 25 avril, PR #2325 et PR #2326, ont supprimé un langage inutilisé et incorrect de NIP-34.

Les commits connexes affinent les mêmes surfaces. Le 22 avril, fiatjaf a ajouté une liste de serveurs Blossom à NIP-51 et ajusté l’é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’est concentré sur rendre les surfaces de protocole déjà utilisées plus faciles à implémenter et plus difficiles à mal interpréter.

OpenSats a annoncé sa Seizième Vague de Subventions Nostr le 8 avril, soutenant Amethyst Desktop, Nostr Mail, Nostrord, Nurunuru (null–nostr) et un renouvellement HAMSTR : clients de bureau, messagerie de type e-mail, UX de groupe, onboarding japonais et connectivité hors réseau.


Merci d’avoir lu Nostr Compass #20. DM-nous sur Nostr avec des conseils, corrections ou nouveaux projets à couvrir.