Nostr Compass #20
Bienvenidos de nuevo a Nostr Compass, tu guía semanal de Nostr.
Esta semana: GitWorkshop convierte git-sobre-Nostr en una superficie de revisión de código más completa con un botón para fusionar PR en el navegador, favoritos y seguimiento de repositorios, un explorador de git eficiente en ancho de banda, comentarios de revisión en línea con kind 1111 y estado de notificaciones cifrado multi-dispositivo. Routstrd lanza un demonio local que descubre proveedores de modelos mediante anuncios Nostr de kind 38421 y les paga con Cashu. Los lanzamientos etiquetados incluyen ngit v2.4.2, Wisp v1.0.0, grain v0.5.2 y v0.5.3, Mostro Core v0.10.0 y 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 y más. Los cambios aún no publicados cubren Amethyst Nests, nostream NIP-65 y NWC, FIPS con bootstrap udp:nat basado en Nostr, observabilidad de strfry, atestaciones de propietario en Sprout y paquetes de recetas en Zap Cooking. Los proyectos recién rastreados incluyen Nostrord, Clave, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages y null–nostr. La retrospectiva de fin de mes cubre los abriles de Nostr desde 2021 hasta 2026.
Historias principales
GitWorkshop lanza fusión de PR en el navegador, seguimiento de repositorios y un explorador de git eficiente en ancho de banda
GitWorkshop, la capa de colaboración web de Dan Conway para NIP-34 git-sobre-Nostr, publicó esta semana un lanzamiento importante que acerca el flujo de trabajo mucho más a lo que los desarrolladores esperan de GitHub o GitLab, manteniendo comentarios, listas de repositorios y notificaciones dentro de eventos Nostr firmados.
La incorporación destacada es un botón largamente esperado para fusionar PR en el navegador para repositorios que usan servidores GRASP. El lanzamiento también añade favoritos y seguimiento de repositorios basados en reacciones y listas de NIP-51, con conjuntos de repositorios fijados publicados como eventos kind 10617 que apuntan a anuncios de repositorio kind 30617 mediante tags a ordenados. Las páginas de perfil ahora pueden mostrar una lista portátil de repositorios.
Un explorador de git eficiente en ancho de banda reemplaza al anterior clonado superficial en el navegador. El nuevo explorador se apoya en el protocolo cliente/servidor de git subyacente sobre el que se construye GRASP, por lo que puede manejar repositorios grandes sin forzar al navegador a descargar un pack completo. La búsqueda ahora cubre nombres de usuario y metadatos de repositorio, impulsada por NIP-50 y una implementación de relay ngit-indexer que descubre y sincroniza anuncios de repositorio en toda la red. Un flujo de creación de repositorios en el navegador completa la ruta de descubrimiento e incorporación.
Las herramientas de revisión están reconstruidas alrededor de una pestaña Files Changed, un visor de diff por parche y un conjunto de nuevas primitivas experimentales. Los comentarios de revisión de código en línea usan kind 1111, construido sobre NIP-22: cada comentario apunta a una ruta de archivo (tag f), un SHA de commit (tag c) y un rango de líneas seleccionado (tag line) para que un cliente pueda renderizar el comentario en la posición correcta dentro del diff. Un segundo nivel de primitivas experimentales queda con permisos del autor y de los mantenedores del repositorio y usa etiquetas NIP-32: renombrar el asunto de un Issue o PR después de enviarlo, añadir hashtags posteriormente, fijar un CoverNote versionado en la parte superior de un PR o Issue como resumen editable y marcar subhilos de discusión de código en línea como resueltos. Los eventos de veredicto y los bloques suggestion siguen en borrador y aún no se han lanzado.
El estado de notificaciones entre dispositivos también se sincroniza mediante Nostr, pero con un giro que preserva la privacidad. GitWorkshop genera un par de claves dedicado para notificaciones, cifra ese nsec y lo almacena dentro de un evento kind 30078. El nsec de notificaciones firma después los eventos reales de estado de notificaciones. La indirección evita que el firmador principal del usuario sea saturado con solicitudes frecuentes de cifrado y descifrado para cada acción de lectura o archivado, e impide que observadores externos vean fácilmente cuándo un usuario toca su estado de notificaciones. Un usuario puede sincronizar el estado de lectura y archivado entre dispositivos; los relays solo ven blobs cifrados.
Routstrd lanza un enrutador local para inferencia sobre Nostr
Routstrd es un nuevo demonio en TypeScript que proporciona a las herramientas locales un endpoint compatible con OpenAI y enruta cada solicitud a un proveedor competidor de Routstr. El demonio descubre proveedores a través de anuncios Nostr de kind 38421 definidos en la especificación RIP-02 de Routstr. Después puntúa a los proveedores por precio, confianza y rendimiento reciente bajo RIP-06 y envía cada solicitud a la mejor opción del momento.
El pago se realiza mediante una wallet local de Cashu gestionada por cocod y financiada con Lightning. Esto proporciona al cliente una ruta de liquidación denominada en sats manteniendo el descubrimiento de proveedores público y sin permisos a través de relays Nostr. Si un proveedor falla durante una sesión, Routstrd puede recurrir al siguiente nodo mejor clasificado. La ruta de instalación es bun install -g routstrd, seguida de routstrd onboard para la configuración de la wallet y los relays.
La organización Routstr más amplia mantiene el demonio, el software del nodo en Python (routstr-core), una interfaz de chat y las especificaciones del protocolo. Para los usuarios, el puerto local se convierte en la interfaz estable: las herramientas existentes compatibles con OpenAI apuntan a Routstrd, mientras el demonio maneja el descubrimiento de proveedores, el enrutado y el pago.
Lanzamientos etiquetados
ngit v2.4.2 corrige la detección de servidores GRASP para envíos de PR
ngit publicó v2.4.2 con una corrección para la detección de servidores GRASP de repositorio, manteniendo el envío de PR en el camino feliz cuando una propuesta usa el kind PR. Cabe señalar que ngit actualmente utiliza por defecto el kind Patch para la mayoría de los cambios a menos que sean grandes; el mantenedor está trabajando para cambiar ese valor por defecto. v2.4.1, publicada anteriormente en la semana, corrigió errores fatal durante clone y fetch cuando los datos git de un PR abierto no estaban disponibles en los servidores git especificados por el repositorio.
Wisp v1.0.0 se gradúa de beta
Wisp, un cliente Android en Kotlin y Jetpack Compose centrado en enrutado de relays, privacidad y una interfaz nativa pequeña, publicó v1.0.0 y a continuación v1.0.2. El hito 1.0.0 reúne el interruptor de denominación fiat de Normie Mode, el feed For You, la configuración de grupos basados en relays de NIP-29 y la difusión de listas de relays NIP-65 cubierta en Newsletter #19. v1.0.2 añade soporte para páginas de 16 KB de Android 15, una pestaña de escaneo de QR en el cajón lateral, un botón de descarga para los controles de vídeo en línea y correcciones de rendimiento en la lista de notificaciones.
grain v0.5.2 corrige el bloqueo de WebSocket, v0.5.3 continúa el pulido
grain, el relay en Go de 0ceanSlim, publicó v0.5.2 como un hotfix crítico para un bloqueo de WebSocket introducido en v0.5.0, seguido de v0.5.3. El bloqueo hacía que las conexiones se colgaran bajo ciertos filtros y rutas de WebSocket, por lo que los operadores en v0.5.1 o v0.5.0 deberían actualizar. grain rastrea todas las categorías principales de eventos Nostr, expone información de relay NIP-11, admite control de acceso por lista blanca/negra, límites de tasa por kind, un panel web y una biblioteca cliente Go añadida en la línea v0.5.x.
Mostro Core v0.10.0 y Mostro Mobile v1.2.5 adoptan NIP-59 gift wrap con doble clave
Mostro Core v0.10.0 añade el nuevo módulo gift-wrap de NIP-59 con identidad y claves de intercambio separadas. El código de transporte anterior utilizaba una única clave de identidad tanto para la identidad de intercambio como para el gift wrapping. v0.10.0 separa la identidad de intercambio estable de la clave de envoltura efímera, para que cada intercambio pueda usar una clave de transporte fresca mientras se preserva la identidad necesaria para el protocolo de intercambio. La integración con el demonio llega mediante Mostro PR #718, y mostro-cli PR #165 lleva la misma migración al cliente de línea de comandos.
Mostro Mobile v1.2.5 se publica junto con el trabajo del protocolo. PR #581 permite a los tomadores filtrar ofertas por la antigüedad de la cuenta del creador, dando a los usuarios una forma de evitar cuentas de creadores recién creadas en el libro de órdenes. PR #580 corrige las etiquetas de rol en los detalles de las órdenes canceladas, y PR #576 limpia los botones de cancelación cooperativa.
marmot-ts v0.5.0 estrena KeyPackages direccionables
marmot-ts publicó @internet-privacy/marmot-ts@0.5.0, el primer lanzamiento con cambios rupturistas planeado para el cliente TypeScript de Marmot. PR #68 añade soporte para KeyPackage direccionables: KeyPackageManager ahora puede manejar tanto los eventos KeyPackage heredados kind 443 como los nuevos kind 30443. El lanzamiento elimina KeyPackageStore y las clases de almacenamiento del estado de grupo, reemplazándolas con almacenes clave-valor genéricos que se pasan a KeyPackageManager y MarmotGroup. También traslada la gestión de invitaciones y grupos a MarmotClient.invites y MarmotClient.groups, por lo que quienes lo integran directamente necesitan cambios en el constructor y en el almacenamiento antes de actualizar.
CruxCoach v0.1.3 estrena copia de seguridad cifrada de datos de escalada con Nostr y Blossom
CruxCoach es una nueva aplicación Android de código abierto para escaladores en Kilter Board. La Kilter Board es un muro de entrenamiento interactivo cuyos agarres se iluminan por Bluetooth para mostrar rutas. La app se lanzó el 14 de abril y alcanzó v0.1.3 el 26 de abril.
v0.1.3 añade copia de seguridad opcional cifrada en la nube. La cuenta CruxCoach de un usuario es un par de claves Nostr, y la clave privada también funciona como entrada para la clave de cifrado de la copia local. La app cifra los datos de escalada en el dispositivo y refleja el texto cifrado en servidores de almacenamiento Blossom (blossom.primal.net y nostr.download). Las acciones de borrado remoto llaman a la ruta de limpieza de Blossom. Más allá de la copia de seguridad, CruxCoach usa firma remota NIP-46 para soporte de Amber, DMs privados NIP-17 para el contacto con el desarrollador dentro de la app, listas de relays NIP-65 para descubrimiento de relays y la biblioteca Quartz de Vitor Pamplona para la plomería Nostr. Los usuarios pueden instalarla a través de Zapstore o APKs directos de Codeberg.
Meiso v1.3.0 añade subtareas, adjuntos Blossom y etiquetado NIP-89
Meiso es un gestor de tareas minimalista en Flutter para Android que almacena tareas como datos de aplicación kind 30078 cifrados con NIP-44 en relays Nostr. v1.3.0, publicada el 6 de abril, añade subtareas con relaciones padre/hijo, enlaces entre tareas para bloqueadas/bloqueadas-por/relacionadas-con/duplicada-de, adjuntos de imagen a través de endpoints de subida HTTP Blossom y NIP-96, un tag client de aplicación recomendada NIP-89 en los eventos publicados y una herramienta de sincronización de línea de comandos en Go. v1.3.0 también corrige el comportamiento de los relays en el arranque en frío y la reutilización del cliente Amber.
NoorNote, Nostria, Nostr Calendar, nos2x-fox y lanzamientos de bibliotecas
NoorNote publicó v0.8.7, v0.8.8 y v0.8.9. Esos lanzamientos corrigen el manejo de clics en imágenes y vídeos en reposts citados, añaden soporte de lightbox para imágenes en artículos de formato largo y corrigen la pantalla de inicio en blanco en escritorio. Nostria publicó v3.1.29, v3.1.30 y v3.1.31, añadiendo compresión de imágenes en el editor de artículos, un interruptor USD para la wallet, controles de tarjetas promocionales, soporte PDF y pulido del diseño móvil.
Nostr Calendar v1.4.1 desacopla la publicación de eventos de calendario de la gestión de listas de calendarios y corrige el seguimiento de invitaciones. nos2x-fox v1.19.0 añade marcos temporales de autorización personalizados para las concesiones de firma de navegador NIP-07 en Firefox. nostr-double-ratchet v0.0.97 publica nuevos binarios. nostr-wot-sdk 0.9.0 monta NostrSessionProvider por defecto, y nostr-tools PR #535 añade soporte de análisis multi-relay para cadenas wallet-connect NIP-47.
A finales de semana, Amber v6.1.0-pre1 publicó una preversión con un mejor diseño para conectar aplicaciones nuevas, correcciones del diálogo del firmador, mejor manejo de permisos de notificación y selección de cuentas refactorizada. nostr-vpn v0.3.14 publicó una nueva compilación con artefactos para macOS Apple Silicon, Linux y Windows. Bitcredit Core v0.5.7-hotfix-1 y v0.5.8 publicaron correcciones consecutivas para un problema de validación de bloques huérfanos. Surveil v0.1.6 trajo pulido de UI móvil y una página About renovada; el proyecto se presenta más abajo.
applesauce 6.0.0 elimina las fábricas de eventos heredadas y añade análisis de URI Blossom
applesauce, el kit de herramientas Nostr en TypeScript de hzrd149, publicó un tren de lanzamientos 6.0.0 en el monorepo. applesauce-core@6.0.0 elimina la clase heredada EventFactory y los antiguos ayudantes buildEvent, modifyEvent y createEvent, empujando a quienes llaman hacia las nuevas clases de fábrica en applesauce-core/factories y applesauce-common. También añade manejo de direcciones IP y localhost al análisis de enlaces, expresiones regulares para URI Blossom BUD-10 y nuevos ayudantes observables como timeoutWithIgnore, combineLatestBy, combineLatestByIndex y combineLatestByKey.
Los lanzamientos a nivel de paquete completan las piezas específicas de Nostr. applesauce-content@6.0.0 añade nodos de URI Blossom BUD-10 para texto y Markdown, dando a los renderizadores una forma de primera clase para analizar referencias Blossom en el contenido. applesauce-actions@6.0.0 añade clases base de fábrica para listas NIP-51 que cubren relays, usuarios e ítems, haciendo la construcción de listas menos ad hoc. applesauce-wallet-connect@6.0.0 expone WalletConnect.connectURI, para que las apps puedan acceder directamente a un URI wallet-connect NIP-47 existente.
Cambios sin publicar
Amethyst avanza las salas de audio Nests con pruebas de interoperabilidad MoQ
Amethyst fusionó varios PR centrados en Nests esta semana, construyendo sobre la pila de salas de audio Media over QUIC de la semana pasada. PR #2622 añade un arnés de interoperabilidad entre clientes que ejercita el cliente MoQ de Amethyst contra la implementación web de referencia. El objetivo es detectar divergencias a nivel de cable entre Android/navegador antes de que los usuarios se topen con ellas. PR #2625 mejora el foco del hablante y el estado de conexión en picture-in-picture, mientras que PR #2620 clarifica avatares, estado de silencio y estado de habla en la cuadrícula de participantes. A finales de semana, PR #2634 corrige el padding del IME y los insets de ventana en la vista Nest a pantalla completa y PR #2635 añade filtrado por frescura basado en presencia al feed de Nests. Por separado, PR #2627 elimina la implementación C personalizada de secp256k1 de Amethyst y migra a libschnorr256k1.
nostream añade soporte para listas de relays NIP-65 y pagos NWC
nostream fusionó tres PR notables después del sprint de 53 PR del relay de la semana pasada. El soporte para metadatos de listas de relays NIP-65 llega en PR #585, para que el relay pueda indexar y servir eventos kind 10002 de listas de relays. Un procesador de pagos Nostr Wallet Connect sigue en PR #539, añadiendo una ruta de pago-por-relay. La limpieza de conexiones mejora en PR #438, que cierra un bug de conexiones muertas donde los sockets con suscripciones activas no eran recogidos, causando que los conteos de suscripciones se desviaran en instancias de larga ejecución.
FIPS añade bootstrap udp:nat basado en Nostr
FIPS, el Free Internetworking Peering System previamente cubierto en Newsletter #6 y Newsletter #10, fusionó PR #53 con bootstrap udp:nat basado en Nostr. El cambio permite a los nodos publicar anuncios Nostr, intercambiar señalización cifrada de oferta/respuesta, descubrir direcciones públicas mediante STUN, realizar UDP hole punching y entregar el socket perforado a la pila de transporte normal de FIPS. La implementación vincula las identidades de la carga útil de señalización al remitente Nostr real, consulta los relays configurados de DM y anuncios para la búsqueda de bandeja de entrada y revierte los traspasos de traversal adoptado fallidos para que los transportes UDP huérfanos no queden vivos. Este es el trabajo de anuncio Nostr y traversal NAT a seguir en el repositorio canónico, jmcorgan/fips.
strfry añade observabilidad por conexión
strfry fusionó PR #214, añadiendo observabilidad por conexión y métricas a nivel de conexión exportables a través de Prometheus. PR #204 normaliza las etiquetas de Prometheus, y PR #215 añade una sección de Community Integrations a la documentación que cubre proyectos de identidad Namecoin construidos sobre strfry.
Sprout añade Owner Attestation y soporte multi-workspace
Sprout, el cliente Nostr de Block, fusionó PR #406 implementando NIP-OA (Owner Attestation). La característica proporciona a un agente autónomo una prueba criptográfica de que una pubkey humana específica autorizó sus acciones. PR #409 añade soporte multi-workspace a la app de escritorio, PR #411 añade autocompletado #channel al compositor móvil y PR #410 cierra una ventana de carrera que podía descartar mensajes de canal activo. PR #413 introduce NIP-RS para sincronización de estado de lectura entre dispositivos, y los PR #420 y PR #422 de seguimiento conectan ese estado de lectura a las insignias de no leídos en móvil.
Zap Cooking añade paquetes de recetas, solicitudes de eliminación e inicio de sesión con bunker
Zap Cooking fusionó una semana productiva de trabajo de publicación de recetas. Las solicitudes de eliminación NIP-09 para los Recipe Packs propios de un usuario llegan en PR #367. La fiabilidad de publicación mejora mediante PR #366, que fuerza cada nueva receta al relay garden y añade una cola de reintentos para el conjunto compartido de recetas. La publicación de paquetes autorales con un clic llega en PR #365, y PR #331 añade soporte para inicio de sesión con bunker NIP-46.
Whitenoise-rs cifra su base de datos local
whitenoise-rs fusionó PR #758, añadiendo cifrado SQLCipher para la base de datos Whitenoise en disco. Eso cierra una brecha de seguridad en reposo de larga data para la pila del demonio Marmot. PR #775 expone las capacidades requeridas del grupo, PR #772 migra las operaciones de medios de grupo a MediaOps propiedad de la sesión y PR #773 extrae un contenedor SharedServices como parte del refactor de session-ops. En el lado móvil, whitenoise PR #577 habilita el reinicio automático al arranque para el servicio en primer plano de Android, corrigiendo el caso en que el demonio no volvía después de reiniciar el dispositivo.
Recién rastreados y descubiertos
Nostrord: un cliente NIP-29 construido con Kotlin Multiplatform y WASM
Nostrord es un nuevo cliente de chat grupal NIP-29 enfocado al caso de uso de reemplazo de Discord. Los grupos viven en relays Nostr con membresía, roles, moderación y control de acceso aplicados por el relay, por lo que el estado del grupo está alojado por el relay NIP-29 seleccionado. El desarrollador del cliente no controla una base de datos de aplicación separada para esos grupos. La app web se ejecuta en web.nostrord.com y está construida con Kotlin Multiplatform compilando a WebAssembly, con compilaciones nativas para Android, iOS y escritorio en desarrollo. Nostrord es beneficiario de una subvención OpenSats e interopera con los mismos relays NIP-29 usados por Flotilla, Chachi y 0xChat.
Clave lleva la firma remota NIP-46 a iOS mediante APNs
Clave es un firmador remoto para iOS en beta que firma eventos Nostr cuando la app no está abierta. La clave privada permanece en el Keychain del iPhone. Cuando un cliente envía una solicitud de firma remota NIP-46, un proxy del lado del servidor entrega una Notificación Push de Apple, despertando una Notification Service Extension durante hasta 30 segundos. Esa extensión descifra la solicitud con cifrado NIP-44, firma con la clave del Keychain y publica la respuesta. El registro del token del dispositivo usa HTTP Auth NIP-98 para prevenir el secuestro de tokens. Clave admite emparejamiento bunker:// y nostrconnect://, niveles de confianza por cliente, anulaciones por kind y ha sido probado con Nostur y noStrudel.
Treasures: geocaching descentralizado en Nostr
Treasures es una plataforma de geocaching donde los caches y los hallazgos son eventos Nostr firmados. Los creadores de caches publican eventos direccionables kind 37516 con coordenadas GPS. Los buscadores registran el descubrimiento escaneando un código QR adjunto al cache físico; el código codifica la pubkey del creador, el tag d del cache y una clave privada de verificación usada como prueba de la visita física. Los zaps NIP-57 pueden fluir desde los buscadores hacia los creadores de caches, y la app en vivo está en treasures.to.
smesh v0.5.1: relay Nostr auto-alojado, cliente y firmador en una sola pila
smesh es una pila Nostr auto-alojada escrita en Moxie, un lenguaje personalizado derivado de Go y TinyGo por mleku. La pila incluye un binario de relay nativo con soporte HTTP, WebSocket, AUTH, búsqueda y Blossom; sm3sh, un cliente web compilado a módulos ES; y una extensión de firmador de navegador con firma de navegador NIP-07 más soporte de cifrado NIP-04 y NIP-44. El trabajo reciente incluye mensajería de grupo MLS (RFC 9420) en v0.5.0, reconciliación de conjuntos negentropy para sincronización de relay y un motor de grafo Web of Trust. El código vive en la forja auto-alojada de mleku en git.smesh.lol, construida con su propia herramienta git-web. El repositorio relacionado gitea-nostr-auth es un puente OAuth2/OIDC para Gitea: los usuarios se autentican con un firmador de navegador NIP-07, el puente descubre relays a través de NIP-65 y Gitea recibe claims de identidad OIDC estándar.
Surveil: un constructor de mazos de Magic: The Gathering en Nostr
Surveil es un cliente Nostr para jugadores de Magic: The Gathering que permite a los usuarios buscar cartas, construir mazos, escanear cartas físicas en Android con OCR ML Kit en el dispositivo y compartir mazos en la red. Los mazos se publican como eventos direccionables kind 37381, y la especificación del evento de mazo está documentada en el NIP.md del proyecto. La capa social se construye a partir de primitivas Nostr estándar: comentarios en hilo NIP-22 (kind 1111) con alcance a cada mazo, reacciones NIP-25 (kind 7), datos de perfil NIP-78 (kind 30078) para los hogares de los jugadores, feeds de seguidores kind 3 y forks que llevan un tag a de vuelta al mazo original. v0.1.6 se publicó esta semana con pulido de UI móvil, mejoras del contador de vida, una página About renovada y una píldora de relay en el banner principal del mazo. La app web se ejecuta en cualquier lugar donde se sirva HTML estático, la compilación Android se distribuye a través de Zapstore, y los eventos kind 37381 también son indexados nativamente por Ditto como mazos Magic. El repositorio está en GitLab en chad.curtis/surveil.
Adiciones más pequeñas: Fundstr, Nod City, deploy-nsite-to-pages y null–nostr
Fundstr es una plataforma de financiación de creadores en Nostr que usa ecash Cashu para promesas únicas y recurrentes, con definiciones de niveles de creador y DMs de Nostr. Nod City es un sitio de reseñas de servicios Bitcoin donde las reseñas son eventos Nostr firmados y los reseñadores pueden recibir zaps; no se encontró repositorio público de código fuente. deploy-nsite-to-pages es una GitHub Action que refleja un nsite en GitHub Pages usando nsyte download, soportando nsites de raíz kind 15128 y con nombre kind 35128. null–nostr, también descubierto en los datos NIP-34 de esta semana, es el cliente cubierto en la reciente ola de OpenSats como Nurunuru; admite mensajería de grupo MLS, Amber, búsqueda NIP-50, publicaciones protegidas NIP-70, insignias ProofMode y distribución Zapstore.
FIPS no es un proyecto nuevo para Compass. Se cubrió en Newsletter #6 y Newsletter #10. La base de datos ahora apunta al repositorio canónico correcto, jmcorgan/fips, y el descubrimiento NIP-34 de esta semana también sacó a la luz mirrors relacionados de git-sobre-Nostr como fips y awesome-fips.
Trabajo de protocolo
Actualizaciones de NIP
Propuestas y discusiones recientes en el repositorio NIPs:
Fusionados esta semana:
NIP-34 git repositories: remove unused refs tag extension (PR #2325): Elimina una extensión de tag
refsde NIP-34 que estaba definida pero no se usaba. La limpieza reduce la ambigüedad de implementación para las herramientas git-sobre-Nostr.NIP-34 git repositories: remove incorrect NIP-09 claim (PR #2326): Elimina una afirmación incorrecta de que los eventos de eliminación NIP-09 pueden restablecer el estado del repositorio. La eliminación NIP-09 es una solicitud de eliminación de evento del lado del cliente, no una máquina de estados del repositorio. La corrección evita que los implementadores de NIP-34 traten las pistas de eliminación como restablecimientos autoritativos del repositorio.
Trabajo abierto e impulsado por implementaciones:
Comentarios de revisión en línea kind
1111de GitWorkshop: El kind de comentario de revisión de código en línea está documentado en elNIP.mdde GitWorkshop y ahora está en uso activo, pero aún no se ha propuesto como un NIP formal. Los eventos de veredicto (kind7321) y los bloquessuggestionsiguen en borrador y aún no se han lanzado. La retroalimentación de implementación de GitWorkshop y ngit determinará si las formas se convierten en un NIP autónomo de revisión git o permanecen como una convención de aplicación en capas sobre NIP-34.Nostr mail core y Nostrmon: Dos nuevos borradores de NIPs personalizados circularon esta semana. Nostr mail core propone kind
1301para contenido de correo RFC 2822, envuelto con NIP-59 para entrega privada y puenteado al correo legado mediante pubkeys de puente resueltas por NIP-05. Nostrmon esboza kinds de eventos direccionables para regiones, mapas, criaturas, NPCs, guardados de jugador e ítems. Ambos permanecen como borradores personalizados, no NIPs fusionados.NIP-67: EOSE Completeness Hint (PR #2317): La propuesta continúa iterando sobre añadir un marcador de completitud positivo a
EOSE, permitiendo a los relays distinguir “eventos almacenados totalmente entregados” de los casos heredados deEOSEdonde el relay no hace ninguna afirmación de completitud.
Seis abriles de Nostr
Abril ofrece una sección transversal clara del camino de desarrollo de Nostr: el documento del protocolo en 2021, el trabajo temprano de clientes en 2022, la ola de aplicaciones post-Damus en 2023, la mensajería privada y el trabajo git-sobre-Nostr en 2024, Blossom y la limpieza de listas de relays en 2025 y las subvenciones a clientes centradas en la adopción en 2026.
Abril 2021: el documento del protocolo antes del repo NIPs
Fiatjaf publicó el artículo original de Nostr, “Notes and Other Stuff Transmitted by Relays”, el 20 de noviembre de 2020. Ese primer texto ya contenía la forma central que todavía define el protocolo: los usuarios firman eventos con claves, los publican en relays y leen de los relays que eligen. El registro de commits de nostr-protocol/nostr no muestra commits entre el 1 y el 30 de abril. La actividad se sitúa a ambos lados: los commits de marzo de 2021 añadieron los primeros enlaces “nostwitter” y un filtro kind, mientras que mayo de 2021 reutilizó NIP-02 y añadió la autoría de NIPs.
En abril de 2021, no había mercado público de clientes, ni red de relays visible, ni repositorio de NIPs. El protocolo todavía vivía como un pequeño documento y unos pocos experimentos. Nostr aún no se había convertido en una red social o una plataforma de desarrollo. Todavía era un modelo relay/clave/evento esperando su primera ola sostenida de contribuidores.
Abril 2022: los NIPs aún vivían en el repo principal
Abril de 2022 fue el último mes antes de que los NIPs se movieran fuera del repo principal nostr-protocol/nostr. Como la división aún no había ocurrido, el repo dedicado nostr-protocol/nips no tenía historial de pull requests de abril. En el repo principal aterrizaron tres commits de abril: “Update readme to add nip12” el 8 de abril por goswami1999, “add kinds list” el 25 de abril por jb55 y “add js formatting to sample code” el 28 de abril por steliosrammos.
El trabajo de clientes también empezaba a tomar forma. Los commits de Damus de abril de 2022 añadieron comportamiento inicial de chatroom, manejo de perfiles e íconos de la app, mientras que nostr-tools se estaba convirtiendo en la ruta de biblioteca JavaScript para los primeros clientes y experimentos. En el lado del protocolo, las consultas de tags genéricas NIP-12 dieron a la búsqueda por tag un lugar documentado, la lista de kinds movió Nostr hacia un modelo de registro y mejores ejemplos JavaScript facilitaron a los autores de clientes y bibliotecas implementar la especificación. El 1 de mayo, fiatjaf movió los NIPs al repo dedicado. Abril de 2022 fue el último mes de la era original de un solo repo.
Abril 2023: expansión de aplicaciones post-Damus
Abril de 2023 llegó tres meses después de que Damus se lanzara en la App Store de iOS el 31 de enero de 2023, y después de que Jack Dorsey publicara su clave pública de Nostr. La red acababa de absorber su primera gran ola de crecimiento público. Clientes como Damus, Snort, Iris, Coracle y Amethyst estaban activos, mientras que los operadores de relays aprendían qué le hacía un grafo social más grande a las suposiciones sobre ancho de banda, spam, búsqueda y moderación.
Abril de 2023 tuvo un PR de NIPs fusionado: PR #456, fusionado el 17 de abril, añadiendo enlaces a entidades bech32 NIP-19 al manejo de URIs NIP-21. Los commits circundantes muestran la presión de aplicaciones detrás del trabajo del protocolo. Abril de 2023 vio trabajo en NIP-45 COUNT, marcadores de zap específicos de eventos, NIP-15 marketplace, semántica de delegación de eliminación NIP-26, metadatos de archivo NIP-94, manejo de errores de wallet-connect NIP-47 y NIP-30 custom emoji. La lista de contribuidores se había ampliado para incluir a fiatjaf, staab, pablof7z, Semisol, CodyTseng, sethforprivacy, mikedilger, AsaiToshiya, alexgleason, martindsq, frbittencourt y arkin0x.
Damus, Snort, Iris, Coracle y Amethyst ya no eran demos alrededor de una especificación; eran clientes de producción lidiando con onboarding, feeds, spam, zaps, medios y selección de relays. El trabajo de protocolo de abril de 2023 se lee como el backlog que esos clientes crearon: zaps, marketplaces, metadatos de archivos, conteo, emoji y enlaces de identidad empujaron la especificación más allá de simples notas y follows.
Abril 2024: mensajería privada, git-sobre-Nostr y soporte a mantenedores
Abril de 2024 tuvo dos fusiones de PRs de NIP. PR #1167, fusionado el 10 de abril, corrigió terminología confusa en la firma remota NIP-46, donde clientes y firmadores necesitan un lenguaje exacto para las acciones solicitadas y autorizadas. PR #1108, fusionado el 17 de abril, expandió los repositorios git NIP-34 con eventos de estado, clarificaciones, mantenedores opcionales, identificadores de repositorio y tags de descubribilidad. Ese paso hizo git-sobre-Nostr más práctico para ngit y luego GitWorkshop.
NIP-17, anteriormente NIP-24, aterrizó el 24 de abril como mensajes sellados gift-wrapped para DMs privados y chats de grupos pequeños. El trabajo de clientes y bibliotecas corría junto a esto: Amethyst, Primal, Gossip, nostr-tools, NDK y rust-nostr estaban todos activos en el mismo período.
OpenSats también anunció soporte a largo plazo para desarrolladores de Nostr en abril de 2024: PabloF7z el 9 de abril, Stuart Bowman el 12 de abril y hzrd149 el 15 de abril. Esas subvenciones movieron la financiación de subvenciones aisladas de proyectos hacia el mantenimiento sostenido de relays, bibliotecas e infraestructura de clientes.
Abril 2025: limpieza densa de NIPs y formalización de Blossom
Abril de 2025 fue el mes de protocolo más denso en esta retrospectiva, con dieciséis PRs de NIPs fusionados. El mes comenzó con PR #1846, añadiendo transacciones y direcciones blockchain a NIP-73, y PR #1865, añadiendo tags NIP-C0 a la tabla de tags estandarizados. Continuó con PR #1801 y PR #1889, ambos mejorando la guía de republicación de listas de relays kind 10002, y PR #1879, que redujo y clarificó NIP-65.
PR #1822 añadió NIP-B7 para interacción con Blossom, dando a los clientes Nostr y a los servidores Blossom una capa de coordinación canónica después de más de un año de práctica informal. PR #1051 deprecó NIP-26, la especificación de firma delegada de eventos. NIP-26 había sido difícil de implementar de forma segura y se había vuelto menos atractivo a medida que NIP-46 y otros patrones de firmador maduraban.
El resto del mes combinó limpieza con expansión de aplicaciones: PR #1882 añadió campos de política de privacidad y términos de servicio a NIP-11, PR #1849 expandió el kind 39701 de marcadores web bajo NIP-B0, PR #1891 añadió ese kind de marcador al README y PR #1895 añadió tags estandarizados NIP-B0. OpenSats anunció su Undécima Ola de Subvenciones de Nostr el 16 de abril, financiando Swae, HAMSTR, Vertex, Nostr Double Ratchet y Nostr Game Engine. Primal, Coracle, noStrudel, nostr-tools, NDK y rust-nostr también estaban publicando durante este período, por lo que la limpieza del protocolo se ubicó junto a trabajo activo de clientes y bibliotecas.
Abril 2026: endurecimiento de NIP-34, insignias y subvenciones centradas en la adopción
Abril de 2026, el mes con el que cierra este número, tuvo cuatro PRs de NIPs fusionados. El primero fue PR #2276, fusionado el 1 de abril, que cambió las insignias de perfil NIP-58 a kind 10008 y añadió conjuntos de insignias kind 30008, haciendo la asignación de insignias y las colecciones de insignias más componibles. Un segundo cambio de usabilidad git-sobre-Nostr llegó en PR #2312, fusionado el 10 de abril, añadiendo semántica de URL de clonación nostr:// a NIP-34. Las limpiezas del 25 de abril, PR #2325 y PR #2326, eliminaron lenguaje NIP-34 no utilizado e incorrecto.
Los commits relacionados afinan las mismas superficies. El 22 de abril, fiatjaf añadió una lista de servidores Blossom a NIP-51 y ajustó la edición de metadatos NIP-29 para coincidir con el comportamiento estilo PUT de Flotilla. El 26 de abril, renombró NIP-5A por claridad. Abril de 2026 se centró en hacer las superficies de protocolo ya utilizadas más fáciles de implementar y más difíciles de malinterpretar.
OpenSats anunció su Decimosexta Ola de Subvenciones de Nostr el 8 de abril, apoyando Amethyst Desktop, Nostr Mail, Nostrord, Nurunuru (null–nostr) y una renovación de HAMSTR: clientes de escritorio, mensajería tipo correo, UX de grupos, onboarding en japonés y conectividad fuera de red.
Gracias por leer Nostr Compass #20. Envíanos un DM en Nostr con pistas, correcciones o nuevos proyectos que cubrir.