Nostr Compass #20
Bem-vindo de volta ao Nostr Compass, seu guia semanal para o Nostr.
Esta semana: GitWorkshop transforma git-over-Nostr em uma superfície de revisão de código mais completa com um botão de merge de PR no navegador, Stars e seguimento de repositórios, um explorador de git eficiente em largura de banda, comentários de revisão inline kind 1111 e estado de notificação criptografado multi-dispositivo. Routstrd lança um daemon local que descobre provedores de modelos através de anúncios Nostr kind 38421 e os paga com Cashu. Releases com tag incluem ngit v2.4.2, Wisp v1.0.0, grain v0.5.2 e v0.5.3, Mostro Core v0.10.0 e 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 e mais. Mudanças não lançadas cobrem Amethyst Nests, nostream NIP-65 e NWC, bootstrap udp:nat baseado em Nostr no FIPS, observabilidade do strfry, atestados de proprietário do Sprout e pacotes de receitas do Zap Cooking. Projetos recém-rastreados incluem Nostrord, Clave, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages e null–nostr. A retrospectiva de fim de mês cobre os Abris do Nostr de 2021 a 2026.
Matérias principais
GitWorkshop lança merge de PR no navegador, seguimento de repositórios e um explorador de git eficiente em largura de banda
GitWorkshop, a camada de colaboração baseada na web de Dan Conway para NIP-34 git-over-Nostr, lançou uma release importante esta semana que aproxima muito o fluxo de trabalho do que os desenvolvedores esperam do GitHub ou GitLab, mantendo comentários, listas de repositórios e notificações dentro de eventos Nostr assinados.
A adição em destaque é um botão de merge de PR no navegador há muito aguardado para repositórios que usam relays GRASP. A release também adiciona Stars e seguimento de repositórios construídos sobre reações e listas NIP-51, com conjuntos de repositórios fixados publicados como eventos kind 10617 que apontam para anúncios de repositório kind 30617 através de tags a ordenadas. Páginas de perfil agora podem apresentar uma lista portátil de repositórios.
Um explorador de git eficiente em largura de banda substitui o shallow clone no navegador anterior. O novo explorador se apoia no protocolo cliente/servidor git subjacente sobre o qual o GRASP é construído, para que possa lidar com repositórios grandes sem forçar o navegador a buscar um pack completo. A busca agora cobre nomes de usuário e metadados de repositório, alimentada pelo NIP-50 e uma implementação de relay ngit-indexer que descobre e sincroniza anúncios de repositório pela rede. Um fluxo de criação de repositório no navegador completa o caminho de descoberta e onboarding.
As ferramentas de revisão são reconstruídas em torno de uma aba Files Changed, um visualizador de diff por patch e um conjunto de novas primitivas experimentais. Comentários de revisão de código inline usam kind 1111, construído sobre o NIP-22: cada comentário aponta para um caminho de arquivo (tag f), um SHA de commit (tag c) e um intervalo de linhas selecionado (tag line) para que um cliente possa renderizar o comentário na posição correta em um diff. Um segundo nível de primitivas experimentais é permissionado por autor e mantenedores de repositório e usa labels NIP-32: renomear o assunto de uma Issue ou PR após a submissão, adicionar hashtags após a submissão, fixar uma CoverNote versionada no topo de um PR ou Issue para um resumo editável e marcar subthreads de discussão de código inline como resolvidos. Eventos de veredito e blocos suggestion permanecem como rascunho e ainda não foram lançados.
O estado de notificação entre dispositivos também é sincronizado através do Nostr, mas com uma reviravolta de preservação de privacidade. O GitWorkshop gera um par de chaves dedicado a notificações, criptografa esse nsec e o armazena dentro de um evento kind 30078. O nsec de notificações então assina os eventos reais de estado de notificação. A indireção evita que o signer principal do usuário seja bombardeado com requisições frequentes de criptografia e descriptografia para cada ação de leitura ou arquivamento, e impede que observadores externos vejam facilmente quando um usuário toca em seu estado de notificação. Um usuário pode sincronizar o estado de leitura e arquivamento entre dispositivos; os relays só veem blobs criptografados.
Routstrd lança um roteador local para inferência sobre Nostr
Routstrd é um novo daemon TypeScript que dá às ferramentas locais um endpoint compatível com OpenAI e roteia cada requisição para um provedor Routstr concorrente. O daemon descobre provedores através de anúncios Nostr kind 38421 definidos na especificação RIP-02 do Routstr. Ele então pontua provedores por preço, confiança e desempenho recente sob RIP-06 e envia cada requisição para a melhor opção atual.
O pagamento é feito através de uma carteira Cashu local gerenciada pelo cocod e financiada com Lightning. Isso dá ao cliente um caminho de liquidação denominado em sats, mantendo a descoberta de provedores pública e sem permissão através de relays Nostr. Se um provedor falhar durante uma sessão, o Routstrd pode recorrer ao próximo nó classificado. O caminho de instalação é bun install -g routstrd, seguido por routstrd onboard para configuração de carteira e relay.
A organização Routstr mais ampla mantém o daemon, o software de nó Python (routstr-core), uma UI de chat e especificações de protocolo. Para os usuários, a porta local se torna a interface estável: ferramentas existentes compatíveis com OpenAI apontam para o Routstrd, enquanto o daemon lida com descoberta de provedores, roteamento e pagamento.
Releases com tag
ngit v2.4.2 corrige detecção de relay GRASP para submissões de PR
ngit lançou v2.4.2 com uma correção para detecção de servidor GRASP do repositório, mantendo a submissão de PR no caminho feliz quando uma proposta usa o kind PR. Note que o ngit atualmente usa por padrão o kind Patch para a maioria das mudanças, a menos que sejam grandes; o mantenedor está trabalhando para mudar o padrão. v2.4.1, lançada mais cedo na semana, corrigiu erros fatal durante clone e fetch quando os dados git de um PR aberto não estavam disponíveis nos servidores git especificados do repositório.
Wisp v1.0.0 sai do beta
Wisp, um cliente Android em Kotlin e Jetpack Compose focado em roteamento de relay, privacidade e uma pequena UI nativa, lançou v1.0.0 e o seguiu com v1.0.2. O marco 1.0.0 reúne o toggle de denominação em fiat Normie Mode, o feed For You, configuração de grupo baseada em relay NIP-29 e transmissão de lista de relays NIP-65 cobertos no Newsletter #19. v1.0.2 adiciona suporte a tamanho de página de 16 KB do Android 15, uma aba de escaneamento de QR na drawer sheet, um botão de download para controles de vídeo inline e correções de desempenho da lista de notificações.
grain v0.5.2 corrige travamento de WebSocket, v0.5.3 continua a polir
grain, o relay Go do 0ceanSlim, lançou v0.5.2 como um hotfix crítico para um travamento de WebSocket introduzido em v0.5.0, e o seguiu com v0.5.3. O travamento fazia conexões pendurarem sob alguns caminhos de filtro e WebSocket, então operadores em v0.5.1 ou v0.5.0 devem atualizar. O grain rastreia todas as principais categorias de eventos Nostr, expõe informações de relay NIP-11, suporta controle de acesso whitelist/blacklist, limites de taxa por kind, um painel web e uma biblioteca cliente Go adicionada na linha v0.5.x.
Mostro Core v0.10.0 e Mostro Mobile v1.2.5 adotam gift wrap de chave dupla NIP-59
Mostro Core v0.10.0 adiciona o novo módulo gift-wrap NIP-59 com chaves de identidade e trade separadas. Código de transporte anterior usava uma única chave de identidade tanto para identidade de trade quanto para gift wrapping. v0.10.0 separa a identidade de trade estável da chave de wrapping efêmera, então cada trade pode usar uma nova chave de transporte enquanto preserva a identidade necessária para o protocolo de trade. A integração com o daemon chega através do Mostro PR #718, e o mostro-cli PR #165 traz a mesma migração para o cliente de linha de comando.
Mostro Mobile v1.2.5 sai junto com o trabalho de protocolo. PR #581 permite que takers filtrem ofertas pela idade da conta do maker, dando aos usuários uma maneira de evitar contas maker recém-criadas no order book. PR #580 corrige labels de papel em detalhes de ordens canceladas, e PR #576 limpa botões de cancelamento cooperativo.
marmot-ts v0.5.0 lança KeyPackages endereçáveis
marmot-ts lançou @internet-privacy/marmot-ts@0.5.0, a primeira release com quebra planejada para o cliente TypeScript do Marmot. PR #68 adiciona suporte a KeyPackage endereçáveis: KeyPackageManager agora pode lidar tanto com eventos KeyPackage legacy kind 443 quanto com os novos kind 30443. A release remove KeyPackageStore e as classes de armazenamento de estado de grupo, substituindo-as por armazenamentos genéricos de chave-valor passados para KeyPackageManager e MarmotGroup. Também move o gerenciamento de convites e grupos para MarmotClient.invites e MarmotClient.groups, então embedders diretos precisam de mudanças de construtor e armazenamento antes de atualizar.
CruxCoach v0.1.3 lança backup criptografado de dados de escalada com Nostr e Blossom
CruxCoach é um novo app Android open-source para escaladores de Kilter Board. A Kilter Board é uma parede de treinamento interativa cujos holds acendem via Bluetooth para exibir rotas. O app foi lançado em 14 de abril e chegou à v0.1.3 em 26 de abril.
v0.1.3 adiciona backup em nuvem criptografado opcional. A conta CruxCoach de um usuário é um par de chaves Nostr, e a chave privada dobra como entrada para a chave de criptografia de backup local. O app criptografa dados de escalada no dispositivo e espelha o ciphertext para servidores de armazenamento Blossom (blossom.primal.net e nostr.download). Ações de exclusão remota chamam o caminho de limpeza Blossom. Além do backup, o CruxCoach usa assinatura remota NIP-46 para suporte a Amber, DMs privadas NIP-17 para contato in-app com o desenvolvedor, listas de relays NIP-65 para descoberta de relays e a biblioteca Quartz de Vitor Pamplona para infraestrutura Nostr. Os usuários podem instalá-lo através do Zapstore ou APKs diretos do Codeberg.
Meiso v1.3.0 adiciona subtarefas, anexos Blossom e tag NIP-89
Meiso é um gerenciador de tarefas Flutter minimalista para Android que armazena tarefas como dados de aplicação kind 30078 criptografados NIP-44 em relays Nostr. v1.3.0, lançada em 6 de abril, adiciona subtarefas com relacionamentos pai/filho, links de tarefas para blocks/blocked-by/related-to/duplicate-of, anexos de imagem através do Blossom e endpoints de upload de arquivo HTTP NIP-96, uma tag client de aplicação recomendada NIP-89 em eventos publicados e uma ferramenta de sincronização de linha de comando em Go. v1.3.0 também corrige comportamento de relay em cold-start e reutilização de cliente Amber.
NoorNote, Nostria, Nostr Calendar, nos2x-fox e releases de bibliotecas
NoorNote publicou v0.8.7, v0.8.8 e v0.8.9. Essas releases corrigem o tratamento de cliques em imagens e vídeos em reposts citados, adicionam suporte a lightbox para imagens de artigos long-form e corrigem a tela de inicialização em branco no desktop. Nostria lançou v3.1.29, v3.1.30 e v3.1.31, adicionando compressão de imagens no editor de artigos, um toggle USD para carteira, controles de card promocional, suporte a PDF e polimento de layout mobile.
Nostr Calendar v1.4.1 desacopla a publicação de eventos de calendário do gerenciamento de listas de calendários e corrige o rastreamento de convites. nos2x-fox v1.19.0 adiciona prazos de autorização personalizados para grants de assinatura no navegador NIP-07 no Firefox. nostr-double-ratchet v0.0.97 lança novos binários. nostr-wot-sdk 0.9.0 monta NostrSessionProvider por padrão, e nostr-tools PR #535 adiciona suporte a parsing multi-relay para strings de wallet-connect NIP-47.
No final da semana, Amber v6.1.0-pre1 lançou um pre-release com um melhor layout de conexão a novos apps, correções no diálogo do signer, tratamento aprimorado de permissões de notificação e seleção de conta refatorada. nostr-vpn v0.3.14 lançou uma nova build com artefatos para macOS Apple Silicon, Linux e Windows. Bitcredit Core v0.5.7-hotfix-1 e v0.5.8 lançaram correções consecutivas para um problema de validação de bloco órfão. Surveil v0.1.6 trouxe polimento de UI mobile e uma página About reformulada; o projeto em si é apresentado abaixo.
applesauce 6.0.0 remove factories de eventos legacy e adiciona parsing de URI Blossom
applesauce, o toolkit Nostr TypeScript do hzrd149, lançou um trem de releases 6.0.0 em todo o monorepo. applesauce-core@6.0.0 remove a classe legacy EventFactory e os antigos helpers buildEvent, modifyEvent e createEvent, empurrando os chamadores para as novas classes factory em applesauce-core/factories e applesauce-common. Também adiciona tratamento de endereços IP e localhost ao parsing de links, expressões regulares de URI Blossom BUD-10 e novos helpers observáveis como timeoutWithIgnore, combineLatestBy, combineLatestByIndex e combineLatestByKey.
Releases em nível de pacote completam as peças específicas do Nostr. applesauce-content@6.0.0 adiciona nós de URI Blossom BUD-10 para texto e Markdown, dando aos renderizadores uma forma nativa de fazer parsing de referências Blossom em conteúdo. applesauce-actions@6.0.0 adiciona classes factory base para listas NIP-51 cobrindo relays, usuários e itens, tornando a construção de listas menos ad hoc. applesauce-wallet-connect@6.0.0 expõe WalletConnect.connectURI, para que os apps possam acessar diretamente uma URI wallet-connect NIP-47 existente.
Mudanças não lançadas
Amethyst avança com salas de áudio Nests com testes de interoperabilidade MoQ
Amethyst fez merge de vários PRs focados em Nests esta semana, construindo sobre a stack de sala de áudio Media over QUIC da semana passada. PR #2622 adiciona um harness de interoperabilidade cross-client que exercita o cliente MoQ do Amethyst contra a implementação web de referência. O objetivo é capturar divergências no nível do fio entre Android/navegador antes que os usuários as encontrem. PR #2625 melhora o foco do falante em picture-in-picture e o status da conexão, enquanto PR #2620 esclarece avatares, estado de mudo e estado de fala na grade de participantes. No final da semana, PR #2634 corrige padding de IME e window insets na visão full-screen de Nest e PR #2635 adiciona filtragem de frescor baseada em presença ao feed Nests. Separadamente, PR #2627 remove a implementação C personalizada de secp256k1 do Amethyst e migra para libschnorr256k1.
nostream adiciona suporte a lista de relays NIP-65 e pagamentos NWC
nostream fez merge de três PRs notáveis após o sprint de 53 PRs de relay da semana passada. Suporte a metadados de lista de relays NIP-65 chega no PR #585, para que o relay possa indexar e servir eventos de lista de relays kind 10002. Um processador de pagamentos Nostr Wallet Connect segue no PR #539, adicionando um caminho pay-to-relay. A limpeza de conexão melhora no PR #438, que fecha um bug de conexão morta onde sockets com subscriptions ativas não estavam sendo colhidos, causando drift nos contadores de subscription em instâncias de longa duração.
FIPS adiciona bootstrap udp:nat baseado em Nostr
FIPS, o Free Internetworking Peering System previamente coberto em Newsletter #6 e Newsletter #10, fez merge do PR #53 com bootstrap udp:nat baseado em Nostr. A mudança permite que nós publiquem anúncios Nostr, troquem sinalização criptografada de offer/answer, descubram endereços públicos através de STUN, executem UDP hole punching e passem o socket perfurado para a stack de transporte FIPS normal. A implementação vincula identidades de payload de sinal ao remetente Nostr real, consulta relays DM e advert configurados para lookup de inbox e faz rollback de handoffs de travessia adotados que falharam, para que transportes UDP órfãos não permaneçam ativos. Este é o trabalho de anúncio Nostr e travessia NAT a rastrear no repositório canônico, jmcorgan/fips.
strfry adiciona observabilidade por conexão
strfry fez merge do PR #214, adicionando observabilidade por conexão e métricas em nível de conexão exportáveis através do Prometheus. PR #204 normaliza labels do Prometheus, e PR #215 adiciona uma seção Community Integrations à documentação cobrindo projetos de identidade Namecoin construídos sobre o strfry.
Sprout adiciona Owner Attestation e suporte a múltiplos workspaces
Sprout, o cliente Nostr do Block, fez merge do PR #406 implementando NIP-OA (Owner Attestation). O recurso dá a um agente autônomo uma prova criptográfica de que uma pubkey humana específica autorizou suas ações. PR #409 adiciona suporte a múltiplos workspaces ao app desktop, PR #411 adiciona autocompletar #channel ao compose mobile, e PR #410 fecha uma janela de race que podia derrubar mensagens ativas de canal. PR #413 introduz NIP-RS para sincronização de estado de leitura entre dispositivos, e os follow-ups PR #420 e PR #422 conectam esse estado de leitura aos badges de não lidos mobile.
Zap Cooking adiciona pacotes de receitas, solicitações de exclusão e login bunker
Zap Cooking fez merge de uma semana produtiva de trabalho de publicação de receitas. Solicitações de exclusão NIP-09 para os Pacotes de Receitas do próprio usuário chegam no PR #367. A confiabilidade de publicação melhora através do PR #366, que força cada nova receita para o relay garden e adiciona uma fila de retry para o conjunto compartilhado de receitas. Publicação de pacote autoral com um clique chega no PR #365, e PR #331 adiciona suporte a login bunker NIP-46.
Whitenoise-rs criptografa seu banco de dados local
whitenoise-rs fez merge do PR #758, adicionando criptografia SQLCipher para o banco de dados Whitenoise em disco. Isso fecha uma lacuna de segurança em repouso de longa data para a stack daemon do Marmot. PR #775 expõe capacidades requeridas de grupo, PR #772 migra operações de mídia de grupo para MediaOps de propriedade da sessão, e PR #773 extrai um holder SharedServices como parte do refactor de session-ops. No lado mobile, whitenoise PR #577 ativa o auto-restart de boot para o serviço em primeiro plano do Android, corrigindo o caso onde o daemon não voltava após uma reinicialização do dispositivo.
Recém-rastreado e descoberto
Nostrord: um cliente NIP-29 construído com Kotlin Multiplatform e WASM
Nostrord é um novo cliente de chat em grupo NIP-29 que visa o caso de uso de substituição do Discord. Grupos vivem em relays Nostr com membership, papéis, moderação e controle de acesso aplicados pelo relay, então o estado do grupo é hospedado pelo relay NIP-29 selecionado. O desenvolvedor do cliente não controla um banco de dados de aplicação separado para esses grupos. O app web roda em web.nostrord.com e é construído com Kotlin Multiplatform compilando para WebAssembly, com builds nativos para Android, iOS e desktop em desenvolvimento. Nostrord é um recipiente de grant OpenSats e interopera com os mesmos relays NIP-29 usados por Flotilla, Chachi e 0xChat.
Clave traz assinatura remota NIP-46 para iOS via APNs
Clave é um signer remoto iOS em beta que assina eventos Nostr quando o app não está aberto. A chave privada permanece no Keychain do iPhone. Quando um cliente envia uma requisição de assinatura remota NIP-46, um proxy do lado do servidor entrega uma Apple Push Notification, acordando uma Notification Service Extension por até 30 segundos. Essa extensão descriptografa a requisição com criptografia NIP-44, assina com a chave do Keychain e publica a resposta. O registro de token de dispositivo usa HTTP Auth NIP-98 para evitar sequestro de token. Clave suporta pareamento bunker:// e nostrconnect://, níveis de confiança por cliente, overrides por kind, e foi testado com Nostur e noStrudel.
Treasures: geocaching descentralizado no Nostr
Treasures é uma plataforma de geocaching onde caches e achados são eventos Nostr assinados. Criadores de cache publicam eventos endereçáveis kind 37516 com coordenadas GPS. Descobridores registram a descoberta escaneando um QR code anexado ao cache físico; o código codifica a pubkey do criador, a tag d do cache e uma chave privada de verificação usada como prova da visita física. Zaps NIP-57 podem fluir de descobridores para criadores de cache, e o app ao vivo está em treasures.to.
smesh v0.5.1: relay, cliente e signer Nostr auto-hospedados em uma stack
smesh é uma stack Nostr auto-hospedada escrita em Moxie, uma linguagem personalizada derivada de Go e TinyGo pelo mleku. A stack entrega um binário nativo de relay com suporte a HTTP, WebSocket, AUTH, busca e Blossom; sm3sh, um cliente web compilado para módulos ES; e uma extensão de signer no navegador com assinatura NIP-07 no navegador mais suporte a criptografia NIP-04 e NIP-44. Trabalho recente inclui mensageria de grupo MLS (RFC 9420) em v0.5.0, reconciliação de conjunto negentropy para sincronização de relay e um motor de grafo Web of Trust. O código vive na forge auto-hospedada do mleku em git.smesh.lol, construída com sua própria ferramenta git-web. O repositório relacionado gitea-nostr-auth é uma ponte OAuth2/OIDC para o Gitea: usuários autenticam com um signer NIP-07 no navegador, a ponte descobre relays através de NIP-65, e o Gitea recebe claims de identidade OIDC padrão.
Surveil: um construtor de decks de Magic: The Gathering no Nostr
Surveil é um cliente Nostr para jogadores de Magic: The Gathering que permite aos usuários buscar cartas, construir decks, escanear cartas físicas no Android com OCR ML Kit no dispositivo e compartilhar decks pela rede. Decks são publicados como eventos endereçáveis kind 37381, e a especificação de evento de deck está documentada no NIP.md do projeto. A camada social é construída a partir de primitivas Nostr padrão: comentários em thread NIP-22 (kind 1111) escopados a cada deck, reações NIP-25 (kind 7), dados de perfil NIP-78 (kind 30078) para lares de jogadores, feeds de follows kind 3 e forks que carregam uma tag a de volta para o deck original. v0.1.6 foi lançada esta semana com polimento de UI mobile, melhorias no contador de vida, uma página About reformulada e uma pill de relay no banner hero do deck. O app web roda em qualquer lugar onde HTML estático seja servido, o build Android é entregue através do Zapstore, e eventos kind 37381 também são indexados nativamente pelo Ditto como decks de Magic. O repositório está no GitLab em chad.curtis/surveil.
Adições menores: Fundstr, Nod City, deploy-nsite-to-pages e null–nostr
Fundstr é uma plataforma de financiamento de criadores no Nostr usando ecash Cashu para promessas únicas e recorrentes, com definições de nível de criador e DMs Nostr. Nod City é um site de avaliações de serviços Bitcoin onde as avaliações são eventos Nostr assinados e os revisores podem receber zaps; nenhum repositório de código público foi encontrado. deploy-nsite-to-pages é uma GitHub Action que espelha um nsite para o GitHub Pages usando nsyte download, suportando nsites kind 15128 raiz e kind 35128 nomeado. null–nostr, também descoberto nos dados NIP-34 desta semana, é o cliente coberto na recente onda OpenSats como Nurunuru; suporta mensageria de grupo MLS, Amber, busca NIP-50, posts protegidos NIP-70, badges ProofMode e distribuição via Zapstore.
FIPS não é um projeto novo para o Compass. Foi coberto em Newsletter #6 e Newsletter #10. O banco de dados agora aponta para o repositório canônico correto, jmcorgan/fips, e a descoberta NIP-34 desta semana também trouxe à tona mirrors git-over-Nostr relacionados como fips e awesome-fips.
Trabalho de protocolo
Atualizações de NIP
Propostas recentes e discussões no repositório NIPs:
Merged esta semana:
NIP-34 repositórios git: remover extensão de tag refs não usada (PR #2325): Remove uma extensão de tag
refsdo NIP-34 que foi definida mas não utilizada. A limpeza reduz a ambiguidade de implementação para ferramentas git-over-Nostr.NIP-34 repositórios git: remover afirmação incorreta sobre NIP-09 (PR #2326): Remove uma afirmação incorreta de que eventos de exclusão NIP-09 podem resetar o estado do repositório. A exclusão NIP-09 é uma solicitação de exclusão de evento do lado do cliente, não uma máquina de estado de repositório. A correção evita que implementadores de NIP-34 tratem dicas de exclusão como resets autoritativos de repositório.
Trabalho aberto e conduzido por implementação:
Comentários de revisão de código inline kind
1111do GitWorkshop: O kind de comentário de revisão de código inline está documentado noNIP.mddo GitWorkshop e está agora em uso ativo, mas ainda não foi proposto como um NIP formal. Eventos de veredito (kind7321) e blocossuggestionpermanecem como rascunho e ainda não foram lançados. Feedback de implementação do GitWorkshop e ngit determinará se as formas se tornam um NIP independente de git-review ou permanecem como uma convenção de aplicação em camadas sobre NIP-34.Nostr mail core e Nostrmon: Dois novos rascunhos de NIP personalizados circularam esta semana. Nostr mail core propõe kind
1301para conteúdo de email RFC 2822, embrulhado com NIP-59 para entrega privada e conectado a email legacy através de pubkeys de ponte resolvidas por NIP-05. Nostrmon esboça kinds de eventos endereçáveis para regiões, mapas, criaturas, NPCs, saves de jogadores e itens. Ambos permanecem como rascunhos personalizados, não NIPs merged.NIP-67: EOSE Completeness Hint (PR #2317): A proposta continua a iterar sobre a adição de um marcador positivo de completude ao
EOSE, permitindo que relays distingam “eventos armazenados totalmente entregues” de casosEOSElegacy onde o relay não faz nenhuma afirmação de completude.
Seis abris do Nostr
Abril dá uma seção transversal limpa do caminho de desenvolvimento do Nostr: o documento de protocolo em 2021, trabalho inicial de clientes em 2022, a onda de aplicações pós-Damus em 2023, mensageria privada e trabalho git-over-Nostr em 2024, Blossom e limpeza de lista de relays em 2025, e grants de cliente focados em adoção em 2026.
Abril de 2021: o documento do protocolo antes do repositório NIPs
Fiatjaf publicou o artigo original do Nostr, “Notes and Other Stuff Transmitted by Relays”, em 20 de novembro de 2020. Esse primeiro texto já continha a forma central que ainda define o protocolo: usuários assinam eventos com chaves, publicam-nos para relays e leem dos relays que escolhem. O log de commits nostr-protocol/nostr não mostra commits entre 1º e 30 de abril. A atividade fica de ambos os lados: commits de março de 2021 adicionaram links iniciais “nostwitter” e um filtro kind, enquanto maio de 2021 redirecionou o NIP-02 e adicionou autoria de NIP.
Em abril de 2021, não havia mercado público de clientes, nenhuma rede de relays visível e nenhum repositório NIPs. O protocolo ainda vivia como um pequeno documento e alguns experimentos. Nostr ainda não havia se tornado uma rede social ou uma plataforma de desenvolvimento. Era ainda um modelo relay/chave/evento aguardando sua primeira onda sustentada de contribuidores.
Abril de 2022: NIPs ainda viviam no repositório principal
Abril de 2022 foi o último mês antes dos NIPs saírem do repositório principal nostr-protocol/nostr. Como a divisão ainda não havia acontecido, o repositório dedicado nostr-protocol/nips não tinha histórico de pull requests de abril. No repositório principal, três commits de abril foram feitos: “Update readme to add nip12” em 8 de abril por goswami1999, “add kinds list” em 25 de abril por jb55, e “add js formatting to sample code” em 28 de abril por steliosrammos.
O trabalho de clientes também começava a tomar forma. Commits do Damus de abril de 2022 adicionaram comportamento inicial de chatroom, manipulação de perfil e ícones do app, enquanto nostr-tools se tornava o caminho da biblioteca JavaScript para clientes iniciais e experimentos. No lado do protocolo, queries genéricas de tag NIP-12 deram à busca de tags um lugar documentado, a lista de kinds moveu o Nostr em direção a um modelo de registro, e melhores exemplos em JavaScript tornaram a especificação mais fácil de implementar para autores de clientes e bibliotecas. Em 1º de maio, fiatjaf moveu os NIPs para o repositório dedicado. Abril de 2022 foi o último mês da era original de repositório único.
Abril de 2023: expansão de aplicações pós-Damus
Abril de 2023 chegou três meses após o Damus ser lançado na iOS App Store em 31 de janeiro de 2023, e após Jack Dorsey ter postado sua chave pública Nostr. A rede acabara de absorver sua primeira grande onda de crescimento público. Clientes como Damus, Snort, Iris, Coracle e Amethyst estavam ativos, enquanto operadores de relay estavam aprendendo o que um grafo social maior fazia com as suposições de largura de banda, spam, busca e moderação.
Abril de 2023 teve um PR merged nos NIPs: PR #456, merged em 17 de abril, adicionando links de entidade bech32 NIP-19 ao tratamento de URI NIP-21. Os commits ao redor mostram a pressão de aplicação por trás do trabalho de protocolo. Abril de 2023 viu trabalho em NIP-45 COUNT, marcadores de zap específicos de evento, NIP-15 marketplace, semântica de delegação de exclusão NIP-26, metadados de arquivo NIP-94, tratamento de erros wallet-connect NIP-47 e emoji personalizado NIP-30. A lista de contribuidores havia se ampliado para incluir fiatjaf, staab, pablof7z, Semisol, CodyTseng, sethforprivacy, mikedilger, AsaiToshiya, alexgleason, martindsq, frbittencourt e arkin0x.
Damus, Snort, Iris, Coracle e Amethyst não eram mais demos em torno de uma especificação; eram clientes de produção lidando com onboarding, feeds, spam, zaps, mídia e seleção de relay. O trabalho de protocolo de abril de 2023 se lê como o backlog que esses clientes criaram: zaps, marketplaces, metadados de arquivo, contagem, emoji e links de identidade todos empurraram a especificação além de notas e follows simples.
Abril de 2024: mensageria privada, git-over-Nostr e suporte a mantenedores
Abril de 2024 teve dois PRs de NIP merged. PR #1167, merged em 10 de abril, corrigiu terminologia confusa em assinatura remota NIP-46, onde clientes e signers precisam de linguagem exata para ações solicitadas e autorizadas. PR #1108, merged em 17 de abril, expandiu repositórios git NIP-34 com eventos de status, esclarecimentos, mantenedores opcionais, identificadores de repositório e tags de descobribilidade. Esse passo tornou git-over-Nostr mais prático para ngit e depois GitWorkshop.
NIP-17, anteriormente NIP-24, chegou em 24 de abril como mensagens seladas gift-wrapped para DMs privadas e pequenos chats em grupo. Trabalho de cliente e biblioteca ocorreu em paralelo: Amethyst, Primal, Gossip, nostr-tools, NDK e rust-nostr estavam todos ativos no mesmo período.
OpenSats também anunciou suporte de longo prazo para desenvolvedores Nostr em abril de 2024: PabloF7z em 9 de abril, Stuart Bowman em 12 de abril, e hzrd149 em 15 de abril. Esses grants moveram o financiamento de grants de projetos isolados em direção à manutenção sustentada de relays, bibliotecas e infraestrutura de clientes.
Abril de 2025: limpeza densa de NIP e formalização do Blossom
Abril de 2025 foi o mês de protocolo mais denso nesta retrospectiva, com dezesseis PRs de NIP merged. O mês começou com PR #1846, adicionando transações e endereços blockchain ao NIP-73, e PR #1865, adicionando tags NIP-C0 à tabela de tags padronizada. Continuou com PR #1801 e PR #1889, ambos melhorando a orientação de republicação de lista de relays kind 10002, e PR #1879, que encolheu e esclareceu o NIP-65.
PR #1822 adicionou NIP-B7 para interação com Blossom, dando aos clientes Nostr e servidores Blossom uma camada de coordenação canônica após mais de um ano de prática informal. PR #1051 descontinuou o NIP-26, a especificação de assinatura de evento delegada. O NIP-26 havia sido difícil de implementar com segurança e havia se tornado menos atraente à medida que o NIP-46 e outros padrões de signer amadureceram.
O resto do mês combinou limpeza com expansão de aplicações: PR #1882 adicionou campos de política de privacidade e termos de serviço ao NIP-11, PR #1849 expandiu bookmarks web kind 39701 sob o NIP-B0, PR #1891 adicionou esse kind de bookmark ao README, e PR #1895 adicionou tags padronizadas NIP-B0. OpenSats anunciou sua Décima Primeira Onda de Grants Nostr em 16 de abril, financiando Swae, HAMSTR, Vertex, Nostr Double Ratchet e Nostr Game Engine. Primal, Coracle, noStrudel, nostr-tools, NDK e rust-nostr também estavam entregando através deste período, então a limpeza de protocolo ficava próxima do trabalho ativo de cliente e biblioteca.
Abril de 2026: fortalecimento do NIP-34, badges e grants focados em adoção
Abril de 2026, o mês que este issue encerra, teve quatro PRs de NIP merged. O primeiro foi o PR #2276, merged em 1º de abril, que mudou os badges de perfil NIP-58 para kind 10008 e adicionou conjuntos de badges kind 30008, tornando a atribuição de badges e coleções de badges mais componíveis. Uma segunda mudança de usabilidade git-over-Nostr chegou no PR #2312, merged em 10 de abril, adicionando semântica de URL de clone nostr:// ao NIP-34. As limpezas de 25 de abril, PR #2325 e PR #2326, removeram linguagem não usada e incorreta do NIP-34.
Commits relacionados afiam as mesmas superfícies. Em 22 de abril, fiatjaf adicionou uma lista de servidores Blossom ao NIP-51 e ajustou a edição de metadados NIP-29 para corresponder ao comportamento estilo PUT do Flotilla. Em 26 de abril, ele renomeou o NIP-5A para clareza. Abril de 2026 focou em tornar superfícies de protocolo já usadas mais fáceis de implementar e mais difíceis de interpretar mal.
OpenSats anunciou sua Décima Sexta Onda de Grants Nostr em 8 de abril, apoiando Amethyst Desktop, Nostr Mail, Nostrord, Nurunuru (null–nostr) e uma renovação do HAMSTR: clientes desktop, mensageria estilo email, UX de grupo, onboarding em japonês e conectividade off-grid.
Obrigado por ler o Nostr Compass #20. Mande uma DM para nós no Nostr com dicas, correções ou novos projetos para cobrir.