diff --git a/content/de/newsletters/2026-04-29-newsletter.md b/content/de/newsletters/2026-04-29-newsletter.md new file mode 100644 index 0000000..bd58cfc --- /dev/null +++ b/content/de/newsletters/2026-04-29-newsletter.md @@ -0,0 +1,214 @@ +--- +title: 'Nostr Compass #20' +date: 2026-04-29 +publishDate: 2026-04-29 +draft: false +type: newsletters +translationOf: /en/newsletters/2026-04-29-newsletter.md +translationDate: 2026-07-01 +description: 'GitWorkshop liefert einen In-Browser-PR-Merge-Button, Repository-Following, einen bandbreiteneffizienten Git-Explorer und Inline-Code-Review-Kommentare für Git-über-Nostr; Routstrd startet einen lokalen Inferenz-Router mit Nostr-Provider-Ankündigungen und Cashu-Zahlungen; Releases umfassen ngit v2.4.2, Wisp v1.0.0, grain v0.5.2 und v0.5.3, Mostro Core v0.10.0, 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 und nostr-double-ratchet; unveröffentlichte Arbeiten decken Amethyst Nests, nostream NIP-65/NWC, FIPS Nostr-basierten udp:nat-Bootstrap, strfry-Observability, Sprout Owner-Attestierungen und Zap Cooking Recipe Packs ab; neu getrackte Projekte umfassen Nostrord, Clave, Treasures, smesh, Surveil, Fundstr, Nod City, deploy-nsite-to-pages und null--nostr; die Monatsend-Retrospektive behandelt Nostr-Aprile von 2021 bis 2026.' +--- + +Willkommen zurück bei Nostr Compass, deinem wöchentlichen Leitfaden zu Nostr. + +**Diese Woche:** [GitWorkshop](#gitworkshop-liefert-in-browser-pr-merge-repository-following-und-einen-bandbreiteneffizienten-git-explorer) macht Git-über-Nostr zu einer vollständigeren Code-Review-Oberfläche mit einem In-Browser-PR-Merge-Button, Stars und Repository-Following, einem bandbreiteneffizienten Git-Explorer, kind `1111` Inline-Review-Kommentaren und verschlüsseltem Multi-Device-Notification-State. [Routstrd](#routstrd-startet-einen-lokalen-router-für-inferenz-über-nostr) startet einen lokalen Daemon, der Modellanbieter über Nostr kind `38421` Ankündigungen entdeckt und sie mit Cashu bezahlt. Getaggte Releases umfassen [ngit v2.4.2](#ngit-v242-behebt-grasp-relay-erkennung-für-pr-einreichungen), [Wisp v1.0.0](#wisp-v100-verlässt-die-beta), [grain v0.5.2 und v0.5.3](#grain-v052-behebt-websocket-lockup-v053-setzt-politur-fort), [Mostro Core v0.10.0 und Mostro Mobile v1.2.5](#mostro-core-v0100-und-mostro-mobile-v125-übernehmen-nip-59-dual-key-gift-wrap), [marmot-ts v0.5.0](#marmot-ts-v050-liefert-adressierbare-keypackages), [CruxCoach v0.1.3](#cruxcoach-v013-liefert-verschlüsseltes-backup-für-kletterdaten-mit-nostr-und-blossom), [Meiso v1.3.0](#meiso-v130-fügt-subtasks-blossom-anhänge-und-nip-89-tagging-hinzu), NoorNote, Nostria, Nostr Calendar, nos2x-fox, applesauce, nostr-double-ratchet und mehr. Unveröffentlichte Änderungen umfassen [Amethyst Nests](#amethyst-treibt-nests-audio-räume-mit-moq-interop-tests-voran), [nostream NIP-65 und NWC](#nostream-fügt-nip-65-relay-listen-unterstützung-und-nwc-zahlungen-hinzu), [FIPS Nostr-basierten udp:nat-Bootstrap](#fips-fügt-nostr-basierten-udpnat-bootstrap-hinzu), [strfry-Observability](#strfry-fügt-per-connection-observability-hinzu), [Sprout Owner-Attestierungen](#sprout-fügt-owner-attestation-und-multi-workspace-unterstützung-hinzu) und [Zap Cooking Recipe Packs](#zap-cooking-fügt-recipe-packs-lösch-anfragen-und-bunker-login-hinzu). Neu getrackte Projekte umfassen [Nostrord](#nostrord-ein-nip-29-client-mit-kotlin-multiplatform-und-wasm), [Clave](#clave-bringt-nip-46-remote-signing-per-apns-auf-ios), [Treasures](#treasures-dezentrales-geocaching-auf-nostr). + +## Leitartikel + +### GitWorkshop liefert In-Browser-PR-Merge, Repository-Following und einen bandbreiteneffizienten Git-Explorer + +[GitWorkshop](https://gitworkshop.dev), Dan Conways webbasierte Kollaborationsschicht für [NIP-34](/de/topics/nip-34/) Git-über-Nostr, hat diese Woche ein großes Release veröffentlicht, das den Workflow deutlich näher an das heranbringt, was Entwickler von GitHub oder GitLab erwarten, während Kommentare, Repository-Listen und Benachrichtigungen weiterhin in signierten Nostr-Events liegen. + +Die wichtigste Neuerung ist ein lange erwarteter In-Browser-PR-Merge-Button für Repositories, die GRASP-Relays nutzen. Das Release fügt außerdem Stars und Repository-Following hinzu, die auf Reaktionen und [NIP-51](/de/topics/nip-51/) Listen basieren, wobei angepinnte Repository-Sets als kind `10617` Events veröffentlicht werden, die über geordnete `a` Tags auf kind `30617` Repo-Ankündigungen zeigen. Profilseiten können jetzt eine portable Liste von Repositories präsentieren. + +Ein bandbreiteneffizienter Git-Explorer ersetzt den vorherigen In-Browser-Shallow-Clone. Der neue Explorer stützt sich auf das zugrunde liegende Git-Client/Server-Protokoll, auf dem GRASP aufbaut, sodass er große Repositories verarbeiten kann, ohne den Browser zu zwingen, ein vollständiges Pack zu laden. Die Suche deckt jetzt Benutzernamen und Repository-Metadaten ab, angetrieben von [NIP-50](https://github.com/nostr-protocol/nips/blob/master/50.md) und einer `ngit-indexer` Relay-Implementierung, die Repository-Ankündigungen im Netzwerk entdeckt und synchronisiert. Ein In-Browser-Workflow zur Repository-Erstellung rundet den Entdeckungs- und Onboarding-Pfad ab. + +Das Review-Tooling wurde rund um einen Files-Changed-Tab, einen Per-Patch-Diff-Viewer und eine Reihe experimenteller neuer Primitive neu aufgebaut. Inline-Code-Review-Kommentare verwenden kind `1111`, aufgebaut auf [NIP-22](https://github.com/nostr-protocol/nips/blob/master/22.md): jeder Kommentar zeigt auf einen Dateipfad (`f` Tag), einen Commit-SHA (`c` Tag) und einen ausgewählten Zeilenbereich (`line` Tag), sodass ein Client den Kommentar an der korrekten Position in einem Diff rendern kann. Eine zweite Stufe experimenteller Primitive ist auf Autor und Repo-Maintainer beschränkt und nutzt [NIP-32](https://github.com/nostr-protocol/nips/blob/master/32.md) Labels: einen Issue- oder PR-Betreff nach der Einreichung umbenennen, nachträglich Hashtags hinzufügen, eine versionskontrollierte CoverNote als bearbeitbare Zusammenfassung an die Spitze eines PR oder Issue heften und Inline-Code-Diskussions-Subthreads als erledigt markieren. Verdict-Events und `suggestion` Blöcke bleiben im Entwurfsstadium und wurden noch nicht ausgeliefert. + +Der Notification-State über Geräte hinweg wird ebenfalls über Nostr synchronisiert, allerdings mit einem datenschutzfreundlichen Kniff. GitWorkshop generiert ein dediziertes Notifications-Keypair, verschlüsselt diesen nsec und speichert ihn in einem kind `30078` Event. Der Notifications-nsec signiert dann die tatsächlichen Notification-State-Events. Diese Indirektion verhindert, dass der Haupt-Signer des Benutzers mit häufigen Verschlüsselungs- und Entschlüsselungsanfragen für jede Lese- oder Archivierungsaktion überschwemmt wird, und sie hindert außenstehende Beobachter daran, leicht zu sehen, wann ein Benutzer seinen Notification-State berührt. Ein Benutzer kann Lese- und Archivierungsstatus über Geräte hinweg synchronisieren; Relays sehen nur verschlüsselte Blobs. + +### Routstrd startet einen lokalen Router für Inferenz über Nostr + +[Routstrd](https://github.com/routstr/routstrd) ist ein neuer TypeScript-Daemon, der lokalen Werkzeugen einen OpenAI-kompatiblen Endpunkt bietet und jede Anfrage an einen konkurrierenden [Routstr](https://routstr.com) Provider routet. Der Daemon entdeckt Provider durch Nostr kind `38421` Ankündigungen, die in Routstrs RIP-02-Spezifikation definiert sind. Er bewertet Provider dann nach Preis, Vertrauen und jüngster Leistung unter RIP-06 und sendet jede Anfrage an die aktuell beste Option. + +Die Zahlung läuft über eine lokale Cashu-Wallet, die von cocod verwaltet und mit Lightning gefundet wird. Das gibt dem Client einen in Sats denominierten Abrechnungspfad, während die Provider-Entdeckung öffentlich und permissionless über Nostr-Relays bleibt. Wenn ein Provider während einer Session ausfällt, kann Routstrd auf den nächstplatzierten Knoten zurückfallen. Der Installationspfad ist `bun install -g routstrd`, gefolgt von `routstrd onboard` für Wallet- und Relay-Setup. + +Die breitere [Routstr-Org](https://github.com/routstr) pflegt den Daemon, die Python-Node-Software (`routstr-core`), eine Chat-UI und Protokollspezifikationen. Für Benutzer wird der lokale Port zur stabilen Schnittstelle: bestehende OpenAI-kompatible Werkzeuge zeigen auf Routstrd, während der Daemon Provider-Entdeckung, Routing und Zahlung übernimmt. + +## Getaggte Releases + +### ngit v2.4.2 behebt GRASP-Relay-Erkennung für PR-Einreichungen + +[ngit](https://codeberg.org/DanConwayDev/ngit-cli) hat [v2.4.2](https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.2) mit einem Fix für die Repository-GRASP-Server-Erkennung veröffentlicht, wodurch PR-Einreichungen auf dem Happy Path bleiben, wenn ein Vorschlag das PR-kind verwendet. Beachte, dass ngit derzeit standardmäßig das `Patch`-kind für die meisten Änderungen verwendet, sofern sie nicht groß sind; der Maintainer arbeitet daran, den Standard zu ändern. [v2.4.1](https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.1), das früher in der Woche veröffentlicht wurde, behob `fatal` Fehler während Clone und Fetch, wenn die Git-Daten eines offenen PR auf den festgelegten Git-Servern des Repositorys nicht verfügbar waren. + +### Wisp v1.0.0 verlässt die Beta + +[Wisp](https://github.com/barrydeen/wisp), ein Kotlin- und Jetpack-Compose-Android-Client mit Fokus auf Relay-Routing, Datenschutz und einer schlanken nativen UI, veröffentlichte [v1.0.0](https://github.com/barrydeen/wisp/releases/tag/v1.0.0) und folgte mit [v1.0.2](https://github.com/barrydeen/wisp/releases/tag/v1.0.2). Der 1.0.0-Meilenstein sammelt den Normie-Mode Fiat-Denominierungsschalter, den For-You-Feed, die [NIP-29](/de/topics/nip-29/) relay-basierte Gruppenkonfiguration und das [NIP-65](/de/topics/nip-65/) Relay-List-Broadcasting, die in [Newsletter #19](/de/newsletters/2026-04-22-newsletter/#wisp-v0180-beta-adds-normie-mode-for-you-feed-and-nip-29-group-config) behandelt wurden. v1.0.2 fügt Unterstützung für Android 15 16-KB-Seitengröße, einen QR-Scan-Tab im Drawer-Sheet, einen Download-Button für Inline-Video-Kontrollen und Fixes für die Performance der Notification-Liste hinzu. + +### grain v0.5.2 behebt WebSocket-Lockup, v0.5.3 setzt Politur fort + +[grain](https://github.com/0ceanSlim/grain), das Go-Relay von 0ceanSlim, veröffentlichte [v0.5.2](https://github.com/0ceanSlim/grain/releases/tag/v0.5.2) als kritischen Hotfix für ein WebSocket-Lockup, das in v0.5.0 eingeführt wurde, und folgte dann mit [v0.5.3](https://github.com/0ceanSlim/grain/releases/tag/v0.5.3). Das Lockup führte dazu, dass Verbindungen unter bestimmten Filter- und WebSocket-Pfaden hingen, sodass Betreiber auf v0.5.1 oder v0.5.0 upgraden sollten. grain trackt alle wichtigen Nostr-Event-Kategorien, stellt NIP-11 Relay-Informationen bereit, unterstützt Whitelist/Blacklist-Zugriffskontrolle, Per-kind-Rate-Limits, ein Web-Dashboard und eine Go-Client-Bibliothek, die in der v0.5.x-Linie hinzugefügt wurde. + +### Mostro Core v0.10.0 und Mostro Mobile v1.2.5 übernehmen NIP-59 Dual-Key Gift Wrap + +[Mostro Core v0.10.0](https://github.com/MostroP2P/mostro-core/releases/tag/v0.10.0) fügt das neue [NIP-59](/de/topics/nip-59/) Gift-Wrap-Modul mit getrennten Identity- und Trade-Keys hinzu. Frühere Transportcode verwendete einen einzigen Identity-Key sowohl für Trade-Identity als auch für Gift-Wrapping. v0.10.0 trennt die stabile Trade-Identity vom ephemeren Wrapping-Key, sodass jeder Trade einen frischen Transport-Key verwenden kann, während die für das Trade-Protokoll benötigte Identity erhalten bleibt. Die Daemon-Integration landet über [Mostro PR #718](https://github.com/MostroP2P/mostro/pull/718), und [mostro-cli PR #165](https://github.com/MostroP2P/mostro-cli/pull/165) bringt dieselbe Migration in den Command-Line-Client. + +[Mostro Mobile v1.2.5](https://github.com/MostroP2P/mobile/releases/tag/v1.2.5) wird zusammen mit der Protokollarbeit ausgeliefert. [PR #581](https://github.com/MostroP2P/mobile/pull/581) lässt Taker Angebote nach dem Kontoalter des Makers filtern und gibt Benutzern eine Möglichkeit, neu erstellte Maker-Accounts im Orderbuch zu vermeiden. [PR #580](https://github.com/MostroP2P/mobile/pull/580) korrigiert Rollen-Labels bei den Details stornierter Aufträge, und [PR #576](https://github.com/MostroP2P/mobile/pull/576) räumt die Buttons für die kooperative Stornierung auf. + +### marmot-ts v0.5.0 liefert adressierbare KeyPackages + +[marmot-ts](https://github.com/marmot-protocol/marmot-ts) veröffentlichte [@internet-privacy/marmot-ts@0.5.0](https://github.com/marmot-protocol/marmot-ts/releases/tag/%40internet-privacy%2Fmarmot-ts%400.5.0), das erste geplante Breaking-Change-Release für den TypeScript-[Marmot](/de/topics/marmot/)-Client. [PR #68](https://github.com/marmot-protocol/marmot-ts/pull/68) fügt Unterstützung für adressierbare KeyPackages hinzu: `KeyPackageManager` kann jetzt sowohl legacy kind `443` als auch neue kind `30443` KeyPackage-Events verarbeiten. Das Release entfernt `KeyPackageStore` und die Group-State-Storage-Klassen und ersetzt sie durch generische Key-Value-Stores, die an `KeyPackageManager` und `MarmotGroup` übergeben werden. Es verschiebt außerdem Einladungs- und Gruppenverwaltung auf `MarmotClient.invites` und `MarmotClient.groups`, sodass direkte Embedder vor dem Upgrade Konstruktor- und Storage-Änderungen benötigen. + +### CruxCoach v0.1.3 liefert verschlüsseltes Backup für Kletterdaten mit Nostr und Blossom + +[CruxCoach](https://codeberg.org/CruxCoach/CruxCoach) ist eine neue Open-Source-Android-App für Kilter-Board-Kletterer. Das Kilter Board ist eine interaktive Trainingswand, deren Griffe über Bluetooth aufleuchten, um Routen anzuzeigen. Die App wurde am 14. April veröffentlicht und erreichte am 26. April [v0.1.3](https://codeberg.org/CruxCoach/CruxCoach/releases/tag/v0.1.3). + +v0.1.3 fügt ein optionales verschlüsseltes Cloud-Backup hinzu. Das CruxCoach-Konto eines Benutzers ist ein Nostr-Keypair, und der private Schlüssel dient gleichzeitig als Eingabe für den lokalen Backup-Verschlüsselungsschlüssel. Die App verschlüsselt Kletterdaten auf dem Gerät und spiegelt den Chiffretext auf Blossom-Storage-Server (`blossom.primal.net` und `nostr.download`). Delete-Remote-Aktionen rufen den Blossom-Cleanup-Pfad auf. Über das Backup hinaus verwendet CruxCoach [NIP-46](/de/topics/nip-46/) Remote-Signing für Amber-Unterstützung, [NIP-17](/de/topics/nip-17/) private DMs für den In-App-Entwicklerkontakt, [NIP-65](/de/topics/nip-65/) Relay-Listen zur Relay-Entdeckung und Vitor Pamplonas [Quartz](https://github.com/vitorpamplona/quartz)-Bibliothek für Nostr-Plumbing. Benutzer können sie über Zapstore oder direkte Codeberg-APKs installieren. + +### Meiso v1.3.0 fügt Subtasks, Blossom-Anhänge und NIP-89-Tagging hinzu + +[Meiso](https://github.com/higedamc/meiso) ist ein minimalistischer Flutter-Task-Manager für Android, der Aufgaben als [NIP-44](/de/topics/nip-44/) verschlüsselte kind `30078` Anwendungsdaten auf Nostr-Relays speichert. [v1.3.0](https://github.com/higedamc/meiso/releases/tag/v1.3.0), veröffentlicht am 6. April, fügt Subtasks mit Eltern-Kind-Beziehungen, Task-Links für blocks/blocked-by/related-to/duplicate-of, Bildanhänge über Blossom und [NIP-96](/de/topics/nip-96/) HTTP-File-Upload-Endpunkte, einen [NIP-89](https://github.com/nostr-protocol/nips/blob/master/89.md) `client` Tag für empfohlene Anwendungen bei veröffentlichten Events und ein Go-Command-Line-Sync-Tool hinzu. v1.3.0 behebt außerdem das Cold-Start-Relay-Verhalten und die Wiederverwendung des Amber-Clients. + +### NoorNote, Nostria, Nostr Calendar, nos2x-fox und Bibliotheks-Releases + +[NoorNote](https://github.com/77elements/noornote) veröffentlichte [v0.8.7](https://github.com/77elements/noornote/releases/tag/v0.8.7), [v0.8.8](https://github.com/77elements/noornote/releases/tag/v0.8.8) und [v0.8.9](https://github.com/77elements/noornote/releases/tag/v0.8.9). Diese Releases beheben das Handling von Bild- und Video-Klicks in zitierten Reposts, fügen Lightbox-Unterstützung für Bilder in Long-Form-Artikeln hinzu und beheben den leeren Desktop-Startbildschirm. [Nostria](https://github.com/nostria-app/nostria) veröffentlichte [v3.1.29](https://github.com/nostria-app/nostria/releases/tag/v3.1.29), [v3.1.30](https://github.com/nostria-app/nostria/releases/tag/v3.1.30) und [v3.1.31](https://github.com/nostria-app/nostria/releases/tag/v3.1.31), die Bildkompression im Artikel-Editor, einen Wallet-USD-Schalter, Promotional-Card-Kontrollen, PDF-Unterstützung und Politur des Mobile-Layouts hinzufügen. + +[Nostr Calendar v1.4.1](https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.4.1) entkoppelt die Kalender-Event-Veröffentlichung von der Kalender-Listen-Verwaltung und behebt das Einladungs-Tracking. [nos2x-fox v1.19.0](https://github.com/diegogurpegui/nos2x-fox/releases/tag/v1.19.0) fügt benutzerdefinierte Autorisierungszeiträume für Firefox NIP-07 Browser-Signing-Grants hinzu. [nostr-double-ratchet v0.0.97](https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.97) liefert neue Binaries. [nostr-wot-sdk 0.9.0](https://github.com/nostr-wot/nostr-wot-sdk/releases/tag/nostr-wot-sdk%400.9.0) mountet `NostrSessionProvider` standardmäßig, und [nostr-tools PR #535](https://github.com/nbd-wtf/nostr-tools/pull/535) fügt Multi-Relay-Parsing-Unterstützung für NIP-47 Wallet-Connect-Strings hinzu. + +Spät in der Woche veröffentlichte [Amber v6.1.0-pre1](https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre1) ein Pre-Release mit einem verbesserten Connect-New-App-Layout, Signer-Dialog-Fixes, verbessertem Handling der Benachrichtigungsberechtigungen und einer überarbeiteten Kontoauswahl. [nostr-vpn v0.3.14](https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.14) veröffentlichte einen frischen Build mit macOS Apple Silicon, Linux und Windows Artefakten. [Bitcredit Core v0.5.7-hotfix-1 und v0.5.8](https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.8) lieferten Back-to-Back-Fixes für ein Validierungsproblem verwaister Blöcke. [Surveil v0.1.6](https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6) brachte Politur für die mobile UI und eine überarbeitete About-Seite; das Projekt selbst wird [unten](#surveil-ein-magic-the-gathering-deckbauer-auf-nostr) vorgestellt. + +### applesauce 6.0.0 entfernt Legacy-Event-Factories und fügt Blossom-URI-Parsing hinzu + +[applesauce](https://github.com/hzrd149/applesauce), hzrd149s TypeScript-Nostr-Toolkit, veröffentlichte einen 6.0.0-Release-Train über das Monorepo hinweg. [applesauce-core@6.0.0](https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.0.0) entfernt die Legacy-Klasse `EventFactory` und die alten Helpers `buildEvent`, `modifyEvent` und `createEvent` und drängt Aufrufer zu den neueren Factory-Klassen in `applesauce-core/factories` und `applesauce-common`. Es fügt außerdem IP-Adressen- und Localhost-Handling zum Link-Parsing hinzu, BUD-10 Blossom-URI-Regular-Expressions und neue Observable-Helpers wie `timeoutWithIgnore`, `combineLatestBy`, `combineLatestByIndex` und `combineLatestByKey`. + +Paket-Level-Releases füllen die Nostr-spezifischen Teile aus. [applesauce-content@6.0.0](https://github.com/hzrd149/applesauce/releases/tag/applesauce-content%406.0.0) fügt BUD-10 Blossom-URI-Nodes für Text und Markdown hinzu und gibt Renderern eine erstklassige Möglichkeit, Blossom-Referenzen in Inhalten zu parsen. [applesauce-actions@6.0.0](https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.0.0) fügt Basis-Factory-Klassen für NIP-51 Listen für Relays, Benutzer und Items hinzu und macht die Listenkonstruktion weniger ad hoc. [applesauce-wallet-connect@6.0.0](https://github.com/hzrd149/applesauce/releases/tag/applesauce-wallet-connect%406.0.0) exponiert `WalletConnect.connectURI`, sodass Apps direkt auf eine bestehende NIP-47 Wallet-Connect-URI zugreifen können. + +## Unveröffentlichte Änderungen + +### Amethyst treibt Nests-Audio-Räume mit MoQ-Interop-Tests voran + +[Amethyst](https://github.com/vitorpamplona/amethyst) mergte diese Woche mehrere Nests-fokussierte PRs, die auf dem [Media over QUIC](https://datatracker.ietf.org/group/moq/about/) Audio-Room-Stack der letzten Woche aufbauen. [PR #2622](https://github.com/vitorpamplona/amethyst/pull/2622) fügt ein Cross-Client-Interop-Harness hinzu, das den Amethyst-MoQ-Client gegen die Referenz-Web-Implementierung ausführt. Ziel ist es, Android/Browser-Wire-Level-Divergenzen zu erkennen, bevor sie Benutzer treffen. [PR #2625](https://github.com/vitorpamplona/amethyst/pull/2625) verbessert Picture-in-Picture-Sprecher-Fokus und Verbindungsstatus, während [PR #2620](https://github.com/vitorpamplona/amethyst/pull/2620) Avatare, Mute-Status und Speaking-Status im Teilnehmer-Grid klärt. Spät in der Woche behebt [PR #2634](https://github.com/vitorpamplona/amethyst/pull/2634) IME-Padding und Window-Insets in der Full-Screen-Nest-Ansicht und [PR #2635](https://github.com/vitorpamplona/amethyst/pull/2635) fügt presence-basierte Frische-Filterung zum Nests-Feed hinzu. Separat entfernt [PR #2627](https://github.com/vitorpamplona/amethyst/pull/2627) Amethysts benutzerdefinierte C-secp256k1-Implementierung und migriert zu `libschnorr256k1`. + +### nostream fügt NIP-65 Relay-Listen-Unterstützung und NWC-Zahlungen hinzu + +[nostream](https://github.com/Cameri/nostream) mergte drei bemerkenswerte PRs nach dem 53-PR-Relay-Sprint der letzten Woche. [NIP-65](/de/topics/nip-65/) Relay-Listen-Metadaten-Unterstützung landet in [PR #585](https://github.com/Cameri/nostream/pull/585), sodass das Relay kind `10002` Relay-Listen-Events indexieren und ausliefern kann. Ein Nostr-Wallet-Connect-Zahlungsprozessor folgt in [PR #539](https://github.com/Cameri/nostream/pull/539) und fügt einen Pay-to-Relay-Pfad hinzu. Das Verbindungs-Cleanup verbessert sich in [PR #438](https://github.com/Cameri/nostream/pull/438), der einen Dead-Connection-Bug schließt, bei dem Sockets mit aktiven Subskriptionen nicht abgeräumt wurden, was zu einer Drift der Subskriptionszahlen auf lang laufenden Instanzen führte. + +### FIPS fügt Nostr-basierten udp:nat-Bootstrap hinzu + +[FIPS](https://github.com/jmcorgan/fips), das Free Internetworking Peering System, das zuvor in [Newsletter #6](/de/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking) und [Newsletter #10](/de/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples) behandelt wurde, mergte [PR #53](https://github.com/jmcorgan/fips/pull/53) mit Nostr-basiertem `udp:nat`-Bootstrap. Die Änderung lässt Nodes Nostr-Adverts veröffentlichen, verschlüsselte Offer/Answer-Signaling austauschen, öffentliche Adressen über STUN entdecken, UDP-Hole-Punching durchführen und den gepunchten Socket in den normalen FIPS-Transport-Stack übergeben. Die Implementierung bindet Signal-Payload-Identitäten an den tatsächlichen Nostr-Sender, fragt konfigurierte DM- und Advert-Relays für den Inbox-Lookup ab und rollt fehlgeschlagene adoptierte Traversal-Übergaben zurück, sodass verwaiste UDP-Transporte nicht am Leben bleiben. Dies ist die Nostr-Ankündigungs- und NAT-Traversal-Arbeit, die im kanonischen Repo `jmcorgan/fips` zu verfolgen ist. + +### strfry fügt Per-Connection-Observability hinzu + +[strfry](https://github.com/hoytech/strfry) mergte [PR #214](https://github.com/hoytech/strfry/pull/214) und fügt Per-Connection-Observability und Verbindungs-Level-Metriken hinzu, die über Prometheus exportierbar sind. [PR #204](https://github.com/hoytech/strfry/pull/204) normalisiert Prometheus-Labels, und [PR #215](https://github.com/hoytech/strfry/pull/215) fügt einen Community-Integrations-Abschnitt zur Dokumentation hinzu, der Namecoin-Identity-Projekte abdeckt, die auf strfry aufbauen. + +### Sprout fügt Owner Attestation und Multi-Workspace-Unterstützung hinzu + +[Sprout](https://github.com/block/sprout), Blocks Nostr-Client, mergte [PR #406](https://github.com/block/sprout/pull/406) und implementiert NIP-OA (Owner Attestation). Das Feature gibt einem autonomen Agenten einen kryptografischen Beweis, dass ein spezifischer menschlicher pubkey seine Aktionen autorisiert hat. [PR #409](https://github.com/block/sprout/pull/409) fügt Multi-Workspace-Unterstützung zur Desktop-App hinzu, [PR #411](https://github.com/block/sprout/pull/411) fügt `#channel`-Autocomplete zum mobilen Compose hinzu, und [PR #410](https://github.com/block/sprout/pull/410) schließt ein Race-Fenster, das aktive Channel-Nachrichten fallenlassen konnte. [PR #413](https://github.com/block/sprout/pull/413) führt NIP-RS für die Cross-Device-Read-State-Synchronisation ein, und die Follow-up-PRs [PR #420](https://github.com/block/sprout/pull/420) und [PR #422](https://github.com/block/sprout/pull/422) verdrahten diesen Read-State in die mobilen Unread-Badges. + +### Zap Cooking fügt Recipe Packs, Lösch-Anfragen und Bunker-Login hinzu + +[Zap Cooking](https://github.com/zapcooking/frontend) mergte eine produktive Woche der Rezeptveröffentlichungsarbeit. [NIP-09](https://github.com/nostr-protocol/nips/blob/master/09.md) Lösch-Anfragen für die eigenen Recipe Packs eines Benutzers landen in [PR #367](https://github.com/zapcooking/frontend/pull/367). Die Veröffentlichungszuverlässigkeit verbessert sich durch [PR #366](https://github.com/zapcooking/frontend/pull/366), der jedes neue Rezept auf das Garden-Relay zwingt und eine Retry-Queue für das gemeinsame Rezept-Set hinzufügt. One-Click-authored Pack-Publishing landet in [PR #365](https://github.com/zapcooking/frontend/pull/365), und [PR #331](https://github.com/zapcooking/frontend/pull/331) fügt [NIP-46](/de/topics/nip-46/) Bunker-Login-Unterstützung hinzu. + +### Whitenoise-rs verschlüsselt seine lokale Datenbank + +[whitenoise-rs](https://github.com/marmot-protocol/whitenoise-rs) mergte [PR #758](https://github.com/marmot-protocol/whitenoise-rs/pull/758) und fügt SQLCipher-Verschlüsselung für die On-Disk-Whitenoise-Datenbank hinzu. Das schließt eine langbestehende At-Rest-Sicherheitslücke für den Marmot-Daemon-Stack. [PR #775](https://github.com/marmot-protocol/whitenoise-rs/pull/775) exponiert die erforderlichen Gruppenfähigkeiten, [PR #772](https://github.com/marmot-protocol/whitenoise-rs/pull/772) migriert Gruppen-Medien-Operationen auf sessionbesessene `MediaOps`, und [PR #773](https://github.com/marmot-protocol/whitenoise-rs/pull/773) extrahiert einen `SharedServices`-Holder als Teil des Session-Ops-Refactors. Auf der mobilen Seite aktiviert [whitenoise PR #577](https://github.com/marmot-protocol/whitenoise/pull/577) Boot-Auto-Restart für den Android-Foreground-Service und behebt den Fall, dass der Daemon nach einem Geräteneustart nicht zurückkommen würde. + +## Neu getrackt und entdeckt + +### Nostrord: ein NIP-29-Client mit Kotlin Multiplatform und WASM + +[Nostrord](https://github.com/nostrord/nostrord) ist ein neuer [NIP-29](/de/topics/nip-29/) Gruppen-Chat-Client, der auf den Discord-Ersatz-Anwendungsfall abzielt. Gruppen leben auf Nostr-Relays mit relay-erzwungener Mitgliedschaft, Rollen, Moderation und Zugriffskontrolle, sodass der Gruppenzustand vom ausgewählten NIP-29-Relay gehostet wird. Der Client-Entwickler kontrolliert keine separate Anwendungsdatenbank für diese Gruppen. Die Web-App läuft unter [web.nostrord.com](https://web.nostrord.com) und ist mit Kotlin Multiplatform gebaut, das zu WebAssembly kompiliert, mit nativen Android-, iOS- und Desktop-Builds in Entwicklung. Nostrord ist ein [OpenSats](https://opensats.org) Grant-Empfänger und interoperiert mit denselben NIP-29-Relays, die von Flotilla, Chachi und 0xChat verwendet werden. + +### Clave bringt NIP-46 Remote-Signing per APNs auf iOS + +[Clave](https://github.com/DocNR/clave) ist ein iOS-Remote-Signer in der Beta, der Nostr-Events signiert, wenn die App nicht geöffnet ist. Der private Schlüssel bleibt im iPhone-Keychain. Wenn ein Client eine [NIP-46](/de/topics/nip-46/) Remote-Signing-Anfrage sendet, liefert ein serverseitiger Proxy eine Apple Push Notification aus und weckt eine Notification Service Extension für bis zu 30 Sekunden. Diese Extension entschlüsselt die Anfrage mit [NIP-44](/de/topics/nip-44/) Verschlüsselung, signiert mit dem Keychain-Schlüssel und veröffentlicht die Antwort. Die Device-Token-Registrierung nutzt [NIP-98](https://github.com/nostr-protocol/nips/blob/master/98.md) HTTP-Auth, um Token-Hijacking zu verhindern. Clave unterstützt `bunker://` und `nostrconnect://` Pairing, Per-Client-Vertrauensstufen, Per-kind-Overrides und wurde mit Nostur und noStrudel getestet. + +### Treasures: dezentrales Geocaching auf Nostr + +[Treasures](https://gitlab.com/chad.curtis/treasures) ist eine Geocaching-Plattform, bei der Caches und Funde signierte Nostr-Events sind. Cache-Ersteller veröffentlichen adressierbare kind `37516` Events mit GPS-Koordinaten. Finder loggen die Entdeckung, indem sie einen QR-Code scannen, der am physischen Cache angebracht ist; der Code kodiert den Ersteller-pubkey, den `d` Tag des Caches und einen Verifikations-Private-Key, der als Beweis des physischen Besuchs dient. [NIP-57](/de/topics/nip-57/) Zaps können von Findern zu Cache-Erstellern fließen, und die Live-App ist unter [treasures.to](https://treasures.to) erreichbar. + +### smesh v0.5.1: selbstgehostetes Nostr-Relay, Client und Signer in einem Stack + +[smesh](https://git.smesh.lol/smesh/smesh) ist ein selbstgehosteter Nostr-Stack, geschrieben in Moxie, einer benutzerdefinierten Sprache, die von mleku aus Go und TinyGo abgeleitet wurde. Der Stack liefert eine native Relay-Binary mit HTTP-, WebSocket-, AUTH-, Such- und Blossom-Unterstützung; `sm3sh`, einen Web-Client, der zu ES-Modulen kompiliert wird; und eine Browser-Signer-Erweiterung mit NIP-07 Browser-Signing plus NIP-04 und NIP-44 Verschlüsselungsunterstützung. Jüngste Arbeit umfasst MLS (RFC 9420) Gruppen-Messaging in v0.5.0, negentropy Set-Reconciliation für Relay-Sync und eine Web-of-Trust-Graph-Engine. Der Code liegt in mlekus selbstgehosteter Forge auf `git.smesh.lol`, gebaut mit seinem eigenen `git-web`-Tool. Das verwandte [gitea-nostr-auth](https://git.smesh.lol/smesh/gitea-nostr-auth) Repo ist eine OAuth2/OIDC-Brücke für Gitea: Benutzer authentifizieren sich mit einem NIP-07 Browser-Signer, die Brücke entdeckt Relays über NIP-65 und Gitea erhält standardmäßige OIDC-Identity-Claims. + +### Surveil: ein Magic: The Gathering Deckbauer auf Nostr + +[Surveil](https://gitlab.com/chad.curtis/surveil) ist ein Nostr-Client für Magic: The Gathering Spieler, mit dem Benutzer Karten suchen, Decks bauen, Papierkarten auf Android mit On-Device-ML-Kit-OCR scannen und Decks im Netzwerk teilen können. Decks werden als adressierbare kind `37381` Events veröffentlicht, und die Deck-Event-Spezifikation ist in der `NIP.md` des Projekts dokumentiert. Die soziale Schicht ist aus standardmäßigen Nostr-Primitiven aufgebaut: NIP-22 (kind `1111`) Threaded-Comments, die auf jedes Deck beschränkt sind, NIP-25 (kind `7`) Reaktionen, [NIP-78](https://github.com/nostr-protocol/nips/blob/master/78.md) (kind `30078`) Profildaten für Spieler-Homes, kind `3` Follow-Feeds und Forks, die einen `a` Tag zurück zum Original-Deck tragen. [v0.1.6](https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6) wurde diese Woche mit Politur der mobilen UI, Verbesserungen des Life Counters, einer überarbeiteten About-Seite und einer Relay-Pille am Deck-Hero-Banner ausgeliefert. Die Web-App läuft überall dort, wo statisches HTML ausgeliefert wird, der Android-Build wird über [Zapstore](https://zapstore.dev) ausgeliefert, und kind `37381` Events werden auch nativ von [Ditto](https://about.ditto.pub/reference) als Magic-Decks indexiert. Das Repo liegt auf GitLab unter [chad.curtis/surveil](https://gitlab.com/chad.curtis/surveil). + +### Kleinere Ergänzungen: Fundstr, Nod City, deploy-nsite-to-pages und null--nostr + +[Fundstr](https://github.com/ritty65/Fundstr) ist eine Creator-Funding-Plattform auf Nostr, die Cashu-Ecash für einmalige und wiederkehrende Zusagen verwendet, mit Creator-Tier-Definitionen und Nostr-DMs. [Nod City](https://nod.city) ist eine Bitcoin-Service-Bewertungsseite, auf der Bewertungen signierte Nostr-Events sind und Rezensenten Zaps empfangen können; ein öffentliches Quellcode-Repo wurde nicht gefunden. [deploy-nsite-to-pages](https://github.com/Origami74/deploy-nsite-to-pages) ist eine GitHub Action, die eine nsite über `nsyte download` auf GitHub Pages spiegelt, mit Unterstützung für root kind `15128` und named kind `35128` nsites. [null--nostr](https://github.com/tami1A84/null--nostr), ebenfalls in den NIP-34-Daten dieser Woche entdeckt, ist der Client, der in der jüngsten OpenSats-Welle als Nurunuru behandelt wurde; er unterstützt MLS-Gruppen-Messaging, Amber, NIP-50-Suche, NIP-70 geschützte Posts, ProofMode-Badges und Zapstore-Distribution. + +FIPS ist kein neues Projekt für Compass. Es wurde in [Newsletter #6](/de/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking) und [Newsletter #10](/de/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples) behandelt. Die Datenbank zeigt jetzt auf das korrekte kanonische Repo, [jmcorgan/fips](https://github.com/jmcorgan/fips), und die NIP-34-Entdeckung dieser Woche brachte auch verwandte Git-über-Nostr-Mirrors wie `fips` und `awesome-fips` ans Licht. + +## Protokollarbeit + +### NIP-Updates + +Jüngste Vorschläge und Diskussionen im [NIPs-Repository](https://github.com/nostr-protocol/nips): + +**Diese Woche gemerged:** + +- **NIP-34 Git-Repositories: ungenutzte refs-Tag-Erweiterung entfernen** ([PR #2325](https://github.com/nostr-protocol/nips/pull/2325)): Entfernt eine `refs` Tag-Erweiterung aus [NIP-34](/de/topics/nip-34/), die definiert, aber ungenutzt war. Das Cleanup reduziert die Implementierungsambiguität für Git-über-Nostr-Tools. + +- **NIP-34 Git-Repositories: falschen NIP-09-Anspruch entfernen** ([PR #2326](https://github.com/nostr-protocol/nips/pull/2326)): Entfernt einen falschen Anspruch, dass [NIP-09](https://github.com/nostr-protocol/nips/blob/master/09.md) Lösch-Events den Repository-Zustand zurücksetzen können. NIP-09-Löschung ist eine clientseitige Event-Lösch-Anfrage, kein Repository-State-Machine. Die Korrektur verhindert, dass NIP-34-Implementierer Lösch-Hinweise als autoritativ für Repo-Resets behandeln. + +**Offene und implementierungsgetriebene Arbeit:** + +- **GitWorkshop kind `1111` Inline-Review-Kommentare**: Das Inline-Code-Review-Kommentar-kind ist in der `NIP.md` von GitWorkshop dokumentiert und jetzt aktiv im Einsatz, wurde aber noch nicht als formales NIP vorgeschlagen. Verdict-Events (kind `7321`) und `suggestion` Blöcke bleiben im Entwurf und wurden noch nicht ausgeliefert. Implementierungsfeedback von GitWorkshop und ngit wird bestimmen, ob die Formen ein eigenständiges Git-Review-NIP werden oder eine Anwendungskonvention bleiben, die auf NIP-34 aufgesetzt ist. + +- **Nostr Mail Core und Nostrmon**: Zwei neue benutzerdefinierte NIP-Entwürfe zirkulierten diese Woche. [Nostr Mail Core](https://njump.me/57d11cdf2f9ed73f7f39d6a7a6012ee3d642584ab11887f96a031f7d00fd9697) schlägt kind `1301` für RFC-2822-E-Mail-Inhalte vor, umschlossen von NIP-59 für private Zustellung und über NIP-05-aufgelöste Bridge-pubkeys mit Legacy-E-Mail verbunden. [Nostrmon](https://njump.me/5e9a8cee19d464f5f0322518ac9ccaf2399c69da6572346b4fb12d36acb17a27) skizziert adressierbare Event-kinds für Regionen, Karten, Kreaturen, NPCs, Spieler-Saves und Items. Beide bleiben benutzerdefinierte Entwürfe, keine gemergten NIPs. + +- **NIP-67: EOSE Completeness Hint** ([PR #2317](https://github.com/nostr-protocol/nips/pull/2317)): Der Vorschlag iteriert weiter über das Hinzufügen eines positiven Completeness-Markers zu `EOSE`, wodurch Relays "gespeicherte Events vollständig ausgeliefert" von Legacy-`EOSE`-Fällen unterscheiden können, in denen das Relay keinen Completeness-Anspruch erhebt. + +## Sechs Nostr-Aprile + +Der April gibt einen sauberen Querschnitt des Nostr-Entwicklungspfads: das Protokolldokument in 2021, frühe Client-Arbeit in 2022, die Post-Damus-Anwendungswelle in 2023, private Nachrichten und Git-über-Nostr-Arbeit in 2024, Blossom und Relay-Listen-Cleanup in 2025 und adoptionsfokussierte Client-Grants in 2026. + +### April 2021: das Protokolldokument vor dem NIPs-Repo + +Fiatjaf veröffentlichte den ursprünglichen Nostr-Artikel, ["Notes and Other Stuff Transmitted by Relays"](https://fiatjaf.com/nostr.html), am 20. November 2020. Dieser erste Text enthielt bereits die Kernform, die das Protokoll immer noch definiert: Benutzer signieren Events mit Schlüsseln, veröffentlichen sie an Relays und lesen von Relays ihrer Wahl. Das [`nostr-protocol/nostr` Commit-Log](https://github.com/nostr-protocol/nostr/commits?since=2021-04-01&until=2021-04-30) zeigt keine Commits zwischen dem 1. und 30. April. Aktivität liegt auf beiden Seiten: Commits vom März 2021 fügten frühe "nostwitter"-Links und einen `kind`-Filter hinzu, während der Mai 2021 NIP-02 umwidmete und die NIP-Autorenschaft hinzufügte. + +Im April 2021 gab es keinen öffentlichen Client-Markt, kein sichtbares Relay-Netzwerk und kein NIPs-Repo. Das Protokoll lebte immer noch als kleines Dokument und ein paar Experimente. Nostr war noch kein soziales Netzwerk oder eine Entwicklungsplattform geworden. Es war immer noch ein Relay/Key/Event-Modell, das auf seine erste nachhaltige Contributor-Welle wartete. + +### April 2022: NIPs lebten noch im Haupt-Repo + +Der April 2022 war der letzte Monat, bevor NIPs aus dem Haupt-Repo `nostr-protocol/nostr` ausgegliedert wurden. Da die Aufteilung noch nicht stattgefunden hatte, hatte das dedizierte [`nostr-protocol/nips`](https://github.com/nostr-protocol/nips) Repo keine April-Pull-Request-Historie. Im Haupt-Repo landeten drei April-Commits: ["Update readme to add nip12"](https://github.com/nostr-protocol/nostr/commit/bae286312a233b971bee5429adda7aff41747eb8) am 8. April von goswami1999, ["add kinds list"](https://github.com/nostr-protocol/nostr/commit/4b9e9d123273ba8a5c70d77df46922070c11c11d) am 25. April von jb55 und ["add js formatting to sample code"](https://github.com/nostr-protocol/nostr/commit/759997657f07e0344064228ffe5e93febe85d367) am 28. April von steliosrammos. + +Auch die Client-Arbeit begann Gestalt anzunehmen. Damus-Commits aus April 2022 fügten frühes Chatroom-Verhalten, Profil-Handling und App-Icons hinzu, während nostr-tools zum JavaScript-Bibliothekspfad für frühe Clients und Experimente wurde. Auf der Protokollseite gab NIP-12 Generic-Tag-Queries der Tag-Suche einen dokumentierten Platz, die kinds-Liste bewegte Nostr in Richtung eines Registry-Modells, und bessere JavaScript-Beispiele machten die Spezifikation für Client- und Bibliotheksautoren einfacher zu implementieren. Am 1. Mai verschob fiatjaf die NIPs in das dedizierte Repo. Der April 2022 war der letzte Monat der ursprünglichen Single-Repo-Ära. + +### April 2023: Post-Damus-Anwendungsexpansion + +Der April 2023 kam drei Monate nachdem Damus am 31. Januar 2023 im iOS App Store gestartet war und nachdem Jack Dorsey seinen Nostr Public Key gepostet hatte. Das Netzwerk hatte gerade seine erste große öffentliche Wachstumswelle absorbiert. Clients wie Damus, Snort, Iris, Coracle und Amethyst waren aktiv, während Relay-Betreiber lernten, was ein größerer sozialer Graph mit den Annahmen zu Bandbreite, Spam, Suche und Moderation machte. + +Der April 2023 hatte einen gemergten NIPs-PR: [PR #456](https://github.com/nostr-protocol/nips/pull/456), gemerged am 17. April, der NIP-19 bech32-Entity-Links zur NIP-21-URI-Behandlung hinzufügte. Die umliegenden Commits zeigen den Anwendungsdruck hinter der Protokollarbeit. Der April 2023 sah Arbeit an [NIP-45 COUNT](https://github.com/nostr-protocol/nips/commit/8b39976e78f90fe766ad7149e250777cddacbb5e), event-spezifischen Zap-Markern, [NIP-15 Marketplace](https://github.com/nostr-protocol/nips/commit/bf0a0da6a48b96467172414d8e41dc72b0ca379c), NIP-26 Delete-Delegation-Semantik, NIP-94 File-Metadaten, NIP-47 Wallet-Connect-Error-Handling und [NIP-30 Custom Emoji](https://github.com/nostr-protocol/nips/commit/e91ce3409e1ce8267fc07a21784d2538621267c3). Die Contributor-Liste hatte sich erweitert und umfasste fiatjaf, staab, pablof7z, Semisol, CodyTseng, sethforprivacy, mikedilger, AsaiToshiya, alexgleason, martindsq, frbittencourt und arkin0x. + +Damus, Snort, Iris, Coracle und Amethyst waren keine Demos rund um eine Spezifikation mehr; sie waren Produktionsclients, die sich mit Onboarding, Feeds, Spam, Zaps, Medien und Relay-Auswahl beschäftigten. Die Protokollarbeit vom April 2023 liest sich wie das Backlog, das diese Clients erstellt haben: Zaps, Marketplaces, File-Metadaten, Counting, Emoji und Identity-Links haben die Spezifikation alle über einfache Notes und Follows hinausgeschoben. + +### April 2024: private Nachrichten, Git-über-Nostr und Maintainer-Support + +Der April 2024 hatte zwei NIP-PR-Merges. [PR #1167](https://github.com/nostr-protocol/nips/pull/1167), gemerged am 10. April, behob verwirrende Terminologie in [NIP-46](/de/topics/nip-46/) Remote-Signing, wo Clients und Signer eine exakte Sprache für angefragte und autorisierte Aktionen benötigen. [PR #1108](https://github.com/nostr-protocol/nips/pull/1108), gemerged am 17. April, erweiterte [NIP-34](/de/topics/nip-34/) Git-Repositories mit Status-Events, Klärungen, optionalen Maintainern, Repo-Identifikatoren und Discoverability-Tags. Dieser Schritt machte Git-über-Nostr für ngit und später GitWorkshop praktikabler. + +[NIP-17](https://github.com/nostr-protocol/nips/commit/df30012430c88d49fb5b124992b04d5c61b6338b), früher NIP-24, landete am 24. April als sealed gift-wrapped Nachrichten für private DMs und kleine Gruppen-Chats. Client- und Bibliotheksarbeit lief parallel: Amethyst, Primal, Gossip, nostr-tools, NDK und rust-nostr waren alle im selben Zeitraum aktiv. + +OpenSats kündigte im April 2024 auch langfristige Unterstützung für Nostr-Entwickler an: [PabloF7z](https://opensats.org/blog/pablofz7-receives-lts-grant) am 9. April, [Stuart Bowman](https://opensats.org/blog/stuart-bowman-receives-lts-grant) am 12. April und [hzrd149](https://opensats.org/blog/hzrd149-receives-lts-grant) am 15. April. Diese Grants verschoben die Finanzierung von isolierten Projekt-Grants hin zu nachhaltiger Wartung von Relays, Bibliotheken und Client-Infrastruktur. + +### April 2025: dichte NIP-Bereinigung und Blossom-Formalisierung + +Der April 2025 war der dichteste Protokollmonat in dieser Retrospektive, mit sechzehn gemergten NIPs-PRs. Der Monat begann mit [PR #1846](https://github.com/nostr-protocol/nips/pull/1846), der Blockchain-Transaktionen und -Adressen zu NIP-73 hinzufügte, und [PR #1865](https://github.com/nostr-protocol/nips/pull/1865), der NIP-C0-Tags zur Tabelle der standardisierten Tags hinzufügte. Er ging weiter mit [PR #1801](https://github.com/nostr-protocol/nips/pull/1801) und [PR #1889](https://github.com/nostr-protocol/nips/pull/1889), die beide die Anleitung zur Republikation von kind `10002` Relay-Listen verbesserten, und [PR #1879](https://github.com/nostr-protocol/nips/pull/1879), der [NIP-65](/de/topics/nip-65/) verkleinerte und klärte. + +[PR #1822](https://github.com/nostr-protocol/nips/pull/1822) fügte NIP-B7 für Blossom-Interaktion hinzu und gab Nostr-Clients und Blossom-Servern nach mehr als einem Jahr informeller Praxis eine kanonische Koordinationsschicht. [PR #1051](https://github.com/nostr-protocol/nips/pull/1051) deprecatete [NIP-26](https://github.com/nostr-protocol/nips/blob/master/26.md), die Spezifikation zur delegierten Event-Signierung. NIP-26 war schwierig sicher zu implementieren gewesen und war weniger attraktiv geworden, als NIP-46 und andere Signer-Muster reifer wurden. + +Der Rest des Monats kombinierte Bereinigung mit Anwendungserweiterung: [PR #1882](https://github.com/nostr-protocol/nips/pull/1882) fügte Datenschutzrichtlinien- und Nutzungsbedingungsfelder zu [NIP-11](/de/topics/nip-11/) hinzu, [PR #1849](https://github.com/nostr-protocol/nips/pull/1849) erweiterte kind `39701` Web-Bookmarks unter NIP-B0, [PR #1891](https://github.com/nostr-protocol/nips/pull/1891) fügte dieses Bookmark-kind zur README hinzu, und [PR #1895](https://github.com/nostr-protocol/nips/pull/1895) fügte NIP-B0 standardisierte Tags hinzu. OpenSats kündigte am 16. April seine [elfte Welle der Nostr-Grants](https://opensats.org/blog/eleventh-wave-of-nostr-grants) an und finanzierte Swae, HAMSTR, Vertex, Nostr Double Ratchet und Nostr Game Engine. Primal, Coracle, noStrudel, nostr-tools, NDK und rust-nostr lieferten in diesem Zeitraum ebenfalls aus, sodass die Protokollbereinigung neben aktiver Client- und Bibliotheksarbeit stand. + +### April 2026: NIP-34-Härtung, Badges und adoptionsfokussierte Grants + +Der April 2026, der Monat, mit dem diese Ausgabe abschließt, hatte vier gemergte NIPs-PRs. Der erste war [PR #2276](https://github.com/nostr-protocol/nips/pull/2276), gemerged am 1. April, der [NIP-58](https://github.com/nostr-protocol/nips/blob/master/58.md) Profile Badges auf kind `10008` änderte und kind `30008` Badge-Sets hinzufügte, wodurch Badge-Zuweisung und Badge-Sammlungen komponierbarer wurden. Eine zweite Usability-Änderung für Git-über-Nostr kam in [PR #2312](https://github.com/nostr-protocol/nips/pull/2312), gemerged am 10. April, die `nostr://` Clone-URL-Semantik zu [NIP-34](/de/topics/nip-34/) hinzufügte. Die Bereinigungen vom 25. April, [PR #2325](https://github.com/nostr-protocol/nips/pull/2325) und [PR #2326](https://github.com/nostr-protocol/nips/pull/2326), entfernten ungenutzte und falsche NIP-34-Sprache. + +Verwandte Commits schärfen dieselben Oberflächen. Am 22. April fügte fiatjaf eine Blossom-Server-Liste zu NIP-51 hinzu und passte die NIP-29-Metadaten-Bearbeitung an das PUT-Style-Verhalten von Flotilla an. Am 26. April benannte er NIP-5A zur Klarheit um. Der April 2026 konzentrierte sich darauf, bereits genutzte Protokolloberflächen einfacher zu implementieren und schwerer fehlzuinterpretieren zu machen. + +OpenSats kündigte am 8. April seine [sechzehnte Welle der Nostr-Grants](https://opensats.org/blog/sixteenth-wave-of-nostr-grants) an und unterstützte Amethyst Desktop, Nostr Mail, Nostrord, Nurunuru (null--nostr) und eine HAMSTR-Erneuerung: Desktop-Clients, E-Mail-ähnliches Messaging, Gruppen-UX, japanisches Onboarding und Off-Grid-Konnektivität. + +--- + +*Danke fürs Lesen von Nostr Compass #20. [DM uns auf Nostr](https://nostr.com) mit Tipps, Korrekturen oder neuen Projekten, die wir behandeln sollen.* diff --git a/content/de/newsletters/2026-05-21-newsletter.md b/content/de/newsletters/2026-05-21-newsletter.md new file mode 100644 index 0000000..e56ae71 --- /dev/null +++ b/content/de/newsletters/2026-05-21-newsletter.md @@ -0,0 +1,181 @@ +--- +title: 'Nostr Compass #23' +date: 2026-05-21 +publishDate: 2026-05-21 +draft: false +type: newsletters +translationOf: /en/newsletters/2026-05-21-newsletter.md +translationDate: 2026-07-01 +--- + +Primal 3.5 liefert eine überarbeitete Android-Shell aus, Amethyst fügt Onchain-Bitcoin-Zaps hinzu, White Noise erhält Markdown-Rendering und Deep Links, Keycast besteht ein Security-Audit, und AgentNoise ermöglicht die Steuerung lokaler KI-Coding-Agenten über Marmot-verschlüsselten Chat. Hostr startet eine P2P-Vermietungsplattform auf Nostr mit vier NIP-Entwürfen für Listings, Reservierungen und EVM-basierten Escrow. Angor migriert verschlüsseltes Messaging von NIP-04 zu NIP-44, Dart NDK fügt NIP-77 und einen Web-Signer hinzu, Alby js-sdk v8 liefert nativen NWC-Multi-Relay-Reconnect, und KeyChat schließt eine Forward-Secrecy-Lücke im Signal One-Time-Prekey-Löschen. Auf Protokollseite erreicht Mostros Anti-Abuse-Bond Phase 2, Wisp liefert private Antworten und gift-wrapped Reaktionen, und eine Welle von Namecoin-NIP-05-Implementierungen berührt in einer einzigen Woche ein halbes Dutzend Clients. + +## Top-Stories + +### Primal 3.5 für Android + +Primal, der Social-Client, gestützt auf seine eigene Caching-Relay-Infrastruktur, lieferte diese Woche [3.5.9](https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.9) mit einer überarbeiteten Anwendungs-Shell aus. Das Redesign ersetzt die vorherige Navigationsstruktur mit einem aktualisierten Layout und einem neuen Explore-Screen, der der Haupt-Discovery-Oberfläche ein eigenes dediziertes Zuhause gibt. Das Release fügt Audio-Wiedergabe für Link-Vorschauen hinzu, sodass in Notes eingebettete Audiodateien inline abgespielt werden, ohne den Feed zu verlassen. NIP-05-Verifizierungs-Badges erscheinen jetzt inline auf Profilen und machen die Identitätsbestätigung auf einen Blick sichtbar. Die Notification-Filterung wurde überarbeitet und lässt Benutzer eingrenzen, welche Event-Typen ihre Notification-Liste erreichen. Der Editor erhielt besseres Event-Link-Handling, und die zugrunde liegende Datenbankschicht erhielt Stabilitäts-Fixes. + +### White Noise: Markdown, Deep Links und Audio-Metadaten + +White Noise, die Marmot-verschlüsselte Gruppen-Messaging-App, gebaut auf Nostr und MLS ([RFC 9420](https://www.rfc-editor.org/rfc/rfc9420)), hatte eine der bisher geschäftigsten Wochen sowohl in Frontend- als auch Backend-Repositories. + +Im Frontend fügt [PR #665](https://github.com/marmot-protocol/whitenoise/pull/665) vollständiges Markdown-Rendering für Chat-Nachrichten hinzu, sodass fett, kursiv, Code-Blöcke und Links jetzt nativ in der Nachrichtenansicht gerendert werden. [PR #675](https://github.com/marmot-protocol/whitenoise/pull/675) aktiviert den Leave-Group-Flow, der zuvor für Nicht-Letzt-Admins blockiert war, und [PR #661](https://github.com/marmot-protocol/whitenoise/pull/661) fügt native Deep-Link-Unterstützung für `whitenoise://` und `whitenoise-staging://` URIs für Benutzer, Chats und Einstellungen hinzu, ohne HTTP-Redirect-Infrastruktur zu benötigen. + +Im Backend in whitenoise-rs sorgt [PR #835](https://github.com/marmot-protocol/whitenoise-rs/pull/835) dafür, dass die Key-Package-Rotation korrekt funktioniert, indem der `d_tag`-Slot für kind:30443 Veröffentlichungen wiederverwendet wird, was NIP-33 Replaceable-Event-Semantik ermöglicht, sodass aufeinanderfolgende Key-Package-Rotationen das vorherige Event auf Relays ersetzen und nur das aktuelle Key-Package behalten. [PR #833](https://github.com/marmot-protocol/whitenoise-rs/pull/833) erweitert `FileMetadata` um optionale `duration_ms`- und `waveform`-Felder für Audio-Anhänge, koordiniert mit MDKs [PR #300](https://github.com/marmot-protocol/mdk/pull/300), der dieselben Felder zu MIP-04-Medien-Tags hinzufügt. Ein neuer `whitenoise-markdown`-Crate ([PR #836](https://github.com/marmot-protocol/whitenoise-rs/pull/836)) ersetzt den vorherigen nostr-sdk-Token-Parser durch eine dedizierte Markdown-Rendering-Bibliothek. + +Die Marmot-Protokollspezifikation selbst erhielt einen Security-Fix in [PR #68](https://github.com/marmot-protocol/marmot/pull/68), der ein Sicherheitsproblem schließt, indem HKDF-SHA256 für Bildschlüsselableitungen in MIP-01 explizit spezifiziert wird, wodurch Ambiguität entfernt wird, die zu Implementierungs-Divergenz führen könnte. In MDK bereinigt [PR #307](https://github.com/marmot-protocol/mdk/pull/307) Welcome-Fehlerbegründungen und begrenzt die gespeicherte Länge, was einen separaten Sicherheitsbefund schließt. + +### Amethyst v1.10.0: Onchain-Bitcoin-Zaps + +Amethyst lieferte diese Woche vier Releases aus, wobei [v1.10.0](https://github.com/vitorpamplona/amethyst/releases/tag/v1.10.0) die Schlagzeile war. Das Release fügt Unterstützung für NIP-BC Onchain-Bitcoin-Zaps hinzu und ermöglicht Benutzern, Zaps direkt onchain über Bitcoin-Transaktionen zu senden, zu empfangen und anzuzeigen. Frühere Releases in der Reihe behoben die Blossom-Blob-Erkennung, um nicht-konforme Dateinamen abzulehnen ([v1.09.2](https://github.com/vitorpamplona/amethyst/releases/tag/v1.09.2)), patchten ProGuard-Regeln für Desktop-Builds und mergten [PR #2977](https://github.com/vitorpamplona/amethyst/pull/2977), um Onchain-Bitcoin-Zapper als dedizierte ₿-Zeile in der erweiterten Reaktionen-Galerie anzuzeigen. Ein in Arbeit befindlicher On-Chain-Transaktions-Historien-Screen mit Paginierung landete in [PR #2974](https://github.com/vitorpamplona/amethyst/pull/2974). + +### AgentNoise: Coding-Agenten über White Noise steuern + +[AgentNoise](https://github.com/nvk/agentnoise) von nvk ist ein Rust-nativer Desktop-Helper, mit dem man ein White-Noise-Telefon als Steuerungsoberfläche für lokale Codex- und Claude-Coding-Agent-Sessions verwenden kann. Das Tool lauscht auf einen oder mehrere White-Noise-Chats, authentifiziert Absender über einen First-Pairing-PIN-Flow und startet lokale Coding-Agenten über den konfigurierten Launcher. Das Senden von `/claude ` vom Telefon öffnet eine neue White-Noise-Arbeitssession, benannt nach dem Maschinen-Hostname und einer kurzen Prompt-Zusammenfassung, und streamt dann Fortschrittsupdates und die endgültige Ausgabe zurück in diesen Chat. Es ist bewusst Rust-first gehalten und hält Node aus dem vertrauenswürdigen Bridge-Pfad heraus. Das Projekt erreichte diese Woche [v0.1.24](https://github.com/nvk/agentnoise/releases/tag/v0.1.24) und fügte kürzere Telefon-lesbare Antworten, Job-Referenzen per kurzem eindeutigem Präfix und einen optionalen lokalen Session-Watcher hinzu. AgentNoise treibt die `wn`- und `wnd`-CLIs aus `marmot-protocol/whitenoise-rs` als Subprozesse an, sodass es seinen Nostr-Transport mit dem White-Noise-Client selbst teilt. + +### Keycast-Security-Audit abgeschlossen + +[Keycast](https://github.com/marmot-protocol/keycast), der teamorientierte NIP-46-Remote-Signing-Server, der Nostr-Private-Keys verschlüsselt at rest in SQLite speichert, hat im Mai 2026 ein Security-Audit abgeschlossen. Der Härtungsdurchgang adressierte Auth-, Berechtigungs-, Datenintegritäts- und Abhängigkeitsprobleme, und die Ergebnisse sind in [AUDIT.md](https://github.com/marmot-protocol/keycast/blob/master/AUDIT.md) dokumentiert. Änderungen umfassen: NIP-98 HTTP-Auth erfordert jetzt genau einen `u` Tag und einen `method` Tag, lehnt veraltete Zeitstempel ab und validiert `payload`-Hashes; die `ALLOWED_PUBKEYS`-Allowlist wird exakt geparst und serverseitig durchgesetzt; leere Policies verweigern jetzt standardmäßig Sign/Encrypt/Decrypt-Anfragen; Foreign-Key-Enforcement ist auf SQLite-Verbindungen aktiviert; und verschachtelte App-Routen wie `/teams/:id` sind serverseitig geschützt. Eine SQL-Migration normalisiert alte Allowed-Kinds-Berechtigungs-JSON beim Start. Das Projekt befindet sich noch in einem frühen Stadium, und das Audit nennt Restpunkte, die vor dem Vertrauen mit echten Teamschlüsseln zu erledigen sind. + +### Scramble: Marmot-Client für Desktop und Android + +[Scramble](https://github.com/DavidGershony/Scramble) (früher OpenChat) ist ein .NET/Avalonia-Desktop- und Android-Client für das [Marmot-Protokoll](/de/topics/marmot/), das MIPs 00-04 implementiert: KeyPackage-Veröffentlichung (kind:30443), Gruppen-Metadaten mit der NostrGroupData-MLS-Erweiterung, NIP-59 gift-wrapped Welcome-Events (kind:444), ChaCha20-Poly1305 verschlüsselte Nachrichten (kind:445) und Blossom verschlüsselte Medien-Anhänge. Es ist vollständig interoperabel mit White Noise und jedem anderen Marmot-kompatiblen Client. + +Das Projekt lieferte diese Woche 13 Releases aus, mit Multi-Device-Unterstützung als Hauptfeature. Jedes Gerät generiert einen eindeutigen KeyPackage-Slot (ein `d`-Tag auf kind:30443). Beim Start holt Scramble die eigenen KeyPackages des Benutzers von Relays, erkennt Peer-Device-Slot-IDs und fügt sie automatisch bestehenden MLS-Gruppen über den Staged-Commit-Flow hinzu. Auto-Add ist auf Gruppen beschränkt, in denen der aktuelle Benutzer Admin ist; Nicht-Admin-Gruppen werden übersprungen, mit dem Hinweis, den Gruppen-Admin zu fragen. Ein Forward-Secrecy-Disclosure-Banner informiert neu verknüpfte Geräte, dass alte Nachrichten nicht verfügbar sind. Ein Slot-ID-Reconciliation-Durchgang (`TryReconcileSlotId`) verarbeitet Geräte, die von Pre-Multi-Device-Versionen migriert wurden, indem Relay-KeyPackage-Bytes gegen lokales Schlüsselmaterial abgeglichen werden, um das korrekte `d`-Tag zu übernehmen. External-Signer-Reconnect für Amber- und NIP-46-Benutzer wurde ebenfalls behoben: der `IsConnected`-Guard, der den eingebauten Auto-Reconnect von `ExternalSignerService` blockierte, wurde an allen neun Aufrufstellen in `NostrService` entfernt. + +### Hostr: P2P-Vermietungsplattform auf Nostr + +[Hostr](https://hostr.network) ([Quelle](https://github.com/sudonym-btc/hostr)) ist eine Peer-to-Peer-Vermietungsplattform, die vollständig auf Nostr aufgebaut ist. Sie deckt den gesamten Airbnb-artigen Flow ab (Suche und Auflistung von Immobilien, Verhandlung von Reservierungen und Zahlungsabwicklung) mithilfe von vier NIP-Entwürfen, die das Projekt parallel zur Anwendung entwickelt. + +Das Accommodation-NIP erweitert [NIP-99](https://github.com/nostr-protocol/nips/blob/master/99.md) Classified Listings (kind:30402 aktiv, kind:30403 Entwurf) um unterkunftsspezifische Tags für Typ (`room`, `house`, `apartment`, `villa`, `hotel`, `hostel`, `resort`), Check-in/Check-out-Zeiten, Mindestaufenthalt und H3-Geospatial-Cell-Indexes für standortbasierte Suche in konfigurierbarer Präzision. Das Reservation-NIP definiert ein vollständiges Verhandlungs- und Lebenszyklus-Protokoll: kind:32122 replaceable Reservierungs-Events tragen eine `d` Trade-ID, einen Listing-Anker `a` Tag und Teilnehmer-`p`-Tags mit Rollen (`buyer`, `seller`, `escrow`); kind:1327 strukturierte Message-Rumors liefern private negotiate-stage Gegenangebote per NIP-59-Gift-Wraps, sodass die Verhandlung von öffentlichen Relays fernbleibt; kind:1326 Append-Only-Transitions-Events erstellen einen öffentlichen Audit-Trail, sobald eine Reservierung committed. Käuferprivatsphäre wird durch temporäre Nostr-Keys pro Trade bewahrt, die über verschlüsselte `participant_proof`-Tags an die reale Identität des Käufers gebunden sind. Das Escrow-NIP definiert kind:30303 Escrow-Service-Ankündigungen und kind:17388 User-Trust-Deklarationen; die Referenzimplementierung nutzt EVM-Smart-Contracts auf Rootstock, wobei `contractBytecodeHash` es Clients erlaubt zu verifizieren, dass der deployte Contract mit einer bekannten geprüften Implementierung übereinstimmt. Das Marketplace-Listing-NIP definiert generische Tags, die von allen NIP-99-Marketplace-Profilen geteilt werden, einschließlich `instantBook`, `negotiable`, `quantity`, `securityDeposit`, `cancellationPolicy` und `maxDisputePeriod`. Diese Woche bereitete das Projekt seine App-Store-Einreichung vor und mergte MCP-Client-Identity-Unterstützung für agent-basierte Automatisierung. + +Zwei neue Einträge erschienen diese Woche auf der Shakespeare-MiniApps-Plattform: [InkPress](https://inkpress.shakespeare.wtf), ein KI-Magazin-Generator, der strukturierte magazinartige Inhalte als Nostr-Events veröffentlicht, und [PressStr](https://pressstr.shakespeare.wtf), eine Schreib- und Publishing-Plattform für den Soapbox-Stack. + +## Diese Woche ausgeliefert + +### ngit v2.4.4 + +**ngit** lieferte [v2.4.4](https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.4) aus und fügte `ngit sync --trust-server` (`-t`) für Fälle hinzu, in denen ein Git-Server dem Nostr-Zustand voraus ist. Wenn diese Situation erkannt wird, meldet sync die betroffenen Refs und verlangt das Flag, um ein aktualisiertes State-Event zu signieren und zu veröffentlichen; eine `nostr.trust-server-domains` Git-Config-Einstellung bietet eine mit Semikolon getrennte Allowlist für Server, denen automatisch ohne das Flag vertraut werden soll. + +### Amber v6.1.0-pre3 fügt PSBT-Signierung hinzu + +**Amber** veröffentlichte [v6.1.0-pre3](https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre3) mit verbessertem Layout für neue App-Verbindungen, Crash-Fixes und einer Select/Deselect-All-Option auf dem Berechtigungs-Screen. [PR #438](https://github.com/greenart7c3/Amber/pull/438) fügt PSBT-Signing-Unterstützung sowohl über den Intent-basierten als auch über den NIP-46 Relay-basierten Pfad hinzu und erlaubt Amber, Partially Signed Bitcoin Transactions zu signieren, ohne die nsec der anfragenden App preiszugeben. + +### Wisp v1.1.0 liefert private Antworten und verwirft Amber-Unterstützung + +**Wisp** veröffentlichte [v1.1.0](https://github.com/barrydeen/wisp/releases/tag/v1.1.0) mit privaten Antworten per NIP-17-Gift-Wrap ([PR #540](https://github.com/barrydeen/wisp/pull/540)), gift-wrapped Reaktionen und DIP-03-Zaps auf private Antworten ([PR #543](https://github.com/barrydeen/wisp/pull/543)), Auto-Übersetzung für Notes ([PR #523](https://github.com/barrydeen/wisp/pull/523)) und einer Register-artigen Fiat-Eingabe im Zap-Dialog. [PR #541](https://github.com/barrydeen/wisp/pull/541) migriert private Zaps von einem hausgemachten DM-Relay-Klartext-Schema zu DIP-03 mit korrektem DM-Relay-Routing. Derselbe Release-Zyklus entfernte die NIP-55-Remote-Signer-Unterstützung ([PR #531](https://github.com/barrydeen/wisp/pull/531)), verwarf Amber und andere externe Signer-Integrationen und entfernte das gebündelte lokale Relay ([PR #533](https://github.com/barrydeen/wisp/pull/533)). Wisp ist ein Nostr-Social-Client für Android. + +### Calendar by Formstr v1.5.4 behebt Gift-Wrap für neue Teilnehmer + +**Calendar by Formstr** lieferte [v1.5.4](https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.5.4) aus (das neueste in einer v1.5.2 → v1.5.4 Sequenz). [PR #160](https://github.com/formstr-hq/nostr-calendar/pull/160) behebt einen Bug, bei dem das Bearbeiten eines privaten Kalender-Events mit neuen Teilnehmern das aktualisierte Event mit den neuen pubkeys in `p` Tags veröffentlichte, aber nie Gift-Wrap-Einladungen an diese Teilnehmer erstellte oder auslieferte, was den Einladungs-Flow für Last-Minute-Ergänzungen brach. [PR #156](https://github.com/formstr-hq/nostr-calendar/pull/156) fügt Fehlerbehandlung rund um die Private-Event-Entschlüsselung hinzu, sodass Clients nicht mehr bei unentschlüsselbaren Events werfen, und [PR #138](https://github.com/formstr-hq/nostr-calendar/pull/138) korrigiert wiederkehrende Event-Zeiten, die über Zeitzonen drifteten. + +### Applesauce v6.1.0 fügt NIP-34-Git-Casts und NIP-51-Lookup-Relays hinzu + +**Applesauce** veröffentlichte [v6.1.0](https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.1.0) über seine Pakete hinweg mit signifikanter NIP-34-Unterstützung (Git-über-Nostr): applesauce-common fügt neue `GitRepository`-, `GitGraspList`- und `FavoriteGitRepos`-Casts plus passende Factories hinzu und exponiert `User.favoriteGitRepos$`, `User.gitAuthors$` und `User.graspServers$` als reaktive Eigenschaften, sodass Anwendungen die gefolgten Git-Repos, Repo-Maintainer und konfigurierten GRASP-Server eines Benutzers direkt aus demselben User-Objekt auflisten können. Dasselbe Release fügt Unterstützung für NIP-51 kind 10086 Lookup-Relay-Listen hinzu, eine jüngste Ergänzung zur Relay-List-Familie, die verwendet wird, um herauszufinden, wo bestimmte Daten zu finden sind. applesauce-core gewinnt `replaceableAddress` auf `EventCast` für NIP-01 Replaceable-Address-Lookup, plus `pointer`, `kind` und einen `getReplaceableAddressForEvent`-Helper und fügt eine `timeline$()`-Methode zum Basis-`User`-Cast hinzu. [PR #73](https://github.com/hzrd149/applesauce/pull/73) behebt Pool-Manual-Methoden, die offline Relays stillschweigend fallen ließen. + +### Sprout v0.0.16 liefert Sprig-Binary und Huddle-Protokoll v2 + +**Sprout** von Block, ein selbstgehosteter Nostr-Relay-basierter Team-Workspace, in dem Menschen und KI-Agenten dieselben Räume und Event-Logs teilen, lieferte [v0.0.16](https://github.com/block/sprout/releases/tag/v0.0.16) der Desktop-App zusammen mit Rolling Builds des neuen Sprig-All-in-One-Binaries ([PR #605](https://github.com/block/sprout/pull/605)) aus, das den ACP-Harness, den Agenten und das Developer-MCP in ein einzelnes Busybox-artiges Binary bündelt, für einfaches Deployment. Das `--no-memory`-Flag, hinzugefügt in [PR #611](https://github.com/block/sprout/pull/611), erlaubt Betreibern, die NIP-AE-Core-Memory-Injection für den ACP-Harness zu deaktivieren. Auf der Echtzeit-Seite erweitert [PR #609](https://github.com/block/sprout/pull/609) das Huddle-Voice-Protokoll auf einen v2 Frame-Header, der bis zu 10 gleichzeitige Peers unterstützt. + +### Nostrord v1.0.3 fügt OS-Keychain und Multi-Account hinzu + +**Nostrord** veröffentlichte [v1.0.3](https://github.com/nostrord/nostrord/releases/tag/v1.0.3) mit lokaler Schlüsselspeicherung, gehärtet über OS-Keychain und Passphrase-Fallback, Multi-Account-Unterstützung und einem tappbaren Bunker-QR-Code, der die Signer-App auf Android öffnet. + +### Angor migriert zu NIP-44 und liefert Security-Hardening aus + +**Angor**, die Bitcoin-Crowdfunding-App auf Basis von Nostr und Taproot, lieferte diese Woche drei instabile Releases aus ([v0.2.24](https://github.com/block-core/angor/releases/tag/v0.2.24), [v0.2.25](https://github.com/block-core/angor/releases/tag/v0.2.25) und [v0.2.26](https://github.com/block-core/angor/releases/tag/v0.2.26)) mit einer Reihe von Security-Hardening- und Nostr-Integrations-Änderungen. [PR #860](https://github.com/block-core/angor/pull/860) migriert das verschlüsselte Nostr-Messaging von NIP-04 zu NIP-44 und ersetzt das deprecatete XOR-basierte Schema durch ChaCha20-Poly1305-Verschlüsselung. [PR #861](https://github.com/block-core/angor/pull/861) erlaubt Blossom-Medien-Uploads ohne ausgewählte Wallet, indem ein ephemerer Nostr-Auth-Key verwendet wird, wodurch Uploads für Benutzer entsperrt werden, die noch keine Wallet verbunden haben. Die Security-Serie adressierte mehrere gehärtete Kategorien: [PR #854](https://github.com/block-core/angor/pull/854) fügt Typsicherheit für AngorKey und Mnemonic-Memory-Schutz hinzu, [PR #856](https://github.com/block-core/angor/pull/856) erzwingt Protokoll-Level-Validierung für Timelocks, Fee-Rates, Dust-Schwellenwerte und Penalty-Regeln, und [PR #851](https://github.com/block-core/angor/pull/851) wendet Non-Breaking-Hardening über acht Kategorien mittleren und niedrigen Schweregrads an. [PR #859](https://github.com/block-core/angor/pull/859) behebt GrapheneOS-Kompatibilität, indem AOT-Kompilierung aktiviert und Runtime-Code-Generierung entfernt wird, und [PR #855](https://github.com/block-core/angor/pull/855) verhindert Wallet-Verlust bei Android-Swipe-Kill, indem der Wallet-Zustand persistiert wird, bevor das OS den Prozess beendet. + +### Alby js-sdk v8.0 liefert NWC-Multi-Relay-Reconnect + +**Alby js-sdk** veröffentlichte die v8.0-Linie ([v8.0.1](https://github.com/getAlby/js-sdk/releases/tag/v8.0.1) bis [v8.0.3](https://github.com/getAlby/js-sdk/releases/tag/v8.0.3)) mit NWC-Multi-Relay-Subscription-Unterstützung. [PR #516](https://github.com/getAlby/js-sdk/pull/516) aktualisiert die nostr-tools-Abhängigkeit und aktiviert nativen Auto-Reconnect über mehrere Relays, ersetzt den vorherigen Polling-Ansatz durch relay-native Reconnection-Logik. [PR #542](https://github.com/getAlby/js-sdk/pull/542) ersetzt alle `console.debug`-Aufrufe durch eine injizierbare Logger-Schnittstelle, sodass Anwendungsentwickler SDK-Diagnosen durch ihre eigene Logging-Infrastruktur routen können. Das Release verwirft den WebSocket-Polyfill und erfordert Node.js 22 oder höher für serverseitige Konsumenten. v8.0.2 fügte einen Fix für einen Utils-Crypto-Import-Bug hinzu, der bestimmte Bundler brach. + +### KeyChat v1.41.1 behebt Forward Secrecy + +**KeyChat**, eine Messaging-App, die das Signal-Protokoll mit Nostr-Relay-Transport kombiniert, veröffentlichte [v1.41.1+6513](https://github.com/keychat-io/keychat-app/releases/tag/v1.41.1+6513). Der Schlagzeilen-Fix erzwingt Forward Secrecy, indem Signal-One-Time-Prekeys unmittelbar nach einer erfolgreichen Entschlüsselung gelöscht werden, was eine Lücke schließt, in der ein zurückbehaltener Prekey verwendet werden könnte, um vergangene Nachrichten zu entschlüsseln, falls das Gerät später kompromittiert wird. Das Release fügt außerdem URL-Vorschau für Nachrichten hinzu, die aus einem einzelnen Link bestehen, zentralisiert Medien-Auto-Download unter einem neuen `FileDownloadManager` mit einem 20-MB-Auto-Schwellenwert und refaktoriert das NIP-11-Relay-Info-Fetching, um beim Kaltstart einen Force-Refresh zu erzwingen, sodass Paid-Relay-Fee-Konfigurationen immer korrekt geladen werden. + +## In Entwicklung + +**Citrine** mergte [PR #151](https://github.com/greenart7c3/Citrine/pull/151) und implementierte NIP-70-Enforcement: das Android-Relay blockiert jetzt Reposts, die geschützte Event-Inhalte einbetten, wie die Spezifikation es verlangt. [PR #149](https://github.com/greenart7c3/Citrine/pull/149) fügt Anzeige- und Kopieraktionen für mehrere Verbindungsadressen, Localhost, lokales WLAN und Tor, vom Relay-Einstellungs-Screen aus hinzu. [PR #141](https://github.com/greenart7c3/Citrine/pull/141) fügt NIP-42 AUTH-Challenge-Handling über externe Signer-Integration mit Amber hinzu. + +**Mostro** erreichte Phase 2 seines Anti-Abuse-Bond-Rollouts. [PR #737](https://github.com/MostroP2P/mostro/pull/737) landet Solver-directed Dispute-Slash-Logik: Admin-Handler konsumieren jetzt die `BondResolution`-Payload von mostro-core, wodurch ein Admin bei der Auflösung eines Disputes den Bond einer der Parteien slashen kann. Phase 1.5, gemerged in [PR #736](https://github.com/MostroP2P/mostro/pull/736), führte eine dedizierte `PayBondInvoice`-Aktion und einen `WaitingTakerBond`-Status ein und trennte die Anti-Abuse-Bond-Zahlung des Takers vom Trade-Payout des Käufers. Der Mobile-Client fügte die vollständige Phase-1.5-UX in [PR #592](https://github.com/MostroP2P/mobile/pull/592) hinzu. Mostro ist ein Peer-to-Peer-Bitcoin-Exchange-Protokoll auf Basis von Nostr. + +**Damus** mergte [PR #3773](https://github.com/damus-io/damus/pull/3773) und stellte den Relay-Signal-Indikator wieder her, und [PR #3775](https://github.com/damus-io/damus/pull/3775) behebt Relays, die sich nach einem anfänglichen Verbindungsfehler nicht wieder verbanden. + +**rust-nostr** mergte [PR #1358](https://github.com/rust-nostr/nostr/pull/1358) und fügte Event-Finalization-Traits und NIP-spezifische Event-Builder hinzu, was es einfacher macht, korrekt typisierte Events für bestimmte Protokollfunktionen zu konstruieren. [PR #1363](https://github.com/rust-nostr/nostr/pull/1363) portiert einen Fix zurück, der sicherstellt, dass der NIP-46-Signer Notifications abonniert, bevor er die Connect-Antwort sendet, was eine Race-Condition schließt, bei der Client-Nachrichten, die unmittelbar nach Connect eintrafen, verpasst werden konnten. + +**dart-nostr** mergte [PR #44](https://github.com/ethicnology/dart-nostr/pull/44) und fügte einen Namecoin-`.bit`-Relay-Resolver und TLSA-Pin-Records hinzu, was Flutter-Anwendungen erlaubt, `wss://example.bit/`-Relay-URLs über Namecoin-DNS zu ihren tatsächlichen WebSocket-Adressen aufzulösen. + +**Dart NDK** (das Dart/Flutter-Nostr-Development-Kit, jetzt bei `relaystr/ndk`) mergte [PR #464](https://github.com/relaystr/ndk/pull/464) und implementierte NIP-77, das Offline-Event-Signing-Protokoll. Auf Signer-Seite fügen [PR #602](https://github.com/relaystr/ndk/pull/602) und [PR #601](https://github.com/relaystr/ndk/pull/601) einen web-spezifischen Event-Signer und eine `PlatformEventVerifier`-Abstraktion hinzu, sodass Flutter-Web-Apps den Plattform-Signer ohne separaten Codepfad nutzen können; [PR #604](https://github.com/relaystr/ndk/pull/604) führt eine Event-Signer-Factory für Runtime-Signer-Auswahl ein. [PR #608](https://github.com/relaystr/ndk/pull/608) fügt `getDmRelays()` zum Abrufen einer NIP-17-DM-Relay-Liste eines Benutzers (kind:10050) hinzu, und [PR #600](https://github.com/relaystr/ndk/pull/600) behebt die NIP-46 Signed-Field-Preservation, sodass Remote-Signer keine Felder beim Round-Trip verlieren. + +**Pages by Form\*** ([Repo](https://github.com/formstr-hq/nostr-docs)), Formstrs Nostr-natives kollaboratives Dokument-App, gehostet auf [pages.formstr.app](https://pages.formstr.app), mergte diese Woche vier PRs, die die Encrypted-Attachment- und Dokument-Management-Flows straffen. [PR #37](https://github.com/formstr-hq/nostr-docs/pull/37) behebt fehlende Bilder in DOCX-, HTML- und PDF-Exports, indem verschlüsselte Anhänge inline eingebunden werden: es holt ``-Blobs von Blossom-Servern, entschlüsselt sie mit AES-GCM 256-Bit unter Verwendung des gespeicherten Schlüssels und Nonce, validiert den Bild-MIME-Typ und konvertiert sie in Base64-Data-URLs, sodass Exports Bilder erhalten, die nur auf Blossom in verschlüsselter Form existieren. [PR #39](https://github.com/formstr-hq/nostr-docs/pull/39) fügt einen lokalen Dokument-Suchmechanismus hinzu, [PR #38](https://github.com/formstr-hq/nostr-docs/pull/38) räumt den Rename-Flow auf, und [PR #40](https://github.com/formstr-hq/nostr-docs/pull/40) behebt Shared-Backup-Handling. + +**Zap Cooking** mergte [PR #396](https://github.com/zapcooking/frontend/pull/396), die erste Phase einer Feed-Überarbeitung, die Feed-Rendering-Primitive legt, ohne noch benutzersichtbare Änderungen. Der PR führt einen NIP-92 `imeta` Tag-Parser ein, der die Slots `url`, `m` (MIME), `dim` (Dimensionen), `blurhash`, `alt`, `x` (File-Hash) und `fallback` liest, plus einen handportierten kanonischen Blurhash-Decoder (~200 LOC), der PNG-Data-URLs per Canvas mit einem SSR-sicheren Null-Fallback erzeugt. Wenn `imeta`-Tags fehlen, greift der Parser auf das Extrahieren roher Bild- und Video-URLs aus dem Event-Inhalt zurück und nutzt dieselben Heuristiken, die der aktuelle Feed bereits verwendet. + +**Nurunuru** (ぬるぬる, `tami1A84/null--nostr`), ein Nostr-Client mit nativen Android-, iOS- und Web-Varianten, die eine Rust-FFI-Engine teilen, mergte seinen v1.5.0 Native → Web Sync in [PR #176](https://github.com/tami1A84/null--nostr/pull/176). Der Sync bringt mehrere Feature-Ergänzungen zum Web-Build, die auf Android v1.4.9 und iOS 1.0.4 bereits ausgeliefert waren: das [NotificationModal](https://github.com/tami1A84/null--nostr/pull/176) zeigt jetzt Geburtstagsbenachrichtigungen, Mutual-Follow-Zap-Erkennung und benutzerdefinierte Emoji-Reaktions-Benachrichtigungen; der Reaction-Picker verwirft die Unicode-Default-Reactions-Quick-Row und zentriert die UX auf benutzerdefinierte Emoji; die Empfehlungsmaschine in `lib/recommendation.js` filtert Benutzer ohne Icons oder Display-Names heraus und priorisiert Following-Einträge, während Recommended im Hintergrund lädt. Sprachein­gabe ist das eine Feature, das in die andere Richtung geht: der Web-Build verwendet bereits ElevenLabs-Scribe-Streaming, und v1.5.0 synchronisiert die Native-Seite teilweise zum OS-Standard `SpeechRecognizer` (Android) und `SFSpeechRecognizer` + `AVAudioEngine` (iOS), während die vollständige Native-Scribe-Integration auf v1.6 verschoben wird. + +## Protokoll- und Spezifikationsarbeit + +**PR [#2251](https://github.com/nostr-protocol/nips/pull/2251)** verschärft die NIP-70-Protected-Events-Spezifikation: es wird jetzt explizit festgelegt, dass Reposts, die den vollen Inhalt eines geschützten Events einbetten, von Relays abgelehnt werden müssen. NIP-70 definiert den `-` Tag, der signalisiert, dass ein Note-Autor der Republikation seiner Note nicht zustimmt. Die ursprüngliche Spezifikation deckte das Verhalten der Relay-Filterung ab, ließ den Repost-Fall aber mehrdeutig. Dieser PR schließt diese Lücke. Citrines [PR #151](https://github.com/greenart7c3/Citrine/pull/151) implementiert die Durchsetzung auf Relay-Seite in derselben Woche. + +**PR [#1653](https://github.com/nostr-protocol/nips/pull/1653)** schlägt ein Drafts-NIP zum Speichern und Synchronisieren privater Draft-Events vor. Der Vorschlag verwendet replaceable Events mit einem `draft`-Status und NIP-44-Verschlüsselung an den eigenen Key des Autors, wodurch Clients Work-in-Progress-Werke auf Relays speichern können, ohne dass diese Events für irgendjemanden anderes sichtbar sind. Das Draft-Event trägt das vollständige, zur Veröffentlichung vorgesehene Event als verschlüsselten Inhalt, einschließlich seines schließlichen kinds und seiner Tags. + +**Snapshots ([PR #2279](https://github.com/nostr-protocol/nips/pull/2279))** ist ein offener Vorschlag, ein unveränderliches Snapshot-Event zur Bewahrung einer exakten Version eines replaceable Nostr-Events zu definieren. Das Snapshot-Event trägt den vollständigen Inhalt des replaceable Events zu einem bestimmten Zeitpunkt, mit einem `a` Tag, der zurück zur Adresse des replaceable Events verlinkt, sodass alle historischen Versionen zusammen abgefragt werden können. Das macht es möglich für Beobachter, historischen Zustand zu inspizieren, selbst nachdem Relays alte Versionen nicht mehr aufbewahren. + +**Namecoin-NIP-05-Welle:** Diese Woche gab es einen koordinierten Vorstoß, `.bit` NIP-05-Auflösung zu Nostr-Clients hinzuzufügen. Der NIP-Diskussions-Feed erfasste Open-Source-PRs gegen Aegis ([#14](https://github.com/ZharlieW/Aegis/pull/14), der Sign-Time-Verifikation beim Signer hinzufügt), nostter ([#2128](https://github.com/SnowCait/nostter/pull/2128)) und dart-nostr ([#44](https://github.com/ethicnology/dart-nostr/pull/44)), neben einem Upstream-NIP-Entwurf ([PR #2349](https://github.com/nostr-protocol/nips/pull/2349)). Der Aegis-PR ist bemerkenswert dafür, die Verifikation auf die Producer-Seite zu setzen: der Signer prüft die Namecoin-Chain, bevor er ein kind:0-Event signiert, das eine `.bit`-Identität beansprucht, und warnt den Benutzer bei Nichtübereinstimmung, wodurch das Problem erkannt wird, bevor das Event ein Relay erreicht. + +## NIP Deep Dive: NIP-07 (window.nostr für Web-Browser) + +[NIP-07](https://github.com/nostr-protocol/nips/blob/master/07.md) definiert die `window.nostr`-Schnittstelle, die Browser-Erweiterungen für Webanwendungen bereitstellen. Es ist die am weitesten verbreitete Signer-Schnittstelle im Web, implementiert von Erweiterungen wie Alby, nos2x, Flamingo und horse. + +Die Schnittstelle hat zwei erforderliche und mehrere optionale Methoden. `window.nostr.getPublicKey()` gibt den Public Key des Benutzers als Hex-String zurück, ohne dass der Private Key jemals an die aufrufende Seite freigegeben wird. `window.nostr.signEvent(event)` nimmt ein partielles Event mit `created_at`, `kind`, `tags` und `content` entgegen und gibt das vollständige signierte Event zurück, mit hinzugefügtem `id`, `pubkey` und `sig`. Der wichtige Punkt ist, dass der Private Key niemals den isolierten Kontext der Erweiterung verlässt; die Webanwendung reicht ein unsigniertes Event ein und erhält ein signiertes zurück. + +Die optionalen Methoden decken Verschlüsselung ab: `window.nostr.nip04.encrypt` und `window.nostr.nip04.decrypt` für das ältere NIP-04-Schema (jetzt deprecated) und `window.nostr.nip44.encrypt` und `window.nostr.nip44.decrypt` für das aktuelle NIP-44-Schema. Erweiterungen, die NIP-44 unterstützen, können daher sowohl Direct-Message-Verschlüsselung als auch jede andere Anwendung, die pubkey-gebundene Verschlüsselung benötigt, verarbeiten, ohne dass die aufrufende Seite den nsec sieht. + +Die Spezifikation enthält auch eine Empfehlung an Erweiterungs-Autoren: Skripte mit `"run_at": "document_end"` im Erweiterungs-Manifest zu laden, sodass `window.nostr` synchron verfügbar ist, wenn die Seite lädt, wodurch Race-Conditions vermieden werden, bei denen ein Client `window.nostr` prüft, bevor die Erweiterung es injiziert hat. + +Ein wichtiges Beispiel für NIP-07 in Aktion ist das oben behandelte Keycast-Projekt. Das Keycast-Web-Frontend nutzt NIP-07, um NIP-98-HTTP-Auth-Events zu signieren: die SvelteKit-App handhabt den nsec des Benutzers nie direkt. Sie ruft `window.nostr.signEvent` auf, um den Auth-Header zu erzeugen, und sendet diesen Header dann an die Keycast-API. Diese Architektur bedeutet, dass das Schlüsselmaterial während des gesamten Team-Key-Management-Flows in der Browser-Erweiterung bleibt. + +```json +{ + "id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2", + "pubkey": "7f8e9d0c1b2a3e4f5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8a", + "created_at": 1747785600, + "kind": 1, + "tags": [], + "content": "Hello from a NIP-07 signed event", + "sig": "0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2cdd" +} +``` + +## NIP Deep Dive: NIP-39 (externe Identitäten in Profilen) + +[NIP-39](https://github.com/nostr-protocol/nips/blob/master/39.md) definiert, wie ein Nostr-Benutzer die Kontrolle über externe Plattform-Identitäten in seinem Profil deklarieren kann. Jede Deklaration verwendet einen `i` Tag innerhalb eines kind:10011-Events und behauptet den Besitz eines bestimmten Kontos auf einer anderen Plattform zusammen mit einem Beweis, der unabhängig verifiziert werden kann. + +Jedes Tag folgt dem Format `["i", "platform:identity", "proof"]`, wobei `platform:identity` den Plattformnamen und den Benutzernamen mit einem Doppelpunkt-Separator kombiniert (`github:semisol`, `twitter:semisol_public`). `proof` zeigt auf ein verifizierbares Artefakt auf der Plattform selbst. + +Für GitHub ist der Beweis eine Gist-ID. Der Benutzer erstellt aus seinem GitHub-Konto einen öffentlichen Gist, der den Text `Verifying that I control the following Nostr public key: npub1...` enthält. Ein Client, der die Behauptung verifiziert, holt `https://gist.github.com//` und prüft, dass der Gist vom beanspruchten GitHub-Benutzernamen verfasst wurde und den erwarteten pubkey enthält. Für Twitter ist der Beweis eine Tweet-ID, für Mastodon eine Post-ID und für Telegram eine Nachrichten-Referenz in einer öffentlichen Gruppe. + +Der Identitätsanbieter-Name darf nur `a-z`, `0-9` und die Zeichen `._-/` enthalten und darf `:` nicht enthalten. Identitätsnamen sollten auf Kleinbuchstaben normalisiert werden, wobei der primäre Alias verwendet wird, wenn mehrere existieren. + +Die diese Woche stattfindende Namecoin-`.bit`-NIP-05-Diskussion zeigt die Rolle von NIP-39 im breiteren Identity-Stack: es bietet einen standardisierten, relay-agnostischen Weg, einen Nostr-Key mit einer etablierten Identität andernorts zu kreuzverweisen, ohne eine zentrale Verifikationsstelle zu benötigen. Ein Client kann den Beweis unabhängig verifizieren, indem er ein öffentliches Artefakt auf der benannten Plattform holt, und der Beweis ist an den spezifischen Nostr-pubkey im Gist- oder Tweet-Text gebunden, nicht an eine generische Plattform-Credential. + +```json +{ + "id": "b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3", + "pubkey": "7f8e9d0c1b2a3e4f5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8a", + "created_at": 1747785600, + "kind": 10011, + "tags": [ + ["i", "github:semisol", "9721ce4ee4fceb91c9711ca2a6c9a5ab"], + ["i", "twitter:semisol_public", "1619358434134196225"], + ["i", "mastodon:bitcoinhackers.org/@semisol", "109775066355589974"] + ], + "content": "", + "sig": "1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3eff" +} +``` + +--- + +Das war's für diese Woche. Wenn du an etwas baust oder Neuigkeiten zu teilen hast, DM uns auf Nostr oder finde uns unter [nostrcompass.org](https://nostrcompass.org). diff --git a/content/de/newsletters/2026-05-28-newsletter.md b/content/de/newsletters/2026-05-28-newsletter.md new file mode 100644 index 0000000..aa1e473 --- /dev/null +++ b/content/de/newsletters/2026-05-28-newsletter.md @@ -0,0 +1,163 @@ +--- +title: 'Nostr Compass #24' +date: 2026-05-28 +publishDate: 2026-05-28 +draft: false +type: newsletters +translationOf: /en/newsletters/2026-05-28-newsletter.md +translationDate: 2026-07-01 +--- + +Amethyst v1.11.0 landet eine vollständige NIP-52-Kalender-Implementierung mit Erinnerungen, On-Chain-Bitcoin-Zap-Splits und Marmot-Gruppenantwort-Unterstützung. White Noise v2026.5.22 liefert iOS-Push-Benachrichtigungen über eine Notification Service Extension, dazu eine Block-UX und einen "Mitglieder hinzufügen"-Button. Vector v0.4.0 landet eine umfassende Neufassung von vector-core, One-Click-Tor mit Bridges, NIP-46-Remote-Signer, vollständige Negentropy-MLS-Gruppensynchronisation und einen 21-Tool-MCP-Server für KI-Agenten. Applesauce v6.1.0 führt NIP-51-Lookup-Relay-Listen (kind 10086) und einen kompletten NIP-34-Git-Cast-Factory-Satz ein. MDK fügt NIP-40 verschwindende Nachrichten über iOS und Android durch eine einheitliche UniFFI-Oberfläche hinzu, und Mostro v0.17.4 schließt die Anti-Abuse-Bond-Schleife mit Phase-3-Auszahlungen von geslashten Bonds an den Gewinner. Notedeck merged vollständige NIP-77-Negentropy-Reconciliation für Giftwraps und Thread-Backfill, Cordn erscheint als koordinatorvermittelter MLS-Messenger, der eine Single-Point-Availability-Abhängigkeit gegen strengere Epochen-Ordnung und ein einfacheres Betriebsmodell tauscht, eine NIP-B0-Referenzimplementierung namens deepmarks liefert einen kurator-monetarisierten Bookmark-Client, und das Formstr-Team öffnet vier koordinierte Kalender-NIP-Vorschläge, die Selbst-Entfernung von Teilnehmern, private Events, Wiederholung und dezentrale Terminplanung abdecken. + +## Top-Stories + +### Amethyst v1.11.0: Kalender, On-Chain-Zap-Splits und Marmot-Antworten + +Amethyst, der Nostr-Client für Android, gepflegt von Vitor Pamplona, lieferte [v1.11.0](https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0) aus. [PR #2994](https://github.com/vitorpamplona/amethyst/pull/2994) fügt eine [NIP-52](/de/topics/nip-52/) Kalender-Event-Implementierung mit einer dedizierten UI und einem Erinnerungssystem hinzu, sodass Kalender-Events jetzt in ihrer eigenen Timeline-Kategorie rendern, getrennt von der generischen kind-30023 Long-Form-Ansicht. [PR #3018](https://github.com/vitorpamplona/amethyst/pull/3018) erweitert On-Chain-Bitcoin-Zaps um Split-Unterstützung und verteilt eine einzelne Bitcoin-Transaktion auf mehrere Empfänger gemäß dem bestehenden Zap-Split-Tag, sodass sich eine On-Chain-Zahlung genauso verhält wie ein Lightning-Split. [PR #2974](https://github.com/vitorpamplona/amethyst/pull/2974) fügt einen paginierten On-Chain-Transaktions-Historien-Screen hinzu, der jeden abgewickelten Zap mit Block-Bestätigungsstatus zeigt. + +Gruppen-Messaging erhält Parität mit Eins-zu-eins-Chat: [PR #2995](https://github.com/vitorpamplona/amethyst/pull/2995) fügt Antwort-Unterstützung für [Marmot](/de/topics/marmot/)/MLS-Gruppennachrichten hinzu, sodass Threads innerhalb verschlüsselter Gruppen jetzt mit derselben Parent-Reference-UI wie öffentliche Notes rendern. [PR #2984](https://github.com/vitorpamplona/amethyst/pull/2984) härtet die [NIP-57](/de/topics/nip-57/) Zap-Quittungs-Validierung, indem geprüft wird, dass der LNURL-Provider zur angegebenen lud16 des Empfängers passt, was eine Klasse von Fälschungen schließt, bei denen ein Dritt-LNURL eine Quittung für eine nie eingegangene Zahlung erzeugen könnte. [PR #2968](https://github.com/vitorpamplona/amethyst/pull/2968) akzeptiert Fließkomma-Dimensionen in [NIP-92](/de/topics/nip-92/) `imeta` Tags und richtet Amethyst mit Clients aus, die gebrochene Pixel-Density-Werte von Geräten wie dem iPhone Retina Display veröffentlichen. Das Release verdrahtet außerdem Payment Targets, ein neues replaceable-Event-Multi-Rail-Trinkgeldglas, das im Protokollabschnitt unten behandelt wird. + +### White Noise v2026.5.22: iOS-Push, Block-UX und Mitglieder hinzufügen + +White Noise, der Marmot-Protokoll-Gruppen-Messenger, lieferte [v2026.5.22](https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25) mit iOS-Push-Benachrichtigungen als Hauptfeature aus. [PR #673](https://github.com/marmot-protocol/whitenoise/pull/673) implementiert eine iOS Notification Service Extension (NSE), die MLS-Nachrichten innerhalb des Extension-Prozesses entschlüsselt und sie als System-Benachrichtigungen anzeigt, sodass iPhone-Nutzer die App nicht mehr im Vordergrund brauchen, um Nachrichten zu empfangen. Android-Push-Token-Plumbing routet durch dieselbe Backend-Pipeline, wobei die plattformspezifische NSE Chiffretext vom Broker fernhält. + +[PR #676](https://github.com/marmot-protocol/whitenoise/pull/676) fügt eine vollständige Block- und Unblock-UX mit Bestätigungs-Flows und Kontaktlisten-Filterung hinzu. [PR #679](https://github.com/marmot-protocol/whitenoise/pull/679) fügt den lange geforderten "Mitglieder hinzufügen"-Button zum Gruppen-Info-Screen hinzu und schließt eine UX-Lücke, in der Gruppen-Admins auf Share-Links zurückgreifen mussten. [PR #688](https://github.com/marmot-protocol/whitenoise/pull/688) führt einen dedizierten iOS-Benachrichtigungseinstellungs-Screen ein, und [PR #687](https://github.com/marmot-protocol/whitenoise/pull/687) verdrahtet Share-per-Long-Press für Medien und Nachrichten. + +### MDK fügt NIP-40 verschwindende Nachrichten plattformübergreifend hinzu + +Das Marmot Development Kit, der geteilte Rust-Core, den White Noise iOS, White Noise Android und jeder zukünftige Marmot-Client verwenden, mergte [PR #306](https://github.com/marmot-protocol/mdk/pull/306), um Validierung für verschwindende Nachrichten und [NIP-40](/de/topics/nip-40/) Ablauf-Handling über die UniFFI-Brücke zu exponieren. Der PR ist der zweite einer dreiteiligen Serie. iOS und Android teilen sich jetzt eine Rust-Implementierung der Ablauf-Logik; die Timing-Regeln leben in einem einzigen geprüften Code-Pfad, der von beiden Plattformen über UniFFI konsumiert wird. [PR #307](https://github.com/marmot-protocol/mdk/pull/307) begrenzt die gespeicherte Länge von Welcome-Fehlergründen und bereinigt sie vor der Persistierung, ein separater Härtungsdurchgang, der die letzte Woche ausgelieferte Welcome-Event-Behandlung ergänzt. + +Verschwindende Nachrichten in MLS sind nicht nur ein UI-Feature. Der Ablauf-Tag wird mit der verschlüsselten Nachrichten-Hülle veröffentlicht, sodass bei einem Empfänger, der die Nachricht nie öffnet, der zugrundeliegende Chiffretext trotzdem auf Relay-Ebene abläuft, zusammen mit jeder gecachten Kopie im empfangenden Client. Da MDK den Validierungs-Pfad besitzt, bleibt das Verhalten über Clients hinweg konsistent: jede konforme Marmot-Implementierung setzt dieselbe Ablauf-Semantik durch, sodass es kein Portabilitäts-Risiko mehr ist, dass ein Client Ablauf respektiert, während ein anderer für immer cached. + +### Mostro v0.17.4: Phase 3 schließt die Slashed-Bond-Schleife + +[Mostro](https://github.com/MostroP2P/mostro), das Peer-to-Peer-Bitcoin-Exchange-Protokoll auf Basis von Nostr, lieferte Phase 3 seines Anti-Abuse-Bond-Rollouts in [v0.17.4](https://github.com/MostroP2P/mostro/releases/tag/v0.17.4) aus. [PR #738](https://github.com/MostroP2P/mostro/pull/738) landet den Payout-Flow für geslashte Bonds, nimmt das verfallene Collateral des Verlierers und verteilt es an den Dispute-Gewinner. [PR #743](https://github.com/MostroP2P/mostro/pull/743) fügt Phase 3.5 hinzu, eine explizite Payout-Bestätigungsnachricht an den Gewinner, damit er weiß, dass die geslashten Sats abgewickelt sind, wobei das Bestätigungs-Event auf derselben Nostr-Sitzung ankommt wie die Dispute-Auflösung. Phase 2, letzte Woche behandelt, führte Slashing als Admin-Aktion ein; Phase 3 ist der Unterschied zwischen dem Androhen und dem Durchsetzen einer Strafe. + +[PR #746](https://github.com/MostroP2P/mostro/pull/746) lässt den Daemon Disputes finalisieren, denen eine Solver-Zeile fehlt, ein Sonderfall, der zuvor die Auflösung bei Legacy-Disputes ins Stocken brachte. [PR #748](https://github.com/MostroP2P/mostro/pull/748) toleriert Null-Raten in Yadios `/exrates/BTC`-Antwort, sodass ein kurzer Yadio-Ausfall Mostros Fiat-Konvertierungs-Pfad nicht mehr bricht. [PR #745](https://github.com/MostroP2P/mostro/pull/745) dokumentiert die Spezifikation für Multi-Source-Preisanbieter, die Grundlage dafür, Yadio als Single Point of Failure zu entfernen. Der Mostro Mobile-Client verdrahtete den passenden Phase-3-Claim-Pfad in [PR #596](https://github.com/MostroP2P/mobile/pull/596). + +### Applesauce v6.1.0: Lookup-Relays und NIP-34-Git-Casts + +[Applesauce](https://github.com/hzrd149/applesauce), das modulare Nostr-Toolkit, das Coracle, noStrudel und Pablo F7z' Stack antreibt, veröffentlichte [v6.1.0](https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.1.0) über seine Pakete hinweg. Das Release fügt erstklassige [NIP-51](/de/topics/nip-51/) Lookup-Relay-Listen-Unterstützung hinzu: kind 10086 Events lassen einen Benutzer signalisieren "frag diese Relays, wenn du mich finden willst", und ergänzen [NIP-65](/de/topics/nip-65/) Outbox-Listen als Discovery-Primitiv. Anwendungen auf Basis von `applesauce-core` erhalten ein reaktives `User.lookupRelays$` Observable und einen passenden Loader in `applesauce-relay`. + +[NIP-34](/de/topics/nip-34/) Git-Cast-Factories kommen in `applesauce-factory` an und geben jedem auf Applesauce basierenden Client einen Ein-Zeilen-Pfad zum Veröffentlichen von Repo-Ankündigungen (kind 30617), Patches (kind 1617) und Issues (kind 1621). Die reaktiven Eigenschaften `User.favoriteGitRepos$`, `User.gitAuthors$` und `User.graspServers$` lassen Anwendungen die gefolgten Repos, Repo-Maintainer und konfigurierten GRASP-Server eines Benutzers direkt aus demselben User-Objekt auflisten. Das Release behebt auch Pool-Manual-Methoden, die offline Relays in [PR #73](https://github.com/hzrd149/applesauce/pull/73) stillschweigend fallen ließen. + +### Notedeck merged NIP-77-Negentropy für Giftwraps und Thread-Backfill + +[Notedeck](https://github.com/damus-io/notedeck), Damus' nativer Multi-Column-Desktop-Client, mergte am 25. Mai [PR #1459](https://github.com/damus-io/notedeck/pull/1459), um vollständige [NIP-77](/de/topics/nip-77/) Negentropy-Reconciliation in den geteilten Outbox-Pfad zu verdrahten. Der PR fügt NIP-77 Client- und Relay-Frames, relay-lokale Negentropy-Sessions und einen Outbox-Full-History-Tracker hinzu, der Local-Set-Reconciliation und Missing-Event-Fetches antreibt. Messages-Giftwraps erhalten Negentropy-Reconciliation, sodass Private-Message-Hüllen von den Read-Relays des ausgewählten Kontos wiederhergestellt werden können. Thread-Ansichten sind nicht mehr durch das Live-Subscription-Antwort-Limit gedeckelt. Dave PNS ersetzt seine Dave-lokale Negentropy-Implementierung durch den geteilten Outbox-Pfad und behält dabei sein bestehendes Bounded-History-Verhalten bei. + +Live-Subscriptions und Negentropy verwenden jetzt separate Filter. Ein Flow kann eine kleine Live-Anfrage aufrechterhalten, während er einen breiteren Negentropy-Filter erlässt, um zu reconcilen, was das Relay bereits hat. Der PR aktiviert absichtlich keine breite Negentropy-Synchronisation für Home- oder Profil-Timelines, was die Kaltstart-Kostencharakteristik ändern würde. Testabdeckung wurde für Reconciliation, Giftwrap-Zustellung, Thread-Backfill, Dave-PNS-Restore, Konto-Wechsel, Relay-Retargeting, Fetch-Retries und NIP-77-Relay-Verhalten hinzugefügt. + +### Vector v0.4.0: vector-core-Neufassung, Tor, NIP-46, Full-Negentropy-MLS und eine MCP-Agent-Oberfläche + +[Vector](https://github.com/VectorPrivacy/Vector), der auf NIP-17-DMs und Marmot-Gruppen basierende plattformübergreifende, datenschutzorientierte Messenger, lieferte [v0.4.0](https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0) als bislang größtes Release aus. Die Schlagzeile ist eine grundlegende Engine-Neufassung: Vectors gesamte Logik lebt jetzt in einem einzigen entkoppelten Crate, `vector-core`, geteilt über Desktop, Android und jeden zukünftigen Client, mit über 440 Tests im Kern selbst und der Anwendungshülle um tausende Zeilen abgespeckt. Die Neufassung ist die Grundlage für eine Vector-CLI, Bots und SDKs, die denselben Protokollcode wie die GUI antreiben. + +Die Tor-Integration wird mit One-Click-Traffic-Routing und Bridge-Unterstützung zur Zensurumgehung ausgeliefert. Multi-Account-Unterstützung landet mit einem In-App-Switcher. Remote-Signer-Login kommt über [NIP-46](/de/topics/nip-46/) mit Bunker-Pairing per QR oder eingefügtem URI, sodass Benutzer sich anmelden können, ohne jemals ihren nsec preiszugeben. Delete-for-Everyone funktioniert sowohl in [NIP-17](/de/topics/nip-17/) DMs als auch in [Marmot](/de/topics/marmot/) Gruppen-Chats, wobei Vector den ephemeren Signing-Key als bewusste Spec-Divergenz behält, die die Release Notes explizit hervorheben: "eine Abweichung von den traditionellen NIP-17/Marmot-Specs für verbesserte User-Privacy-Kontrollen." Der behaltene ephemere Key gibt Vector-Clients lokalen Beweis, dass eine Löschung vom ursprünglichen Absender sanktioniert wurde, aber er bedeutet auch, dass jeder andere Vector-berührende Client eine andere Lösch-Verifizierbarkeits-Oberfläche sieht als Baseline-NIP-17/Marmot-Clients. + +MLS-Gruppen-Sync wird jetzt vollständig über [NIP-77](/de/topics/nip-77/) Negentropy reconciled, dieselbe Richtung, die Notedeck diese Woche für Giftwraps und Threads eingeschlagen hat. Der Blossom-Uploader macht Failover über mehrere Server, lernt die Fähigkeiten jedes Servers und synchronisiert die Serverliste über Geräte. Custom Emoji Packs sind benutzererstellbar, teilbar und kompatibel mit anderen Nostr-Clients. Der SQLite-Speicherverbrauch fiel von etwa 308MB auf 5MB. Das Emoji-Panel öffnet aus Disk-Cache und Discord-Style-Shortcodes (`:smile:`) plus Unicode-Frequenz-Ranking bringen den richtigen Glyph zuerst an die Oberfläche. + +Die neuartigste Ergänzung ist `vector-agent`, ein MCP-Server (Model Context Protocol), der 21 Tools exponiert, damit KI-Agenten Vector antreiben können: DMs senden, Gruppen verwalten, Dateien hochladen, Profile bearbeiten. Dies ist das zweite Nostr-Projekt diese Woche (neben Shopstr), das eine MCP-Oberfläche ausliefert, und die erste Messenger-Klasse-Anwendung, die das tut. Zusammen mit AgentNoise (letzte Woche behandelt) bewegt sich das Muster von agent-gesteuerten Nostr-Clients von einmaligen Experimenten zu einer bewussten Plattform-Richtung. + +### Cordn erscheint als koordinatorvermittelter MLS-Messenger + +[Cordn](https://cordn.net) (Web-Client unter [cordn.net](https://cordn.net), Repos bei [Cordn-msg/cordn](https://github.com/Cordn-msg/cordn) und [Cordn-msg/cordn-web](https://github.com/Cordn-msg/cordn-web)) ist ein neuer MLS-Messenger, der einen anderen architektonischen Kurs einschlägt als Marmot. Während [Marmot](/de/topics/marmot/) vollständig relay-basiert ist ohne privilegierten Koordinator (jedes Gruppenmitglied schreibt direkt an Relays und jedes konforme Relay kann den Verkehr tragen), führt Cordn eine Per-Group-Koordinatorrolle ein, implementiert als [ContextVM](/de/topics/contextvm/)-Service. Der Koordinator ordnet MLS-Commits und übernimmt die Welcome-Verteilung. + +Cordns Argument, formuliert auf seiner [/why](https://cordn.net/why)-Seite, ist, dass MLS, wie es in Produktions-Messengern eingesetzt wird, "nicht koordinationsfrei" ist und dass "schwach geordnete öffentliche Verbreitung" die Konvergenz des Gruppenzustands "viel schwieriger" macht ohne einen starken Koordinationspunkt. Ein koordinatorvermitteltes Design bietet vorhersehbaren Epoch-Fortschritt und einfachere Auflösung gleichzeitiger Commits. Teilnehmer verbinden sich mit dem Koordinator über ephemere Keys, sodass der Koordinator die Group-ID und das Timing von Commit-Verkehr erfährt, aber nicht welche langfristigen pubkeys Mitglieder sind. Jede Partei, die Relays für eine Marmot-Gruppe abfragt, kann bereits dieselbe Oberfläche sehen: Gruppenaktivität nach Group-ID, mit aus dem Event-Eintreffen ableitbarem Timing. Cordn erkennt auch an, dass "Availability-Trust bestehen bleibt" beim Selbst-Hosting: ein selbstgehosteter Koordinator vermeidet die Zentralisierungsbedenken auf Betreiber-Ebene, führt aber einen Single Point of Failure für die Gruppen-Liveness ein. Marmot vermeidet diesen Single Point, indem die Ordnung MLS selbst überlassen wird (Epochs und Commit-Nachrichten übernehmen die Ordnung innerhalb des Protokolls) und Welcome-Events über [NIP-59](/de/topics/nip-59/) Gift Wrap verteilt werden, zum Preis von Admin-seitiger Disziplin: Admins müssen auf die Relay-Bestätigung eines Commits warten, bevor sie das passende Welcome senden, und Clients müssen gleichzeitige Commits reconcilen, wenn die Relay-Zustellung mit einem Zustandsübergang um die Wette läuft. + +Der Kontrast ist es wert, für jedes Team, das einen Private-Messaging-Stack auswählt, herausgearbeitet zu werden. Marmot tauscht etwas Implementierungskomplexität gegen ein relay-agnostisches Deployment ohne privilegierten Akteur im Pfad. Cordn tauscht eine Single-Point-Availability-Abhängigkeit gegen strengere Ordnung und ein einfacheres Betriebsmodell. Beide Projekte bauen auf [MLS](/de/topics/mls/) auf und verwenden Nostr als Identity- und Transportschicht. Die Meinungsverschiedenheit betrifft, wo die Koordinationskosten liegen. Die cordn-msg-Repos zeigen stetige Commit-Kadenz, wobei der Koordinator-Service über ContextVM implementiert ist und die MLS-Schicht auf `ts-mls` aufbaut. + +### deepmarks: NIP-B0-Bookmarks mit kurator-monetarisierter Veröffentlichung + +[deepmarks-public](https://github.com/ostermayer/deepmarks-public) ist ein Referenz-Client für die vorgeschlagene [NIP-B0](/de/topics/nip-b0/)-Bookmark-Spec (kind 39701), mit einer Drei-Box-Architektur (Kurator, Indexer, Viewer) und einem Tier-System, finanziert durch direkte Kurator-[NIP-57](/de/topics/nip-57/)-Zaps. Der Client implementiert NIP-B0, [NIP-07](/de/topics/nip-07/), [NIP-46](/de/topics/nip-46/), NIP-57, [NIP-44](/de/topics/nip-44/), [NIP-98](/de/topics/nip-98/), [NIP-65](/de/topics/nip-65/) und Blossom BUD-01 und BUD-04 für Dateispeicherung. Ein 21.000-Sat-Lifetime-Tier wandelt zahlende Leser in wiederkehrende Zap-Empfänger für den Kurator um. Der Kurator veröffentlicht Bookmark-Events, der Indexer reichert sie mit maschinenlesbaren Metadaten an, und der Viewer rendert den Feed; jede Rolle ist ein separater deploybarer Service. + +## Releases + +### Amber v6.1.0 GA: verschlüsseltes Per-Account-Backup + +**Amber** wechselte diese Woche von `v6.1.0-pre3` zu GA [v6.1.0](https://github.com/greenart7c3/Amber/releases/tag/v6.1.0). [PR #444](https://github.com/greenart7c3/Amber/pull/444) liefert verschlüsseltes Backup und Restore für die Anwendungs-Berechtigungs-Datenbank, und [PR #446](https://github.com/greenart7c3/Amber/pull/446) teilt das Backup per Account, sodass Benutzer mit mehreren Nostr-Identitäten jeden Satz von App-Grants unabhängig sichern und wiederherstellen können. Die letzte Woche behandelte PSBT-Signing-Arbeit ist im GA-Cut enthalten. + +### Citrine: Per-Relay-Subscriptions und Onion-URL-Leak-Prävention + +**Citrine**, das On-Device-Personal-Relay, das mit Amethyst ausgeliefert wird, brachte diesen Zyklus zwei Fixes. [PR #157](https://github.com/greenart7c3/Citrine/pull/157) wechselt von einer einzigen globalen Subscription zu Per-Relay-getaggten Subscriptions, sodass zwei Quell-Relays, die einen `kinds: [1]` Filter teilen, auf der Aggregator-Seite nicht mehr kollidieren. [PR #162](https://github.com/greenart7c3/Citrine/pull/162) filtert Onion-Relay-URLs, wenn der ausgehende Tor-Proxy deaktiviert ist, und verhindert, dass Onion-Adressen auf den Clearnet-Routing-Pfad lecken. + +### Angor v0.2.27 und v0.2.28: Relay-Zuverlässigkeit und Boltz-Reconnect + +**Angor** lieferte [v0.2.27](https://github.com/block-core/angor/releases/tag/v0.2.27) und [v0.2.28](https://github.com/block-core/angor/releases/tag/v0.2.28) aus. [PR #874](https://github.com/block-core/angor/pull/874) behebt einen Relay-Dedup-Bug, bei dem nur ein Relay gleichzeitig verbunden war, eine Regression, die die Zuverlässigkeit für Projekte mit mehreren Relay-Endpunkten stillschweigend verschlechterte. [PR #876](https://github.com/block-core/angor/pull/876) fügt WebSocket-Reconnect-Logik für Boltz-Submarine-Swap-Überwachung hinzu, sodass ein kurzer Verbindungsabbruch einen Swap nicht mehr in unbekanntem Zustand lässt. + +### Nostrord v1.1.0: NIP-57-Zaps und NIP-29-Rollenunterscheidung + +**Nostrord** veröffentlichte [v1.1.0](https://github.com/nostrord/nostrord/releases/tag/v1.1.0) mit [NIP-57](/de/topics/nip-57/) Lightning-Zap-Unterstützung für Nachrichten und Profile ([PR #98](https://github.com/nostrord/nostrord/pull/98)) und einer ordentlichen Unterscheidung im Aktivitäts-Feed zwischen [NIP-29](/de/topics/nip-29/) Rollen-Änderungen und Member-Adds ([PR #92](https://github.com/nostrord/nostrord/pull/92)), die früher identisch gerendert wurden und verschleierten, wer befördert und wer eingeladen worden war. + +### ぬるぬる v1.5.x: SQLCipher MLS-Keystore und Epoch-Catch-up + +**ぬるぬる** (nurunuru, von tami1A84), ein japanischsprachiger Nostr-Client, der MLS-Gruppen-Messaging (kind 443) neben NIP-44, NIP-50 Advanced Search, NIP-55 und NIP-70 implementiert, lieferte diese Woche fünf Releases aus. [PR #184](https://github.com/tami1A84/null--nostr/pull/184) führt SQLCipher-Verschlüsselung für den MLS-Keystore in der Rust-Engine-Schicht ein. [PR #187](https://github.com/tami1A84/null--nostr/pull/187) und [PR #188](https://github.com/tami1A84/null--nostr/pull/188) erweitern SQLCipher auf Android bzw. iOS, mit einem Legacy-Plaintext-Purge-Schritt und CI-Guards. [PR #189](https://github.com/tami1A84/null--nostr/pull/189) und [PR #191](https://github.com/tami1A84/null--nostr/pull/191) fügen MLS-Peer-Epoch-Catch-up mit einem Replay-Cache und einem Recovery-Banner auf beiden Plattformen hinzu, sodass ein Client, der bei Gruppen-Commits ins Hintertreffen gerät, sich erholen kann, ohne die Konversation zu verlieren. ぬるぬる ist ein Marmot-Client auf Basis von `mdk-core`, `mdk-sqlite-storage` und `mdk-storage-traits` aus `marmot-protocol/mdk`, sodass die SQLCipher- und Epoch-Catch-up-Arbeit im selben MDK-Runtime landet, das White Noise verwendet. + +### Bitcredit Core v0.5.10: Nostr-verwurzelter Block-Propagations-Fix + +**Bitcredit Core** veröffentlichte [v0.5.10](https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.10) mit einem Fix für ein fehlendes Nostr-Node-ID-Feld während der Block-Propagation, das Company-Creation-Flows mit Identity-Upload brach. Bitcredit ist ein E-Bill-Protokoll, das Nostr-Identitäten als Vertrauenswurzel für Company- und Bill-Propagations-Events nutzt. + +## Unveröffentlichte Änderungen + +**Jumble** öffnete [PR #797](https://github.com/CodyTseng/jumble/pull/797) für Google-Login über den Pomegranate-Threshold-Signer, was einem Benutzer erlaubt, seinen Nostr-Key auf mehrere Parteien aufzuteilen, sodass kein einzelner Signer das vollständige Geheimnis hält. Dies ist ein bedeutender Schritt jenseits von Bunker- oder nsec-Import-Flows: ein Benutzer kann sein Konto wiederherstellen, auch wenn eine Signer-Partei kompromittiert ist, ohne dass diese Partei jemals den vollständigen Private Key gehalten hätte. + +**Shopstr** öffnete [PR #492](https://github.com/shopstr-eng/shopstr/pull/492), der einen MCP-Server (Model Context Protocol) initialisiert, mit [PR #494](https://github.com/shopstr-eng/shopstr/pull/494), der die unterstützende Infrastruktur baut (Relay-Fetch, Parser, Validation, Errors, Dedup, Audit-Logging) und [PR #472](https://github.com/shopstr-eng/shopstr/pull/472), der eine Relay-Allowlist für den MCP-Relay-Manager hinzufügt. Das macht Shopstr zum ersten Nostr-Marktplatz, der sich als MCP-Server exponiert, sodass KI-Agenten NIP-99-Listings als strukturiertes Tool durchsuchen und mit ihnen agieren können. + +**Keydex**, der Shamir-Secret-Sharing-Vault, öffnete eine substantielle Migration in [PR #226](https://github.com/mplorentz/keydex/pull/226), die die benutzerdefinierten kinds 1337-1345 in den Bereich 713-721 verschiebt, neben [PR #239](https://github.com/mplorentz/keydex/pull/239), der AEAD über Shamir-Shares hinzufügt, und [PR #234](https://github.com/mplorentz/keydex/pull/234), der zu GF256-Arithmetik migriert. Die Kind-Range-Migration richtet Keydex mit der Art aus, wie das NIPs-Repo benutzerdefinierte kinds alloziert, und rückt weg von einem selbst beanspruchten Bereich. + +**Mill** ([nostr-mill](https://github.com/0ceanSlim/nostr-mill)) ist eine neue Drop-in-Nostr-Signer-UI von [OceanSlim](https://github.com/0ceanSlim) (Maintainer des [grain](https://github.com/0ceanSlim/grain) Go-Relays), ausgeliefert als Single-Script-Tag Web Component auf [npm](https://www.npmjs.com/package/nostr-mill) und [jsDelivr](https://cdn.jsdelivr.net/npm/nostr-mill/dist/mill.umd.js). Ein `